diff --git a/components/AppHeader/page.jsx b/components/AppHeader/page.jsx index f4f6654..f0ca772 100644 --- a/components/AppHeader/page.jsx +++ b/components/AppHeader/page.jsx @@ -1,5 +1,6 @@ import Avatar from "boring-avatars"; import Link from "next/link"; +import { useRouter } from "next/navigation"; import React from "react"; const AppHeader = ({ diff --git a/components/ShiftComponent/ShiftCard/page.jsx b/components/EmployeesComponent/Shifts/page.jsx similarity index 99% rename from components/ShiftComponent/ShiftCard/page.jsx rename to components/EmployeesComponent/Shifts/page.jsx index 2421a06..f68134b 100644 --- a/components/ShiftComponent/ShiftCard/page.jsx +++ b/components/EmployeesComponent/Shifts/page.jsx @@ -6,7 +6,7 @@ import PersianNumber from "plugins/PersianNumber"; import { getTimeOfDay } from "plugins/TimeOfDay/page"; import React, { useContext } from "react"; -const ShiftCard = () => { +const ShiftsEmployees = () => { const CTX = useContext(AppContext); const shiftsData = CTX.state.shiftsData; @@ -134,4 +134,4 @@ const ShiftCard = () => { ); }; -export default ShiftCard; +export default ShiftsEmployees; diff --git a/components/NavBar/NavBAr.jsx b/components/NavBar/NavBAr.jsx index 6249315..c3607c1 100644 --- a/components/NavBar/NavBAr.jsx +++ b/components/NavBar/NavBAr.jsx @@ -180,9 +180,9 @@ const NavBAr = (props) => { - + <> - {usePath.includes("/routine") ? ( + {usePath.includes("/tasks") ? (
diff --git a/components/TaskCard/page.jsx b/components/TaskPage/ActivityCard/page.jsx similarity index 99% rename from components/TaskCard/page.jsx rename to components/TaskPage/ActivityCard/page.jsx index ed9242a..3bae0c5 100644 --- a/components/TaskCard/page.jsx +++ b/components/TaskPage/ActivityCard/page.jsx @@ -3,7 +3,7 @@ import Buttonbriz from "plugins/Buttonbriz/page"; import Input from "plugins/Input/page"; import React, { useState } from "react"; -const TaskCard = () => { +const ActivityCard = () => { const [conditionTask, setConditionTask] = useState(0); const handleConditionTaskCircle = () => { @@ -211,4 +211,4 @@ const TaskCard = () => { ); }; -export default TaskCard; +export default ActivityCard; diff --git a/components/TaskPage/TasksCard/page.jsx b/components/TaskPage/TasksCard/page.jsx new file mode 100644 index 0000000..0a9f9a6 --- /dev/null +++ b/components/TaskPage/TasksCard/page.jsx @@ -0,0 +1,173 @@ +"use client"; +import AppContext from "@ctx/AppContext"; +import moment from "jalali-moment"; +import { useRouter } from "next/navigation"; +import PersianNumber from "plugins/PersianNumber"; +import React, { useContext, useEffect, useState } from "react"; +import { Swiper, SwiperSlide } from "swiper/react"; + +const TasksCard = () => { + const CTX = useContext(AppContext); + const tasksData = CTX.state.tasksData; + const router = useRouter(); + + const [showAllTasks, setShowAllTasks] = useState(false); + const [showJust5TasksData, setShowJust5TasksData] = useState(null); + + useEffect(() => { + if (tasksData.length > 5) { + setShowJust5TasksData(tasksData.slice(0, 5)); + } else { + setShowJust5TasksData(tasksData); + } + }, [tasksData]); + + const goToEditTask = (id) => { + CTX.setGoToEditTask(true); + router.push("/tasks/add-task?new=false"); + CTX.GetTask(id); + CTX.setIdEditTask(id); + }; + + return ( + <> + {showAllTasks ? ( +
+ {tasksData.map((e) => ( +
goToEditTask(e.id)} + > +
+
+ {e?.scheduleType == 0 + ? "روزانه" + : e?.scheduleType == 1 + ? "هفتگی" + : e?.scheduleType == 2 + ? "مخصوص" + : ""} +
+
+
+
+

+ {e?.title}{" "} +

+
+
+ +
+ {e?.scheduleType == 2 && ( +
+ {" "} +
+ )} + +
+ {e?.shifts[0]} +
+
+
+ ))} +
+ ) : ( + console.log("slide change")} + onSwiper={(swiper) => console.log(swiper)} + > + {showJust5TasksData?.map((e) => ( + +
goToEditTask(e.id)} + > +
+
+ {e?.scheduleType == 0 + ? "روزانه" + : e?.scheduleType == 1 + ? "هفتگی" + : e?.scheduleType == 2 + ? "مخصوص" + : ""} +
+
+ {e?.shifts[0]} +
+
+
+
+

+ {e?.title}{" "} +

+
+ +
+
+
+
+
+
+ +
+

+ + + + + + نفر دیگر +

+
+
+ +
+
+ + + +
+

+ +

+
+
+
+
+ ))} + + {tasksData.length > 5 && ( +
setShowAllTasks(true)} + > +
+

+ مشاهده بیشتر +

+
+
+ )} +
+
+ )} + + ); +}; + +export default TasksCard; diff --git a/package.json b/package.json index 78df56c..90fbb41 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "autoprefixer": "10.4.15", "axios": "^1.5.1", "boring-avatars": "^1.10.1", + "chart.js": "^4.4.0", "core-util-is": "^1.0.3", "framer-motion": "^10.16.1", "jalali-moment": "^3.3.11", diff --git a/plugins/BottomSheet/BottomSheetAddUserToPositionShiftPlan.jsx b/plugins/BottomSheet/BottomSheetAddUserToPositionShiftPlan.jsx new file mode 100644 index 0000000..ebb4489 --- /dev/null +++ b/plugins/BottomSheet/BottomSheetAddUserToPositionShiftPlan.jsx @@ -0,0 +1,161 @@ +"use client"; + +import React, { useContext, useEffect, useRef, useState } from "react"; +import { BottomSheet } from "react-spring-bottom-sheet"; +import Input from "plugins/Input/page"; +import AppContext from "@ctx/AppContext"; +import SimpleReactValidator from "simple-react-validator"; +import CheckBoxBriz from "plugins/CheckBoxBriz/page"; +import Buttonbriz from "plugins/Buttonbriz/page"; +import { toast } from "react-toastify"; + +const BottomSheetAddUserToPositionShiftPlan = ({ + setUserAndPositionIds, + userAndPositionIds, + positionId, + positionName, +}) => { + const CTX = useContext(AppContext); + + const [, forceUpdate] = useState(); + + const usersData = CTX.state.usersData; + + const validator = useRef( + new SimpleReactValidator({ + messages: { + required: "پر کردن این فیلد الزامی میباشد", + }, + element: (message) => ( + <> +
+ {message} +
+ + ), + }) + ); + + // const body = { + // persianName, + // englishName, + // description, + // permissions: permissionsChoose, + // }; + // const bodyUpdate = { + // persianName, + // englishName, + // description, + // permissions: permissionsChoose, + // roleId: roleData.roleId, + // }; + + // const clear = () => { + // setPersianName(""); + // setEnglishName(""); + // setDescription(""); + // CTX.setPermissionsChoose([]); + // }; + + // const handleCreateRole = (update) => { + // if (validator.current.allValid()) { + // if (update == "UPDATE") { + // CTX.UpdateRole(bodyUpdate); + // } else { + // CTX.CreateRole(body); + // } + // } else { + // toast.error("پرکردن همه ی فیلد ها واجب است", { + // position: "bottom-right", + // autoClose: 2000, + // hideProgressBar: false, + // closeOnClick: true, + // pauseOnHover: true, + // draggable: true, + // progress: undefined, + // }); + + // validator.current.showMessages(); + // forceUpdate(1); + // } + // }; + + const handleBottomSheetAddUserToPositionShiftPlan = (e) => { + if (e.type == "OPEN") { + CTX.GetUsers(); + } else if (e.type == "CLOSE") { + // clear(); + // CTX.setGoToEditRole(false); + // CTX.setIdEditRole(null); + // CTX.setRoleData([]); + } + }; + + // useEffect(() => { + // if (goToEditRole) { + // setPersianName(roleData.persianName); + // setEnglishName(roleData.englishName); + // setDescription(roleData.description); + // CTX.setPermissionsChoose(roleData.permissions); + // } + // }, [roleData]); + + return ( + handleBottomSheetAddUserToPositionShiftPlan(e)} + open={CTX.state.BottomSheetAddUserToPositionShiftPlanOpen} + onDismiss={() => CTX.setBottomSheetAddUserToPositionShiftPlanOpen(false)} + blocking={false} + > +
+

+ افزودن یوزر به پوزیشن {positionName} +

+
+ + {usersData?.map((e) => ( +
item.value === e.userId && item.key == positionId + ) + ? "bg-primary-100" + : "bg-gray-100" + }`} + onClick={() => { + const userExistsIndex = userAndPositionIds.findIndex( + (item) => item.value === e.userId && item.key === positionId + ); + + if (userExistsIndex !== -1) { + setUserAndPositionIds((current) => [ + ...current.slice(0, userExistsIndex), + ...current.slice(userExistsIndex + 1), + ]); + } else { + setUserAndPositionIds((current) => [ + ...current, + { + key: positionId, + value: e.userId, + }, + ]); + } + }} + > +
+

+ {e?.firstName} {e?.lastName} +

+ +

+ {e?.roleNames[0]} +

+
+
+ ))} +
+ ); +}; + +export default BottomSheetAddUserToPositionShiftPlan; diff --git a/plugins/BottomSheet/BottomSheetCreateEmployees.jsx b/plugins/BottomSheet/BottomSheetCreateEmployees.jsx index e692632..ee7be34 100644 --- a/plugins/BottomSheet/BottomSheetCreateEmployees.jsx +++ b/plugins/BottomSheet/BottomSheetCreateEmployees.jsx @@ -23,7 +23,7 @@ const BottomSheetCreateEmployees = (props) => { const [roleSelectCurrntData, setRoleSelectCurrntData] = useState(""); const [roleSelectData, setRoleSelectData] = useState([]); - const [positionId, setPositionId] = useState(""); + // const [positionId, setPositionId] = useState(""); const [positionIdSelectData, setPositionIdSelectData] = useState(""); const [, forceUpdate] = useState(); @@ -64,7 +64,7 @@ const BottomSheetCreateEmployees = (props) => { gender: parseInt(gender), // nationalId, roleIds: rolesChoose, - positionId, + // positionId, }; const bodyUpdate = { @@ -83,7 +83,7 @@ const BottomSheetCreateEmployees = (props) => { // nationalId, roleIds: rolesChoose, userId: userData.id, - positionId, + // positionId, }; console.log(bodyUpdate); @@ -97,7 +97,7 @@ const BottomSheetCreateEmployees = (props) => { // setBirthDate(""); setRoleSelectCurrntData(""); setRoleSelectData([]); - setPositionId(""); + // setPositionId(""); CTX.setRolesChoose([]); }; @@ -148,12 +148,12 @@ const BottomSheetCreateEmployees = (props) => { })) ); - setPositionIdSelectData( - positionsData.map((item) => ({ - key: item.name, - value: item.id, - })) - ); + // setPositionIdSelectData( + // positionsData.map((item) => ({ + // key: item.name, + // value: item.id, + // })) + // ); console.log(idEditUser); @@ -190,7 +190,7 @@ const BottomSheetCreateEmployees = (props) => { // }); // setRoleSelectCurrntData(""); CTX.setRolesChoose(userData.roleIds); - setPositionId(userData.positionId); + // setPositionId(userData.positionId); console.log("userData2", userData); } @@ -361,27 +361,14 @@ const BottomSheetCreateEmployees = (props) => { ))}
-
+ {/*
{ setPositionId(e.target.value); - // setSectionId(e.target.value); - // if (!!sectionIdChoose.find((b) => b == e.target.value)) { - // toast.error("سکشن تکراری است", { - // position: "bottom-right", - // closeOnClick: true, - // }); - // } else { - // CTX.setSectionIdChoose((current) => [ - // ...current, - // e.target.value, - // ]); - // } }} style="text-right" validatorData={validator.current.message( @@ -397,18 +384,13 @@ const BottomSheetCreateEmployees = (props) => {
- {/*
deleteSection(e)} - >
*/} -

{positionsData?.find((b) => b.id == positionId)?.name}

-
+
*/} {goToEditUser ? ( { const body = { description, - title, + name: title, }; const bodyUpdate = { description, - title, + name: title, id: idEditRoutine, }; diff --git a/plugins/BottomSheet/BottomSheetCreateShifts.jsx b/plugins/BottomSheet/BottomSheetCreateShifts.jsx index 4d4f2fd..3d1acef 100644 --- a/plugins/BottomSheet/BottomSheetCreateShifts.jsx +++ b/plugins/BottomSheet/BottomSheetCreateShifts.jsx @@ -13,6 +13,9 @@ const BottomSheetCreateShifts = (props) => { const [title, setTitle] = useState(""); const [description, setDescription] = useState(""); const [dayOfWeeksCurrent, setDayOfWeeksCurrent] = useState(""); + const [routineId, setRoutineId] = useState([]); + const [routineIdSelectData, setRoutineIdSelectData] = useState(""); + const [, forceUpdate] = useState(); const dayOfWeeksChoose = CTX.state.dayOfWeeksChoose; @@ -21,6 +24,7 @@ const BottomSheetCreateShifts = (props) => { const goToEditShift = CTX.state.goToEditShift; const idEditShift = CTX.state.idEditShift; const shiftData = CTX.state.shiftData; + const routinesData = CTX.state.routinesData; const validator = useRef( new SimpleReactValidator({ @@ -53,6 +57,7 @@ const BottomSheetCreateShifts = (props) => { setDayOfWeeksCurrent(""); setDescription(""); setTitle(""); + setRoutineId([]); CTX.setEndAtTimeShift(["00", "00"]); CTX.setStartAtTimeShift(["00", "00"]); CTX.setDayOfWeeksChoose([]); @@ -64,6 +69,7 @@ const BottomSheetCreateShifts = (props) => { endAt: endAtTimeShift[0] + ":" + endAtTimeShift[1] + ":00", startAt: startAtTimeShift[0] + ":" + startAtTimeShift[1] + ":00", dayOfWeeks: dayOfWeeksChoose, + routines: routineId, }; const bodyUpdate = { @@ -73,6 +79,7 @@ const BottomSheetCreateShifts = (props) => { startAt: startAtTimeShift[0] + ":" + startAtTimeShift[1] + ":00", dayOfWeeks: dayOfWeeksChoose, id: shiftData.id, + routines: routineId, }; const handleCreateShift = (update) => { if (validator.current.allValid()) { @@ -100,6 +107,13 @@ const BottomSheetCreateShifts = (props) => { console.log(body); const handleBottomSheetCreateShift = (e) => { + setRoutineIdSelectData( + routinesData.map((item) => ({ + key: item.name, + value: item.id, + })) + ); + if (e.type == "OPEN") { if (goToEditShift) { CTX.GetShift(idEditShift); @@ -129,11 +143,13 @@ const BottomSheetCreateShifts = (props) => { shiftData.endAt.split(":")[0], shiftData.endAt.split(":")[1], ]); + setRoutineId(shiftData.routines.map((item) => item.routineId)); CTX.setDayOfWeeksChoose(shiftData.days); } }, [shiftData]); + console.log("routineId", routineId); return ( handleBottomSheetCreateShift(e)} @@ -272,7 +288,6 @@ const BottomSheetCreateShifts = (props) => { defaultValue={"انتخاب کنید"} />
-
{dayOfWeeksChoose && dayOfWeeksChoose.map((e) => ( @@ -290,6 +305,36 @@ const BottomSheetCreateShifts = (props) => {
))}
+
+ { + setRoutineId([e.target.value]); + }} + style="text-right" + validatorData={validator.current.message( + "routineId", + routineId[0], + "required" + )} + select={true} + selectData={routineIdSelectData} + defaultValue={"انتخاب کنید"} + /> +
+ +
+
+
+

+ {routinesData?.find((b) => b.id == routineId[0])?.name} +

+
+
+
{ +const DatePickerIran = ({ + datePickerEvent, + date, + zindex, + title, + validator, + validatorData, + name, +}) => { const CTX = useContext(AppContext); const [selectedDay, setSelectedDay] = useState(null); @@ -26,7 +34,7 @@ const DatePickerIran = ({ datePickerEvent, date, zindex }) => { className={`flex justify-end relative top-[22px] right-3 ltr ${zindex}`} >
-

تاریخ تولد

+

{title}

@@ -38,7 +46,15 @@ const DatePickerIran = ({ datePickerEvent, date, zindex }) => { 2 == 1 ? "form-control-white" : "form-control" }`} locale="fa" + name={name} /> + +
+ + {" "} + {validator ? <>{validatorData} : ""} + +
); }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 74e5000..f910f16 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,6 +5,9 @@ settings: excludeLinksFromLockfile: false dependencies: + '@amcharts/amcharts4': + specifier: ^4.10.38 + version: 4.10.38 '@hassanmojab/react-modern-calendar-datepicker': specifier: ^3.1.7 version: 3.1.7(react-dom@18.2.0)(react@18.2.0) @@ -20,9 +23,15 @@ dependencies: boring-avatars: specifier: ^1.10.1 version: 1.10.1 + chart.js: + specifier: ^4.4.0 + version: 4.4.0 core-util-is: specifier: ^1.0.3 version: 1.0.3 + faker: + specifier: ^6.6.6 + version: 6.6.6 framer-motion: specifier: ^10.16.1 version: 10.16.1(react-dom@18.2.0)(react@18.2.0) @@ -38,6 +47,9 @@ dependencies: react: specifier: 18.2.0 version: 18.2.0 + react-chartjs-2: + specifier: ^5.2.0 + version: 5.2.0(chart.js@4.4.0)(react@18.2.0) react-dom: specifier: 18.2.0 version: 18.2.0(react@18.2.0) @@ -50,6 +62,9 @@ dependencies: react-toastify: specifier: ^9.1.3 version: 9.1.3(react-dom@18.2.0)(react@18.2.0) + recharts: + specifier: ^2.9.3 + version: 2.9.3(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0) simple-react-validator: specifier: ^1.6.2 version: 1.6.2 @@ -75,6 +90,25 @@ packages: engines: {node: '>=10'} dev: false + /@amcharts/amcharts4@4.10.38: + resolution: {integrity: sha512-mX1MYvXCU/wMr6q1WQRVRS1qAbxyiYBfkkdC2ZpT+0uKYIWVUHo+phtbRgAE9t/3ymfWiDEZ813lcAtbokMf3w==} + dependencies: + '@babel/runtime': 7.23.1 + core-js: 3.33.2 + d3-force: 3.0.0 + d3-geo: 3.1.0 + d3-geo-projection: 4.0.0 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + pdfmake: 0.2.8 + polylabel: 1.1.0 + raf: 3.4.1 + regression: 2.0.1 + rgbcolor: 1.0.1 + stackblur-canvas: 2.6.0 + tslib: 2.6.2 + dev: false + /@babel/runtime@7.23.1: resolution: {integrity: sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g==} engines: {node: '>=6.9.0'} @@ -96,6 +130,42 @@ packages: dev: false optional: true + /@foliojs-fork/fontkit@1.9.1: + resolution: {integrity: sha512-U589voc2/ROnvx1CyH9aNzOQWJp127JGU1QAylXGQ7LoEAF6hMmahZLQ4eqAcgHUw+uyW4PjtCItq9qudPkK3A==} + dependencies: + '@foliojs-fork/restructure': 2.0.2 + brfs: 2.0.2 + brotli: 1.3.3 + browserify-optional: 1.0.1 + clone: 1.0.4 + deep-equal: 1.1.2 + dfa: 1.2.0 + tiny-inflate: 1.0.3 + unicode-properties: 1.4.1 + unicode-trie: 2.0.0 + dev: false + + /@foliojs-fork/linebreak@1.1.1: + resolution: {integrity: sha512-pgY/+53GqGQI+mvDiyprvPWgkTlVBS8cxqee03ejm6gKAQNsR1tCYCIvN9FHy7otZajzMqCgPOgC4cHdt4JPig==} + dependencies: + base64-js: 1.3.1 + brfs: 2.0.2 + unicode-trie: 2.0.0 + dev: false + + /@foliojs-fork/pdfkit@0.14.0: + resolution: {integrity: sha512-nMOiQAv6id89MT3tVTCgc7HxD5ZMANwio2o5yvs5sexQkC0KI3BLaLakpsrHmFfeGFAhqPmZATZGbJGXTUebpg==} + dependencies: + '@foliojs-fork/fontkit': 1.9.1 + '@foliojs-fork/linebreak': 1.1.1 + crypto-js: 4.2.0 + png-js: 1.0.0 + dev: false + + /@foliojs-fork/restructure@2.0.2: + resolution: {integrity: sha512-59SgoZ3EXbkfSX7b63tsou/SDGzwUEK6MuB5sKqgVK1/XE0fxmpsOb9DQI8LXW3KfGnAjImCGhhEb7uPPAUVNA==} + dev: false + /@hassanmojab/react-modern-calendar-datepicker@3.1.7(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-dX/FXGcvIW31dgA1fcFJkHmIx3k4AqX166SfCQ6weBb0ZLr6C/f5YzcXVop19ifX18ezEw11Xb+l02JGj4+R6g==} peerDependencies: @@ -143,6 +213,10 @@ packages: resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} dev: false + /@kurkle/color@0.3.2: + resolution: {integrity: sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==} + dev: false + /@next/env@13.4.19: resolution: {integrity: sha512-FsAT5x0jF2kkhNkKkukhsyYOrRqtSxrEhfliniIq0bwWbuXLgyt3Gv0Ml+b91XwjwArmuP7NxCiGd++GGKdNMQ==} dev: false @@ -280,6 +354,48 @@ packages: tslib: 2.6.2 dev: false + /@types/d3-array@3.2.1: + resolution: {integrity: sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==} + dev: false + + /@types/d3-color@3.1.3: + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} + dev: false + + /@types/d3-ease@3.0.2: + resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} + dev: false + + /@types/d3-interpolate@3.0.4: + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} + dependencies: + '@types/d3-color': 3.1.3 + dev: false + + /@types/d3-path@3.0.2: + resolution: {integrity: sha512-WAIEVlOCdd/NKRYTsqCpOMHQHemKBEINf8YXMYOtXH0GA7SY0dqMB78P3Uhgfy+4X+/Mlw2wDtlETkN6kQUCMA==} + dev: false + + /@types/d3-scale@4.0.8: + resolution: {integrity: sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==} + dependencies: + '@types/d3-time': 3.0.3 + dev: false + + /@types/d3-shape@3.1.5: + resolution: {integrity: sha512-dfEWpZJ1Pdg8meLlICX1M3WBIpxnaH2eQV2eY43Y5ysRJOTAV9f3/R++lgJKFstfrEOE2zdJ0sv5qwr2Bkic6Q==} + dependencies: + '@types/d3-path': 3.0.2 + dev: false + + /@types/d3-time@3.0.3: + resolution: {integrity: sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==} + dev: false + + /@types/d3-timer@3.0.2: + resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} + dev: false + /@types/eslint-scope@3.7.6: resolution: {integrity: sha512-zfM4ipmxVKWdxtDaJ3MP3pBurDXOCoyjvlpE3u6Qzrmw4BPbfm4/ambIeTk/r/J0iq/+2/xp0Fmt+gFvXJY2PQ==} dependencies: @@ -465,6 +581,25 @@ packages: acorn: 8.10.0 dev: true + /acorn-node@1.8.2: + resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} + dependencies: + acorn: 7.4.1 + acorn-walk: 7.2.0 + xtend: 4.0.2 + dev: false + + /acorn-walk@7.2.0: + resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} + engines: {node: '>=0.4.0'} + dev: false + + /acorn@7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: false + /acorn@8.10.0: resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} engines: {node: '>=0.4.0'} @@ -488,6 +623,13 @@ packages: uri-js: 4.4.1 dev: true + /amdefine@1.0.1: + resolution: {integrity: sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==} + engines: {node: '>=0.4.2'} + requiresBuild: true + dev: false + optional: true + /ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} @@ -523,6 +665,23 @@ packages: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} dev: false + /array-from@2.1.1: + resolution: {integrity: sha512-GQTc6Uupx1FCavi5mPzBvVT7nEOeWMmUA9P95wpfpW1XwMSKs+KaymD5C2Up7KAUKg/mYwbsUYzdZWcoajlNZg==} + dev: false + + /ast-transform@0.0.0: + resolution: {integrity: sha512-e/JfLiSoakfmL4wmTGPjv0HpTICVmxwXgYOB8x+mzozHL8v+dSfCbrJ8J8hJ0YBP0XcYu1aLZ6b/3TnxNK3P2A==} + dependencies: + escodegen: 1.2.0 + esprima: 1.0.4 + through: 2.3.8 + dev: false + + /ast-types@0.7.8: + resolution: {integrity: sha512-RIOpVnVlltB6PcBJ5BMLx+H+6JJ/zjDGU0t7f0L6c2M1dqcK92VQopLBlPQ9R80AVXelfqYgjcPLtHtDbNFg0Q==} + engines: {node: '>= 0.6'} + dev: false + /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: false @@ -557,6 +716,10 @@ packages: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: false + /base64-js@1.3.1: + resolution: {integrity: sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==} + dev: false + /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} dev: false @@ -596,6 +759,36 @@ packages: fill-range: 7.0.1 dev: false + /brfs@2.0.2: + resolution: {integrity: sha512-IrFjVtwu4eTJZyu8w/V2gxU7iLTtcHih67sgEdzrhjLBMHp2uYefUBfdM4k2UvcuWMgV7PQDZHSLeNWnLFKWVQ==} + hasBin: true + dependencies: + quote-stream: 1.0.2 + resolve: 1.22.4 + static-module: 3.0.4 + through2: 2.0.5 + dev: false + + /brotli@1.3.3: + resolution: {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==} + dependencies: + base64-js: 1.5.1 + dev: false + + /browser-resolve@1.11.3: + resolution: {integrity: sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==} + dependencies: + resolve: 1.1.7 + dev: false + + /browserify-optional@1.0.1: + resolution: {integrity: sha512-VrhjbZ+Ba5mDiSYEuPelekQMfTbhcA2DhLk2VQWqdcCROWeFqlTcXZ7yfRkXCIl8E+g4gINJYJiRB7WEtfomAQ==} + dependencies: + ast-transform: 0.0.0 + ast-types: 0.7.8 + browser-resolve: 1.11.3 + dev: false + /browserslist@4.21.10: resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -606,9 +799,13 @@ packages: node-releases: 2.0.13 update-browserslist-db: 1.0.11(browserslist@4.21.10) + /buffer-equal@0.0.1: + resolution: {integrity: sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==} + engines: {node: '>=0.4.0'} + dev: false + /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: true /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} @@ -624,6 +821,14 @@ packages: streamsearch: 1.1.0 dev: false + /call-bind@1.0.5: + resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + dependencies: + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + set-function-length: 1.1.1 + dev: false + /camelcase-css@2.0.1: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} @@ -644,6 +849,13 @@ packages: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: false + /chart.js@4.4.0: + resolution: {integrity: sha512-vQEj6d+z0dcsKLlQvbKIMYFHd3t8W/7L2vfJIbYcfyPcRx92CsHqECpueN8qVGNlKyDcr5wBrYAYKnfu/9Q1hQ==} + engines: {pnpm: '>=7'} + dependencies: + '@kurkle/color': 0.3.2 + dev: false + /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} @@ -664,6 +876,10 @@ packages: engines: {node: '>=6.0'} dev: true + /classnames@2.3.2: + resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} + dev: false + /cli-cursor@3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} @@ -731,13 +947,33 @@ packages: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: false -<<<<<<< HEAD + /concat-stream@1.6.2: + resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} + engines: {'0': node >= 0.8} + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 2.3.8 + typedarray: 0.0.6 + dev: false + + /convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + dev: false + + /core-js@3.33.2: + resolution: {integrity: sha512-XeBzWI6QL3nJQiHmdzbAOiMYqjrb7hwU7A39Qhvd/POSa/t9E1AeZyEZx3fNvp/vtM8zXwhoL0FsiS0hD0pruQ==} + requiresBuild: true + dev: false + /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: false -======= ->>>>>>> e41e593cde5b6163efe27a5dd7b6af11013cad88 + /crypto-js@4.2.0: + resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + dev: false + /css-loader@6.8.1(webpack@5.89.0): resolution: {integrity: sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==} engines: {node: '>= 12.13.0'} @@ -760,17 +996,196 @@ packages: engines: {node: '>=4'} hasBin: true + /d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} + dependencies: + internmap: 2.0.3 + dev: false + + /d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + dev: false + + /d3-dispatch@3.0.1: + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} + engines: {node: '>=12'} + dev: false + + /d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + dev: false + + /d3-force@3.0.0: + resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} + engines: {node: '>=12'} + dependencies: + d3-dispatch: 3.0.1 + d3-quadtree: 3.0.1 + d3-timer: 3.0.1 + dev: false + + /d3-format@3.1.0: + resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} + engines: {node: '>=12'} + dev: false + + /d3-geo-projection@4.0.0: + resolution: {integrity: sha512-p0bK60CEzph1iqmnxut7d/1kyTmm3UWtPlwdkM31AU+LW+BXazd5zJdoCn7VFxNCHXRngPHRnsNn5uGjLRGndg==} + engines: {node: '>=12'} + hasBin: true + dependencies: + commander: 7.2.0 + d3-array: 3.2.4 + d3-geo: 3.1.0 + dev: false + + /d3-geo@3.1.0: + resolution: {integrity: sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==} + engines: {node: '>=12'} + dependencies: + d3-array: 3.2.4 + dev: false + + /d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + dependencies: + d3-color: 3.1.0 + dev: false + + /d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} + dev: false + + /d3-quadtree@3.0.1: + resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} + engines: {node: '>=12'} + dev: false + + /d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} + dependencies: + d3-array: 3.2.4 + d3-format: 3.1.0 + d3-interpolate: 3.0.1 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + dev: false + + /d3-selection@3.0.0: + resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} + engines: {node: '>=12'} + dev: false + + /d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} + dependencies: + d3-path: 3.1.0 + dev: false + + /d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} + dependencies: + d3-time: 3.1.0 + dev: false + + /d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} + dependencies: + d3-array: 3.2.4 + dev: false + + /d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + dev: false + + /d3-transition@3.0.1(d3-selection@3.0.0): + resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} + engines: {node: '>=12'} + peerDependencies: + d3-selection: 2 - 3 + dependencies: + d3-color: 3.1.0 + d3-dispatch: 3.0.1 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-timer: 3.0.1 + dev: false + + /d@1.0.1: + resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} + dependencies: + es5-ext: 0.10.62 + type: 1.2.0 + dev: false + + /dash-ast@2.0.1: + resolution: {integrity: sha512-5TXltWJGc+RdnabUGzhRae1TRq6m4gr+3K2wQX0is5/F2yS6MJXJvLyI3ErAnsAXuJoGqvfVD5icRgim07DrxQ==} + dev: false + + /decimal.js-light@2.5.1: + resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==} + dev: false + + /deep-equal@1.1.2: + resolution: {integrity: sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==} + engines: {node: '>= 0.4'} + dependencies: + is-arguments: 1.1.1 + is-date-object: 1.0.5 + is-regex: 1.1.4 + object-is: 1.1.5 + object-keys: 1.1.1 + regexp.prototype.flags: 1.5.1 + dev: false + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: false + /defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: clone: 1.0.4 dev: false + /define-data-property@1.1.1: + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + dev: false + + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + has-property-descriptors: 1.0.1 + object-keys: 1.1.1 + dev: false + /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} dev: false + /dfa@1.2.0: + resolution: {integrity: sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==} + dev: false + /didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} dev: false @@ -779,6 +1194,18 @@ packages: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} dev: false + /dom-helpers@3.4.0: + resolution: {integrity: sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==} + dependencies: + '@babel/runtime': 7.23.1 + dev: false + + /duplexer2@0.1.4: + resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} + dependencies: + readable-stream: 2.3.8 + dev: false + /electron-to-chromium@1.4.503: resolution: {integrity: sha512-LF2IQit4B0VrUHFeQkWhZm97KuJSGF2WJqq1InpY+ECpFRkXd8yTIaTtJxsO0OKDmiBYwWqcrNaXOurn2T2wiA==} @@ -798,6 +1225,54 @@ packages: resolution: {integrity: sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==} dev: true + /es5-ext@0.10.62: + resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==} + engines: {node: '>=0.10'} + requiresBuild: true + dependencies: + es6-iterator: 2.0.3 + es6-symbol: 3.1.3 + next-tick: 1.1.0 + dev: false + + /es6-iterator@2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + dependencies: + d: 1.0.1 + es5-ext: 0.10.62 + es6-symbol: 3.1.3 + dev: false + + /es6-map@0.1.5: + resolution: {integrity: sha512-mz3UqCh0uPCIqsw1SSAkB/p0rOzF/M0V++vyN7JqlPtSW/VsYgQBvVvqMLmfBuyMzTpLnNqi6JmcSizs4jy19A==} + dependencies: + d: 1.0.1 + es5-ext: 0.10.62 + es6-iterator: 2.0.3 + es6-set: 0.1.6 + es6-symbol: 3.1.3 + event-emitter: 0.3.5 + dev: false + + /es6-set@0.1.6: + resolution: {integrity: sha512-TE3LgGLDIBX332jq3ypv6bcOpkLO0AslAQo7p2VqX/1N46YNsvIWgvjojjSEnWEGWMhr1qUbYeTSir5J6mFHOw==} + engines: {node: '>=0.12'} + dependencies: + d: 1.0.1 + es5-ext: 0.10.62 + es6-iterator: 2.0.3 + es6-symbol: 3.1.3 + event-emitter: 0.3.5 + type: 2.7.2 + dev: false + + /es6-symbol@3.1.3: + resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} + dependencies: + d: 1.0.1 + ext: 1.7.0 + dev: false + /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -807,6 +1282,31 @@ packages: engines: {node: '>=0.8.0'} dev: false + /escodegen@1.14.3: + resolution: {integrity: sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==} + engines: {node: '>=4.0'} + hasBin: true + dependencies: + esprima: 4.0.1 + estraverse: 4.3.0 + esutils: 2.0.3 + optionator: 0.8.3 + optionalDependencies: + source-map: 0.6.1 + dev: false + + /escodegen@1.2.0: + resolution: {integrity: sha512-yLy3Cc+zAC0WSmoT2fig3J87TpQ8UaZGx8ahCAs9FL8qNbyV7CVyPKS74DG4bsHiL5ew9sxdYx131OkBQMFnvA==} + engines: {node: '>=0.4.0'} + hasBin: true + dependencies: + esprima: 1.0.4 + estraverse: 1.5.1 + esutils: 1.0.0 + optionalDependencies: + source-map: 0.1.43 + dev: false + /eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} @@ -815,6 +1315,18 @@ packages: estraverse: 4.3.0 dev: true + /esprima@1.0.4: + resolution: {integrity: sha512-rp5dMKN8zEs9dfi9g0X1ClLmV//WRyk/R15mppFNICIFRG5P92VP7Z04p8pk++gABo9W2tY+kHyu6P1mEHgmTA==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: false + + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: false + /esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} @@ -822,21 +1334,56 @@ packages: estraverse: 5.3.0 dev: true + /estraverse@1.5.1: + resolution: {integrity: sha512-FpCjJDfmo3vsc/1zKSeqR5k42tcIhxFIlvq+h9j0fO2q/h2uLKyweq7rYJ+0CoVvrGQOxIS5wyBrW/+vF58BUQ==} + engines: {node: '>=0.4.0'} + dev: false + /estraverse@4.3.0: resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} engines: {node: '>=4.0'} - dev: true /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} dev: true + /estree-is-function@1.0.0: + resolution: {integrity: sha512-nSCWn1jkSq2QAtkaVLJZY2ezwcFO161HVc174zL1KPW3RJ+O6C3eJb8Nx7OXzvhoEv+nLgSR1g71oWUHUDTrJA==} + dev: false + + /esutils@1.0.0: + resolution: {integrity: sha512-x/iYH53X3quDwfHRz4y8rn4XcEwwCJeWsul9pF1zldMbGtgOtMNBEOuYWwB1EQlK2LRa1fev3YAgym/RElp5Cg==} + engines: {node: '>=0.10.0'} + dev: false + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: false + + /event-emitter@0.3.5: + resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} + dependencies: + d: 1.0.1 + es5-ext: 0.10.62 + dev: false + + /eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + dev: false + /events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} dev: true + /ext@1.7.0: + resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + dependencies: + type: 2.7.2 + dev: false + /external-editor@3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} @@ -846,10 +1393,19 @@ packages: tmp: 0.0.33 dev: false + /faker@6.6.6: + resolution: {integrity: sha512-9tCqYEDHI5RYFQigXFwF1hnCwcWCOJl/hmll0lr5D2Ljjb0o4wphb69wikeJDz5qCEzXCoPvG6ss5SDP6IfOdg==} + dev: false + /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true + /fast-equals@5.0.1: + resolution: {integrity: sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==} + engines: {node: '>=6.0.0'} + dev: false + /fast-glob@3.3.1: resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} engines: {node: '>=8.6.0'} @@ -865,6 +1421,10 @@ packages: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} dev: true + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: false + /fastq@1.15.0: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: @@ -948,6 +1508,27 @@ packages: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} dev: false + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: false + + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: false + + /get-assigned-identifiers@1.2.0: + resolution: {integrity: sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==} + dev: false + + /get-intrinsic@1.2.2: + resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + dependencies: + function-bind: 1.1.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + dev: false + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -976,6 +1557,12 @@ packages: path-is-absolute: 1.0.1 dev: false + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.2 + dev: false + /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -983,6 +1570,29 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + /has-property-descriptors@1.0.1: + resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + dependencies: + get-intrinsic: 1.2.2 + dev: false + + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + dev: false + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: false + + /has-tostringtag@1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: false + /has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} @@ -990,6 +1600,13 @@ packages: function-bind: 1.1.1 dev: false + /hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: false + /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -997,6 +1614,13 @@ packages: safer-buffer: 2.1.2 dev: false + /iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: false + /icss-utils@5.1.0(postcss@8.4.28): resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} engines: {node: ^10 || ^12 || >= 14} @@ -1042,6 +1666,19 @@ packages: wrap-ansi: 6.2.0 dev: false + /internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + dev: false + + /is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + has-tostringtag: 1.0.0 + dev: false + /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} @@ -1055,6 +1692,13 @@ packages: has: 1.0.3 dev: false + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: false + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -1082,11 +1726,23 @@ packages: engines: {node: '>=0.12.0'} dev: false + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + has-tostringtag: 1.0.0 + dev: false + /is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} dev: false + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: false + /jalaali-js@1.2.6: resolution: {integrity: sha512-io974va+Qyu+UfuVX3UIAgJlxLhAMx9Y8VMfh+IG00Js7hXQo1qNQuwSiSa0xxco0SVgx5HWNkaiCcV+aZ8WPw==} dev: false @@ -1126,6 +1782,14 @@ packages: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true + /levn@0.3.0: + resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.1.2 + type-check: 0.3.2 + dev: false + /lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} @@ -1166,6 +1830,18 @@ packages: yallist: 4.0.0 dev: true + /magic-string@0.25.1: + resolution: {integrity: sha512-sCuTz6pYom8Rlt4ISPFn6wuFodbKMIHUMv4Qko9P17dpxb7s52KJTmRuZZqHdGmLCK9AOcDare039nRIcfdkEg==} + dependencies: + sourcemap-codec: 1.4.8 + dev: false + + /merge-source-map@1.0.4: + resolution: {integrity: sha512-PGSmS0kfnTnMJCzJ16BLLCEe6oeYCamKFFdQKshi4BmM6FUwipjVOcBFGxqtQtirtAG4iZvHlqST9CpZKqlRjA==} + dependencies: + source-map: 0.5.7 + dev: false + /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} dev: true @@ -1204,6 +1880,10 @@ packages: brace-expansion: 1.1.11 dev: false + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: false + /moment@2.29.4: resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} dev: false @@ -1229,6 +1909,10 @@ packages: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: true + /next-tick@1.1.0: + resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + dev: false + /next@13.4.19(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-HuPSzzAbJ1T4BD8e0bs6B9C1kWQ6gv8ykZoRWs5AQoiIuqbGHHdQO7Ljuvg05Q0Z24E2ABozHe6FxDvI6HfyAw==} engines: {node: '>=16.8.0'} @@ -1292,6 +1976,23 @@ packages: engines: {node: '>= 6'} dev: false + /object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + dev: false + + /object-is@1.1.5: + resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + dev: false + + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: false + /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: @@ -1305,6 +2006,18 @@ packages: mimic-fn: 2.1.0 dev: false + /optionator@0.8.3: + resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.3.0 + prelude-ls: 1.1.2 + type-check: 0.3.2 + word-wrap: 1.2.5 + dev: false + /ora@5.4.1: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} @@ -1325,6 +2038,10 @@ packages: engines: {node: '>=0.10.0'} dev: false + /pako@0.2.9: + resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} + dev: false + /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -1334,6 +2051,20 @@ packages: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: false + /pdfmake@0.2.8: + resolution: {integrity: sha512-lI+amfIaUL8CrPhndxFdhIgMj9JB49Sj4DARltKC1gLm/5NsPohZqfB+D+II8HymtPB6eugUFD5oBxmzO57qHA==} + engines: {node: '>=12'} + dependencies: + '@foliojs-fork/linebreak': 1.1.1 + '@foliojs-fork/pdfkit': 0.14.0 + iconv-lite: 0.6.3 + xmldoc: 1.3.0 + dev: false + + /performance-now@2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + dev: false + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -1352,6 +2083,16 @@ packages: engines: {node: '>= 6'} dev: false + /png-js@1.0.0: + resolution: {integrity: sha512-k+YsbhpA9e+EFfKjTCH3VW6aoKlyNYI6NYdTfDL4CIvFnvsuO84ttonmZE7rc+v23SLTH8XX+5w/Ak9v0xGY4g==} + dev: false + + /polylabel@1.1.0: + resolution: {integrity: sha512-bxaGcA40sL3d6M4hH72Z4NdLqxpXRsCFk8AITYg6x1rn1Ei3izf00UMLklerBZTO49aPA3CYrIwVulx2Bce2pA==} + dependencies: + tinyqueue: 2.0.3 + dev: false + /postcss-import@15.1.0(postcss@8.4.28): resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} engines: {node: '>=14.0.0'} @@ -1469,6 +2210,15 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 + /prelude-ls@1.1.2: + resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} + engines: {node: '>= 0.8.0'} + dev: false + + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: false + /prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: @@ -1490,12 +2240,37 @@ packages: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: false + /quote-stream@1.0.2: + resolution: {integrity: sha512-kKr2uQ2AokadPjvTyKJQad9xELbZwYzWlNfI3Uz2j/ib5u6H9lDP7fUUR//rMycd0gv4Z5P1qXMfXR8YpIxrjQ==} + hasBin: true + dependencies: + buffer-equal: 0.0.1 + minimist: 1.2.8 + through2: 2.0.5 + dev: false + + /raf@3.4.1: + resolution: {integrity: sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==} + dependencies: + performance-now: 2.1.0 + dev: false + /randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: safe-buffer: 5.2.1 dev: true + /react-chartjs-2@5.2.0(chart.js@4.4.0)(react@18.2.0): + resolution: {integrity: sha512-98iN5aguJyVSxp5U3CblRLH67J8gkfyGNbiK3c+l1QI/G4irHMPQw44aEPmjVag+YKTyQ260NcF82GTQ3bdscA==} + peerDependencies: + chart.js: ^4.1.1 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + chart.js: 4.4.0 + react: 18.2.0 + dev: false + /react-dom@18.2.0(react@18.2.0): resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} peerDependencies: @@ -1510,6 +2285,10 @@ packages: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} dev: false + /react-lifecycles-compat@3.0.4: + resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} + dev: false + /react-modern-calendar-datepicker@3.1.6(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-lnMqEMj9Wn32/sm119tjCl5lOkq4u9vJE7wggi7hdXV4s8rPdKlH56FVVehlBi0dfYeWQVZ9npY384Zprjn4WA==} peerDependencies: @@ -1521,6 +2300,31 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false + /react-resize-detector@8.1.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-S7szxlaIuiy5UqLhLL1KY3aoyGHbZzsTpYal9eYMwCyKqoqoVLCmIgAgNyIM1FhnP2KyBygASJxdhejrzjMb+w==} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 + dependencies: + lodash: 4.17.21 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /react-smooth@2.0.5(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-BMP2Ad42tD60h0JW6BFaib+RJuV5dsXJK9Baxiv/HlNFjvRLqA9xrNKxVWnUIZPQfzUwGXIlU/dSYLU+54YGQA==} + peerDependencies: + prop-types: ^15.6.0 + react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + dependencies: + fast-equals: 5.0.1 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-transition-group: 2.9.0(react-dom@18.2.0)(react@18.2.0) + dev: false + /react-spring-bottom-sheet@3.4.1(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-yDFqiPMm/fjefjnOe6Q9zxccbCl6HMUKsK5bWgfGHJIj4zmXVKio5d4icQvmOLuwpuCA2pwv4J6nGWS6fUZidQ==} peerDependencies: @@ -1564,6 +2368,20 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false + /react-transition-group@2.9.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==} + peerDependencies: + react: '>=15.0.0' + react-dom: '>=15.0.0' + dependencies: + dom-helpers: 3.4.0 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-lifecycles-compat: 3.0.4 + dev: false + /react-use-gesture@8.0.1(react@18.2.0): resolution: {integrity: sha512-CXzUNkulUdgouaAlvAsC5ZVo0fi9KGSBSk81WrE4kOIcJccpANe9zZkAYr5YZZhqpicIFxitsrGVS4wmoMun9A==} deprecated: This package is no longer maintained. Please use @use-gesture/react instead @@ -1586,6 +2404,18 @@ packages: pify: 2.3.0 dev: false + /readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: false + /readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} @@ -1602,10 +2432,55 @@ packages: picomatch: 2.3.1 dev: false + /recharts-scale@0.4.5: + resolution: {integrity: sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==} + dependencies: + decimal.js-light: 2.5.1 + dev: false + + /recharts@2.9.3(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-B61sKrDlTxHvYwOCw8eYrD6rTA2a2hJg0avaY8qFI1ZYdHKvU18+J5u7sBMFg//wfJ/C5RL5+HsXt5e8tcJNLg==} + engines: {node: '>=12'} + peerDependencies: + prop-types: ^15.6.0 + react: ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 + dependencies: + classnames: 2.3.2 + eventemitter3: 4.0.7 + lodash: 4.17.21 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-is: 16.13.1 + react-resize-detector: 8.1.0(react-dom@18.2.0)(react@18.2.0) + react-smooth: 2.0.5(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0) + recharts-scale: 0.4.5 + tiny-invariant: 1.3.1 + victory-vendor: 36.6.12 + dev: false + /regenerator-runtime@0.14.0: resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} dev: false + /regexp.prototype.flags@1.5.1: + resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + set-function-name: 2.0.1 + dev: false + + /regression@2.0.1: + resolution: {integrity: sha512-A4XYsc37dsBaNOgEjkJKzfJlE394IMmUPlI/p3TTI9u3T+2a+eox5Pr/CPUqF0eszeWZJPAc6QkroAhuUpWDJQ==} + dev: false + + /resolve@1.1.7: + resolution: {integrity: sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==} + dev: false + /resolve@1.22.4: resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} hasBin: true @@ -1628,6 +2503,11 @@ packages: engines: {iojs: '>=1.0.0', node: '>=0.10.0'} dev: false + /rgbcolor@1.0.1: + resolution: {integrity: sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==} + engines: {node: '>= 0.8.15'} + dev: false + /run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} @@ -1645,6 +2525,10 @@ packages: tslib: 2.6.2 dev: false + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: false + /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} @@ -1652,6 +2536,10 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: false + /sax@1.3.0: + resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} + dev: false + /scheduler@0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} dependencies: @@ -1667,6 +2555,18 @@ packages: ajv-keywords: 3.5.2(ajv@6.12.6) dev: true + /scope-analyzer@2.1.2: + resolution: {integrity: sha512-5cfCmsTYV/wPaRIItNxatw02ua/MThdIUNnUOCYp+3LSEJvnG804ANw2VLaavNILIfWXF1D1G2KNANkBBvInwQ==} + dependencies: + array-from: 2.1.1 + dash-ast: 2.0.1 + es6-map: 0.1.5 + es6-set: 0.1.6 + es6-symbol: 3.1.3 + estree-is-function: 1.0.0 + get-assigned-identifiers: 1.2.0 + dev: false + /semver@7.5.4: resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} engines: {node: '>=10'} @@ -1681,6 +2581,29 @@ packages: randombytes: 2.1.0 dev: true + /set-function-length@1.1.1: + resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + dev: false + + /set-function-name@2.0.1: + resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.1 + dev: false + + /shallow-copy@0.0.1: + resolution: {integrity: sha512-b6i4ZpVuUxB9h5gfCxPiusKYkqTMOjEbBs4wMaFbkfia4yFv92UKZ6Df8WXcKbn08JNL/abvg3FnMAOfakDvUw==} + dev: false + /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: false @@ -1700,10 +2623,58 @@ packages: source-map: 0.6.1 dev: true + /source-map@0.1.43: + resolution: {integrity: sha512-VtCvB9SIQhk3aF6h+N85EaqIaBFIAfZ9Cu+NJHHVvc8BbEcnvDcFw6sqQ2dQrT6SlOrZq3tIvyD9+EGq/lJryQ==} + engines: {node: '>=0.8.0'} + requiresBuild: true + dependencies: + amdefine: 1.0.1 + dev: false + optional: true + + /source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + dev: false + /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - dev: true + + /sourcemap-codec@1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + deprecated: Please use @jridgewell/sourcemap-codec instead + dev: false + + /stackblur-canvas@2.6.0: + resolution: {integrity: sha512-8S1aIA+UoF6erJYnglGPug6MaHYGo1Ot7h5fuXx4fUPvcvQfcdw2o/ppCse63+eZf8PPidSu4v1JnmEVtEDnpg==} + engines: {node: '>=0.1.14'} + dev: false + + /static-eval@2.1.0: + resolution: {integrity: sha512-agtxZ/kWSsCkI5E4QifRwsaPs0P0JmZV6dkLz6ILYfFYQGn+5plctanRN+IC8dJRiFkyXHrwEE3W9Wmx67uDbw==} + dependencies: + escodegen: 1.14.3 + dev: false + + /static-module@3.0.4: + resolution: {integrity: sha512-gb0v0rrgpBkifXCa3yZXxqVmXDVE+ETXj6YlC/jt5VzOnGXR2C15+++eXuMDUYsePnbhf+lwW0pE1UXyOLtGCw==} + dependencies: + acorn-node: 1.8.2 + concat-stream: 1.6.2 + convert-source-map: 1.9.0 + duplexer2: 0.1.4 + escodegen: 1.14.3 + has: 1.0.3 + magic-string: 0.25.1 + merge-source-map: 1.0.4 + object-inspect: 1.13.1 + readable-stream: 2.3.8 + scope-analyzer: 2.1.2 + shallow-copy: 0.0.1 + static-eval: 2.1.0 + through2: 2.0.5 + dev: false /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} @@ -1719,6 +2690,12 @@ packages: strip-ansi: 6.0.1 dev: false + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + dev: false + /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: @@ -1875,10 +2852,29 @@ packages: any-promise: 1.3.0 dev: false + /through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + dependencies: + readable-stream: 2.3.8 + xtend: 4.0.2 + dev: false + /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: false + /tiny-inflate@1.0.3: + resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} + dev: false + + /tiny-invariant@1.3.1: + resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} + dev: false + + /tinyqueue@2.0.3: + resolution: {integrity: sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==} + dev: false + /tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -1901,15 +2897,48 @@ packages: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} dev: false + /type-check@0.3.2: + resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.1.2 + dev: false + /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} dev: false + /type@1.2.0: + resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==} + dev: false + + /type@2.7.2: + resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} + dev: false + + /typedarray@0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + dev: false + /undici-types@5.25.3: resolution: {integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==} dev: true + /unicode-properties@1.4.1: + resolution: {integrity: sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==} + dependencies: + base64-js: 1.5.1 + unicode-trie: 2.0.0 + dev: false + + /unicode-trie@2.0.0: + resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} + dependencies: + pako: 0.2.9 + tiny-inflate: 1.0.3 + dev: false + /update-browserslist-db@1.0.11(browserslist@4.21.10): resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} hasBin: true @@ -1958,6 +2987,25 @@ packages: /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + /victory-vendor@36.6.12: + resolution: {integrity: sha512-pJrTkNHln+D83vDCCSUf0ZfxBvIaVrFHmrBOsnnLAbdqfudRACAj51He2zU94/IWq9464oTADcPVkmWAfNMwgA==} + dependencies: + '@types/d3-array': 3.2.1 + '@types/d3-ease': 3.0.2 + '@types/d3-interpolate': 3.0.4 + '@types/d3-scale': 4.0.8 + '@types/d3-shape': 3.1.5 + '@types/d3-time': 3.0.3 + '@types/d3-timer': 3.0.2 + d3-array: 3.2.4 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-scale: 4.0.2 + d3-shape: 3.2.0 + d3-time: 3.1.0 + d3-timer: 3.0.1 + dev: false + /warning@4.0.3: resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} dependencies: @@ -2022,6 +3070,11 @@ packages: - uglify-js dev: true + /word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + dev: false + /wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -2035,10 +3088,21 @@ packages: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: false + /xmldoc@1.3.0: + resolution: {integrity: sha512-y7IRWW6PvEnYQZNZFMRLNJw+p3pezM4nKYPfr15g4OOW9i8VpeydycFuipE2297OvZnh3jSb2pxOt9QpkZUVng==} + dependencies: + sax: 1.3.0 + dev: false + /xstate@4.38.2: resolution: {integrity: sha512-Fba/DwEPDLneHT3tbJ9F3zafbQXszOlyCJyQqqdzmtlY/cwE2th462KK48yaANf98jHlP6lJvxfNtN0LFKXPQg==} dev: false + /xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + dev: false + /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true diff --git a/src/app/add-task/page.jsx b/src/app/add-task/page.jsx deleted file mode 100644 index ad3a8e3..0000000 --- a/src/app/add-task/page.jsx +++ /dev/null @@ -1,169 +0,0 @@ -import AppHeader from "@comp/AppHeader/page"; -import Buttonbriz from "plugins/Buttonbriz/page"; -import Input from "plugins/Input/page"; -import PersianNumber from "plugins/PersianNumber"; -import React from "react"; - -const AddTask = () => { - return ( -
- - -
-
-
- -
- -
- -
- -
- - -
-
-
-
-
-
-
-
-
- -
-

- + - - - - نفر دیگر -

-
-
-
-
- -
-
-
- -
- -
-
- آیا این تسک تکرار پذیر است ؟ -
-

- تسک با قابلیت تکرار در زمان های متناوب تکرار میشوند -

-
-
- -
- -
-
- -
-
-
- -
- -
-
- ایا این تسک به گروهی متصل است ؟{" "} -
-

- شما میتوانید یک تسک را به گروهی از افراد متصل کنید{" "} -

-
-
- -
- -
-
- -
-
-
- -
- -
-
- ایا این تسک به فرد متصل است ؟{" "} -
-

- شما میتوانید یک تسک را به تنها یک فرد خاص متصل کنید{" "} -

-
-
- -
- -
-
- - -
-
- ); -}; - -export default AddTask; diff --git a/src/app/employees/page.jsx b/src/app/employees/page.jsx index d9e7952..eca90cd 100644 --- a/src/app/employees/page.jsx +++ b/src/app/employees/page.jsx @@ -13,8 +13,10 @@ import BottomSheetCreatePosition from "plugins/BottomSheet/BottomSheetCreatePosi import BottomSheetCreateRole from "plugins/BottomSheet/BottomSheetCreateRole"; import BottomSheetCreateRoutine from "plugins/BottomSheet/BottomSheetCreateRoutine"; import BottomSheetCreateSection from "plugins/BottomSheet/BottomSheetCreateSection"; +import BottomSheetCreateShifts from "plugins/BottomSheet/BottomSheetCreateShifts"; import PersianNumber from "plugins/PersianNumber"; import React, { useContext, useEffect, useState } from "react"; +import ShiftsEmployees from "@comp/EmployeesComponent/Shifts/page"; // import second from "@img/test.png"; @@ -24,17 +26,46 @@ const Employees = (props) => { const [activeSection, setActiveSection] = useState(0); useEffect(() => { - CTX.GetRoles(); - CTX.GetUsers(); CTX.GetRoutines(); - CTX.GetSections(); - CTX.GetPositions(); }, []); - const routinesData = CTX.state.routinesData; - const sectionsData = CTX.state.sectionsData; - const usersData = CTX.state.usersData; - const positionsData = CTX.state.positionsData; + const handleGetApi = (num) => { + setActiveSection(num); + switch (num) { + case 0: + if (activeSection != num) { + CTX.GetRoutines(); + } + break; + case 1: + if (activeSection != num) { + CTX.GetSections(); + } + break; + case 2: + if (activeSection != num) { + CTX.GetPositions(); + } + break; + case 3: + if (activeSection != num) { + CTX.GetUsers(); + CTX.GetRoles(); + } + break; + case 4: + if (activeSection != num) { + CTX.GetShifts(); + CTX.GetRoutines(); + } + break; + + default: + break; + } + }; + + // const justLength = CTX.state.justLength; return (
@@ -53,7 +84,7 @@ const Employees = (props) => {
setActiveSection(0)} + onClick={() => handleGetApi(0)} >
@@ -68,7 +99,7 @@ const Employees = (props) => {

شما - + {/* */} روتین فعال دارید

@@ -145,7 +176,7 @@ const Employees = (props) => {
setActiveSection(1)} + onClick={() => handleGetApi(1)} >
@@ -158,7 +189,7 @@ const Employees = (props) => {

شما - + {/* */} سکشن فعال دارید

@@ -196,7 +227,7 @@ const Employees = (props) => {
setActiveSection(2)} + onClick={() => handleGetApi(2)} >
@@ -211,7 +242,7 @@ const Employees = (props) => {

شما - + {/* */} پوزیشن فعال دارید

@@ -249,7 +280,7 @@ const Employees = (props) => {
setActiveSection(3)} + onClick={() => handleGetApi(3)} >
@@ -262,7 +293,7 @@ const Employees = (props) => {

شما - + {/* */} کارمند فعال دارید

@@ -297,12 +328,65 @@ const Employees = (props) => {
{activeSection == 3 && }
+ +
+
handleGetApi(4)} + > +
+
+

+ +

+
+
+

مدیریت شیفت های مجموعه

+

+ شما + + {/* */} + + شیفت فعال دارید +

+
+
+ + {activeSection == 4 ? ( +
CTX.setBottomSheetCreateShiftsOpen(true)} + > + + + +
+ ) : ( +
+ )} +
+ {activeSection == 4 && } +
{/* */} +
); }; diff --git a/src/app/home/page.jsx b/src/app/home/page.jsx index 8d2853e..9f24069 100644 --- a/src/app/home/page.jsx +++ b/src/app/home/page.jsx @@ -10,6 +10,37 @@ import { ParseJwt } from "plugins/ParseJwt/page"; import PersianNumber from "plugins/PersianNumber"; import React, { useContext, useEffect } from "react"; // import { Swiper, SwiperSlide } from "swiper/react"; +import { Chart as ChartJS, ArcElement, Tooltip, Legend } from "chart.js"; +import { Doughnut, Pie } from "react-chartjs-2"; + +ChartJS.register(ArcElement, Tooltip, Legend); + +export const data = { + datasets: [ + { + label: ["پوزیشن"], + data: [60, 38, 95, 60, 20, 30], + backgroundColor: [ + "rgba(46, 161, 134, 0.8)", + "rgba(52, 115, 101, 0.41)", + "rgba(80, 143, 114, 0.61)", + "rgba(75, 155, 138, 0.61)", + "rgba(85, 155, 138, 0.91)", + "rgba(12, 75, 61, 0.51)", + ], + borderColor: [ + "rgba(255, 99, 132, 1)", + "rgba(54, 162, 235, 1)", + "rgba(255, 206, 86, 1)", + "rgba(75, 192, 192, 1)", + "rgba(153, 102, 255, 1)", + "rgba(255, 159, 64, 1)", + ], + borderWidth: 1, + borderColor: " #356859", + }, + ], +}; const Home = (props) => { const CTX = useContext(AppContext); @@ -53,8 +84,68 @@ const Home = (props) => { />
-
- +
+
+

مسیر فرایند شروع

+ +

+ شما + + درصد از فرایند شروع را انجام داده اید +

+
+
+
+
+
+ +
+

ادامه فرایند

+
+ {" "} + + + +
+
+
+ +
+
+
+
+
+

پوزیشن

+
+
+
+

سکشن

+
+
+
+

روتین

+
+
+
+

یوزر

+
+
+
+

شبفت

+
+
+ +
+ +
+
diff --git a/src/app/layout.jsx b/src/app/layout.jsx index 3dade48..4a5c20c 100644 --- a/src/app/layout.jsx +++ b/src/app/layout.jsx @@ -46,6 +46,11 @@ export default function RootLayout({ children }) { const [BottomSheetCreatePositionOpen, setBottomSheetCreatePositionOpen] = useState(false); + const [ + BottomSheetAddUserToPositionShiftPlanOpen, + setBottomSheetAddUserToPositionShiftPlanOpen, + ] = useState(false); + // BigPlus const [BigPlusOpen, setBigPlusOpen] = useState(false); const [BigPlusRotateIcon, setBigPlusRotateIcon] = useState(false); @@ -86,6 +91,7 @@ export default function RootLayout({ children }) { // createroutine/ routine const [routinesData, setRoutinesData] = useState([]); const [routineData, setRoutineData] = useState([]); + const [routineShiftPlan, setRoutineShiftPlan] = useState([]); const [goToEditRoutine, setGoToEditRoutine] = useState(false); const [idEditRoutine, setIdEditRoutine] = useState(null); @@ -98,7 +104,6 @@ export default function RootLayout({ children }) { // shift const [dayOfWeeksChoose, setDayOfWeeksChoose] = useState([]); - const [startAtTimeShift, setStartAtTimeShift] = useState(["00", "00"]); const [endAtTimeShift, setEndAtTimeShift] = useState(["00", "00"]); const [shiftsData, setShiftsData] = useState([null]); @@ -106,6 +111,16 @@ export default function RootLayout({ children }) { const [goToEditShift, setGoToEditShift] = useState(false); const [idEditShift, setIdEditShift] = useState(null); + // task + const [routineForTaskChoose, setRoutineForTaskChoose] = useState([]); + const [positionsForTaskChoose, setPositionsForTaskChoose] = useState([]); + const [shiftsForTaskChoose, setShiftsForTaskChoose] = useState([]); + const [shiftsDaysChoose, setShiftsDaysChoose] = useState([]); + const [tasksData, setTasksData] = useState([null]); + const [taskData, setTaskData] = useState([null]); + const [goToEditTask, setGoToEditTask] = useState(false); + const [idEditTask, setIdEditTask] = useState(null); + // shift manage-shift const [searchUserChoose, setSearchUserChoose] = useState([]); @@ -854,6 +869,58 @@ export default function RootLayout({ children }) { setLoading(false); } }; + + const GetRoutineShiftPlan = async (id) => { + setLoading(true); + try { + const data = await Chapar.get( + `${process.env.NEXT_PUBLIC_API_URL}/routine/${id}/shift`, + + { + headers: { + Authorization: getToken(), + }, + } + ); + + console.log("GetRoutineShift", data); + + setRoutineShiftPlan(data); + setLoading(false); + } catch ({ error, status }) { + toast.error(`${error.response.data.message}`, { + position: "bottom-right", + closeOnClick: true, + }); + setLoading(false); + } + }; + const CreateShifPlan = async (body) => { + setLoading(true); + try { + const data = await Chapar.post( + `${process.env.NEXT_PUBLIC_API_URL}/shift/plan`, + JSON.stringify(body), + { + headers: { + Authorization: getToken(), + }, + } + ); + toast.success(`مدیریت شیفت ساخته شد`, { + position: "bottom-right", + closeOnClick: true, + }); + router.push("/shifts"); + } catch ({ error, status }) { + toast.error(`${error.response.data.message}`, { + position: "bottom-right", + closeOnClick: true, + }); + setLoading(false); + } + }; + const DeleteRoutine = async (id) => { setLoading(true); try { @@ -1008,6 +1075,140 @@ export default function RootLayout({ children }) { } }; + const CreateTask = async (body) => { + setLoading(true); + try { + const data = await Chapar.post( + `${process.env.NEXT_PUBLIC_API_URL}/task`, + JSON.stringify(body), + { + headers: { + Authorization: getToken(), + }, + } + ); + toast.success(`فعالیت ساخته شد`, { + position: "bottom-right", + closeOnClick: true, + }); + // router-> + + setLoading(false); + GetTasks(); + + router.push("/tasks"); + } catch ({ error, status }) { + toast.error(`${error.response.data.message}`, { + position: "bottom-right", + closeOnClick: true, + }); + setLoading(false); + } + }; + const UpdateTask = async (body) => { + setLoading(true); + try { + const data = await Chapar.put( + `${process.env.NEXT_PUBLIC_API_URL}/task`, + body, + + { + headers: { + Authorization: getToken(), + }, + } + ); + toast.success(`فعالیت ویرایش شد`, { + position: "bottom-right", + closeOnClick: true, + }); + + // router-> + + setLoading(false); + GetTasks(); + router.push("/tasks"); + } catch ({ error, status }) { + toast.error(`${error.response.data.message}`, { + position: "bottom-right", + closeOnClick: true, + }); + setLoading(false); + } + }; + const GetTasks = async () => { + setLoading(true); + try { + const data = await Chapar.get( + `${process.env.NEXT_PUBLIC_API_URL}/task?page=0`, + + { + headers: { + Authorization: getToken(), + }, + } + ); + console.log("GetTasks", data); + + setTasksData(data); + setLoading(false); + } catch ({ error, status }) { + toast.error(`${error.response.data.message}`, { + position: "bottom-right", + closeOnClick: true, + }); + setLoading(false); + } + }; + const GetTask = async (id) => { + setLoading(true); + try { + const data = await Chapar.get( + `${process.env.NEXT_PUBLIC_API_URL}/task/${id}`, + + { + headers: { + Authorization: getToken(), + }, + } + ); + console.log("GetPosition", data); + + setTaskData(data); + setLoading(false); + } catch ({ error, status }) { + toast.error(`${error.response.data.message}`, { + position: "bottom-right", + closeOnClick: true, + }); + setLoading(false); + } + }; + const DeleteTask = async (id) => { + setLoading(true); + try { + const data = await Chapar.delete( + `${process.env.NEXT_PUBLIC_API_URL}/task/${id}`, + + { + headers: { + Authorization: getToken(), + }, + } + ); + + setLoading(false); + GetTasks(); + router.push("/tasks"); + } catch ({ error, status }) { + toast.error(`${error.response.data.message}`, { + position: "bottom-right", + closeOnClick: true, + }); + setLoading(false); + } + }; + const CheckUser = async () => { setLoading(true); try { @@ -1091,6 +1292,16 @@ export default function RootLayout({ children }) { positionsData, BottomSheetCreatePositionOpen, sectionIdChoose, + routineForTaskChoose, + positionsForTaskChoose, + shiftsForTaskChoose, + shiftsDaysChoose, + idEditTask, + goToEditTask, + taskData, + tasksData, + routineShiftPlan, + BottomSheetAddUserToPositionShiftPlanOpen, }, setBottomSheetCreateRoleOpen, setBottomSheetCreateEmployeesOpen, @@ -1174,6 +1385,23 @@ export default function RootLayout({ children }) { UpdatePosition, CreatePosition, setSectionIdChoose, + setRoutineForTaskChoose, + setPositionsForTaskChoose, + setShiftsForTaskChoose, + setShiftsDaysChoose, + DeleteTask, + GetTask, + GetTasks, + UpdateTask, + CreateTask, + setIdEditTask, + setGoToEditTask, + setTaskData, + setTasksData, + setRoutineShiftPlan, + GetRoutineShiftPlan, + setBottomSheetAddUserToPositionShiftPlanOpen, + CreateShifPlan, }} > diff --git a/src/app/routine/page.jsx b/src/app/routine/page.jsx deleted file mode 100644 index 0dbe7db..0000000 --- a/src/app/routine/page.jsx +++ /dev/null @@ -1,244 +0,0 @@ -"use client"; - -import AppHeader from "@comp/AppHeader/page"; -import AppContext from "@ctx/AppContext"; -import BottomSheetCreateRoutine from "plugins/BottomSheet/BottomSheetCreateRoutine"; -import PersianNumber from "plugins/PersianNumber"; -import React, { useContext } from "react"; -import { Swiper, SwiperSlide } from "swiper/react"; -import TaskCard from "@comp/TaskCard/page"; -import Link from "next/link"; - -const page = () => { - const CTX = useContext(AppContext); - - const routinesData = CTX.state.routinesData; - - // const goToEditRole = (id) => { - // CTX.setGoToEditRole(true); - // CTX.setBottomSheetCreateRoleOpen(true); - // CTX.setIdEditRole(id); - // }; - - return ( -
- CTX.setBottomSheetCreateRoutineOpen(true)} - icon2={true} - iconName2="ARROW" - iconHref2="/home" - iconEvent2={() => { - return undefined; - }} - /> -
-
-
-

تسک های هفتگی مجموعه

-

- امروز - - - - تسک فعال دارید -

-
- -
- - - -
-
- - console.log("slide change")} - onSwiper={(swiper) => console.log(swiper)} - > - -
-
-
- اهمیت بالا{" "} -
-
- شیفت صبح -
-
-
-
-

- کارگاه بدنسازی در خانه برای رستوران توگک -

-
- -
-
-
-
-
-
- -
-

- + - - - - نفر دیگر -

-
-
- -
-
- - - -
-

- دوشنبه - - - - اردیبهشت - - - -

-
-
-
-
- - -
-
-
- اهمیت بالا{" "} -
-
- شیفت صبح -
-
-
-
-

- کارگاه بدنسازی در خانه برای رستوران توگک -

-
- -
-
-
-
-
-
- -
-

- + - - - - نفر دیگر -

-
-
- -
-
- - - -
-

- دوشنبه - - - - اردیبهشت - - - -

-
-
-
-
-
- -
-
-

تسک های امروز

-

- امروز - - - - تسک فعال دارید -

-
- -
- - - -
-
-
- -
-
- - -
- ); -}; - -export default page; diff --git a/src/app/shifts/complete-shift/page.jsx b/src/app/shifts/complete-shift/page.jsx index 09a70f9..99c6c5b 100644 --- a/src/app/shifts/complete-shift/page.jsx +++ b/src/app/shifts/complete-shift/page.jsx @@ -1,5 +1,5 @@ import AppHeader from "@comp/AppHeader/page"; -import TaskCard from "@comp/TaskCard/page"; +import TaskCard from "@comp/TaskPage/ActivityCard/page"; import PersianNumber from "plugins/PersianNumber"; import React from "react"; diff --git a/src/app/shifts/manage-shift/page.jsx b/src/app/shifts/manage-shift/page.jsx index 9bddff4..5fd3483 100644 --- a/src/app/shifts/manage-shift/page.jsx +++ b/src/app/shifts/manage-shift/page.jsx @@ -12,49 +12,71 @@ import Input from "plugins/Input/page"; import { toast } from "react-toastify"; import Avatar from "boring-avatars"; import BottomManageShift from "plugins/BottomSheet/BottomManageShift"; +import BottomSheetAddUserToPositionShiftPlan from "plugins/BottomSheet/BottomSheetAddUserToPositionShiftPlan"; +import Buttonbriz from "plugins/Buttonbriz/page"; const Calendar = () => { const CTX = useContext(AppContext); const shiftsData = CTX.state.shiftsData; const searchUserChoose = CTX.state.searchUserChoose; const usersData = CTX.state.usersData; + const routinesData = CTX.state.routinesData; + const routineShiftPlan = CTX.state.routineShiftPlan; + const positionsData = CTX.state.positionsData; - console.log("usersData", usersData); - - const [searchUserCurrntData, setSearchUserCurrntData] = useState([]); - const [daysUntilEnd, setDaysUntilEnd] = useState([]); + const [daysUntilWeek, setDaysUntilWeek] = useState([]); const [selectDay, setSelectDay] = useState(null); - const [selectShift, setselectShift] = useState(0); + const [selectShift, setselectShift] = useState(-1); + const [selectRoutine, setSelectRoutine] = useState(-1); + const [shiftsPlan, setShiftsPlan] = useState([]); const [manageShiftEmployeesData, setManageShiftEmployeesData] = useState([]); - const today = moment().format("jYYYY/jM/jD"); // Get the current Jalali date - const todayJustDay = moment().format("jD"); // Get the current Jalali date + const [shiftPlanSteps, setShiftPlanSteps] = useState(0); - // Find the end of the current month - const endOfMonth = moment(today, "jYYYY/jM/jD").endOf("jMonth"); + const [positionSelectNameBottomSheet, setPositionSelectNameBottomSheet] = + useState([]); + const [positionSelectIdBottomSheet, setPositionSelectIdBottomSheet] = + useState([]); + const [userAndPositionIds, setUserAndPositionIds] = useState([]); + + const week = [ + { key: "شنبه", value: 6 }, + { key: "یکشنبه", value: 0 }, + { key: "دوشنبه", value: 1 }, + { key: "سه شنبه", value: 2 }, + { key: "چهار شنبه", value: 3 }, + { key: "پنج شنبه", value: 4 }, + { key: "جمعه", value: 5 }, + ]; + const today = moment().format("jYYYY/jM/jD"); // Get the current Jalali date const daysInCurrentMonth = moment(today, "jYYYY/jM/jD") .endOf("jMonth") .jDate(); const daysEndOfMonth = () => { - const days = []; - for (let i = -1; i < daysInCurrentMonth - todayJustDay + 1; i++) { - const currentDate = moment(today, "jYYYY/jM/jD").add(i, "days"); - const isToday = currentDate.isSame(moment(), "day"); - days.push({ - checkDay: currentDate.format("jYYYY/jM/jD"), - date: currentDate.format("jD / jM"), - dayOfWeek: currentDate.format("dddd"), - today: isToday, // Set today: true if it's the current date + const daysOfWeek = []; + const startOfNextWeek = moment(today, "jYYYY/jM/jD") + .startOf("jWeek") + .add(7, "days"); + // Iterate from شنبه (Saturday) to جمعه (Friday) and add each day to the array + for (let i = 0; i < 7; i++) { + const currentDay = startOfNextWeek.clone().add(i, "days"); + const isToday = currentDay.isSame(today, "day"); + const dayOfWeekName = week[i].key; // Get the day name from the week array + + daysOfWeek.push({ + checkDay: currentDay.format("jYYYY/jM/jD"), + date: currentDay.format("jD / jM"), + dayOfWeek: dayOfWeekName, + today: isToday, + value: week[i].value, }); } - return setDaysUntilEnd(days); + return setDaysUntilWeek(daysOfWeek); }; - console.log("daysUntilEnd", daysUntilEnd[selectDay]); - const handleManageShiftEmployeesOpen = (e) => { setManageShiftEmployeesData( usersData.map((item) => ({ @@ -71,27 +93,49 @@ const Calendar = () => { ); }; - const deleteSearchUser = (id) => { - CTX.setSearchUserChoose(searchUserChoose.filter((el) => el !== id)); + const body = { + planDate: + daysUntilWeek[selectDay]?.checkDay && + moment.utc(daysUntilWeek[selectDay].checkDay, "jYYYY-jMM-jDDTHH").unix(), + shiftId: shiftsPlan && shiftsPlan[selectShift]?.id, + routineId: routinesData && routinesData[selectRoutine]?.id, + userAndPositionIds, + }; + + const handleRoutineShiftPlan = (index, id) => { + setSelectRoutine(index); + CTX.GetRoutineShiftPlan(id); + setShiftPlanSteps(1); + }; + + const handleCreateShiftPlan = (update) => { + if (update == "UPDATE") { + // CTX.UpdateShiftPlan(bodyUpdate); + } else { + CTX.CreateShifPlan(body); + } }; useEffect(() => { + CTX.GetRoutines(); daysEndOfMonth(); - setSelectDay(1); + setSelectDay(-1); CTX.GetShifts(); - CTX.GetUsers(); + CTX.GetPositions(); }, []); useEffect(() => { - // if (!!CTX.GetUsers()) { - // - // } handleManageShiftEmployeesOpen(); }, [usersData]); - console.log("searchUserChooseqqqqqqqqqqqqqqqqqqqqqqqqq", searchUserChoose); + useEffect(() => { + setShiftsPlan( + routineShiftPlan?.find((e) => e?.day == daysUntilWeek[selectDay]?.value) + ?.shifts + ); - console.log(daysUntilEnd); + setselectShift(-1); + }, [selectDay]); return (
@@ -109,225 +153,272 @@ const Calendar = () => { />
- console.log("slide change")} - onSwiper={(swiper) => console.log(swiper)} +
- {daysUntilEnd?.map((e, index) => ( - -
{ - setSelectDay(index); - console.log(index); - }} - > -
-

- b.date == e.checkDay) - ? "text-red-500" - : "" - } `} - /> -

-
- -
b.date == e.checkDay) - ? "bg-transparent text-red-500" - : "bg-white text-gray-500" - }`} - > -

- {/* {PersianD.find((i) => i == e.dayOfWeek)} */} - {PersianDay(e.dayOfWeek)} -

-
-
-
- ))} - -
- -
- {shiftsData.length > 0 ? ( -
- {shiftsData.map((e, index) => ( -
setselectShift(index)} - > -

{e?.title}

-
- ))} -
- ) : ( -
-
- چیزی یافت نشد + {routinesData?.map((e, index) => ( +
{ + if (shiftPlanSteps >= 1) { + toast.error("برای تغییر روتین باید رفرش کنید", { + position: "bottom-right", + autoClose: 2000, + hideProgressBar: false, + closeOnClick: true, + pauseOnHover: true, + draggable: true, + progress: undefined, + }); + } else { + handleRoutineShiftPlan(index, e.id); + } + }} + > +

{e.name}

-
+ ))} +
+ + {shiftPlanSteps >= 1 && ( + console.log("slide change")} + onSwiper={(swiper) => console.log(swiper)} + > + {daysUntilWeek?.map((e, index) => ( + +
{ + setSelectDay(index); + setShiftPlanSteps(2); + console.log(index); + }} + > +
+

+ b.date == e.checkDay + ) + ? "text-red-500" + : "" + } `} + /> +

+
+ +
b.date == e.checkDay) + ? "bg-transparent text-red-500" + : "bg-white text-gray-500" + }`} + > +

+ {/* {PersianD.find((i) => i == e.dayOfWeek)} */} + {e.dayOfWeek} +

+
+
+
+ ))} +
)}
-
-
-
-

- ویرایش برای{" "} - - {shiftsData && shiftsData[selectShift]?.title} - {" "} - تاریخ{" "} - - - {" "} - میباشد -

-
-
- -
- { - setSearchUserCurrntData(e.target.value); - - if (!!searchUserChoose.find((b) => b == e.target.value)) { - toast.error("نقش تکراری است", { - position: "bottom-right", - closeOnClick: true, - }); - } else { - CTX.setSearchUserChoose((current) => [ - ...current, - e.target.value, - ]); - } - }} - style="text-right" - select={true} - selectData={manageShiftEmployeesData} - theme={1} - defaultValue={"انتخاب کنید"} - /> -
- -
0 ? "" : "justify-center" - }`} - > - {searchUserChoose.length > 0 ? ( - searchUserChoose.map((e) => ( -
-
deleteSearchUser(e)} - > - b.userId == e)?.firstName} - variant="beam" - colors={["#9d9f88", "#83af96", "#b2de93"]} - /> -
- -
-

- {usersData.find((b) => b.userId == e)?.firstName} + {shiftPlanSteps >= 2 && ( +

+ <> + {!!routineShiftPlan?.find( + (e) => e?.day == daysUntilWeek[selectDay]?.value + ) && shiftsData.length > 0 ? ( +
+ {shiftsPlan?.map((e, index) => ( +
{ + setselectShift(index); + setShiftPlanSteps(3); + }} + > +

{e?.title}

+
+ ))} +
+ ) : ( +
+
+

+ شما شیفتی دراین روز ندارید

- )) - ) : ( -
-
- چیزی یافت نشد + )} + +
+ )} + + {shiftPlanSteps >= 3 && ( +
+
+
+

+ ویرایش برای{" "} + + {shiftsPlan && shiftsPlan[selectShift]?.title} + {" "} + تاریخ{" "} + + + {" "} + میباشد +

+
+
+ + {positionsData.map((e) => ( +
+
+
+
+

{e.name}

+
+
+ +
{ + setPositionSelectIdBottomSheet(e.id); + setPositionSelectNameBottomSheet(e.name); + CTX.setBottomSheetAddUserToPositionShiftPlanOpen(true); + }} + > +

کاربران +

+
+
+ + {/*
+ { + setSearchUserCurrntData(e.target.value); + + if (!!searchUserChoose.find((b) => b == e.target.value)) { + toast.error("نقش تکراری است", { + position: "bottom-right", + closeOnClick: true, + }); + } else { + CTX.setSearchUserChoose((current) => [ + ...current, + e.target.value, + ]); + } + }} + style="text-right" + select={true} + selectData={manageShiftEmployeesData} + theme={1} + defaultValue={"انتخاب کنید"} + /> +
*/} + +
0 ? "" : "justify-center" + }`} + > + {userAndPositionIds?.length > 0 ? ( + userAndPositionIds?.map((item) => ( + <> + {e.id == item.key && ( +
+
deleteSearchUser(e)} + > + b?.userId == item?.value) + ?.firstName + } + variant="beam" + colors={["#9d9f88", "#83af96", "#b2de93"]} + /> +
+ +
+

+ { + usersData.find((b) => b.userId == item?.value) + ?.firstName + } +

+
+
+ )} + + )) + ) : ( +
+
+ چیزی یافت نشد +
+
+ )}
- )} + ))} +
+ handleCreateShiftPlan()} + /> +
- -
- - -
-
+ )} +
); }; export default Calendar; - -{ - /* {shiftsData.map((e, index) => ( -
-
-
- - - -
- -
-

{e?.title}

-

- {e?.title} {} -

-
-
-
- ))} */ -} diff --git a/src/app/shifts/page.jsx b/src/app/shifts/page.jsx index 61c060d..c048515 100644 --- a/src/app/shifts/page.jsx +++ b/src/app/shifts/page.jsx @@ -1,7 +1,6 @@ "use client"; import AppHeader from "@comp/AppHeader/page"; -import ShiftCard from "@comp/ShiftComponent/ShiftCard/page"; import AppContext from "@ctx/AppContext"; import Image from "next/image"; import Link from "next/link"; @@ -69,11 +68,8 @@ const Shifts = (props) => {
-
- -
+
- ); }; diff --git a/src/app/tasks/add-task/page.jsx b/src/app/tasks/add-task/page.jsx new file mode 100644 index 0000000..5fad656 --- /dev/null +++ b/src/app/tasks/add-task/page.jsx @@ -0,0 +1,704 @@ +"use client"; + +import AppHeader from "@comp/AppHeader/page"; +import AppContext from "@ctx/AppContext"; +import Buttonbriz from "plugins/Buttonbriz/page"; +import DatePickerIran from "plugins/DatePickerIran/page"; +import Input from "plugins/Input/page"; +import PersianNumber from "plugins/PersianNumber"; +import React, { useContext, useEffect, useRef, useState } from "react"; +import { toast } from "react-toastify"; +import SimpleReactValidator from "simple-react-validator"; +import moment from "jalali-moment"; +import { useRouter, useSearchParams } from "next/navigation"; + +const AddTask = () => { + const CTX = useContext(AppContext); + const query = useSearchParams(); + + const [routinesSelectData, setRoutinesSelectData] = useState([]); + const [routineForTaskCurrent, setRoutineForTaskCurrent] = useState([]); + + const [positionsSelectData, setPositionsSelectData] = useState([]); + const [positionsForTaskCurrent, setPositionsForTaskCurrent] = useState([]); + + const [shiftsSelectData, setShiftsSelectData] = useState([]); + const [shiftsForTaskCurrent, setShiftsForTaskCurrent] = useState([]); + + const [title, setTitle] = useState(""); + const [description, setDescription] = useState(""); + const [scheduleType, setScheduleType] = useState(1); + + const [birthDateTimeStamp, setBirthDateTimeStamp] = useState(0); + + const [shiftsDaysSelectData, setShiftsDaysSelectData] = useState(null); + const [shiftsDaysCurrent, setShiftsDaysCurrent] = useState(null); + + const [, forceUpdate] = useState(); + + const routinesData = CTX.state.routinesData; + const positionsData = CTX.state.positionsData; + const shiftsData = CTX.state.shiftsData; + const routineForTaskChoose = CTX.state.routineForTaskChoose; + const positionsForTaskChoose = CTX.state.positionsForTaskChoose; + const shiftsForTaskChoose = CTX.state.shiftsForTaskChoose; + const shiftsDaysChoose = CTX.state.shiftsDaysChoose; + const goToEditTask = CTX.state.goToEditTask; + const taskData = CTX.state.taskData; + const idEditTask = CTX.state.idEditTask; + const aqueryNew = query.get("new"); + + const schedule = [ + { key: "هفتگی", value: 1 }, + { key: "روزانه", value: 0 }, + { key: "مخصوص یک روز ", value: 2 }, + ]; + + const week = [ + { key: "شنبه", value: 6 }, + { key: "یکشنبه", value: 0 }, + { key: "دوشنبه", value: 1 }, + { key: "سه شنبه", value: 2 }, + { key: "چهار شنبه", value: 3 }, + { key: "پنج شنبه", value: 4 }, + { key: "جمعه", value: 5 }, + ]; + + const validator = useRef( + new SimpleReactValidator({ + messages: { + required: "پر کردن این فیلد الزامی میباشد", + }, + element: (message) => ( + <> +
+ {message} +
+ + ), + }) + ); + + const body = { + title, + description, + routines: routineForTaskChoose, + positions: positionsForTaskChoose, + shifts: shiftsForTaskChoose, + scheduleType, + setFor: + birthDateTimeStamp && + moment + .utc( + [ + birthDateTimeStamp.year, + birthDateTimeStamp.month, + birthDateTimeStamp.day, + ], + "jYYYY-jMM-jDDTHH" + ) + .unix(), + days: shiftsDaysChoose, + }; + + const bodyUpdate = { + title, + description, + routines: routineForTaskChoose, + positions: positionsForTaskChoose, + shifts: shiftsForTaskChoose, + scheduleType, + setFor: + birthDateTimeStamp && + moment + .utc( + [ + birthDateTimeStamp.year, + birthDateTimeStamp.month, + birthDateTimeStamp.day, + ], + "jYYYY-jMM-jDDTHH" + ) + .unix(), + days: shiftsDaysChoose, + id: idEditTask, + }; + + const clear = () => { + setPositionsForTaskCurrent([]); + setPositionsSelectData([]); + setRoutineForTaskCurrent([]); + setRoutinesSelectData([]); + setBirthDateTimeStamp(0); + setScheduleType([]); + setDescription([]); + setTitle(""); + setShiftsForTaskCurrent([]); + setShiftsSelectData([]); + setShiftsDaysCurrent([]); + setShiftsDaysSelectData([]); + CTX.setRoutineForTaskChoose([]); + CTX.setPositionsForTaskChoose([]); + CTX.setShiftsForTaskChoose([]); + CTX.setShiftsDaysChoose([]); + }; + + const handleCreateTask = (update) => { + if (scheduleType == 0) { + console.log("scheduleType == 0"); + validator.current.message("shiftsDaysChoose", true, "required"); + validator.current.message("birthDateTimeStamp", true, "required"); + } + + if (scheduleType == 1) { + console.log("scheduleType == 1"); + + validator.current.message("birthDateTimeStamp", true, "required"); + } + + if (scheduleType == 2) { + console.log("scheduleType == 2"); + + validator.current.message("shiftsDaysChoose", true, "required"); + } + + if (validator.current.allValid()) { + if (update == "UPDATE") { + CTX.UpdateTask(bodyUpdate); + } else { + CTX.CreateTask(body); + } + } else { + toast.error("پرکردن همه ی فیلد ها واجب است", { + position: "bottom-right", + autoClose: 2000, + hideProgressBar: false, + closeOnClick: true, + pauseOnHover: true, + draggable: true, + progress: undefined, + }); + + validator.current.showMessages(); + console.log(validator.current); + forceUpdate(1); + } + }; + + const deleteRoutineForTask = (value) => { + CTX.setRoutineForTaskChoose( + routineForTaskChoose.filter((el) => el !== value) + ); + }; + + const deletePositionForTask = (value) => { + CTX.setPositionsForTaskChoose( + positionsForTaskChoose.filter((el) => el !== value) + ); + }; + + const deleteShiftForTask = (value) => { + CTX.setShiftsForTaskChoose( + shiftsForTaskChoose.filter((el) => el !== value) + ); + }; + + const deleteShiftsDaysForTask = (value) => { + CTX.setShiftsDaysChoose(shiftsDaysChoose.filter((el) => el !== value)); + }; + + useEffect(() => { + if (aqueryNew) { + clear(); + } + CTX.GetRoutines(); + CTX.GetPositions(); + CTX.GetShifts(); + }, []); + + useEffect(() => { + setRoutinesSelectData( + routinesData?.map((item) => ({ + key: item?.name, + value: item?.id, + })) + ); + }, [routinesData]); + + useEffect(() => { + setPositionsSelectData( + positionsData?.map((item) => ({ + key: item?.name, + value: item?.id, + })) + ); + }, [positionsData]); + + useEffect(() => { + setShiftsSelectData( + shiftsData?.map((item) => ({ + key: item?.title, + value: item?.id, + })) + ); + }, [shiftsData]); + + useEffect(() => { + setShiftsDaysSelectData( + shiftsForTaskChoose?.length > 0 && + shiftsData + ?.find((e) => e?.id == shiftsForTaskChoose[0]) + ?.days?.map((item) => ({ + key: week?.find((e) => e.value == item)?.key, + value: item, + })) + ); + }, [shiftsForTaskChoose]); + + useEffect(() => { + switch (scheduleType) { + case 0: + setBirthDateTimeStamp(0); + CTX.setShiftsDaysChoose([]); + + break; + case 1: + setBirthDateTimeStamp(0); + + break; + case 2: + CTX.setShiftsDaysChoose([]); + + break; + default: + break; + } + }, [scheduleType]); + + useEffect(() => { + // console.log("ssssssssssssssssssssssssss", taskData.routines); + + if (goToEditTask) { + // const date = moment + // .unix(taskData.birthDateTimeStamp) + // .locale("fa") + // .format("YYYY/MM/DD") + // .split("/"); + + // setBirthDateTimeStamp({ + // day: parseInt(date[2]), + // month: parseInt(date[1]), + // year: parseInt(date[0]), + // }); + setScheduleType(taskData.scheduleType); + setDescription(taskData.description); + setTitle(taskData.title); + CTX.setRoutineForTaskChoose( + taskData.routines?.map((item) => item.routineId) + ); + CTX.setPositionsForTaskChoose( + taskData.positions?.map((item) => item.positionId) + ); + CTX.setShiftsDaysChoose(taskData.days?.map((item) => item.dayOfWeek)); + CTX.setShiftsForTaskChoose(taskData.shifts?.map((item) => item.shiftId)); + } + }, [taskData]); + + console.log("body", body); + + return ( +
+ + +
+
+
+ { + setTitle(e.target.value); + validator.current.showMessageFor("title"); + }} + style="text-right" + validator={true} + validatorData={validator.current.message( + "title", + title, + "required" + )} + /> +
+ +
+ { + setDescription(e.target.value); + validator.current.showMessageFor("description"); + }} + textarea={true} + style="text-right" + /> +
+ {/* ===========routine=============== */} + +
+ { + setRoutineForTaskCurrent(e.target.value); + validator.current.showMessageFor("routines"); + + if (routineForTaskChoose.length >= 1) { + toast.error( + "فعلا معلوم نیست بیشتر از یکی بتونی باید با ممد اینا حرف بزنیم", + { + position: "bottom-right", + closeOnClick: true, + } + ); + } else { + if (!!routineForTaskChoose.find((b) => b == e.target.value)) { + toast.error("روز تکراری است", { + position: "bottom-right", + closeOnClick: true, + }); + } else { + CTX.setRoutineForTaskChoose((current) => [ + ...current, + e.target.value, + ]); + } + } + }} + style="text-right" + validator={true} + validatorData={validator.current.message( + "routines", + routineForTaskChoose, + ["required", { min: 1 }] + )} + select={true} + selectData={routinesSelectData} + defaultValue={"انتخاب کنید"} + /> +
+ +
+ {routineForTaskChoose && + routineForTaskChoose.map((e, index) => ( +
+
deleteRoutineForTask(e)} + >
+ +
+

+ {routinesData?.find((b) => b.id == e)?.name} +

+
+
+ ))} +
+ {/* ===========position=============== */} + +
+ { + setPositionsForTaskCurrent(e.target.value); + validator.current.showMessageFor("positions"); + + if (positionsForTaskChoose.length >= 1) { + toast.error( + "فعلا معلوم نیست بیشتر از یکی بتونی باید با ممد اینا حرف بزنیم", + { + position: "bottom-right", + closeOnClick: true, + } + ); + } else { + if ( + !!positionsForTaskChoose.find((b) => b == e.target.value) + ) { + toast.error("روز تکراری است", { + position: "bottom-right", + closeOnClick: true, + }); + } else { + CTX.setPositionsForTaskChoose((current) => [ + ...current, + e.target.value, + ]); + } + } + }} + style="text-right" + validatorData={validator.current.message( + "positions", + positionsForTaskChoose, + ["required", { min: 1 }] + )} + select={true} + selectData={positionsSelectData} + defaultValue={"انتخاب کنید"} + /> +
+ +
+ {positionsForTaskChoose && + positionsForTaskChoose.map((e, index) => ( +
+
deletePositionForTask(e)} + >
+ +
+

+ {positionsData?.find((b) => b.id == e)?.name} +

+
+
+ ))} +
+ + {/* ===========shifts=============== */} +
+ { + setShiftsForTaskCurrent(e.target.value); + validator.current.showMessageFor("shifts"); + + if (shiftsForTaskChoose.length >= 1) { + toast.error( + "فعلا معلوم نیست بیشتر از یکی بتونی باید با ممد اینا حرف بزنیم", + { + position: "bottom-right", + closeOnClick: true, + } + ); + } else { + if (!!shiftsForTaskChoose.find((b) => b == e.target.value)) { + toast.error("روز تکراری است", { + position: "bottom-right", + closeOnClick: true, + }); + } else { + CTX.setShiftsForTaskChoose((current) => [ + ...current, + e.target.value, + ]); + } + } + }} + style="text-right" + validatorData={validator.current.message( + "shifts", + shiftsForTaskChoose, + ["required", { min: 1 }] + )} + select={true} + selectData={shiftsSelectData} + defaultValue={"انتخاب کنید"} + /> +
+ +
+ {shiftsForTaskChoose && + shiftsForTaskChoose.map((e, index) => ( +
+
deleteShiftForTask(e)} + >
+ +
+

+ {shiftsData?.find((b) => b?.id == e)?.title} +

+
+
+ ))} +
+ + {/* ===========scheduleType=============== */} + +
+ { + setScheduleType(parseInt(e.target.value)); + validator.current.showMessageFor("scheduleType"); + }} + style="text-right" + validator={true} + validatorData={validator.current.message( + "scheduleType", + scheduleType, + ["required"] + )} + select={true} + selectData={[ + { key: "هفتگی", value: 1 }, + { key: "روزانه", value: 0 }, + { key: "مخصوص یک روز ", value: 2 }, + ]} + defaultValue={"انتخاب کنید"} + /> +
+ + {/*
+
+
+

+ {schedule?.find((b) => b.value == scheduleType)?.key} +

+
+
+
*/} + + {/* ===========scheduleType setFor=============== */} + + {scheduleType == 2 && ( + { + setBirthDateTimeStamp(e); + validator.current.showMessageFor("birthDateTimeStamp"); + }} + date={birthDateTimeStamp} + zindex="z-[101]" + validator={true} + validatorData={validator.current.message( + "birthDateTimeStamp", + birthDateTimeStamp, + ["required"] + )} + /> + )} +
+ {/* ===========shiftsDaysTask=============== */} + {scheduleType == 1 && ( + <> +
+ { + setShiftsDaysCurrent(e.target.value); + validator.current.showMessageFor("shiftsDaysChoose"); + + if (!!shiftsDaysChoose.find((b) => b == e.target.value)) { + toast.error("روز تکراری است", { + position: "bottom-right", + closeOnClick: true, + }); + } else { + CTX.setShiftsDaysChoose((current) => [ + ...current, + parseInt(e.target.value), + ]); + } + }} + validator={true} + validatorData={validator.current.message( + "shiftsDaysChoose", + shiftsDaysChoose, + ["required", { min: 1 }] + )} + style="text-right" + select={true} + selectData={shiftsDaysSelectData} + defaultValue={"انتخاب کنید"} + /> +
+ +
+ {shiftsDaysChoose && + shiftsDaysChoose.map((e, index) => ( +
+
deleteShiftsDaysForTask(e)} + >
+ +
+

+ {week?.find((b) => b.value == e).key} +

+
+
+ ))} +
+ + )} + {goToEditTask ? ( + handleCreateTask("UPDATE")} + subButton={true} + subButtonTitle="حذف فعالیت" + subButtonEvent={() => CTX.DeleteTask(idEditTask)} + /> + ) : ( + handleCreateTask()} + /> + )}{" "} +
+
+ ); +}; + +export default AddTask; diff --git a/src/app/tasks/page.jsx b/src/app/tasks/page.jsx new file mode 100644 index 0000000..21c6ab6 --- /dev/null +++ b/src/app/tasks/page.jsx @@ -0,0 +1,114 @@ +"use client"; + +import AppHeader from "@comp/AppHeader/page"; +import AppContext from "@ctx/AppContext"; +import BottomSheetCreateRoutine from "plugins/BottomSheet/BottomSheetCreateRoutine"; +import PersianNumber from "plugins/PersianNumber"; +import React, { useContext, useEffect } from "react"; +import Link from "next/link"; +import { useRouter } from "next/navigation"; +import ActivityCard from "@comp/TaskPage/ActivityCard/page"; +import TasksCard from "@comp/TaskPage/TasksCard/page"; + +const page = () => { + const CTX = useContext(AppContext); + + const router = useRouter(); + + const routinesData = CTX.state.routinesData; + + useEffect(() => { + CTX.GetTasks(); + }, []); + return ( +
+ { + CTX.setTaskData([]); + CTX.setIdEditTask(""); + CTX.setGoToEditTask(false); + }} + icon2={true} + iconName2="ARROW" + iconHref2="/home" + iconEvent2={() => { + return undefined; + }} + /> + +
+
+
+

تسک های هفتگی مجموعه

+

+ امروز + + + + تسک فعال دارید +

+
+ +
+ + + +
+
+ + +
+
+

تسک های امروز

+

+ امروز + + + + تسک فعال دارید +

+
+ +
+ + + +
+
+ +
+ +
+
+ + +
+ ); +}; + +export default page; diff --git a/style/globals.css b/style/globals.css index d989a64..d7246b8 100644 --- a/style/globals.css +++ b/style/globals.css @@ -66,6 +66,7 @@ body { font-family: KalamehWeb !important; background: #eeeeee; --toastify-font-family: KalamehWeb !important; + --Chart-defaults-font-family: KalamehWeb !important; } .rtl {