From 7489da09adffe59dbba59f8245fb19f8103f541b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Todor=20Kondi=C4=87?= <todor.kondic@uni.lu>
Date: Sat, 2 Jul 2022 13:35:37 +0200
Subject: [PATCH] app: shiny-state, shiny-ui-base: datafiles tab fixed.

---
 R/shiny-state.R   | 14 ++++++--
 R/shiny-ui-base.R | 92 ++++++++++++++++++++++++-----------------------
 2 files changed, 60 insertions(+), 46 deletions(-)

diff --git a/R/shiny-state.R b/R/shiny-state.R
index b84ca71..e2c1630 100644
--- a/R/shiny-state.R
+++ b/R/shiny-state.R
@@ -74,7 +74,7 @@ r2datatab <- function(rdatatab) {
     data.table(tag=tag,adduct=adduct,set=set,file=file)
 }
 
-r2taadse <- function(tablist,sets) {
+gen_dtab <- function(tablist,sets) {
     data.table(tag=factor(tablist$tag,levels=unique(tablist$tag)),
                adduct=factor(tablist$adduct,levels=ADDUCTMAP),
                set=factor(tablist$set,levels=sets))
@@ -226,7 +226,17 @@ gen_comp_state <- function(input,gui) {
 
     
 get_sets <- function(gui) {
-    fn_set <- file.path(gui$paths$project,gui$compounds$sets)
+    fn_sets <- file.path(gui$paths$project,gui$compounds$sets)
     df <- fread(file=fn_sets)
     df[,unique(set)]
 }
+
+
+gen_dfiles_tab <- function(gui) {
+    curr_file <- gui$datatab$file
+    curr_tag <- gui$datatab$tag
+    
+    res <- data.table(file=curr_file,tag=curr_tag)
+    res[,tag:=as.factor(tag)]
+    
+}
diff --git a/R/shiny-ui-base.R b/R/shiny-ui-base.R
index c716ac2..c7dab14 100644
--- a/R/shiny-ui-base.R
+++ b/R/shiny-ui-base.R
@@ -654,25 +654,32 @@ mk_shinyscreen_server <- function(projects,init) {
         
         ## REACTIVE FUNCTIONS
 
-        ## rf_compound_input_state <- reactive({
-        ##     sets <- rvs$m$run$paths$compounds$sets
-        ##     lst <- as.list(rvs$m$run$paths$compounds$lists)
-        ##     ## TODO XXX
-        ##     validate(need(length(lst)>0,
-        ##                   message = "Load the compound lists(s) first."))
-        ##     validate(need(length(sets)>0 && nchar(sets)>0,
-        ##                   message = "Load the setid table first."))
-        ##     isolate({
-        ##         state <- rev2list(rvs$m)
-        ##         m <- load_compound_input(state)
-
-        ##         ## Side effect! This is because my pipeline logic does not
-        ##         ## work nicely with reactive stuff.
-        ##         rvs$m$input$tab$cmpds <- list2rev(m$input$tab$cmpds)
-        ##         rvs$m$input$tab$setid <- m$input$tab$setid
-        ##         m
-        ##     })
-        ## })
+        rf_compound_set <- reactive({
+            req(rvs$gui$compounds$sets,
+                rvs$gui$paths$project)
+
+            get_sets(rvs$gui)
+        })
+        
+        rf_compound_input_state <- reactive({
+            sets <- rvs$m$run$paths$compounds$sets
+            lst <- as.list(rvs$m$run$paths$compounds$lists)
+            ## TODO XXX
+            validate(need(length(lst)>0,
+                          message = "Load the compound lists(s) first."))
+            validate(need(length(sets)>0 && nchar(sets)>0,
+                          message = "Load the setid table first."))
+            isolate({
+                state <- rev2list(rvs$m)
+                m <- load_compound_input(state)
+
+                ## Side effect! This is because my pipeline logic does not
+                ## work nicely with reactive stuff.
+                rvs$m$input$tab$cmpds <- list2rev(m$input$tab$cmpds)
+                rvs$m$input$tab$setid <- m$input$tab$setid
+                m
+            })
+        })
 
         rf_comp_state <- reactive({
             app_state2state(input=input,
@@ -680,10 +687,10 @@ mk_shinyscreen_server <- function(projects,init) {
             })
 
         rf_get_sets <- reactive({
-            req(rvs$gui$paths$project)
-            req(rvs$gui$paths$sets)
+            req(rvs$gui$paths$project,
+                rvs$gui$compounds$sets)
 
-            get_sets(gui)
+            get_sets(rvs$gui)
             
         })
 
@@ -1085,8 +1092,6 @@ mk_shinyscreen_server <- function(projects,init) {
                 res_adduct <- c(curr_adduct,rep(NA_character_,nd))
                 res_set <- c(curr_set,rep(NA_character_,nd))
 
-                
-
                 rvs$gui$datatab$file <- res_file
                 rvs$gui$datatab$tag <- res_tag
                 rvs$gui$datatab$adduct <- res_adduct
@@ -1111,15 +1116,16 @@ mk_shinyscreen_server <- function(projects,init) {
         })
         
         observeEvent(input$datafiles_cell_edit,{
-            z <- DT::editData(rv_dfile(),
-                              input$datafiles_cell_edit,
-                              rownames = F)
-            rv_dfile(z)
-
-            
+            df <- gen_dfiles_tab(rvs$gui)
+            df <- DT::editData(df,
+                               input$datafiles_cell_edit,
+                               rownames = F)
+            rvs$gui$datatab$file <- df$file
+            rvs$gui$datatab$tag <- df$tag
             
         }, label = "datafiles-edit")
 
+
         observeEvent(input$summ_subset_cell_edit,{
             the_summ_subset <<- DT::editData(the_summ_subset,
                                              input$summ_subset_cell_edit,
@@ -1607,24 +1613,22 @@ mk_shinyscreen_server <- function(projects,init) {
         
         output$datafiles <- DT::renderDT(
         {
-            curr_file <- rvs$gui$datatab$file
-            curr_tag <- rvs$gui$datatab$tag
-
-            res <- data.table(file=curr_file,tag=curr_tag)
-            res[,tag:=as.factor(tag)]
-            
+            rvs$gui$datatab$file
+            rvs$gui$datatab$tag
+            res <- gen_dfiles_tab(rvs$gui)
             simple_style_dt(res,editable=list(target="cell",disable=list(columns=0)))
         })
 
         output$datatab <- DT::renderDT({
-            
-            rv_flag_datatab()
-            setid <- rvs$m$input$tab$setid
-            req(NROW(setid)>0)
-            res <- rv_datatab()
-            
-        
-            tab <- dropdown_dt(res, callback = dt_drop_callback('1','2',setid[,unique(set)]))
+            rvs$gui$datatab$tag
+            rvs$gui$datatab$set
+            rvs$gui$datatab$adduct
+            sets <- rf_get_subset()
+            dtab <- gen_dtab(rvs$gui$datatab,
+                             sets=sets)
+            message("Hey")
+            print(dtab)
+            tab <- dropdown_dt(dtab, callback = dt_drop_callback('1','2',sets))
             tab
             
         })
-- 
GitLab