Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
0d606d8
feat: new classifications and legend improvements
BRaimbault Mar 20, 2026
ea4e798
chore: address sonarqube issue
BRaimbault Mar 23, 2026
ecdea91
fix: fix in thematicLoader legend
BRaimbault Mar 23, 2026
8e1e88b
fix: stop appending range to legend if already majority of names
BRaimbault Mar 23, 2026
9a4c911
chore: fix sonarqube issues
BRaimbault Mar 23, 2026
3504265
chore: fix sonarqube issue
BRaimbault Mar 23, 2026
3823da2
chore: fix sonarqube issue
BRaimbault Mar 23, 2026
4881f34
Merge branch 'master' into feat/DHIS2-21142
BRaimbault Apr 7, 2026
67f511d
fix: radio button issue
BRaimbault Apr 7, 2026
f232b2d
fix: multiple improvements
BRaimbault Apr 10, 2026
87101a2
fix: multiple clean-ups
BRaimbault Apr 13, 2026
106b7c1
fix: sonarqube issue
BRaimbault Apr 13, 2026
a156443
fix: sonarqube issue
BRaimbault Apr 13, 2026
adaaede
feat: formatting for geojson layers
BRaimbault Apr 13, 2026
5be7989
fix: sonarqube issue
BRaimbault Apr 13, 2026
9614f20
feat: implement missig event coords handling
BRaimbault Apr 13, 2026
cf9c165
feat: small improvement to legend
BRaimbault Apr 16, 2026
2eb96e9
feat: layer toggling in plugin
BRaimbault Apr 16, 2026
82e12f0
fix: save layer visbility status
BRaimbault Apr 17, 2026
ab6fcfd
fix: save basemap opacity and id when hidden
BRaimbault Apr 17, 2026
60379d5
fix: data table display numbers with option set
BRaimbault Apr 17, 2026
ec4286a
feat: count org units without geometries
BRaimbault Apr 17, 2026
f7dc259
feat: add orgunits with missing coords to data table
BRaimbault Apr 17, 2026
27d4a24
feat: complete information in data table
BRaimbault Apr 17, 2026
b3629a1
feat: legendDecimalPlaces
BRaimbault Apr 20, 2026
a33afac
feat: isolate single value option
BRaimbault Apr 21, 2026
7c984fe
feat: more classification options
BRaimbault Apr 21, 2026
9d7e6c9
fix: bubble legend improvements
BRaimbault Apr 21, 2026
9039317
feat: finalize implementation
BRaimbault Apr 21, 2026
a1e00f2
Merge branch 'master' into feat/DHIS2-21142
BRaimbault Apr 22, 2026
466ab44
fix: address sonarqube issues
BRaimbault Apr 22, 2026
6bf6ffb
fix: address sonarqube issues
BRaimbault Apr 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion cypress/integration/dataTable.cy.js
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ describe('data table', () => {
// check number of columns
cy.getByDataTest('bottom-panel')
.findByDataTest('dhis2-uicore-datatablecellhead')
.should('have.length', 10)
.should('have.length', 11)

cy.getByDataTest('bottom-panel')
.findByDataTest('dhis2-uicore-datatablecellhead')
Expand Down
114 changes: 83 additions & 31 deletions i18n/en.pot
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"POT-Creation-Date: 2026-03-12T18:11:56.380Z\n"
"PO-Revision-Date: 2026-03-12T18:11:56.380Z\n"
"POT-Creation-Date: 2026-04-22T17:25:30.092Z\n"
"PO-Revision-Date: 2026-04-22T17:25:30.092Z\n"

msgid "2020"
msgstr "2020"
Expand All @@ -32,24 +32,39 @@ msgstr "This app could not retrieve required data."
msgid "Network error"
msgstr "Network error"

msgid "Auto"
msgstr "Auto"

msgid "Classification"
msgstr "Classification"

msgid "Classes"
msgstr "Classes"

msgid "Legend set"
msgstr "Legend set"
msgid "Decimal places"
msgstr "Decimal places"

msgid "Isolated class"
msgstr "Isolated class"

msgid "Min"
msgstr "Min"

msgid "Max"
msgstr "Max"

msgid "Color"
msgstr "Color"

msgid "Size"
msgstr "Size"

msgid "Name"
msgstr "Name"

msgid "Legend set"
msgstr "Legend set"

msgid "Size"
msgstr "Size"

msgid "Name and value"
msgstr "Name and value"

Expand Down Expand Up @@ -249,6 +264,9 @@ msgstr "Point color"
msgid "Point radius"
msgstr "Point radius"

msgid "Count org units without coordinates"
msgstr "Count org units without coordinates"

msgid "event"
msgstr "event"

Expand Down Expand Up @@ -356,15 +374,6 @@ msgstr "Max should be greater than min"
msgid "Valid steps are {{minSteps}} to {{maxSteps}}"
msgstr "Valid steps are {{minSteps}} to {{maxSteps}}"

msgid "Min"
msgstr "Min"

msgid "Max"
msgstr "Max"

msgid "Steps"
msgstr "Steps"

msgid "Facility buffer"
msgstr "Facility buffer"

Expand All @@ -383,9 +392,18 @@ msgstr "View all events"
msgid "Radius"
msgstr "Radius"

msgid "Count events without coordinates"
msgstr "Count events without coordinates"

msgid "You can style events by data element after selecting a program."
msgstr "You can style events by data element after selecting a program."

msgid "Include unclassified events"
msgstr "Include unclassified events"

msgid "Include events with no data"
msgstr "Include events with no data"

msgid "Program is required"
msgstr "Program is required"

Expand Down Expand Up @@ -443,15 +461,24 @@ msgstr "Polygons are represented by their centroids."
msgid "Labels"
msgstr "Labels"

msgid "Include org units with no data"
msgstr "Include org units with no data"

msgid "No data"
msgstr "No data"

msgid "Include unclassified org units"
msgstr "Include unclassified org units"

msgid "Unclassified"
msgstr "Unclassified"

msgid "Aggregation type"
msgstr "Aggregation type"

msgid "Only show completed events"
msgstr "Only show completed events"

msgid "Include org units with no data"
msgstr "Include org units with no data"

msgid "Low radius"
msgstr "Low radius"

Expand Down Expand Up @@ -656,6 +683,19 @@ msgstr "Edit layer"
msgid "Remove layer"
msgstr "Remove layer"

msgid "Data quality"
msgstr "Data quality"

msgid "{{count}} event without coordinates"
msgid_plural "{{count}} event without coordinates"
msgstr[0] "{{count}} event without coordinates"
msgstr[1] "{{count}} events without coordinates"

msgid "{{count}} org unit without coordinates"
msgid_plural "{{count}} org unit without coordinates"
msgstr[0] "{{count}} org unit without coordinates"
msgstr[1] "{{count}} org units without coordinates"

msgid "Filters"
msgstr "Filters"

Expand Down Expand Up @@ -714,9 +754,6 @@ msgstr "Groups"
msgid "Parent unit"
msgstr "Parent unit"

msgid "No data"
msgstr "No data"

msgid "Not set"
msgstr "Not set"

Expand Down Expand Up @@ -967,6 +1004,12 @@ msgstr "Click to unpin legend"
msgid "Click to pin legend"
msgstr "Click to pin legend"

msgid "Hide layer"
msgstr "Hide layer"

msgid "Show layer"
msgstr "Show layer"

msgid "No program"
msgstr "No program"

Expand Down Expand Up @@ -1638,6 +1681,18 @@ msgstr "Equal intervals"
msgid "Equal counts"
msgstr "Equal counts"

msgid "Natural breaks (intervals)"
msgstr "Natural breaks (intervals)"

msgid "Natural breaks (clusters)"
msgstr "Natural breaks (clusters)"

msgid "Pretty breaks"
msgstr "Pretty breaks"

msgid "Logarithmic scale"
msgstr "Logarithmic scale"

msgid "Symbol"
msgstr "Symbol"

Expand Down Expand Up @@ -1707,15 +1762,15 @@ msgstr "Displaying first {{pageSize}} events out of {{total}}"
msgid "Event"
msgstr "Event"

msgid "GroupSet used for styling was not found"
msgstr "GroupSet used for styling was not found"

msgid "Facilities"
msgstr "Facilities"

msgid "an error occurred"
msgstr "an error occurred"

msgid "GroupSet used for styling was not found"
msgstr "GroupSet used for styling was not found"

msgid "No coordinates found for selected facilities"
msgstr "No coordinates found for selected facilities"

Expand Down Expand Up @@ -1746,12 +1801,12 @@ msgstr "Data item was not found"
msgid "Thematic layer"
msgstr "Thematic layer"

msgid "Tracked entity"
msgstr "Tracked entity"

msgid "related"
msgstr "related"

msgid "Tracked entity"
msgstr "Tracked entity"

msgid "not one of"
msgstr "not one of"

Expand Down Expand Up @@ -1801,9 +1856,6 @@ msgstr "Org units"
msgid "Facility"
msgstr "Facility"

msgid "Other"
msgstr "Other"

msgid "Start date is invalid"
msgstr "Start date is invalid"

Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@
"redux": "^4.2.1",
"redux-logger": "^3.0.6",
"redux-thunk": "^2.4.2",
"simple-statistics": "^7.8.9",
"styled-jsx": "^4.0.1",
"url-polyfill": "^1.1.14"
},
Expand Down
34 changes: 30 additions & 4 deletions src/actions/layerEdit.js
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,16 @@ export const setColorScale = (colorScale) => ({
colorScale,
})

export const setLegendDecimalPlaces = (legendDecimalPlaces) => ({
type: types.LAYER_EDIT_LEGEND_DECIMAL_PLACES_SET,
legendDecimalPlaces,
})

export const setLegendIsolated = (legendIsolated) => ({
type: types.LAYER_EDIT_LEGEND_ISOLATED_SET,
legendIsolated,
})

// Set event status
export const setEventStatus = (status) => ({
type: types.LAYER_EDIT_EVENT_STATUS_SET,
Expand All @@ -117,6 +127,12 @@ export const setEventClustering = (checked) => ({
checked,
})

// Set if events without coordinates should be counted and added to data table (event)
export const setCountEventsWithoutCoordinates = (checked) => ({
type: types.LAYER_EDIT_COUNT_EVENTS_WITHOUT_COORDS_SET,
checked,
})

// Set event point radius (event layer)
export const setEventPointRadius = (radius) => ({
type: types.LAYER_EDIT_EVENT_POINT_RADIUS_SET,
Expand Down Expand Up @@ -161,6 +177,12 @@ export const setOrganisationUnitField = (payload) => ({
payload,
})

// Set if organisation unit without coordinates should be counted and added to data table
export const setCountOrgUnitsWithoutCoordinates = (checked) => ({
type: types.LAYER_EDIT_ORGANISATION_UNIT_WITHOUT_COORDS_SET,
checked,
})

// Set period label (earth engine)
export const setPeriodName = (periodName) => ({
type: types.LAYER_EDIT_PERIOD_NAME_SET,
Expand Down Expand Up @@ -347,10 +369,14 @@ export const setRenderingStrategy = (display) => ({
payload: display,
})

// Set no data color
export const setNoDataColor = (color) => ({
type: types.LAYER_EDIT_NO_DATA_COLOR_SET,
payload: color,
export const setNoDataLegend = (noDataLegend) => ({
type: types.LAYER_EDIT_NO_DATA_LEGEND_SET,
payload: noDataLegend,
})

export const setUnclassifiedLegend = (unclassifiedLegend) => ({
type: types.LAYER_EDIT_UNCLASSIFIED_LEGEND_SET,
payload: unclassifiedLegend,
})

// Set period for EE layer
Expand Down
6 changes: 5 additions & 1 deletion src/components/app/FileMenu.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import {
preparePayloadForSaveAs,
VIS_TYPE_MAP,
} from '@dhis2/analytics'
import { useDataMutation, useDataEngine } from '@dhis2/app-runtime'
import { useDataMutation, useDataEngine, useConfig } from '@dhis2/app-runtime'
import { useAlert } from '@dhis2/app-service-alerts'
import i18n from '@dhis2/d2-i18n'
import PropTypes from 'prop-types'
Expand Down Expand Up @@ -67,6 +67,7 @@ const FileMenu = ({ onFileMenuAction }) => {
const map = useSelector((state) => state.map)
const dispatch = useDispatch()
const engine = useDataEngine()
const { serverVersion } = useConfig()
const { systemSettings, currentUser } = useCachedData()
const defaultBasemap = systemSettings.keyDefaultBaseMap
//alerts
Expand Down Expand Up @@ -119,6 +120,7 @@ const FileMenu = ({ onFileMenuAction }) => {
const cleanedMap = cleanMapConfig({
config: map,
defaultBasemapId: defaultBasemap,
serverVersion,
})

const config = preparePayloadForSave({
Expand Down Expand Up @@ -160,6 +162,7 @@ const FileMenu = ({ onFileMenuAction }) => {
config: latestMap,
defaultBasemapId: defaultBasemap,
cleanMapviewConfig: false,
serverVersion,
})

const config = preparePayloadForSave({
Expand Down Expand Up @@ -189,6 +192,7 @@ const FileMenu = ({ onFileMenuAction }) => {
const cleanedMap = cleanMapConfig({
config: map,
defaultBasemapId: defaultBasemap,
serverVersion,
})

const config = preparePayloadForSaveAs({
Expand Down
Loading
Loading