R/menu_prd.R

Defines functions load_server0 load_server load_ui0 load_ui menu_getItemData menu_getMenuItemSubset menu_getSubItemData

Documented in load_server load_server0 load_ui load_ui0 menu_getItemData menu_getMenuItemSubset menu_getSubItemData

#' 将子项菜单由数据库变成对象
#'
#' @param conn 连接
#' @param app_id  程序ID
#' @param permission  角色
#' @param FparentId  系统ID
#'
#' @return 返回值
#' @export
#'
#' @examples
#' menu_getSubItemData()
menu_getSubItemData <- function(conn=conn_rds('rdbe'),app_id='appTpl',permission='admin',FparentId ='A'){
  sql <-paste0("select Fshow,Fname,Fid,Ficon  from t_md_objectRight 
where  Ftype ='module' and FappId ='",app_id,"' and Fpermissions ='",permission,"' and FparentId ='",FparentId,"' 
          and Fshow =1 order by Findex")  
  data <- tsda::sql_select(conn,sql)
  data$Fshow <- as.logical(as.integer(data$Fshow))
  data2 = config_formatter(data)
  data3 = lapply(data2, function(subItem){
    if(subItem$Fshow){
      res = menuSubItem(subItem$Fname,tabName = subItem$Fid,icon = icon(subItem$Ficon))
    }else{
      res = NULL
    }
    
    return(res)
  })
  
  class(data3) <-c("shiny.tag.list", "list")
  
  return(data3)
}




#' 将子项菜单与系统菜单相结果
#'
#' @param txt 名称
#' @param tabName 标签名
#' @param icon 图标
#' @param conn 连接
#' @param app_id 程序
#' @param permission 角色
#'
#' @return 返回值
#' @export
#'
#' @examples
#' menu_getMenuItemSubset()
menu_getMenuItemSubset <- function(txt='系统A',tabName='A',icon='clock',conn=conn_rds('rdbe'),app_id='appTpl',permission='admin'){
  subItemList =menu_getSubItemData(conn =conn,app_id = app_id,permission = permission, FparentId = tabName)
  res =  menuItem(txt,tabName = tabName,icon=icon(icon), subItemList)
  return(res)
  
}


#' 设置系统菜单
#'
#' @param conn 连接
#' @param app_id 程序
#' @param permission 角色
#'
#' @return 角色
#' @export
#'
#' @examples
#' menu_getItemData()
menu_getItemData <- function(conn=conn_rds('rdbe'),app_id='appTpl',permission='admin'){
  sql <-paste0("select Fshow,Fname,Fid,Ficon  from t_md_objectRight 
where  Ftype ='system' and FappId ='",app_id,"' and Fpermissions ='",permission,"' and Fshow =1  order by Findex ")  
  data <- tsda::sql_select(conn,sql)
  data$Fshow <- as.logical(as.integer(data$Fshow))
  data2 = config_formatter(data)
  data3 = lapply(data2, function(Item){
    if(Item$Fshow){
      res = menu_getMenuItemSubset(txt = Item$Fname,tabName = Item$Fid,icon = icon(Item$Ficon),conn = conn,app_id = app_id,permission = permission)
    }else{
      res = NULL
    }
    
    return(res)
  })
  
  class(data3) <-c("shiny.tag.list", "list")
  res = sidebarMenu(.list = data3)
  
  return(res)
}

#' 加载UI文件
#'
#' @param sytem_id  文件名
#' @param module_id 模块名
#'
#' @return 返回值
#' @export
#'
#' @examples
#' load_ui()
load_ui <- function(sytem_id='A',module_id='A01'){
  file_name = paste0("modules/",sytem_id,"/",module_id,"/",module_id,"_ui.R")
  res = source(file = file_name,encoding = 'utf-8')$value
  return(res)
  
}


#' 加载UI文件
#'
#' @param module_id 模块名
#'
#' @return 返回值
#' @export
#'
#' @examples
#' load_ui()
load_ui0 <- function(module_id='A01'){
  file_name = paste0("modules/",module_id,"/",module_id,"_ui.R")
  print(file_name)
  res = source(file = file_name,encoding = 'utf-8')$value
  return(res)
  
}

#' 加载服务器逻辑文件
#'
#' @param input 输入
#' @param output 输出
#' @param session 会话
#' @param system_id 系统代码
#' @param module_id 模块代码
#'
#' @return 返回回
#' @export
#'
#' @examples
#' load_server()
load_server <- function(input,output,session,system_id='A',module_id='A01') {
  file_name = paste0("modules/",system_id,"/",module_id,"/",module_id,"_server.R")
  source(file_name,encoding = 'utf-8',local = TRUE)
  
  
}

#' 加载服务器逻辑文件
#'
#' @param input 输入
#' @param output 输出
#' @param session 会话
#' @param module_id 模块代码
#' @param conn 连接
#' @param app_id 用户ID
#'
#' @return 返回回
#' @export
#'
#' @examples
#' load_server()
load_server0 <- function(input,output,session,conn,app_id,module_id='A01') {
  file_name = paste0("modules/",module_id,"/",module_id,"_server.R")
  source(file_name,encoding = 'utf-8',local = TRUE)
  
  
}
takewiki/tsui documentation built on July 5, 2023, 10:59 p.m.