@royalschedule/maps 4.0.26 → 4.0.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -2,7 +2,7 @@ import { Types } from "../../core/types/index.js";
|
|
|
2
2
|
import { Types as Types$1 } from "../types/index.js";
|
|
3
3
|
import "../index.js";
|
|
4
4
|
import "../../index.js";
|
|
5
|
-
import * as
|
|
5
|
+
import * as xlsx1 from "xlsx";
|
|
6
6
|
|
|
7
7
|
//#region src/Additio/to/index.d.ts
|
|
8
8
|
declare class export_default {
|
|
@@ -16,7 +16,7 @@ declare class export_default {
|
|
|
16
16
|
courses: Types.Mixed.Course[];
|
|
17
17
|
events: Types.Mixed.Event[];
|
|
18
18
|
lockedTimes: Types.Mixed.LockedTime[];
|
|
19
|
-
}, _options?: Types$1.options) =>
|
|
19
|
+
}, _options?: Types$1.options) => xlsx1.WorkBook;
|
|
20
20
|
}
|
|
21
21
|
//#endregion
|
|
22
22
|
export { export_default };
|
|
@@ -13,12 +13,7 @@ function events_default(lessons, courses, teachers, importErrors, importWarnings
|
|
|
13
13
|
teachers?.forEach((t) => teacherSet.add(t.ids));
|
|
14
14
|
const events = [];
|
|
15
15
|
lessons?.forEach((l) => {
|
|
16
|
-
|
|
17
|
-
const warn = `The lesson with id "${l.id} contained ${l.info.groups?.length} number of groups (schedule_groups = courses) and was therefore omitted: a lesson shall contain only a single group.`;
|
|
18
|
-
importWarnings.push(warn);
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
groupScope: for (const group of l.info.groups) {
|
|
16
|
+
groupScope: for (const group of l.info.groups ?? []) {
|
|
22
17
|
if (!group2course.has(group.id.toString())) {
|
|
23
18
|
const warn = `The lesson with id "${l.id}" referenced the unknown/faulty schedule_group (course) "${group.id}" and was therefore ignored.`;
|
|
24
19
|
importWarnings.push(warn);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","names":["events: OutTypes.event[]","eventTeachers: string[] | undefined"],"sources":["../../../src/Admentum/from/events.ts"],"sourcesContent":["\nimport moment from 'moment';\nimport type { Lesson } from '../types/lessons';\nimport type { OutTypes } from './schedules';\n\nconst firstDay = moment.utc('1970-01-05');\n\nfunction fromTimeString (\n day: number,\n timeString: string\n): moment.Moment {\n const [hours, minutes, seconds] = timeString.split(':').map((time: string) => parseInt(time));\n return firstDay.clone().add(day, 'day')\n .set('hour', hours)\n .set('minute', minutes);\n}\n\nexport default function (\n lessons: Lesson[] | undefined,\n courses: OutTypes.course[] | undefined,\n teachers: OutTypes.teacher[] | undefined,\n importErrors: string[],\n importWarnings: string[],\n): OutTypes.event[] {\n\n // create schedule_group (group) to course map for quick lookup\n const group2course = new Map<string, OutTypes.course>();\n courses?.forEach(c => group2course.set(c.ids!, c));\n\n // create teacher set for quick lookup\n const teacherSet = new Set<string>();\n teachers?.forEach(t => teacherSet.add(t.ids!));\n\n const events: OutTypes.event[] = [];\n lessons?.forEach(l => {\n\n //
|
|
1
|
+
{"version":3,"file":"events.js","names":["events: OutTypes.event[]","eventTeachers: string[] | undefined"],"sources":["../../../src/Admentum/from/events.ts"],"sourcesContent":["\nimport moment from 'moment';\nimport type { Lesson } from '../types/lessons';\nimport type { OutTypes } from './schedules';\n\nconst firstDay = moment.utc('1970-01-05');\n\nfunction fromTimeString (\n day: number,\n timeString: string\n): moment.Moment {\n const [hours, minutes, seconds] = timeString.split(':').map((time: string) => parseInt(time));\n return firstDay.clone().add(day, 'day')\n .set('hour', hours)\n .set('minute', minutes);\n}\n\nexport default function (\n lessons: Lesson[] | undefined,\n courses: OutTypes.course[] | undefined,\n teachers: OutTypes.teacher[] | undefined,\n importErrors: string[],\n importWarnings: string[],\n): OutTypes.event[] {\n\n // create schedule_group (group) to course map for quick lookup\n const group2course = new Map<string, OutTypes.course>();\n courses?.forEach(c => group2course.set(c.ids!, c));\n\n // create teacher set for quick lookup\n const teacherSet = new Set<string>();\n teachers?.forEach(t => teacherSet.add(t.ids!));\n\n const events: OutTypes.event[] = [];\n lessons?.forEach(l => {\n\n // Nikos takes full responsibility for this line of code\n groupScope: for (const group of l.info.groups ?? []) {\n if (!group2course.has(group.id.toString())) {\n const warn = `The lesson with id \"${l.id}\" referenced the unknown/faulty schedule_group (course) \"${group.id}\" and was therefore ignored.`;\n importWarnings.push(warn);\n continue groupScope;\n }\n const course_id = group.id.toString();\n const course = group2course.get(course_id);\n\n if (!course) {\n const warn = `The lesson with id \"${l.id}\" referenced the unknown/faulty schedule_group (course) \"${course_id}\" and was therefore ignored.`;\n importWarnings.push(warn);\n continue groupScope;\n }\n\n const start = fromTimeString(l.weekday, l.info.start);\n const end = fromTimeString(l.weekday, l.info.end);\n const preferredDuration = l.info.duration;\n const duration = l.info.duration;\n\n // store only teachers if they mismatch teachers of parent course\n let eventTeachers: string[] | undefined;\n if (!course.teachers || !course.teachers?.every(x => l.info.teachers?.some(y => y.id.toString() == x.to))) {\n eventTeachers = l.info.teachers?.map(x => x.id.toString());\n\n // ensure that the teachers exist\n for (const teacher of eventTeachers ?? []) {\n if (!teacherSet.has(teacher)) {\n const warn = `The lesson with id \"${l.id}\" referenced the unknown teacher \"${teacher}\" and was therefore ignored.`;\n importWarnings.push(warn);\n continue groupScope;\n }\n }\n }\n\n // location\n const location = l.info.room?.id.toString();\n\n events.push({\n ids: l.id.toString(),\n start,\n end,\n preferredDuration,\n duration,\n course: course_id,\n ...location && { inLocations: [ location ], locations: [{ locations: [ location ] }] },\n ...(eventTeachers && { teachers: eventTeachers.map((to) => ({ to })) })\n } satisfies OutTypes.event);\n }\n });\n\n return events;\n}\n"],"mappings":";;;AAKA,MAAM,WAAW,OAAO,IAAI,aAAa;AAEzC,SAAS,eACP,KACA,YACe;CACf,MAAM,CAAC,OAAO,SAAS,WAAW,WAAW,MAAM,IAAI,CAAC,KAAK,SAAiB,SAAS,KAAK,CAAC;AAC7F,QAAO,SAAS,OAAO,CAAC,IAAI,KAAK,MAAM,CACpC,IAAI,QAAQ,MAAM,CAClB,IAAI,UAAU,QAAQ;;AAG3B,wBACE,SACA,SACA,UACA,cACA,gBACkB;CAGlB,MAAM,+BAAe,IAAI,KAA8B;AACvD,UAAS,SAAQ,MAAK,aAAa,IAAI,EAAE,KAAM,EAAE,CAAC;CAGlD,MAAM,6BAAa,IAAI,KAAa;AACpC,WAAU,SAAQ,MAAK,WAAW,IAAI,EAAE,IAAK,CAAC;CAE9C,MAAMA,SAA2B,EAAE;AACnC,UAAS,SAAQ,MAAK;AAGpB,aAAY,MAAK,MAAM,SAAS,EAAE,KAAK,UAAU,EAAE,EAAE;AACnD,OAAI,CAAC,aAAa,IAAI,MAAM,GAAG,UAAU,CAAC,EAAE;IAC1C,MAAM,OAAO,uBAAuB,EAAE,GAAG,2DAA2D,MAAM,GAAG;AAC7G,mBAAe,KAAK,KAAK;AACzB,aAAS;;GAEX,MAAM,YAAY,MAAM,GAAG,UAAU;GACrC,MAAM,SAAS,aAAa,IAAI,UAAU;AAE1C,OAAI,CAAC,QAAQ;IACX,MAAM,OAAO,uBAAuB,EAAE,GAAG,2DAA2D,UAAU;AAC9G,mBAAe,KAAK,KAAK;AACzB,aAAS;;GAGX,MAAM,QAAoB,eAAe,EAAE,SAAS,EAAE,KAAK,MAAM;GACjE,MAAM,MAAoB,eAAe,EAAE,SAAS,EAAE,KAAK,IAAI;GAC/D,MAAM,oBAAoB,EAAE,KAAK;GACjC,MAAM,WAAoB,EAAE,KAAK;GAGjC,IAAIC;AACJ,OAAI,CAAC,OAAO,YAAY,CAAC,OAAO,UAAU,OAAM,MAAK,EAAE,KAAK,UAAU,MAAK,MAAK,EAAE,GAAG,UAAU,IAAI,EAAE,GAAG,CAAC,EAAE;AACzG,oBAAgB,EAAE,KAAK,UAAU,KAAI,MAAK,EAAE,GAAG,UAAU,CAAC;AAG1D,SAAK,MAAM,WAAW,iBAAiB,EAAE,CACvC,KAAI,CAAC,WAAW,IAAI,QAAQ,EAAE;KAC5B,MAAM,OAAO,uBAAuB,EAAE,GAAG,oCAAoC,QAAQ;AACrF,oBAAe,KAAK,KAAK;AACzB,cAAS;;;GAMf,MAAM,WAAW,EAAE,KAAK,MAAM,GAAG,UAAU;AAE3C,UAAO,KAAK;IACV,KAAQ,EAAE,GAAG,UAAU;IACvB;IACA;IACA;IACA;IACA,QAAQ;IACR,GAAG,YAAY;KAAE,aAAa,CAAE,SAAU;KAAE,WAAW,CAAC,EAAE,WAAW,CAAE,SAAU,EAAE,CAAC;KAAE;IACtF,GAAI,iBAAiB,EAAE,UAAU,cAAc,KAAK,QAAQ,EAAE,IAAI,EAAE,EAAE;IACvE,CAA0B;;GAE7B;AAEF,QAAO"}
|
|
@@ -4,16 +4,26 @@ import { omit } from "lodash-es";
|
|
|
4
4
|
//#region src/SS12000/from/duties.ts
|
|
5
5
|
var duties_default = (duties) => {
|
|
6
6
|
if (!Array.isArray(duties)) throw new Error("(SS12000::From::Duties) Teacher input is not of array type", { cause: "invalid_input" });
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
7
|
+
const toDisplayName = (firstName, lastName) => {
|
|
8
|
+
const first = firstName?.trim();
|
|
9
|
+
const last = lastName?.trim();
|
|
10
|
+
if (first && last) return `${first} ${last}`;
|
|
11
|
+
return first || last || void 0;
|
|
12
|
+
};
|
|
13
|
+
return duties.map((duty) => {
|
|
14
|
+
const person = duty.person ?? duty._embedded?.person;
|
|
15
|
+
const displayName = duty.displayName ?? toDisplayName(person?.givenName, person?.familyName) ?? person?.displayName;
|
|
16
|
+
return {
|
|
17
|
+
ids: duty.id,
|
|
18
|
+
displayName,
|
|
19
|
+
signature: duty.signature,
|
|
20
|
+
...(duty.person || duty._embedded?.person) && { person: {
|
|
21
|
+
type: "Teacher",
|
|
22
|
+
...duty.person && { ids: duty.person.id },
|
|
23
|
+
...duty._embedded?.person && omit(persons_default([duty._embedded.person])[0], "type")
|
|
24
|
+
} }
|
|
25
|
+
};
|
|
26
|
+
});
|
|
17
27
|
};
|
|
18
28
|
|
|
19
29
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duties.js","names":["toPerson"],"sources":["../../../src/SS12000/from/duties.ts"],"sourcesContent":["import { omit } from 'lodash-es';\nimport type { CoreTypes } from '../../core';\nimport type { Duty } from '../types/duties';\nimport toPerson from './persons';\n\nexport default (duties: Duty[]) => {\n if (!Array.isArray(duties))\n throw new Error('(SS12000::From::Duties) Teacher input is not of array type', { cause: 'invalid_input' });\n\n return duties\n .map((duty): CoreTypes.MixedWithoutInternalId.Teacher =>
|
|
1
|
+
{"version":3,"file":"duties.js","names":["toPerson"],"sources":["../../../src/SS12000/from/duties.ts"],"sourcesContent":["import { omit } from 'lodash-es';\nimport type { CoreTypes } from '../../core';\nimport type { Duty } from '../types/duties';\nimport toPerson from './persons';\n\nexport default (duties: Duty[]) => {\n if (!Array.isArray(duties))\n throw new Error('(SS12000::From::Duties) Teacher input is not of array type', { cause: 'invalid_input' });\n\n const toDisplayName = (firstName?: string, lastName?: string) => {\n const first = firstName?.trim();\n const last = lastName?.trim();\n if (first && last) return `${ first } ${ last }`;\n return first || last || undefined;\n };\n\n return duties\n .map((duty): CoreTypes.MixedWithoutInternalId.Teacher => {\n const person = duty.person ?? duty._embedded?.person;\n const displayName = duty.displayName\n ?? toDisplayName(person?.givenName, person?.familyName)\n ?? person?.displayName;\n\n return ({\n ids: duty.id,\n displayName: displayName,\n signature: duty.signature,\n ...(duty.person || duty._embedded?.person) && {\n person: {\n type: 'Teacher',\n ...duty.person && { ids: duty.person.id },\n ...duty._embedded?.person && omit(toPerson([ duty._embedded.person ])[0], 'type')\n }\n }\n });\n });\n};\n"],"mappings":";;;;AAKA,sBAAgB,WAAmB;AACjC,KAAI,CAAC,MAAM,QAAQ,OAAO,CACxB,OAAM,IAAI,MAAM,8DAA8D,EAAE,OAAO,iBAAiB,CAAC;CAE3G,MAAM,iBAAiB,WAAoB,aAAsB;EAC/D,MAAM,QAAQ,WAAW,MAAM;EAC/B,MAAM,OAAO,UAAU,MAAM;AAC7B,MAAI,SAAS,KAAM,QAAO,GAAI,MAAO,GAAI;AACzC,SAAO,SAAS,QAAQ;;AAG1B,QAAO,OACJ,KAAK,SAAmD;EACvD,MAAM,SAAS,KAAK,UAAU,KAAK,WAAW;EAC9C,MAAM,cAAc,KAAK,eACpB,cAAc,QAAQ,WAAW,QAAQ,WAAW,IACpD,QAAQ;AAEb,SAAQ;GACN,KAAa,KAAK;GACL;GACb,WAAa,KAAK;GAClB,IAAI,KAAK,UAAU,KAAK,WAAW,WAAW,EAC5C,QAAQ;IACN,MAAM;IACN,GAAG,KAAK,UAAU,EAAE,KAAK,KAAK,OAAO,IAAI;IACzC,GAAG,KAAK,WAAW,UAAU,KAAKA,gBAAS,CAAE,KAAK,UAAU,OAAQ,CAAC,CAAC,IAAI,OAAO;IAClF,EACF;GACF;GACD"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { BaseOptions } from "../../../common/types.js";
|
|
2
2
|
import { Types } from "../../../core/types/index.js";
|
|
3
3
|
import "../../../index.js";
|
|
4
|
-
import * as
|
|
4
|
+
import * as xlsx0 from "xlsx";
|
|
5
5
|
|
|
6
6
|
//#region src/SchoolSoft/file/to/index.d.ts
|
|
7
7
|
declare class export_default {
|
|
8
8
|
static schedules: (schedule: Types.Mixed.Schedule & {
|
|
9
9
|
division?: Types.Mixed.Division;
|
|
10
|
-
}, options?: BaseOptions) =>
|
|
10
|
+
}, options?: BaseOptions) => xlsx0.WorkBook;
|
|
11
11
|
}
|
|
12
12
|
//#endregion
|
|
13
13
|
export { export_default };
|