From 63d13ef12d2141214cb78abc1a3ddcc966913faa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Todor=20Kondi=C4=87?= <todor.kondic@uni.lu>
Date: Mon, 25 Jul 2022 17:22:12 +0200
Subject: [PATCH] app: Fix retagging of files after addition.

---
 R/shiny-state.R   | 14 +++++++++++++-
 R/shiny-ui-base.R |  7 +++----
 2 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/R/shiny-state.R b/R/shiny-state.R
index 6a24585..c70cafd 100644
--- a/R/shiny-state.R
+++ b/R/shiny-state.R
@@ -29,6 +29,17 @@ GUI_ALL_INPUTS <- c(GUI_SELECT_INPUTS,
                       GUI_RADIO_INPUTS)
 
 
+add_new_def_tag <- function(old_tags,how_many) {
+    ind <- which(grepl(r"(^F\d+$)",old_tags))
+    st_num <- if (length(ind)>0L) {
+                    old_def_tags <- old_tags[ind]
+                    tag_nums <- gsub(r"(^F(\d+)$)",r"(\1)",old_def_tags)
+                    max(as.integer(tag_nums))
+                   
+        
+    } else 0L
+    c(old_tags,paste0('F',(st_num + 1L):(st_num + how_many)))
+}
 
 #' @export
 create_stub_gui <- function() {
@@ -253,7 +264,8 @@ gen_dfiles_tab <- function(gui) {
     curr_tag <- gui$datatab$tag
     
     res <- data.table(file=curr_file,tag=curr_tag)
-    res[,tag:=as.factor(tag)]
+    ## res[,tag:=as.factor(tag)]
+    res
     
 }
 
diff --git a/R/shiny-ui-base.R b/R/shiny-ui-base.R
index 36d645d..f0d5655 100644
--- a/R/shiny-ui-base.R
+++ b/R/shiny-ui-base.R
@@ -1028,12 +1028,11 @@ mk_shinyscreen_server <- function(projects,init) {
                 nb <- length(curr_file)
                 nd <- length(new_file)
                 res_file <- c(curr_file,new_file)
-                res_tag <- c(curr_tag,paste0('F',(nb + 1):(nb + nd)))
                 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$tag <- add_new_def_tag(as.character(rvs$gui$datatab$tag),nd)
                 rvs$gui$datatab$adduct <- res_adduct
                 rvs$gui$datatab$set <- res_set
             }
@@ -1060,8 +1059,8 @@ mk_shinyscreen_server <- function(projects,init) {
             df <- DT::editData(df,
                                input$datafiles_cell_edit,
                                rownames = F)
-            rvs$gui$datatab$file <- df$file
-            rvs$gui$datatab$tag <- df$tag
+            rvs$gui$datatab$file <- as.character(df$file)
+            rvs$gui$datatab$tag <- as.character(df$tag)
             
         }, label = "datafiles-edit")
 
-- 
GitLab