useDayPeriodDataOutput.ts (2690B)
1 import prettierPluginBabel from 'prettier/plugins/babel'; 2 import prettierPluginEstree from 'prettier/plugins/estree'; 3 import { format } from 'prettier/standalone'; 4 import { useState } from 'react'; 5 6 import type { InputSchema } from '../schema'; 7 import type { DaySchedulesByGrade } from 'common/types'; 8 9 type Result = { 10 output: string; 11 transformIntoObject: (data: InputSchema) => void; 12 }; 13 14 const useDayPeriodDataOutput = (): Result => { 15 const [value, setValue] = useState<string>(''); 16 17 const transformIntoObject = (data: InputSchema) => { 18 const output: Record<string, DaySchedulesByGrade> = {}; 19 data.forEach(([date, ...schedules]) => { 20 const result: DaySchedulesByGrade = {}; 21 const grade1: DaySchedulesByGrade['grade1'] = {}; 22 const grade2: DaySchedulesByGrade['grade2'] = {}; 23 const grade3: DaySchedulesByGrade['grade3'] = {}; 24 25 if (schedules[0] !== '') grade1.period1 = schedules[0]; 26 if (schedules[1] !== '') grade1.period2 = schedules[1]; 27 if (schedules[2] !== '') grade1.period3 = schedules[2]; 28 if (schedules[3] !== '') grade1.period4 = schedules[3]; 29 if (schedules[4] !== '') grade1.period5 = schedules[4]; 30 if (schedules[5] !== '') grade1.period6 = schedules[5]; 31 if (schedules[6] !== '') grade1.period7 = schedules[6]; 32 if (schedules[7] !== '') grade2.period1 = schedules[7]; 33 if (schedules[8] !== '') grade2.period2 = schedules[8]; 34 if (schedules[9] !== '') grade2.period3 = schedules[9]; 35 if (schedules[10] !== '') grade2.period4 = schedules[10]; 36 if (schedules[11] !== '') grade2.period5 = schedules[11]; 37 if (schedules[12] !== '') grade2.period6 = schedules[12]; 38 if (schedules[13] !== '') grade2.period7 = schedules[13]; 39 if (schedules[14] !== '') grade3.period1 = schedules[14]; 40 if (schedules[15] !== '') grade3.period2 = schedules[15]; 41 if (schedules[16] !== '') grade3.period3 = schedules[16]; 42 if (schedules[17] !== '') grade3.period4 = schedules[17]; 43 if (schedules[18] !== '') grade3.period5 = schedules[18]; 44 if (schedules[19] !== '') grade3.period6 = schedules[19]; 45 if (schedules[20] !== '') grade3.period7 = schedules[20]; 46 47 if (Object.entries(grade1).length) result.grade1 = grade1; 48 if (Object.entries(grade2).length) result.grade2 = grade2; 49 if (Object.entries(grade3).length) result.grade3 = grade3; 50 51 if (Object.entries(result).length) output[date] = result; 52 }); 53 54 format(JSON.stringify(output), { 55 useTabs: true, 56 parser: 'json', 57 plugins: [prettierPluginBabel, prettierPluginEstree], 58 }) 59 .then((v) => { 60 setValue(v); 61 }) 62 .catch((err) => { 63 console.log(err); 64 }); 65 }; 66 67 return { 68 output: value, 69 transformIntoObject, 70 }; 71 }; 72 73 export default useDayPeriodDataOutput;