fix: handle edge case when original class is undefined

This commit is contained in:
Starcea 2024-07-14 20:50:06 +09:00
commit 3366610c5d
No known key found for this signature in database
GPG key ID: B7A77E32374911E1
2 changed files with 13 additions and 14 deletions

View file

@ -56,30 +56,29 @@ export default class Comcigan {
const teachersLen = Math.floor(Math.log10(teachers.length - 1)) + 1 const teachersLen = Math.floor(Math.log10(teachers.length - 1)) + 1
const subjects = data[`자료${subjectCode}`] as string[] const subjects = data[`자료${subjectCode}`] as string[]
const original = data[`자료${originalCode}`] as number[][][][] const original = data[`자료${originalCode}`] as (number | undefined)[][][][]
const day = data[`자료${dayCode}`] as number[][][][] const day = data[`자료${dayCode}`] as number[][][][]
const getSubject = (code: number) =>
subjects[Number(code.toString().slice(0, -teachersLen - 1))]
const getTeacher = (code: number) =>
teachers[Number(code.toString().slice(-teachersLen))]
return day.slice(1).map((grade, gIdx) => return day.slice(1).map((grade, gIdx) =>
grade.slice(1).map((cls, cIdx) => grade.slice(1).map((cls, cIdx) =>
cls.slice(1).map((day, dIdx) => cls.slice(1).map((day, dIdx) =>
day.slice(1).map((period, pIdx) => { day.slice(1).map((period, pIdx) => {
const p = period.toString() const origin = original[gIdx + 1][cIdx + 1][dIdx + 1][pIdx + 1]
const origin = const changed = period !== origin
original[gIdx + 1][cIdx + 1][dIdx + 1][pIdx + 1].toString()
const changed = p !== origin
return { return {
subject: subjects[Number(p.slice(0, p.length - teachersLen - 1))], subject: getSubject(period),
teacher: teachers[Number(p.slice(-teachersLen))], teacher: getTeacher(period),
changed, changed,
...(changed ...(changed
? { ? {
originalSubject: originalSubject: origin ? getSubject(origin) : '없음',
subjects[ originalTeacher: origin ? getTeacher(origin) : '없음',
Number(origin.slice(0, origin.length - teachersLen - 1))
],
originalTeacher:
teachers[Number(origin.slice(-teachersLen))],
} }
: {}), : {}),
} as Timetable } as Timetable

View file

@ -2,5 +2,5 @@ export { default } from './client'
export { default as Region } from './models/Region' export { default as Region } from './models/Region'
export { default as School } from './models/School' export { default as School } from './models/School'
export { default as Timetable } from './models/Timetable' export { Timetable } from './models/Timetable'
export { Weekday } from './constants' export { Weekday } from './constants'