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;