diff --git a/src/ui/pages/equipment/components/EquipmentWorkOrders.js b/src/ui/pages/equipment/components/EquipmentWorkOrders.js index 9a538677..a442f9fd 100644 --- a/src/ui/pages/equipment/components/EquipmentWorkOrders.js +++ b/src/ui/pages/equipment/components/EquipmentWorkOrders.js @@ -51,18 +51,35 @@ function EquipmentWorkOrders(props) { let [events, setEvents] = useState([]); let [workorders, setWorkorders] = useState([]); const [loadingData, setLoadingData] = useState(true); - const [workOrderFilter, setWorkOrderFilter] = useLocalStorage(LOCAL_STORAGE_FILTER_KEY, WO_FILTER_TYPES.ALL, defaultFilter); - let headers = ['Work Order', 'Equipment', 'Description', 'Status', 'Creation Date']; - let propCodes = ['number', 'object','desc', 'status', 'createdDate']; - if (workOrderFilter === WO_FILTER_TYPES.THIS) { - headers = ['Work Order', 'Description', 'Status', 'Creation Date']; - propCodes = ['number', 'desc', 'status', 'createdDate']; + const filterHeaderMapping = { + [WO_FILTER_TYPES.THIS]: { + headers: ['Work Order', 'Description', 'Status', 'Creation Date'], + propCodes: ['number', 'desc', 'status', 'createdDate'], + sortBy: 'createdDate' + }, + [WO_FILTER_TYPES.ALL]: { + headers: ['Work Order', 'Description', 'Status', 'Completed Date'], + propCodes: ['number', 'desc', 'status', 'completedDate'], + sortBy: 'completedDate' + }, + [WO_FILTER_TYPES.OPEN]: { + headers: ['Work Order', 'Description', 'Status', 'Scheduled Date'], + propCodes: ['number', 'desc', 'status', 'schedulingStartDate'], + sortBy: 'schedulingStartDate' + }, + [WO_FILTER_TYPES.MTF]: { + headers: ['Work Order', 'Equipment', 'Description', 'Status', 'Creation Date'], + propCodes: ['number', 'object','desc', 'status', 'createdDate'], + sortBy: 'createdDate' + }, } // make spaces in header strings non-breaking so headers do not wrap to multiple lines - headers = headers.map(string => string.replaceAll(' ', '\u00a0')); + const headers = filterHeaderMapping[workOrderFilter].headers.map(string => string.replaceAll(' ', '\u00a0')); + const propCodes = filterHeaderMapping[workOrderFilter].propCodes; + const sortBy = filterHeaderMapping[workOrderFilter].sortBy; const linksMap = new Map([ ['number', { @@ -84,7 +101,9 @@ function EquipmentWorkOrders(props) { }; const keyMap = { - createdDate: TRANSFORM_KEYS.DATE_DD_MMM_YYYY + createdDate: TRANSFORM_KEYS.DATE_DD_MMM_YYYY, + schedulingStartDate: TRANSFORM_KEYS.DATE_DD_MMM_YYYY, + completedDate: TRANSFORM_KEYS.DATE_DD_MMM_YYYY } let getFilteredWorkOrderList = (workOrders) => { @@ -101,19 +120,24 @@ function EquipmentWorkOrders(props) { }, [equipmentcode, equipmenttype]) const fetchData = (equipmentCode, equipmentType) => { - Promise.all([WSEquipment.getEquipmentWorkOrders(equipmentCode), WSEquipment.getEquipmentEvents(equipmentCode, equipmentType)]) - .then(responses => { - const formatResponse = response => response.body.data.map(element => ({ - ...element, - createdDate: element.createdDate && format(new Date(element.createdDate),'dd-MMM-yyyy'), - objectUrl: `equipment/${encodeURIComponent(element?.object || '')}` - })); - - const [workorders, events] = responses.map(formatResponse); - setWorkorders(workorders); - setEvents(events); - }) - .finally(() => setLoadingData(false)); + Promise.all([ + WSEquipment.getEquipmentWorkOrders(equipmentCode), + WSEquipment.getEquipmentEvents(equipmentCode, equipmentType) + ]) + .then(responses => { + const formatResponse = response => response.body.data.map(element => ({ + ...element, + createdDate: element.createdDate && format(new Date(element.createdDate),'dd-MMM-yyyy'), + schedulingStartDate: element.schedulingStartDate && format(new Date(element.schedulingStartDate),'dd-MMM-yyyy'), + completedDate: element.completedDate ? format(new Date(element.completedDate),'dd-MMM-yyyy') : '-', + objectUrl: `equipment/${encodeURIComponent(element?.object || '')}` + })); + + const [workorders, events] = responses.map(formatResponse); + setWorkorders(workorders); + setEvents(events); + }) + .finally(() => setLoadingData(false)); } return ( @@ -124,21 +148,21 @@ function EquipmentWorkOrders(props) { setWorkOrderFilter(newFilter) } activeFilter={workOrderFilter} - /> + /> {workOrderFilter === WO_FILTER_TYPES.MTF ? : }