From ec102c7a515950cdf0deda1c8afe8b52f8d177c7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Todor=20Kondi=C4=87?= <todor.kondic@uni.lu>
Date: Fri, 1 Jul 2022 17:20:43 +0200
Subject: [PATCH] ...

---
 R/shiny-state.R   | 21 ++++++++++++++++----
 R/shiny-ui-base.R | 49 ++++++++++++++++++++++++++++++-----------------
 2 files changed, 48 insertions(+), 22 deletions(-)

diff --git a/R/shiny-state.R b/R/shiny-state.R
index fb632a7..b84ca71 100644
--- a/R/shiny-state.R
+++ b/R/shiny-state.R
@@ -33,7 +33,7 @@ create_stub_gui <- function() {
     gui <- list()
     shiny::isolate({
         gui$compounds <- shiny::reactiveValues(lists=character(),
-                                               set=character())
+                                               sets=character())
         gui$datatab <- shiny::reactiveValues(file=character(),
                                              tag=character(),
                                              adduct=character(),
@@ -83,10 +83,10 @@ r2taadse <- function(tablist,sets) {
 r2compounds <- function(rcompounds) {
     shiny::isolate({
         cmpd_lists <- rcompounds$lists
-        cmpd_set <- rcompounds$set
+        cmpd_set <- rcompounds$sets
         })
 
-    list(lists=cmpd_lists,set=cmpd_set)
+    list(lists=cmpd_lists,sets=cmpd_set)
     }
 
 
@@ -211,9 +211,22 @@ app_state2state <- function(input,gui) {
     m <- new_project(gui$paths$project)
     m$run$paths <- shiny::reactiveValuesToList(gui$paths)
     m$conf <- input2conf(input)
+    m$input$tab$mzml <- data.table(tag=gui$datatab$tag,
+                                   adduct=gui$datatab$adduct,
+                                   set=gui$datatab$set,
+                                   file=gui$datatab$file)
     m
 }
 
 
-    
+gen_comp_state <- function(input,gui) {
+    m <- app_state2state(input,gui)
+    run(m=m,phases=c("setup","mk_comp_tab"))
+}
 
+    
+get_sets <- function(gui) {
+    fn_set <- file.path(gui$paths$project,gui$compounds$sets)
+    df <- fread(file=fn_sets)
+    df[,unique(set)]
+}
diff --git a/R/shiny-ui-base.R b/R/shiny-ui-base.R
index 790daf9..c716ac2 100644
--- a/R/shiny-ui-base.R
+++ b/R/shiny-ui-base.R
@@ -439,7 +439,7 @@ mk_shinyscreen_server <- function(projects,init) {
 
     ## Update with data-files.
     rv_dfile <- reactiveVal(def_datafiles)
-
+    ## TODO: think about the connection of rv_dfile to the rest.
     ## Data-file table when loading.
     rv_datatab <- reactiveVal(def_datatab)
     rv_flag_datatab <- reactiveVal(-.Machine$integer.max)
@@ -654,24 +654,37 @@ 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_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,
+                            gui = rvs$gui)
             })
+
+        rf_get_sets <- reactive({
+            req(rvs$gui$paths$project)
+            req(rvs$gui$paths$sets)
+
+            get_sets(gui)
+            
         })
 
         rf_conf_proj <- reactive({
-- 
GitLab