# defaultOpts initialized in configIO.R
editOption<-do.call(reactiveValues, defaultOpts)
# defauinitialProjltOpts initialized in configIO.R
pprj<-reactiveVal(initialProj)
#' getDirPath returns the path to the project, or .ptR if no project
#' used by
#' 1 saveDnippetsFileNames
#' 2 readDnippetsFileNames
#' 3 restoreWorkSpace
#' 4 savePage
#'
getDirPath<-reactive({
if(!is.null(editOption$currentProjectName) && !is.null(editOption$currentProjectDirectory)){
dirPath<-editOption$currentProjectDirectory
if(!file.exists(dirPath)){ # currentProjectDirectory not found!!
dirPath<-optionDirPath() # this sets dirPath to ~/ptr
editOption$currentProjectName=NULL
editOption$currentProjectDirectory=NULL
}
} else {
dirPath<-optionDirPath()
}
dirPath
})
observeEvent(getDirPath(),{
resetShinyFilesIOPaths(getDirPath())
})
getWorkSpaceDir<-reactive({
dirPath<-getDirPath()
workSpaceDir<-file.path(dirPath,'.workspace')
})
getProjectFullPath<-reactive({
if(!is.null(editOption$currentProjectName) && !is.null(editOption$currentProjectDirectory)){
file.path(editOption$currentProjectDirectory, editOption$currentProjectName)
} else {
NULL
}
})
# used by cmdFileExportSvg.R; serverEditBar.R; serverOptions.R
getCurrentFile<-reactive({
basename(editOption$currentFilePath)
})
# not used
getCurrentDir<-reactive({
dirname(editOption$currentFilePath)
})
#not used
getCurrentFilePath<-reactive({
editOption$currentFilePath
})
# TO REVISE!!!
# used by cmdFileExportSvg.R, serverEditBar.R
getFileNameStatus<-reactive({
!is.null(editOption$currentFilePath) &&
editOption$currentFilePath!="" &&
editOption$currentFilePath!="." &&
editOption$currentFilePath!="./"
})
# invoked by cmdFileOpen and cmdFileExportSvg.R
setCurrentFilePath<-function(filePath){
editOption$currentFilePath<-filePath
}
addToRecentFiles<-function(filePath){
filePath<-unlist(filePath)
if(!is.null(filePath) && filePath!='?' && file.exists(filePath)){
files<-unlist(editOption$recentFiles)
if(!is.null(files)){
files<-files[file.exists(files) ]
}
editOption$recentFiles <-unique(c(filePath,files ))
}
}
removeFromRecentFiles<-function(filePath){
tmp<-editOption$recentFiles[]
tmp<-tmp[tmp!=filePath]
editOption$recentFiles<-tmp
}
addToRecentProjects<-function(projDir, projName){
recentProj<-file.path(projDir, projName)
editOption$recentProjects <-unique(c(recentProj,editOption$recentProjects ))
}
removeFromRecentProjects<-function(projDir, projName){
recentProj<-file.path(projDir, projName)
tmp<-editOption$recentProjects[]
tmp<-tmp[tmp!=recentProj]
editOption$recentProjects<-tmp
}
mkFileSubMenu<-function(subMenuLabel, prefix, fullFilePaths){
files<-unlist(fullFilePaths)
if(length(files)>0){
files<-files[file.exists(files)]
}
if(length(files)>0){
# 4 make submenu
files<-normalizePath(files)
files<-unique(files)
values<-paste(prefix,files, sep="-")
labels<-basename(files)
hints<-files
mkmenuitem<-function(label, value, hint){
shinyDMDMenu::menuItem(
label=label,
value=value # ,
# span(hint, class='tooltiptext')
)
}
items<-mapply(mkmenuitem, label=labels, value=values, hint=hints,
SIMPLIFY = FALSE, USE.NAMES = FALSE)
submenu=do.call( function(...){ subMenuDropdown(subMenuLabel,...) }, items)
} else{
submenu=NULL
}
submenu
}
observeEvent( editOption$recentProjects ,{
# 1 remove submenu
subMenuLabel= "Recent Projects"
removeDMDM(session=session, menuBarId="editNavBar", entry=subMenuLabel)
# 2 get files to populate submenu
files<-unlist(editOption$recentProjects)
# NEED TO CHECK IF FILES STILL EXIST!!!
files<-files[file.exists(files)]
# 3 create submenu
if(length(files)>0){
submenu<-mkFileSubMenu( subMenuLabel= subMenuLabel, prefix='recentProj', files)
# 4 insertsubmenu
if(!is.null(submenu)){
insertAfterDMDM(
session, menuBarId = "editNavBar",
entry="openProject", submenu= submenu
)
}
}
}, ignoreNULL=FALSE) #menu item is remove if editOption$recentPproj is null
# must both add and delete entries.
observeEvent( editOption$recentFiles ,{
# 1 remove subMenuDropdown
subMenuLabel= "Recent Files"
removeDMDM(session=session, menuBarId="editNavBar", entry=subMenuLabel)
# 2 get files to populate submenu
files<-unlist(editOption$recentFiles)
# NEED TO CHECK IF FILES STILL EXIST!!!
files<-files[file.exists(files)]
# 3 create submenu
if(length(files)>0){
submenu<-mkFileSubMenu( subMenuLabel= subMenuLabel, prefix="recentFile", files)
# 4 insertsubmenu
if(!is.null(submenu)){
insertAfterDMDM(
session, menuBarId = "editNavBar",
entry="openFile", submenu= submenu
)
}
}
}, ignoreNULL=FALSE) #menu item is remove if editOption$recentFiles is null
# observeEvent(editOption$whiteSpace,{
# newLabel<-ifelse(editOption$whiteSpace, "Hide White Space", "Show White Space")
# renameDMDM(
# session, menuBarId="editNavBar",
# entry=newLabel,
# newLabel = newLabel,
# type = "menuItem")
# dirtyDMDM(session, "editNavBar")
# })
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.