timetable-app

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

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;