diff --git a/src/components/DistrictDashboard/OxygenMonitor.js b/src/components/DistrictDashboard/OxygenMonitor.js index 91be099..278d2c2 100644 --- a/src/components/DistrictDashboard/OxygenMonitor.js +++ b/src/components/DistrictDashboard/OxygenMonitor.js @@ -6,6 +6,7 @@ import useSWR from "swr"; import { careSummary } from "../../utils/api"; import { + OXYGEN_TYPES, OXYGEN_INVENTORY, OXYGEN_INVENTORY_NAME, OXYGEN_CAPACITY_TRANSLATION, @@ -24,6 +25,8 @@ import Pagination from "../Pagination"; import { Button, Input } from "@windmill/react-ui"; import fuzzysort from "fuzzysort"; +import SortByWidget from "../SortByWidget/SortByWidget"; + dayjs.extend(relativeTime); dayjs.extend(customParseFormat); @@ -231,36 +234,12 @@ const oxygenSelector = (selector) => { } }; -const selectorToText = (selector) => { - switch (selector) { - case "inventoryModifiedDate": - return "last updated date"; - case "tte_tank": - return "liquid oxygen time to empty"; - case "tte_b_cylinders": - return "B type cylinder time to empty"; - case "tte_c_cylinders": - return "C type cylinder time to empty"; - case "tte_d_cylinders": - return "D type cylinder time to empty"; - default: - return null; - } -}; - function OxygenMonitor({ filterDistrict, filterFacilityTypes, date }) { const [orderBy, setOrderBy] = useState({ - selector: "inventoryModifiedDate", + selector: oxygenSelector("Last Updated"), order: 1, }); - const setOrderByHandler = (selector) => { - const orderBySelector = oxygenSelector(selector); - setOrderBy( - orderBySelector - ? { selector: orderBySelector, order: -(orderBy?.order || 1) } - : undefined - ); - }; + const { data } = useSWR( ["OxygenMonitor", date, filterDistrict.id], (url, date, district) => @@ -439,25 +418,15 @@ function OxygenMonitor({ filterDistrict, filterFacilityTypes, date }) { )} - {/* Commented for now... to be added as a seperate component*/} - {/* {orderBy && ( -
-
- Showing Results Filtered by: {selectorToText(orderBy.selector)}{" "} - {orderBy.order === 1 ? "ASC" : "DESC"} -
-
setOrderBy()} - className="focus:shadow-outline-primary inline-flex items-center justify-center px-2 text-white text-xs leading-5 bg-primary-500 active:bg-primary-500 hover:bg-primary-600 border border-transparent rounded-lg focus:outline-none cursor-pointer transition-colors duration-150" - > - X Clear Filter -
-
- )} */} -
+ Facilities
- Facilities + setOrderBy(state)} + selectors={["Last Updated", ...Object.values(OXYGEN_TYPES)]} + selectorMapping={oxygenSelector} + />
{exported && ( diff --git a/src/components/SortByWidget/SortByWidget.js b/src/components/SortByWidget/SortByWidget.js new file mode 100644 index 0000000..2a8c2ba --- /dev/null +++ b/src/components/SortByWidget/SortByWidget.js @@ -0,0 +1,72 @@ +import { useState } from "react"; +import { Button, Dropdown, DropdownItem } from "@windmill/react-ui"; +import { ChevronDown } from "react-feather"; + +const SortByWidget = ({ orderBy, setOrderBy, selectors, selectorMapping }) => { + const [widgetOpen, setWidgetOpen] = useState(false); + const [widgetInfo, setWidgetInfo] = useState("Last Updated"); + + const handleDropdownSelect = (selector) => { + setOrderBy({ ...orderBy, selector: selectorMapping(selector) }); + setWidgetInfo(selector); + setWidgetOpen(false); + }; + + return ( +
+
+
+ + setWidgetOpen(false)} + align="left" + className="absolute" + > + {selectors.map((selector, idx) => ( + handleDropdownSelect(selector)} + > + {selector} + + ))} + +
+
+ + +
+
+
+ ); +}; + +export default SortByWidget;