R/Workflows/Protein/mod_Protein_Normalization.R

Defines functions mod_Protein_Normalization_server mod_Protein_Normalization_ui AddItemToDataset

btn_style <- "display:inline-block; vertical-align: middle; padding: 7px"


AddItemToDataset <- function(dataset, name){
  addAssay(dataset,
           dataset[[length(dataset)]],
           name=name)
}


#' @export
#'
mod_Protein_Normalization_ui <- function(id){
  ns <- NS(id)
}


#' @export
#'
mod_Protein_Normalization_server <- function(id,
                                             dataIn = NULL,
                                             steps.enabled = reactive({NULL}),
                                             remoteReset = reactive({FALSE})
                                             ){

  #' @field global xxxx
  global <- list(
    VALIDATED = 1,
    UNDONE = 0,
    SKIPPED = -1
  )



  # Define default selected values for widgets
  widgets.default.values <- list(
    Step1_select1 = 1,
    Step1_select2 = NULL,
    Step1_select3 = 1,
    Step2_select2_1 = 1,
    Step2_select2_2 = 1
  )


  ###-------------------------------------------------------------###
  ###                                                             ###
  ### ------------------- MODULE SERVER --------------------------###
  ###                                                             ###
  ###-------------------------------------------------------------###
  moduleServer(id, function(input, output, session) {
    ns <- session$ns

    rv.widgets <- reactiveValues()

    rv <- reactiveValues(
      dataIn = NULL,
      dataOut = NULL,
      status = NULL,
      reset = NULL,
      steps.enabled = NULL
    )


    dataOut <- reactiveValues(
      trigger = NULL,
      value = NULL
    )

    #' @field config xxxx
    config <- reactiveValues(
      name = 'Protein_Normalization',
      steps = c('Description', 'Step1', 'Step2', 'Step3'),
      mandatory = c(T, F, T, T)
    )

    rv.widgets <- reactiveValues(
      Step1_select1 = widgets.default.values$Step1_select1,
      Step1_select2 = widgets.default.values$Step1_select2,
      Step1_select3 = widgets.default.values$Step1_select3,
      Step2_select2_1 = widgets.default.values$Step2_select2_1,
      Step2_select2_2 = widgets.default.values$Step2_select2_2
    )



    # Initialization of the module
    observeEvent(steps.enabled(), ignoreNULL = TRUE, {
      if (is.null(steps.enabled()))
        rv$steps.enabled <- setNames(rep(FALSE, rv.process$length), rv.process$config$steps)
      else
        rv$steps.enabled <- steps.enabled()
    })


    observeEvent(remoteReset(), {
      lapply(names(rv.widgets), function(x){
        rv.widgets[[x]] <- widgets.default.values[[x]]
      })
    })

###-----------------------------------------------------------------------------------------------------




### ----------------------------------------------------------------------------------------------------

###### ------------------- Code for Description (step 0) -------------------------    #####
output$Description <- renderUI({
  rv$steps.enabled
#browser()
  wellPanel(
    tagList(
      includeMarkdown( system.file("app/md", paste0(config$name, ".md"), package="Magellan")),
      uiOutput(ns('datasetDescription')),
      if (isTRUE(rv$steps.enabled['Description'])  )
        actionButton(ns('btn_validate_Description'),
                     paste0('Start ', config$name),
                     class = btn_success_color)
      else
      shinyjs::disabled(
        actionButton(ns('btn_validate_Description'),
                   paste0('Start ', config$name),
                   class = btn_success_color)
    )
    )
  )
})



observeEvent(input$btn_validate_Description, ignoreInit = T, ignoreNULL=T, {
  rv$dataIn <- dataIn()
  dataOut$trigger <- Send_Result_to_Caller(rv$dataIn)$trigger
  dataOut$value <- Send_Result_to_Caller(rv$dataIn)$value
  #rv$status['Description'] <- global$VALIDATED

})


###### ------------------- Code for step 1 -------------------------    #####




observeEvent(input$select1,{rv.widgets$select1 <- input$select1})
observeEvent(input$select2,{rv.widgets$select2 <- input$select2})
observeEvent(input$select3,{rv.widgets$select3 <- input$select3})


output$test1 <-renderUI({
  #rv$steps.enabled
  rv.widgets$select1
    if (rv$steps.enabled['Step1'])
    selectInput(ns('select1'), 'Select 1 in renderUI',
                choices = 1:4,
                selected = rv.widgets$select1,
                width = '150px')
  else
    shinyjs::disabled(
      selectInput(ns('select1'), 'Select 1 in renderUI',
                  choices = 1:4,
                  selected = rv.widgets$select1,
                  width = '150px')
      )
})



output$test2 <-renderUI({

  rv$steps.enabled
  if (rv$steps.enabled['Step1'])
    selectInput(ns('select2'), 'Select 2 in renderUI',
                choices = 1:3,
                selected = rv.widgets$select2,
                width = '150px')
  else
    shinyjs::disabled(
      selectInput(ns('select2'), 'Select 2 in renderUI',
                  choices = 1:4,
                  selected = rv.widgets$select2,
                  width = '150px')
    )
})




# ------------------------ STEP 1 : UI ------------------------------------
output$Step1 <- renderUI({
  #rv$steps.enabled
  name <- 'Step1'
  wellPanel(id = ns('toto'),
    actionButton(ns('btn1'), 'Btn 1'),
    tagList(
      div(id=ns('Step1a'),
          div(style="display:inline-block; vertical-align: middle;padding-right: 20px;",
              uiOutput(ns('test1'))
          ),
          div(style="display:inline-block; vertical-align: middle;padding-right: 20px;",
              uiOutput(ns('test2'))
          ),
          div(style="display:inline-block; vertical-align: middle; padding-right: 40px;",
              if (rv$steps.enabled['Step1'])
                selectInput(ns('select3'), 'Select step 3',
                          choices = 1:3,
                          selected = rv.widgets$select3,
                          width = '150px')
              else
                shinyjs::disabled(
                  selectInput(ns('select3'), 'Select step 3',
                              choices = 1:5,
                              selected = rv.widgets$select3,
                              width = '150px')
                )
          ),
          div(style="display:inline-block; vertical-align: middle;padding-right: 20px;",
              if (rv$steps.enabled['Step1'])
                actionButton(ns(paste0('btn_validate_', name)),
                             'Perform',
                             class = btn_success_color)
              else
                shinyjs::disabled(
                  actionButton(ns(paste0('btn_validate_', name)),
                               'Perform',
                               class = btn_success_color)
                  )
           )
      )
    )
  )
})


observeEvent(input$btn_validate_Step1, ignoreInit = T, {
  # Add your stuff code here
  dataOut$trigger <- Send_Result_to_Caller(rv$dataIn)$trigger
  dataOut$value <- Send_Result_to_Caller(rv$dataIn)$value
  #rv$status['Step1'] <- global$VALIDATED
})

#-------------------------- Code for step 2 ------------------------------

observeEvent(input$select2_1,{rv.widgets$select2_1 <- input$select2_1})
observeEvent(input$select2_2,{rv.widgets$select2_2 <- input$select2_2})


output$select2_1_UI <-renderUI({
  rv$steps.enabled
  if (rv$steps.enabled['Step2'])
      selectInput(ns('select2_1'), 'Select 2_1 in renderUI',
              choices = 1:3,
              selected = rv.widgets$select2_1,
              width = '150px')
  else
    shinyjs::disabled(
      selectInput(ns('select2_1'), 'Select 2_1 in renderUI',
                  choices = 1:3,
                  selected = rv.widgets$select2_1,
                  width = '150px')
    )
})

output$Step2 <- renderUI({
  rv$steps.enabled
  name <- 'Step2'
  wellPanel(
    tagList(
      div(id=ns(name),
          div(style="display:inline-block; vertical-align: middle;padding-right: 20px;",
              uiOutput(ns('select2_1_UI'))
          ),
          div(style="display:inline-block; vertical-align: middle; padding-right: 40px;",
              if (rv$steps.enabled['Step2'])
                selectInput(ns('select2_2'), 'Select 2_2',
                          choices = 1:5,
                          selected = rv.widgets$select2_2,
                          width = '150px')
              else
                shinyjs::disabled(
                  selectInput(ns('select2_2'),
                              'Select 2_2',
                              choices = 1:5,
                              selected = rv.widgets$select2_2,
                              width = '150px')
                  )
          ),
          div(style="display:inline-block; vertical-align: middle;padding-right: 20px;",
              if (rv$steps.enabled['Step2'])
                actionButton(ns(paste0('btn_validate_', name)),
                             'Perform',
                             class = btn_success_color)
              else
                shinyjs::disabled(
                actionButton(ns(paste0('btn_validate_', name)),
                             'Perform',
                             class = btn_success_color)
                )
          )
      )
    )
  )
})

observeEvent(input$btn_validate_Step2, ignoreInit = T, {
  # Add your stuff code here
  dataOut$trigger <- Send_Result_to_Caller(rv$dataIn)$trigger
  dataOut$value <- Send_Result_to_Caller(rv$dataIn)$value
  #rv$status['Step2'] <- global$VALIDATED
})


#------------- Code for step 3 ---------------

output$Step3 <- renderUI({
  rv$steps.enabled
  tagList(
    h3('Step 3'),
    if (rv$steps.enabled['Step3'])
      actionButton(ns('btn_validate_Step3'),
                   'Perform',
                   class = btn_success_color)
    else
      shinyjs::disabled(
        actionButton(ns('btn_validate_Step3'),
                     'Perform',
                     class = btn_success_color)
        )
  )
})


observeEvent(input$btn_validate_Step3, ignoreInit = T, {
  # Add your stuff code here
  rv$dataIn <- AddItemToDataset(rv$dataIn, config$name)
  dataOut$trigger <- Send_Result_to_Caller(rv$dataIn)$trigger
  dataOut$value <- Send_Result_to_Caller(rv$dataIn)$value
  #print(names(dataOut))
 # rv$status['Step3'] <- global$VALIDATED
})



# Return value of module
# DO NOT MODIFY THIS PART
list(config = reactive({
  config$ll.UI <- setNames(lapply(config$steps,
                                  function(x){
                                    do.call('uiOutput', list(ns(x)))
                                  }),
                           paste0('screen_', config$steps)
  )
  config
}),
dataOut = reactive({dataOut})
#status = reactive({rv$status})
)


  }
)
}
samWieczorek/MSPipelines documentation built on May 6, 2021, 5:54 p.m.