From 28253bd785799353375174e0adc05c25d0f25f69 Mon Sep 17 00:00:00 2001 From: Tim Chamberlain Date: Mon, 29 Aug 2022 21:48:38 -0500 Subject: [PATCH] QQQ-38: updated various styles --- public/apple-icon.png | Bin 2470 -> 8202 bytes public/favicon.png | Bin 2470 -> 8202 bytes src/App.tsx | 4 +- src/assets/images/favicon.png | Bin 2470 -> 8202 bytes src/index.tsx | 4 +- src/qqq/components/Widgets/BarChart.tsx | 99 ++++++++++++++++ .../Widgets/Configs/BarChartConfig.ts | 104 +++++++++++++++++ .../Widgets/Configs/PieChartConfigs.ts | 100 ++++++++++++++++ src/qqq/components/Widgets/PieChart.tsx | 110 ++++++++++++++++++ .../components/Widgets/QuickSightChart.tsx | 57 +++++++++ src/qqq/images/logo.png | Bin 0 -> 8202 bytes src/qqq/pages/app-home/index.tsx | 13 ++- src/qqq/pages/entity-list/index.tsx | 4 - src/qqq/pages/process-run/index.tsx | 2 +- src/qqq/utils/QValueUtils.ts | 1 - 15 files changed, 485 insertions(+), 13 deletions(-) create mode 100644 src/qqq/components/Widgets/BarChart.tsx create mode 100644 src/qqq/components/Widgets/Configs/BarChartConfig.ts create mode 100644 src/qqq/components/Widgets/Configs/PieChartConfigs.ts create mode 100644 src/qqq/components/Widgets/PieChart.tsx create mode 100644 src/qqq/components/Widgets/QuickSightChart.tsx create mode 100644 src/qqq/images/logo.png diff --git a/public/apple-icon.png b/public/apple-icon.png index 59c68b9103b9ab967b5e481843112202c7dd894b..d594bc60d13efdfd105f4b9d7d5aed014c3c918a 100644 GIT binary patch literal 8202 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 literal 2470 zcmV;X30d}uP)DO=Wi51haAg2tc42g3a^wOUVE_OLL`g(JRCwC$U2AL3O)dlr?v91JUoXzh21lEI=eeFJ9l^QNxr0+?%sRn+{by|vjBz+88T$Zff^#R z5xI2Ig&CFy$~NGj(EUuCmcmALG(ssrTc1soLBm}I2c)rIKilm zpA zYH5vP{G=`y=+68OtZB%>lO@_IiFR-&9ynH7meiuc;ClT66A5xDRBtkWlove*(=3Fg4HBhr!Iv03@4!2CMOwAl%B zgSHcfDfIjmNq+3uQDcQnILn4+VCtr{aCaoBz>P&P?^0OI?SnXa%EUlwl1$Z%mpUu# zgt9~*Mda0#j18+#8IwzmGbSal>ZsGc2F-y0_ZV1IDe5VNt7ef)G9~FVs zfj8doPARx?Ky*3_(wAlnUhD^-!<%Ek>d$YL#uGsAE)xmH_-Tyn5S`5cLo>kYc=RPn zthdm7D5RHf_AN=1Z4&czl**)a?*VfQT*xh9@cfhG^ubLCS7843XD@f?j1y!TH7uWh?xE zc#4^lC~Cp#XZV6}l{-Wsw&TJE$PJMBSzyh?IO{MOClQ|`?g9T3smT8m9wj5*<)qRC zG=@m0AYn4%RR~>ea=PsIJB026bOe907;?n~RJ-Mujz`cc!PL+AIj!!y5ubuOyLRb~yR(DTv}Wos#Hm)4FU>6NoU-A z4JLpXu~m%gtvJ=%I}sl$v@6xF*vhs=J4m2MSh}MtKo58HL@};EUFzJF)jbli4xDRG zkg7=uxq}m6TWA}Q$!8-goH1S`$dY|PS5{wPSAvt^{sThUfgSx?n5vLuU(kbOiu@NI zw@-eYyI7rcvMtC5M8T@jh%3E*(RrX}P=2t&z-r@DUu6H3u*T&ixU1Q=@T?}0u4ySv z_y`Ce+eDxHY`_}VT(GZ!p|ULs-5Ni-CT7h7kA3hl5DEPUAar-ksk~Y(+ZH1r&ZI3} zQxk6%S_>TyT@yS8l9TP(w%8Sg`{N)Rc`;Eh&@(xgR{OW0PvSsBwk;Mq*cP=AW7Y%- zlPb_NJ^eAo3e!PVuCp!H+8j~qVpUyry`VuZ<-f()hJrpsyR?Wc?sLM;5tAWDt4bEz z)8&fN5;3mjnpo^qQ{oZCmxzDF7)gVR*#$lxtd$LQxTGg9kdT#J5a5m+$%~-As*Q2^ z)l}D1*JxlDWGcorIf4C?q4p?ZB}4}1?N9|SDz4~yQG2QwQziIUG$ezyKvDo!MalGY zY{brlP~gUuP*IgC=p66_6bLr~z3?4AFnu%|RVN|36q%n`R(1ss%O#WHAxl2)bUU*i zP&s&;pGiz_#~NUH3@e>@K_1oHeB6Z>R6SX)hSCIsELS6g_D3Q9is{!wC?tD23Z@eu zwjriNsAx$-GV|ytdK=UQn}VuLo(I+d{6lfB{PHOLJ6jM_5H~?U^)i~+3^d4+WwONB z>NsqI_BPflF?|!_Iaa^5C{m(Z(LNcprz0d*ckno{X4O%AyaQ-j8HO?q_9`Y}WdMR% z6|{db#^dK3NNk+J6DkCC?NCy~Zb|T1WYB(B405SJ96z<7aluyA;J1T1lVDr|(C{M-OZO0;b$AJZ;)P5L_hfP-JRSV%>d+1(F2d`FgK+X5+25ASLS#+&w`FG;;Qy@i%cEf$F5jlAaDbJJQr7ggHP^F`Amz-f2gWd5X zKU)kbMmelyMDsINHLQVjFT?JXTjF-H&`DRj~9T?mEjPQ^F@FVxev4B9Ud|Cje5svy0p0V{=eJ_}>2IzoXJ z3jI;)A*GEUV!gha|6ay&!H#6m{y1E^AxX#2_hJHG21B+J(};C^62Q6qx0AL+>g{g9 z|$8$Jxvo6u%0J$lEQJ9Y1rjG6^fN!%XY#hF#)d`R{2NLNmwR)KO`r* z8aDYyBOElTU(E62zp8t%o(Y&~SmZwq2lZ9dN(WWekcUL}1;u^IB~Dq&rQmJl6hl!^ k2HOzk%r|7nkRgEo0XMNcESt%R>;M1&07*qoM6N<$f|2@zL;wH) diff --git a/public/favicon.png b/public/favicon.png index 59c68b9103b9ab967b5e481843112202c7dd894b..d594bc60d13efdfd105f4b9d7d5aed014c3c918a 100644 GIT binary patch literal 8202 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 literal 2470 zcmV;X30d}uP)DO=Wi51haAg2tc42g3a^wOUVE_OLL`g(JRCwC$U2AL3O)dlr?v91JUoXzh21lEI=eeFJ9l^QNxr0+?%sRn+{by|vjBz+88T$Zff^#R z5xI2Ig&CFy$~NGj(EUuCmcmALG(ssrTc1soLBm}I2c)rIKilm zpA zYH5vP{G=`y=+68OtZB%>lO@_IiFR-&9ynH7meiuc;ClT66A5xDRBtkWlove*(=3Fg4HBhr!Iv03@4!2CMOwAl%B zgSHcfDfIjmNq+3uQDcQnILn4+VCtr{aCaoBz>P&P?^0OI?SnXa%EUlwl1$Z%mpUu# zgt9~*Mda0#j18+#8IwzmGbSal>ZsGc2F-y0_ZV1IDe5VNt7ef)G9~FVs zfj8doPARx?Ky*3_(wAlnUhD^-!<%Ek>d$YL#uGsAE)xmH_-Tyn5S`5cLo>kYc=RPn zthdm7D5RHf_AN=1Z4&czl**)a?*VfQT*xh9@cfhG^ubLCS7843XD@f?j1y!TH7uWh?xE zc#4^lC~Cp#XZV6}l{-Wsw&TJE$PJMBSzyh?IO{MOClQ|`?g9T3smT8m9wj5*<)qRC zG=@m0AYn4%RR~>ea=PsIJB026bOe907;?n~RJ-Mujz`cc!PL+AIj!!y5ubuOyLRb~yR(DTv}Wos#Hm)4FU>6NoU-A z4JLpXu~m%gtvJ=%I}sl$v@6xF*vhs=J4m2MSh}MtKo58HL@};EUFzJF)jbli4xDRG zkg7=uxq}m6TWA}Q$!8-goH1S`$dY|PS5{wPSAvt^{sThUfgSx?n5vLuU(kbOiu@NI zw@-eYyI7rcvMtC5M8T@jh%3E*(RrX}P=2t&z-r@DUu6H3u*T&ixU1Q=@T?}0u4ySv z_y`Ce+eDxHY`_}VT(GZ!p|ULs-5Ni-CT7h7kA3hl5DEPUAar-ksk~Y(+ZH1r&ZI3} zQxk6%S_>TyT@yS8l9TP(w%8Sg`{N)Rc`;Eh&@(xgR{OW0PvSsBwk;Mq*cP=AW7Y%- zlPb_NJ^eAo3e!PVuCp!H+8j~qVpUyry`VuZ<-f()hJrpsyR?Wc?sLM;5tAWDt4bEz z)8&fN5;3mjnpo^qQ{oZCmxzDF7)gVR*#$lxtd$LQxTGg9kdT#J5a5m+$%~-As*Q2^ z)l}D1*JxlDWGcorIf4C?q4p?ZB}4}1?N9|SDz4~yQG2QwQziIUG$ezyKvDo!MalGY zY{brlP~gUuP*IgC=p66_6bLr~z3?4AFnu%|RVN|36q%n`R(1ss%O#WHAxl2)bUU*i zP&s&;pGiz_#~NUH3@e>@K_1oHeB6Z>R6SX)hSCIsELS6g_D3Q9is{!wC?tD23Z@eu zwjriNsAx$-GV|ytdK=UQn}VuLo(I+d{6lfB{PHOLJ6jM_5H~?U^)i~+3^d4+WwONB z>NsqI_BPflF?|!_Iaa^5C{m(Z(LNcprz0d*ckno{X4O%AyaQ-j8HO?q_9`Y}WdMR% z6|{db#^dK3NNk+J6DkCC?NCy~Zb|T1WYB(B405SJ96z<7aluyA;J1T1lVDr|(C{M-OZO0;b$AJZ;)P5L_hfP-JRSV%>d+1(F2d`FgK+X5+25ASLS#+&w`FG;;Qy@i%cEf$F5jlAaDbJJQr7ggHP^F`Amz-f2gWd5X zKU)kbMmelyMDsINHLQVjFT?JXTjF-H&`DRj~9T?mEjPQ^F@FVxev4B9Ud|Cje5svy0p0V{=eJ_}>2IzoXJ z3jI;)A*GEUV!gha|6ay&!H#6m{y1E^AxX#2_hJHG21B+J(};C^62Q6qx0AL+>g{g9 z|$8$Jxvo6u%0J$lEQJ9Y1rjG6^fN!%XY#hF#)d`R{2NLNmwR)KO`r* z8aDYyBOElTU(E62zp8t%o(Y&~SmZwq2lZ9dN(WWekcUL}1;u^IB~Dq&rQmJl6hl!^ k2HOzk%r|7nkRgEo0XMNcESt%R>;M1&07*qoM6N<$f|2@zL;wH) diff --git a/src/App.tsx b/src/App.tsx index 169e7e5..b4a564f 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -31,7 +31,6 @@ import React, {JSXElementConstructor, Key, ReactElement, useEffect, useState,} f import {useCookies} from "react-cookie"; import {Navigate, Route, Routes, useLocation,} from "react-router-dom"; import {Md5} from "ts-md5/dist/md5"; -import nfLogo from "assets/images/nutrifresh_one_icon_white.png"; import theme from "assets/theme"; import themeDark from "assets/theme-dark"; import MDBox from "components/MDBox"; @@ -45,6 +44,7 @@ import Analytics from "./layouts/dashboards/analytics"; import Sales from "./layouts/dashboards/sales"; import Settings from "./layouts/pages/account/settings"; import ProfileOverview from "./layouts/pages/profile/profile-overview"; +import Logo from "./qqq/images/logo.png"; import EntityCreate from "./qqq/pages/entity-create"; import EntityEdit from "./qqq/pages/entity-edit"; import EntityList from "./qqq/pages/entity-list"; @@ -436,7 +436,7 @@ export default function App() <> ;?RWoO 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 literal 2470 zcmV;X30d}uP)DO=Wi51haAg2tc42g3a^wOUVE_OLL`g(JRCwC$U2AL3O)dlr?v91JUoXzh21lEI=eeFJ9l^QNxr0+?%sRn+{by|vjBz+88T$Zff^#R z5xI2Ig&CFy$~NGj(EUuCmcmALG(ssrTc1soLBm}I2c)rIKilm zpA zYH5vP{G=`y=+68OtZB%>lO@_IiFR-&9ynH7meiuc;ClT66A5xDRBtkWlove*(=3Fg4HBhr!Iv03@4!2CMOwAl%B zgSHcfDfIjmNq+3uQDcQnILn4+VCtr{aCaoBz>P&P?^0OI?SnXa%EUlwl1$Z%mpUu# zgt9~*Mda0#j18+#8IwzmGbSal>ZsGc2F-y0_ZV1IDe5VNt7ef)G9~FVs zfj8doPARx?Ky*3_(wAlnUhD^-!<%Ek>d$YL#uGsAE)xmH_-Tyn5S`5cLo>kYc=RPn zthdm7D5RHf_AN=1Z4&czl**)a?*VfQT*xh9@cfhG^ubLCS7843XD@f?j1y!TH7uWh?xE zc#4^lC~Cp#XZV6}l{-Wsw&TJE$PJMBSzyh?IO{MOClQ|`?g9T3smT8m9wj5*<)qRC zG=@m0AYn4%RR~>ea=PsIJB026bOe907;?n~RJ-Mujz`cc!PL+AIj!!y5ubuOyLRb~yR(DTv}Wos#Hm)4FU>6NoU-A z4JLpXu~m%gtvJ=%I}sl$v@6xF*vhs=J4m2MSh}MtKo58HL@};EUFzJF)jbli4xDRG zkg7=uxq}m6TWA}Q$!8-goH1S`$dY|PS5{wPSAvt^{sThUfgSx?n5vLuU(kbOiu@NI zw@-eYyI7rcvMtC5M8T@jh%3E*(RrX}P=2t&z-r@DUu6H3u*T&ixU1Q=@T?}0u4ySv z_y`Ce+eDxHY`_}VT(GZ!p|ULs-5Ni-CT7h7kA3hl5DEPUAar-ksk~Y(+ZH1r&ZI3} zQxk6%S_>TyT@yS8l9TP(w%8Sg`{N)Rc`;Eh&@(xgR{OW0PvSsBwk;Mq*cP=AW7Y%- zlPb_NJ^eAo3e!PVuCp!H+8j~qVpUyry`VuZ<-f()hJrpsyR?Wc?sLM;5tAWDt4bEz z)8&fN5;3mjnpo^qQ{oZCmxzDF7)gVR*#$lxtd$LQxTGg9kdT#J5a5m+$%~-As*Q2^ z)l}D1*JxlDWGcorIf4C?q4p?ZB}4}1?N9|SDz4~yQG2QwQziIUG$ezyKvDo!MalGY zY{brlP~gUuP*IgC=p66_6bLr~z3?4AFnu%|RVN|36q%n`R(1ss%O#WHAxl2)bUU*i zP&s&;pGiz_#~NUH3@e>@K_1oHeB6Z>R6SX)hSCIsELS6g_D3Q9is{!wC?tD23Z@eu zwjriNsAx$-GV|ytdK=UQn}VuLo(I+d{6lfB{PHOLJ6jM_5H~?U^)i~+3^d4+WwONB z>NsqI_BPflF?|!_Iaa^5C{m(Z(LNcprz0d*ckno{X4O%AyaQ-j8HO?q_9`Y}WdMR% z6|{db#^dK3NNk+J6DkCC?NCy~Zb|T1WYB(B405SJ96z<7aluyA;J1T1lVDr|(C{M-OZO0;b$AJZ;)P5L_hfP-JRSV%>d+1(F2d`FgK+X5+25ASLS#+&w`FG;;Qy@i%cEf$F5jlAaDbJJQr7ggHP^F`Amz-f2gWd5X zKU)kbMmelyMDsINHLQVjFT?JXTjF-H&`DRj~9T?mEjPQ^F@FVxev4B9Ud|Cje5svy0p0V{=eJ_}>2IzoXJ z3jI;)A*GEUV!gha|6ay&!H#6m{y1E^AxX#2_hJHG21B+J(};C^62Q6qx0AL+>g{g9 z|$8$Jxvo6u%0J$lEQJ9Y1rjG6^fN!%XY#hF#)d`R{2NLNmwR)KO`r* z8aDYyBOElTU(E62zp8t%o(Y&~SmZwq2lZ9dN(WWekcUL}1;u^IB~Dq&rQmJl6hl!^ k2HOzk%r|7nkRgEo0XMNcESt%R>;M1&07*qoM6N<$f|2@zL;wH) diff --git a/src/index.tsx b/src/index.tsx index 55469ee..52adb68 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -21,7 +21,7 @@ import {Auth0Provider} from "@auth0/auth0-react"; import React from "react"; -import ReactDOM from "react-dom"; +import {render} from "react-dom"; import {BrowserRouter, useNavigate, useSearchParams} from "react-router-dom"; import App from "App"; import {MaterialUIControllerProvider} from "context"; @@ -62,7 +62,7 @@ function Auth0ProviderWithRedirectCallback({children, ...props}) } } -ReactDOM.render( +render( . + */ + +import Card from "@mui/material/Card"; +import Divider from "@mui/material/Divider"; +import Icon from "@mui/material/Icon"; +import {useMemo, ReactNode} from "react"; +import {Bar} from "react-chartjs-2"; +import MDBox from "components/MDBox"; +import MDTypography from "components/MDTypography"; +import configs from "qqq/components/Widgets/Configs/BarChartConfig"; + +// Declaring props types for ReportsBarChart +interface Props { + color?: "primary" | "secondary" | "info" | "success" | "warning" | "error" | "dark"; + title: string; + description?: string | ReactNode; + date: string; + chart: { + labels: string[]; + datasets: { + label: string; + data: number[]; + }; + }; + [key: string]: any; +} + +function ReportsBarChart({color, title, description, date, chart}: Props): JSX.Element +{ + const {data, options} = configs(chart.labels || [], chart.datasets || {}); + + return ( + + + {useMemo( + () => ( + + + + ), + [chart, color] + )} + + + {title} + + + {description} + + + + + schedule + + + {date} + + + + + + ); +} + +// Setting default values for the props of ReportsBarChart +ReportsBarChart.defaultProps = { + color: "dark", + description: "", +}; + +export default ReportsBarChart; diff --git a/src/qqq/components/Widgets/Configs/BarChartConfig.ts b/src/qqq/components/Widgets/Configs/BarChartConfig.ts new file mode 100644 index 0000000..6478675 --- /dev/null +++ b/src/qqq/components/Widgets/Configs/BarChartConfig.ts @@ -0,0 +1,104 @@ +/* + * QQQ - Low-code Application Framework for Engineers. + * Copyright (C) 2021-2022. Kingsrook, LLC + * 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States + * contact@kingsrook.com + * https://github.com/Kingsrook/ + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +function configs(labels: any, datasets: any) +{ + return { + data: { + labels, + datasets: [ + { + label: datasets.label, + tension: 0.4, + borderWidth: 0, + borderRadius: 4, + borderSkipped: false, + backgroundColor: "rgba(255, 255, 255, 0.8)", + data: datasets.data, + maxBarThickness: 6, + }, + ], + }, + options: { + responsive: true, + maintainAspectRatio: false, + plugins: { + legend: { + display: false, + }, + }, + interaction: { + intersect: false, + mode: "index", + }, + scales: { + y: { + grid: { + drawBorder: false, + display: true, + drawOnChartArea: true, + drawTicks: false, + borderDash: [5, 5], + color: "rgba(255, 255, 255, .2)", + }, + ticks: { + suggestedMin: 0, + suggestedMax: 500, + beginAtZero: true, + padding: 10, + font: { + size: 14, + weight: 300, + family: "Roboto", + style: "normal", + lineHeight: 2, + }, + color: "#fff", + }, + }, + x: { + grid: { + drawBorder: false, + display: true, + drawOnChartArea: true, + drawTicks: false, + borderDash: [5, 5], + color: "rgba(255, 255, 255, .2)", + }, + ticks: { + display: true, + color: "#f8f9fa", + padding: 10, + font: { + size: 14, + weight: 300, + family: "Roboto", + style: "normal", + lineHeight: 2, + }, + }, + }, + }, + }, + }; +} + +export default configs; diff --git a/src/qqq/components/Widgets/Configs/PieChartConfigs.ts b/src/qqq/components/Widgets/Configs/PieChartConfigs.ts new file mode 100644 index 0000000..eed60ec --- /dev/null +++ b/src/qqq/components/Widgets/Configs/PieChartConfigs.ts @@ -0,0 +1,100 @@ +/* + * QQQ - Low-code Application Framework for Engineers. + * Copyright (C) 2021-2022. Kingsrook, LLC + * 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States + * contact@kingsrook.com + * https://github.com/Kingsrook/ + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +import colors from "assets/theme/base/colors"; + +const {gradients, dark} = colors; + +function configs(labels: any, datasets: any) +{ + const backgroundColors = []; + + if (datasets.backgroundColors) + { + datasets.backgroundColors.forEach((color: string) => + gradients[color] + ? backgroundColors.push(gradients[color].state) + : backgroundColors.push(dark.main) + ); + } + else + { + backgroundColors.push(dark.main); + } + + return { + data: { + labels, + datasets: [ + { + label: datasets.label, + weight: 9, + cutout: 0, + tension: 0.9, + pointRadius: 2, + borderWidth: 2, + backgroundColor: backgroundColors, + fill: false, + data: datasets.data, + }, + ], + }, + options: { + responsive: true, + maintainAspectRatio: false, + plugins: { + legend: { + display: false, + }, + }, + interaction: { + intersect: false, + mode: "index", + }, + scales: { + y: { + grid: { + drawBorder: false, + display: false, + drawOnChartArea: false, + drawTicks: false, + }, + ticks: { + display: false, + }, + }, + x: { + grid: { + drawBorder: false, + display: false, + drawOnChartArea: false, + drawTicks: false, + }, + ticks: { + display: false, + }, + }, + }, + }, + }; +} + +export default configs; diff --git a/src/qqq/components/Widgets/PieChart.tsx b/src/qqq/components/Widgets/PieChart.tsx new file mode 100644 index 0000000..f7d55cd --- /dev/null +++ b/src/qqq/components/Widgets/PieChart.tsx @@ -0,0 +1,110 @@ +/* + * QQQ - Low-code Application Framework for Engineers. + * Copyright (C) 2021-2022. Kingsrook, LLC + * 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States + * contact@kingsrook.com + * https://github.com/Kingsrook/ + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +import Card from "@mui/material/Card"; +import Icon from "@mui/material/Icon"; +import {useMemo, ReactNode} from "react"; +import {Pie} from "react-chartjs-2"; +import MDBox from "components/MDBox"; +import MDTypography from "components/MDTypography"; +import configs from "qqq/components/Widgets/Configs/PieChartConfigs" + +// Declaring props types for PieChart +interface Props +{ + icon?: { + color?: "primary" | "secondary" | "info" | "success" | "warning" | "error" | "light" | "dark"; + component: ReactNode; + }; + title?: string; + description?: string | ReactNode; + height?: string | number; + chart: { + labels: string[]; + datasets: { + label: string; + backgroundColors: string[]; + data: number[]; + }; + }; + + [key: string]: any; +} + +function PieChart({icon, title, description, height, chart}: Props): JSX.Element +{ + const {data, options} = configs(chart.labels || [], chart.datasets || {}); + + const renderChart = ( + + {title || description ? ( + + {icon.component && ( + + {icon.component} + + )} + + {title && {title}} + + + {description} + + + + + ) : null} + {useMemo( + () => ( + + + + ), + [chart, height] + )} + + ); + + return title || description ? {renderChart} : renderChart; +} + +// Declaring default props for PieChart +PieChart.defaultProps = { + icon: {color: "info", component: ""}, + title: "", + description: "", + height: "19.125rem", +}; + +export default PieChart; diff --git a/src/qqq/components/Widgets/QuickSightChart.tsx b/src/qqq/components/Widgets/QuickSightChart.tsx new file mode 100644 index 0000000..845e356 --- /dev/null +++ b/src/qqq/components/Widgets/QuickSightChart.tsx @@ -0,0 +1,57 @@ +/* + * QQQ - Low-code Application Framework for Engineers. + * Copyright (C) 2021-2022. Kingsrook, LLC + * 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States + * contact@kingsrook.com + * https://github.com/Kingsrook/ + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +import Card from "@mui/material/Card"; +import React from "react"; +import MDBox from "components/MDBox"; +import MDTypography from "components/MDTypography"; + +interface Props +{ + label: string; + url: string; +} + +interface IframeProps +{ + iframe: string; +} + +function Iframe({iframe}: IframeProps) +{ + return (
); +} + +function QuickSightChart({label, url}: Props): JSX.Element +{ + const iframe = `