From a9edd88939d2261ccb4098436ccb3d109d04c8e4 Mon Sep 17 00:00:00 2001 From: Bruno Raimbault Date: Mon, 24 Feb 2025 17:19:46 +0000 Subject: [PATCH 1/2] fix: set periodType to lastUpdated when no program is selected --- src/components/edit/trackedEntity/PeriodTypeSelect.js | 3 ++- src/constants/periods.js | 1 + src/reducers/layerEdit.js | 7 ++++++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/components/edit/trackedEntity/PeriodTypeSelect.js b/src/components/edit/trackedEntity/PeriodTypeSelect.js index b7751d420..8be8ae2c1 100644 --- a/src/components/edit/trackedEntity/PeriodTypeSelect.js +++ b/src/components/edit/trackedEntity/PeriodTypeSelect.js @@ -3,12 +3,13 @@ import PropTypes from 'prop-types' import React from 'react' import { connect } from 'react-redux' import { setPeriodType } from '../../../actions/layerEdit.js' +import { LAST_UPDATED_DATES } from '../../../constants/periods.js' import { Radio, RadioGroup } from '../../core/index.js' import styles from './styles/PeriodTypeSelect.module.css' const PeriodTypeSelect = ({ program, - periodType = 'lastUpdated', + periodType = LAST_UPDATED_DATES, setPeriodType, }) => { const label = i18n.t( diff --git a/src/constants/periods.js b/src/constants/periods.js index acbb076a4..5086f9488 100644 --- a/src/constants/periods.js +++ b/src/constants/periods.js @@ -36,6 +36,7 @@ export const PREDEFINED_PERIODS = 'PREDEFINED_PERIODS' export const RELATIVE_PERIODS = 'RELATIVE_PERIODS' export const FIXED_PERIODS = 'FIXED_PERIODS' export const START_END_DATES = 'START_END_DATES' +export const LAST_UPDATED_DATES = 'lastUpdated' export const periodTypes = (includeRelativePeriods) => [ ...(includeRelativePeriods diff --git a/src/reducers/layerEdit.js b/src/reducers/layerEdit.js index d4564ddbe..ee21408ec 100644 --- a/src/reducers/layerEdit.js +++ b/src/reducers/layerEdit.js @@ -6,10 +6,11 @@ import { CLASSIFICATION_EQUAL_COUNTS, CLASSIFICATION_PREDEFINED, THEMATIC_CHOROPLETH, + TRACKED_ENTITY_LAYER, EE_BUFFER, NONE, } from '../constants/layers.js' -import { START_END_DATES } from '../constants/periods.js' +import { START_END_DATES, LAST_UPDATED_DATES } from '../constants/periods.js' import { setFiltersFromPeriod, setFiltersFromPeriods, @@ -41,6 +42,10 @@ const layerEdit = (state = null, action) => { program: program ? { ...program } : null, columns: [], programStage: null, + periodType: + !program && state.layer === TRACKED_ENTITY_LAYER + ? LAST_UPDATED_DATES + : state.periodType, styleDataItem: null, } From f31a29fdad61231dde642b7ceb0851e4421618eb Mon Sep 17 00:00:00 2001 From: Bruno Raimbault Date: Tue, 25 Feb 2025 11:32:59 +0000 Subject: [PATCH 2/2] fix: refactor fix --- .../edit/trackedEntity/PeriodTypeSelect.js | 16 +++-------- .../edit/trackedEntity/TrackedEntityDialog.js | 27 ++++++++++++++++--- src/reducers/layerEdit.js | 7 +---- 3 files changed, 29 insertions(+), 21 deletions(-) diff --git a/src/components/edit/trackedEntity/PeriodTypeSelect.js b/src/components/edit/trackedEntity/PeriodTypeSelect.js index 8be8ae2c1..21a4a483b 100644 --- a/src/components/edit/trackedEntity/PeriodTypeSelect.js +++ b/src/components/edit/trackedEntity/PeriodTypeSelect.js @@ -1,8 +1,6 @@ import i18n from '@dhis2/d2-i18n' import PropTypes from 'prop-types' import React from 'react' -import { connect } from 'react-redux' -import { setPeriodType } from '../../../actions/layerEdit.js' import { LAST_UPDATED_DATES } from '../../../constants/periods.js' import { Radio, RadioGroup } from '../../core/index.js' import styles from './styles/PeriodTypeSelect.module.css' @@ -10,7 +8,7 @@ import styles from './styles/PeriodTypeSelect.module.css' const PeriodTypeSelect = ({ program, periodType = LAST_UPDATED_DATES, - setPeriodType, + onChange, }) => { const label = i18n.t( 'Select period when tracked entities were last updated' @@ -20,7 +18,7 @@ const PeriodTypeSelect = ({ setPeriodType({ value: type })} + onChange={(type) => onChange({ value: type })} > ({ - program: layerEdit.program, - periodType: layerEdit.periodType, - }), - { setPeriodType } -)(PeriodTypeSelect) +export default PeriodTypeSelect diff --git a/src/components/edit/trackedEntity/TrackedEntityDialog.js b/src/components/edit/trackedEntity/TrackedEntityDialog.js index 84c52cb4f..1a8b4b83b 100644 --- a/src/components/edit/trackedEntity/TrackedEntityDialog.js +++ b/src/components/edit/trackedEntity/TrackedEntityDialog.js @@ -11,6 +11,7 @@ import { setFollowUpStatus, setTrackedEntityRelationshipType, setTrackedEntityRelationshipOutsideProgram, + setPeriodType, setStartDate, setEndDate, setOrgUnits, @@ -31,6 +32,7 @@ import { MIN_RADIUS, MAX_RADIUS, } from '../../../constants/layers.js' +import { LAST_UPDATED_DATES } from '../../../constants/periods.js' import { getOrgUnitsFromRows } from '../../../util/analytics.js' import { getDefaultDatesInCalendar } from '../../../util/date.js' import { getStartEndDateError } from '../../../util/time.js' @@ -58,6 +60,7 @@ class TrackedEntityDialog extends Component { setEventPointRadius: PropTypes.func.isRequired, setFollowUpStatus: PropTypes.func.isRequired, setOrgUnits: PropTypes.func.isRequired, + setPeriodType: PropTypes.func.isRequired, setProgram: PropTypes.func.isRequired, setProgramStatus: PropTypes.func.isRequired, setRelatedPointColor: PropTypes.func.isRequired, @@ -73,6 +76,7 @@ class TrackedEntityDialog extends Component { eventPointRadius: PropTypes.number, followUp: PropTypes.bool, orgUnits: PropTypes.object, + periodType: PropTypes.string, periodsSettings: PropTypes.object, program: PropTypes.object, programStatus: PropTypes.string, @@ -130,8 +134,14 @@ class TrackedEntityDialog extends Component { } componentDidUpdate(prev) { - const { validateLayer, onLayerValidation, startDate, endDate } = - this.props + const { + validateLayer, + onLayerValidation, + startDate, + endDate, + program, + setPeriodType, + } = this.props const { periodError } = this.state if (validateLayer && validateLayer !== prev.validateLayer) { @@ -144,6 +154,10 @@ class TrackedEntityDialog extends Component { ) { this.setErrorState('periodError', null, 'period') } + + if (!program && prev.program !== program) { + setPeriodType(LAST_UPDATED_DATES) + } } render() { @@ -151,6 +165,7 @@ class TrackedEntityDialog extends Component { eventPointColor, eventPointRadius, followUp, + periodType, program, programStatus, trackedEntityType, @@ -163,6 +178,7 @@ class TrackedEntityDialog extends Component { const { setTrackedEntityType, + setPeriodType, setProgram, setProgramStatus, setFollowUpStatus, @@ -284,7 +300,11 @@ class TrackedEntityDialog extends Component { ))} {tab === 'period' && (
- + { program: program ? { ...program } : null, columns: [], programStage: null, - periodType: - !program && state.layer === TRACKED_ENTITY_LAYER - ? LAST_UPDATED_DATES - : state.periodType, styleDataItem: null, }