timetable-app

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

useClassStandardDataOutput.ts (11779B)


      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 { DAY_PERIOD_JA, GRADE_CLASSES } from 'common/constant';
      7 
      8 import type { InputSchema } from '../schema';
      9 import type { ClassStandardTimetable, GradeClass } from 'common/types';
     10 
     11 type Result = {
     12 	output: string;
     13 	transformIntoObject: (data: InputSchema) => void;
     14 };
     15 
     16 const useDayPeriodDataOutput = (): Result => {
     17 	const [value, setValue] = useState<string>('');
     18 
     19 	const transformIntoObject = (data: InputSchema) => {
     20 		const output = structuredClone(initialData);
     21 
     22 		// 横方向曜日時限、縦方向クラスの2次元配列に転置する
     23 		const transposedData = data[0]?.map((_, i) => data.map((row) => row[i]));
     24 
     25 		// 各クラスについて実行
     26 		transposedData?.map((row, i) => {
     27 			const gradeClass = GRADE_CLASSES[i];
     28 
     29 			// 各曜日時限について実行
     30 			row.map((subjects, j) => {
     31 				const dayPeriod = DAY_PERIOD_JA[j];
     32 				if (gradeClass && dayPeriod && subjects) {
     33 					output[gradeClass][dayPeriod] = subjects
     34 						.split('/')
     35 						.map((subject) => ({
     36 							shortName: subject,
     37 						}));
     38 				}
     39 			});
     40 		});
     41 
     42 		format(JSON.stringify(output), {
     43 			useTabs: true,
     44 			parser: 'json',
     45 			plugins: [prettierPluginBabel, prettierPluginEstree],
     46 		})
     47 			.then((v) => {
     48 				setValue(v);
     49 			})
     50 			.catch((err) => {
     51 				console.log(err);
     52 			});
     53 	};
     54 
     55 	return {
     56 		output: value,
     57 		transformIntoObject,
     58 	};
     59 };
     60 
     61 export default useDayPeriodDataOutput;
     62 
     63 const initialData: Record<GradeClass, ClassStandardTimetable> = {
     64 	'1-1': {
     65 		月1: [],
     66 		月2: [],
     67 		月3: [],
     68 		月4: [],
     69 		月5: [],
     70 		月6: [],
     71 		月7: [],
     72 		火1: [],
     73 		火2: [],
     74 		火3: [],
     75 		火4: [],
     76 		火5: [],
     77 		火6: [],
     78 		火7: [],
     79 		水1: [],
     80 		水2: [],
     81 		水3: [],
     82 		水4: [],
     83 		水5: [],
     84 		水6: [],
     85 		水7: [],
     86 		木1: [],
     87 		木2: [],
     88 		木3: [],
     89 		木4: [],
     90 		木5: [],
     91 		木6: [],
     92 		金1: [],
     93 		金2: [],
     94 		金3: [],
     95 		金4: [],
     96 		金5: [],
     97 		金6: [],
     98 		金7: [],
     99 	},
    100 	'1-2': {
    101 		月1: [],
    102 		月2: [],
    103 		月3: [],
    104 		月4: [],
    105 		月5: [],
    106 		月6: [],
    107 		月7: [],
    108 		火1: [],
    109 		火2: [],
    110 		火3: [],
    111 		火4: [],
    112 		火5: [],
    113 		火6: [],
    114 		火7: [],
    115 		水1: [],
    116 		水2: [],
    117 		水3: [],
    118 		水4: [],
    119 		水5: [],
    120 		水6: [],
    121 		水7: [],
    122 		木1: [],
    123 		木2: [],
    124 		木3: [],
    125 		木4: [],
    126 		木5: [],
    127 		木6: [],
    128 		金1: [],
    129 		金2: [],
    130 		金3: [],
    131 		金4: [],
    132 		金5: [],
    133 		金6: [],
    134 		金7: [],
    135 	},
    136 	'1-3': {
    137 		月1: [],
    138 		月2: [],
    139 		月3: [],
    140 		月4: [],
    141 		月5: [],
    142 		月6: [],
    143 		月7: [],
    144 		火1: [],
    145 		火2: [],
    146 		火3: [],
    147 		火4: [],
    148 		火5: [],
    149 		火6: [],
    150 		火7: [],
    151 		水1: [],
    152 		水2: [],
    153 		水3: [],
    154 		水4: [],
    155 		水5: [],
    156 		水6: [],
    157 		水7: [],
    158 		木1: [],
    159 		木2: [],
    160 		木3: [],
    161 		木4: [],
    162 		木5: [],
    163 		木6: [],
    164 		金1: [],
    165 		金2: [],
    166 		金3: [],
    167 		金4: [],
    168 		金5: [],
    169 		金6: [],
    170 		金7: [],
    171 	},
    172 	'1-4': {
    173 		月1: [],
    174 		月2: [],
    175 		月3: [],
    176 		月4: [],
    177 		月5: [],
    178 		月6: [],
    179 		月7: [],
    180 		火1: [],
    181 		火2: [],
    182 		火3: [],
    183 		火4: [],
    184 		火5: [],
    185 		火6: [],
    186 		火7: [],
    187 		水1: [],
    188 		水2: [],
    189 		水3: [],
    190 		水4: [],
    191 		水5: [],
    192 		水6: [],
    193 		水7: [],
    194 		木1: [],
    195 		木2: [],
    196 		木3: [],
    197 		木4: [],
    198 		木5: [],
    199 		木6: [],
    200 		金1: [],
    201 		金2: [],
    202 		金3: [],
    203 		金4: [],
    204 		金5: [],
    205 		金6: [],
    206 		金7: [],
    207 	},
    208 	'1-5': {
    209 		月1: [],
    210 		月2: [],
    211 		月3: [],
    212 		月4: [],
    213 		月5: [],
    214 		月6: [],
    215 		月7: [],
    216 		火1: [],
    217 		火2: [],
    218 		火3: [],
    219 		火4: [],
    220 		火5: [],
    221 		火6: [],
    222 		火7: [],
    223 		水1: [],
    224 		水2: [],
    225 		水3: [],
    226 		水4: [],
    227 		水5: [],
    228 		水6: [],
    229 		水7: [],
    230 		木1: [],
    231 		木2: [],
    232 		木3: [],
    233 		木4: [],
    234 		木5: [],
    235 		木6: [],
    236 		金1: [],
    237 		金2: [],
    238 		金3: [],
    239 		金4: [],
    240 		金5: [],
    241 		金6: [],
    242 		金7: [],
    243 	},
    244 	'1-6': {
    245 		月1: [],
    246 		月2: [],
    247 		月3: [],
    248 		月4: [],
    249 		月5: [],
    250 		月6: [],
    251 		月7: [],
    252 		火1: [],
    253 		火2: [],
    254 		火3: [],
    255 		火4: [],
    256 		火5: [],
    257 		火6: [],
    258 		火7: [],
    259 		水1: [],
    260 		水2: [],
    261 		水3: [],
    262 		水4: [],
    263 		水5: [],
    264 		水6: [],
    265 		水7: [],
    266 		木1: [],
    267 		木2: [],
    268 		木3: [],
    269 		木4: [],
    270 		木5: [],
    271 		木6: [],
    272 		金1: [],
    273 		金2: [],
    274 		金3: [],
    275 		金4: [],
    276 		金5: [],
    277 		金6: [],
    278 		金7: [],
    279 	},
    280 	'1-7': {
    281 		月1: [],
    282 		月2: [],
    283 		月3: [],
    284 		月4: [],
    285 		月5: [],
    286 		月6: [],
    287 		月7: [],
    288 		火1: [],
    289 		火2: [],
    290 		火3: [],
    291 		火4: [],
    292 		火5: [],
    293 		火6: [],
    294 		火7: [],
    295 		水1: [],
    296 		水2: [],
    297 		水3: [],
    298 		水4: [],
    299 		水5: [],
    300 		水6: [],
    301 		水7: [],
    302 		木1: [],
    303 		木2: [],
    304 		木3: [],
    305 		木4: [],
    306 		木5: [],
    307 		木6: [],
    308 		金1: [],
    309 		金2: [],
    310 		金3: [],
    311 		金4: [],
    312 		金5: [],
    313 		金6: [],
    314 		金7: [],
    315 	},
    316 	'1-8': {
    317 		月1: [],
    318 		月2: [],
    319 		月3: [],
    320 		月4: [],
    321 		月5: [],
    322 		月6: [],
    323 		月7: [],
    324 		火1: [],
    325 		火2: [],
    326 		火3: [],
    327 		火4: [],
    328 		火5: [],
    329 		火6: [],
    330 		火7: [],
    331 		水1: [],
    332 		水2: [],
    333 		水3: [],
    334 		水4: [],
    335 		水5: [],
    336 		水6: [],
    337 		水7: [],
    338 		木1: [],
    339 		木2: [],
    340 		木3: [],
    341 		木4: [],
    342 		木5: [],
    343 		木6: [],
    344 		金1: [],
    345 		金2: [],
    346 		金3: [],
    347 		金4: [],
    348 		金5: [],
    349 		金6: [],
    350 		金7: [],
    351 	},
    352 	'2-1': {
    353 		月1: [],
    354 		月2: [],
    355 		月3: [],
    356 		月4: [],
    357 		月5: [],
    358 		月6: [],
    359 		月7: [],
    360 		火1: [],
    361 		火2: [],
    362 		火3: [],
    363 		火4: [],
    364 		火5: [],
    365 		火6: [],
    366 		火7: [],
    367 		水1: [],
    368 		水2: [],
    369 		水3: [],
    370 		水4: [],
    371 		水5: [],
    372 		水6: [],
    373 		水7: [],
    374 		木1: [],
    375 		木2: [],
    376 		木3: [],
    377 		木4: [],
    378 		木5: [],
    379 		木6: [],
    380 		金1: [],
    381 		金2: [],
    382 		金3: [],
    383 		金4: [],
    384 		金5: [],
    385 		金6: [],
    386 		金7: [],
    387 	},
    388 	'2-2': {
    389 		月1: [],
    390 		月2: [],
    391 		月3: [],
    392 		月4: [],
    393 		月5: [],
    394 		月6: [],
    395 		月7: [],
    396 		火1: [],
    397 		火2: [],
    398 		火3: [],
    399 		火4: [],
    400 		火5: [],
    401 		火6: [],
    402 		火7: [],
    403 		水1: [],
    404 		水2: [],
    405 		水3: [],
    406 		水4: [],
    407 		水5: [],
    408 		水6: [],
    409 		水7: [],
    410 		木1: [],
    411 		木2: [],
    412 		木3: [],
    413 		木4: [],
    414 		木5: [],
    415 		木6: [],
    416 		金1: [],
    417 		金2: [],
    418 		金3: [],
    419 		金4: [],
    420 		金5: [],
    421 		金6: [],
    422 		金7: [],
    423 	},
    424 	'2-3': {
    425 		月1: [],
    426 		月2: [],
    427 		月3: [],
    428 		月4: [],
    429 		月5: [],
    430 		月6: [],
    431 		月7: [],
    432 		火1: [],
    433 		火2: [],
    434 		火3: [],
    435 		火4: [],
    436 		火5: [],
    437 		火6: [],
    438 		火7: [],
    439 		水1: [],
    440 		水2: [],
    441 		水3: [],
    442 		水4: [],
    443 		水5: [],
    444 		水6: [],
    445 		水7: [],
    446 		木1: [],
    447 		木2: [],
    448 		木3: [],
    449 		木4: [],
    450 		木5: [],
    451 		木6: [],
    452 		金1: [],
    453 		金2: [],
    454 		金3: [],
    455 		金4: [],
    456 		金5: [],
    457 		金6: [],
    458 		金7: [],
    459 	},
    460 	'2-4': {
    461 		月1: [],
    462 		月2: [],
    463 		月3: [],
    464 		月4: [],
    465 		月5: [],
    466 		月6: [],
    467 		月7: [],
    468 		火1: [],
    469 		火2: [],
    470 		火3: [],
    471 		火4: [],
    472 		火5: [],
    473 		火6: [],
    474 		火7: [],
    475 		水1: [],
    476 		水2: [],
    477 		水3: [],
    478 		水4: [],
    479 		水5: [],
    480 		水6: [],
    481 		水7: [],
    482 		木1: [],
    483 		木2: [],
    484 		木3: [],
    485 		木4: [],
    486 		木5: [],
    487 		木6: [],
    488 		金1: [],
    489 		金2: [],
    490 		金3: [],
    491 		金4: [],
    492 		金5: [],
    493 		金6: [],
    494 		金7: [],
    495 	},
    496 	'2-5': {
    497 		月1: [],
    498 		月2: [],
    499 		月3: [],
    500 		月4: [],
    501 		月5: [],
    502 		月6: [],
    503 		月7: [],
    504 		火1: [],
    505 		火2: [],
    506 		火3: [],
    507 		火4: [],
    508 		火5: [],
    509 		火6: [],
    510 		火7: [],
    511 		水1: [],
    512 		水2: [],
    513 		水3: [],
    514 		水4: [],
    515 		水5: [],
    516 		水6: [],
    517 		水7: [],
    518 		木1: [],
    519 		木2: [],
    520 		木3: [],
    521 		木4: [],
    522 		木5: [],
    523 		木6: [],
    524 		金1: [],
    525 		金2: [],
    526 		金3: [],
    527 		金4: [],
    528 		金5: [],
    529 		金6: [],
    530 		金7: [],
    531 	},
    532 	'2-6': {
    533 		月1: [],
    534 		月2: [],
    535 		月3: [],
    536 		月4: [],
    537 		月5: [],
    538 		月6: [],
    539 		月7: [],
    540 		火1: [],
    541 		火2: [],
    542 		火3: [],
    543 		火4: [],
    544 		火5: [],
    545 		火6: [],
    546 		火7: [],
    547 		水1: [],
    548 		水2: [],
    549 		水3: [],
    550 		水4: [],
    551 		水5: [],
    552 		水6: [],
    553 		水7: [],
    554 		木1: [],
    555 		木2: [],
    556 		木3: [],
    557 		木4: [],
    558 		木5: [],
    559 		木6: [],
    560 		金1: [],
    561 		金2: [],
    562 		金3: [],
    563 		金4: [],
    564 		金5: [],
    565 		金6: [],
    566 		金7: [],
    567 	},
    568 	'2-7': {
    569 		月1: [],
    570 		月2: [],
    571 		月3: [],
    572 		月4: [],
    573 		月5: [],
    574 		月6: [],
    575 		月7: [],
    576 		火1: [],
    577 		火2: [],
    578 		火3: [],
    579 		火4: [],
    580 		火5: [],
    581 		火6: [],
    582 		火7: [],
    583 		水1: [],
    584 		水2: [],
    585 		水3: [],
    586 		水4: [],
    587 		水5: [],
    588 		水6: [],
    589 		水7: [],
    590 		木1: [],
    591 		木2: [],
    592 		木3: [],
    593 		木4: [],
    594 		木5: [],
    595 		木6: [],
    596 		金1: [],
    597 		金2: [],
    598 		金3: [],
    599 		金4: [],
    600 		金5: [],
    601 		金6: [],
    602 		金7: [],
    603 	},
    604 	'2-8': {
    605 		月1: [],
    606 		月2: [],
    607 		月3: [],
    608 		月4: [],
    609 		月5: [],
    610 		月6: [],
    611 		月7: [],
    612 		火1: [],
    613 		火2: [],
    614 		火3: [],
    615 		火4: [],
    616 		火5: [],
    617 		火6: [],
    618 		火7: [],
    619 		水1: [],
    620 		水2: [],
    621 		水3: [],
    622 		水4: [],
    623 		水5: [],
    624 		水6: [],
    625 		水7: [],
    626 		木1: [],
    627 		木2: [],
    628 		木3: [],
    629 		木4: [],
    630 		木5: [],
    631 		木6: [],
    632 		金1: [],
    633 		金2: [],
    634 		金3: [],
    635 		金4: [],
    636 		金5: [],
    637 		金6: [],
    638 		金7: [],
    639 	},
    640 	'3-1': {
    641 		月1: [],
    642 		月2: [],
    643 		月3: [],
    644 		月4: [],
    645 		月5: [],
    646 		月6: [],
    647 		月7: [],
    648 		火1: [],
    649 		火2: [],
    650 		火3: [],
    651 		火4: [],
    652 		火5: [],
    653 		火6: [],
    654 		火7: [],
    655 		水1: [],
    656 		水2: [],
    657 		水3: [],
    658 		水4: [],
    659 		水5: [],
    660 		水6: [],
    661 		水7: [],
    662 		木1: [],
    663 		木2: [],
    664 		木3: [],
    665 		木4: [],
    666 		木5: [],
    667 		木6: [],
    668 		金1: [],
    669 		金2: [],
    670 		金3: [],
    671 		金4: [],
    672 		金5: [],
    673 		金6: [],
    674 		金7: [],
    675 	},
    676 	'3-2': {
    677 		月1: [],
    678 		月2: [],
    679 		月3: [],
    680 		月4: [],
    681 		月5: [],
    682 		月6: [],
    683 		月7: [],
    684 		火1: [],
    685 		火2: [],
    686 		火3: [],
    687 		火4: [],
    688 		火5: [],
    689 		火6: [],
    690 		火7: [],
    691 		水1: [],
    692 		水2: [],
    693 		水3: [],
    694 		水4: [],
    695 		水5: [],
    696 		水6: [],
    697 		水7: [],
    698 		木1: [],
    699 		木2: [],
    700 		木3: [],
    701 		木4: [],
    702 		木5: [],
    703 		木6: [],
    704 		金1: [],
    705 		金2: [],
    706 		金3: [],
    707 		金4: [],
    708 		金5: [],
    709 		金6: [],
    710 		金7: [],
    711 	},
    712 	'3-3': {
    713 		月1: [],
    714 		月2: [],
    715 		月3: [],
    716 		月4: [],
    717 		月5: [],
    718 		月6: [],
    719 		月7: [],
    720 		火1: [],
    721 		火2: [],
    722 		火3: [],
    723 		火4: [],
    724 		火5: [],
    725 		火6: [],
    726 		火7: [],
    727 		水1: [],
    728 		水2: [],
    729 		水3: [],
    730 		水4: [],
    731 		水5: [],
    732 		水6: [],
    733 		水7: [],
    734 		木1: [],
    735 		木2: [],
    736 		木3: [],
    737 		木4: [],
    738 		木5: [],
    739 		木6: [],
    740 		金1: [],
    741 		金2: [],
    742 		金3: [],
    743 		金4: [],
    744 		金5: [],
    745 		金6: [],
    746 		金7: [],
    747 	},
    748 	'3-4': {
    749 		月1: [],
    750 		月2: [],
    751 		月3: [],
    752 		月4: [],
    753 		月5: [],
    754 		月6: [],
    755 		月7: [],
    756 		火1: [],
    757 		火2: [],
    758 		火3: [],
    759 		火4: [],
    760 		火5: [],
    761 		火6: [],
    762 		火7: [],
    763 		水1: [],
    764 		水2: [],
    765 		水3: [],
    766 		水4: [],
    767 		水5: [],
    768 		水6: [],
    769 		水7: [],
    770 		木1: [],
    771 		木2: [],
    772 		木3: [],
    773 		木4: [],
    774 		木5: [],
    775 		木6: [],
    776 		金1: [],
    777 		金2: [],
    778 		金3: [],
    779 		金4: [],
    780 		金5: [],
    781 		金6: [],
    782 		金7: [],
    783 	},
    784 	'3-5': {
    785 		月1: [],
    786 		月2: [],
    787 		月3: [],
    788 		月4: [],
    789 		月5: [],
    790 		月6: [],
    791 		月7: [],
    792 		火1: [],
    793 		火2: [],
    794 		火3: [],
    795 		火4: [],
    796 		火5: [],
    797 		火6: [],
    798 		火7: [],
    799 		水1: [],
    800 		水2: [],
    801 		水3: [],
    802 		水4: [],
    803 		水5: [],
    804 		水6: [],
    805 		水7: [],
    806 		木1: [],
    807 		木2: [],
    808 		木3: [],
    809 		木4: [],
    810 		木5: [],
    811 		木6: [],
    812 		金1: [],
    813 		金2: [],
    814 		金3: [],
    815 		金4: [],
    816 		金5: [],
    817 		金6: [],
    818 		金7: [],
    819 	},
    820 	'3-6': {
    821 		月1: [],
    822 		月2: [],
    823 		月3: [],
    824 		月4: [],
    825 		月5: [],
    826 		月6: [],
    827 		月7: [],
    828 		火1: [],
    829 		火2: [],
    830 		火3: [],
    831 		火4: [],
    832 		火5: [],
    833 		火6: [],
    834 		火7: [],
    835 		水1: [],
    836 		水2: [],
    837 		水3: [],
    838 		水4: [],
    839 		水5: [],
    840 		水6: [],
    841 		水7: [],
    842 		木1: [],
    843 		木2: [],
    844 		木3: [],
    845 		木4: [],
    846 		木5: [],
    847 		木6: [],
    848 		金1: [],
    849 		金2: [],
    850 		金3: [],
    851 		金4: [],
    852 		金5: [],
    853 		金6: [],
    854 		金7: [],
    855 	},
    856 	'3-7': {
    857 		月1: [],
    858 		月2: [],
    859 		月3: [],
    860 		月4: [],
    861 		月5: [],
    862 		月6: [],
    863 		月7: [],
    864 		火1: [],
    865 		火2: [],
    866 		火3: [],
    867 		火4: [],
    868 		火5: [],
    869 		火6: [],
    870 		火7: [],
    871 		水1: [],
    872 		水2: [],
    873 		水3: [],
    874 		水4: [],
    875 		水5: [],
    876 		水6: [],
    877 		水7: [],
    878 		木1: [],
    879 		木2: [],
    880 		木3: [],
    881 		木4: [],
    882 		木5: [],
    883 		木6: [],
    884 		金1: [],
    885 		金2: [],
    886 		金3: [],
    887 		金4: [],
    888 		金5: [],
    889 		金6: [],
    890 		金7: [],
    891 	},
    892 	'3-8': {
    893 		月1: [],
    894 		月2: [],
    895 		月3: [],
    896 		月4: [],
    897 		月5: [],
    898 		月6: [],
    899 		月7: [],
    900 		火1: [],
    901 		火2: [],
    902 		火3: [],
    903 		火4: [],
    904 		火5: [],
    905 		火6: [],
    906 		火7: [],
    907 		水1: [],
    908 		水2: [],
    909 		水3: [],
    910 		水4: [],
    911 		水5: [],
    912 		水6: [],
    913 		水7: [],
    914 		木1: [],
    915 		木2: [],
    916 		木3: [],
    917 		木4: [],
    918 		木5: [],
    919 		木6: [],
    920 		金1: [],
    921 		金2: [],
    922 		金3: [],
    923 		金4: [],
    924 		金5: [],
    925 		金6: [],
    926 		金7: [],
    927 	},
    928 } as const;