Skip to content

Commit 701deb2

Browse files
committed
WEB-4460 add modal controllers to dashboard
1 parent b029649 commit 701deb2

6 files changed

Lines changed: 102 additions & 2 deletions

File tree

app/components/navpatientheader/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ const NavPatientHeader = ({ api, trackMetric, patient, clinicPatient, user, perm
100100

101101
<EditPatientDialog
102102
api={api}
103-
trackMetric={trackMetric}
103+
clinicPatient={clinicPatient}
104104
isOpen={isEditPatientModalOpen}
105105
onClose={() => setIsEditPatientModalOpen(false)}
106106
/>
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import React from 'react';
2+
import { useSelector, useDispatch } from 'react-redux';
3+
import DataConnectionsModal from '../../../components/datasources/DataConnectionsModal';
4+
import { closeModals } from './tideDashboardSlice';
5+
6+
const DataConnectionsModalController = ({ patients }) => {
7+
const dispatch = useDispatch();
8+
9+
const dataConnectionsModal = useSelector(state => state.blip.tideDashboard.dataConnectionsModal);
10+
const { patientId, isOpen } = dataConnectionsModal;
11+
12+
const patient = patients.find(patient => patient.id === patientId);
13+
14+
const handleClose = () => dispatch(closeModals());
15+
16+
return (
17+
<DataConnectionsModal
18+
open={isOpen}
19+
patient={patient}
20+
onClose={handleClose}
21+
/>
22+
);
23+
};
24+
25+
export default DataConnectionsModalController;
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import React from 'react';
2+
import { useSelector, useDispatch } from 'react-redux';
3+
import { closeModals } from './tideDashboardSlice';
4+
import { RTKQueryApi } from '../../../redux/api/baseApi';
5+
import EditPatientDialog from '../../../components/navpatientheader/EditPatientDialog';
6+
import { tagTypes } from './tideDashboardApi';
7+
8+
const { TIDE_DASHBOARD_PATIENTS } = tagTypes;
9+
10+
const EditPatientDialogController = ({ api, patients }) => {
11+
const dispatch = useDispatch();
12+
const editPatientDialog = useSelector(state => state.blip.tideDashboard.editPatientDialog);
13+
14+
const clinicPatient = patients.find(patient => patient.id === editPatientDialog.patientId);
15+
16+
const handleCloseModal = () => {
17+
dispatch(closeModals());
18+
};
19+
20+
const handleEditSuccess = () => {
21+
dispatch(RTKQueryApi.util.invalidateTags([TIDE_DASHBOARD_PATIENTS]));
22+
};
23+
24+
return (
25+
<>
26+
<EditPatientDialog
27+
api={api}
28+
clinicPatient={clinicPatient}
29+
isOpen={editPatientDialog.isOpen}
30+
onClose={handleCloseModal}
31+
onEditSuccess={handleEditSuccess}
32+
/>
33+
</>
34+
);
35+
};
36+
37+
export default EditPatientDialogController;

app/pages/clinicworkspace/TideDashboardV2/TideDashboardV2.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ import FilterBySites from './FilterBySites';
2222
import PatientCount from '../components/PatientCount';
2323
import AppliedFiltersList from './AppliedFiltersList';
2424

25+
import EditPatientDialogController from './EditPatientDialogController';
26+
import DataConnectionsModalController from './DataConnectionsModalController';
27+
2528
const Gap = () => <Box sx={{ marginLeft: 'auto' }}></Box>;
2629

2730
const TideDashboardV2 = ({ api, trackMetric }) => {
@@ -90,6 +93,9 @@ const TideDashboardV2 = ({ api, trackMetric }) => {
9093
/>
9194
</Flex>
9295
</Grid>
96+
97+
<EditPatientDialogController api={api} patients={patients} />
98+
<DataConnectionsModalController patients={patients}/>
9399
</>
94100
);
95101
};

app/pages/clinicworkspace/TideDashboardV2/tideDashboardSlice.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,14 @@ import { CATEGORY } from './FilterByCategory';
55
const getInitialState = () => ({
66
category: CATEGORY.DEFAULT,
77
offset: 0,
8+
editPatientDialog: {
9+
patientId: null,
10+
isOpen: false,
11+
},
12+
dataConnectionsModal: {
13+
patientId: null,
14+
isOpen: false,
15+
},
816
});
917

1018
const tideDashboardSlice = createSlice({
@@ -17,13 +25,36 @@ const tideDashboardSlice = createSlice({
1725
setOffset: (state, action) => {
1826
state.offset = action.payload;
1927
},
28+
setEditPatientDialogPatientId: (state, action) => {
29+
state.editPatientDialog.patientId = action.payload;
30+
},
31+
setEditPatientDialogIsOpen: (state, action) => {
32+
state.editPatientDialog.isOpen = action.payload;
33+
},
34+
setDataConnectionsModalPatientId: (state, action) => {
35+
state.dataConnectionsModal.patientId = action.payload;
36+
},
37+
setDataConnectionsModalIsOpen: (state, action) => {
38+
state.dataConnectionsModal.isOpen = action.payload;
39+
},
40+
closeModals: (state) => {
41+
const { editPatientDialog, dataConnectionsModal } = getInitialState();
42+
43+
state.editPatientDialog = editPatientDialog;
44+
state.dataConnectionsModal = dataConnectionsModal;
45+
},
2046
resetTideDashboardState: () => getInitialState(),
2147
},
2248
});
2349

2450
export const {
2551
setCategory,
2652
setOffset,
53+
setEditPatientDialogPatientId,
54+
setEditPatientDialogIsOpen,
55+
setDataConnectionsModalPatientId,
56+
setDataConnectionsModalIsOpen,
57+
closeModals,
2758
resetTideDashboardState,
2859
} = tideDashboardSlice.actions;
2960

app/pages/clinicworkspace/TideDashboardV2/useTableColumns.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import {
1717
TimeInTargetPercentCell,
1818
FlagCell,
1919
PatientLastReviewedCell,
20+
MoreMenuCell,
2021
} from './Cells';
2122

2223
import TagListCell from '../components/TagListCell';
@@ -112,7 +113,7 @@ const getColumnTypes = (t, category, thresholds) => ({
112113
title: '',
113114
field: 'moreMenu',
114115
align: 'center',
115-
render: patient => null, // TODO: Implement
116+
render: patient => <MoreMenuCell patient={patient} />,
116117
}, // More
117118
});
118119

0 commit comments

Comments
 (0)