#loading required libraries #library(remind) library(knitr) library(flexdashboard)
# setting global R chunk options (https://yihui.name/knitr/options/#chunk_options) knitr::opts_chunk$set(dev='svg', fig.asp = 1 ) # fig.asp = default aspect ratio
# loading diagnosis results diag <- reportDiagnosis(gdx=gdx, statsFile=statsFile, chartType="plotly")
#loading REMIND results and plots out <- reportCharts(gdx=gdx, regionMapping=regionMapping, hist=hist, reportfile=reportfile, chartType="plotly")
#data frame with help tooltips # helpTooltip_df <- data.frame( # title=c("Convergence Report","Carbon Price","CO2 Emissions per Sector","Main Greenhouse Gases Emissions","F-Gases","Kyoto Gases Emissions","Other Gases"), # placement=c("right","right","top","right","right","left","left")) helpTooltip_df <- data.frame( title=c("Convergence Report","Execution time","Summary", "Carbon Price","CO2 Emissions per Sector","Kyoto Gases Emissions", "Total Primary Energy","Primary Energy Prices","Coal production","Gas production","Oil production","Uranium production","Biomass production", "Secondary Energy Prices","Total Secondary Energy","Electricity Secondary Energy","Liquids Secondary Energy","Gases Secondary Energy","Heat Secondary Energy","Solids Secondary Energy","Hydrogen Secondary Energy", "Final Energy Prices","Total Final Energy","Buildings Final Energy Prices","Buildings Final Energy","Transport Final Energy Prices","Transport Final Energy","Industry Final Energy Prices","Industry Final Energy"), placement=c("right","none","top", "none","right","left", "right","right","left","left","left","left","left", "right","right","right","right","right","left","top","top", "right","right","right","right","right","right","left","top")) legend <- c(diag$legend,out$legend)
#control region menus appearance showMenu <- list() for (region in names(out$data$regions)) showMenu[[region]] <- TRUE
#aesthetics aesthetics <- list( color = c( "Iteration Limit" = "warning", # solver status "optimal"="success", "locally optimal"="success", #theme colors “primary”, “info”, “success”, “warning”, and “danger” "unbounded"="danger", "infeasible"="danger", "locally infeasible"="danger", "intermediate infeasible"="danger", "intermediate nonoptimal"="warning", # solving time "solvingTime"="primary"), icon = c( "Iteration Limit" = "glyphicon glyphicon-exclamation-sign", #fa-exclamation-triangle # solver status "optimal"="glyphicon glyphicon-thumbs-up", #fa-thumbs-up "locally optimal"="glyphicon glyphicon-thumbs-up", #fa-thumbs-up "unbounded"="glyphicon glyphicon-exclamation-sign", #fa-exclamation-triangle "infeasible"="glyphicon glyphicon-exclamation-sign", #fa-exclamation-triangle "locally infeasible"="glyphicon glyphicon-exclamation-sign", #fa-exclamation-triangle "intermediate infeasible"="glyphicon glyphicon-exclamation-sign", #fa-exclamation-triangle "intermediate nonoptimal"="glyphicon glyphicon-exclamation-sign", #fa-exclamation-triangle # solving time "solvingTime"="glyphicon glyphicon-time") )
{class="glyphicon glyphicon-stats sidebar-button selected"} {class="glyphicon glyphicon-link sidebar-button"}
valueBox(diag$summary$status, caption=diag$summary$statusMessage, color = aesthetics$color[[diag$summary$status]], icon = aesthetics$icon[[diag$summary$status]])
valueBox(diag$data$runTime$formated, caption=paste0("The runtime was ", diag$data$runTime$longFormat), color = aesthetics$color[["solvingTime"]], icon = aesthetics$icon[["solvingTime"]])
Execution type = r diag$data$runStatistics$config$gms$optimization
diag$plotly$'Convergence Report'
# regions mapping out$maps$world
diag$plotly$'Execution time'
diag$plotly$'Summary'
{class="glyphicon glyphicon-stats sidebar-button"} {class="glyphicon glyphicon-link sidebar-button selected"}
{class="ico-GLO selected sidebar-button"} {class="ico-regions sidebar-button"}
if (!is.null(showMenu$EUR)) cat('\n[](#emissions---eur){class="ico-EUR sidebar-button"}') if (!is.null(showMenu$NEU)) cat('\n[](#emissions---neu){class="ico-NEU sidebar-button"}')
out$plotly$emissions$'Carbon Price'$world
out$plotly$emissions$'CO2 Emissions per Sector'$world
out$plotly$emissions$'Main Greenhouse Gases Emissions'$world
out$plotly$emissions$'F-Gases'$world
out$plotly$emissions$'Kyoto Gases Emissions'$world
out$plotly$emissions$'Other Gases'$world
{class="ico-GLO sidebar-button"} {class="ico-regions sidebar-button selected"}
if (!is.null(showMenu$EUR)) cat('\n[](#emissions---eur){class="ico-EUR sidebar-button"}') if (!is.null(showMenu$NEU)) cat('\n[](#emissions---neu){class="ico-NEU sidebar-button"}')
out$plotly$emissions$'Carbon Price'$regions
out$plotly$emissions$'CO2 Emissions per Sector'$regions
out$plotly$emissions$'Main Greenhouse Gases Emissions'$regions
out$plotly$emissions$'F-Gases'$regions
out$plotly$emissions$'Kyoto Gases Emissions'$regions
out$plotly$emissions$'Other Gases'$regions
{class="ico-GLO sidebar-button"} {class="ico-regions sidebar-button"}
if (!is.null(showMenu$EUR)) cat('\n[](#emissions---eur){class="ico-EUR sidebar-button selected"}') if (!is.null(showMenu$NEU)) cat('\n[](#emissions---neu){class="ico-NEU sidebar-button"}')
out$plotly$emissions$'Carbon Price'$EUR
out$plotly$emissions$'CO2 Emissions per Sector'$EUR
out$plotly$emissions$'Main Greenhouse Gases Emissions'$EUR
out$plotly$emissions$'F-Gases'$EUR
out$plotly$emissions$'Kyoto Gases Emissions'$EUR
out$plotly$emissions$'Other Gases'$EUR
{class="ico-GLO sidebar-button"} {class="ico-regions sidebar-button"}
if (!is.null(showMenu$EUR)) cat('\n[](#emissions---eur){class="ico-EUR sidebar-button"}') if (!is.null(showMenu$NEU)) cat('\n[](#emissions---neu){class="ico-NEU sidebar-button selected"}')
out$plotly$emissions$'Carbon Price'$NEU
out$plotly$emissions$'CO2 Emissions per Sector'$NEU
out$plotly$emissions$'Main Greenhouse Gases Emissions'$NEU
out$plotly$emissions$'F-Gases'$NEU
out$plotly$emissions$'Kyoto Gases Emissions'$NEU
out$plotly$emissions$'Other Gases'$NEU
{class="ico-GLO sidebar-button selected"} {class="ico-regions sidebar-button"}
if (!is.null(showMenu$EUR)) cat('\n[](#primary-energy---eur){class="ico-EUR sidebar-button"}') if (!is.null(showMenu$NEU)) cat('\n[](#primary-energy---neu){class="ico-NEU sidebar-button"}')
out$plotly$PE$'Primary Energy Prices'$world
out$plotly$PE$'Total Primary Energy'$world$abs out$plotly$PE$'Total Primary Energy'$world$perc out$plotly$PE$'Total Primary Energy'$world$percapita
out$plotly$PE$'Coal production'$world
out$plotly$PE$'Gas production'$world
out$plotly$PE$'Oil production'$world
out$plotly$PE$'Uranium production'$world
out$plotly$PE$'Biomass production'$world
{class="ico-GLO sidebar-button"} {class="ico-regions sidebar-button selected"}
if (!is.null(showMenu$EUR)) cat('\n[](#primary-energy---eur){class="ico-EUR sidebar-button"}') if (!is.null(showMenu$NEU)) cat('\n[](#primary-energy---neu){class="ico-NEU sidebar-button"}')
out$plotly$PE$'Total Primary Energy'$regions$abs out$plotly$PE$'Total Primary Energy'$regions$perc out$plotly$PE$'Total Primary Energy'$regions$percapita
out$plotly$PE$'Coal production'$regions
out$plotly$PE$'Gas production'$regions
out$plotly$PE$'Oil production'$regions
out$plotly$PE$'Uranium production'$regions
out$plotly$PE$'Biomass production'$regions
{class="ico-GLO sidebar-button"} {class="ico-regions sidebar-button"}
if (!is.null(showMenu$EUR)) cat('\n[](#primary-energy---eur){class="ico-EUR sidebar-button selected"}') if (!is.null(showMenu$NEU)) cat('\n[](#primary-energy---neu){class="ico-NEU sidebar-button"}')
out$plotly$PE$'Total Primary Energy'$EUR$abs out$plotly$PE$'Total Primary Energy'$EUR$perc out$plotly$PE$'Total Primary Energy'$EUR$percapita
out$plotly$PE$'Coal production'$EUR
out$plotly$PE$'Gas production'$EUR
out$plotly$PE$'Oil production'$EUR
out$plotly$PE$'Uranium production'$EUR
out$plotly$PE$'Biomass production'$EUR
{class="ico-GLO sidebar-button"} {class="ico-regions sidebar-button"}
if (!is.null(showMenu$EUR)) cat('\n[](#primary-energy---eur){class="ico-EUR sidebar-button"}') if (!is.null(showMenu$NEU)) cat('\n[](#primary-energy---neu){class="ico-NEU sidebar-button selected"}')
out$plotly$PE$'Total Primary Energy'$NEU$abs out$plotly$PE$'Total Primary Energy'$NEU$perc out$plotly$PE$'Total Primary Energy'$NEU$percapita
out$plotly$PE$'Coal production'$NEU
out$plotly$PE$'Gas production'$NEU
out$plotly$PE$'Oil production'$NEU
out$plotly$PE$'Uranium production'$NEU
out$plotly$PE$'Biomass production'$NEU
{class="ico-GLO sidebar-button selected"} {class="ico-regions sidebar-button"}
if (!is.null(showMenu$EUR)) cat('\n[](#secondary-energy---eur){class="ico-EUR sidebar-button"}') if (!is.null(showMenu$NEU)) cat('\n[](#secondary-energy---neu){class="ico-NEU sidebar-button"}')
out$plotly$SE$'Secondary Energy Prices'$world
out$plotly$SE$'Total Secondary Energy'$world
out$plotly$SE$'Electricity Secondary Energy'$world
out$plotly$SE$'Liquids Secondary Energy'$world
out$plotly$SE$'Gases Secondary Energy'$world
out$plotly$SE$'Heat Secondary Energy'$world
out$plotly$SE$'Solids Secondary Energy'$world
out$plotly$SE$'Hydrogen Secondary Energy'$world
{class="ico-GLO sidebar-button"} {class="ico-regions sidebar-button selected"}
if (!is.null(showMenu$EUR)) cat('\n[](#secondary-energy---eur){class="ico-EUR sidebar-button"}') if (!is.null(showMenu$NEU)) cat('\n[](#secondary-energy---neu){class="ico-NEU sidebar-button"}')
out$plotly$SE$'Secondary Energy Prices'$regions
out$plotly$SE$'Total Secondary Energy'$regions
out$plotly$SE$'Electricity Secondary Energy'$regions
out$plotly$SE$'Liquids Secondary Energy'$regions
out$plotly$SE$'Gases Secondary Energy'$regions
out$plotly$SE$'Heat Secondary Energy'$regions
out$plotly$SE$'Solids Secondary Energy'$regions
out$plotly$SE$'Hydrogen Secondary Energy'$regions
{class="ico-GLO sidebar-button"} {class="ico-regions sidebar-button"}
if (!is.null(showMenu$EUR)) cat('\n[](#secondary-energy---eur){class="ico-EUR sidebar-button selected"}') if (!is.null(showMenu$NEU)) cat('\n[](#secondary-energy---neu){class="ico-NEU sidebar-button"}')
out$plotly$SE$'Secondary Energy Prices'$EUR
out$plotly$SE$'Total Secondary Energy'$EUR
out$plotly$SE$'Electricity Secondary Energy'$EUR
out$plotly$SE$'Liquids Secondary Energy'$EUR
out$plotly$SE$'Gases Secondary Energy'$EUR
out$plotly$SE$'Heat Secondary Energy'$EUR
out$plotly$SE$'Solids Secondary Energy'$EUR
out$plotly$SE$'Hydrogen Secondary Energy'$EUR
{class="ico-GLO sidebar-button"} {class="ico-regions sidebar-button"}
if (!is.null(showMenu$EUR)) cat('\n[](#secondary-energy---eur){class="ico-EUR sidebar-button"}') if (!is.null(showMenu$NEU)) cat('\n[](#secondary-energy---neu){class="ico-NEU sidebar-button selected"}')
out$plotly$SE$'Secondary Energy Prices'$NEU
out$plotly$SE$'Total Secondary Energy'$NEU
out$plotly$SE$'Electricity Secondary Energy'$NEU
out$plotly$SE$'Liquids Secondary Energy'$NEU
out$plotly$SE$'Gases Secondary Energy'$NEU
out$plotly$SE$'Heat Secondary Energy'$NEU
out$plotly$SE$'Solids Secondary Energy'$NEU
out$plotly$SE$'Hydrogen Secondary Energy'$NEU
{class="ico-GLO sidebar-button selected"} {class="ico-regions sidebar-button"}
if (!is.null(showMenu$EUR)) cat('\n[](#final-energy---eur){class="ico-EUR sidebar-button"}') if (!is.null(showMenu$NEU)) cat('\n[](#final-energy---neu){class="ico-NEU sidebar-button"}')
out$plotly$FE$'Final Energy Prices'$world
out$plotly$FE$'Total Final Energy'$world
out$plotly$FE$'Buildings Final Energy Prices'$world
out$plotly$FE$'Buildings Final Energy'$world
out$plotly$FE$'Transport Final Energy Prices'$world
out$plotly$FE$'Transport Final Energy'$world
out$plotly$FE$'Industry Final Energy Prices'$world
out$plotly$FE$'Industry Final Energy'$world
{class="ico-GLO sidebar-button"} {class="ico-regions sidebar-button selected"}
if (!is.null(showMenu$EUR)) cat('\n[](#final-energy---eur){class="ico-EUR sidebar-button"}') if (!is.null(showMenu$NEU)) cat('\n[](#final-energy---neu){class="ico-NEU sidebar-button"}')
out$plotly$FE$'Final Energy Prices'$regions
out$plotly$FE$'Total Final Energy'$regions
out$plotly$FE$'Buildings Final Energy Prices'$regions
out$plotly$FE$'Buildings Final Energy'$regions
out$plotly$FE$'Transport Final Energy Prices'$regions
out$plotly$FE$'Transport Final Energy'$regions
out$plotly$FE$'Industry Final Energy Prices'$regions
out$plotly$FE$'Industry Final Energy'$regions
{class="ico-GLO sidebar-button"} {class="ico-regions sidebar-button"}
if (!is.null(showMenu$EUR)) cat('\n[](#final-energy---eur){class="ico-EUR sidebar-button selected"}') if (!is.null(showMenu$NEU)) cat('\n[](#final-energy---neu){class="ico-NEU sidebar-button"}')
out$plotly$FE$'Final Energy Prices'$EUR
out$plotly$FE$'Total Final Energy'$EUR
out$plotly$FE$'Buildings Final Energy Prices'$EUR
out$plotly$FE$'Buildings Final Energy'$EUR
out$plotly$FE$'Transport Final Energy Prices'$EUR
out$plotly$FE$'Transport Final Energy'$EUR
out$plotly$FE$'Industry Final Energy Prices'$EUR
out$plotly$FE$'Industry Final Energy'$EUR
{class="ico-GLO sidebar-button"} {class="ico-regions sidebar-button"}
if (!is.null(showMenu$EUR)) cat('\n[](#final-energy---eur){class="ico-EUR sidebar-button"}') if (!is.null(showMenu$NEU)) cat('\n[](#final-energy---neu){class="ico-NEU sidebar-button selected"}')
out$plotly$FE$'Final Energy Prices'$NEU
out$plotly$FE$'Total Final Energy'$NEU
out$plotly$FE$'Buildings Final Energy Prices'$NEU
out$plotly$FE$'Buildings Final Energy'$NEU
out$plotly$FE$'Transport Final Energy Prices'$NEU
out$plotly$FE$'Transport Final Energy'$NEU
out$plotly$FE$'Industry Final Energy Prices'$NEU
out$plotly$FE$'Industry Final Energy'$NEU
navBarMemory = function(topMenuLabel, sideBarClass){ result = "" result = paste0(result,"<script type='text/javascript'>\n"); result = paste0(result,"$(document).ready(function () {\n"); result = paste0(result," $(\"",sideBarClass," a\").click(function(){\n"); result = paste0(result," console.log($(this).attr('href'));\n"); result = paste0(result," console.log($(\".nav.navbar-nav.navbar-left a:contains('",topMenuLabel,"')\").attr('href'));\n"); result = paste0(result," $(\".nav.navbar-nav.navbar-left a:contains('",topMenuLabel,"')\").attr('href', $(this).attr('href'));\n"); result = paste0(result," if(!is_chrome){\n"); result = paste0(result," window.FlexDashboardUtils.showPage($(this).attr('href'));\n"); result = paste0(result," }\n"); result = paste0(result," })\n"); result = paste0(result,"})\n"); result = paste0(result,"</script>"); return(result) }
cat(navBarMemory("Diagnosis",".sidebarDiagnosis")) cat(navBarMemory("Emissions",".sidebarEmissions")) cat(navBarMemory("Primary Energy",".sidebarPrimaryEnergy")) cat(navBarMemory("Secondary Energy",".sidebarSecondaryEnergy")) cat(navBarMemory("Final Energy",".sidebarFinalEnergy"))
# function to add html element with unit information unitDiv = function(tooltipdf){ title <- as.character(tooltipdf$title) if (!(is.null(legend[[title]]$units))){ unit <- as.vector(NULL) for(i in 1:length(legend[[title]]$units)) unit <- c(unit,paste0("data-unit-", i-1, "=\"", legend[[title]]$units[i], "\"")) unit <- paste(as.vector(unit),collapse=" ") result = "" result = paste0(result,"<script type='text/javascript'>\n"); result = paste0(result,"$(window).load(function () {\n"); result = paste0(result," $('.chart-title').filter(function() { return $(this).clone().children().remove().end().text() == '", title, "' }).each(function(){\n"); result = paste0(result," $(this).append('<i class=\"units\" ", unit, ">",legend[[title]]$units[1],"</i>');\n"); result = paste0(result," })\n"); result = paste0(result,"})\n"); result = paste0(result,"</script>"); return(result) } }
# function to add tooltips helpTooltip = function(tooltipdf){ title <- as.character(tooltipdf$title) placement <- as.character(tooltipdf$placement) contents <- gsub('\n', '',gsub('"', '"',paste0(' <div class="tooltipContainer"> <div class="tooltipDescription">', legend[[title]]$description,' </div> <div class="legendContainer"> <table class="legendTable"> <tbody> <tr>', do.call(paste,lapply(names(legend[[title]]$contents),function(x){ paste0('<tr><td>', ifelse(is.null(legend[[title]]$contents[[x]]$linetype), paste0('<div class="square"><div class="circle" style="background-color:',legend[[title]]$contents[[x]]$fill,';"></div></div>'), paste0('<div class="line" style="border-color:',legend[[title]]$contents[[x]]$fill,'; border-style: ',legend[[title]]$contents[[x]]$linetype,';"></div>') ),' </td><td class="legendText">',x,'</td></tr>' ) })),' </tbody> </table> </div> </div>'))) result = "" result = paste0(result,"<script type='text/javascript'>\n"); result = paste0(result,"$(window).load(function () {\n"); result = paste0(result," $('.chart-title').filter(function() { return $(this).clone().children().remove().end().text() == '", title, "' }).each(function(){\n"); if(!(placement == "none")) result = paste0(result," $(this).append('<i class=\"glyphicon glyphicon-info-sign infoIcon\" data-toggle=\"tooltip\" data-html=\"true\" data-placement=\"right\" title=\"",contents,"\"></i>');\n"); result = paste0(result," $(this).find('[data-toggle=\"tooltip\"]').tooltip({ placement:'",placement,"'});\n"); result = paste0(result," })\n"); result = paste0(result,"})\n"); result = paste0(result,"</script>"); return(result) }
for(i in 1:nrow(helpTooltip_df)){ cat(helpTooltip(helpTooltip_df[i,])) }
for(i in 1:nrow(helpTooltip_df)){ cat(unitDiv(helpTooltip_df[i,])) }
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.