From abf981520bbb50532d8914547018e79210f482f4 Mon Sep 17 00:00:00 2001 From: Elie Arnaud Date: Thu, 12 Sep 2019 15:04:04 +0200 Subject: [PATCH] First RStudio commit. Known bug: - in EMLAL-module: triggers error: `Error in FUN: 'options' must be a fully named list, or have no names (NULL)` --- .gitignore | 4 + MetaShARK.Rproj | 13 + contributing.md | 15 +- .../altFiles/O&M/observation.xsd | 0 .../altFiles/eml/eml-access.xsd | 0 .../altFiles/eml/eml-attribute.xsd | 0 .../altFiles/eml/eml-constraint.xsd | 0 .../altFiles/eml/eml-coverage.xsd | 0 .../altFiles/eml/eml-dataTable.xsd | 0 .../altFiles/eml/eml-dataset.xsd | 0 .../altFiles/eml/eml-documentation.xsd | 0 .../altFiles/eml/eml-entity.xsd | 0 .../altFiles/eml/eml-literature.xsd | 0 .../altFiles/eml/eml-methods.xsd | 0 .../altFiles/eml/eml-party.xsd | 0 .../altFiles/eml/eml-physical.xsd | 0 .../altFiles/eml/eml-project.xsd | 0 .../altFiles/eml/eml-protocol.xsd | 0 .../altFiles/eml/eml-resource.xsd | 0 .../altFiles/eml/eml-software.xsd | 0 .../altFiles/eml/eml-spatialRaster.xsd | 0 .../altFiles/eml/eml-spatialReference.xsd | 0 .../altFiles/eml/eml-spatialVector.xsd | 0 .../altFiles/eml/eml-storedProcedure.xsd | 0 .../altFiles/eml/eml-text.xsd | 0 .../altFiles/eml/eml-unitTypeDefinitions.xsd | 0 .../altFiles/eml/eml-view.xsd | 0 .../altFiles/eml/eml.xsd | 0 .../altFiles/eml/stmml.xsd | 0 .../buildGuideline.R | 0 .../buildIndex.R | 0 .../buildResources.R | 0 .../guidelinesExplorer.R | 0 .../guidelinesFunctions.R | 0 .../multiApply.R | 0 .../xsdExplorer.R | 0 .../xsdFiles/eml-access.xsd | 0 .../xsdFiles/eml-attribute.xsd | 0 .../xsdFiles/eml-constraint.xsd | 0 .../xsdFiles/eml-coverage.xsd | 0 .../xsdFiles/eml-dataTable.xsd | 0 .../xsdFiles/eml-dataset.xsd | 0 .../xsdFiles/eml-documentation.xsd | 0 .../xsdFiles/eml-entity.xsd | 0 .../xsdFiles/eml-literature.xsd | 0 .../xsdFiles/eml-methods.xsd | 0 .../xsdFiles/eml-party.xsd | 0 .../xsdFiles/eml-physical.xsd | 0 .../xsdFiles/eml-project.xsd | 0 .../xsdFiles/eml-protocol.xsd | 0 .../xsdFiles/eml-resource.xsd | 0 .../xsdFiles/eml-software.xsd | 0 .../xsdFiles/eml-spatialRaster.xsd | 0 .../xsdFiles/eml-spatialReference.xsd | 0 .../xsdFiles/eml-spatialVector.xsd | 0 .../xsdFiles/eml-storedProcedure.xsd | 0 .../xsdFiles/eml-text.xsd | 0 .../xsdFiles/eml-unitTypeDefinitions.xsd | 0 .../xsdFiles/eml-view.xsd | 0 .../xsdFiles/eml.xsd | 0 .../xsdFiles/stmml.xsd | 0 .../emlAssemblyLine/example_files/decomp.csv | 1 + .../example_files/nitrogen.csv | 105 +++++ .../emlAssemblyLine/test_emldp/abstract.txt | 1 + .../test_emldp/additional_info.txt | 1 + .../test_emldp/intellectual_rights.txt | 1 + .../emlAssemblyLine/test_emldp/keywords.txt | 1 + .../emlAssemblyLine/test_emldp/methods.txt | 1 + .../emlAssemblyLine/test_emldp/personnel.txt | 1 + .../emlAssemblyLine/test_emldp/test.RData | Bin 0 -> 9963 bytes .../test/run_EMLassemblyline_for_test.R | 1 + shinyApp/header.R | 103 +++++ shinyApp/main.R | 140 +++--- shinyApp/modules/about/about.R | 8 +- .../modules/documentation/documentation.R | 31 +- .../documentation/documentation_functions.R | 6 +- .../documentation/documentation_style.R | 7 - shinyApp/modules/fill/EMLAL/EMLAL.R | 125 +++--- shinyApp/modules/fill/EMLAL/EMLAL_createDP.R | 145 ++++++- shinyApp/modules/fill/EMLAL/EMLAL_functions.R | 135 +++++- shinyApp/modules/fill/EMLAL/EMLAL_selectDP.R | 400 ++++++++++++------ .../modules/fill/EMLAL/EMLAL_templateDP.R | 5 + shinyApp/modules/fill/fill.R | 23 +- shinyApp/modules/fill/input_templates.R | 0 shinyApp/modules/fill/open/fillOpen.R | 13 - shinyApp/modules/fill/welcome/fillWelcome.R | 94 ---- shinyApp/modules/generate/generate.R | 21 - shinyApp/modules/welcome/welcome.R | 9 +- shinyApp/utils/reactiveTrigger.R | 19 + templateApp/templateApp.R | 84 ---- templateApp/templateModule.R | 41 -- 91 files changed, 961 insertions(+), 593 deletions(-) create mode 100644 .gitignore create mode 100644 MetaShARK.Rproj rename shinyApp/{_infoBuilder => .infoBuilder}/altFiles/O&M/observation.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/altFiles/eml/eml-access.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/altFiles/eml/eml-attribute.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/altFiles/eml/eml-constraint.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/altFiles/eml/eml-coverage.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/altFiles/eml/eml-dataTable.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/altFiles/eml/eml-dataset.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/altFiles/eml/eml-documentation.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/altFiles/eml/eml-entity.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/altFiles/eml/eml-literature.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/altFiles/eml/eml-methods.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/altFiles/eml/eml-party.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/altFiles/eml/eml-physical.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/altFiles/eml/eml-project.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/altFiles/eml/eml-protocol.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/altFiles/eml/eml-resource.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/altFiles/eml/eml-software.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/altFiles/eml/eml-spatialRaster.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/altFiles/eml/eml-spatialReference.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/altFiles/eml/eml-spatialVector.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/altFiles/eml/eml-storedProcedure.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/altFiles/eml/eml-text.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/altFiles/eml/eml-unitTypeDefinitions.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/altFiles/eml/eml-view.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/altFiles/eml/eml.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/altFiles/eml/stmml.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/buildGuideline.R (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/buildIndex.R (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/buildResources.R (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/guidelinesExplorer.R (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/guidelinesFunctions.R (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/multiApply.R (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/xsdExplorer.R (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/xsdFiles/eml-access.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/xsdFiles/eml-attribute.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/xsdFiles/eml-constraint.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/xsdFiles/eml-coverage.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/xsdFiles/eml-dataTable.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/xsdFiles/eml-dataset.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/xsdFiles/eml-documentation.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/xsdFiles/eml-entity.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/xsdFiles/eml-literature.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/xsdFiles/eml-methods.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/xsdFiles/eml-party.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/xsdFiles/eml-physical.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/xsdFiles/eml-project.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/xsdFiles/eml-protocol.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/xsdFiles/eml-resource.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/xsdFiles/eml-software.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/xsdFiles/eml-spatialRaster.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/xsdFiles/eml-spatialReference.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/xsdFiles/eml-spatialVector.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/xsdFiles/eml-storedProcedure.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/xsdFiles/eml-text.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/xsdFiles/eml-unitTypeDefinitions.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/xsdFiles/eml-view.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/xsdFiles/eml.xsd (100%) rename shinyApp/{_infoBuilder => .infoBuilder}/xsdFiles/stmml.xsd (100%) create mode 100644 shinyApp/dataPackagesOutput/emlAssemblyLine/example_files/decomp.csv create mode 100644 shinyApp/dataPackagesOutput/emlAssemblyLine/example_files/nitrogen.csv create mode 100644 shinyApp/dataPackagesOutput/emlAssemblyLine/test_emldp/abstract.txt create mode 100644 shinyApp/dataPackagesOutput/emlAssemblyLine/test_emldp/additional_info.txt create mode 100644 shinyApp/dataPackagesOutput/emlAssemblyLine/test_emldp/intellectual_rights.txt create mode 100644 shinyApp/dataPackagesOutput/emlAssemblyLine/test_emldp/keywords.txt create mode 100644 shinyApp/dataPackagesOutput/emlAssemblyLine/test_emldp/methods.txt create mode 100644 shinyApp/dataPackagesOutput/emlAssemblyLine/test_emldp/personnel.txt create mode 100644 shinyApp/dataPackagesOutput/emlAssemblyLine/test_emldp/test.RData create mode 100644 shinyApp/dataPackagesOutput/emlAssemblyLine/test_emldp/test/run_EMLassemblyline_for_test.R create mode 100644 shinyApp/header.R create mode 100644 shinyApp/modules/fill/EMLAL/EMLAL_templateDP.R create mode 100644 shinyApp/modules/fill/input_templates.R delete mode 100644 shinyApp/modules/fill/open/fillOpen.R delete mode 100644 shinyApp/modules/fill/welcome/fillWelcome.R delete mode 100644 shinyApp/modules/generate/generate.R create mode 100644 shinyApp/utils/reactiveTrigger.R delete mode 100644 templateApp/templateApp.R delete mode 100644 templateApp/templateModule.R diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5b6a065 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.Rproj.user +.Rhistory +.RData +.Ruserdata diff --git a/MetaShARK.Rproj b/MetaShARK.Rproj new file mode 100644 index 0000000..8e3c2eb --- /dev/null +++ b/MetaShARK.Rproj @@ -0,0 +1,13 @@ +Version: 1.0 + +RestoreWorkspace: Default +SaveWorkspace: Default +AlwaysSaveHistory: Default + +EnableCodeIndexing: Yes +UseSpacesForTab: Yes +NumSpacesForTab: 2 +Encoding: UTF-8 + +RnwWeave: Sweave +LaTeX: pdfLaTeX diff --git a/contributing.md b/contributing.md index 7737d30..3301046 100644 --- a/contributing.md +++ b/contributing.md @@ -7,7 +7,7 @@ As the project grows in size and code lines, it appears its design is not clean, The naming convention is inspired by the [Python naming convention](https://www.python.org/dev/peps/pep-0008/#package-and-module-names) **variables** -*local.var* variables are named in lowercase letters, and might be separated by single dots for legibility purposes +*localVar* variables are named in lowercase letters 'camelCase'. *GLOBAL.VAR* global variables (defined outside any function) are named with capital letters, and separated with dots. *Class* class are named as variables, but their names begin with a capital letter @@ -28,6 +28,19 @@ The naming convention is inspired by the [Python naming convention](https://www. *element-type* element are named (through their 'id' argument) in lowercase separated with "-". They shall be built as follow `id-type[-misc]` with type the structure of the element. *\*put.ids* in/output elements ids in the server are named in lowercase separated with dots. They shall be built as follow `what.info` with *what* the informative element and *info* the action/information contained about *what*. +## +For the **Fill/EMLAL** module, a specific variable is built: *fill*. It is of type `list` and contains `reactiveValues` in its leaves. Intermediate levels are sub-lists. The variable is built as follow: +. fill +├- emlal +| ├- selectDP +| ├- createDP +└- metafin +The building logic is: +* *root* is a list with elements corresponding to each metadata filling module (EML Assembly Line, MetaFIN). +* 1st level nodes match filling module and contain sublist for each step of the filling process. +* 2nd level nodes' elements are `reactiveValues` object containing the filled metadata. +Each of the modules node are returned at the end of their respective module. While reading a module, beware of the way their input is written. + ## Git files organization + _old + shinyApp diff --git a/shinyApp/_infoBuilder/altFiles/O&M/observation.xsd b/shinyApp/.infoBuilder/altFiles/O&M/observation.xsd similarity index 100% rename from shinyApp/_infoBuilder/altFiles/O&M/observation.xsd rename to shinyApp/.infoBuilder/altFiles/O&M/observation.xsd diff --git a/shinyApp/_infoBuilder/altFiles/eml/eml-access.xsd b/shinyApp/.infoBuilder/altFiles/eml/eml-access.xsd similarity index 100% rename from shinyApp/_infoBuilder/altFiles/eml/eml-access.xsd rename to shinyApp/.infoBuilder/altFiles/eml/eml-access.xsd diff --git a/shinyApp/_infoBuilder/altFiles/eml/eml-attribute.xsd b/shinyApp/.infoBuilder/altFiles/eml/eml-attribute.xsd similarity index 100% rename from shinyApp/_infoBuilder/altFiles/eml/eml-attribute.xsd rename to shinyApp/.infoBuilder/altFiles/eml/eml-attribute.xsd diff --git a/shinyApp/_infoBuilder/altFiles/eml/eml-constraint.xsd b/shinyApp/.infoBuilder/altFiles/eml/eml-constraint.xsd similarity index 100% rename from shinyApp/_infoBuilder/altFiles/eml/eml-constraint.xsd rename to shinyApp/.infoBuilder/altFiles/eml/eml-constraint.xsd diff --git a/shinyApp/_infoBuilder/altFiles/eml/eml-coverage.xsd b/shinyApp/.infoBuilder/altFiles/eml/eml-coverage.xsd similarity index 100% rename from shinyApp/_infoBuilder/altFiles/eml/eml-coverage.xsd rename to shinyApp/.infoBuilder/altFiles/eml/eml-coverage.xsd diff --git a/shinyApp/_infoBuilder/altFiles/eml/eml-dataTable.xsd b/shinyApp/.infoBuilder/altFiles/eml/eml-dataTable.xsd similarity index 100% rename from shinyApp/_infoBuilder/altFiles/eml/eml-dataTable.xsd rename to shinyApp/.infoBuilder/altFiles/eml/eml-dataTable.xsd diff --git a/shinyApp/_infoBuilder/altFiles/eml/eml-dataset.xsd b/shinyApp/.infoBuilder/altFiles/eml/eml-dataset.xsd similarity index 100% rename from shinyApp/_infoBuilder/altFiles/eml/eml-dataset.xsd rename to shinyApp/.infoBuilder/altFiles/eml/eml-dataset.xsd diff --git a/shinyApp/_infoBuilder/altFiles/eml/eml-documentation.xsd b/shinyApp/.infoBuilder/altFiles/eml/eml-documentation.xsd similarity index 100% rename from shinyApp/_infoBuilder/altFiles/eml/eml-documentation.xsd rename to shinyApp/.infoBuilder/altFiles/eml/eml-documentation.xsd diff --git a/shinyApp/_infoBuilder/altFiles/eml/eml-entity.xsd b/shinyApp/.infoBuilder/altFiles/eml/eml-entity.xsd similarity index 100% rename from shinyApp/_infoBuilder/altFiles/eml/eml-entity.xsd rename to shinyApp/.infoBuilder/altFiles/eml/eml-entity.xsd diff --git a/shinyApp/_infoBuilder/altFiles/eml/eml-literature.xsd b/shinyApp/.infoBuilder/altFiles/eml/eml-literature.xsd similarity index 100% rename from shinyApp/_infoBuilder/altFiles/eml/eml-literature.xsd rename to shinyApp/.infoBuilder/altFiles/eml/eml-literature.xsd diff --git a/shinyApp/_infoBuilder/altFiles/eml/eml-methods.xsd b/shinyApp/.infoBuilder/altFiles/eml/eml-methods.xsd similarity index 100% rename from shinyApp/_infoBuilder/altFiles/eml/eml-methods.xsd rename to shinyApp/.infoBuilder/altFiles/eml/eml-methods.xsd diff --git a/shinyApp/_infoBuilder/altFiles/eml/eml-party.xsd b/shinyApp/.infoBuilder/altFiles/eml/eml-party.xsd similarity index 100% rename from shinyApp/_infoBuilder/altFiles/eml/eml-party.xsd rename to shinyApp/.infoBuilder/altFiles/eml/eml-party.xsd diff --git a/shinyApp/_infoBuilder/altFiles/eml/eml-physical.xsd b/shinyApp/.infoBuilder/altFiles/eml/eml-physical.xsd similarity index 100% rename from shinyApp/_infoBuilder/altFiles/eml/eml-physical.xsd rename to shinyApp/.infoBuilder/altFiles/eml/eml-physical.xsd diff --git a/shinyApp/_infoBuilder/altFiles/eml/eml-project.xsd b/shinyApp/.infoBuilder/altFiles/eml/eml-project.xsd similarity index 100% rename from shinyApp/_infoBuilder/altFiles/eml/eml-project.xsd rename to shinyApp/.infoBuilder/altFiles/eml/eml-project.xsd diff --git a/shinyApp/_infoBuilder/altFiles/eml/eml-protocol.xsd b/shinyApp/.infoBuilder/altFiles/eml/eml-protocol.xsd similarity index 100% rename from shinyApp/_infoBuilder/altFiles/eml/eml-protocol.xsd rename to shinyApp/.infoBuilder/altFiles/eml/eml-protocol.xsd diff --git a/shinyApp/_infoBuilder/altFiles/eml/eml-resource.xsd b/shinyApp/.infoBuilder/altFiles/eml/eml-resource.xsd similarity index 100% rename from shinyApp/_infoBuilder/altFiles/eml/eml-resource.xsd rename to shinyApp/.infoBuilder/altFiles/eml/eml-resource.xsd diff --git a/shinyApp/_infoBuilder/altFiles/eml/eml-software.xsd b/shinyApp/.infoBuilder/altFiles/eml/eml-software.xsd similarity index 100% rename from shinyApp/_infoBuilder/altFiles/eml/eml-software.xsd rename to shinyApp/.infoBuilder/altFiles/eml/eml-software.xsd diff --git a/shinyApp/_infoBuilder/altFiles/eml/eml-spatialRaster.xsd b/shinyApp/.infoBuilder/altFiles/eml/eml-spatialRaster.xsd similarity index 100% rename from shinyApp/_infoBuilder/altFiles/eml/eml-spatialRaster.xsd rename to shinyApp/.infoBuilder/altFiles/eml/eml-spatialRaster.xsd diff --git a/shinyApp/_infoBuilder/altFiles/eml/eml-spatialReference.xsd b/shinyApp/.infoBuilder/altFiles/eml/eml-spatialReference.xsd similarity index 100% rename from shinyApp/_infoBuilder/altFiles/eml/eml-spatialReference.xsd rename to shinyApp/.infoBuilder/altFiles/eml/eml-spatialReference.xsd diff --git a/shinyApp/_infoBuilder/altFiles/eml/eml-spatialVector.xsd b/shinyApp/.infoBuilder/altFiles/eml/eml-spatialVector.xsd similarity index 100% rename from shinyApp/_infoBuilder/altFiles/eml/eml-spatialVector.xsd rename to shinyApp/.infoBuilder/altFiles/eml/eml-spatialVector.xsd diff --git a/shinyApp/_infoBuilder/altFiles/eml/eml-storedProcedure.xsd b/shinyApp/.infoBuilder/altFiles/eml/eml-storedProcedure.xsd similarity index 100% rename from shinyApp/_infoBuilder/altFiles/eml/eml-storedProcedure.xsd rename to shinyApp/.infoBuilder/altFiles/eml/eml-storedProcedure.xsd diff --git a/shinyApp/_infoBuilder/altFiles/eml/eml-text.xsd b/shinyApp/.infoBuilder/altFiles/eml/eml-text.xsd similarity index 100% rename from shinyApp/_infoBuilder/altFiles/eml/eml-text.xsd rename to shinyApp/.infoBuilder/altFiles/eml/eml-text.xsd diff --git a/shinyApp/_infoBuilder/altFiles/eml/eml-unitTypeDefinitions.xsd b/shinyApp/.infoBuilder/altFiles/eml/eml-unitTypeDefinitions.xsd similarity index 100% rename from shinyApp/_infoBuilder/altFiles/eml/eml-unitTypeDefinitions.xsd rename to shinyApp/.infoBuilder/altFiles/eml/eml-unitTypeDefinitions.xsd diff --git a/shinyApp/_infoBuilder/altFiles/eml/eml-view.xsd b/shinyApp/.infoBuilder/altFiles/eml/eml-view.xsd similarity index 100% rename from shinyApp/_infoBuilder/altFiles/eml/eml-view.xsd rename to shinyApp/.infoBuilder/altFiles/eml/eml-view.xsd diff --git a/shinyApp/_infoBuilder/altFiles/eml/eml.xsd b/shinyApp/.infoBuilder/altFiles/eml/eml.xsd similarity index 100% rename from shinyApp/_infoBuilder/altFiles/eml/eml.xsd rename to shinyApp/.infoBuilder/altFiles/eml/eml.xsd diff --git a/shinyApp/_infoBuilder/altFiles/eml/stmml.xsd b/shinyApp/.infoBuilder/altFiles/eml/stmml.xsd similarity index 100% rename from shinyApp/_infoBuilder/altFiles/eml/stmml.xsd rename to shinyApp/.infoBuilder/altFiles/eml/stmml.xsd diff --git a/shinyApp/_infoBuilder/buildGuideline.R b/shinyApp/.infoBuilder/buildGuideline.R similarity index 100% rename from shinyApp/_infoBuilder/buildGuideline.R rename to shinyApp/.infoBuilder/buildGuideline.R diff --git a/shinyApp/_infoBuilder/buildIndex.R b/shinyApp/.infoBuilder/buildIndex.R similarity index 100% rename from shinyApp/_infoBuilder/buildIndex.R rename to shinyApp/.infoBuilder/buildIndex.R diff --git a/shinyApp/_infoBuilder/buildResources.R b/shinyApp/.infoBuilder/buildResources.R similarity index 100% rename from shinyApp/_infoBuilder/buildResources.R rename to shinyApp/.infoBuilder/buildResources.R diff --git a/shinyApp/_infoBuilder/guidelinesExplorer.R b/shinyApp/.infoBuilder/guidelinesExplorer.R similarity index 100% rename from shinyApp/_infoBuilder/guidelinesExplorer.R rename to shinyApp/.infoBuilder/guidelinesExplorer.R diff --git a/shinyApp/_infoBuilder/guidelinesFunctions.R b/shinyApp/.infoBuilder/guidelinesFunctions.R similarity index 100% rename from shinyApp/_infoBuilder/guidelinesFunctions.R rename to shinyApp/.infoBuilder/guidelinesFunctions.R diff --git a/shinyApp/_infoBuilder/multiApply.R b/shinyApp/.infoBuilder/multiApply.R similarity index 100% rename from shinyApp/_infoBuilder/multiApply.R rename to shinyApp/.infoBuilder/multiApply.R diff --git a/shinyApp/_infoBuilder/xsdExplorer.R b/shinyApp/.infoBuilder/xsdExplorer.R similarity index 100% rename from shinyApp/_infoBuilder/xsdExplorer.R rename to shinyApp/.infoBuilder/xsdExplorer.R diff --git a/shinyApp/_infoBuilder/xsdFiles/eml-access.xsd b/shinyApp/.infoBuilder/xsdFiles/eml-access.xsd similarity index 100% rename from shinyApp/_infoBuilder/xsdFiles/eml-access.xsd rename to shinyApp/.infoBuilder/xsdFiles/eml-access.xsd diff --git a/shinyApp/_infoBuilder/xsdFiles/eml-attribute.xsd b/shinyApp/.infoBuilder/xsdFiles/eml-attribute.xsd similarity index 100% rename from shinyApp/_infoBuilder/xsdFiles/eml-attribute.xsd rename to shinyApp/.infoBuilder/xsdFiles/eml-attribute.xsd diff --git a/shinyApp/_infoBuilder/xsdFiles/eml-constraint.xsd b/shinyApp/.infoBuilder/xsdFiles/eml-constraint.xsd similarity index 100% rename from shinyApp/_infoBuilder/xsdFiles/eml-constraint.xsd rename to shinyApp/.infoBuilder/xsdFiles/eml-constraint.xsd diff --git a/shinyApp/_infoBuilder/xsdFiles/eml-coverage.xsd b/shinyApp/.infoBuilder/xsdFiles/eml-coverage.xsd similarity index 100% rename from shinyApp/_infoBuilder/xsdFiles/eml-coverage.xsd rename to shinyApp/.infoBuilder/xsdFiles/eml-coverage.xsd diff --git a/shinyApp/_infoBuilder/xsdFiles/eml-dataTable.xsd b/shinyApp/.infoBuilder/xsdFiles/eml-dataTable.xsd similarity index 100% rename from shinyApp/_infoBuilder/xsdFiles/eml-dataTable.xsd rename to shinyApp/.infoBuilder/xsdFiles/eml-dataTable.xsd diff --git a/shinyApp/_infoBuilder/xsdFiles/eml-dataset.xsd b/shinyApp/.infoBuilder/xsdFiles/eml-dataset.xsd similarity index 100% rename from shinyApp/_infoBuilder/xsdFiles/eml-dataset.xsd rename to shinyApp/.infoBuilder/xsdFiles/eml-dataset.xsd diff --git a/shinyApp/_infoBuilder/xsdFiles/eml-documentation.xsd b/shinyApp/.infoBuilder/xsdFiles/eml-documentation.xsd similarity index 100% rename from shinyApp/_infoBuilder/xsdFiles/eml-documentation.xsd rename to shinyApp/.infoBuilder/xsdFiles/eml-documentation.xsd diff --git a/shinyApp/_infoBuilder/xsdFiles/eml-entity.xsd b/shinyApp/.infoBuilder/xsdFiles/eml-entity.xsd similarity index 100% rename from shinyApp/_infoBuilder/xsdFiles/eml-entity.xsd rename to shinyApp/.infoBuilder/xsdFiles/eml-entity.xsd diff --git a/shinyApp/_infoBuilder/xsdFiles/eml-literature.xsd b/shinyApp/.infoBuilder/xsdFiles/eml-literature.xsd similarity index 100% rename from shinyApp/_infoBuilder/xsdFiles/eml-literature.xsd rename to shinyApp/.infoBuilder/xsdFiles/eml-literature.xsd diff --git a/shinyApp/_infoBuilder/xsdFiles/eml-methods.xsd b/shinyApp/.infoBuilder/xsdFiles/eml-methods.xsd similarity index 100% rename from shinyApp/_infoBuilder/xsdFiles/eml-methods.xsd rename to shinyApp/.infoBuilder/xsdFiles/eml-methods.xsd diff --git a/shinyApp/_infoBuilder/xsdFiles/eml-party.xsd b/shinyApp/.infoBuilder/xsdFiles/eml-party.xsd similarity index 100% rename from shinyApp/_infoBuilder/xsdFiles/eml-party.xsd rename to shinyApp/.infoBuilder/xsdFiles/eml-party.xsd diff --git a/shinyApp/_infoBuilder/xsdFiles/eml-physical.xsd b/shinyApp/.infoBuilder/xsdFiles/eml-physical.xsd similarity index 100% rename from shinyApp/_infoBuilder/xsdFiles/eml-physical.xsd rename to shinyApp/.infoBuilder/xsdFiles/eml-physical.xsd diff --git a/shinyApp/_infoBuilder/xsdFiles/eml-project.xsd b/shinyApp/.infoBuilder/xsdFiles/eml-project.xsd similarity index 100% rename from shinyApp/_infoBuilder/xsdFiles/eml-project.xsd rename to shinyApp/.infoBuilder/xsdFiles/eml-project.xsd diff --git a/shinyApp/_infoBuilder/xsdFiles/eml-protocol.xsd b/shinyApp/.infoBuilder/xsdFiles/eml-protocol.xsd similarity index 100% rename from shinyApp/_infoBuilder/xsdFiles/eml-protocol.xsd rename to shinyApp/.infoBuilder/xsdFiles/eml-protocol.xsd diff --git a/shinyApp/_infoBuilder/xsdFiles/eml-resource.xsd b/shinyApp/.infoBuilder/xsdFiles/eml-resource.xsd similarity index 100% rename from shinyApp/_infoBuilder/xsdFiles/eml-resource.xsd rename to shinyApp/.infoBuilder/xsdFiles/eml-resource.xsd diff --git a/shinyApp/_infoBuilder/xsdFiles/eml-software.xsd b/shinyApp/.infoBuilder/xsdFiles/eml-software.xsd similarity index 100% rename from shinyApp/_infoBuilder/xsdFiles/eml-software.xsd rename to shinyApp/.infoBuilder/xsdFiles/eml-software.xsd diff --git a/shinyApp/_infoBuilder/xsdFiles/eml-spatialRaster.xsd b/shinyApp/.infoBuilder/xsdFiles/eml-spatialRaster.xsd similarity index 100% rename from shinyApp/_infoBuilder/xsdFiles/eml-spatialRaster.xsd rename to shinyApp/.infoBuilder/xsdFiles/eml-spatialRaster.xsd diff --git a/shinyApp/_infoBuilder/xsdFiles/eml-spatialReference.xsd b/shinyApp/.infoBuilder/xsdFiles/eml-spatialReference.xsd similarity index 100% rename from shinyApp/_infoBuilder/xsdFiles/eml-spatialReference.xsd rename to shinyApp/.infoBuilder/xsdFiles/eml-spatialReference.xsd diff --git a/shinyApp/_infoBuilder/xsdFiles/eml-spatialVector.xsd b/shinyApp/.infoBuilder/xsdFiles/eml-spatialVector.xsd similarity index 100% rename from shinyApp/_infoBuilder/xsdFiles/eml-spatialVector.xsd rename to shinyApp/.infoBuilder/xsdFiles/eml-spatialVector.xsd diff --git a/shinyApp/_infoBuilder/xsdFiles/eml-storedProcedure.xsd b/shinyApp/.infoBuilder/xsdFiles/eml-storedProcedure.xsd similarity index 100% rename from shinyApp/_infoBuilder/xsdFiles/eml-storedProcedure.xsd rename to shinyApp/.infoBuilder/xsdFiles/eml-storedProcedure.xsd diff --git a/shinyApp/_infoBuilder/xsdFiles/eml-text.xsd b/shinyApp/.infoBuilder/xsdFiles/eml-text.xsd similarity index 100% rename from shinyApp/_infoBuilder/xsdFiles/eml-text.xsd rename to shinyApp/.infoBuilder/xsdFiles/eml-text.xsd diff --git a/shinyApp/_infoBuilder/xsdFiles/eml-unitTypeDefinitions.xsd b/shinyApp/.infoBuilder/xsdFiles/eml-unitTypeDefinitions.xsd similarity index 100% rename from shinyApp/_infoBuilder/xsdFiles/eml-unitTypeDefinitions.xsd rename to shinyApp/.infoBuilder/xsdFiles/eml-unitTypeDefinitions.xsd diff --git a/shinyApp/_infoBuilder/xsdFiles/eml-view.xsd b/shinyApp/.infoBuilder/xsdFiles/eml-view.xsd similarity index 100% rename from shinyApp/_infoBuilder/xsdFiles/eml-view.xsd rename to shinyApp/.infoBuilder/xsdFiles/eml-view.xsd diff --git a/shinyApp/_infoBuilder/xsdFiles/eml.xsd b/shinyApp/.infoBuilder/xsdFiles/eml.xsd similarity index 100% rename from shinyApp/_infoBuilder/xsdFiles/eml.xsd rename to shinyApp/.infoBuilder/xsdFiles/eml.xsd diff --git a/shinyApp/_infoBuilder/xsdFiles/stmml.xsd b/shinyApp/.infoBuilder/xsdFiles/stmml.xsd similarity index 100% rename from shinyApp/_infoBuilder/xsdFiles/stmml.xsd rename to shinyApp/.infoBuilder/xsdFiles/stmml.xsd diff --git a/shinyApp/dataPackagesOutput/emlAssemblyLine/example_files/decomp.csv b/shinyApp/dataPackagesOutput/emlAssemblyLine/example_files/decomp.csv new file mode 100644 index 0000000..571dc48 --- /dev/null +++ b/shinyApp/dataPackagesOutput/emlAssemblyLine/example_files/decomp.csv @@ -0,0 +1 @@ +type,date,arm,ntrt,year,percent_loss,taxa Sphagnum,2014-01-01,1,C,2014,4,Mosses Sphagnum,2014-01-01,1,C,2014,7.1,Unsorted biomass Sphagnum,2014-01-01,1,C,2014,6.23,Achillea millefolium Sphagnum,2014-01-01,2,C,2014,16.81,Achillea millefolium Sphagnum,2014-01-01,2,C,2014,0,Achillea millefolium Sphagnum,2014-01-01,2,C,2014,2.39,Crepis tectorum Sphagnum,2014-01-01,3,C,2014,11.06,Cyperus sp. Sphagnum,2014-01-01,3,C,2014,7.22,Euphorbia glyptosperma Sphagnum,2014-01-01,3,C,2014,13.88,Lespedeza capitata Sphagnum,2014-01-01,,0,2014,0,Achillea millefolium Sphagnum,2014-01-01,1,0,2014,8.14,Achillea millefolium Sphagnum,2014-01-01,1,0,2014,7.26,Achillea millefolium Sphagnum,2014-01-01,,0,2014,0.22,Achillea millefolium Sphagnum,2014-01-01,2,0,2014,4.98,Cyperus sp. Sphagnum,2014-01-01,2,0,2014,6.54,Lepidium densiflorum Sphagnum,2014-01-01,3,0,2014,7.9,Lespedeza capitata Sphagnum,2014-01-01,3,0,2014,3.54,Poa pratensis Sphagnum,2014-01-01,3,0,2014,5.99,Rumex acetosella Sphagnum,2014-01-01,1,5,2014,0,Schizachyrium scoparium Sphagnum,2014-01-01,1,5,2014,8.12,Unsorted biomass Sphagnum,2014-01-01,1,5,2014,7.86,Bouteloua gracilis Sphagnum,2014-01-01,2,5,2014,9.29,Cyperus sp. Sphagnum,2014-01-01,2,5,2014,0.91,Koeleria cristata Sphagnum,2014-01-01,2,5,2014,2.71,Lespedeza capitata Sphagnum,2014-01-01,3,5,2014,0,Liatris aspera Sphagnum,2014-01-01,3,5,2014,0,Mosses Sphagnum,2014-01-01,3,5,2014,0.81,Unsorted biomass Sphagnum,2014-01-01,1,10,2014,5.16,Achillea millefolium Sphagnum,2014-01-01,1,10,2014,6.5,Achillea millefolium Sphagnum,2014-01-01,1,10,2014,5.14,Achillea millefolium Sphagnum,2014-01-01,2,10,2014,4.79,Crepis tectorum Sphagnum,2014-01-01,2,10,2014,3.8,Cyperus sp. Sphagnum,2014-01-01,2,10,2014,3.36,Euphorbia glyptosperma Sphagnum,2014-01-01,3,10,2014,0,Lespedeza capitata Sphagnum,2014-01-01,3,10,2014,0,Achillea millefolium Sphagnum,2014-01-01,3,10,2014,0,Achillea millefolium Sphagnum,2014-01-01,1,15,2014,7.65,Achillea millefolium Sphagnum,2014-01-01,1,15,2014,7.24,Achillea millefolium Sphagnum,2014-01-01,1,15,2014,6.9,Cyperus sp. Sphagnum,2014-01-01,2,15,2014,8.31,Lepidium densiflorum Sphagnum,2014-01-01,2,15,2014,10.69,Lespedeza capitata Sphagnum,2014-01-01,2,15,2014,8.4,Poa pratensis Sphagnum,2014-01-01,3,15,2014,10.37,Rumex acetosella Sphagnum,2014-01-01,3,15,2014,0,Schizachyrium scoparium Sphagnum,2014-01-01,3,15,2014,0,Unsorted biomass Sphagnum,2014-01-01,1,20,2014,3.34,Bouteloua gracilis Sphagnum,2014-01-01,1,20,2014,5.69,Cyperus sp. Sphagnum,2014-01-01,1,20,2014,7.33,Koeleria cristata Sphagnum,2014-01-01,2,20,2014,4.87,Lespedeza capitata Sphagnum,2014-01-01,2,20,2014,0,Liatris aspera Sphagnum,2014-01-01,2,20,2014,12.85,Mosses Sphagnum,2014-01-01,3,20,2014,0,Unsorted biomass Sphagnum,2014-01-01,3,20,2014,3.06,Achillea millefolium Sphagnum,2014-01-01,3,20,2014,2.26,Achillea millefolium Sphagnum,2014-01-01,1,25,2014,7.32,Achillea millefolium Sphagnum,2014-01-01,1,25,2014,5.72,Crepis tectorum Sphagnum,2014-01-01,1,25,2014,2.12,Cyperus sp. Sphagnum,2014-01-01,2,25,2014,12.74,Euphorbia glyptosperma Sphagnum,2014-01-01,2,25,2014,0.83,Lespedeza capitata Sphagnum,2014-01-01,2,25,2014,19.43,Achillea millefolium Sphagnum,2014-01-01,3,25,2014,5.17,Achillea millefolium Sphagnum,2014-01-01,3,25,2014,6.64,Achillea millefolium Sphagnum,2014-01-01,3,25,2014,1.5,Achillea millefolium Sphagnum,2015-01-01,1,C,2015,10.64,Cyperus sp. Sphagnum,2015-01-01,1,C,2015,15.38,Lepidium densiflorum Sphagnum,2015-01-01,1,C,2015,16.49,Lespedeza capitata Sphagnum,2015-01-01,1,C,2015,11.31,Poa pratensis Sphagnum,2015-01-01,2,C,2015,13.14,Rumex acetosella Sphagnum,2015-01-01,2,C,2015,13.45,Schizachyrium scoparium Sphagnum,2015-01-01,2,C,2015,12.62,Unsorted biomass Sphagnum,2015-01-01,2,C,2015,11.06,Bouteloua gracilis Sphagnum,2015-01-01,3,C,2015,13.92,Cyperus sp. Sphagnum,2015-01-01,3,C,2015,11.02,Koeleria cristata Sphagnum,2015-01-01,3,C,2015,12.44,Lespedeza capitata Sphagnum,2015-01-01,3,C,2015,12.64,Liatris aspera Sphagnum,2015-01-01,1,0,2015,11.42,Mosses Sphagnum,2015-01-01,1,0,2015,10.6,Unsorted biomass Sphagnum,2015-01-01,1,0,2015,15.34,Achillea millefolium Sphagnum,2015-01-01,1,0,2015,13.25,Achillea millefolium Sphagnum,2015-01-01,2,0,2015,6.85,Achillea millefolium Sphagnum,2015-01-01,2,0,2015,4.85,Crepis tectorum Sphagnum,2015-01-01,2,0,2015,6.75,Cyperus sp. Sphagnum,2015-01-01,2,0,2015,4.64,Euphorbia glyptosperma Sphagnum,2015-01-01,3,0,2015,12.69,Lespedeza capitata Sphagnum,2015-01-01,3,0,2015,12.07,Achillea millefolium Sphagnum,2015-01-01,3,0,2015,11.77,Achillea millefolium Sphagnum,2015-01-01,3,0,2015,11.43,Achillea millefolium Sphagnum,2015-01-01,1,5,2015,11.26,Achillea millefolium Sphagnum,2015-01-01,1,5,2015,11.95,Cyperus sp. Sphagnum,2015-01-01,1,5,2015,9.75,Lepidium densiflorum Sphagnum,2015-01-01,1,5,2015,9.34,Lespedeza capitata Sphagnum,2015-01-01,2,5,2015,12.36,Poa pratensis Sphagnum,2015-01-01,2,5,2015,4.35,Rumex acetosella Sphagnum,2015-01-01,2,5,2015,8.81,Schizachyrium scoparium Sphagnum,2015-01-01,2,5,2015,6.03,Unsorted biomass Sphagnum,2015-01-01,3,5,2015,14.2,Bouteloua gracilis Sphagnum,2015-01-01,3,5,2015,26.39,Cyperus sp. Sphagnum,2015-01-01,3,5,2015,16.57,Koeleria cristata Sphagnum,2015-01-01,3,5,2015,14.41,Lespedeza capitata Sphagnum,2015-01-01,1,10,2015,13.41,Liatris aspera Sphagnum,2015-01-01,1,10,2015,11.21,Mosses Sphagnum,2015-01-01,1,10,2015,10.2,Unsorted biomass Sphagnum,2015-01-01,1,10,2015,21.74,Achillea millefolium Sphagnum,2015-01-01,2,10,2015,17.33,Achillea millefolium Sphagnum,2015-01-01,2,10,2015,11.98,Achillea millefolium Sphagnum,2015-01-01,2,10,2015,11.88,Crepis tectorum Sphagnum,2015-01-01,2,10,2015,12.92,Cyperus sp. Sphagnum,2015-01-01,3,10,2015,9.21,Euphorbia glyptosperma Sphagnum,2015-01-01,3,10,2015,9,Lespedeza capitata Sphagnum,2015-01-01,3,10,2015,9.29,Achillea millefolium Sphagnum,2015-01-01,3,10,2015,8.2,Achillea millefolium Sphagnum,2015-01-01,1,15,2015,8.86,Achillea millefolium Sphagnum,2015-01-01,1,15,2015,8.8,Achillea millefolium Sphagnum,2015-01-01,1,15,2015,9.74,Cyperus sp. Sphagnum,2015-01-01,1,15,2015,9.17,Lepidium densiflorum Sphagnum,2015-01-01,2,15,2015,8.47,Lespedeza capitata Sphagnum,2015-01-01,2,15,2015,8.35,Poa pratensis Sphagnum,2015-01-01,2,15,2015,6.77,Rumex acetosella Sphagnum,2015-01-01,2,15,2015,7.75,Schizachyrium scoparium Sphagnum,2015-01-01,3,15,2015,14.46,Unsorted biomass Sphagnum,2015-01-01,3,15,2015,15.5,Bouteloua gracilis Sphagnum,2015-01-01,3,15,2015,14.17,Cyperus sp. Sphagnum,2015-01-01,3,15,2015,14.8,Koeleria cristata Sphagnum,2015-01-01,1,20,2015,11.75,Lespedeza capitata Sphagnum,2015-01-01,1,20,2015,8.33,Liatris aspera Sphagnum,2015-01-01,1,20,2015,7.53,Mosses Sphagnum,2015-01-01,1,20,2015,10.35,Unsorted biomass Sphagnum,2015-01-01,2,20,2015,7.96,Achillea millefolium Sphagnum,2015-01-01,2,20,2015,9.17,Achillea millefolium Sphagnum,2015-01-01,2,20,2015,7.97,Achillea millefolium Sphagnum,2015-01-01,2,20,2015,7.59,Crepis tectorum Sphagnum,2015-01-01,3,20,2015,6.33,Cyperus sp. Sphagnum,2015-01-01,3,20,2015,4.89,Euphorbia glyptosperma Sphagnum,2015-01-01,3,20,2015,5.05,Lespedeza capitata Sphagnum,2015-01-01,3,20,2015,4.73,Achillea millefolium Sphagnum,2015-01-01,1,25,2015,11.76,Achillea millefolium Sphagnum,2015-01-01,1,25,2015,14.53,Achillea millefolium Sphagnum,2015-01-01,1,25,2015,12.09,Achillea millefolium Sphagnum,2015-01-01,1,25,2015,12.96,Cyperus sp. Sphagnum,2015-01-01,2,25,2015,12.29,Lepidium densiflorum Sphagnum,2015-01-01,2,25,2015,14.03,Lespedeza capitata Sphagnum,2015-01-01,2,25,2015,8.78,Poa pratensis Sphagnum,2015-01-01,2,25,2015,9.1,Rumex acetosella Sphagnum,2015-01-01,3,25,2015,7.34,Schizachyrium scoparium Sphagnum,2015-01-01,3,25,2015,14.71,Unsorted biomass Sphagnum,2015-01-01,3,25,2015,6.64,Bouteloua gracilis Sphagnum,2015-01-01,3,25,2015,4.75,Cyperus sp. Vascular,2014-01-01,1,C,2014,30.71,Koeleria cristata Vascular,2014-01-01,1,C,2014,49.9,Lespedeza capitata Vascular,2014-01-01,1,C,2014,39.04,Liatris aspera Vascular,2014-01-01,2,C,2014,41.26,Mosses Vascular,2014-01-01,2,C,2014,44.31,Unsorted biomass Vascular,2014-01-01,2,C,2014,21.58,Achillea millefolium Vascular,2014-01-01,3,C,2014,30.51,Achillea millefolium Vascular,2014-01-01,3,C,2014,0,Achillea millefolium Vascular,2014-01-01,3,C,2014,36.49,Crepis tectorum Vascular,2014-01-01,1,0,2014,27.54,Cyperus sp. Vascular,2014-01-01,1,0,2014,-99999,Euphorbia glyptosperma Vascular,2014-01-01,1,0,2014,27.56,Lespedeza capitata Vascular,2014-01-01,2,0,2014,36.37,Achillea millefolium Vascular,2014-01-01,2,0,2014,39.84,Achillea millefolium Vascular,2014-01-01,2,0,2014,-99999,Achillea millefolium Vascular,2014-01-01,3,0,2014,52.38,Achillea millefolium Vascular,2014-01-01,3,0,2014,51.24,Cyperus sp. Vascular,2014-01-01,3,0,2014,48.72,Lepidium densiflorum Vascular,2014-01-01,1,5,2014,29.83,Lespedeza capitata Vascular,2014-01-01,1,5,2014,38.68,Poa pratensis Vascular,2014-01-01,1,5,2014,35.19,Rumex acetosella Vascular,2014-01-01,2,5,2014,-99999,Schizachyrium scoparium Vascular,2014-01-01,2,5,2014,-99999,Unsorted biomass Vascular,2014-01-01,2,5,2014,-99999,Bouteloua gracilis Vascular,2014-01-01,3,5,2014,33.57,Cyperus sp. Vascular,2014-01-01,3,5,2014,43.3,Koeleria cristata Vascular,2014-01-01,3,5,2014,43.82,Lespedeza capitata Vascular,2014-01-01,1,10,2014,28.11,Liatris aspera Vascular,2014-01-01,1,10,2014,21.57,Mosses Vascular,2014-01-01,1,10,2014,40.25,Unsorted biomass Vascular,2014-01-01,2,10,2014,44.02,Achillea millefolium Vascular,2014-01-01,2,10,2014,37.82,Achillea millefolium Vascular,2014-01-01,2,10,2014,36.84,Achillea millefolium Vascular,2014-01-01,3,10,2014,33.63,Crepis tectorum Vascular,2014-01-01,3,10,2014,23.17,Cyperus sp. Vascular,2014-01-01,3,10,2014,38.9,Euphorbia glyptosperma Vascular,2014-01-01,1,15,2014,-99999,Lespedeza capitata Vascular,2014-01-01,1,15,2014,-99999,Achillea millefolium Vascular,2014-01-01,1,15,2014,44.61,Achillea millefolium Vascular,2014-01-01,2,15,2014,44.37,Achillea millefolium Vascular,2014-01-01,2,15,2014,36.64,Achillea millefolium Vascular,2014-01-01,2,15,2014,42.16,Cyperus sp. Vascular,2014-01-01,3,15,2014,32.49,Lepidium densiflorum Vascular,2014-01-01,3,15,2014,50.29,Lespedeza capitata Vascular,2014-01-01,3,15,2014,25.58,Poa pratensis Vascular,2014-01-01,1,20,2014,36.24,Rumex acetosella Vascular,2014-01-01,1,20,2014,31.88,Schizachyrium scoparium Vascular,2014-01-01,1,20,2014,29.28,Unsorted biomass Vascular,2014-01-01,2,20,2014,48.58,Bouteloua gracilis Vascular,2014-01-01,2,20,2014,49.01,Cyperus sp. Vascular,2014-01-01,2,20,2014,44.15,Koeleria cristata Vascular,2014-01-01,3,20,2014,40.57,Lespedeza capitata Vascular,2014-01-01,3,20,2014,29.16,Liatris aspera Vascular,2014-01-01,3,20,2014,33.56, Vascular,2014-01-01,1,25,2014,30.61,Mosses Vascular,2014-01-01,1,25,2014,42.84,Unsorted biomass Vascular,2014-01-01,1,25,2014,35.2,Achillea millefolium Vascular,2014-01-01,2,25,2014,27.91,Achillea millefolium Vascular,2014-01-01,2,25,2014,33.17,Achillea millefolium Vascular,2014-01-01,2,25,2014,-99999,Crepis tectorum Vascular,2014-01-01,3,25,2014,37.44,Cyperus sp. Vascular,2014-01-01,3,25,2014,27.99,Euphorbia glyptosperma Vascular,2014-01-01,3,25,2014,34.92,Lespedeza capitata Vascular,2015-01-01,1,C,2015,43.31,Achillea millefolium Vascular,2015-01-01,1,C,2015,46.52,Achillea millefolium Vascular,2015-01-01,1,C,2015,41.1,Achillea millefolium Vascular,2015-01-01,1,C,2015,23.9,Achillea millefolium Vascular,2015-01-01,2,C,2015,44.13,Cyperus sp. Vascular,2015-01-01,2,C,2015,37.12,Lepidium densiflorum Vascular,2015-01-01,2,C,2015,36.72,Lespedeza capitata Vascular,2015-01-01,2,C,2015,28.08,Poa pratensis Vascular,2015-01-01,3,C,2015,39.52,Rumex acetosella Vascular,2015-01-01,3,C,2015,32.12,Schizachyrium scoparium Vascular,2015-01-01,3,C,2015,36.31,Unsorted biomass Vascular,2015-01-01,3,C,2015,41.44,Bouteloua gracilis Vascular,2015-01-01,1,0,2015,42.95,Cyperus sp. Vascular,2015-01-01,1,0,2015,45.85,Koeleria cristata Vascular,2015-01-01,1,0,2015,57.6,Lespedeza capitata Vascular,2015-01-01,1,0,2015,41.21,Liatris aspera Vascular,2015-01-01,2,0,2015,43.49, Vascular,2015-01-01,2,0,2015,40.85, Vascular,2015-01-01,2,0,2015,39.25, Vascular,2015-01-01,2,0,2015,44.05,Mosses Vascular,2015-01-01,3,0,2015,48.35,Unsorted biomass Vascular,2015-01-01,3,0,2015,53.93,Achillea millefolium Vascular,2015-01-01,3,0,2015,57.65,Achillea millefolium Vascular,2015-01-01,3,0,2015,46.64,Achillea millefolium Vascular,2015-01-01,1,5,2015,47.12,Crepis tectorum Vascular,2015-01-01,1,5,2015,49.55,Cyperus sp. Vascular,2015-01-01,1,5,2015,42.38,Euphorbia glyptosperma Vascular,2015-01-01,1,5,2015,49.61,Lespedeza capitata Vascular,2015-01-01,2,5,2015,36.88,Achillea millefolium Vascular,2015-01-01,2,5,2015,49.98,Achillea millefolium Vascular,2015-01-01,2,5,2015,27.11,Achillea millefolium Vascular,2015-01-01,2,5,2015,56.04,Achillea millefolium Vascular,2015-01-01,3,5,2015,36.83,Cyperus sp. Vascular,2015-01-01,3,5,2015,50.84,Lepidium densiflorum Vascular,2015-01-01,3,5,2015,48.14,Lespedeza capitata Vascular,2015-01-01,3,5,2015,50.09,Poa pratensis Vascular,2015-01-01,1,10,2015,-99999,Rumex acetosella Vascular,2015-01-01,1,10,2015,48.83,Schizachyrium scoparium Vascular,2015-01-01,1,10,2015,47.8,Unsorted biomass Vascular,2015-01-01,1,10,2015,44.35,Bouteloua gracilis Vascular,2015-01-01,2,10,2015,36.41,Cyperus sp. Vascular,2015-01-01,2,10,2015,45.09,Koeleria cristata Vascular,2015-01-01,2,10,2015,39.27,Lespedeza capitata Vascular,2015-01-01,2,10,2015,27.94,Liatris aspera Vascular,2015-01-01,3,10,2015,51.17,Mosses Vascular,2015-01-01,3,10,2015,48.98,Unsorted biomass Vascular,2015-01-01,3,10,2015,45.69,Achillea millefolium Vascular,2015-01-01,3,10,2015,56.33,Achillea millefolium Vascular,2015-01-01,1,15,2015,45.13,Achillea millefolium Vascular,2015-01-01,1,15,2015,41.27,Crepis tectorum Vascular,2015-01-01,1,15,2015,44.5,Cyperus sp. Vascular,2015-01-01,1,15,2015,45.79,Euphorbia glyptosperma Vascular,2015-01-01,2,15,2015,24.64,Lespedeza capitata Vascular,2015-01-01,2,15,2015,31.82,Achillea millefolium Vascular,2015-01-01,2,15,2015,40.5,Achillea millefolium Vascular,2015-01-01,2,15,2015,35.23,Achillea millefolium Vascular,2015-01-01,3,15,2015,20.77,Achillea millefolium Vascular,2015-01-01,3,15,2015,38.1,Cyperus sp. Vascular,2015-01-01,3,15,2015,33.44,Lepidium densiflorum Vascular,2015-01-01,3,15,2015,38.4,Lespedeza capitata Vascular,2015-01-01,1,20,2015,30.45,Poa pratensis Vascular,2015-01-01,1,20,2015,-99999,Rumex acetosella Vascular,2015-01-01,1,20,2015,33.12,Schizachyrium scoparium Vascular,2015-01-01,1,20,2015,32.19,Unsorted biomass Vascular,2015-01-01,2,20,2015,24.09,Bouteloua gracilis Vascular,2015-01-01,2,20,2015,37.39,Cyperus sp. Vascular,2015-01-01,2,20,2015,29.52,Koeleria cristata Vascular,2015-01-01,2,20,2015,30.02,Lespedeza capitata Vascular,2015-01-01,3,20,2015,41.79,Liatris aspera Vascular,2015-01-01,3,20,2015,41.24,Mosses Vascular,2015-01-01,3,20,2015,45.6,Unsorted biomass Vascular,2015-01-01,3,20,2015,35.72,Achillea millefolium Vascular,2015-01-01,1,25,2015,40.97,Achillea millefolium Vascular,2015-01-01,1,25,2015,41.92,Achillea millefolium Vascular,2015-01-01,1,25,2015,36.92,Crepis tectorum Vascular,2015-01-01,1,25,2015,47.19,Cyperus sp. Vascular,2015-01-01,2,25,2015,27.13,Euphorbia glyptosperma Vascular,2015-01-01,2,25,2015,33.67,Lespedeza capitata Vascular,2015-01-01,2,25,2015,40.77,Achillea millefolium Vascular,2015-01-01,2,25,2015,45.95,Achillea millefolium Vascular,2015-01-01,3,25,2015,40.8,Achillea millefolium Vascular,2015-01-01,3,25,2015,27.64,Achillea millefolium Vascular,2015-01-01,3,25,2015,30.73,Cyperus sp. Vascular,2015-01-01,3,25,2015,41.32,Lepidium densiflorum \ No newline at end of file diff --git a/shinyApp/dataPackagesOutput/emlAssemblyLine/example_files/nitrogen.csv b/shinyApp/dataPackagesOutput/emlAssemblyLine/example_files/nitrogen.csv new file mode 100644 index 0000000..dd6e002 --- /dev/null +++ b/shinyApp/dataPackagesOutput/emlAssemblyLine/example_files/nitrogen.csv @@ -0,0 +1,105 @@ +date,ntrt,arm,net_primary_production,stem_mass_density,plant_density,stem_n_concentration,n_assimilated,site_name,site_lon,site_lat +2011-01-01,C,1,127.4,150.8,75383,9.83,1.25,site_1,-89.43,45.23 +2011-01-01,C,2,144.1,74,74005,10.87,1.57,site_2,-89.44,45.24 +2011-01-01,C,3,105.4,86.6,57745,12.92,1.36,site_3,-89.45,45.25 +2011-01-01,0,1,74.3,110.7,40267,10.44,0.78,site_4,-89.46,45.26 +2011-01-01,0,2,235.8,86.4,69101,7.55,1.78,site_5,-89.47,45.27 +2011-01-01,0,3,269.9,105.7,60403,8.84,2.39,site_6,-89.48,45.28 +2011-01-01,5,1,273.4,178.3,59437,8.94,2.44,site_7,-89.49,45.29 +2011-01-01,5,2,245.3,101.7,45181,9.42,2.31,site_8,-89.5,45.3 +2011-01-01,5,3,150.7,69.5,55571,9.5,1.43,site_9,-89.51,45.31 +2011-01-01,10,1,289.5,184.5,56779,10.93,3.16,site_10,-89.52,45.32 +2011-01-01,10,2,295.7,100,44457,11.51,3.4,site_1,-89.43,45.23 +2011-01-01,10,3,273.7,115.8,51463,9.39,2.57,site_2,-89.44,45.24 +2011-01-01,15,1,208.9,79.4,63544,8.11,1.69,site_3,-89.45,45.25 +2011-01-01,15,2,133.8,80.3,53555,10.64,1.42,site_4,-89.46,45.26 +2011-01-01,15,3,281.4,97.2,48622,10.41,2.93,site_5,-89.47,45.27 +2011-01-01,20,1,103.5,91.3,40591,11.32,1.17,site_6,-89.48,45.28 +2011-01-01,20,2,303.8,190.8,58712,9.99,3.04,site_7,-89.49,45.29 +2011-01-01,20,3,243.8,128.3,57020,9.99,2.44,site_8,-89.5,45.3 +2011-01-01,25,1,243.5,101.5,57987,9.04,2.2,site_9,-89.51,45.31 +2011-01-01,25,2,347.8,144.3,57726,11.38,3.96,site_10,-89.52,45.32 +2011-01-01,25,3,225.4,108.9,27230,11.24,2.53,site_1,-89.43,45.23 +2012-01-01,C,1,367.6,205.4,61176,8.9,3.27,site_2,-89.44,45.24 +2012-01-01,C,2,299.9,131,70518,10.44,3.13,site_3,-89.45,45.25 +2012-01-01,C,3,261.4,172,61734,9.69,2.53,site_4,-89.46,45.26 +2012-01-01,0,1,284.4,122,40678,8.75,2.49,site_5,-89.47,45.27 +2012-01-01,0,2,349.2,103.3,57861,6.97,2.43,site_6,-89.48,45.28 +2012-01-01,0,3,347.2,109.5,63888,8.24,2.86,site_7,-89.49,45.29 +2012-01-01,5,1,357.4,238.3,74134,7.99,2.86,site_8,-89.5,45.3 +2012-01-01,5,2,319.7,99.9,73620,8.03,2.57,site_9,-89.51,45.31 +2012-01-01,5,3,347,105.5,59066,7.36,2.55,site_10,-89.52,45.32 +2012-01-01,10,1,458.8,117.3,82139,8.15,3.74,site_1,-89.43,45.23 +2012-01-01,10,2,383.6,81.3,71121,8.92,3.42,site_2,-89.44,45.24 +2012-01-01,10,3,497.1,180.8,66600,7.89,3.92,site_3,-89.45,45.25 +2012-01-01,15,1,328.3,92.2,75942,8.65,2.84,site_4,-89.46,45.26 +2012-01-01,15,2,237.6,86.1,75320,8.65,2.06,site_5,-89.47,45.27 +2012-01-01,15,3,390.4,114.5,59366,7.92,3.09,site_6,-89.48,45.28 +2012-01-01,20,1,150.4,79.2,46184,8.08,1.22,site_7,-89.49,45.29 +2012-01-01,20,2,118.4,98.6,46029,9.07,1.07,site_8,-89.5,45.3 +2012-01-01,20,3,251.4,122.1,40683,9.04,2.27,site_9,-89.51,45.31 +2012-01-01,25,1,244.5,100.6,82874,8.58,2.1,site_10,-89.52,45.32 +2012-01-01,25,2,465.1,268.8,54546,9.58,4.46,site_1,-89.43,45.23 +2012-01-01,25,3,162.3,109.7,54847,7.97,1.29,site_2,-89.44,45.24 +2013-01-01,C,1,540.7,178.7,50026,9.73,5.26,site_3,-89.45,45.25 +2013-01-01,C,2,341.7,126.7,57229,11.88,4.06,site_4,-89.46,45.26 +2013-01-01,C,3,318.6,99,49507,10.31,3.28,site_5,-89.47,45.27 +2013-01-01,0,1,176.3,63,55149,8.52,1.5,site_6,-89.48,45.28 +2013-01-01,0,2,148.7,81.8,54546,10.09,1.5,site_7,-89.49,45.29 +2013-01-01,0,3,154.2,113.7,49724,9.07,1.4,site_8,-89.5,45.3 +2013-01-01,5,1,184.4,73.6,60573,9.84,1.81,site_9,-89.51,45.31 +2013-01-01,5,2,218,62,72326,9.12,1.99,site_10,-89.52,45.32 +2013-01-01,5,3,201.6,60.4,49724,8.85,1.78,site_1,-89.43,45.23 +2013-01-01,10,1,184,81.5,87719,8.83,1.63,site_2,-89.44,45.24 +2013-01-01,10,2,264.7,110.3,55149,10.43,2.76,site_3,-89.45,45.25 +2013-01-01,10,3,115.6,58.2,50930,8.31,0.96,site_4,-89.46,45.26 +2013-01-01,15,1,183.4,96.5,58765,8.81,1.62,site_5,-89.47,45.27 +2013-01-01,15,2,110,64.7,50312,11.44,1.26,site_6,-89.48,45.28 +2013-01-01,15,3,130.9,68.9,38574,10.4,1.36,site_7,-89.49,45.29 +2013-01-01,20,1,154.3,45.2,42155,9.41,1.45,site_8,-89.5,45.3 +2013-01-01,20,2,113.6,95.7,31171,9.92,1.13,site_9,-89.51,45.31 +2013-01-01,20,3,175.7,65.3,24711,9.96,1.75,site_10,-89.52,45.32 +2013-01-01,25,1,260.3,92.4,44601,10.29,2.68,site_1,-89.43,45.23 +2013-01-01,25,2,87.3,39.4,55149,11.22,0.98,site_2,-89.44,45.24 +2013-01-01,25,3,117.7,51.5,27725,9.7,1.14,site_3,-89.45,45.25 +2014-01-01,C,1,272,92.9,50026,8.76,2.38,site_4,-89.46,45.26 +2014-01-01,C,2,202.3,96.7,63852,9.37,1.9,site_5,-89.47,45.27 +2014-01-01,C,3,222.9,87.7,42793,9.25,2.06,site_6,-89.48,45.28 +2014-01-01,0,1,109.2,61.1,52436,8.63,0.94,site_7,-89.49,45.29 +2014-01-01,0,2,225.7,73.2,53943,9.16,2.07,site_8,-89.5,45.3 +2014-01-01,0,3,269,130.9,49121,7.97,2.14,site_9,-89.51,45.31 +2014-01-01,5,1,184.1,63.4,43094,7.79,1.44,site_10,-89.52,45.32 +2014-01-01,5,2,207.1,93.5,68191,8.46,1.75,site_1,-89.43,45.23 +2014-01-01,5,3,159.1,77.5,45806,8.86,1.41,site_2,-89.44,45.24 +2014-01-01,10,1,417.5,155.7,55751,8.03,3.35,site_3,-89.45,45.25 +2014-01-01,10,2,154.8,72.3,37067,9.62,1.49,site_4,-89.46,45.26 +2014-01-01,10,3,143.5,92.7,35736,8.93,1.28,site_5,-89.47,45.27 +2014-01-01,15,1,61.5,65.9,30437,9.23,0.57,site_6,-89.48,45.28 +2014-01-01,15,2,89.7,63.7,30739,10.47,0.94,site_7,-89.49,45.29 +2014-01-01,15,3,55,58.4,27986,7.86,0.43,site_8,-89.5,45.3 +2014-01-01,20,1,245.6,70.7,34355,12.47,3.06,site_9,-89.51,45.31 +2014-01-01,20,2,136.6,82.9,33149,9.05,1.24,site_10,-89.52,45.32 +2014-01-01,20,3,87.6,43.6,20191,10.7,0.94,site_1,-89.43,45.23 +2014-01-01,25,1,211.4,59.3,31341,12.44,2.63,site_2,-89.44,45.24 +2014-01-01,25,2,136.1,56.8,30136,9.99,1.36,site_3,-89.45,45.25 +2014-01-01,25,3,113.2,44.9,21095,8.78,0.99,site_4,-89.46,45.26 +2015-01-01,C,1,381.7,124,59669,8.87,3.38,site_5,-89.47,45.27 +2015-01-01,C,2,372.9,139.4,56408,8.86,3.31,site_6,-89.48,45.28 +2015-01-01,C,3,262.8,92,36790,9.39,2.47,site_7,-89.49,45.29 +2015-01-01,0,1,292,135.1,51834,7.77,2.27,site_8,-89.5,45.3 +2015-01-01,0,2,464.1,189.5,52135,6.83,3.17,site_9,-89.51,45.31 +2015-01-01,0,3,255.2,155.1,44601,7.23,1.84,site_10,-89.52,45.32 +2015-01-01,5,1,344.6,81.2,44944,8.39,2.89,site_1,-89.43,45.23 +2015-01-01,5,2,246.1,107.2,51231,7.56,1.86,site_2,-89.44,45.24 +2015-01-01,5,3,147.8,74.3,43712,8.46,1.25,site_3,-89.45,45.25 +2015-01-01,10,2,70.4,49.2,28930,10.4,0.73,site_4,-89.46,45.26 +2015-01-01,10,3,142.9,66.8,24410,8.94,1.28,site_5,-89.47,45.27 +2015-01-01,15,1,159.9,77.8,24410,7.65,1.22,site_6,-89.48,45.28 +2015-01-01,15,2,123.1,50.4,25314,9.39,1.16,site_7,-89.49,45.29 +2015-01-01,15,3,39.4,42.4,28930,10.12,0.4,site_8,-89.5,45.3 +2015-01-01,20,1,251.4,69.8,47916,9.5,2.39,site_9,-89.51,45.31 +2015-01-01,20,2,79.7,51.5,35862,8.29,0.66,site_10,-89.52,45.32 +2015-01-01,20,3,62.6,29.5,25013,8.43,0.53,site_1,-89.43,45.23 +2015-01-01,25,1,312.1,81,36464,9.3,2.9,site_2,-89.44,45.24 +2015-01-01,25,2,146.5,47.7,34054,9.47,1.39,site_3,-89.45,45.25 +2015-01-01,25,3,82.8,33.2,21999,9.26,0.77,site_4,-89.46,45.26 diff --git a/shinyApp/dataPackagesOutput/emlAssemblyLine/test_emldp/abstract.txt b/shinyApp/dataPackagesOutput/emlAssemblyLine/test_emldp/abstract.txt new file mode 100644 index 0000000..5f28270 --- /dev/null +++ b/shinyApp/dataPackagesOutput/emlAssemblyLine/test_emldp/abstract.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/shinyApp/dataPackagesOutput/emlAssemblyLine/test_emldp/additional_info.txt b/shinyApp/dataPackagesOutput/emlAssemblyLine/test_emldp/additional_info.txt new file mode 100644 index 0000000..5f28270 --- /dev/null +++ b/shinyApp/dataPackagesOutput/emlAssemblyLine/test_emldp/additional_info.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/shinyApp/dataPackagesOutput/emlAssemblyLine/test_emldp/intellectual_rights.txt b/shinyApp/dataPackagesOutput/emlAssemblyLine/test_emldp/intellectual_rights.txt new file mode 100644 index 0000000..9ad166c --- /dev/null +++ b/shinyApp/dataPackagesOutput/emlAssemblyLine/test_emldp/intellectual_rights.txt @@ -0,0 +1 @@ +This information is released under the Creative Commons license - Attribution - CC BY (https://creativecommons.org/licenses/by/4.0/). The consumer of these data (\"Data User\" herein) is required to cite it appropriately in any publication that results from its use. The Data User should realize that these data may be actively used by others for ongoing research and that coordination may be necessary to prevent duplicate publication. The Data User is urged to contact the authors of these data if any questions about methodology or results occur. Where appropriate, the Data User is encouraged to consider collaboration or co-authorship with the authors. The Data User should realize that misinterpretation of data may occur if used out of context of the original study. While substantial efforts are made to ensure the accuracy of data and associated documentation, complete accuracy of data sets cannot be guaranteed. All data are made available \"as is.\" The Data User should be aware, however, that data are updated periodically and it is the responsibility of the Data User to check for new versions of the data. The data authors and the repository where these data were obtained shall not be liable for damages resulting from any use or misinterpretation of the data. Thank you. diff --git a/shinyApp/dataPackagesOutput/emlAssemblyLine/test_emldp/keywords.txt b/shinyApp/dataPackagesOutput/emlAssemblyLine/test_emldp/keywords.txt new file mode 100644 index 0000000..318832c --- /dev/null +++ b/shinyApp/dataPackagesOutput/emlAssemblyLine/test_emldp/keywords.txt @@ -0,0 +1 @@ +keyword keywordThesaurus diff --git a/shinyApp/dataPackagesOutput/emlAssemblyLine/test_emldp/methods.txt b/shinyApp/dataPackagesOutput/emlAssemblyLine/test_emldp/methods.txt new file mode 100644 index 0000000..5f28270 --- /dev/null +++ b/shinyApp/dataPackagesOutput/emlAssemblyLine/test_emldp/methods.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/shinyApp/dataPackagesOutput/emlAssemblyLine/test_emldp/personnel.txt b/shinyApp/dataPackagesOutput/emlAssemblyLine/test_emldp/personnel.txt new file mode 100644 index 0000000..ec774a0 --- /dev/null +++ b/shinyApp/dataPackagesOutput/emlAssemblyLine/test_emldp/personnel.txt @@ -0,0 +1 @@ +givenName middleInitial surName organizationName electronicMailAddress userId role projectTitle fundingAgency fundingNumber diff --git a/shinyApp/dataPackagesOutput/emlAssemblyLine/test_emldp/test.RData b/shinyApp/dataPackagesOutput/emlAssemblyLine/test_emldp/test.RData new file mode 100644 index 0000000000000000000000000000000000000000..69f6998e04bcc6d8e4862eff85b9a59392759cae GIT binary patch literal 9963 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 Ny?Qls23~}R`yUxYdJg~q literal 0 HcmV?d00001 diff --git a/shinyApp/dataPackagesOutput/emlAssemblyLine/test_emldp/test/run_EMLassemblyline_for_test.R b/shinyApp/dataPackagesOutput/emlAssemblyLine/test_emldp/test/run_EMLassemblyline_for_test.R new file mode 100644 index 0000000..8ba8585 --- /dev/null +++ b/shinyApp/dataPackagesOutput/emlAssemblyLine/test_emldp/test/run_EMLassemblyline_for_test.R @@ -0,0 +1 @@ +# This script executes an EMLassemblyline workflow. diff --git a/shinyApp/header.R b/shinyApp/header.R new file mode 100644 index 0000000..c7fdf64 --- /dev/null +++ b/shinyApp/header.R @@ -0,0 +1,103 @@ +# header.R +rm(list = ls()) +setwd(dirname(rstudioapi::getActiveDocumentContext()$path)) +options(shiny.reactlog=TRUE) + +### RESOURCES ### + + ## Guidelines ---- + message("Loading Guidelines:") + + # Doc = Doc-only EML subspec + docGuideline = as.list(readRDS("resources/docGuideline.RData")) + message("* Doc Guideline successfully loaded !") + + # System = whole EML spec + systemGuideline = as.list(readRDS("resources/systemGuideline.RData")) + message("* System Guideline successfully loaded !") + + # Namespace Index = which namespace lead to what module + cat("* Loading Namespaces Index ...\r") + nsIndex <- readRDS("resources/nsIndex.RData") + message("* Namespaces Index successfully loaded !") + + # Id Module ---- + IM.about = c("aboutModule", "About") + IM.doc = c("docModule", "Documentation", "docSelect","docPath","docSearch") + IM.fill = c("fillModule", "Fill") + IM.EMLAL = c("EMLALModule","EML Assembly Line", + "select","create","edit","make","publish") + IM.welcome = c("welcomeModule", "Welcome") + + ## CSS var ---- + menuWidth = "250px" + + sidebarStyle = "overflow-y: scroll; + max-height: 800px;" + + mainpanelStyle = "overflow-y: scroll; + max-height: 800px;" + + inputStyle = "border: 1px solid lightgrey; + margin: 5px; + padding: 5px; + width: 100%;" + + redButtonStyle = "color: red;" + + rightButtonStyle = "position: right; + width: 100%;" + + ## Global variables ---- + DP.PATH <- paste0(getwd(),"/dataPackagesOutput/emlAssemblyLine/") + THRESHOLD = list( + dp_data_files = 500000 + ) + HOME = fs::path_home() + +### IMPORTS ---- + + ## Libraries ---- + # GUI + library(shiny) + library(shinyTree) + library(shinydashboard) + library(shinyFiles) + library(shinyjs) + library(tcltk2) + library(tippy) # install from gi + + # EML + library(EML) + library(EMLassemblyline) + + # Utils + library(devtools) + + ## Modules assembly ---- + # Welcome + source("modules/welcome/welcome.R") + # Fill + source("modules/fill/fill.R") + source("modules/fill/input_templates.R") + source("modules/fill/EMLAL/EMLAL.R") + source("modules/fill/EMLAL/EMLAL_functions.R") + source("modules/fill/EMLAL/EMLAL_selectDP.R") + source("modules/fill/EMLAL/EMLAL_createDP.R") + # Documentation + source("modules/documentation/documentation.R") + source("modules/documentation/documentation_functions.R") + source("modules/documentation/documentation_style.R") + # About + source("modules/about/about.R") + # Utils - not GUI + source("utils/multiApply.R") + source("utils/reactiveTrigger.R") + + ## Dir creation ---- + dir.create(".cache/", recursive = TRUE, showWarnings = FALSE) + dir.create(DP.PATH, recursive = TRUE, showWarnings = FALSE) + +### MISC ZONE ---- +# Tippy real examples +# https://cran.r-project.org/web/packages/tippy/readme/README.html \ No newline at end of file diff --git a/shinyApp/main.R b/shinyApp/main.R index 63fca16..1c4c9ed 100644 --- a/shinyApp/main.R +++ b/shinyApp/main.R @@ -1,63 +1,42 @@ # main.R -rm(list = ls()) -setwd(dirname(rstudioapi::getActiveDocumentContext()$path)) -options(shiny.reactlog=TRUE) - - - -### IMPORTS ### -library(shiny) -library(shinydashboard) -library("shinyjs") - -source("modules/about/about.R") -source("modules/documentation/documentation.R") -source("modules/fill/fill.R") -source("modules/welcome/welcome.R") - -if(!dir.exists(".cache/")) dir.create(".cache/") - -### RESOURCES ### - -# IM: Id Modules - first: session (=module namespace) - others: IDs -IM.about = c("aboutModule", "About") -IM.doc = c("docModule", "Documentation", "docSelect","docPath","docSearch") -IM.fill = c("fillModule", "Fill") -IM.welcome = c("welcomeModule", "Welcome") - -# CSS var -menuWidth = "250px" - +source("header.R") ### UI ### -ui <- dashboardPage(dashboardHeader(title = span(imageOutput("logo", inline = TRUE), "MetaShARK") - ,titleWidth = menuWidth - ), - ## Menus ## - dashboardSidebar( - useShinyjs(), - sidebarMenu( - menuItem("Welcome", tabName = "welcome", icon = icon("home")), - menuItem("Fill in EML", tabName = "fill", icon = icon("file-import")), - menuItem("EML Documentation", tabName = "documentation", icon = icon("glasses")), - menuItem("About MetaShARK", tabName = "about", icon = icon("beer")) - ) - ,width = menuWidth - ), - ## Content ## - dashboardBody( - tabItems( - tabItem(tabName = "welcome", - welcomeUI(IM.welcome[1], IM = IM.welcome)), - tabItem(tabName = "fill", - fillUI(IM.fill[1], IM = IM.fill)), - tabItem(tabName = "documentation", - docUI(IM.doc[1], IM = IM.doc)), - tabItem(tabName = "about", - aboutUI(IM.about[1], IM = IM.about)) - ) - ) -) +ui <- dashboardPage( + title = "MetaShARK", + dashboardHeader( + title = span(imageOutput("logo", inline = TRUE), "MetaShARK"), + titleWidth = menuWidth + ), + ## Menus ## ---- + dashboardSidebar( + useShinyjs(), + sidebarMenu( + menuItem("Welcome", tabName = "welcome", + icon = icon("home")), + menuItem("Fill in EML", tabName = "fill", + icon = icon("file-import")), + menuItem("EML Documentation", tabName = "documentation", + icon = icon("glasses")), + menuItem("About MetaShARK", tabName = "about", + icon = icon("beer")) + ), + width = menuWidth + ), # end sidebar + ## Content ## ---- + dashboardBody( + tabItems( + tabItem(tabName = "welcome", + welcomeUI(IM.welcome[1], IM = IM.welcome)), + tabItem(tabName = "fill", + fillUI(IM.fill[1], IM = IM.fill)), + tabItem(tabName = "documentation", + docUI(IM.doc[1], IM = IM.doc)), + tabItem(tabName = "about", + aboutUI(IM.about[1], IM = IM.about)) + ) + ) # end body +) # end dashboard @@ -65,23 +44,52 @@ ui <- dashboardPage(dashboardHeader(title = span(imageOutput("logo", inline = TR server <- function(input,output,session){ session$onSessionEnded(stopApp) - ## modules called + # Reactive values ---- + globalRV <- reactiveValues( + navigate = 1, + previous = "select" + ) + # the saved metadata will be saved through modules output `fill` + + ## modules called ---- # welcome welcome <- callModule(welcome, IM.welcome[1], IM = IM.welcome) # fill - fill <- callModule(fill, IM.fill[1], IM = IM.fill) - fill.emlal <- callModule(EMLAL, IM.EMLAL[1], IM = IM.EMLAL) - fill.emlal.selectDP <- callModule(selectDP, IM.EMLAL[1], IM = IM.EMLAL, DP.path = DP.path) - fill.emlal.createDP <- callModule(createDP, IM.EMLAL[1], IM = IM.EMLAL) + savevar <- callModule(fill, + IM.fill[1], + IM = IM.fill, + globalRV = globalRV) + callModule(EMLAL, + IM.EMLAL[1], + IM = IM.EMLAL, + globalRV = globalRV) + savevar <- + callModule(selectDP, + IM.EMLAL[3], + IM = IM.EMLAL, + DP.path = DP.PATH, + savevar = savevar, + globalRV = globalRV) + savevar <- + callModule(createDP, + IM.EMLAL[4], + IM = IM.EMLAL, + savevar = savevar, + globalRV = globalRV) + # doc - doc <- callModule(documentation, IM.doc[1], IM = IM.doc) + doc <- callModule(documentation, + IM.doc[1], + IM = IM.doc) - ## Common UI elements - output$logo <- renderImage({ list(src = "resources/pictures/MetaShARK_icon2.png", + ## Common UI elements ---- + output$logo <- renderImage({list(src="resources/pictures/MetaShARK_icon2.png", contentType = "image/png", width = "100px", - height = "50px") }, deleteFile = FALSE) + height = "50px") }, + deleteFile = FALSE) } ### APP LAUNCH ### shinyApp(ui, server) + diff --git a/shinyApp/modules/about/about.R b/shinyApp/modules/about/about.R index 72e817d..f874a94 100644 --- a/shinyApp/modules/about/about.R +++ b/shinyApp/modules/about/about.R @@ -1,8 +1,4 @@ -# documentation.R - -### IMPORTS ### - - +# about.R ### UI ### aboutUI <- function(id, IM){ @@ -42,6 +38,6 @@ aboutUI <- function(id, IM){ ### SERVER ### -generate <- function(input, output, session, IM){ +about <- function(input, output, session, IM){ } \ No newline at end of file diff --git a/shinyApp/modules/documentation/documentation.R b/shinyApp/modules/documentation/documentation.R index 3a93612..5584847 100644 --- a/shinyApp/modules/documentation/documentation.R +++ b/shinyApp/modules/documentation/documentation.R @@ -1,27 +1,6 @@ ### documentation.R -# Imports -library(shinyTree) -source("modules/documentation/documentation_functions.R") -source("modules/documentation/documentation_style.R") -source("utils/multiApply.R") - -# Guidelines -cat("Loading Guidelines: \n") - -cat("* Loading Doc Guideline ...\r") -docGuideline = as.list(readRDS("resources/docGuideline.RData")) -cat("* Doc Guideline successfully loaded !\n") - -cat("* Loading System Guideline ...\r") -systemGuideline = as.list(readRDS("resources/systemGuideline.RData")) -cat("* System Guideline successfully loaded !\n") - -cat("* Loading Namespaces Index ...\r") -nsIndex <- readRDS("resources/nsIndex.RData") -cat("* Namespaces Index successfully loaded !\n") - -# UI functions +### UI ### docUI <- function(id, IM){ ns <- NS(id) @@ -47,10 +26,8 @@ docUI <- function(id, IM){ ) } - - -# Server functions -documentation <- function(input, output, session, IM, tree = docGuideline, nsIndex = nsIndex){ +### SERVER ### +documentation <- function(input, output, session, IM, tree = docGuideline, ns.index = nsIndex){ # render tree output[[IM[2]]] <- renderTree(tree) @@ -81,7 +58,7 @@ documentation <- function(input, output, session, IM, tree = docGuideline, nsInd # fetch the eml-xsd content in the systemGuideLine list systemContent <- followPath(systemGuideline, systemPath) - out <- extractContent(systemContent, nsIndex) + out <- extractContent(systemContent, nsIndex = ns.index) return(out) } }) diff --git a/shinyApp/modules/documentation/documentation_functions.R b/shinyApp/modules/documentation/documentation_functions.R index cf140dd..dc4990a 100644 --- a/shinyApp/modules/documentation/documentation_functions.R +++ b/shinyApp/modules/documentation/documentation_functions.R @@ -1,7 +1,5 @@ # documentation_functions.R -# --- UI display - # extracts the targetted EML content from a list extractContent <- function(content, nsIndex){ # modules annotation is stored in 'eml-module/schema' @@ -12,7 +10,7 @@ extractContent <- function(content, nsIndex){ att <- content$`R-Attributes` att.out <- c() if(any(grepl("TYPE", names(att)))){ - att.type <- nsIndex[sapply(names(nsIndex), grepl, att["TYPE"])] + att.type <- nsIndex[sapply(names(nsIndex), grepl, att[["TYPE"]])] if(length(att.type) == 0) att.type <- "this module" att.out <- c( att.out, paste(as.character(tags$b("Cf.")), @@ -41,7 +39,7 @@ extractContent <- function(content, nsIndex){ # preprocess 'ulink' tags that require their URL attributes (R-Attributes needed) { ulinks.ind = which(grepl("ulink", attr(out, "names"))) # ulinks are always structured the same way - # browser() + # browser() out[ ulinks.ind[1:length(ulinks.ind) %% 3 == 1] ] <- paste(out[ ulinks.ind[1:length(ulinks.ind) %% 3 == 1] ], # raw text out[ ulinks.ind[1:length(ulinks.ind) %% 3 == 2] ], # URL sep = "[RECOGNIZED]") diff --git a/shinyApp/modules/documentation/documentation_style.R b/shinyApp/modules/documentation/documentation_style.R index 990ad66..56dfcf6 100644 --- a/shinyApp/modules/documentation/documentation_style.R +++ b/shinyApp/modules/documentation/documentation_style.R @@ -1,10 +1,3 @@ # documentation_style.R # Style sheet for NavTree module - - -sidebarStyle = "overflow-y: scroll; - max-height: 800px;" - -mainpanelStyle = "overflow-y: scroll; - max-height: 800px;" \ No newline at end of file diff --git a/shinyApp/modules/fill/EMLAL/EMLAL.R b/shinyApp/modules/fill/EMLAL/EMLAL.R index 8114391..398befd 100644 --- a/shinyApp/modules/fill/EMLAL/EMLAL.R +++ b/shinyApp/modules/fill/EMLAL/EMLAL.R @@ -1,16 +1,5 @@ # EMLAL.R -### IMPORTS ### -library(devtools) -library(EMLassemblyline) - -source("modules/fill/EMLAL/EMLAL_functions.R") -source("modules/fill/EMLAL/EMLAL_selectDP.R") -source("modules/fill/EMLAL/EMLAL_createDP.R") - -### RESOURCES ### -DP.path <- "dataPackagesOutput/emlAssemblyLine/" ; dir.create(DP.path, recursive = TRUE, showWarnings = FALSE) - # Derived Id Modules from IM.EMLAL by pasting the step number (https://ediorg.github.io/EMLassemblyline/articles/overview.html) ### UI ### @@ -25,79 +14,61 @@ EMLALUI <- function(id, IM){ fluidPage( style="padding-top:2.5%;", + box(width = 4, + title = "Authorship", + HTML( + "

The `EML Assembly Line` package used in this module + and its children is the intellectual property of the + Environment Data Initiative (EDI). You can find further + details on their + git repository.

+ \"EDI" + ) + ), # end authorship + box(width = 8, + title = "How to use", + HTML( + "

EMLassemblyline is a metadata builder for scientists + and data managers who need to easily create high quality + EML metadata for data publication. It emphasizes + auto-extraction of metadata, appends value added content, + and accepts user supplied inputs through template files + thereby minimizing user effort while maximizing the potential + of future data discovery and reuse. EMLassemblyline requires + no familiarity with EML, is great for managing 10-100s of + data packages, accepts all data formats, and supports complex + and fully reproducible science workflows. Furthermore, it + incorporates EML best practices, + is based on a simple file organization scheme, and is not tied to a specific data repository.

+ (preface by Colin Smith, EDI)" + ) + ), # end how-to-use box( - title = "Authorship", - HTML( - "

The `EML Assembly Line` package used in this module - and its children is the intellectual property of the - Environment Data Initiative (EDI). You can find further - details on their - git repository.

- \"EDI" - ) - ), - box( - title = "How to use", - HTML( - "

EMLassemblyline is a metadata builder for scientists - and data managers who need to easily create high quality - EML metadata for data publication. It emphasizes - auto-extraction of metadata, appends value added content, - and accepts user supplied inputs through template files - thereby minimizing user effort while maximizing the potential - of future data discovery and reuse. EMLassemblyline requires - no familiarity with EML, is great for managing 10-100s of - data packages, accepts all data formats, and supports complex - and fully reproducible science workflows. Furthermore, it - incorporates EML best practices, - is based on a simple file organization scheme, and is not tied to a specific data repository.

- (preface by Colin Smith, EDI)" - ) - ), - tabBox( title = "EML Assembly Line", - id = ns("main"), - side = "left", width = 12, - tabPanel( - value = "select-tab", - title = icon("plus-circle"), - uiOutput(ns("EMLALUI.select")) - ), - tabPanel( - value = "create-tab", - title = icon("arrow-alt-circle-right"), - uiOutput(ns("EMLALUI.create")) - ) - ) - ) -} - + width = 12, + uiOutput(ns("currentUI")) + ) # end variable UI + ) # end fluidPage +} ### SERVER ### -EMLAL <- function(input, output, session, IM){ +EMLAL <- function(input, output, session, IM, globalRV){ ns <- session$ns - # reactive values - steps = paste0(c("select","create","edit","make","publish"), "-tab") + # variable initialization + steps = paste0(c("select","create","template","edit","make","publish"), "-tab") # Output - output$EMLALUI.select <- renderUI({ selectDPUI(id = IM.EMLAL[1], - IM = IM.EMLAL, - title = steps[1], - DP.path = DP.path) - }) - output$EMLALUI.create <- renderUI({ createDPUI(id = IM.EMLAL[1], - IM = IM.EMLAL, - title = steps[2], - testArgs = "testArgs") - }) - + output$currentUI <- renderUI({ + switch(as.character(globalRV$navigate), + "1" = selectDPUI(id = IM.EMLAL[3], + IM = IM.EMLAL, + title = steps[1]), + "2" = createDPUI(id = IM.EMLAL[4], + IM = IM.EMLAL, + title = steps[2])) + }) -} - - - - +} \ No newline at end of file diff --git a/shinyApp/modules/fill/EMLAL/EMLAL_createDP.R b/shinyApp/modules/fill/EMLAL/EMLAL_createDP.R index 7a55e96..3ac016c 100644 --- a/shinyApp/modules/fill/EMLAL/EMLAL_createDP.R +++ b/shinyApp/modules/fill/EMLAL/EMLAL_createDP.R @@ -1,26 +1,145 @@ -# EMLAL_functions.R +# EMLAL_create.R -### IMPORTS ### -library("tcltk2") - -### UI OUTPUTS ### - -## 0. SELECT DATA PACKAGE -createDPUI <- function(id, title, IM, testArgs){ +## 2. CREATE DATA PACKAGE +createDPUI <- function(id, title, IM){ ns <- NS(id) return( fluidPage( - div( - p( - paste("I received:", testArgs) - ) + column(10, + h4("Data files"), + HTML("When selecting your files, you can't select + folders. You can delete file(s) from your + selection by ticking their box and clicking + the 'Remove' button.
"), + div( + shinyFilesButton(ns("add_data_files"), + "Load files", + "Select data file(s) from your dataset", + multiple = TRUE, + icon = icon("plus-circle")), + style = "display: inline-block; vertical-align: top;" + ), + actionButton(ns("remove_data_files"),"Remove", + icon = icon("minus-circle"), + style = redButtonStyle), + uiOutput(ns("data_files")) + ), # end of column 1 + column(2, + h4("Navigation"), + quitButton(ns(id), style = rightButtonStyle), + saveButton(ns(id), style = rightButtonStyle), + actionButton(ns("check"),"Dev Check", style = rightButtonStyle), + style = "text-align: center; padding: 0;" ) ) # end fluidPage ) # end return } -createDP <- function(input, output, session, IM){ +createDP <- function(input, output, session, IM, savevar, globalRV){ ns <- session$ns + # Variable initialization ---- + rv <- reactiveValues( + # to save + dp_data_files = data.frame() + # local only + ) + volumes <- c(Home = HOME, getVolumes()()) + updateFileListTrigger <- makeReactiveTrigger() + + # On arrival on screen + observeEvent(globalRV$previous, { + updateFileListTrigger$trigger() + # dev: might evolve in `switch` if needed furtherly + rv$dp_data_files <- if(globalRV$previous == "create") + data.frame() + else + savevar$emlal$createDP$dp_data_files + }) + + # Navigation buttons ---- + callModule(onQuit, IM.EMLAL[4], + # additional arguments + globalRV, savevar, + savevar$emlal$selectDP$dp_path, + savevar$emlal$selectDP$dp_name) + callModule(onSave, IM.EMLAL[4], + # additional arguments + savevar$emlal, + savevar$emlal$selectDP$dp_path, + savevar$emlal$selectDP$dp_name) + # DEV: do things by clicking a button + observeEvent(input$check,{ + browser() + }) + + # Data file upload ---- + # Add data files + shinyFileChoose(input, "add_data_files", + roots = volumes, + # defaultRoot = HOME, + session = session) + + observeEvent(input$add_data_files,{ + # validity checks + req(input$add_data_files) + + # actions + loadedFiles <- as.data.frame( + parseFilePaths(volumes, input$add_data_files) + ) + + if(identical(rv$dp_data_files, data.frame())) + rv$dp_data_files <- loadedFiles + else{ + for(filename in loadedFiles$name){ + if(!grepl("\\.",filename)) + message(filename," is a folder.") + else + rv$dp_data_files <- unique(rbind(rv$dp_data_files, + loadedFiles[loadedFiles$name == filename,]) + ) + } + } + }) + + # Remove data files + observeEvent(input$remove_data_files, { + + # validity check + req(input$select_data_files) + + # actions + rv$dp_data_files <- rv$dp_data_files[ + rv$dp_data_files$name != input$select_data_files + ,] + }) + + # Display data files + output$data_files <- renderUI({ + + updateFileListTrigger$depend() + + # variable modifications + savevar$emlal$createDP$dp_data_files <- rv$dp_data_files + + # actions + if(!identical(rv$dp_data_files, + data.frame())) + checkboxGroupInput(ns("select_data_files"), + "Select files to delete (all files here will be kept otherwise)", + choices = rv$dp_data_files$name) + }) + + output$warning_data_size <- renderText({ + if(sum(rv$dp_data_files$size) > THRESHOLD$dp_data_files) + paste("WARNING:", sum(rv$dp_data_files$size), + "are about to be duplicated for data package assembly") + else + "" + }) + + # Output ---- + return(savevar) } diff --git a/shinyApp/modules/fill/EMLAL/EMLAL_functions.R b/shinyApp/modules/fill/EMLAL/EMLAL_functions.R index d304929..5faa1cf 100644 --- a/shinyApp/modules/fill/EMLAL/EMLAL_functions.R +++ b/shinyApp/modules/fill/EMLAL/EMLAL_functions.R @@ -1,5 +1,119 @@ # EMLAL.R +## UIs for input ---- + +# quit dp edition +quitButton <- function(id, style){ + ns <- NS(id) + + actionButton(ns("quit"), "Quit", + icon = icon("sign-out-alt"), style = style) +} + +# save dp snapshot +saveButton <- function(id, style){ + ns <- NS(id) + + actionButton(ns("save"), "Save", + icon = icon("save",class="regular"), style = style) +} + + + +## Associated server functions ---- + +# on quit button +onQuit <- function(input, output, session, + globalRV, toSave, path, filename){ + ns <- session$ns + + # modal dialog for quitting data description + quitModal <- modalDialog( + title = "You are leaving data description", + "Are you sure to leave? Some of your metadata have maybe not been saved.", + footer = tagList( + modalButton("Cancel"), + actionButton(ns("save_quit_button"),"Save & Quit"), + actionButton(ns("quit_button"),"Quit",icon("times-circle"), + style = redButtonStyle) + ) + ) + + # show modal on 'quit' button clicked + observeEvent(input$quit,{ + showModal(quitModal) + }) + + # calls saveRDS method and quits + observeEvent(input$save_quit_button,{ + removeModal() + saveReactive(toSave, path, filename) + globalRV$navigate <- 1 + }) + + # quits simply + observeEvent(input$quit_button,{ + removeModal() + globalRV$navigate <- 1 + }) +} + +# on save button +# toSave is a structured list of reactiveValues (aka savevar in various modules) +onSave <- function(input, output, session, + toSave, path, filename){ + observeEvent(input$save,{ + saveReactive(toSave, path, filename) + }) +} + +# set the path and save the savevar +saveReactive <- function(toSave, path, filename){ + print(paste0(path,"/",filename,".RData")) + saveRDS(toSave, paste0(path,"/",filename,".RData")) +} + +# Initialize savevar variable +# EMLAL module specific function +# @param sublist: either NULL, "emlal", "metafin" to precise which sublist +# to initialize +initReactive <- function(sublist = NULL, savevar = NULL){ + if(!is.null(sublist) && is.null(savevar)) + stop("Attempt to initialize savevar's sublist without savevar.") + if(!(is.null(sublist) || sublist %in% c("emlal","metafin"))) + stop("Attempt to initialize savevar with inconsistent arguments") + + # re-creates a whole savevar + if(is.null(sublist)) + savevar <- reactiveValues() + + # emlal reactivelist management + if(is.null(sublist) || sublist == "emlal") + savevar$emlal <- list( + step = 0, + selectDP = list( + dp_name = NULL, + dp_path = NULL + ), + createDP = list( + dp_data_files = NULL + ) + ) + + # metafin reactivelist management + if(is.null(sublist) || sublist == "metafin") + savevar$metafin <- list() + + # differential returns + return(if(is.null(sublist)) + savevar + else + switch(sublist, + emlal = savevar$emlal, + metafin = savevar$metafin) + ) +} + # choose directory function chooseDirectory = function(caption = 'Select data directory', default = "~/") { if (exists('utils::choose.dir')) { @@ -27,8 +141,27 @@ createDPFolder <- function(DP.location, DP.name, data.location){ ) } +# EAL Templates ---- + +# Needed vars +# - path +# - data.path +# - columns from table +# * site +# * lat +# * long +# * taxa +# - taxa authority (taxonomyCleanr::view_taxa_authorities()) +# - taxa name type in "scientific","common","both" +# ! All taxa authorities do not support all name type + + + +# Misc ---- + # R to JS boolean r2js.boolean <- function(condition){ if(is.character(condition)) condition = as.logical(condition) return(tolower(as.character(condition))) -} \ No newline at end of file +} + diff --git a/shinyApp/modules/fill/EMLAL/EMLAL_selectDP.R b/shinyApp/modules/fill/EMLAL/EMLAL_selectDP.R index 0b00439..4723c51 100644 --- a/shinyApp/modules/fill/EMLAL/EMLAL_selectDP.R +++ b/shinyApp/modules/fill/EMLAL/EMLAL_selectDP.R @@ -1,145 +1,305 @@ # EMLAL_functions.R -### IMPORTS ### -library("tcltk2") - ### UI ### -selectDPUI <- function(id, title, width=12, IM, DP.path){ +selectDPUI <- function(id, title, width=12, IM){ ns <- NS(id) - # tmp - if(length(list.files(DP.path))==0) - DP.list <- "Sorry, yet no data package has been saved in this location" - else - DP.list <- list.files(DP.path) - + # UI output return( - fluidPage( - title = "1. Organize data packages", + fluidPage( + title = "Organize data packages", + # Data package location + with_tippy( fluidRow( - column(ceiling(width/2), - h4("Edit existing data package", - style="text-align:center"), - DP.list), - column(floor(width/2), - h4("Create new data package", - style="text-align:center"), - # DP input - div(id="dp.input", - style="border: 1px solid lightgrey; - margin: 5px; - padding: 5px; - width: 100%;", - # DP name - textInput(ns("dp.name"), - "Enter a data package name:", - placeholder=paste0("eml.datapackage.", - Sys.Date())), - # DP location - tags$b("Select a data package directory output:"), - actionButton(ns("dp.dir.browse"), "Browse ..."), - div(id = ns("dp.dir.choose"), - tags$b("Currently selected folder:"), - br(), - textOutput(ns("dp.dir.choose")), - style = "white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden;" - ) - ), - # Data input - div(id="data.input", - style="border: 1px solid lightgrey; - margin: 5px; - padding: 5px; - width: 100%;", - # Data files - fileInput(ns("data.files.browse"), - "Select your data files (make sure they are in the same directory)", - TRUE), - div(tags$b("Currently selected data files:"), - tableOutput(ns("data.files.choose")), - style = "white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden;" - ), - # License choice - selectInput("data.license", "Select a license of the dataset intellectual rights", - c("CC BY","CC0")) - ), - # DP creation - conditionalPanel( - condition = "output.toggle_create_button", - actionButton(ns("create-button"),"Create") - ), - # Warnings - conditionalPanel( - condition = "output.warnings_duplicata", - div(style="color:red;", - span("WARNING: such a data package already exists (same name, same location).",br(), - "Clicking 'Create' will replace all its content. (located in: ", - textOutput(ns("dp.dir.choose"), inline = TRUE), textOutput(ns("dp.name"), inline = TRUE),")") - ) - ) - ) # end column2 - ) # end fluidRow - ) # end fluidPage - ) # end return + column(3, + # actionButton(ns("dp_location"), "Choose directory") + shinyDirButton(ns("dp_location"),"Choose directory", + "DP save location", icon = icon("folder-open") + ) + ), + column(9, + textOutput(ns("dp_location")) + ), + style=paste(inputStyle, "text-overflow: ellipsis;") + ), + "This is the location where your data packages will be + saved. A folder will be created, respectively named + after your input." + ), + fluidRow( + # Use existing DP + column(ceiling(width/2), + h4("Edit existing data package", + style="text-align:center"), + uiOutput(ns("dp_list")), + actionButton(ns("dp_load"), "Load"), + actionButton(ns("dp_delete"),"Delete", + style = redButtonStyle), + actionButton(ns("check"),"Dev Check", style = rightButtonStyle) + ), + # Create DP + column(floor(width/2), + h4("Create new data package", + style="text-align:center"), + + # Data package title + div(id = "a", + textInput(ns("dp_name"), "Data package name", + placeholder = paste0(Sys.Date(),"_project")), + textOutput(ns("warning_dp_name")), + tippy_this( + div(id = "license-help", + selectInput(ns("license"), + "Select an Intellectual Rights License:", + c("CCBY","CC0"), + multiple = FALSE) + ), + "license-help", + "CC0: public domain. + CC-BY-4.0: open source authorship. + For more details, visit Creative Commons", + placement = "left", + delay = 1000, + heighy = "200px" + ) + ), + # DP creation + actionButton(ns("dp_create"),"Create") + ) # end column2 + + ) # end fluidRow + + ) # end fluidPage + + ) # end return + } -selectDP <- function(input, output, session, IM, DP.path){ - outvar = reactiveValues() +selectDP <- function(input, output, session, IM, DP.path, savevar, globalRV){ - # select DP name - outvar$dp.name <- reactive({input$dp.name}) - output$dp.name <- renderText({ outvar$dp.name }) + # variable initialization ---- + ns <- session$ns + parent_ns = NS(IM.EMLAL[1]) - # select DP directory - output$dp.dir.choose <- renderText({ DP.path }) + # DEV: do things by clicking a button + observeEvent(input$check,{ + browser() + }) + + # local values - to save will communicate with other modules + rv <- reactiveValues( + # to save + # Default DP location + dp_location = DP.path, + dp_name = NULL, + # local only + dp_list = NULL, + dp_license = NULL, + warning_dp_name = NULL + ) + # volumes <- c(Home = HOME, base = getVolumes()()) + + # DP location ---- - observeEvent(input$dp.dir.browse, { - outvar$dp.dir.choose <- chooseDirectory() - if(is.na(outvar$dp.dir.choose)) - outvar$dp.dir.choose <- renderText({ DP.path }) - output$dp.dir.choose <- outvar$dp.dir.choose + # chose DP location + # shinyDirChoose(input, ns("dp_location"), + # roots = volumes, + # # defaultRoot = HOME, + # session = session) + + # update reactive value + observeEvent(input$dp_location, { + # validity checks + req(input$dp_location) + + # variable initialization + save <- rv$dp_location + + # actions + rv$dp_location <- input$dp_location + # rv$dp_location <- parseDirPath(volumes, input$dp_location) + if(is.na(rv$dp_location)) + rv$dp_location <- save }) - # select Data files - outvar$data.files.choose <- reactive({ - ifelse(is.null(input$data.files.browse), - return(data.frame(NULL)), - return(input$data.files.browse)) - + # Render selected DP location + output$dp_location <- renderText({ + rv$dp_location + }) + + # DP load ---- + # fetch list of DP at selected location + observeEvent(rv$dp_location, { + dpList <- list.files(rv$dp_location, pattern = "_emldp$") + if(length(dpList) != 0) rv$dp_list <- sub("_emldp","",dpList) + else rv$dp_list <- NULL }) - output$data.files.choose <- renderTable({ - return( outvar$data.files.choose() ) + # Render list of DP at selected location + output$dp_list <- renderUI({ + if(!is.null(rv$dp_list)) + radioButtons(ns("dp_list"), + NULL, + choiceNames = c("None selected",rv$dp_list), + choiceValues = c("", rv$dp_list) + ) + else{ + disable("dp_load") + disable("dp_delete") + "No EML data package was found at this location." + } + + }) + + # toggle Load and Delete buttons + observeEvent(input$dp_list, { + if(input$dp_list != ""){ + enable("dp_load") + enable("dp_delete") + } + else{ + disable("dp_load") + disable("dp_delete") + } + }) + + # DP create ---- + + # name inout + observeEvent(input$dp_name, { + + # check for name validity + rv$warning_dp_name <- c( + # check for long enough name + if(nchar(input$dp_name) < 3) + "Please type a name with at least 3 characters." + else + NULL, + # check for valid characters name + if(!grepl("^[[:alnum:]_-]+$",input$dp_name) + && nzchar(input$dp_name)) + "Only authorized characters are alphanumeric, '_' (underscore) and '-' (hyphen)." + else + NULL, + # check for double name + if(!is.null(rv$dp_list) + && input$dp_name %in% rv$dp_list + && input$dp_name != "") + paste0(input$dp_name, " exists already at this location !") + else + NULL + ) + }) - ## Toggles - # reveal create-button if - # - - output$toggle_create_button <- renderText({ - r2js.boolean(outvar$dp.name != '' - || !grepl("^[:alnum:_\\.-]+$", outvar$dp.name) - || !is.null(outvar$data.files.choose) - ) + # warings for input name - toggle Create button + output$warning_dp_name <- renderText({ + if(is.null(rv$warning_dp_name)){ + rv$dp_name <- input$dp_name + enable("dp_create") + return(NULL) + } + else{ + disable("dp_create") + return(paste(rv$warning_dp_name, collapse = "\n")) + } }) - # reveal warning if: - # - not such a directory exists BUT there is at least a directory name given - output$warnings_duplicata <- renderText({ - r2js.boolean(dir.exists(paste0(outvar$dp.dir.choose, input$dp.name)) && !is.null(input$dp.name)) + # license choice + rv$dp_license <- reactive({ input$license }) + + # DP management - on clicks---- + + # Create DP + observeEvent(input$dp_create, { + req(input$dp_name) + + # variable operation - legibility purpose + dp <- rv$dp_name + path <- paste0(rv$dp_location,dp,"_emldp") + license <- rv$dp_license() + + # save in empty dedicated variable + savevar$emlal <- initReactive("emlal", savevar) + savevar$emlal$selectDP$dp_name <- dp + savevar$emlal$selectDP$dp_path <- path + + # verbose + message("Creating:",path,"\n", sep = "") + + # actions + dir.create(path) + saveReactive(savevar, path, dp) # initial "commit" + template_directories( + path, + dp + ) + template_core_metadata( + path, + license + ) + + rv$dp_list <- c(rv$dp_list,dp) + globalRV$navigate <- globalRV$navigate+1 + globalRV$previous <- "create" + }) + + # Load DP + observeEvent(input$dp_load, { + req(input$dp_list) + + # variable operation - legibility purpose + dp <- input$dp_list + path <- paste0(rv$dp_location,dp,"_emldp") + + # verbose + message("Loading:",path,"\n", sep = "") # to replace by loading DP + + # actions + savevar$emlal <- initReactive("emlal", savevar) + savevar$emlal <- readRDS(paste0(path,"/",dp,".RData"))$emlal + globalRV$navigate <- savevar$emlal$step # resume where max reached + globalRV$previous <- "load" }) - outputOptions(output, "warnings_duplicata", suspendWhenHidden = FALSE) - - # on click on create-button - observeEvent(input[["create-button"]], { - createDPFolder(DP.location = outvar$dp.dir.choose(), - DP.name = input$dp.name, - data.location = outvar$data.dir.choose() ) - showTab("main", "create-tab", select = TRUE) + + # Delete DP + observeEvent(input$dp_delete, { + req(input$dp_list) + + # variable operation - legibility purpose + dp <- input$dp_list + + # actions + showModal( + modalDialog( + title = "Delete data package?", + paste("Are you sure to delete", dp, "?"), + footer = tagList( + modalButton("No"), + actionButton( + ns("delete_confirm"),"Yes", + style = redButtonStyle + ) + ) # end footer + ) # end modalDialog + ) # end showModal }) + # If deletion is confirmed + observeEvent(input$delete_confirm,{ + # variable operation - legibility purpose + dp <- input$dp_list + path <- paste0(rv$dp_location,dp,"_emldp") + + # verbose + message("Deleting:",path,"\n", sep = "") # to replace by deleting DP + + # actions + unlink(path, recursive = TRUE) + rv$dp_list <- rv$dp_list[rv$dp_list != dp] + removeModal() + }) + # Output ---- + return(savevar) } \ No newline at end of file diff --git a/shinyApp/modules/fill/EMLAL/EMLAL_templateDP.R b/shinyApp/modules/fill/EMLAL/EMLAL_templateDP.R new file mode 100644 index 0000000..7919240 --- /dev/null +++ b/shinyApp/modules/fill/EMLAL/EMLAL_templateDP.R @@ -0,0 +1,5 @@ +# EMLAL_templateDP.R + +## 3. Create DP template + +# \ No newline at end of file diff --git a/shinyApp/modules/fill/fill.R b/shinyApp/modules/fill/fill.R index 8d9588a..6d7b56a 100644 --- a/shinyApp/modules/fill/fill.R +++ b/shinyApp/modules/fill/fill.R @@ -1,14 +1,5 @@ # fill.R -### IMPORTS ### -library(EML) - -source("modules/fill/EMLAL/EMLAL.R") - -### RESOURCES ### -IM.EMLAL = c("EMLALModule","EML Assembly Line", - "select","create","edit","make","publish") - ### UI ### fillUI <- function(id, IM){ ns <- NS(id) @@ -23,6 +14,18 @@ fillUI <- function(id, IM){ ### SERVER ### -fill <- function(input, output, session, IM){ +fill <- function(input, output, session, IM, globalRV){ + + # variable initialization ---- + # save variable + savevar <- initReactive() + + observeEvent(globalRV$navigate,{ + savevar$emlal$step <- max( + globalRV$navigate, + savevar$emlal$step + ) + }) + return(savevar) } \ No newline at end of file diff --git a/shinyApp/modules/fill/input_templates.R b/shinyApp/modules/fill/input_templates.R new file mode 100644 index 0000000..e69de29 diff --git a/shinyApp/modules/fill/open/fillOpen.R b/shinyApp/modules/fill/open/fillOpen.R deleted file mode 100644 index d733d22..0000000 --- a/shinyApp/modules/fill/open/fillOpen.R +++ /dev/null @@ -1,13 +0,0 @@ -# fillOpen.R - -fillOpenUI <- function(id, IM){ - -} - - - -fillOpen <- function(input, output, session, IM){ - ns <- session$ns - - box("You did it !") -} \ No newline at end of file diff --git a/shinyApp/modules/fill/welcome/fillWelcome.R b/shinyApp/modules/fill/welcome/fillWelcome.R deleted file mode 100644 index f55ec65..0000000 --- a/shinyApp/modules/fill/welcome/fillWelcome.R +++ /dev/null @@ -1,94 +0,0 @@ -# fillWelcome.R - -### IMPORTS ### -# source("modules/fill/welcome/fillWelcome_functions.R") - - - -### UI ### -fillWelcomeUI <- function(id, IM){ - ns <- NS(id) - - fluidPage( - fluidRow( - box(textInput(ns("newProjectName"),"Name your project:"), - div(id=ns("npButton"),actionButton(inputId = ns("newProjectButton"), - label = "Create project", - icon = icon("plus-square"))), - width = 12, title = "New project") - ), - fluidRow( - box(uiOutput(ns("existingProjects")), - width = 12, title = "Open existing project") - ) - ) -} - - - -fillWelcome <- function(input, output, session, IM){ - ns <- session$ns - - # observers - observeEvent(input$newProjectName, { - if(input$newProjectName == "") - shinyjs::hide(id = "npButton", anim = TRUE, time = 0.25) - else - shinyjs::show(id = "npButton", anim = TRUE, time = 0.25) - }) - - output$existingProjects <- renderUI({ - ls.cache <- gsub(".cache/","",list.dirs(".cache/")) - ls.cache <- ls.cache[ls.cache != ""] - if(length(ls.cache) > 0) - return( - div( - selectInput(ns("openProjectName"), - "Select the existing project's name", - choices = ls.cache), - actionButton(inputId = ns("openProjectButton"), - label = "Open project", - icon = icon("sign-in-alt")) - ) - ) - else - return("You don't have any local project saved yet.") - }) -} - -# UI switch function -fwDisplay <- function(input, output, session){ - - default <- reactiveValues(clicked = FALSE) - - observeEvent({input$newProjectButton; input$openProjectButton}, { - default$clicked <- TRUE - }) - - # display switch - ui_rct <- eventReactive({input$newProjectButton; input$openProjectButton}, { - print("click !") - "open" - }) - - np_rct <- eventReactive(input$newProjectButton, { - input$newProjectName - }) - - op_rct <- eventReactive(input$openProjectButton, { - input$openProjectName - }) - - prct <- reactive({ - c(np_rct(), op_rct())[which(c(nchar(np_rct()), nchar(op_rct())) > 0)] - }) - - # output build - return(list(ui = { - ifelse(default$clicked, ui_rct(), "welcome") - })) - - - # return(list(ui_rct, prct)) - -} \ No newline at end of file diff --git a/shinyApp/modules/generate/generate.R b/shinyApp/modules/generate/generate.R deleted file mode 100644 index e92caa0..0000000 --- a/shinyApp/modules/generate/generate.R +++ /dev/null @@ -1,21 +0,0 @@ -# documentation.R - -### IMPORTS ### - - - -### UI ### -generate.UI <- function(id, IM){ - ns <- NS(id) - - fluidPage( - tags$p("How could I render this shit?") - ) -} - - - -### SERVER ### -generate <- function(input, output, session, IM){ - -} \ No newline at end of file diff --git a/shinyApp/modules/welcome/welcome.R b/shinyApp/modules/welcome/welcome.R index 817b715..540038c 100644 --- a/shinyApp/modules/welcome/welcome.R +++ b/shinyApp/modules/welcome/welcome.R @@ -1,7 +1,5 @@ # fill.R -### IMPORTS ### - ### UI ### welcomeUI <- function(id, IM){ ns <- NS(id) @@ -31,8 +29,6 @@ welcomeUI <- function(id, IM){ } - - ### SERVER ### welcome <- function(input, output, session, IM){ ns <- session$ns @@ -42,7 +38,4 @@ welcome <- function(input, output, session, IM){ width = "240px", height = "120px") }, deleteFile = FALSE) -} - - - +} \ No newline at end of file diff --git a/shinyApp/utils/reactiveTrigger.R b/shinyApp/utils/reactiveTrigger.R new file mode 100644 index 0000000..7bfc8da --- /dev/null +++ b/shinyApp/utils/reactiveTrigger.R @@ -0,0 +1,19 @@ +# Usage: +# create an instance like +# `myTrigger <- makeReactiveTrigger()` +# in the reactive chunk to be triggered: +# `myTrigger$depend()` +# and in the chunk causing the trigger: +# `myTrigger$trigger()` +makeReactiveTrigger <- function() { + rv <- reactiveValues(a = 0) + list( + depend = function() { + rv$a + invisible() + }, + trigger = function() { + rv$a <- isolate(rv$a + 1) + } + ) +} diff --git a/templateApp/templateApp.R b/templateApp/templateApp.R deleted file mode 100644 index 943aad1..0000000 --- a/templateApp/templateApp.R +++ /dev/null @@ -1,84 +0,0 @@ -### This script is for development purposes only. It shall not -### be called in other part of the EML UI ShinyApp (current -### directory). - -### Lexica -# * fieldName: user-friendly name for the filled information -# (e.g. 'fieldName' for the xml tag name) -# * xmlElement: technical name for the filled information -# (= xml tag name) -# * - -library(shiny) - -### functions ### - -# display a row and shows its memorized value on the right -simpleInputRow <- function(fieldName, - xmlTag, - placeholder = NULL){ - splitLayout( - textInput(inputId = xmlTag, - paste(fieldName," (",xmlTag,")"), - placeholder = placeholder), - h4(textOutput(xmlTag)) - ) - -} - -####### UI ####### - -xmlElements = c("gentleAndComprehensibleWord_1", - "gentleAndComprehensibleWord_2") -xmlAttributes = c("technicalId_1", - "technicalId_2") -placeholders = paste("e.g.", - c("example_1", - "example_2")) - -if(length(xmlElements) != length(xmlAttributes) - || length(placeholders) != length(xmlAttributes) - || length(xmlElements) != length(placeholders)) - stop("[Dev] xmlElements, xmlAttributes and placeholders length differ !") - -ui <- fluidPage( - splitLayout( - h2("Enter information"), - h2("Gathered information") - ), - - lapply(1:length(xmlElements), - function(i){ - simpleInputRow(xmlElements[i], - xmlAttributes[i], - placeholders[i]) - } - ), - actionButton(style="position:absolute;left:1em;bottom:1em;", - "main_menu", "Main menu"), - actionButton(style = "position:absolute;right:1em;bottom:1em;", - "proceed", "Proceed") - - - -) - -##### Server ##### - -server <- function(input, - output){ - - # verbose function - lapply(1:length(xmlElements), - function(i){ - attribute <- xmlAttributes[i] - output[[attribute]] <- reactive({ - input[[attribute]] - }) - }) - -} - -#### LaunchApp #### - -shinyApp(ui, server) \ No newline at end of file diff --git a/templateApp/templateModule.R b/templateApp/templateModule.R deleted file mode 100644 index 45e95d8..0000000 --- a/templateApp/templateModule.R +++ /dev/null @@ -1,41 +0,0 @@ -### templateShinyModule.R - -# this document is not to be run - -# snake_case terms are to be replaced with the wanted terms - -ui_function <- function(id, arguments_){ - # necessary namespace - ns = NS(id) - - # UI elements and their $arguments_ - # ui_element(ns(args), arguments_) - - # namespaced arguments will be able to react to server functions - # who are called (cf. callModule) with the correct id -} - -server_function <- function(input, output,session, arguments_){ - # anaything a server function would do without mentioning output - # var - - # server_function is to be called in the main script using the - # callModule() function with these arguments - # - name of the server_function - # - corresponding ui_element id - # - arguments of the server_function - # the output var is built in the main script -} - -### main.R -library(shiny) - -ui <- ui_layout( - ui_function("id_") -) - -server <- function(input, output, session){ - output <- callModule(server_function, "id_", arguments_) -} - -shinyApp(ui,server) \ No newline at end of file