Releases: MMVverse/MMVshiny
Release list
MMVshiny 1.2.2
Performance
GetType()no longer re-derives the same lookup dozens of times per compound during file
upload:InitState()computes each parameter's type once and threads it intoNAVal()(now
takes an optionaltype =to skip its own internalGetType()call).GetType()/GetSource()now use an indexedon = "ID"lookup instead of a full-table scan of
spec.GetGuiLabel()/GetReportLabel()batch-join all requestedidsin one call instead of scanning
speconce per id — this turned out to matter more than theGetType()fix above, since
SetSCRawData()callsGetGuiLabel()once per row of the raw Science Cloud upload file, not
once per spec parameter.CalculateSCInputs()batch-looks-upSCFILTER/SCVALUE/TYPEfor all ids once instead of
scanningstate$specper id inside its loop.
Measured against real uploads through the running MMVFree/MMVSola apps (chromote-driven browser
against a real Shiny reactive session, not a synthetic benchmark): total upload time 4.74s → 3.05s
for MMVFree (28-param spec, 1.55x), 16.1s → 11.8s for MMVSola (166-param spec, 1.37x).
No API changes other than the new optional NAVal(..., type =) argument (additive, backwards
compatible).
Closes #8.
MMVshiny 1.2.1
Documentation
- Documented the rationale behind the
count<ID>echo-avoidance mechanism (GenerateJavaScriptEventHandlers/GenerateScriptCreatingObservers) in the vignette and in@detailson both functions: a server-sideupdate*Input()call and a real user edit both surface as the sameinput$IDchange, socount<ID>triggers on the input's own native browser event instead, which a server push never dispatches. - Documented the one real limitation of this mechanism: it does not work on a selectize-enhanced
<select>, since selectize's own client-side value-sync path re-dispatches the same nativechangeevent a real pick does - this is whyCreateUIInput()defaultsselectizetoFALSE, now explained in its own@details. - Cross-referenced issue #3 (event delegation for dynamically-created inputs, e.g. DT-table-embedded ones) from the vignette, since it's closely related.
Prompted by MedicinesForMalariaVenture/MMVFree#63/#66, where this exact pattern was ported to replace a fragile flag-based echo-suppression mechanism that had caused two separate bugs.
Closes #6.
MMVshiny 1.2.0
What's new
- Added
checkbox inputTYPE: renders ascheckboxInput(), wired as a reactive, and supported throughoutInitState(),Reset(),Get(),ValidateValue(),CreateUIInput(),GenerateJavaScriptEventHandlers(), andGenerateScriptCreatingObservers(). - Added
UpdateCheckboxInput(): mirrors the existingUpdateSelectInput()pattern and handlesMockShinySessioncorrectly in tests. - Added
DemoApp(): runs the bundled demo app frominst/extdata/MMVshinyDemo.zip.
Fixes and housekeeping
- Declared missing
Imports:magrittr,R.utils,shinyjs,tibble,stats. - Added
@importFromfor all Shiny UI/update functions,%>%,stats::na.omit,data.table :=/.SD, andshinyjs::js. - Added
utils::globalVariables()for data.table NSE column names. - Fixed
@paramdocs forInitState,GetValidationNote,ValidateValue,GetGuiLabel,GetReportLabel,GenerateScriptRenderingIcons,GenerateScriptCreatingReactives,UpdateSelectInput. - Updated DESCRIPTION Title; added
build.shandpull_request_template.md. R CMD checknow passes with Status: OK (zero errors, warnings, or notes).
Closes #2.
Updated GUI elements to use CSS classes
This is a minor release doing some GUI element improvements for input fields - attaching CSS classes to inputs and status icons, so that they can be controlled in Web-apps.
Use lighter readxl package to prevent java errors during loading of spec files
1.1.1 Use readxl instead of xlsx package for readiing the parameter spec
New input types: select input, action button input
Added support for two new input types:
- select input: behaves like radio input but uses a select graphical widget
- action button input: allows to perform an action defined in column ACTIONEXPR of the specification .xlsx file.
MMVshiny 1.0.0
First public release of MMVshiny package. MMVshiny is a package containing functions handling reactive inputs and parameter specification in Shiny apps.