From d3a54607dc3b60f86916809f1c948ad3a532afae Mon Sep 17 00:00:00 2001 From: Yushin Jo Date: Wed, 5 Jun 2024 16:47:42 -0400 Subject: [PATCH 01/22] reduce redundancy in transcript --- .../Components/Experience/index.tsx | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/views/CoCurricularTranscript/Components/Experience/index.tsx b/src/views/CoCurricularTranscript/Components/Experience/index.tsx index fad067505..0f10f86e0 100644 --- a/src/views/CoCurricularTranscript/Components/Experience/index.tsx +++ b/src/views/CoCurricularTranscript/Components/Experience/index.tsx @@ -8,9 +8,7 @@ type Props = { const Experience = ({ Experience }: Props) => (
-
- {Experience.Job_Department_Name}, {Experience.Job_Title} -
+
{newJobTitle(Experience)}
{formatDuration(Experience)}
); @@ -35,4 +33,19 @@ const formatDuration = ({ Job_Start_Date, Job_End_Date }: StudentEmployment) => } }; +let prev_job_title = ''; + +const newJobTitle = ({ Job_Department_Name, Job_Title }: StudentEmployment) => { + if (Job_Title != prev_job_title) { + prev_job_title = Job_Title; + if (Job_Department_Name == Job_Title.split(':')[0]) { + return Job_Title; + } else { + return Job_Department_Name + ', ' + Job_Title; + } + } else { + return ''; + } +}; + export default Experience; From c99ace9aa5d3a508d6ee235e9e08a2c0c35c9f76 Mon Sep 17 00:00:00 2001 From: Yushin Jo Date: Thu, 6 Jun 2024 13:03:17 -0400 Subject: [PATCH 02/22] edited code by Amos --- .../Components/Experience/index.tsx | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/views/CoCurricularTranscript/Components/Experience/index.tsx b/src/views/CoCurricularTranscript/Components/Experience/index.tsx index 0f10f86e0..1c1f37608 100644 --- a/src/views/CoCurricularTranscript/Components/Experience/index.tsx +++ b/src/views/CoCurricularTranscript/Components/Experience/index.tsx @@ -34,18 +34,13 @@ const formatDuration = ({ Job_Start_Date, Job_End_Date }: StudentEmployment) => }; let prev_job_title = ''; - const newJobTitle = ({ Job_Department_Name, Job_Title }: StudentEmployment) => { if (Job_Title != prev_job_title) { prev_job_title = Job_Title; - if (Job_Department_Name == Job_Title.split(':')[0]) { - return Job_Title; - } else { - return Job_Department_Name + ', ' + Job_Title; - } - } else { - return ''; + return Job_Department_Name === Job_Title.split(':')[0] + ? Job_Title + : `${Job_Department_Name}, ${Job_Title}`; } + return ''; }; - export default Experience; From 2c161312a26fda6a8273bcbb190dd6ebab930334 Mon Sep 17 00:00:00 2001 From: Yushin Jo Date: Fri, 7 Jun 2024 10:43:20 -0400 Subject: [PATCH 03/22] using array to store job_title data instead of using variavble --- .../CoCurricularTranscript/Components/Experience/index.tsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/views/CoCurricularTranscript/Components/Experience/index.tsx b/src/views/CoCurricularTranscript/Components/Experience/index.tsx index 1c1f37608..c8ae29e08 100644 --- a/src/views/CoCurricularTranscript/Components/Experience/index.tsx +++ b/src/views/CoCurricularTranscript/Components/Experience/index.tsx @@ -33,10 +33,11 @@ const formatDuration = ({ Job_Start_Date, Job_End_Date }: StudentEmployment) => } }; -let prev_job_title = ''; +const prev_job_title: string[] = []; + const newJobTitle = ({ Job_Department_Name, Job_Title }: StudentEmployment) => { - if (Job_Title != prev_job_title) { - prev_job_title = Job_Title; + if (!prev_job_title.includes(Job_Title)) { + prev_job_title.push(Job_Title); return Job_Department_Name === Job_Title.split(':')[0] ? Job_Title : `${Job_Department_Name}, ${Job_Title}`; From 76e7c0fc643169b148e3d8b7c2482bd2c554abde Mon Sep 17 00:00:00 2001 From: Yushin Jo Date: Mon, 10 Jun 2024 13:06:59 -0400 Subject: [PATCH 04/22] sorting experience elements by alphabetical order and end date --- src/services/transcript.ts | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/services/transcript.ts b/src/services/transcript.ts index 36fbd047f..64386994d 100644 --- a/src/services/transcript.ts +++ b/src/services/transcript.ts @@ -1,6 +1,7 @@ import { differenceInCalendarMonths, format, parse } from 'date-fns'; import http from './http'; import userService, { MembershipHistory } from './user'; +import Experience from 'views/CoCurricularTranscript/Components/Experience'; export type StudentEmployment = { Job_Title: string; @@ -22,7 +23,9 @@ const getItems = (username: string) => Promise.all([ userService.getMembershipHistory(username), http.get('studentemployment/'), - ]).then(([memberships, jobs]) => categorizeItems(memberships, jobs)); + ]) + .then(([memberships, jobs]) => categorizeItems(memberships, jobs)) + .then(); // const MembershipTypeMap = { // LEA: 'honors', @@ -74,6 +77,15 @@ const categorizeItems = async (memberships: MembershipHistory[], jobs: StudentEm (a, b) => getExperienceEndDate(b) - getExperienceEndDate(a), ); + //test + // groupedMembershipHistory.experiences.sort( + // (a, b) => getJobTitle(a).localeCompare(getJobTitle(b)), + // ); + // groupedMembershipHistory.experiences.sort( + // (a, b) => getJobTitle(a).localeCompare(getJobTitle(b)) != 0 + // ? 0 : getExperienceEndDate(b) - getExperienceEndDate(a), + // ); + return groupedMembershipHistory; }; @@ -141,3 +153,10 @@ const transcriptService = { }; export default transcriptService; + +//test +const getJobTitle = (experience: MembershipHistory | StudentEmployment) => { + const title = 'Sessions' in experience ? experience.ActivityCode : experience.Job_Title; + + return title; +}; From 6d7cf865389964f7547833917f8414688081eac0 Mon Sep 17 00:00:00 2001 From: Yushin Jo Date: Mon, 10 Jun 2024 13:12:19 -0400 Subject: [PATCH 05/22] Sorting experience elements by alphabetical order and end date. Delete unnecessary comments. --- src/services/transcript.ts | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/src/services/transcript.ts b/src/services/transcript.ts index 64386994d..4a2bca54f 100644 --- a/src/services/transcript.ts +++ b/src/services/transcript.ts @@ -1,7 +1,6 @@ import { differenceInCalendarMonths, format, parse } from 'date-fns'; import http from './http'; import userService, { MembershipHistory } from './user'; -import Experience from 'views/CoCurricularTranscript/Components/Experience'; export type StudentEmployment = { Job_Title: string; @@ -73,18 +72,15 @@ const categorizeItems = async (memberships: MembershipHistory[], jobs: StudentEm groupedMembershipHistory.activities = memberships; - groupedMembershipHistory.experiences.sort( - (a, b) => getExperienceEndDate(b) - getExperienceEndDate(a), - ); + // sorting job title by alphabetical order + groupedMembershipHistory.experiences.sort((a, b) => getJobTitle(a).localeCompare(getJobTitle(b))); - //test - // groupedMembershipHistory.experiences.sort( - // (a, b) => getJobTitle(a).localeCompare(getJobTitle(b)), - // ); - // groupedMembershipHistory.experiences.sort( - // (a, b) => getJobTitle(a).localeCompare(getJobTitle(b)) != 0 - // ? 0 : getExperienceEndDate(b) - getExperienceEndDate(a), - // ); + // sorting the same job title by end date + groupedMembershipHistory.experiences.sort((a, b) => + getJobTitle(a).localeCompare(getJobTitle(b)) != 0 + ? 0 + : getExperienceEndDate(b) - getExperienceEndDate(a), + ); return groupedMembershipHistory; }; @@ -154,7 +150,6 @@ const transcriptService = { export default transcriptService; -//test const getJobTitle = (experience: MembershipHistory | StudentEmployment) => { const title = 'Sessions' in experience ? experience.ActivityCode : experience.Job_Title; From 5936f8cc9535e415d45e2a1ee545ea6b3522ebfe Mon Sep 17 00:00:00 2001 From: Yushin Jo Date: Tue, 11 Jun 2024 09:33:08 -0400 Subject: [PATCH 06/22] Complete the code to job titles and end date. --- .../Components/Experience/index.tsx | 34 +++++++++++++------ src/views/CoCurricularTranscript/index.tsx | 4 +++ 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/src/views/CoCurricularTranscript/Components/Experience/index.tsx b/src/views/CoCurricularTranscript/Components/Experience/index.tsx index c8ae29e08..a0b586426 100644 --- a/src/views/CoCurricularTranscript/Components/Experience/index.tsx +++ b/src/views/CoCurricularTranscript/Components/Experience/index.tsx @@ -1,17 +1,24 @@ import { format } from 'date-fns'; import { StudentEmployment } from 'services/transcript'; import styles from './Experience.module.css'; +import { Dispatch, SetStateAction } from 'react'; type Props = { Experience: StudentEmployment; + previousTitles: string[]; + setPreviousTitles: Dispatch>; }; -const Experience = ({ Experience }: Props) => ( -
-
{newJobTitle(Experience)}
-
{formatDuration(Experience)}
-
-); +const Experience = ({ Experience, previousTitles, setPreviousTitles }: Props) => { + return ( +
+
+ {newJobTitle(Experience, previousTitles, setPreviousTitles)} +
+
{formatDuration(Experience)}
+
+ ); +}; const formatDuration = ({ Job_Start_Date, Job_End_Date }: StudentEmployment) => { if (!Job_Start_Date) { @@ -33,15 +40,20 @@ const formatDuration = ({ Job_Start_Date, Job_End_Date }: StudentEmployment) => } }; -const prev_job_title: string[] = []; - -const newJobTitle = ({ Job_Department_Name, Job_Title }: StudentEmployment) => { - if (!prev_job_title.includes(Job_Title)) { - prev_job_title.push(Job_Title); +const newJobTitle = ( + { Job_Department_Name, Job_Title }: StudentEmployment, + previousTitles: string[], + setPreviousTitles: Dispatch>, +) => { + if (!previousTitles.includes(Job_Title)) { + console.log(previousTitles); + previousTitles.push(Job_Title); + setPreviousTitles(previousTitles); return Job_Department_Name === Job_Title.split(':')[0] ? Job_Title : `${Job_Department_Name}, ${Job_Title}`; } return ''; }; + export default Experience; diff --git a/src/views/CoCurricularTranscript/index.tsx b/src/views/CoCurricularTranscript/index.tsx index 3d9b1ba2c..b9358f1cd 100644 --- a/src/views/CoCurricularTranscript/index.tsx +++ b/src/views/CoCurricularTranscript/index.tsx @@ -19,6 +19,7 @@ const SectionTitle: { [Key in keyof TranscriptItems]: string } = { }; const CoCurricularTranscript = () => { + const [previousTitles, setPreviousTitles] = useState([]); const [loading, setLoading] = useState(true); const [transcriptItems, setTranscriptItems] = useState(); const isAuthenticated = useIsAuthenticated(); @@ -32,6 +33,7 @@ const CoCurricularTranscript = () => { return; } setLoading(true); + setPreviousTitles([]); const transcriptItems = await transcriptService.getItems(profile.AD_Username); setTranscriptItems(transcriptItems); } else { @@ -78,6 +80,8 @@ const CoCurricularTranscript = () => { ) : ( ), From 7b16a932407cb3ea770afce51dc123cd0138e5c0 Mon Sep 17 00:00:00 2001 From: Yushin Jo Date: Tue, 11 Jun 2024 09:37:56 -0400 Subject: [PATCH 07/22] Delete console.log --- src/views/CoCurricularTranscript/Components/Experience/index.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/views/CoCurricularTranscript/Components/Experience/index.tsx b/src/views/CoCurricularTranscript/Components/Experience/index.tsx index a0b586426..d74acb035 100644 --- a/src/views/CoCurricularTranscript/Components/Experience/index.tsx +++ b/src/views/CoCurricularTranscript/Components/Experience/index.tsx @@ -46,7 +46,6 @@ const newJobTitle = ( setPreviousTitles: Dispatch>, ) => { if (!previousTitles.includes(Job_Title)) { - console.log(previousTitles); previousTitles.push(Job_Title); setPreviousTitles(previousTitles); return Job_Department_Name === Job_Title.split(':')[0] From e9ae5c92341c685179f9d199a595831f88ab635c Mon Sep 17 00:00:00 2001 From: yushinj <149107617+yushinj@users.noreply.github.com> Date: Wed, 12 Jun 2024 08:19:53 -0400 Subject: [PATCH 08/22] Apply suggestions from code review Co-authored-by: Amos Cha <78386128+amos-cha@users.noreply.github.com> --- src/services/transcript.ts | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/services/transcript.ts b/src/services/transcript.ts index 4a2bca54f..f2b9e77a6 100644 --- a/src/services/transcript.ts +++ b/src/services/transcript.ts @@ -24,7 +24,6 @@ const getItems = (username: string) => http.get('studentemployment/'), ]) .then(([memberships, jobs]) => categorizeItems(memberships, jobs)) - .then(); // const MembershipTypeMap = { // LEA: 'honors', @@ -73,7 +72,6 @@ const categorizeItems = async (memberships: MembershipHistory[], jobs: StudentEm groupedMembershipHistory.activities = memberships; // sorting job title by alphabetical order - groupedMembershipHistory.experiences.sort((a, b) => getJobTitle(a).localeCompare(getJobTitle(b))); // sorting the same job title by end date groupedMembershipHistory.experiences.sort((a, b) => @@ -150,8 +148,5 @@ const transcriptService = { export default transcriptService; -const getJobTitle = (experience: MembershipHistory | StudentEmployment) => { - const title = 'Sessions' in experience ? experience.ActivityCode : experience.Job_Title; - - return title; -}; +const getJobTitle = (experience: MembershipHistory | StudentEmployment) => + 'Sessions' in experience ? experience.ActivityCode : experience.Job_Title; From 8b4083c0b68f3c3c1f3c97b6b6a1eaf79f7884e5 Mon Sep 17 00:00:00 2001 From: Yushin Jo Date: Wed, 12 Jun 2024 14:59:10 -0400 Subject: [PATCH 09/22] Alppy suggestions from code review and improve legibility of transcripts --- src/services/transcript.ts | 18 +++++++-------- .../Experience/Experience.module.scss | 23 ++++++++++++++++++- .../Components/Experience/index.tsx | 11 +++++---- src/views/CoCurricularTranscript/index.tsx | 4 ++++ 4 files changed, 42 insertions(+), 14 deletions(-) diff --git a/src/services/transcript.ts b/src/services/transcript.ts index f2b9e77a6..838a2bb83 100644 --- a/src/services/transcript.ts +++ b/src/services/transcript.ts @@ -22,8 +22,7 @@ const getItems = (username: string) => Promise.all([ userService.getMembershipHistory(username), http.get('studentemployment/'), - ]) - .then(([memberships, jobs]) => categorizeItems(memberships, jobs)) + ]).then(([memberships, jobs]) => categorizeItems(memberships, jobs)); // const MembershipTypeMap = { // LEA: 'honors', @@ -71,12 +70,13 @@ const categorizeItems = async (memberships: MembershipHistory[], jobs: StudentEm groupedMembershipHistory.activities = memberships; - // sorting job title by alphabetical order - - // sorting the same job title by end date + /** + * Sorting job titles by alphabetical order. + * Sorting job titles by end date if there are the same job titles. + */ groupedMembershipHistory.experiences.sort((a, b) => - getJobTitle(a).localeCompare(getJobTitle(b)) != 0 - ? 0 + getJobTitle(a).localeCompare(getJobTitle(b)) !== 0 + ? getJobTitle(a).localeCompare(getJobTitle(b)) : getExperienceEndDate(b) - getExperienceEndDate(a), ); @@ -148,5 +148,5 @@ const transcriptService = { export default transcriptService; -const getJobTitle = (experience: MembershipHistory | StudentEmployment) => - 'Sessions' in experience ? experience.ActivityCode : experience.Job_Title; +const getJobTitle = (experience: MembershipHistory | StudentEmployment) => + 'Sessions' in experience ? experience.ActivityCode : experience.Job_Title; diff --git a/src/views/CoCurricularTranscript/Components/Experience/Experience.module.scss b/src/views/CoCurricularTranscript/Components/Experience/Experience.module.scss index d42335a58..b87544058 100644 --- a/src/views/CoCurricularTranscript/Components/Experience/Experience.module.scss +++ b/src/views/CoCurricularTranscript/Components/Experience/Experience.module.scss @@ -31,8 +31,29 @@ } } +.experience_transcript_activities_empty_titles { + display: grid; + grid-template-columns: 5% 70% 25%; + grid-template-rows: auto auto; + justify-items: stretch; + position: relative; + top: -20px; + + .organization_role { + grid-column: 2; + grid-row: 1; + text-align: left; + } + + .date { + grid-column: 3; + grid-row: 1; + text-align: left; + } +} + @media print { .experience_transcript_activities { - grid-row-gap: 0px; + grid-row-gap: 20px; } } diff --git a/src/views/CoCurricularTranscript/Components/Experience/index.tsx b/src/views/CoCurricularTranscript/Components/Experience/index.tsx index d74acb035..2a89e6833 100644 --- a/src/views/CoCurricularTranscript/Components/Experience/index.tsx +++ b/src/views/CoCurricularTranscript/Components/Experience/index.tsx @@ -10,11 +10,14 @@ type Props = { }; const Experience = ({ Experience, previousTitles, setPreviousTitles }: Props) => { + const jobTitles = newJobTitle(Experience, previousTitles, setPreviousTitles); + const experienceTranscript = + jobTitles === '' + ? styles.experience_transcript_activities_empty_titles + : styles.experience_transcript_activities; return ( -
-
- {newJobTitle(Experience, previousTitles, setPreviousTitles)} -
+
+
{jobTitles}
{formatDuration(Experience)}
); diff --git a/src/views/CoCurricularTranscript/index.tsx b/src/views/CoCurricularTranscript/index.tsx index b9358f1cd..9250a982f 100644 --- a/src/views/CoCurricularTranscript/index.tsx +++ b/src/views/CoCurricularTranscript/index.tsx @@ -33,6 +33,10 @@ const CoCurricularTranscript = () => { return; } setLoading(true); + /** + * When you return the transcript from other page, the job titles will be lost + * Fixing bug by setting PreviousTitles to empty array when the transcript is loaded + */ setPreviousTitles([]); const transcriptItems = await transcriptService.getItems(profile.AD_Username); setTranscriptItems(transcriptItems); From 1b9fb9110610329f548e1cc5e63bb150e8b21ea2 Mon Sep 17 00:00:00 2001 From: yushinj <149107617+yushinj@users.noreply.github.com> Date: Thu, 13 Jun 2024 09:52:11 -0400 Subject: [PATCH 10/22] Apply suggestions from code review Co-authored-by: Evan Platzer --- src/services/transcript.ts | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/services/transcript.ts b/src/services/transcript.ts index 838a2bb83..349dff84a 100644 --- a/src/services/transcript.ts +++ b/src/services/transcript.ts @@ -70,15 +70,13 @@ const categorizeItems = async (memberships: MembershipHistory[], jobs: StudentEm groupedMembershipHistory.activities = memberships; - /** - * Sorting job titles by alphabetical order. - * Sorting job titles by end date if there are the same job titles. - */ - groupedMembershipHistory.experiences.sort((a, b) => - getJobTitle(a).localeCompare(getJobTitle(b)) !== 0 - ? getJobTitle(a).localeCompare(getJobTitle(b)) - : getExperienceEndDate(b) - getExperienceEndDate(a), - ); + // Sort experiences by experience name then by end date + groupedMembershipHistory.experiences.sort((a, b) => { + const nameComparison = getName(a).localeCompare(getName(b)); + return nameComparison !== 0 + ? nameComparison + : getExperienceEndDate(b) - getExperienceEndDate(a); + }); return groupedMembershipHistory; }; @@ -148,5 +146,5 @@ const transcriptService = { export default transcriptService; -const getJobTitle = (experience: MembershipHistory | StudentEmployment) => +const getName = (experience: MembershipHistory | StudentEmployment) => 'Sessions' in experience ? experience.ActivityCode : experience.Job_Title; From 189c11052e3055aa2a890d6feb5c19663c01615a Mon Sep 17 00:00:00 2001 From: Yushin Jo Date: Fri, 14 Jun 2024 12:08:49 -0400 Subject: [PATCH 11/22] apply suggestion from code reivew except groupedExperience --- .../Experience/Experience.module.scss | 18 +----------------- .../Components/Experience/index.tsx | 12 +++++++----- 2 files changed, 8 insertions(+), 22 deletions(-) diff --git a/src/views/CoCurricularTranscript/Components/Experience/Experience.module.scss b/src/views/CoCurricularTranscript/Components/Experience/Experience.module.scss index b87544058..fdb9a72be 100644 --- a/src/views/CoCurricularTranscript/Components/Experience/Experience.module.scss +++ b/src/views/CoCurricularTranscript/Components/Experience/Experience.module.scss @@ -31,25 +31,9 @@ } } -.experience_transcript_activities_empty_titles { - display: grid; - grid-template-columns: 5% 70% 25%; - grid-template-rows: auto auto; - justify-items: stretch; +.empty_title { position: relative; top: -20px; - - .organization_role { - grid-column: 2; - grid-row: 1; - text-align: left; - } - - .date { - grid-column: 3; - grid-row: 1; - text-align: left; - } } @media print { diff --git a/src/views/CoCurricularTranscript/Components/Experience/index.tsx b/src/views/CoCurricularTranscript/Components/Experience/index.tsx index 2a89e6833..2f1bff614 100644 --- a/src/views/CoCurricularTranscript/Components/Experience/index.tsx +++ b/src/views/CoCurricularTranscript/Components/Experience/index.tsx @@ -11,12 +11,14 @@ type Props = { const Experience = ({ Experience, previousTitles, setPreviousTitles }: Props) => { const jobTitles = newJobTitle(Experience, previousTitles, setPreviousTitles); - const experienceTranscript = - jobTitles === '' - ? styles.experience_transcript_activities_empty_titles - : styles.experience_transcript_activities; return ( -
+
{jobTitles}
{formatDuration(Experience)}
From 1ac3f236b3f775c0bb0288da27a1735ff751014f Mon Sep 17 00:00:00 2001 From: Yushin Jo Date: Tue, 2 Jul 2024 13:41:30 -0400 Subject: [PATCH 12/22] Create grouped experience by Job_Title and sort them by the lastes end date. --- src/services/transcript.ts | 55 ++++++++++++++++++++++++++++++++++---- 1 file changed, 50 insertions(+), 5 deletions(-) diff --git a/src/services/transcript.ts b/src/services/transcript.ts index 349dff84a..b158a8004 100644 --- a/src/services/transcript.ts +++ b/src/services/transcript.ts @@ -18,6 +18,12 @@ export type TranscriptItems = { activities: MembershipHistory[]; }; +export type Groupexperience = { + Job_Title: string; + job: StudentEmployment[] | undefined; + latestDate?: string; +}; + const getItems = (username: string) => Promise.all([ userService.getMembershipHistory(username), @@ -70,12 +76,43 @@ const categorizeItems = async (memberships: MembershipHistory[], jobs: StudentEm groupedMembershipHistory.activities = memberships; - // Sort experiences by experience name then by end date + // Sort experiences by experience name then by end date groupedMembershipHistory.experiences.sort((a, b) => { - const nameComparison = getName(a).localeCompare(getName(b)); - return nameComparison !== 0 - ? nameComparison - : getExperienceEndDate(b) - getExperienceEndDate(a); + const nameComparison = getName(a).localeCompare(getName(b)); + return nameComparison !== 0 + ? nameComparison + : getExperienceEndDate(b) - getExperienceEndDate(a); + }); + + groupedMembershipHistory.experiences = jobs; + + let GroupByTitle = Object.entries(Object.groupBy(jobs, (job) => job.Job_Title)).map( + ([title, job]) => ({ + Job_Title: title, + job, + latestDate: '', + }), + ); + + // This code is has a lot of ? and ! opeators because typescript can't analyze the + // loop to recognize that the array indexing is safe. + for (let i = 0; i < GroupByTitle.length; i++) { + let maxDate: string = ''; + let tempJob = GroupByTitle?.[i].job; + let numJobs = tempJob!.length; + for (let j = 0; j < numJobs; j++) { + let tempVal = GroupByTitle[i]; + let value = tempVal!.job?.[j].Job_End_Date; + if (maxDate! < value!) { + maxDate = value!; + } + } + GroupByTitle[i].latestDate = maxDate; + } + + // Sorting the grouped job by the latest end date + GroupByTitle.sort((a, b) => { + return getLatestEndDate(b)! - getLatestEndDate(a)!; }); return groupedMembershipHistory; @@ -148,3 +185,11 @@ export default transcriptService; const getName = (experience: MembershipHistory | StudentEmployment) => 'Sessions' in experience ? experience.ActivityCode : experience.Job_Title; + +const getLatestEndDate = (GroupByTitle: Groupexperience) => { + const date = GroupByTitle.latestDate; + + if (date) { + return Date.parse(date); + } +}; From 0af23306a8c8b6ac90b942cd0eb7ae1bbfcceeb4 Mon Sep 17 00:00:00 2001 From: Yushin Jo Date: Mon, 8 Jul 2024 11:16:45 -0400 Subject: [PATCH 13/22] ignore --- src/services/transcript.ts | 48 ++++++++++++++++++- .../Experience/Experience.module.scss | 15 +++--- .../Components/Experience/index.tsx | 23 +++------ src/views/CoCurricularTranscript/index.tsx | 8 ---- 4 files changed, 60 insertions(+), 34 deletions(-) diff --git a/src/services/transcript.ts b/src/services/transcript.ts index b158a8004..95bc30749 100644 --- a/src/services/transcript.ts +++ b/src/services/transcript.ts @@ -1,6 +1,8 @@ import { differenceInCalendarMonths, format, parse } from 'date-fns'; import http from './http'; import userService, { MembershipHistory } from './user'; +import { keys } from 'lodash'; +import { LabelTwoTone } from '@mui/icons-material'; export type StudentEmployment = { Job_Title: string; @@ -24,6 +26,20 @@ export type Groupexperience = { latestDate?: string; }; +export type NewStudentEmployment = { + Job_Title: string; + Job_Department: string; + Job_Department_Name: string; + Job_Date: session[]; + Job_Latest_Date: string; +}; + +export type session = { + Job_Start_Date?: string; + Job_End_Date?: string; + Job_Expected_Date?: string; +}; + const getItems = (username: string) => Promise.all([ userService.getMembershipHistory(username), @@ -56,7 +72,7 @@ const getItems = (username: string) => const categorizeItems = async (memberships: MembershipHistory[], jobs: StudentEmployment[]) => { const groupedMembershipHistory: TranscriptItems = { honors: [] as MembershipHistory[], - experiences: jobs as (MembershipHistory | StudentEmployment)[], + experiences: jobs as StudentEmployment[], service: [] as MembershipHistory[], activities: [] as MembershipHistory[], }; @@ -84,7 +100,7 @@ const categorizeItems = async (memberships: MembershipHistory[], jobs: StudentEm : getExperienceEndDate(b) - getExperienceEndDate(a); }); - groupedMembershipHistory.experiences = jobs; + //groupedMembershipHistory.experiences = jobs; let GroupByTitle = Object.entries(Object.groupBy(jobs, (job) => job.Job_Title)).map( ([title, job]) => ({ @@ -115,6 +131,34 @@ const categorizeItems = async (memberships: MembershipHistory[], jobs: StudentEm return getLatestEndDate(b)! - getLatestEndDate(a)!; }); + console.log(GroupByTitle); + + /* Delete + let test = []; + for (let i = 0; i < GroupByTitle.length; i++) { + let tempJob = GroupByTitle?.[i].job; + let numJobs = tempJob!.length; + for (let j = 0; j < numJobs; j++) { + let tempVal = GroupByTitle[i]; + let value = tempVal!.job?.[j]; + if (j > 0) { + value!.Job_Title = ''; + } + if (value) { + test.push(value); + } + } + } + + for (let i = 0; i < test.length; i++) { + jobs[i] = test[i]; + } + */ + + //console.log('jobs'); + //console.log(jobs); + //console.log('groupedMembershipHistory'); + //console.log(groupedMembershipHistory); return groupedMembershipHistory; }; diff --git a/src/views/CoCurricularTranscript/Components/Experience/Experience.module.scss b/src/views/CoCurricularTranscript/Components/Experience/Experience.module.scss index fdb9a72be..3bbbd698e 100644 --- a/src/views/CoCurricularTranscript/Components/Experience/Experience.module.scss +++ b/src/views/CoCurricularTranscript/Components/Experience/Experience.module.scss @@ -29,15 +29,16 @@ grid-row: 1; text-align: left; } + + @media print { + .experience_transcript_activities { + grid-row-gap: 20px; + } + } } .empty_title { position: relative; - top: -20px; -} - -@media print { - .experience_transcript_activities { - grid-row-gap: 20px; - } + grid-row-gap: 5px; + top: -15px; } diff --git a/src/views/CoCurricularTranscript/Components/Experience/index.tsx b/src/views/CoCurricularTranscript/Components/Experience/index.tsx index 2f1bff614..db1e07856 100644 --- a/src/views/CoCurricularTranscript/Components/Experience/index.tsx +++ b/src/views/CoCurricularTranscript/Components/Experience/index.tsx @@ -1,16 +1,13 @@ import { format } from 'date-fns'; import { StudentEmployment } from 'services/transcript'; import styles from './Experience.module.css'; -import { Dispatch, SetStateAction } from 'react'; type Props = { Experience: StudentEmployment; - previousTitles: string[]; - setPreviousTitles: Dispatch>; }; -const Experience = ({ Experience, previousTitles, setPreviousTitles }: Props) => { - const jobTitles = newJobTitle(Experience, previousTitles, setPreviousTitles); +const Experience = ({ Experience }: Props) => { + const jobTitles = newJobTitle(Experience); return (
} }; -const newJobTitle = ( - { Job_Department_Name, Job_Title }: StudentEmployment, - previousTitles: string[], - setPreviousTitles: Dispatch>, -) => { - if (!previousTitles.includes(Job_Title)) { - previousTitles.push(Job_Title); - setPreviousTitles(previousTitles); - return Job_Department_Name === Job_Title.split(':')[0] - ? Job_Title - : `${Job_Department_Name}, ${Job_Title}`; +const newJobTitle = ({ Job_Department_Name, Job_Title }: StudentEmployment) => { + if (Job_Title === '') { + return ''; } - return ''; + return Job_Title === '' ? Job_Title : `${Job_Department_Name}, ${Job_Title}`; }; export default Experience; diff --git a/src/views/CoCurricularTranscript/index.tsx b/src/views/CoCurricularTranscript/index.tsx index 9250a982f..3d9b1ba2c 100644 --- a/src/views/CoCurricularTranscript/index.tsx +++ b/src/views/CoCurricularTranscript/index.tsx @@ -19,7 +19,6 @@ const SectionTitle: { [Key in keyof TranscriptItems]: string } = { }; const CoCurricularTranscript = () => { - const [previousTitles, setPreviousTitles] = useState([]); const [loading, setLoading] = useState(true); const [transcriptItems, setTranscriptItems] = useState(); const isAuthenticated = useIsAuthenticated(); @@ -33,11 +32,6 @@ const CoCurricularTranscript = () => { return; } setLoading(true); - /** - * When you return the transcript from other page, the job titles will be lost - * Fixing bug by setting PreviousTitles to empty array when the transcript is loaded - */ - setPreviousTitles([]); const transcriptItems = await transcriptService.getItems(profile.AD_Username); setTranscriptItems(transcriptItems); } else { @@ -84,8 +78,6 @@ const CoCurricularTranscript = () => { ) : ( ), From b20f13026466ce298ac5f5fb040070a4068e1d87 Mon Sep 17 00:00:00 2001 From: Yushin Jo Date: Tue, 9 Jul 2024 09:21:49 -0400 Subject: [PATCH 14/22] ignore --- src/services/transcript.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/services/transcript.ts b/src/services/transcript.ts index 95bc30749..facc59589 100644 --- a/src/services/transcript.ts +++ b/src/services/transcript.ts @@ -133,7 +133,6 @@ const categorizeItems = async (memberships: MembershipHistory[], jobs: StudentEm console.log(GroupByTitle); - /* Delete let test = []; for (let i = 0; i < GroupByTitle.length; i++) { let tempJob = GroupByTitle?.[i].job; @@ -153,7 +152,6 @@ const categorizeItems = async (memberships: MembershipHistory[], jobs: StudentEm for (let i = 0; i < test.length; i++) { jobs[i] = test[i]; } - */ //console.log('jobs'); //console.log(jobs); From 2e6043789e2936b60df8be7f297aed11f94dfa2c Mon Sep 17 00:00:00 2001 From: Yushin Jo Date: Thu, 11 Jul 2024 13:49:51 -0400 Subject: [PATCH 15/22] display grouped and sorted transcript --- src/services/transcript.ts | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/src/services/transcript.ts b/src/services/transcript.ts index facc59589..f7c5d6592 100644 --- a/src/services/transcript.ts +++ b/src/services/transcript.ts @@ -1,8 +1,6 @@ import { differenceInCalendarMonths, format, parse } from 'date-fns'; import http from './http'; import userService, { MembershipHistory } from './user'; -import { keys } from 'lodash'; -import { LabelTwoTone } from '@mui/icons-material'; export type StudentEmployment = { Job_Title: string; @@ -26,20 +24,6 @@ export type Groupexperience = { latestDate?: string; }; -export type NewStudentEmployment = { - Job_Title: string; - Job_Department: string; - Job_Department_Name: string; - Job_Date: session[]; - Job_Latest_Date: string; -}; - -export type session = { - Job_Start_Date?: string; - Job_End_Date?: string; - Job_Expected_Date?: string; -}; - const getItems = (username: string) => Promise.all([ userService.getMembershipHistory(username), From c8fabde9fb0897ef81031dfbf6277cbe169182bf Mon Sep 17 00:00:00 2001 From: Yushin Jo Date: Thu, 11 Jul 2024 15:16:37 -0400 Subject: [PATCH 16/22] delete unsed code and add comment --- .../Home/components/DiningBalance/index.jsx | 49 +++++++++---------- 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/src/views/Home/components/DiningBalance/index.jsx b/src/views/Home/components/DiningBalance/index.jsx index 0e4681edc..1c216b283 100644 --- a/src/views/Home/components/DiningBalance/index.jsx +++ b/src/views/Home/components/DiningBalance/index.jsx @@ -11,7 +11,7 @@ import { import EditIcon from '@mui/icons-material/Edit'; import GordonLoader from 'components/Loader'; import { useEffect, useState } from 'react'; -import { Doughnut } from 'react-chartjs-2'; +import { Pie } from 'react-chartjs-2'; import session from 'services/session'; import user from 'services/user'; import styles from '../Doughnut.module.css'; @@ -74,66 +74,63 @@ const DiningBalance = () => { ); } else { const swipeInit = diningInfo.Swipes.InitialBalance; - const swipeCurr = swipeInit === 0 ? 1 : diningInfo.Swipes.CurrentBalance; + const swipeCurr = 100; const swipeUsed = swipeInit === 0 ? 0 : swipeInit - swipeCurr; const dollarInit = diningInfo.DiningDollars.InitialBalance; const dollarCurrNotRounded = diningInfo.DiningDollars.CurrentBalance; - const dollarCurr = Math.round(dollarCurrNotRounded * 100) / 100; + const dollarCurr = 30; const dollarUsedNotRounded = dollarInit - dollarCurr; //fixed issue of too many decimal places in meal points const dollarUsed = Math.round(dollarUsedNotRounded * 100) / 100; const guestInit = diningInfo.GuestSwipes.InitialBalance; - const guestCurr = diningInfo.GuestSwipes.CurrentBalance; + const guestCurr = 5; const guestUsed = guestInit - guestCurr; const daysLeftRounded = Math.max(daysRemaining, 0); const daysFinished = daysInSession - daysLeftRounded; const options = { - cutoutPercentage: 0, - tooltips: { - // Allow different tooltips for different datasets within the same pie; - callbacks: { - // Code taken from https://github.com/chartjs/Chart.js/issues/1417 - label: function (item, data) { - return ( - data.datasets[item.datasetIndex].label[item.index] + - ': ' + - (swipeInit === 0 && - data.datasets[item.datasetIndex].label[item.index].includes('Swipes') && - !data.datasets[item.datasetIndex].label[item.index].includes('Guest') - ? '\u221E' - : data.datasets[item.datasetIndex].data[item.index]) - ); + responsive: true, + legend: { display: false }, + plugins: { + tooltip: { + // Allow different tooltips for different datasets within the same pie; + callbacks: { + // Code taken from https://github.com/chartjs/Chart.js/issues/1417 + label: function (data) { + return swipeInit === 0 && + data.dataset.labels.includes('Swipes Used' || 'Swipes Remaining') + ? data.dataset.labels[data.dataIndex] + ': ' + '\u221E' + : data.dataset.labels[data.dataIndex] + ': ' + data.dataset.data[data.dataIndex]; + }, }, }, }, - legend: false, }; const data = { legendEntries: ['A', 'B', 'C', 'D'], // Just used as key datasets: [ { - label: ['Days Finished', 'Days Remaining'], + labels: ['Days Finished', 'Days Remaining'], data: [daysFinished, daysLeftRounded], - backgroundColor: [daysColor, emptyColor], + backgroundColor: [emptyColor, daysColor], }, { - label: ['Swipes Used', 'Swipes Remaining'], + labels: ['Swipes Used', 'Swipes Remaining'], data: [swipeUsed, swipeCurr], backgroundColor: [emptyColor, swipesColor], }, { - label: ['Dining Dollars Used', 'Dining Dollars Remaining'], + labels: ['Dining Dollars Used', 'Dining Dollars Remaining'], data: [dollarUsed, dollarCurr], backgroundColor: [emptyColor, dollarsColor], }, { - label: ['Guest Swipes Used', 'Guest Swipes Remaining'], + labels: ['Guest Swipes Used', 'Guest Swipes Remaining'], data: [guestUsed, guestCurr], backgroundColor: [emptyColor, guestColor], }, @@ -165,7 +162,7 @@ const DiningBalance = () => { - +
Date: Fri, 12 Jul 2024 11:58:56 -0400 Subject: [PATCH 17/22] add comments --- src/services/transcript.ts | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/services/transcript.ts b/src/services/transcript.ts index f7c5d6592..b352e159e 100644 --- a/src/services/transcript.ts +++ b/src/services/transcript.ts @@ -24,6 +24,20 @@ export type Groupexperience = { latestDate?: string; }; +export type NewStudentEmployment = { + Job_Title: string; + Job_Department: string; + Job_Department_Name: string; + Job_Date: session[]; + Job_Latest_Date: string; +}; + +export type session = { + Job_Start_Date?: string; + Job_End_Date?: string; + Job_Expected_Date?: string; +}; + const getItems = (username: string) => Promise.all([ userService.getMembershipHistory(username), @@ -84,8 +98,6 @@ const categorizeItems = async (memberships: MembershipHistory[], jobs: StudentEm : getExperienceEndDate(b) - getExperienceEndDate(a); }); - //groupedMembershipHistory.experiences = jobs; - let GroupByTitle = Object.entries(Object.groupBy(jobs, (job) => job.Job_Title)).map( ([title, job]) => ({ Job_Title: title, @@ -115,8 +127,6 @@ const categorizeItems = async (memberships: MembershipHistory[], jobs: StudentEm return getLatestEndDate(b)! - getLatestEndDate(a)!; }); - console.log(GroupByTitle); - let test = []; for (let i = 0; i < GroupByTitle.length; i++) { let tempJob = GroupByTitle?.[i].job; @@ -137,10 +147,6 @@ const categorizeItems = async (memberships: MembershipHistory[], jobs: StudentEm jobs[i] = test[i]; } - //console.log('jobs'); - //console.log(jobs); - //console.log('groupedMembershipHistory'); - //console.log(groupedMembershipHistory); return groupedMembershipHistory; }; From fcd8079831a47ddcbb704ebc18ecc7f4e0774118 Mon Sep 17 00:00:00 2001 From: Yushin Jo Date: Fri, 12 Jul 2024 12:05:20 -0400 Subject: [PATCH 18/22] fix some errors --- src/services/transcript.ts | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/services/transcript.ts b/src/services/transcript.ts index b352e159e..e4f509b5f 100644 --- a/src/services/transcript.ts +++ b/src/services/transcript.ts @@ -98,20 +98,23 @@ const categorizeItems = async (memberships: MembershipHistory[], jobs: StudentEm : getExperienceEndDate(b) - getExperienceEndDate(a); }); - let GroupByTitle = Object.entries(Object.groupBy(jobs, (job) => job.Job_Title)).map( - ([title, job]) => ({ - Job_Title: title, - job, - latestDate: '', - }), - ); + let GroupByTitle = Object.entries( + Object.groupBy(jobs, (job: StudentEmployment) => job.Job_Title), + ).map(([title, job]) => ({ + Job_Title: title, + job, + latestDate: '', + })); // This code is has a lot of ? and ! opeators because typescript can't analyze the // loop to recognize that the array indexing is safe. for (let i = 0; i < GroupByTitle.length; i++) { let maxDate: string = ''; let tempJob = GroupByTitle?.[i].job; - let numJobs = tempJob!.length; + let numJobs = 0; + if (tempJob) { + numJobs = tempJob!.length; + } for (let j = 0; j < numJobs; j++) { let tempVal = GroupByTitle[i]; let value = tempVal!.job?.[j].Job_End_Date; From 67a68cc1c686d2359b4ccb239b861ff1848a569c Mon Sep 17 00:00:00 2001 From: Yushin Jo Date: Fri, 12 Jul 2024 12:07:32 -0400 Subject: [PATCH 19/22] fix some errors --- src/services/transcript.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/services/transcript.ts b/src/services/transcript.ts index e4f509b5f..9b90945a2 100644 --- a/src/services/transcript.ts +++ b/src/services/transcript.ts @@ -110,10 +110,10 @@ const categorizeItems = async (memberships: MembershipHistory[], jobs: StudentEm // loop to recognize that the array indexing is safe. for (let i = 0; i < GroupByTitle.length; i++) { let maxDate: string = ''; - let tempJob = GroupByTitle?.[i].job; + let tempJob = GroupByTitle[i].job; let numJobs = 0; if (tempJob) { - numJobs = tempJob!.length; + numJobs = tempJob.length; } for (let j = 0; j < numJobs; j++) { let tempVal = GroupByTitle[i]; From cf20b05659bde444f2b6bcd5c7226500c65dd9f5 Mon Sep 17 00:00:00 2001 From: Yushin Jo Date: Fri, 12 Jul 2024 13:28:36 -0400 Subject: [PATCH 20/22] update ts --- package-lock.json | 652 +++++++++++++++++----------------------------- package.json | 2 +- 2 files changed, 247 insertions(+), 407 deletions(-) diff --git a/package-lock.json b/package-lock.json index 042bad40c..740391a17 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,25 +17,24 @@ "@mui/x-date-pickers": "^6.19.4", "add-to-calendar-button": "^2.5.10", "caniuse-lite": "^1.0.30001589", - "chart.js": "^2.9.4", + "chart.js": "^4.4.3", "cropperjs": "^1.6.1", "date-fns": "^3.3.1", "history": "^5.3.0", "lodash": "^4.17.21", "luxon": "^3.4.4", "prop-types": ">=15.7.2", - "react": "^17.0.2", + "react": "^18.3.1", "react-big-calendar": "^1.10.3", - "react-brackets": "^0.4.7", - "react-chartjs-2": "^2.11.2", + "react-chartjs-2": "^5.2.0", "react-cropper": "^2.3.3", "react-csv": "^2.0.3", "react-device-detect": "^2.2.3", - "react-dom": "^17.0.2", + "react-dom": "^18.3.1", "react-dom-confetti": "^0.2.0", "react-dropzone": "^14.2.3", "react-ga4": "^2.1.0", - "react-icons": "^5.0.1", + "react-icons": "^5.2.1", "react-image-gallery": "^1.3.0", "react-imask": "^7.4.0", "react-router": "^6.22.1", @@ -49,12 +48,12 @@ "@types/lodash": "^4.14.202", "@types/luxon": "^3.4.2", "@types/react-big-calendar": "^1.8.8", - "@types/react-dom": "^18.2.19", + "@types/react-dom": "^18.3.0", "@types/react-router-dom": "^5.3.3", "@vitejs/plugin-react": "^4.2.0", "eslint-config-react-app": "^7.0.1", "eslint-plugin-import": "^2.29.1", - "eslint-plugin-jsdoc": "^48.2.0", + "eslint-plugin-jsdoc": "^48.2.9", "eslint-plugin-jsx-a11y": "^6.8.0", "eslint-plugin-react": "^7.33.2", "husky": "^9.0.11", @@ -64,7 +63,7 @@ "sass": "^1.71.1", "stylelint": "^16.2.1", "stylelint-config-recommended-scss": "^14.0.0", - "typescript": "^5.3.3", + "typescript": "5.5", "vite": "^5.1.7", "vite-tsconfig-paths": "^4.3.0" } @@ -73,6 +72,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -128,6 +128,7 @@ "version": "7.23.5", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "dev": true, "engines": { "node": ">=6.9.0" } @@ -136,6 +137,7 @@ "version": "7.23.7", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.7.tgz", "integrity": "sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==", + "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.23.5", @@ -164,7 +166,8 @@ "node_modules/@babel/core/node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true }, "node_modules/@babel/eslint-parser": { "version": "7.22.5", @@ -197,6 +200,7 @@ "version": "7.23.6", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "dev": true, "dependencies": { "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", @@ -211,6 +215,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -234,6 +239,7 @@ "version": "7.23.6", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dev": true, "dependencies": { "@babel/compat-data": "^7.23.5", "@babel/helper-validator-option": "^7.23.5", @@ -306,6 +312,7 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, "engines": { "node": ">=6.9.0" } @@ -314,6 +321,7 @@ "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, "dependencies": { "@babel/template": "^7.22.15", "@babel/types": "^7.23.0" @@ -326,6 +334,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -360,6 +369,7 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-module-imports": "^7.22.15", @@ -390,6 +400,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true, "engines": { "node": ">=6.9.0" } @@ -433,6 +444,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -456,6 +468,7 @@ "version": "7.22.6", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -483,6 +496,7 @@ "version": "7.23.5", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "dev": true, "engines": { "node": ">=6.9.0" } @@ -506,6 +520,7 @@ "version": "7.23.8", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.8.tgz", "integrity": "sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ==", + "dev": true, "dependencies": { "@babel/template": "^7.22.15", "@babel/traverse": "^7.23.7", @@ -532,6 +547,7 @@ "version": "7.23.6", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", + "dev": true, "bin": { "parser": "bin/babel-parser.js" }, @@ -850,6 +866,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -2096,6 +2113,7 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dev": true, "dependencies": { "@babel/code-frame": "^7.22.13", "@babel/parser": "^7.22.15", @@ -2109,6 +2127,7 @@ "version": "7.23.7", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz", "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==", + "dev": true, "dependencies": { "@babel/code-frame": "^7.23.5", "@babel/generator": "^7.23.6", @@ -2334,11 +2353,6 @@ } } }, - "node_modules/@emotion/stylis": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", - "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" - }, "node_modules/@emotion/unitless": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", @@ -2363,13 +2377,14 @@ "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" }, "node_modules/@es-joy/jsdoccomment": { - "version": "0.42.0", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.42.0.tgz", - "integrity": "sha512-R1w57YlVA6+YE01wch3GPYn6bCsrOV3YW/5oGGE2tmX6JcL9Nr+b5IikrjMPF+v9CV3ay+obImEdsDhovhJrzw==", + "version": "0.46.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.46.0.tgz", + "integrity": "sha512-C3Axuq1xd/9VqFZpW4YAzOx5O9q/LP46uIQy/iNDpHG3fmPa6TBtvfglMCs3RBiBxAIi0Go97r8+jvTt55XMyQ==", "dev": true, + "license": "MIT", "dependencies": { "comment-parser": "1.4.1", - "esquery": "^1.5.0", + "esquery": "^1.6.0", "jsdoc-type-pratt-parser": "~4.0.0" }, "engines": { @@ -2832,28 +2847,31 @@ } }, "node_modules/@floating-ui/core": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz", - "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==", + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.4.tgz", + "integrity": "sha512-a4IowK4QkXl4SCWTGUR0INAfEOX3wtsYw3rKK5InQEHMGObkR8Xk44qYQD9P4r6HHw0iIfK6GUKECmY8sTkqRA==", + "license": "MIT", "dependencies": { - "@floating-ui/utils": "^0.2.1" + "@floating-ui/utils": "^0.2.4" } }, "node_modules/@floating-ui/dom": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.3.tgz", - "integrity": "sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==", + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.7.tgz", + "integrity": "sha512-wmVfPG5o2xnKDU4jx/m4w5qva9FWHcnZ8BvzEe90D/RpwsJaTAVYPEPdQ8sbr/N8zZTAHlZUTQdqg8ZUbzHmng==", + "license": "MIT", "dependencies": { - "@floating-ui/core": "^1.0.0", - "@floating-ui/utils": "^0.2.0" + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.4" } }, "node_modules/@floating-ui/react-dom": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.8.tgz", - "integrity": "sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.1.tgz", + "integrity": "sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==", + "license": "MIT", "dependencies": { - "@floating-ui/dom": "^1.6.1" + "@floating-ui/dom": "^1.0.0" }, "peerDependencies": { "react": ">=16.8.0", @@ -2861,9 +2879,10 @@ } }, "node_modules/@floating-ui/utils": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", - "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==" + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.4.tgz", + "integrity": "sha512-dWO2pw8hhi+WrXq1YJy2yCuWoL20PddgGaqTgVe4cOS9Q6qklXCiA1tJEqX6BEwRNSCP84/afac9hd4MS+zEUA==", + "license": "MIT" }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.10", @@ -2949,6 +2968,7 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -2962,6 +2982,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, "engines": { "node": ">=6.0.0" } @@ -2970,6 +2991,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, "engines": { "node": ">=6.0.0" } @@ -2977,12 +2999,14 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.18", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dev": true, "dependencies": { "@jridgewell/resolve-uri": "3.1.0", "@jridgewell/sourcemap-codec": "1.4.14" @@ -2991,7 +3015,8 @@ "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.14", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true }, "node_modules/@jsdoc/salty": { "version": "0.2.5", @@ -3005,10 +3030,17 @@ "node": ">=v12.0.0" } }, + "node_modules/@kurkle/color": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz", + "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==", + "license": "MIT" + }, "node_modules/@mui/base": { "version": "5.0.0-beta.36", "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.36.tgz", "integrity": "sha512-6A8fYiXgjqTO6pgj31Hc8wm1M3rFYCxDRh09dBVk0L0W4cb2lnurRJa3cAyic6hHY+we1S58OdGYRbKmOsDpGQ==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.23.9", "@floating-ui/react-dom": "^2.0.8", @@ -3037,9 +3069,10 @@ } }, "node_modules/@mui/base/node_modules/clsx": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", - "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", "engines": { "node": ">=6" } @@ -3423,6 +3456,19 @@ "node": ">=14" } }, + "node_modules/@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, "node_modules/@popperjs/core": { "version": "2.11.8", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", @@ -3441,11 +3487,12 @@ } }, "node_modules/@restart/hooks": { - "version": "0.4.9", - "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.9.tgz", - "integrity": "sha512-3BekqcwB6Umeya+16XPooARn4qEPW6vNvwYnlofIYe6h9qG1/VeD7UvShCWx11eFz5ELYmwIEshz+MkPX3wjcQ==", + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.16.tgz", + "integrity": "sha512-f7aCv7c+nU/3mF7NWLtVVr0Ra80RqsO89hO72r+Y/nvQr5+q0UFGkocElTH6MJApvReVh6JHUFYn2cw1WdHF3w==", + "license": "MIT", "dependencies": { - "dequal": "^2.0.2" + "dequal": "^2.0.3" }, "peerDependencies": { "react": ">=16.8.0" @@ -3771,10 +3818,11 @@ } }, "node_modules/@types/react-dom": { - "version": "18.2.19", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.19.tgz", - "integrity": "sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA==", + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", "dev": true, + "license": "MIT", "dependencies": { "@types/react": "*" } @@ -3820,9 +3868,10 @@ "dev": true }, "node_modules/@types/warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz", - "integrity": "sha512-t/Tvs5qR47OLOr+4E9ckN8AmP2Tf16gWq+/qA4iUGS/OOyHVO8wv2vjJuX8SNOUTJyWb+2t7wJm6cXILFnOROA==" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.3.tgz", + "integrity": "sha512-D1XC7WK8K+zZEveUPY+cf4+kgauk8N4eHr/XIHXGlGYkHLud6hK9lYfZk1ry1TNh798cZUCgb6MqGEG8DkJt6Q==", + "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "5.60.0", @@ -4540,21 +4589,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-plugin-styled-components": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.1.4.tgz", - "integrity": "sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", - "@babel/plugin-syntax-jsx": "^7.22.5", - "lodash": "^4.17.21", - "picomatch": "^2.3.1" - }, - "peerDependencies": { - "styled-components": ">= 2" - } - }, "node_modules/babel-plugin-transform-react-remove-prop-types": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", @@ -4632,6 +4666,7 @@ "version": "4.22.2", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", + "dev": true, "funding": [ { "type": "opencollective", @@ -4659,18 +4694,6 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/call-bind": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", @@ -4693,14 +4716,6 @@ "node": ">=6" } }, - "node_modules/camelize": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", - "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/caniuse-lite": { "version": "1.0.30001589", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001589.tgz", @@ -4754,29 +4769,15 @@ } }, "node_modules/chart.js": { - "version": "2.9.4", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.9.4.tgz", - "integrity": "sha512-B07aAzxcrikjAPyV+01j7BmOpxtQETxTSlQ26BEYJ+3iUkbNKaOJ/nDbT6JjyqYxseM0ON12COHYdU2cTIjC7A==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.3.tgz", + "integrity": "sha512-qK1gkGSRYcJzqrrzdR6a+I0vQ4/R+SoODXyAjscQ/4mzuNzySaMCd+hyVxitSY1+L2fjPD1Gbn+ibNqRmwQeLw==", + "license": "MIT", "dependencies": { - "chartjs-color": "^2.1.0", - "moment": "^2.10.2" - } - }, - "node_modules/chartjs-color": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.4.1.tgz", - "integrity": "sha512-haqOg1+Yebys/Ts/9bLo/BqUcONQOdr/hoEr2LLTRl6C5LXctUdHxsCYfvQVg5JIxITrfCNUDr4ntqmQk9+/0w==", - "dependencies": { - "chartjs-color-string": "^0.6.0", - "color-convert": "^1.9.3" - } - }, - "node_modules/chartjs-color-string": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.6.0.tgz", - "integrity": "sha512-TIB5OKn1hPJvO7JcteW4WY/63v6KwEdt6udfnDE9iCAZgy+V4SrbSxoIbTw/xkUIapjEI4ExGtD0+6D3KyFd7A==", - "dependencies": { - "color-name": "^1.0.0" + "@kurkle/color": "^0.3.0" + }, + "engines": { + "pnpm": ">=8" } }, "node_modules/chokidar": { @@ -4923,7 +4924,8 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/colord": { "version": "2.9.3", @@ -4951,6 +4953,7 @@ "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 12.0.0" } @@ -5029,14 +5032,6 @@ "node": ">= 8" } }, - "node_modules/css-color-keywords": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", - "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==", - "engines": { - "node": ">=4" - } - }, "node_modules/css-functions-list": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.1.tgz", @@ -5046,16 +5041,6 @@ "node": ">=12 || >=16" } }, - "node_modules/css-to-react-native": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", - "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==", - "dependencies": { - "camelize": "^1.0.0", - "css-color-keywords": "^1.0.0", - "postcss-value-parser": "^4.0.2" - } - }, "node_modules/css-tree": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", @@ -5115,6 +5100,7 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -5221,7 +5207,8 @@ "node_modules/electron-to-chromium": { "version": "1.4.640", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.640.tgz", - "integrity": "sha512-z/6oZ/Muqk4BaE7P69bXhUhpJbUM9ZJeka43ZwxsDshKtePns4mhBlh8bU5+yrnOnz3fhG82XLzGUXazOmsWnA==" + "integrity": "sha512-z/6oZ/Muqk4BaE7P69bXhUhpJbUM9ZJeka43ZwxsDshKtePns4mhBlh8bU5+yrnOnz3fhG82XLzGUXazOmsWnA==", + "dev": true }, "node_modules/emoji-regex": { "version": "9.2.2", @@ -5330,6 +5317,13 @@ "safe-array-concat": "^1.0.1" } }, + "node_modules/es-module-lexer": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", + "dev": true, + "license": "MIT" + }, "node_modules/es-set-tostringtag": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", @@ -5412,6 +5406,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, "engines": { "node": ">=6" } @@ -5653,20 +5648,22 @@ } }, "node_modules/eslint-plugin-jsdoc": { - "version": "48.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-48.2.0.tgz", - "integrity": "sha512-O2B1XLBJnUCRkggFzUQ+PBYJDit8iAgXdlu8ucolqGrbmOWPvttZQZX8d1sC0MbqDMSLs8SHSQxaNPRY1RQREg==", + "version": "48.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-48.7.0.tgz", + "integrity": "sha512-5oiVf7Y+ZxGYQTlLq81X72n+S+hjvS/u0upAdbpPEeaIZILK3MKN8lm/6QqKioBjm/qZ0B5XpMQUtc2fUkqXAg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@es-joy/jsdoccomment": "~0.42.0", + "@es-joy/jsdoccomment": "~0.46.0", "are-docs-informative": "^0.0.2", "comment-parser": "1.4.1", - "debug": "^4.3.4", + "debug": "^4.3.5", "escape-string-regexp": "^4.0.0", - "esquery": "^1.5.0", - "is-builtin-module": "^3.2.1", - "semver": "^7.6.0", - "spdx-expression-parse": "^4.0.0" + "esquery": "^1.6.0", + "parse-imports": "^2.1.1", + "semver": "^7.6.2", + "spdx-expression-parse": "^4.0.0", + "synckit": "^0.9.0" }, "engines": { "node": ">=18" @@ -5675,26 +5672,30 @@ "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" } }, - "node_modules/eslint-plugin-jsdoc/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/eslint-plugin-jsdoc/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dev": true, + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "ms": "2.1.2" }, "engines": { - "node": ">=10" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/eslint-plugin-jsdoc/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -5702,12 +5703,6 @@ "node": ">=10" } }, - "node_modules/eslint-plugin-jsdoc/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/eslint-plugin-jsx-a11y": { "version": "6.8.0", "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", @@ -5971,10 +5966,11 @@ } }, "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -6270,6 +6266,7 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, "engines": { "node": ">=6.9.0" } @@ -6410,6 +6407,7 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, "engines": { "node": ">=4" } @@ -6810,21 +6808,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-builtin-module": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", - "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", - "dev": true, - "dependencies": { - "builtin-modules": "^3.3.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -7218,6 +7201,7 @@ "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.0.0" } @@ -7235,6 +7219,7 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, "bin": { "jsesc": "bin/jsesc" }, @@ -7271,6 +7256,7 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, "bin": { "json5": "lib/cli.js" }, @@ -7293,11 +7279,6 @@ "node": ">=4.0" } }, - "node_modules/keycode": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/keycode/-/keycode-2.2.1.tgz", - "integrity": "sha512-Rdgz9Hl9Iv4QKi8b0OlCRQEzp4AgVxyCtz5S/+VIHezDmrDhkp2N2TqBWOLz0/gbeREXOOiI9/4b8BY9uw2vFg==" - }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -7719,6 +7700,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, "dependencies": { "yallist": "^3.0.2" } @@ -7912,7 +7894,8 @@ "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "node_modules/nanoid": { "version": "3.3.7", @@ -7948,7 +7931,8 @@ "node_modules/node-releases": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true }, "node_modules/normalize-path": { "version": "3.0.0", @@ -8189,6 +8173,20 @@ "node": ">=6" } }, + "node_modules/parse-imports": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/parse-imports/-/parse-imports-2.1.1.tgz", + "integrity": "sha512-TDT4HqzUiTMO1wJRwg/t/hYk8Wdp3iF/ToMIlAoVQfL1Xs/sTxq1dKWSMjMbQmIarfWKymOyly40+zmPHXMqCA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "es-module-lexer": "^1.5.3", + "slashes": "^3.0.12" + }, + "engines": { + "node": ">= 18" + } + }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -8276,12 +8274,14 @@ "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "engines": { "node": ">=8.6" }, @@ -8409,7 +8409,8 @@ "node_modules/postcss-value-parser": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true }, "node_modules/prelude-ls": { "version": "1.2.1", @@ -8481,12 +8482,12 @@ ] }, "node_modules/react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "loose-envify": "^1.1.0" }, "engines": { "node": ">=0.10.0" @@ -8519,35 +8520,14 @@ "react-dom": "^16.14.0 || ^17 || ^18" } }, - "node_modules/react-brackets": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/react-brackets/-/react-brackets-0.4.7.tgz", - "integrity": "sha512-5NynHxC32gEe9vuLQJvD2JEtHXg2gI0R6MWVD+uSYhQCAlEdwlKbFWNdrP5MIt1buyxrs2F/tr1EIW6+eBCocw==", - "dependencies": { - "react-swipeable-views": "^0.13.9", - "styled-components": "^5.1.1" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "react": "^17.0.0", - "react-swipeable-views": "^0.13.9", - "styled-components": "^5.1.1" - } - }, "node_modules/react-chartjs-2": { - "version": "2.11.2", - "resolved": "https://registry.npmjs.org/react-chartjs-2/-/react-chartjs-2-2.11.2.tgz", - "integrity": "sha512-hcPS9vmRJeAALPPf0uo02BiD8BDm0HNmneJYTZVR74UKprXOpql+Jy1rVuj93rKw0Jfx77mkcRfXPxTe5K83uw==", - "dependencies": { - "lodash": "^4.17.19", - "prop-types": "^15.7.2" - }, + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-chartjs-2/-/react-chartjs-2-5.2.0.tgz", + "integrity": "sha512-98iN5aguJyVSxp5U3CblRLH67J8gkfyGNbiK3c+l1QI/G4irHMPQw44aEPmjVag+YKTyQ260NcF82GTQ3bdscA==", + "license": "MIT", "peerDependencies": { - "chart.js": "^2.3", - "react": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0", - "react-dom": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + "chart.js": "^4.1.1", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, "node_modules/react-cropper": { @@ -8579,16 +8559,16 @@ } }, "node_modules/react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" + "scheduler": "^0.23.2" }, "peerDependencies": { - "react": "17.0.2" + "react": "^18.3.1" } }, "node_modules/react-dom-confetti": { @@ -8624,9 +8604,10 @@ "integrity": "sha512-ZKS7PGNFqqMd3PJ6+C2Jtz/o1iU9ggiy8Y8nUeksgVuvNISbmrQtJiZNvC/TjDsqD0QlU5Wkgs7i+w9+OjHhhQ==" }, "node_modules/react-icons": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.0.1.tgz", - "integrity": "sha512-WqLZJ4bLzlhmsvme6iFdgO8gfZP17rfjYEJ2m9RsZjZ+cc4k1hTzknEz63YS1MeT50kVzoa1Nz36f4BEx+Wigw==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.2.1.tgz", + "integrity": "sha512-zdbW5GstTzXaVKvGSyTaBalt7HSfuK5ovrzlpyiWHAFXndXTdd/1hdDHI4xBM1Mn7YriT6aqESucFl9kEXzrdw==", + "license": "MIT", "peerDependencies": { "react": "*" } @@ -8668,6 +8649,7 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-5.2.1.tgz", "integrity": "sha512-GLLSOLWr21CqtJn8geSwQfoJufdt3mfdsnIiQswouuQ2MMPns+ihZklxvsTDKD3cR2tF8ELbi5xUsvqVhR6WvA==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.8", "@popperjs/core": "^2.11.6", @@ -8734,134 +8716,6 @@ "react-router-dom": ">=4" } }, - "node_modules/react-swipeable-views": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/react-swipeable-views/-/react-swipeable-views-0.13.9.tgz", - "integrity": "sha512-WXC2FKYvZ9QdJ31v9LjEJEl1bA7E4AcaloTkbW0uU0dYf5uvv4aOpiyxubvOkVl1a5L2UAHmKSif4TmJ9usrSg==", - "dependencies": { - "@babel/runtime": "7.0.0", - "prop-types": "^15.5.4", - "react-swipeable-views-core": "^0.13.7", - "react-swipeable-views-utils": "^0.13.9", - "warning": "^4.0.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "peerDependencies": { - "react": "^15.3.0 || ^16.0.0" - } - }, - "node_modules/react-swipeable-views-core": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/react-swipeable-views-core/-/react-swipeable-views-core-0.13.7.tgz", - "integrity": "sha512-ekn9oDYfBt0oqJSGGwLEhKvn+QaqMGTy//9dURTLf+vp7W5j6GvmKryYdnwJCDITaPFI2hujXV4CH9krhvaE5w==", - "dependencies": { - "@babel/runtime": "7.0.0", - "warning": "^4.0.1" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/react-swipeable-views-core/node_modules/@babel/runtime": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0.tgz", - "integrity": "sha512-7hGhzlcmg01CvH1EHdSPVXYX1aJ8KCEyz6I9xYIi/asDtzBPMyMhVibhM/K6g/5qnKBwjZtp10bNZIEFTRW1MA==", - "dependencies": { - "regenerator-runtime": "^0.12.0" - } - }, - "node_modules/react-swipeable-views-core/node_modules/regenerator-runtime": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", - "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==" - }, - "node_modules/react-swipeable-views-utils": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/react-swipeable-views-utils/-/react-swipeable-views-utils-0.13.9.tgz", - "integrity": "sha512-QLGxRKrbJCbWz94vkWLzb1Daaa2Y/TZKmsNKQ6WSNrS+chrlfZ3z9tqZ7YUJlW6pRWp3QZdLSY3UE3cN0TXXmw==", - "dependencies": { - "@babel/runtime": "7.0.0", - "keycode": "^2.1.7", - "prop-types": "^15.6.0", - "react-event-listener": "^0.6.0", - "react-swipeable-views-core": "^0.13.7", - "shallow-equal": "^1.2.1" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/react-swipeable-views-utils/node_modules/@babel/runtime": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0.tgz", - "integrity": "sha512-7hGhzlcmg01CvH1EHdSPVXYX1aJ8KCEyz6I9xYIi/asDtzBPMyMhVibhM/K6g/5qnKBwjZtp10bNZIEFTRW1MA==", - "dependencies": { - "regenerator-runtime": "^0.12.0" - } - }, - "node_modules/react-swipeable-views-utils/node_modules/react": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-swipeable-views-utils/node_modules/react-event-listener": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/react-event-listener/-/react-event-listener-0.6.6.tgz", - "integrity": "sha512-+hCNqfy7o9wvO6UgjqFmBzARJS7qrNoda0VqzvOuioEpoEXKutiKuv92dSz6kP7rYLmyHPyYNLesi5t/aH1gfw==", - "dependencies": { - "@babel/runtime": "^7.2.0", - "prop-types": "^15.6.0", - "warning": "^4.0.1" - }, - "peerDependencies": { - "react": "^16.3.0" - } - }, - "node_modules/react-swipeable-views-utils/node_modules/react-event-listener/node_modules/@babel/runtime": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.10.tgz", - "integrity": "sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/react-swipeable-views-utils/node_modules/react-event-listener/node_modules/regenerator-runtime": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" - }, - "node_modules/react-swipeable-views-utils/node_modules/regenerator-runtime": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", - "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==" - }, - "node_modules/react-swipeable-views/node_modules/@babel/runtime": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0.tgz", - "integrity": "sha512-7hGhzlcmg01CvH1EHdSPVXYX1aJ8KCEyz6I9xYIi/asDtzBPMyMhVibhM/K6g/5qnKBwjZtp10bNZIEFTRW1MA==", - "dependencies": { - "regenerator-runtime": "^0.12.0" - } - }, - "node_modules/react-swipeable-views/node_modules/regenerator-runtime": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", - "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==" - }, "node_modules/react-to-print": { "version": "2.15.1", "resolved": "https://registry.npmjs.org/react-to-print/-/react-to-print-2.15.1.tgz", @@ -8875,6 +8729,7 @@ "version": "4.4.5", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "license": "BSD-3-Clause", "dependencies": { "@babel/runtime": "^7.5.5", "dom-helpers": "^5.0.1", @@ -9242,18 +9097,19 @@ } }, "node_modules/scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "loose-envify": "^1.1.0" } }, "node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "bin": { "semver": "bin/semver.js" } @@ -9288,16 +9144,6 @@ "node": ">= 0.4" } }, - "node_modules/shallow-equal": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz", - "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==" - }, - "node_modules/shallowequal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", - "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -9354,6 +9200,13 @@ "node": ">=8" } }, + "node_modules/slashes": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/slashes/-/slashes-3.0.12.tgz", + "integrity": "sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==", + "dev": true, + "license": "ISC" + }, "node_modules/slice-ansi": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", @@ -9632,40 +9485,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/styled-components": { - "version": "5.3.11", - "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.11.tgz", - "integrity": "sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==", - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/traverse": "^7.4.5", - "@emotion/is-prop-valid": "^1.1.0", - "@emotion/stylis": "^0.8.4", - "@emotion/unitless": "^0.7.4", - "babel-plugin-styled-components": ">= 1.12.0", - "css-to-react-native": "^3.0.0", - "hoist-non-react-statics": "^3.0.0", - "shallowequal": "^1.1.0", - "supports-color": "^5.5.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/styled-components" - }, - "peerDependencies": { - "react": ">= 16.8.0", - "react-dom": ">= 16.8.0", - "react-is": ">= 16.8.0" - } - }, - "node_modules/styled-components/node_modules/@emotion/unitless": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", - "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" - }, "node_modules/stylelint": { "version": "16.2.1", "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.2.1.tgz", @@ -10048,6 +9867,23 @@ "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", "dev": true }, + "node_modules/synckit": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.0.tgz", + "integrity": "sha512-7RnqIMq572L8PeEzKeBINYEJDDxpcH8JEgLwUqBd3TkofhFRbkq4QLR0u+36avGAhCRbk2nnmjcW9SE531hPDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, "node_modules/table": { "version": "6.8.1", "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", @@ -10239,9 +10075,10 @@ } }, "node_modules/tslib": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", - "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "license": "0BSD" }, "node_modules/tsutils": { "version": "3.21.0", @@ -10355,10 +10192,11 @@ } }, "node_modules/typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", + "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -10470,6 +10308,7 @@ "version": "1.0.13", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, "funding": [ { "type": "opencollective", @@ -10864,7 +10703,8 @@ "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true }, "node_modules/yaml": { "version": "1.10.2", diff --git a/package.json b/package.json index a0af6cd23..4d49ba9bd 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ "sass": "^1.71.1", "stylelint": "^16.2.1", "stylelint-config-recommended-scss": "^14.0.0", - "typescript": "^5.3.3", + "typescript": "5.5", "vite": "^5.1.7", "vite-tsconfig-paths": "^4.3.0" }, From a21c1b3f7812680bfd0d6e0630bacebb4b95c7db Mon Sep 17 00:00:00 2001 From: yushinj <149107617+yushinj@users.noreply.github.com> Date: Fri, 12 Jul 2024 14:12:43 -0400 Subject: [PATCH 21/22] Update package.json Co-authored-by: Evan Platzer --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4d49ba9bd..3733fd271 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ "sass": "^1.71.1", "stylelint": "^16.2.1", "stylelint-config-recommended-scss": "^14.0.0", - "typescript": "5.5", + "typescript": "^5.5", "vite": "^5.1.7", "vite-tsconfig-paths": "^4.3.0" }, From ac6ce8667a042a0fc84f3e7905bf498fd4c74d47 Mon Sep 17 00:00:00 2001 From: Yushin Jo Date: Fri, 12 Jul 2024 15:03:15 -0400 Subject: [PATCH 22/22] restore unrelated changes --- .../Home/components/DiningBalance/index.jsx | 49 ++++++++++--------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/src/views/Home/components/DiningBalance/index.jsx b/src/views/Home/components/DiningBalance/index.jsx index 1c216b283..0e4681edc 100644 --- a/src/views/Home/components/DiningBalance/index.jsx +++ b/src/views/Home/components/DiningBalance/index.jsx @@ -11,7 +11,7 @@ import { import EditIcon from '@mui/icons-material/Edit'; import GordonLoader from 'components/Loader'; import { useEffect, useState } from 'react'; -import { Pie } from 'react-chartjs-2'; +import { Doughnut } from 'react-chartjs-2'; import session from 'services/session'; import user from 'services/user'; import styles from '../Doughnut.module.css'; @@ -74,63 +74,66 @@ const DiningBalance = () => { ); } else { const swipeInit = diningInfo.Swipes.InitialBalance; - const swipeCurr = 100; + const swipeCurr = swipeInit === 0 ? 1 : diningInfo.Swipes.CurrentBalance; const swipeUsed = swipeInit === 0 ? 0 : swipeInit - swipeCurr; const dollarInit = diningInfo.DiningDollars.InitialBalance; const dollarCurrNotRounded = diningInfo.DiningDollars.CurrentBalance; - const dollarCurr = 30; + const dollarCurr = Math.round(dollarCurrNotRounded * 100) / 100; const dollarUsedNotRounded = dollarInit - dollarCurr; //fixed issue of too many decimal places in meal points const dollarUsed = Math.round(dollarUsedNotRounded * 100) / 100; const guestInit = diningInfo.GuestSwipes.InitialBalance; - const guestCurr = 5; + const guestCurr = diningInfo.GuestSwipes.CurrentBalance; const guestUsed = guestInit - guestCurr; const daysLeftRounded = Math.max(daysRemaining, 0); const daysFinished = daysInSession - daysLeftRounded; const options = { - responsive: true, - legend: { display: false }, - plugins: { - tooltip: { - // Allow different tooltips for different datasets within the same pie; - callbacks: { - // Code taken from https://github.com/chartjs/Chart.js/issues/1417 - label: function (data) { - return swipeInit === 0 && - data.dataset.labels.includes('Swipes Used' || 'Swipes Remaining') - ? data.dataset.labels[data.dataIndex] + ': ' + '\u221E' - : data.dataset.labels[data.dataIndex] + ': ' + data.dataset.data[data.dataIndex]; - }, + cutoutPercentage: 0, + tooltips: { + // Allow different tooltips for different datasets within the same pie; + callbacks: { + // Code taken from https://github.com/chartjs/Chart.js/issues/1417 + label: function (item, data) { + return ( + data.datasets[item.datasetIndex].label[item.index] + + ': ' + + (swipeInit === 0 && + data.datasets[item.datasetIndex].label[item.index].includes('Swipes') && + !data.datasets[item.datasetIndex].label[item.index].includes('Guest') + ? '\u221E' + : data.datasets[item.datasetIndex].data[item.index]) + ); }, }, }, + legend: false, }; const data = { legendEntries: ['A', 'B', 'C', 'D'], // Just used as key datasets: [ { - labels: ['Days Finished', 'Days Remaining'], + label: ['Days Finished', 'Days Remaining'], data: [daysFinished, daysLeftRounded], - backgroundColor: [emptyColor, daysColor], + backgroundColor: [daysColor, emptyColor], }, { - labels: ['Swipes Used', 'Swipes Remaining'], + label: ['Swipes Used', 'Swipes Remaining'], data: [swipeUsed, swipeCurr], backgroundColor: [emptyColor, swipesColor], }, { - labels: ['Dining Dollars Used', 'Dining Dollars Remaining'], + label: ['Dining Dollars Used', 'Dining Dollars Remaining'], data: [dollarUsed, dollarCurr], backgroundColor: [emptyColor, dollarsColor], }, { - labels: ['Guest Swipes Used', 'Guest Swipes Remaining'], + label: ['Guest Swipes Used', 'Guest Swipes Remaining'], data: [guestUsed, guestCurr], backgroundColor: [emptyColor, guestColor], }, @@ -162,7 +165,7 @@ const DiningBalance = () => { - +