Skip to content

Commit 8e36284

Browse files
authored
feat: add keyEmbeddedDashboardsEnabled [DHIS2-18472] (#1409)
1 parent 93bc7a0 commit 8e36284

File tree

5 files changed

+406
-116
lines changed

5 files changed

+406
-116
lines changed

i18n/en.pot

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ msgstr ""
55
"Content-Type: text/plain; charset=utf-8\n"
66
"Content-Transfer-Encoding: 8bit\n"
77
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
8-
"POT-Creation-Date: 2024-06-28T11:48:52.681Z\n"
9-
"PO-Revision-Date: 2024-06-28T11:48:52.681Z\n"
8+
"POT-Creation-Date: 2024-11-27T12:04:49.662Z\n"
9+
"PO-Revision-Date: 2024-11-27T12:04:49.662Z\n"
1010

1111
msgid "Failed to load: {{error}}"
1212
msgstr "Failed to load: {{error}}"
@@ -548,6 +548,9 @@ msgstr "Respect category option start and end date in analytics table export"
548548
msgid "Include zero data values in analytics tables"
549549
msgstr "Include zero data values in analytics tables"
550550

551+
msgid "Enable embedded dashboards"
552+
msgstr "Enable embedded dashboards"
553+
551554
msgid "Caching factor"
552555
msgstr "Caching factor"
553556

src/app.component.js

Lines changed: 30 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,13 @@ import React from 'react'
88
import styles from './App.module.css'
99
import configOptionStore from './configOptionStore.js'
1010
import settingsActions from './settingsActions.js'
11-
import { categoryOrder, categories } from './settingsCategories.js'
11+
import {
12+
categoryOrder,
13+
categories,
14+
filterCategoryOrderByApiVersion,
15+
filterCategoriesByApiVersion,
16+
filterSettingsByApiVersion,
17+
} from './settingsCategories.js'
1218
import SettingsFields from './settingsFields.component.js'
1319
import appTheme from './theme.js'
1420

@@ -18,7 +24,10 @@ class AppComponent extends React.Component {
1824

1925
this.state = {
2026
category: categoryOrder[0],
21-
currentSettings: categories[categoryOrder[0]].settings,
27+
currentSettings: filterSettingsByApiVersion({
28+
settings: categories[categoryOrder[0]].settings,
29+
apiVersion: props.apiVersion,
30+
}),
2231
snackbarMessage: '',
2332
showSnackbar: false,
2433
formValidator: undefined,
@@ -37,7 +46,7 @@ class AppComponent extends React.Component {
3746
}
3847

3948
componentDidMount() {
40-
settingsActions.load()
49+
settingsActions.load({ apiVersion: this.props.apiVersion })
4150
this.subscriptions = []
4251

4352
this.subscriptions.push(
@@ -78,7 +87,10 @@ class AppComponent extends React.Component {
7887

7988
this.setState({
8089
category,
81-
currentSettings,
90+
currentSettings: filterSettingsByApiVersion({
91+
settings: currentSettings,
92+
apiVersion: this.props.apiVersion,
93+
}),
8294
searchText:
8395
category === 'search' ? this.state.searchText : '',
8496
})
@@ -97,25 +109,25 @@ class AppComponent extends React.Component {
97109

98110
// Filter categories based on apiVersion
99111
const { apiVersion } = this.props
100-
const filteredCategoryOrder = categoryOrder.filter(
101-
(category) =>
102-
!categories[category].maximumApiVersion ||
103-
apiVersion <= categories[category].maximumApiVersion
104-
)
105-
const filteredCategories = Object.fromEntries(
106-
Object.entries(categories).filter(
107-
([key]) =>
108-
!categories[key].maximumApiVersion ||
109-
apiVersion <= categories[key].maximumApiVersion
110-
)
111-
)
112+
const filteredCategoryOrder = filterCategoryOrderByApiVersion({
113+
categoryOrder,
114+
categories,
115+
apiVersion,
116+
})
117+
118+
const filteredCategories = filterCategoriesByApiVersion({
119+
categories,
120+
apiVersion,
121+
})
112122

113123
this.setState({
114124
filteredCategoryOrder,
115125
filteredCategories,
116126
category: filteredCategoryOrder[0],
117-
currentSettings:
118-
filteredCategories[filteredCategoryOrder[0]].settings,
127+
currentSettings: filterSettingsByApiVersion({
128+
settings: filteredCategories[filteredCategoryOrder[0]].settings,
129+
apiVersion: apiVersion,
130+
}),
119131
})
120132

121133
// Helper function for setting app state based on location using filtered categories

src/settingsActions.js

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@ import i18n from '@dhis2/d2-i18n'
22
import { getInstance as getD2 } from 'd2'
33
import Action from 'd2-ui/lib/action/Action.js'
44
import { Observable } from 'rxjs'
5-
import { categories } from './settingsCategories.js'
5+
import {
6+
categories,
7+
filterCategoriesByApiVersion,
8+
filterSettingsByApiVersion,
9+
} from './settingsCategories.js'
610
import settingsKeyMapping from './settingsKeyMapping.js'
711
import settingsStore from './settingsStore.js'
812

@@ -92,6 +96,7 @@ settingsActions.saveKey.subscribe((args) => {
9296
const settingsSearchMap = Observable.fromPromise(
9397
new Promise((resolve) => {
9498
settingsActions.load.subscribe((args) => {
99+
const { apiVersion } = args?.data || {}
95100
getD2().then((d2) => {
96101
// Get current settings and configuration
97102
Promise.all([
@@ -142,15 +147,22 @@ const settingsSearchMap = Observable.fromPromise(
142147
)
143148

144149
// Build the search index
145-
const searchMapping = Object.keys(categories)
150+
const searchMapping = Object.keys(
151+
filterCategoriesByApiVersion({ categories, apiVersion })
152+
)
146153
.filter(
147154
(categoryKey) =>
148155
!categories[categoryKey].authority ||
149156
d2.currentUser.authorities.has(
150157
categories[categoryKey].authority
151158
)
152159
)
153-
.map((categoryKey) => categories[categoryKey].settings)
160+
.map((categoryKey) =>
161+
filterSettingsByApiVersion({
162+
settings: categories[categoryKey].settings,
163+
apiVersion,
164+
})
165+
)
154166
.reduce(
155167
(searchArray, categoryKeys) =>
156168
searchArray.concat(categoryKeys),

0 commit comments

Comments
 (0)