- The template has been created mainly through the removal of functionality from
Wallace
and the addition of basic functionality to demonstrate how modules can be used. - These are the key features which have been retained:
- Automatic loading of modules
- Saving and loading of the current app state
- Creating Rmarkdown files for reproducing the workflow outside of the application
- Logging errors
- These changes have been made:
common
- the data structure passed between modules - has been changed from alist()
containingspp <- reactiveValues()
to anR6::R6Class()
.- Due to objects inside
common
not being inherently reactive, event triggers have been added using{gargoyle}
- A Code tab has been added to the Visualization panel to allow the code for each module and the function that each module calls to be viewed.
- Unit tests for each module have been created using
{shinytest2}
in addition to unit tests for the function that the module calls. Added a new functionRemoved in 0.2.2 userun_module()
which can be used to run a single module.run_<app name>()
orload_file
- Added a new function
create_template()
which can be used to create a skeleton app. - Added a Dockerfile which can be used to run the app on a shiny-server.
- Added
show_loading_modal()
which uses{shinybusy}
to display a modal whilst slow functions are running.
- Added
save_and_load()
to automate adding the lines to modules which facilitate saving and loading of input values. - Added an introduction using
{rintrojs}
which is only shown to users on their first visit.
- Moved mapping, introduction, code, save and load functionality out of server into
core_
modules. - Passed
parent_session
to the modules enabling switching to the results, map and table tab from within modules and addedshow_table()
,show_results()
andshow_table()
to simplify code. - Added
rep_renv
module to enable capturing dependencies.
- Added ability to run functions asynchronously using
shiny::ExtendedTask()
. - Modules that do not produce results now have a placeholder informing the user.
- Updated
writeLog()
to use icons for different events. - Updated
save_and_load()
to ignore manually added lines and fix indenting. - Added
metadata()
to semi-automate adding code for reproducibility. - Module function file names now take the form of
<identifier>_f.R
to prevent confusion between the function and module file. - Objects are all passed to
printVecAsis()
when generating the Rmarkdown, removing the need to manually wrap strings in the.Rmd
files. - Use
{shinyAce}
to display formatted code incore_code
module.
- The
select_query
andselect_async
modules in the demonstration have been re-written to use a different API.
- Removed
run_module()
as it was not maintainable. - Moved all packages to Suggests unless they are required for development of new applications.
- Added
asyncLog()
to improve logging from inside async functions. - Updated
run_<app name>()
to take a load file as an argument which is loaded automatically. - Creating
load_file
containing the path to a save file will attempt to load it on app start up. - Made
create_template()
,metadata()
andsave_and_load()
more robust.