bananas-commerce-admin 0.17.22 → 0.18.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/components/NavRail/NavRailRoutes.js +3 -0
- package/dist/esm/components/NavRail/NavRailRoutes.js.map +1 -1
- package/dist/esm/contexts/RouterContext.js +1 -0
- package/dist/esm/contexts/RouterContext.js.map +1 -1
- package/dist/esm/extensions/report/components/PayoutCard.js +58 -0
- package/dist/esm/extensions/report/components/PayoutCard.js.map +1 -0
- package/dist/esm/extensions/report/pages/report.js +5 -2
- package/dist/esm/extensions/report/pages/report.js.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/types/contexts/RouterContext.d.ts +3 -0
- package/dist/types/extensions/report/components/PayoutCard.d.ts +3 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/types/index.d.ts +5 -0
- package/package.json +1 -1
- package/src/components/NavRail/NavRailRoutes.tsx +2 -0
- package/src/contexts/RouterContext.tsx +4 -0
- package/src/extensions/report/components/PayoutCard.tsx +88 -0
- package/src/extensions/report/pages/report.tsx +6 -2
- package/src/index.ts +1 -0
- package/src/types/index.ts +5 -0
|
@@ -14,6 +14,7 @@ export const NavRailRoutes = ({ navigation }) => {
|
|
|
14
14
|
useEffect(() => {
|
|
15
15
|
const newRoutes = Object.values(navigation)
|
|
16
16
|
.filter((entry) => Boolean(entry && entry?.route))
|
|
17
|
+
.filter((entry) => !entry.route.hideNavItem)
|
|
17
18
|
.map((entry) => entry.route);
|
|
18
19
|
setCustomRoutes(newRoutes);
|
|
19
20
|
}, [navigation, setCustomRoutes]);
|
|
@@ -27,6 +28,8 @@ export const NavRailRoutes = ({ navigation }) => {
|
|
|
27
28
|
continue;
|
|
28
29
|
if (navInfo.group && !hasGroup(user, navInfo.group))
|
|
29
30
|
continue;
|
|
31
|
+
if (navInfo.excludedGroup && hasGroup(user, navInfo.excludedGroup))
|
|
32
|
+
continue;
|
|
30
33
|
let title = navInfo.title;
|
|
31
34
|
let icon = navInfo.icon;
|
|
32
35
|
let route;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavRailRoutes.js","sourceRoot":"","sources":["../../../../src/components/NavRail/NavRailRoutes.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAElD,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAEhD,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAa,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,WAAW,MAAM,eAAe,CAAC;AAMxC,MAAM,CAAC,MAAM,aAAa,GAAiC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE;IAC5E,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,SAAS,EAAE,CAAC;IAChD,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;IAC3B,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC;IAExB,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;aACxC,MAAM,CAAC,CAAC,KAAK,EAAiC,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,EAAE,KAAK,CAAC,CAAC;aAChF,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/B,eAAe,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC;IAElC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE;QAC5B,MAAM,QAAQ,GAAsB,EAAE,CAAC;QAEvC,KAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7D,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,KAAK,KAAK;gBAAE,SAAS;YAErD,MAAM,OAAO,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YAE7D,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC;gBAAE,SAAS;YAC7E,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC;gBAAE,SAAS;
|
|
1
|
+
{"version":3,"file":"NavRailRoutes.js","sourceRoot":"","sources":["../../../../src/components/NavRail/NavRailRoutes.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouterContext.js","sourceRoot":"","sources":["../../../src/contexts/RouterContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,SAAS,EAAa,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAErE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EACL,OAAO,EACP,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"RouterContext.js","sourceRoot":"","sources":["../../../src/contexts/RouterContext.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import React, { useState } from "react";
|
|
2
|
+
import ShoppingCartOutlinedIcon from "@mui/icons-material/ShoppingCartOutlined";
|
|
3
|
+
import Button from "@mui/material/Button";
|
|
4
|
+
import Card from "@mui/material/Card";
|
|
5
|
+
import CardContent from "@mui/material/CardContent";
|
|
6
|
+
import CardHeader from "@mui/material/CardHeader";
|
|
7
|
+
import Stack from "@mui/material/Stack";
|
|
8
|
+
import { useTheme } from "@mui/material/styles";
|
|
9
|
+
import Typography from "@mui/material/Typography";
|
|
10
|
+
import { AdapterLuxon } from "@mui/x-date-pickers/AdapterLuxon";
|
|
11
|
+
import { DatePicker } from "@mui/x-date-pickers/DatePicker";
|
|
12
|
+
import { LocalizationProvider } from "@mui/x-date-pickers/LocalizationProvider";
|
|
13
|
+
import { useSnackbar } from "notistack";
|
|
14
|
+
import { useApi } from "../../../contexts/ApiContext";
|
|
15
|
+
export const PayoutCard = () => {
|
|
16
|
+
const theme = useTheme();
|
|
17
|
+
const api = useApi();
|
|
18
|
+
const { enqueueSnackbar } = useSnackbar();
|
|
19
|
+
const [startDate, setStartDate] = useState(null);
|
|
20
|
+
const [endDate, setEndDate] = useState(null);
|
|
21
|
+
const generateReport = () => {
|
|
22
|
+
if (startDate === null || endDate === null) {
|
|
23
|
+
enqueueSnackbar("You need to enter both a start date and an end date to generate a report", {
|
|
24
|
+
variant: "error",
|
|
25
|
+
});
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const operation = api.operations["report.payout:create"];
|
|
29
|
+
const url = new URL(operation.server + operation.endpoint);
|
|
30
|
+
url.searchParams.set("start_date", startDate.toISODate());
|
|
31
|
+
url.searchParams.set("end_date", endDate.toISODate());
|
|
32
|
+
const a = document.createElement("a");
|
|
33
|
+
a.href = url.toString();
|
|
34
|
+
a.click();
|
|
35
|
+
a.remove();
|
|
36
|
+
enqueueSnackbar(`Downloading report...`, { variant: "success" });
|
|
37
|
+
};
|
|
38
|
+
return (React.createElement(Card, { sx: {
|
|
39
|
+
maxWidth: 450,
|
|
40
|
+
} },
|
|
41
|
+
React.createElement(CardHeader, { avatar: React.createElement(ShoppingCartOutlinedIcon, null), sx: {
|
|
42
|
+
borderBottomWidth: 1,
|
|
43
|
+
borderBottomStyle: "solid",
|
|
44
|
+
borderBottomColor: theme.palette.divider,
|
|
45
|
+
}, title: React.createElement(Typography, { variant: "h6" },
|
|
46
|
+
React.createElement("b", null, "Export Payouts")) }),
|
|
47
|
+
React.createElement(CardContent, null,
|
|
48
|
+
React.createElement(LocalizationProvider, { adapterLocale: "sv-SE", dateAdapter: AdapterLuxon },
|
|
49
|
+
React.createElement(Stack, { gap: 2 },
|
|
50
|
+
React.createElement(Typography, null, "Generate and download a report of all paid payouts between the two selected dates."),
|
|
51
|
+
React.createElement(Stack, { alignItems: "center", direction: "row", gap: 2 },
|
|
52
|
+
React.createElement(DatePicker, { label: "Start", onChange: (date) => setStartDate(date) }),
|
|
53
|
+
"-",
|
|
54
|
+
React.createElement(DatePicker, { label: "End", onChange: (date) => setEndDate(date) })),
|
|
55
|
+
React.createElement(Button, { color: "success", variant: "contained", onClick: generateReport }, "Download"))))));
|
|
56
|
+
};
|
|
57
|
+
export default PayoutCard;
|
|
58
|
+
//# sourceMappingURL=PayoutCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PayoutCard.js","sourceRoot":"","sources":["../../../../../src/extensions/report/components/PayoutCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,9 @@ import React from "react";
|
|
|
2
2
|
import { Header } from "../../../components/Header";
|
|
3
3
|
import { Page } from "../../../components/Page";
|
|
4
4
|
import { TitleBar } from "../../../components/TitleBar";
|
|
5
|
-
import Content, {
|
|
5
|
+
import Content, { TwoColumn } from "../../../containers/Content";
|
|
6
6
|
import { useApi } from "../../../contexts/ApiContext";
|
|
7
|
+
import PayoutCard from "../components/PayoutCard";
|
|
7
8
|
import PurchaseCard from "../components/PurchaseCard";
|
|
8
9
|
export const ReportPage = () => {
|
|
9
10
|
const api = useApi();
|
|
@@ -11,7 +12,9 @@ export const ReportPage = () => {
|
|
|
11
12
|
React.createElement(Header, null,
|
|
12
13
|
React.createElement(TitleBar, { title: "Reports" })),
|
|
13
14
|
React.createElement(Content, { layout: "fixedWidth" },
|
|
14
|
-
React.createElement(
|
|
15
|
+
React.createElement(TwoColumn, null,
|
|
16
|
+
api.operations["report.purchase:create"] && React.createElement(PurchaseCard, null),
|
|
17
|
+
api.operations["report.payout:create"] && React.createElement(PayoutCard, null)))));
|
|
15
18
|
};
|
|
16
19
|
export default ReportPage;
|
|
17
20
|
//# sourceMappingURL=report.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../../../../src/extensions/report/pages/report.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,OAAO,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../../../../src/extensions/report/pages/report.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAEtD,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAClD,OAAO,YAAY,MAAM,4BAA4B,CAAC;AAEtD,MAAM,CAAC,MAAM,UAAU,GAAkB,GAAG,EAAE;IAC5C,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IAErB,OAAO,CACL,oBAAC,IAAI;QACH,oBAAC,MAAM;YACL,oBAAC,QAAQ,IAAC,KAAK,EAAC,SAAS,GAAG,CACrB;QAET,oBAAC,OAAO,IAAC,MAAM,EAAC,YAAY;YAC1B,oBAAC,SAAS;gBACP,GAAG,CAAC,UAAU,CAAC,wBAAwB,CAAC,IAAI,oBAAC,YAAY,OAAG;gBAC5D,GAAG,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,oBAAC,UAAU,OAAG,CAC/C,CACJ,CACL,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
package/dist/esm/index.js
CHANGED
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC;AACtB,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,qCAAqC,CAAC;AACpD,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,yCAAyC,CAAC;AACxD,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,WAAW,MAAM,0BAA0B,CAAC;AACxD,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AACxC,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,YAAY,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAE7B,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC;AACtB,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,qCAAqC,CAAC;AACpD,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,yCAAyC,CAAC;AACxD,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,WAAW,MAAM,0BAA0B,CAAC;AACxD,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AACxC,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,YAAY,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAE7B,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -6,7 +6,10 @@ export interface RouteInfo {
|
|
|
6
6
|
view: string;
|
|
7
7
|
action: string;
|
|
8
8
|
title: string;
|
|
9
|
+
/** Whether this route should be used for navigation in the router context */
|
|
9
10
|
navigation: boolean;
|
|
11
|
+
/** Whether this route should be shown in the navigation */
|
|
12
|
+
hideNavItem?: boolean;
|
|
10
13
|
path: string;
|
|
11
14
|
page: string;
|
|
12
15
|
}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -43,6 +43,11 @@ export interface NavigationItem {
|
|
|
43
43
|
* Will return `null` if the user is not in the group.
|
|
44
44
|
*/
|
|
45
45
|
group?: string;
|
|
46
|
+
/**
|
|
47
|
+
* Django user group string, currently only supports a single group.
|
|
48
|
+
* Will hide the navigation item if the user is in the group.
|
|
49
|
+
*/
|
|
50
|
+
excludedGroup?: string;
|
|
46
51
|
}
|
|
47
52
|
/**
|
|
48
53
|
* A map of navigation overrides for the application.
|
package/package.json
CHANGED
|
@@ -24,6 +24,7 @@ export const NavRailRoutes: React.FC<NavRailRoutesProps> = ({ navigation }) => {
|
|
|
24
24
|
useEffect(() => {
|
|
25
25
|
const newRoutes = Object.values(navigation)
|
|
26
26
|
.filter((entry): entry is { route: RouteInfo } => Boolean(entry && entry?.route))
|
|
27
|
+
.filter((entry) => !entry.route.hideNavItem)
|
|
27
28
|
.map((entry) => entry.route);
|
|
28
29
|
setCustomRoutes(newRoutes);
|
|
29
30
|
}, [navigation, setCustomRoutes]);
|
|
@@ -38,6 +39,7 @@ export const NavRailRoutes: React.FC<NavRailRoutesProps> = ({ navigation }) => {
|
|
|
38
39
|
|
|
39
40
|
if (navInfo.permission && !hasPermission(user, navInfo.permission)) continue;
|
|
40
41
|
if (navInfo.group && !hasGroup(user, navInfo.group)) continue;
|
|
42
|
+
if (navInfo.excludedGroup && hasGroup(user, navInfo.excludedGroup)) continue;
|
|
41
43
|
|
|
42
44
|
let title = navInfo.title;
|
|
43
45
|
let icon = navInfo.icon;
|
|
@@ -20,7 +20,10 @@ export interface RouteInfo {
|
|
|
20
20
|
view: string;
|
|
21
21
|
action: string;
|
|
22
22
|
title: string;
|
|
23
|
+
/** Whether this route should be used for navigation in the router context */
|
|
23
24
|
navigation: boolean;
|
|
25
|
+
/** Whether this route should be shown in the navigation */
|
|
26
|
+
hideNavItem?: boolean;
|
|
24
27
|
path: string;
|
|
25
28
|
page: string;
|
|
26
29
|
}
|
|
@@ -79,6 +82,7 @@ export const RouterContextProvider: React.FC<
|
|
|
79
82
|
action,
|
|
80
83
|
title,
|
|
81
84
|
navigation,
|
|
85
|
+
showInNavigation: navigation,
|
|
82
86
|
path,
|
|
83
87
|
page,
|
|
84
88
|
});
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import React, { useState } from "react";
|
|
2
|
+
|
|
3
|
+
import ShoppingCartOutlinedIcon from "@mui/icons-material/ShoppingCartOutlined";
|
|
4
|
+
import Button from "@mui/material/Button";
|
|
5
|
+
import Card from "@mui/material/Card";
|
|
6
|
+
import CardContent from "@mui/material/CardContent";
|
|
7
|
+
import CardHeader from "@mui/material/CardHeader";
|
|
8
|
+
import Stack from "@mui/material/Stack";
|
|
9
|
+
import { useTheme } from "@mui/material/styles";
|
|
10
|
+
import Typography from "@mui/material/Typography";
|
|
11
|
+
import { AdapterLuxon } from "@mui/x-date-pickers/AdapterLuxon";
|
|
12
|
+
import { DatePicker } from "@mui/x-date-pickers/DatePicker";
|
|
13
|
+
import { LocalizationProvider } from "@mui/x-date-pickers/LocalizationProvider";
|
|
14
|
+
|
|
15
|
+
import { DateTime } from "luxon";
|
|
16
|
+
import { useSnackbar } from "notistack";
|
|
17
|
+
|
|
18
|
+
import { useApi } from "../../../contexts/ApiContext";
|
|
19
|
+
|
|
20
|
+
export const PayoutCard: React.FC = () => {
|
|
21
|
+
const theme = useTheme();
|
|
22
|
+
const api = useApi();
|
|
23
|
+
const { enqueueSnackbar } = useSnackbar();
|
|
24
|
+
const [startDate, setStartDate] = useState<DateTime | null>(null);
|
|
25
|
+
const [endDate, setEndDate] = useState<DateTime | null>(null);
|
|
26
|
+
|
|
27
|
+
const generateReport = () => {
|
|
28
|
+
if (startDate === null || endDate === null) {
|
|
29
|
+
enqueueSnackbar("You need to enter both a start date and an end date to generate a report", {
|
|
30
|
+
variant: "error",
|
|
31
|
+
});
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const operation = api.operations["report.payout:create"];
|
|
36
|
+
const url = new URL(operation.server + operation.endpoint);
|
|
37
|
+
url.searchParams.set("start_date", startDate.toISODate()!);
|
|
38
|
+
url.searchParams.set("end_date", endDate.toISODate()!);
|
|
39
|
+
|
|
40
|
+
const a = document.createElement("a");
|
|
41
|
+
a.href = url.toString();
|
|
42
|
+
a.click();
|
|
43
|
+
a.remove();
|
|
44
|
+
|
|
45
|
+
enqueueSnackbar(`Downloading report...`, { variant: "success" });
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
return (
|
|
49
|
+
<Card
|
|
50
|
+
sx={{
|
|
51
|
+
maxWidth: 450,
|
|
52
|
+
}}
|
|
53
|
+
>
|
|
54
|
+
<CardHeader
|
|
55
|
+
avatar={<ShoppingCartOutlinedIcon />}
|
|
56
|
+
sx={{
|
|
57
|
+
borderBottomWidth: 1,
|
|
58
|
+
borderBottomStyle: "solid",
|
|
59
|
+
borderBottomColor: theme.palette.divider,
|
|
60
|
+
}}
|
|
61
|
+
title={
|
|
62
|
+
<Typography variant="h6">
|
|
63
|
+
<b>Export Payouts</b>
|
|
64
|
+
</Typography>
|
|
65
|
+
}
|
|
66
|
+
/>
|
|
67
|
+
<CardContent>
|
|
68
|
+
<LocalizationProvider adapterLocale="sv-SE" dateAdapter={AdapterLuxon}>
|
|
69
|
+
<Stack gap={2}>
|
|
70
|
+
<Typography>
|
|
71
|
+
Generate and download a report of all paid payouts between the two selected dates.
|
|
72
|
+
</Typography>
|
|
73
|
+
<Stack alignItems="center" direction="row" gap={2}>
|
|
74
|
+
<DatePicker label="Start" onChange={(date) => setStartDate(date as DateTime)} />
|
|
75
|
+
-
|
|
76
|
+
<DatePicker label="End" onChange={(date) => setEndDate(date as DateTime)} />
|
|
77
|
+
</Stack>
|
|
78
|
+
<Button color="success" variant="contained" onClick={generateReport}>
|
|
79
|
+
Download
|
|
80
|
+
</Button>
|
|
81
|
+
</Stack>
|
|
82
|
+
</LocalizationProvider>
|
|
83
|
+
</CardContent>
|
|
84
|
+
</Card>
|
|
85
|
+
);
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
export default PayoutCard;
|
|
@@ -3,9 +3,10 @@ import React from "react";
|
|
|
3
3
|
import { Header } from "../../../components/Header";
|
|
4
4
|
import { Page } from "../../../components/Page";
|
|
5
5
|
import { TitleBar } from "../../../components/TitleBar";
|
|
6
|
-
import Content, {
|
|
6
|
+
import Content, { TwoColumn } from "../../../containers/Content";
|
|
7
7
|
import { useApi } from "../../../contexts/ApiContext";
|
|
8
8
|
import { PageComponent } from "../../../types";
|
|
9
|
+
import PayoutCard from "../components/PayoutCard";
|
|
9
10
|
import PurchaseCard from "../components/PurchaseCard";
|
|
10
11
|
|
|
11
12
|
export const ReportPage: PageComponent = () => {
|
|
@@ -18,7 +19,10 @@ export const ReportPage: PageComponent = () => {
|
|
|
18
19
|
</Header>
|
|
19
20
|
|
|
20
21
|
<Content layout="fixedWidth">
|
|
21
|
-
<
|
|
22
|
+
<TwoColumn>
|
|
23
|
+
{api.operations["report.purchase:create"] && <PurchaseCard />}
|
|
24
|
+
{api.operations["report.payout:create"] && <PayoutCard />}
|
|
25
|
+
</TwoColumn>
|
|
22
26
|
</Content>
|
|
23
27
|
</Page>
|
|
24
28
|
);
|
package/src/index.ts
CHANGED
package/src/types/index.ts
CHANGED
|
@@ -50,6 +50,11 @@ export interface NavigationItem {
|
|
|
50
50
|
* Will return `null` if the user is not in the group.
|
|
51
51
|
*/
|
|
52
52
|
group?: string;
|
|
53
|
+
/**
|
|
54
|
+
* Django user group string, currently only supports a single group.
|
|
55
|
+
* Will hide the navigation item if the user is in the group.
|
|
56
|
+
*/
|
|
57
|
+
excludedGroup?: string;
|
|
53
58
|
}
|
|
54
59
|
|
|
55
60
|
/**
|