Skip to content

Commit

Permalink
use loadImport in dataLinkUpload
Browse files Browse the repository at this point in the history
  • Loading branch information
arunge committed Feb 19, 2024
1 parent 957075f commit e52cfd5
Showing 1 changed file with 41 additions and 20 deletions.
61 changes: 41 additions & 20 deletions R/02-importData-linkToData.R
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ observeDownloadDataLink <- function(id, input, output, session) {
]]

list(
dataSource = sourceInputs,
dataPreparation = NULL,
dataMerging = NULL,
dataQuery = NULL
source = sourceInputs,
preparation = NULL,
merging = NULL,
query = NULL
)
})

Expand All @@ -38,14 +38,13 @@ observeDownloadDataLink <- function(id, input, output, session) {
)
}


#' Download a link to import data
#'
#' @param id module id
#' @param input input object from server function
#' @param output output object from server function
#' @param session session from server function
observeUploadDataLink <- function(id, input, output, session) {
observeUploadDataLink <- function(id, input, output, session, importParams) {
dataLinkUpload <- reactiveValues(
loaded = 0,
import = list()
Expand All @@ -55,25 +54,29 @@ observeUploadDataLink <- function(id, input, output, session) {
observe({
req(input[["dataSelector-fileSource-dataOrLink"]] == "dataLink")

# check if upload is a json file
file <- input[["dataSelector-fileSource-file"]]
fileType <- file$datapath %>%
basename() %>%
getExtension()

req(fileType == "json")

# read json
dataLinkUpload$import <- jsonlite::read_json(file$datapath)

req(length(dataLinkUpload$import) > 0,
!is.null(dataLinkUpload$import[["dataSource"]]))
loadedInputs <- dataLinkUpload$import[["dataSource"]]
length(dataLinkUpload$import[["source"]]) > 0)

# loadedSourceInputs will be a list later
loadedSourceInputs <- dataLinkUpload$import[["source"]]

## update inputs ----
inputIDs <- names(loadedInputs)
inputIDs <- names(loadedSourceInputs)
inputIDs <- inputIDs[inputIDs %in% names(input)]

for (i in 1:length(inputIDs)) {
session$sendInputMessage(inputIDs[i], list(value = loadedInputs[[inputIDs[i]]]))
session$sendInputMessage(inputIDs[i], list(value = loadedSourceInputs[[inputIDs[i]]]))
}

dataLinkUpload$loaded <- dataLinkUpload$loaded + 1
Expand All @@ -83,19 +86,37 @@ observeUploadDataLink <- function(id, input, output, session) {
# observe if a link was imported and load the data from the "link"
observe({
req(dataLinkUpload$loaded > 0)
#browser()
# this part is not working
# session$sendInputMessage("dataSelector-fileSource-source",
# list(value = dataLinkUpload$import[["dataSource"]][["dataSelector-fileSource-source"]]))

# loadedSourceInputs must be a list later
loadedSourceInputs <- dataLinkUpload$import[["source"]]

# load data from ckan
## apply load button ckan if ckan:
if (dataLinkUpload$import[["dataSource"]][["dataSelector-fileSource-source"]] == "ckan") {
# session$sendInputMessage("dataSelector-fileSource-resourceLoad-loadCKAN",
# list(value = input[["dataSelector-fileSource-resourceLoad-loadCKAN"]] + 1))
# we need to execute the import directly! ####

# load function here!!! ----
if (loadedSourceInputs[["dataSelector-fileSource-source"]] == "ckan") {
browser()

# !!!! use loadedSourceInputs for
# - inputFileSource,
# - source -> getDataSource()

withProgress(
value = 0.75,
message = 'Importing ...', {
values <- loadImport(
importType = importType,
filename = dataSource$filename,
expectedFileInZip = expectedFileInZip,
params = list(values = values,
dataSource = dataSource,
inputFileSource = reactiveValuesToList(
input)[grepl("fileSource", names(input))],
customNames = customNames,
subFolder = subFolder,
rPackageName = rPackageName,
onlySettings = onlySettings,
fileExtension = fileExtension)
)
})
}
}) %>%
bindEvent(dataLinkUpload$loaded)
Expand Down

0 comments on commit e52cfd5

Please sign in to comment.