Tones/hooks/useDepartments/useDepartments.jsx

139 lines
No EOL
4.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import React, { useState, useEffect } from 'react';
const departmentTypeMap = {
EMS: 'Medical Services',
Fire: 'Fire Department',
Rescue: 'Fire & EMS'
}
const accountDetails = {
"CallThemes" : {
"CriticalCallList": [
"CARDIAC ARREST"
],
"HighCallList": [
"EMS ALS PRIORITY (ALS)",
"EMS Advanced Life Support life threatening response (ALS)",
"EMS ALS Intercept Required",
"EMS ALS Response Cardiac Related",
"EMS ALS Response Respiratory Distress",
"EMS ALS Response Stroke Alert",
"EMS Basic Life Support with Paramedic Assist (BLS)",
"EMS ALS Tiered Response with Fire",
"EMS Response Behavioral Emergency (ALS)",
"EMS Response Obstetric Emergency (ALS)",
"EMS ALS Response Overdose / Poisoning",
"EMS ALS Priority Interfacility Transfer",
"EMS Response Unresponsive / Unconscious Patient (ALS)"
],
"MediumCallList": [
"ALS-STANDARD",
"BLS-PRIORITY",
"EMS BLS Priority Response",
"EMS BLS Response Fall Injury"
],
"LowCallList": [
"EMS Standard Basic Life Support Response (BLS)",
"EMS BLS Non-Emergency Transport",
"EMS BLS Standby Event Coverage",
"EMS Public Assist Lift Only (BLS)",
"EMS BLS Scheduled Interfacility Transport"
]
},
"InitList": [
{
deptId: 1,
dept: 'Darien EMS',
addDepts: [
'Darien EMS Supv'
],
deptAbv: 'DEMS',
rank: 'Assistant Director',
rankAbv: 'Asst. Director',
type: 'EMS',
primary: true,
selected: true,
supervisor: true,
admin: true,
hasVolunteer: true,
},
{
deptId: 2,
dept: 'Noroton Fire Department',
deptAbv: 'NFD',
rank: 'Lieutenant',
rankAbv: 'Lt.',
type: 'Fire',
primary: false,
selected: false,
supervisor: true,
admin: true,
hasVolunteer: true,
},
{
deptId: 3,
dept: 'Stamford Fire Rescue',
deptAbv: 'SFD',
rank: 'Paramedic',
rankAbv: 'EMT-P',
type: 'Rescue',
primary: false,
selected: false,
supervisor: false,
admin: true,
hasVolunteer: false,
},
]
}
export const useDepartments = () => {
const { InitList } = accountDetails;
const [deptList, setDeptList] = useState(InitList);
const [selectedDepartment, setSelectedDepartment] = useState(deptList?.find((dept) => {
return dept?.primary;
}));
const updateSelectedDepartment = (currentSelectedId, newSelectedId) => {
if (currentSelectedId !== newSelectedId) {
setDeptList(deptList?.map((item) => {
if (item?.selected) {
item.selected = false;
}
if (item?.deptId === newSelectedId) {
item.selected = true;
}
return item;
}))
}
};
const selectedDepartmentColorPicker = (deptartmentType) => {
if (deptartmentType === 'Fire') {
return '#FF0000';
} else if (deptartmentType === 'EMS') {
return '#FF8C00';
} else if (deptartmentType === 'Rescue') {
return '#0000CD';
}
return 'grey';
};
useEffect(() => {
if (deptList) {
setSelectedDepartment(deptList?.find((dept) => {
return dept?.selected;
}));
}
}, [deptList]);
return {
departmentTypeMap,
accountDetails,
deptList,
setDeptList,
selectedDepartment,
setSelectedDepartment,
updateSelectedDepartment,
selectedDepartmentColorPicker
}
}