[MSF-OCBA] Hide greyed columns, "Fill with zeros", plugin "app" mode#4
[MSF-OCBA] Hide greyed columns, "Fill with zeros", plugin "app" mode#4adrianq wants to merge 30 commits into
Conversation
…2p9q2 Hide column if all the cells are marked as grey fields
Add button "fill with zeros"
Introduces a new plugin mode so hosts can embed the whole app as a plugin (not just legacy custom forms) and toggle visibility of selected UI via host-passed props (hideDataSetSelector, hideTabSectionSelector, hideClearSelectionsButton, hideFilterField). - main.jsx: plugin entry dispatching on `mode` to either the original LegacyCustomFormPlugin (default) or the new AppPlugin - app-plugin.jsx: mounts AppWrapper inside PluginOptionsContext.Provider - shared/plugin-options: context + hook for consumers - Consumers gate rendering on the corresponding flag index.jsx (LegacyCustomFormPlugin) is left pristine for upstream parity.
## [102.0.3](dhis2/aggregate-data-entry-app@v102.0.2...v102.0.3) (2026-05-05) ### Bug Fixes * show delete limits button [DHIS2-19517] ([dhis2#552](dhis2#552)) ([8782429](dhis2@8782429))
## [102.0.4](dhis2/aggregate-data-entry-app@v102.0.3...v102.0.4) (2026-05-07) ### Bug Fixes * useHighlightedFieldStore coc logic [DHIS2-20741] ([5635287](dhis2@5635287))
## [102.0.5](dhis2/aggregate-data-entry-app@v102.0.4...v102.0.5) (2026-05-13) ### Bug Fixes * use gregorian calendar for iso to handle chrome bug ([dhis2#557](dhis2#557)) ([2de0805](dhis2@2de0805))
## [102.0.6](dhis2/aggregate-data-entry-app@v102.0.5...v102.0.6) (2026-05-13) ### Bug Fixes * dedupe dhis2-ui ([dhis2#558](dhis2#558)) ([dda5851](dhis2@dda5851))
|
https://app.clickup.com/t/869cc53p4?comment=90120217168958
The latest stable 102.0.6 has some additional fixes ("use gregorian calendar for iso to handle chrome bug" + "dedupe dhis2-ui"), let's always go to latest stable unless some specific problem is detected.
|
…ptions - Hide periods not listed in dataSet.dataInputPeriods (when the list is non-empty) - Hide periods where any category in the categoryCombo has no selectable option for the selected orgUnit and period date range
Period selector filteringThe period selector now filters out periods that would result in a blocked form:
Both filters are applied in sequence in the period dropdown — no changes to any other part of the app. |
When a dataset is selected, only show org units assigned to it (plus their parent chain) in the tree selector. Text search is intersected with the dataset filter when both are active.
|
Filter org unit tree by dataset-assigned org units When a dataset is selected, the org unit selector now only shows org units assigned to that dataset, plus their full parent chain (so the tree remains navigable from the root). Previously, all org units were shown regardless of dataset assignment.
|
Exposes the dataset org unit filtering as an opt-in plugin option. When set, the org unit tree only shows org units assigned to the selected dataset (plus their parent chain).

Closes https://app.clickup.com/t/869chqpuc
Summary
OCBA customizations on top of the latest stable.
Bundles three changes previously merged via internal PRs #2 and #3, plus additional refinements and a new plugin mode that lets a host app embed this one as a plugin with configurable UI:
0. Respects greyed fields, closed org units, and locked periods.modeprop.mode: "custom-form"(default) behaves exactly as before;mode: "app"renders the entire Data Entry app as a plugin, wrapped in a newPluginOptionsContextso the host can pass flags to hide specific UI:hideDataSetSelectorhideTabSectionSelectorhideClearSelectionsButtonhideFilterFieldAlso includes:
.nvmrcpinning Node 20UPSTREAM-VERSION-ocba-1Test plan
0; greyed cells and non-numeric data elements are left untouched.yarn testpasses (new tests undercategory-combo-table-body/andsection-form/).plugin.htmlwithout props — falls through to legacy custom-forms flow (non-breaking default).plugin.htmlwithmode=appfrom a host app; confirm app mounts and eachhide*flag hides the corresponding UI (data set selector, section tabs, clear selections button, filter field).