batch/shinyBatch.R

#find path to this file
cmdArgs = commandArgs(trailingOnly = FALSE)
needle = "--file="
match = grep(needle, cmdArgs)
res<-normalizePath(sub(needle, "", cmdArgs[match]))

#get paths
load(gsub("shinyBatch.R","shinyBatch.RData",res))

#load RSPARROW
runRsparrow<-"no"
devtools::load_all(shinyArgs$file.output.list$path_main,recompile = FALSE)

#source(paste0(shinyArgs$file.output.list$path_master,.Platform$file.sep,"unPackList.R"))

unPackList(lists = list(shinyArgs = shinyArgs),
           parentObj = list(NA)) 
unPackList(lists = list(file.output.list = file.output.list),
           parentObj = list(NA)) 

# source(paste0(path_master,"/executionTree.R"))
# #get list of required functions
# listFuncs<-executionTree(path_master, startRoutine = "goShinyPlot.R", outputType = "data.frame",includeTypes = "all")
# listFuncs<-as.data.frame(listFuncs)
# listFuncs<-listFuncs[,regexpr("line",names(listFuncs))<0]
# listFuncs<-as.matrix(listFuncs)
# listFuncs<-na.omit(unique(listFuncs[!duplicated(listFuncs)]))
# listFuncs<-paste0(path_master,"/",listFuncs)
# listFuncs<-listFuncs[endsWith(listFuncs,".R")]
# 
# #load required functions
# sapply(listFuncs, source)
# reqFuncs<-c("shinyMap2.R", "unPackList.R", "createInteractiveChoices.R", 
#             "createRTables.R", "streamCatch.R", "shinySiteAttr.R", "shinyScenarios.R", 
#             "shapeFunc.R", "selectAll.R", "updateVariable.R", "shinyScenariosMod.R", 
#             "testCosmetic.R", "validCosmetic.R", "testRedTbl.R", "goShinyPlot.R", 
#             "dropFunc.R", "handsOnUI.R", "handsOnMod.R", "compileInput.R", 
#             "convertHotTables.R", "getNumSett.R", "getSpecialSett.R", "compileALL.R", 
#             "shinyErrorTrap.R", "predictMaps.R", "mapSiteAttributes.R", "sourceRedFunc.R", 
#             "predictScenarios.R", "allowRemoveRow.R", "areColors.R", "checkBinaryMaps.R", 
#             "mapBreaks.R", "addMarkerText.R", "replaceNAs.R", "predictScenariosPrep.R", 
#             "predictScenariosOutCSV.R", "outputSettings.R", "hydseqTerm.R", 
#             "getVarList.R", "getCharSett.R", "getShortSett.R", "getYesNoSett.R", 
#             "getOptionSett.R", "named.list.R","errorOccurred.R")
# reqFuncs<-paste0(file.output.list$path_master,reqFuncs)
# reqFuncs<-sapply(reqFuncs, source)
# 
# #load libraries
# suppressWarnings(suppressMessages(library(shiny)))


if (RSPARROW_errorOption=="yes"){
  #errorhandle
  backupOptions<-list(error = options()$error,
                      show.error.locations = options()$show.error.locations,
                      keep.source = options()$keep.source)
  options(error = quote({
    #print custom message to console
    message("\nRSPARROW SYSTEM ERROR OCCURRED");
    #instruct the user to reset their options
    message('To reset user options in R use options(backupOptions)'); 
    #First dump error stack to file; not accessible by the R session.
    dump.frames("errorDump", to.file=TRUE, include.GlobalEnv=TRUE); 
    #sink to file
    sink(file=paste0(path_results,"error.log")); 
    #print custom error message to file
    cat("RSPARROW SYSTEM ERROR OCCURRED\n");
    #instruct the user to reset their options
    cat('To reset user options in R use options(backupOptions)\n \n'); 
    #Dump again to get error message and write it to error log; 
    #accessible by the R session.
    dump.frames(); 
    #Print simple error message to file
    cat(attr(last.dump,"error.message")); 
    cat('\nTraceback:');
    cat('\n'); #line space
    # Print full traceback of function calls. 
    #The '2' omits the outermost two function calls in the traceback.
    traceback(2); 
    shell.exec(paste0(path_results,"error.log"));
    sink() #end sink
  }),
  #show line numbers in traceback (shown as 'from #4')
  #line numbers count from the function call (i.e. `nestedFunc<-function(){` is line 1)
  show.error.locations = TRUE,keep.source = TRUE)
}#end Error 

if (!is.na(path_shinyBrowser)){
  if (file.exists(path_shinyBrowser)){
options(browser = path_shinyBrowser)
  }else{
    message(paste0("INVALID path_shinyBrowser : ",path_shinyBrowser,"/nDefault browser will be used for shiny"))
  }
}

#trigger shiny
shiny::runApp(shinyMap2(
  #stream/catchment
  file.output.list,map_uncertainties,BootUncertainties,
  data_names,mapping.input.list,
  #predict.list,
  subdata,SelParmValues,
  #site attr
  sitedata,
  #scenarios
  estimate.list,estimate.input.list,
  ConcFactor,DataMatrix.list,dlvdsgn,
  reach_decay_specification,reservoir_decay_specification,
  scenario.input.list,if_predict,
  #scenarios out
  add_vars,
  #batchError
  batch_mode,
  RSPARROW_errorOption),launch.browser = TRUE)
stopApp()
tbep-tech/tbepRSparrow documentation built on Oct. 9, 2020, 6:24 a.m.