@royalschedule/maps 4.0.15 → 4.0.16
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.
- package/dist/Additio/from/courses.js.map +1 -1
- package/dist/Additio/from/events.js.map +1 -1
- package/dist/Additio/from/groups.js.map +1 -1
- package/dist/Additio/from/index.js.map +1 -1
- package/dist/Additio/from/locations.js.map +1 -1
- package/dist/Additio/from/persons.js.map +1 -1
- package/dist/Additio/from/schedules.d.ts +7 -6
- package/dist/Additio/from/schedules.js +2 -4
- package/dist/Additio/from/schedules.js.map +1 -1
- package/dist/Additio/from/teachers.js.map +1 -1
- package/dist/Additio/to/index.d.ts +13 -11
- package/dist/Additio/to/schedules.js +2 -4
- package/dist/Additio/to/schedules.js.map +1 -1
- package/dist/Admentum/from/courses.js.map +1 -1
- package/dist/Admentum/from/events.js.map +1 -1
- package/dist/Admentum/from/groups.js.map +1 -1
- package/dist/Admentum/from/index.js.map +1 -1
- package/dist/Admentum/from/locations.js.map +1 -1
- package/dist/Admentum/from/persons.js.map +1 -1
- package/dist/Admentum/from/schedules.d.ts +7 -6
- package/dist/Admentum/from/schedules.js +2 -4
- package/dist/Admentum/from/schedules.js.map +1 -1
- package/dist/Admentum/from/teachers.js.map +1 -1
- package/dist/Admentum/to/index.d.ts +9 -8
- package/dist/Admentum/to/schedules.js +4 -7
- package/dist/Admentum/to/schedules.js.map +1 -1
- package/dist/Excel/index.d.ts +263 -26
- package/dist/Excel/v1/from/index.js +2 -1
- package/dist/Excel/v1/from/index.js.map +1 -1
- package/dist/Excel/v1/index.d.ts +218 -20
- package/dist/Excel/v2/from/index.js +49 -57
- package/dist/Excel/v2/from/index.js.map +1 -1
- package/dist/Excel/v2/index.d.ts +263 -26
- package/dist/IdunSoft/from/courses.js.map +1 -1
- package/dist/IdunSoft/from/events.js +1 -2
- package/dist/IdunSoft/from/events.js.map +1 -1
- package/dist/IdunSoft/from/groups.js.map +1 -1
- package/dist/IdunSoft/from/index.js.map +1 -1
- package/dist/IdunSoft/from/locations.js.map +1 -1
- package/dist/IdunSoft/from/schedules.d.ts +6 -5
- package/dist/IdunSoft/from/schedules.js.map +1 -1
- package/dist/IdunSoft/from/teachers.js.map +1 -1
- package/dist/IdunSoft/to/index.d.ts +2 -1
- package/dist/IdunSoft/to/schedules.js +5 -8
- package/dist/IdunSoft/to/schedules.js.map +1 -1
- package/dist/InfoMentor/to/index.d.ts +2 -1
- package/dist/InfoMentor/to/schedules.js +3 -4
- package/dist/InfoMentor/to/schedules.js.map +1 -1
- package/dist/PlanDigital/from/index.js.map +1 -1
- package/dist/PlanDigital/from/schedules.js +9 -11
- package/dist/PlanDigital/from/schedules.js.map +1 -1
- package/dist/PlanDigital/index.d.ts +73 -58
- package/dist/Quiculum/file/to/index.d.ts +10 -9
- package/dist/Quiculum/file/to/schedules.js +5 -9
- package/dist/Quiculum/file/to/schedules.js.map +1 -1
- package/dist/RS/from/division.d.ts +2 -1
- package/dist/RS/from/division.js +9 -6
- package/dist/RS/from/division.js.map +1 -1
- package/dist/RS/from/index.js.map +1 -1
- package/dist/RS/from/schedules.d.ts +2 -1
- package/dist/RS/from/schedules.js.map +1 -1
- package/dist/RS/make-connected.d.ts +17 -16
- package/dist/RS/make-connected.js +63 -96
- package/dist/RS/make-connected.js.map +1 -1
- package/dist/RS/to/index.js.map +1 -1
- package/dist/RS/to/initial-configuration.js +4 -6
- package/dist/RS/to/initial-configuration.js.map +1 -1
- package/dist/RS/to/input/collections.js.map +1 -1
- package/dist/RS/to/input/default.js +1 -2
- package/dist/RS/to/input/default.js.map +1 -1
- package/dist/RS/to/input/dependencies.js +1 -3
- package/dist/RS/to/input/dependencies.js.map +1 -1
- package/dist/RS/to/input/dynamic-locked-times.js +1 -2
- package/dist/RS/to/input/dynamic-locked-times.js.map +1 -1
- package/dist/RS/to/input/events.js +5 -3
- package/dist/RS/to/input/events.js.map +1 -1
- package/dist/RS/to/input/groups.js.map +1 -1
- package/dist/RS/to/input/individuals.js +2 -3
- package/dist/RS/to/input/individuals.js.map +1 -1
- package/dist/RS/to/input/input.js +1 -3
- package/dist/RS/to/input/input.js.map +1 -1
- package/dist/RS/to/input/intervals.js +2 -4
- package/dist/RS/to/input/intervals.js.map +1 -1
- package/dist/RS/to/input/periods.js +6 -8
- package/dist/RS/to/input/periods.js.map +1 -1
- package/dist/RS/to/input/settings.js.map +1 -1
- package/dist/RS/to/input/teachers.js.map +1 -1
- package/dist/RS/to/input/util/attach-locked-times.js.map +1 -1
- package/dist/RS/to/input/util/parse-days.js.map +1 -1
- package/dist/RS/to/input/util/parse-group-references.js.map +1 -1
- package/dist/RS/to/input/util/parse-intervals.js +2 -4
- package/dist/RS/to/input/util/parse-intervals.js.map +1 -1
- package/dist/RS/to/input/util/parse-location-references.js +1 -2
- package/dist/RS/to/input/util/parse-location-references.js.map +1 -1
- package/dist/RS/to/input/util/parse-max-working-hours.js.map +1 -1
- package/dist/RS/to/input/util/parse-minimum-break-length.js.map +1 -1
- package/dist/RS/to/input/util/util.js +1 -2
- package/dist/RS/to/input/util/util.js.map +1 -1
- package/dist/RS/to/schedules.js +1 -1
- package/dist/RS/to/schedules.js.map +1 -1
- package/dist/RS/types/to.d.ts +12 -3
- package/dist/RS/types/to.js +1 -1
- package/dist/RS/types/to.js.map +1 -1
- package/dist/SS12000/from/activities.js +1 -2
- package/dist/SS12000/from/activities.js.map +1 -1
- package/dist/SS12000/from/calendar-events.js.map +1 -1
- package/dist/SS12000/from/duties.js.map +1 -1
- package/dist/SS12000/from/groups.js.map +1 -1
- package/dist/SS12000/from/index.js.map +1 -1
- package/dist/SS12000/from/persons.js.map +1 -1
- package/dist/SS12000/from/resources.js.map +1 -1
- package/dist/SS12000/from/rooms.js.map +1 -1
- package/dist/SS12000/from/syllabuses.js.map +1 -1
- package/dist/SS12000/index.d.ts +12567 -9
- package/dist/SS12000/to/activities.js.map +1 -1
- package/dist/SS12000/to/calendar-events.js.map +1 -1
- package/dist/SS12000/to/common.js.map +1 -1
- package/dist/SS12000/to/duties.js.map +1 -1
- package/dist/SS12000/to/groups.js.map +1 -1
- package/dist/SS12000/to/index.d.ts +17 -16
- package/dist/SS12000/to/persons.js.map +1 -1
- package/dist/SS12000/to/resources.js.map +1 -1
- package/dist/SS12000/to/rooms.js.map +1 -1
- package/dist/SS12000/to/syllabuses.js.map +1 -1
- package/dist/SchoolSoft/api/from/index.js.map +1 -1
- package/dist/SchoolSoft/api/from/schedules.js +8 -12
- package/dist/SchoolSoft/api/from/schedules.js.map +1 -1
- package/dist/SchoolSoft/api/index.d.ts +444 -9
- package/dist/SchoolSoft/file/from/index.js.map +1 -1
- package/dist/SchoolSoft/file/from/schedules.js +83 -87
- package/dist/SchoolSoft/file/from/schedules.js.map +1 -1
- package/dist/SchoolSoft/file/index.d.ts +2 -1
- package/dist/SchoolSoft/file/to/index.d.ts +5 -4
- package/dist/SchoolSoft/file/to/schedules.js +1 -2
- package/dist/SchoolSoft/file/to/schedules.js.map +1 -1
- package/dist/SchoolSoft/index.d.ts +2 -1
- package/dist/Schoolity/txt/to/index.d.ts +2 -1
- package/dist/Schoolity/txt/to/schedules.js +5 -12
- package/dist/Schoolity/txt/to/schedules.js.map +1 -1
- package/dist/Skola24/mdb/from/course-and-events.js +3 -5
- package/dist/Skola24/mdb/from/course-and-events.js.map +1 -1
- package/dist/Skola24/mdb/from/groups.js.map +1 -1
- package/dist/Skola24/mdb/from/index.js.map +1 -1
- package/dist/Skola24/mdb/from/locations.js.map +1 -1
- package/dist/Skola24/mdb/from/schedule.d.ts +6 -5
- package/dist/Skola24/mdb/from/schedule.js.map +1 -1
- package/dist/Skola24/mdb/from/teachers.js.map +1 -1
- package/dist/Skola24/txt/from/calendar-exceptions.js +1 -2
- package/dist/Skola24/txt/from/calendar-exceptions.js.map +1 -1
- package/dist/Skola24/txt/from/division.js.map +1 -1
- package/dist/Skola24/txt/from/index.js.map +1 -1
- package/dist/Skola24/txt/from/period.js +31 -34
- package/dist/Skola24/txt/from/period.js.map +1 -1
- package/dist/Skola24/txt/from/schedules.d.ts +9 -8
- package/dist/Skola24/txt/from/schedules.js +10 -12
- package/dist/Skola24/txt/from/schedules.js.map +1 -1
- package/dist/Skola24/txt/from/util.js.map +1 -1
- package/dist/Skola24/txt/index.d.ts +2 -1
- package/dist/Skola24/txt/to/index.d.ts +2 -1
- package/dist/Skola24/txt/to/schedules.js +5 -12
- package/dist/Skola24/txt/to/schedules.js.map +1 -1
- package/dist/common/constants.js.map +1 -1
- package/dist/common/functions.js +46 -10
- package/dist/common/functions.js.map +1 -1
- package/dist/common/get-date.js.map +1 -1
- package/dist/common/make-chainable/index.js.map +1 -1
- package/dist/common/types.d.ts +3 -6
- package/dist/core/from/configurations.js.map +1 -1
- package/dist/core/from/courses.js.map +1 -1
- package/dist/core/from/events.js +1 -1
- package/dist/core/from/events.js.map +1 -1
- package/dist/core/from/exceptions.js.map +1 -1
- package/dist/core/from/groups.js.map +1 -1
- package/dist/core/from/index.js +9 -6
- package/dist/core/from/index.js.map +1 -1
- package/dist/core/from/locations.js.map +1 -1
- package/dist/core/from/locked-times.js.map +1 -1
- package/dist/core/from/overlap-groups.js.map +1 -1
- package/dist/core/from/periods.js.map +1 -1
- package/dist/core/from/persons.js.map +1 -1
- package/dist/core/from/root-intervals.js.map +1 -1
- package/dist/core/from/schedules.js.map +1 -1
- package/dist/core/from/syllabuses.js.map +1 -1
- package/dist/core/from/teachers.js.map +1 -1
- package/dist/core/index.d.ts +24 -1
- package/dist/core/index.js +4 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/interfaces/index.d.ts +23 -0
- package/dist/core/interfaces/index.js +6 -0
- package/dist/core/interfaces/other/companies.d.ts +132 -0
- package/dist/core/interfaces/other/companies.js +9 -0
- package/dist/core/interfaces/other/companies.js.map +1 -0
- package/dist/core/interfaces/other/etc.d.ts +19 -0
- package/dist/core/interfaces/other/index.d.ts +6 -0
- package/dist/core/interfaces/other/integrations.d.ts +17 -0
- package/dist/core/interfaces/other/operations.d.ts +36 -0
- package/dist/core/interfaces/other/policies.d.ts +31 -0
- package/dist/core/interfaces/other/sync-logs.d.ts +21 -0
- package/dist/core/interfaces/other/users.d.ts +35 -0
- package/dist/core/interfaces/vertices/companies.d.ts +8 -0
- package/dist/core/interfaces/vertices/configurations.d.ts +58 -0
- package/dist/core/interfaces/vertices/courses.d.ts +68 -0
- package/dist/core/{types → interfaces/vertices}/division-settings.d.ts +31 -29
- package/dist/core/interfaces/vertices/divisions.d.ts +31 -0
- package/dist/core/interfaces/vertices/events.d.ts +100 -0
- package/dist/core/interfaces/vertices/exceptions.d.ts +74 -0
- package/dist/core/interfaces/vertices/generations.d.ts +23 -0
- package/dist/core/interfaces/vertices/groups.d.ts +53 -0
- package/dist/core/interfaces/vertices/index.d.ts +209 -0
- package/dist/core/interfaces/vertices/index.js +3 -0
- package/dist/core/interfaces/vertices/locations.d.ts +22 -0
- package/dist/core/interfaces/vertices/locked-times.d.ts +37 -0
- package/dist/core/interfaces/vertices/overlap-groups.d.ts +17 -0
- package/dist/core/interfaces/vertices/periods.d.ts +15 -0
- package/dist/core/interfaces/vertices/persons.d.ts +32 -0
- package/dist/core/interfaces/vertices/properties/belongs-to.d.ts +11 -0
- package/dist/core/interfaces/vertices/properties/coalesced.d.ts +8 -0
- package/dist/core/interfaces/vertices/properties/days.d.ts +9 -0
- package/dist/core/interfaces/vertices/properties/index.d.ts +15 -0
- package/dist/core/interfaces/vertices/properties/intervals.d.ts +10 -0
- package/dist/core/{types/common → interfaces/vertices/properties}/maximum-schedule-span.d.ts +1 -1
- package/dist/core/interfaces/vertices/properties/min-break-length.d.ts +5 -0
- package/dist/core/{types/common/planned-schedule-duration.d.ts → interfaces/vertices/properties/planned-scheduled-duration.d.ts} +2 -2
- package/dist/core/interfaces/vertices/properties/species.d.ts +9 -0
- package/dist/core/interfaces/vertices/properties/tags.d.ts +9 -0
- package/dist/core/interfaces/vertices/properties/week.d.ts +22 -0
- package/dist/core/interfaces/vertices/properties/week.js +6 -0
- package/dist/core/interfaces/vertices/properties/week.js.map +1 -0
- package/dist/core/interfaces/vertices/root-intervals.d.ts +14 -0
- package/dist/core/interfaces/vertices/syllabuses.d.ts +18 -0
- package/dist/core/interfaces/vertices/teachers.d.ts +43 -0
- package/dist/core/interfaces/vertices/users.d.ts +8 -0
- package/dist/core/interfaces/vertices/util/common.d.ts +28 -0
- package/dist/core/interfaces/vertices/util/custom-vertex-export/index.d.ts +31 -0
- package/dist/core/interfaces/vertices/util/custom-vertex-export/util.d.ts +51 -0
- package/dist/core/interfaces/vertices/util/deep-vertex-export/index.d.ts +64 -0
- package/dist/core/interfaces/vertices/util/edges.d.ts +105 -0
- package/dist/core/interfaces/vertices/util/index.d.ts +5 -0
- package/dist/core/interfaces/vertices/util/keys-of.d.ts +27 -0
- package/dist/core/interfaces/vertices/util/serialized-vertex-export.d.ts +12 -0
- package/dist/core/interfaces/vertices/util/util.d.ts +76 -0
- package/dist/core/interfaces/vertices/util/vertex-query/index.d.ts +44 -0
- package/dist/core/interfaces/vertices/util/vertex-query/util.d.ts +13 -0
- package/dist/core/interfaces/vertices/util/vertex.d.ts +70 -0
- package/dist/core/interfaces/vertices/vertex-query.d.ts +102 -0
- package/dist/core/interfaces/vertices/vertex-query.js +94 -0
- package/dist/core/interfaces/vertices/vertex-query.js.map +1 -0
- package/dist/core/to/configurations.js +2 -3
- package/dist/core/to/configurations.js.map +1 -1
- package/dist/core/to/courses.js +2 -3
- package/dist/core/to/courses.js.map +1 -1
- package/dist/core/to/division.js.map +1 -1
- package/dist/core/to/events.js +2 -3
- package/dist/core/to/events.js.map +1 -1
- package/dist/core/to/exceptions.js +4 -4
- package/dist/core/to/exceptions.js.map +1 -1
- package/dist/core/to/groups.js +2 -3
- package/dist/core/to/groups.js.map +1 -1
- package/dist/core/to/locations.js +2 -3
- package/dist/core/to/locations.js.map +1 -1
- package/dist/core/to/locked-times.js +2 -3
- package/dist/core/to/locked-times.js.map +1 -1
- package/dist/core/to/overlap-groups.js +2 -3
- package/dist/core/to/overlap-groups.js.map +1 -1
- package/dist/core/to/periods.js +2 -3
- package/dist/core/to/periods.js.map +1 -1
- package/dist/core/to/persons.js +3 -9
- package/dist/core/to/persons.js.map +1 -1
- package/dist/core/to/root-intervals.js +2 -3
- package/dist/core/to/root-intervals.js.map +1 -1
- package/dist/core/to/schedules.d.ts +17 -18
- package/dist/core/to/schedules.js.map +1 -1
- package/dist/core/to/settings.js +2 -3
- package/dist/core/to/settings.js.map +1 -1
- package/dist/core/to/syllabuses.js +2 -3
- package/dist/core/to/syllabuses.js.map +1 -1
- package/dist/core/to/teachers.js +4 -4
- package/dist/core/to/teachers.js.map +1 -1
- package/dist/core/to/util.d.ts +4 -8
- package/dist/core/to/util.js +7 -5
- package/dist/core/to/util.js.map +1 -1
- package/dist/core/types/common/index.d.ts +4 -41
- package/dist/core/types/index.d.ts +108 -112
- package/dist/core/util.js +4 -5
- package/dist/core/util.js.map +1 -1
- package/dist/identify/constants/index.d.ts +1 -1
- package/dist/identify/constants/index.js.map +1 -1
- package/dist/identify/index.js +1 -2
- package/dist/identify/index.js.map +1 -1
- package/dist/index.d.ts +23 -1
- package/dist/index.js +4 -1
- package/dist/sdui/from/classes.js.map +1 -1
- package/dist/sdui/from/courses.js.map +1 -1
- package/dist/sdui/from/holidays.js.map +1 -1
- package/dist/sdui/from/index.js.map +1 -1
- package/dist/sdui/from/lessons.js +4 -0
- package/dist/sdui/from/lessons.js.map +1 -1
- package/dist/sdui/from/rooms.js.map +1 -1
- package/dist/sdui/from/schedules.d.ts +10 -8
- package/dist/sdui/from/schedules.js.map +1 -1
- package/dist/sdui/from/school-years.js +0 -1
- package/dist/sdui/from/school-years.js.map +1 -1
- package/dist/sdui/from/substitution-plans.js.map +1 -1
- package/dist/sdui/from/teachers.js.map +1 -1
- package/dist/sdui/index.d.ts +1 -1
- package/dist/sdui/to/classes.js.map +1 -1
- package/dist/sdui/to/courses.js.map +1 -1
- package/dist/sdui/to/holidays.js.map +1 -1
- package/dist/sdui/to/hours.js.map +1 -1
- package/dist/sdui/to/index.d.ts +12 -10
- package/dist/sdui/to/lessons.js.map +1 -1
- package/dist/sdui/to/rooms.js.map +1 -1
- package/dist/sdui/to/schedules.js.map +1 -1
- package/dist/sdui/to/school-years.js.map +1 -1
- package/dist/sdui/to/substitution-plans.js +3 -6
- package/dist/sdui/to/substitution-plans.js.map +1 -1
- package/dist/sdui/to/teachers.js.map +1 -1
- package/dist/vKlass/from/index.js.map +1 -1
- package/dist/vKlass/from/schedule.d.ts +4 -3
- package/dist/vKlass/from/schedule.js +2 -2
- package/dist/vKlass/from/schedule.js.map +1 -1
- package/dist/vKlass/to/schedules.d.ts +4 -4
- package/dist/vKlass/to/schedules.js +6 -17
- package/dist/vKlass/to/schedules.js.map +1 -1
- package/package.json +24 -22
- package/dist/core/types/areas.d.ts +0 -10
- package/dist/core/types/common/break-lengths.d.ts +0 -5
- package/dist/core/types/common/days.d.ts +0 -8
- package/dist/core/types/common/intervals.d.ts +0 -20
- package/dist/core/types/common/tag.d.ts +0 -9
- package/dist/core/types/configurations.d.ts +0 -31
- package/dist/core/types/courses.d.ts +0 -60
- package/dist/core/types/divisions.d.ts +0 -24
- package/dist/core/types/events.d.ts +0 -56
- package/dist/core/types/exceptions.d.ts +0 -35
- package/dist/core/types/groups.d.ts +0 -44
- package/dist/core/types/locations.d.ts +0 -27
- package/dist/core/types/locked-times.d.ts +0 -33
- package/dist/core/types/overlap-groups.d.ts +0 -14
- package/dist/core/types/periods.d.ts +0 -14
- package/dist/core/types/persons.d.ts +0 -38
- package/dist/core/types/root-intervals.d.ts +0 -13
- package/dist/core/types/schedules.d.ts +0 -44
- package/dist/core/types/syllabus.d.ts +0 -18
- package/dist/core/types/teachers.d.ts +0 -44
- package/dist/core/vertex-mapping.d.ts +0 -69
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activities.js","names":["toGroup","toTeacher"],"sources":["../../../src/SS12000/to/activities.ts"],"sourcesContent":["import { isString, has, get, omitBy, isNil, map } from 'lodash-es';\nimport moment from 'moment';\nimport type { CoreTypes } from '../../core';\nimport type { Activity } from '../types/activities';\nimport type { ActivityType } from '../types/codes';\nimport type { Duty } from '../types/duties';\nimport { getDivisionId, toReference } from './common';\nimport toGroup from './groups';\nimport toTeacher from './duties';\n\ntype Expand = ('referenceNames' | 'teachers' | 'syllabus' | 'groups')[];\n\nfunction mapActivityType (type: CoreTypes.
|
|
1
|
+
{"version":3,"file":"activities.js","names":["toGroup","toTeacher"],"sources":["../../../src/SS12000/to/activities.ts"],"sourcesContent":["import { isString, has, get, omitBy, isNil, map } from 'lodash-es';\nimport moment from 'moment';\nimport type { CoreTypes } from '../../core';\nimport type { Activity } from '../types/activities';\nimport type { ActivityType } from '../types/codes';\nimport type { Duty } from '../types/duties';\nimport { getDivisionId, toReference } from './common';\nimport toGroup from './groups';\nimport toTeacher from './duties';\n\ntype Expand = ('referenceNames' | 'teachers' | 'syllabus' | 'groups')[];\n\nfunction mapActivityType (type: CoreTypes.Deep.Course['type']): ActivityType {\n switch (type) {\n case 'LUNCH':\n return 'Övrigt';\n default:\n return 'Undervisning';\n }\n}\n\n/**\n * @deprecated This is only used for SCS. can be removed when scs use v2\n */\nexport default (\n activities: (Extract<CoreTypes.Mixed.Course, { id: string }> | Extract<CoreTypes.Mixed.Event, { id: string }>)[],\n belongsTo?: Extract<CoreTypes.Deep.Division, { id: string }>,\n expand?: Expand\n): Activity[] => {\n if (!Array.isArray(activities))\n throw new Error('(SS12000::To::Activities) Activities input is not of array type', { cause: 'invalid_input' });\n\n if (!activities.every((activity) => isString(activity) || isString(get(activity, 'id'))))\n throw new Error('(SS12000::To::Activities) Some Activities are missing \"id\" values', { cause: 'invalid_input' });\n\n if (!belongsTo && !activities.every((activity) => (isString(activity) && belongsTo) || has(activity, 'belongsTo')))\n throw new Error('(SS12000::To::Activities) Some top layer Activities are missing \"belongsTo\" values', { cause: 'invalid_input' });\n\n return activities.map((activity): Activity => {\n const division = belongsTo ?? (!isString(activity) ? activity.belongsTo : undefined);\n if (!division || isString(division) || !('id' in division && division.id))\n throw new Error('(SS12000::To::Activities) Some events members are missing \"belongsTo\" values', { cause: 'invalid_input' });\n if (!('start' in division && division.start) || !('end' in division && division.end))\n throw new Error('(SS12000::To::Activities) Some events members are missing \"belongsTo\" start or end values', { cause: 'invalid_input' });\n\n return {\n id: `${ getDivisionId(activity, belongsTo) }.${ isString(activity) ? activity : activity.id }`,\n calendarEventsRequired: 'course' in activity, // true for events, false for courses\n activityType: mapActivityType(activity.type),\n startDate: moment(division.start).toISOString(),\n ...typeof activity != 'string' && {\n meta: {\n created: moment(activity.createdAt).toISOString(),\n modified: moment(activity.updatedAt).toISOString()\n },\n ...omitBy({\n foreignId: activity.ids,\n displayName: activity.displayName,\n comment: get(activity, 'comment'),\n subject: get(activity, 'subject'),\n }, isNil),\n // @ts-ignore\n ...activity.groups && { groups: toReference(map(activity.groups, 'to'), division, expand?.includes('referenceNames')) },\n // @ts-ignore\n ...activity.teachers && { teachers: activity.teachers.map(({ to }) => ({ duty: toReference([to], belongsTo ?? activity.belongsTo, expand?.includes('referenceNames'))[0] as Duty })) },\n ...'course' in activity && typeof activity.course == 'object' && 'id' in activity.course && activity.course.id && {\n // @ts-ignore\n parentActivity: toReference([activity.course as CoreTypes.Mixed.Course], division, expand?.includes('referenceNames'))[0]\n },\n ...activity.locations && { rooms: activity.locations.map(({ locations, groupIndex }) => ({\n // @ts-ignore\n room: toReference(locations as any, division, expand?.includes('referenceNames'))[0],\n index: groupIndex\n }))\n },\n // syllabus: {\n // id: activity.id!,\n // ...expandReferenceNames && { displayName: activity.displayName }\n // },\n ...expand?.some(x => ['groups', 'teachers', 'syllabus'].includes(x)) && {\n _embedded: {\n ...expand.includes('groups') && {\n // @ts-ignore\n ...activity.groups && { groups: toGroup(map(activity.groups, 'to'), division) }\n },\n ...expand.includes('teachers') && {\n // @ts-ignore\n ...activity.teachers && { teachers: toTeacher(map(activity.teachers, 'to'), division) }\n },\n // ...expand.includes('syllabus') && {\n // syllabus: {\n // id: activity.id!,\n // displayName: activity.displayName,\n // }\n // },\n }\n }\n }\n }\n });\n};"],"mappings":";;;;;;;AAYA,SAAS,gBAAiB,MAAmD;AAC3E,SAAQ,MAAR;EACE,KAAK,QACH,QAAO;EACT,QACE,QAAO;;;;;;AAOb,0BACE,YACA,WACA,WACe;AACf,KAAI,CAAC,MAAM,QAAQ,WAAW,CAC5B,OAAM,IAAI,MAAM,mEAAmE,EAAE,OAAO,iBAAiB,CAAC;AAEhH,KAAI,CAAC,WAAW,OAAO,aAAa,SAAS,SAAS,IAAI,SAAS,IAAI,UAAU,KAAK,CAAC,CAAC,CACtF,OAAM,IAAI,MAAM,uEAAqE,EAAE,OAAO,iBAAiB,CAAC;AAElH,KAAI,CAAC,aAAa,CAAC,WAAW,OAAO,aAAc,SAAS,SAAS,IAAI,aAAc,IAAI,UAAU,YAAY,CAAC,CAChH,OAAM,IAAI,MAAM,wFAAsF,EAAE,OAAO,iBAAiB,CAAC;AAEnI,QAAO,WAAW,KAAK,aAAuB;EAC5C,MAAM,WAAW,cAAc,CAAC,SAAS,SAAS,GAAG,SAAS,YAAY;AAC1E,MAAI,CAAC,YAAY,SAAS,SAAS,IAAI,EAAE,QAAQ,YAAY,SAAS,IACpE,OAAM,IAAI,MAAM,kFAAgF,EAAE,OAAO,iBAAiB,CAAC;AAC7H,MAAI,EAAE,WAAW,YAAY,SAAS,UAAU,EAAE,SAAS,YAAY,SAAS,KAC9E,OAAM,IAAI,MAAM,+FAA6F,EAAE,OAAO,iBAAiB,CAAC;AAE1I,SAAO;GACL,IAAwB,GAAI,cAAc,UAAU,UAAU,CAAE,GAAI,SAAS,SAAS,GAAG,WAAW,SAAS;GAC7G,wBAAwB,YAAY;GACpC,cAAwB,gBAAgB,SAAS,KAAK;GACtD,WAAwB,OAAO,SAAS,MAAM,CAAC,aAAa;GAC5D,GAAG,OAAO,YAAY,YAAY;IAChC,MAAM;KACJ,SAAU,OAAO,SAAS,UAAU,CAAC,aAAa;KAClD,UAAU,OAAO,SAAS,UAAU,CAAC,aAAa;KACnD;IACD,GAAG,OAAO;KACR,WAAa,SAAS;KACtB,aAAa,SAAS;KACtB,SAAa,IAAI,UAAU,UAAU;KACrC,SAAa,IAAI,UAAU,UAAU;KACtC,EAAE,MAAM;IAET,GAAG,SAAS,UAAe,EAAE,QAAe,YAAY,IAAI,SAAS,QAAQ,KAAK,EAAE,UAAU,QAAQ,SAAS,iBAAiB,CAAC,EAAE;IAEnI,GAAG,SAAS,YAAe,EAAE,UAAU,SAAS,SAAS,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC,GAAG,EAAE,aAAa,SAAS,WAAW,QAAQ,SAAS,iBAAiB,CAAC,CAAC,IAAY,EAAE,EAAE;IACzL,GAAG,YAAY,YAAY,OAAO,SAAS,UAAU,YAAY,QAAQ,SAAS,UAAU,SAAS,OAAO,MAAM,EAEhH,gBAAgB,YAAY,CAAC,SAAS,OAAiC,EAAE,UAAU,QAAQ,SAAS,iBAAiB,CAAC,CAAC,IACxH;IACD,GAAG,SAAS,aAAc,EAAE,OAAO,SAAS,UAAU,KAAK,EAAE,WAAW,kBAAkB;KAExF,MAAO,YAAY,WAAkB,UAAU,QAAQ,SAAS,iBAAiB,CAAC,CAAC;KACnF,OAAO;KACR,EAAE,EACF;IAKD,GAAG,QAAQ,MAAK,MAAK;KAAC;KAAU;KAAY;KAAW,CAAC,SAAS,EAAE,CAAC,IAAI,EACtE,WAAW;KACT,GAAG,OAAO,SAAS,SAAS,IAAI,EAE9B,GAAG,SAAS,UAAU,EAAE,QAAQA,eAAQ,IAAI,SAAS,QAAQ,KAAK,EAAE,SAAS,EAAE,EAChF;KACD,GAAG,OAAO,SAAS,WAAW,IAAI,EAEhC,GAAG,SAAS,YAAY,EAAE,UAAUC,eAAU,IAAI,SAAS,UAAU,KAAK,EAAE,SAAS,EAAE,EACxF;KAOF,EACF;IACF;GACF;GACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar-events.js","names":["toGroup","toTeacher","toActivities"],"sources":["../../../src/SS12000/to/calendar-events.ts"],"sourcesContent":["import { isString, has, get, omitBy, isNil, isNull, map, reject } from 'lodash-es';\nimport moment from 'moment';\nimport type { CoreTypes } from '../../core';\nimport type { CalendarEvent } from '../types/calendar-events';\nimport { getDivisionId, toReference } from './common';\nimport toActivities from './activities';\nimport toGroup from './groups';\nimport toTeacher from './duties';\n\ntype Expand = ('referenceNames' | 'teachers' | 'activity' | 'groups')[];\n\nexport default (\n events: Extract<CoreTypes.
|
|
1
|
+
{"version":3,"file":"calendar-events.js","names":["toGroup","toTeacher","toActivities"],"sources":["../../../src/SS12000/to/calendar-events.ts"],"sourcesContent":["import { isString, has, get, omitBy, isNil, isNull, map, reject } from 'lodash-es';\nimport moment from 'moment';\nimport type { CoreTypes } from '../../core';\nimport type { CalendarEvent } from '../types/calendar-events';\nimport { getDivisionId, toReference } from './common';\nimport toActivities from './activities';\nimport toGroup from './groups';\nimport toTeacher from './duties';\n\ntype Expand = ('referenceNames' | 'teachers' | 'activity' | 'groups')[];\n\nexport default (\n events: Extract<CoreTypes.Mixed.Event, { id: string }>[],\n belongsTo?: Extract<CoreTypes.Deep.Division, { id: string }>,\n expand?: Expand\n): Partial<CalendarEvent>[] => {\n if (!Array.isArray(events))\n throw new Error('(SS12000::To::CalendarEvents) CalendarEvent input is not of array type', { cause: 'invalid_input' });\n\n if (!events.every((event) => isString(event) || isString(get(event, 'id'))))\n throw new Error('(SS12000::To::CalendarEvents) Some CalendarEvents are missing \"id\" values', { cause: 'invalid_input' });\n\n if (!belongsTo && !events.every((event) => (isString(event) && belongsTo) || has(event, 'belongsTo')))\n throw new Error('(SS12000::To::CalendarEvents) Some top layer CalendarEvents are missing \"belongsTo\" values', { cause: 'invalid_input' });\n\n return events.map((event) => {\n const division = belongsTo ?? (!isString(event) ? event.belongsTo : undefined);\n if (!division || isString(division) || !('id' in division && division.id))\n throw new Error('(SS12000::To::CalendarEvents) Some events members are missing \"belongsTo\" values', { cause: 'invalid_input' });\n if (!('start' in division && division.start) || !('end' in division && division.end))\n throw new Error('(SS12000::To::CalendarEvents) Some events members are missing \"belongsTo\" start or end values', { cause: 'invalid_input' });\n\n const course = (!isString(event) && event.course && !isString(event.course)) ?\n event.course as Extract<CoreTypes.Mixed.Course, { id: string }>\n : undefined;\n\n return {\n id: `${ getDivisionId(event, belongsTo) }.${ isString(event) ? event : event.id }`,\n ...!isString(event) && {\n meta: {\n created: moment(event.createdAt).toISOString(),\n modified: moment(event.updatedAt).toISOString(),\n ...event.type && { type: event.type },\n },\n ...omitBy({\n foreignId: event.ids,\n color: event.color ?? course?.color,\n }, isNil),\n startTime: event.start?.toString(),\n endTime: event.end?.toString(),\n // Locked times have no course, so we need to check for it\n // @ts-ignore\n ...course && { activity: toReference([course], division, expand?.includes('referenceNames'))[0] },\n // @ts-ignore\n rooms: toReference(reject(event.inLocations, isNull) ?? [], division, expand?.includes('referenceNames')),\n // @ts-ignore\n resources: toReference([], division, expand?.includes('referenceNames')),\n // @ts-ignore\n teachers: toReference(map(event.teachers ?? course?.teachers ?? [], 'to'), division, expand?.includes('referenceNames')),\n // @ts-ignore\n groups: toReference(map(event.groups ?? course?.groups ?? [], 'to'), division, expand?.includes('referenceNames')),\n ...expand?.some(x => ['groups', 'teachers', 'activity'].includes(x)) && {\n _embedded: {\n ...expand.includes('groups') && {\n // @ts-ignore\n groups: toGroup(map(event.groups, 'to'), division)\n },\n ...expand.includes('teachers') && {\n // @ts-ignore\n teachers: toTeacher(map(event.teachers, 'to'), division)\n },\n ...(expand.includes('activity') && course)&& {\n activity: toActivities([course], division as Extract<CoreTypes.Deep.Division, { id: string }>)[0]\n }\n }\n }\n }\n }\n });\n};\n"],"mappings":";;;;;;;;AAWA,+BACE,QACA,WACA,WAC6B;AAC7B,KAAI,CAAC,MAAM,QAAQ,OAAO,CACxB,OAAM,IAAI,MAAM,0EAA0E,EAAE,OAAO,iBAAiB,CAAC;AAEvH,KAAI,CAAC,OAAO,OAAO,UAAU,SAAS,MAAM,IAAI,SAAS,IAAI,OAAO,KAAK,CAAC,CAAC,CACzE,OAAM,IAAI,MAAM,+EAA6E,EAAE,OAAO,iBAAiB,CAAC;AAE1H,KAAI,CAAC,aAAa,CAAC,OAAO,OAAO,UAAW,SAAS,MAAM,IAAI,aAAc,IAAI,OAAO,YAAY,CAAC,CACnG,OAAM,IAAI,MAAM,gGAA8F,EAAE,OAAO,iBAAiB,CAAC;AAE3I,QAAO,OAAO,KAAK,UAAU;EAC3B,MAAM,WAAW,cAAc,CAAC,SAAS,MAAM,GAAG,MAAM,YAAY;AACpE,MAAI,CAAC,YAAY,SAAS,SAAS,IAAI,EAAE,QAAQ,YAAY,SAAS,IACpE,OAAM,IAAI,MAAM,sFAAoF,EAAE,OAAO,iBAAiB,CAAC;AACjI,MAAI,EAAE,WAAW,YAAY,SAAS,UAAU,EAAE,SAAS,YAAY,SAAS,KAC9E,OAAM,IAAI,MAAM,mGAAiG,EAAE,OAAO,iBAAiB,CAAC;EAE9I,MAAM,SAAU,CAAC,SAAS,MAAM,IAAI,MAAM,UAAU,CAAC,SAAS,MAAM,OAAO,GACzE,MAAM,SACJ;AAEJ,SAAO;GACL,IAAI,GAAI,cAAc,OAAO,UAAU,CAAE,GAAI,SAAS,MAAM,GAAG,QAAQ,MAAM;GAC7E,GAAG,CAAC,SAAS,MAAM,IAAI;IACrB,MAAM;KACJ,SAAU,OAAO,MAAM,UAAU,CAAC,aAAa;KAC/C,UAAU,OAAO,MAAM,UAAU,CAAC,aAAa;KAC/C,GAAG,MAAM,QAAiB,EAAE,MAAM,MAAM,MAAM;KAC/C;IACD,GAAG,OAAO;KACR,WAAW,MAAM;KACjB,OAAW,MAAM,SAAS,QAAQ;KACnC,EAAE,MAAM;IACT,WAAW,MAAM,OAAO,UAAU;IAClC,SAAW,MAAM,KAAK,UAAU;IAGhC,GAAG,UAAU,EAAE,UAAU,YAAY,CAAC,OAAO,EAAE,UAAU,QAAQ,SAAS,iBAAiB,CAAC,CAAC,IAAI;IAEjG,OAAW,YAAY,OAAO,MAAM,aAAa,OAAO,IAAI,EAAE,EAAE,UAAU,QAAQ,SAAS,iBAAiB,CAAC;IAE7G,WAAW,YAAY,EAAE,EAAE,UAAU,QAAQ,SAAS,iBAAiB,CAAC;IAExE,UAAW,YAAY,IAAI,MAAM,YAAY,QAAQ,YAAY,EAAE,EAAE,KAAK,EAAE,UAAU,QAAQ,SAAS,iBAAiB,CAAC;IAEzH,QAAW,YAAY,IAAI,MAAM,UAAU,QAAQ,UAAU,EAAE,EAAE,KAAK,EAAE,UAAU,QAAQ,SAAS,iBAAiB,CAAC;IACrH,GAAG,QAAQ,MAAK,MAAK;KAAC;KAAU;KAAY;KAAW,CAAC,SAAS,EAAE,CAAC,IAAI,EACtE,WAAW;KACT,GAAG,OAAO,SAAS,SAAS,IAAI,EAE9B,QAAQA,eAAQ,IAAI,MAAM,QAAQ,KAAK,EAAE,SAAS,EACnD;KACD,GAAG,OAAO,SAAS,WAAW,IAAI,EAEhC,UAAUC,eAAU,IAAI,MAAM,UAAU,KAAK,EAAE,SAAS,EACzD;KACD,GAAI,OAAO,SAAS,WAAW,IAAI,UAAU,EAC3C,UAAUC,mBAAa,CAAC,OAAO,EAAE,SAA6D,CAAC,IAChG;KACF,EACF;IACF;GACF;GACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","names":[],"sources":["../../../src/SS12000/to/common.ts"],"sourcesContent":["import { isString, omitBy, isNil, isObject } from 'lodash-es';\nimport type { CoreTypes } from '../../core';\n\nexport function toReference<T extends Partial<{\n id: string,\n belongsTo?: CoreTypes.
|
|
1
|
+
{"version":3,"file":"common.js","names":[],"sources":["../../../src/SS12000/to/common.ts"],"sourcesContent":["import { isString, omitBy, isNil, isObject } from 'lodash-es';\nimport type { CoreTypes } from '../../core';\n\nexport function toReference<T extends Partial<{\n id: string,\n belongsTo?: CoreTypes.Deep.Division | string,\n ids: string,\n displayName: string\n}>> (\n input: T[],\n belongsTo?: Extract<CoreTypes.Deep.Division, { id: string }>,\n expandReferenceNames?: boolean\n) {\n return input.map((x) => {\n // Bth belongsTo.id and entity.belongsto.id cant be missing\n if (!(belongsTo && 'id' in belongsTo && belongsTo.id) && !isString(x) && (!x.belongsTo || isString(x.belongsTo) || !('id' in x.belongsTo && x.belongsTo.id)))\n throw new Error('(SS12000::To::Reference) Some top layer entities are missing \"belongsTo\" values', { cause: 'invalid_input' });\n\n return {\n id: `${ getDivisionId(x, belongsTo) }.${ isString(x) ? x : x.id }`,\n ...!isString(x) && {\n ...omitBy({\n foreignId: x.ids,\n ...expandReferenceNames && { displayName: x.displayName }\n }, isNil),\n }\n };\n });\n}\n\nexport function getDivisionId(\n entity: unknown,\n division?: Extract<CoreTypes.Deep.Division, { id: string }>\n) {\n if (division) return division.id;\n\n if (isString(entity)) {\n throw new Error('(SS12000::To::getDivisionId) belongsTo is missing \"id\" value', { cause: 'invalid_input' });\n };\n if (!isObject(entity) || !('belongsTo' in entity) || !entity.belongsTo || !isObject(entity.belongsTo) || !('id' in entity.belongsTo) || !isString(entity.belongsTo.id))\n throw new Error('(SS12000::To::getDivisionId) entity is missing \"belongsTo.id\" value', { cause: 'invalid_input' });\n return entity.belongsTo.id;\n}"],"mappings":";;;AAGA,SAAgB,YAMd,OACA,WACA,sBACA;AACA,QAAO,MAAM,KAAK,MAAM;AAEtB,MAAI,EAAE,aAAa,QAAQ,aAAa,UAAU,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,aAAa,SAAS,EAAE,UAAU,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,KACtJ,OAAM,IAAI,MAAM,qFAAmF,EAAE,OAAO,iBAAiB,CAAC;AAEhI,SAAO;GACL,IAAI,GAAI,cAAc,GAAG,UAAU,CAAE,GAAI,SAAS,EAAE,GAAG,IAAI,EAAE;GAC7D,GAAG,CAAC,SAAS,EAAE,IAAI,EACjB,GAAG,OAAO;IACR,WAAW,EAAE;IACb,GAAG,wBAAwB,EAAE,aAAa,EAAE,aAAa;IAC1D,EAAE,MAAM,EACV;GACF;GACD;;AAGJ,SAAgB,cACd,QACA,UACA;AACA,KAAI,SAAU,QAAO,SAAS;AAE9B,KAAI,SAAS,OAAO,CAClB,OAAM,IAAI,MAAM,kEAAgE,EAAE,OAAO,iBAAiB,CAAC;AAE7G,KAAI,CAAC,SAAS,OAAO,IAAI,EAAE,eAAe,WAAW,CAAC,OAAO,aAAa,CAAC,SAAS,OAAO,UAAU,IAAI,EAAE,QAAQ,OAAO,cAAc,CAAC,SAAS,OAAO,UAAU,GAAG,CACpK,OAAM,IAAI,MAAM,yEAAuE,EAAE,OAAO,iBAAiB,CAAC;AACpH,QAAO,OAAO,UAAU"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duties.js","names":["toPerson"],"sources":["../../../src/SS12000/to/duties.ts"],"sourcesContent":["import { isString, has, get, omitBy, isNil } from 'lodash-es';\nimport moment from 'moment';\nimport type { CoreTypes } from '../../core';\nimport type { Duty } from '../types/duties';\nimport { getDivisionId, toReference } from './common';\nimport toPerson from './persons';\n\ntype Expand = ('referenceNames' | 'person')[];\n\n/**\n * @deprecated This is only used for SCS. can be removed when scs use v2\n */\nexport default (\n teachers: Extract<CoreTypes.
|
|
1
|
+
{"version":3,"file":"duties.js","names":["toPerson"],"sources":["../../../src/SS12000/to/duties.ts"],"sourcesContent":["import { isString, has, get, omitBy, isNil } from 'lodash-es';\nimport moment from 'moment';\nimport type { CoreTypes } from '../../core';\nimport type { Duty } from '../types/duties';\nimport { getDivisionId, toReference } from './common';\nimport toPerson from './persons';\n\ntype Expand = ('referenceNames' | 'person')[];\n\n/**\n * @deprecated This is only used for SCS. can be removed when scs use v2\n */\nexport default (\n teachers: Extract<CoreTypes.Mixed.Teacher, { id: string }>[],\n belongsTo?: Extract<CoreTypes.Deep.Division, { id: string }>,\n expand?: Expand\n): Duty[] => {\n if (!Array.isArray(teachers))\n throw new Error('(SS12000::To::Duty) Teacher input is not of array type', { cause: 'invalid_input' });\n\n if (!teachers.every((teacher) => isString(teacher) || isString(get(teacher, 'id'))))\n throw new Error('(SS12000::To::Duty) Some teachers are missing \"id\" values', { cause: 'invalid_input' });\n\n if (!belongsTo && !teachers.every((teacher) => (isString(teacher) && belongsTo) || has(teacher, 'belongsTo')))\n throw new Error('(SS12000::To::Duty) Some top layer teachers are missing \"belongsTo\" values', { cause: 'invalid_input' });\n\n return teachers.map((teacher) => {\n const division = belongsTo ?? (!isString(teacher) ? teacher.belongsTo : undefined);\n if (!division || isString(division) || !('id' in division && division.id))\n throw new Error('(SS12000::To::Duty) Some teachers members are missing \"belongsTo\" values', { cause: 'invalid_input' });\n if (!('start' in division && division.start) || !('end' in division && division.end))\n throw new Error('(SS12000::To::Duty) Some teachers members are missing \"belongsTo\" start or end values', { cause: 'invalid_input' });\n\n const person = (!isString(teacher) && teacher.person && !isString(teacher.person)) ?\n teacher.person as Extract<CoreTypes.Mixed.Person, { id: string }>\n : undefined;\n\n return {\n id: `${ getDivisionId(teacher, belongsTo) }.${ isString(teacher) ? teacher : teacher.id }`,\n dutyRole: 'Lärare' as const,\n startDate: moment(division.start).toISOString(),\n endDate: moment(division.end).toISOString(),\n ...typeof teacher != 'string' && {\n meta: {\n created: moment(teacher.createdAt).toISOString(),\n modified: moment(teacher.updatedAt).toISOString()\n },\n ...omitBy({\n foreignId: teacher.ids,\n displayName: teacher.displayName,\n }, isNil),\n ...person && {\n person: {\n // @ts-ignore\n ...toReference([person], belongsTo ?? teacher.belongsTo)[0],\n ...expand?.includes('referenceNames') && {\n displayName: `${ person.firstName ?? '' } ${ person.lastName ?? '' }`\n }\n }\n },\n ...expand?.some(x => ['person'].includes(x)) && {\n _embedded: {\n ...(expand.includes('person') && person) && {\n person: toPerson([person], division as Extract<CoreTypes.Deep.Division, { id: string }>)[0]\n }\n }\n }\n }\n };\n });\n};"],"mappings":";;;;;;;;;AAYA,sBACE,UACA,WACA,WACW;AACX,KAAI,CAAC,MAAM,QAAQ,SAAS,CAC1B,OAAM,IAAI,MAAM,0DAA0D,EAAE,OAAO,iBAAiB,CAAC;AAEvG,KAAI,CAAC,SAAS,OAAO,YAAY,SAAS,QAAQ,IAAI,SAAS,IAAI,SAAS,KAAK,CAAC,CAAC,CACjF,OAAM,IAAI,MAAM,+DAA6D,EAAE,OAAO,iBAAiB,CAAC;AAE1G,KAAI,CAAC,aAAa,CAAC,SAAS,OAAO,YAAa,SAAS,QAAQ,IAAI,aAAc,IAAI,SAAS,YAAY,CAAC,CAC3G,OAAM,IAAI,MAAM,gFAA8E,EAAE,OAAO,iBAAiB,CAAC;AAE3H,QAAO,SAAS,KAAK,YAAY;EAC/B,MAAM,WAAW,cAAc,CAAC,SAAS,QAAQ,GAAG,QAAQ,YAAY;AACxE,MAAI,CAAC,YAAY,SAAS,SAAS,IAAI,EAAE,QAAQ,YAAY,SAAS,IACpE,OAAM,IAAI,MAAM,8EAA4E,EAAE,OAAO,iBAAiB,CAAC;AACzH,MAAI,EAAE,WAAW,YAAY,SAAS,UAAU,EAAE,SAAS,YAAY,SAAS,KAC9E,OAAM,IAAI,MAAM,2FAAyF,EAAE,OAAO,iBAAiB,CAAC;EAEtI,MAAM,SAAU,CAAC,SAAS,QAAQ,IAAI,QAAQ,UAAU,CAAC,SAAS,QAAQ,OAAO,GAC/E,QAAQ,SACN;AAEJ,SAAO;GACL,IAAW,GAAI,cAAc,SAAS,UAAU,CAAE,GAAI,SAAS,QAAQ,GAAG,UAAU,QAAQ;GAC5F,UAAW;GACX,WAAW,OAAO,SAAS,MAAM,CAAC,aAAa;GAC/C,SAAW,OAAO,SAAS,IAAI,CAAC,aAAa;GAC7C,GAAG,OAAO,WAAW,YAAY;IAC/B,MAAM;KACJ,SAAU,OAAO,QAAQ,UAAU,CAAC,aAAa;KACjD,UAAU,OAAO,QAAQ,UAAU,CAAC,aAAa;KAClD;IACD,GAAG,OAAO;KACR,WAAa,QAAQ;KACrB,aAAa,QAAQ;KACtB,EAAE,MAAM;IACT,GAAG,UAAU,EACX,QAAQ;KAEN,GAAG,YAAY,CAAC,OAAO,EAAE,aAAa,QAAQ,UAAU,CAAC;KACzD,GAAG,QAAQ,SAAS,iBAAiB,IAAI,EACvC,aAAa,GAAI,OAAO,aAAa,GAAI,GAAI,OAAO,YAAY,MACjE;KACF,EACF;IACD,GAAG,QAAQ,MAAK,MAAK,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,IAAI,EAC9C,WAAW,EACT,GAAI,OAAO,SAAS,SAAS,IAAI,UAAW,EAC1C,QAAQA,gBAAS,CAAC,OAAO,EAAE,SAA6D,CAAC,IAC1F,EACF,EACF;IACF;GACF;GACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"groups.js","names":["toPerson"],"sources":["../../../src/SS12000/to/groups.ts"],"sourcesContent":["import { isString, has, get, omitBy, isNil } from 'lodash-es';\nimport moment from 'moment';\nimport type { CoreTypes } from '../../core';\nimport type { Group } from '../types/groups';\nimport { getDivisionId, toReference } from './common';\nimport toPerson from './persons';\n\ntype Expand = ('referenceNames' | 'persons')[];\n\n/**\n * @deprecated This is only used for SCS. can be removed when scs use v2\n */\nexport default (\n groups: Exclude<Extract<CoreTypes.
|
|
1
|
+
{"version":3,"file":"groups.js","names":["toPerson"],"sources":["../../../src/SS12000/to/groups.ts"],"sourcesContent":["import { isString, has, get, omitBy, isNil } from 'lodash-es';\nimport moment from 'moment';\nimport type { CoreTypes } from '../../core';\nimport type { Group } from '../types/groups';\nimport { getDivisionId, toReference } from './common';\nimport toPerson from './persons';\n\ntype Expand = ('referenceNames' | 'persons')[];\n\n/**\n * @deprecated This is only used for SCS. can be removed when scs use v2\n */\nexport default (\n groups: Exclude<Extract<CoreTypes.Mixed.Group, { id: string }>, { members: string[] }>[],\n belongsTo?: Extract<CoreTypes.Deep.Division, { id: string }>,\n expand?: Expand\n): Group[] => {\n if (!Array.isArray(groups))\n throw new Error('(SS12000::To::Groups) Group input is not of array type', { cause: 'invalid_input' });\n\n if (!groups.every((group) => isString(group) || isString(get(group, 'id'))))\n throw new Error('(SS12000::To::Groups) Some groups are missing \"id\" values', { cause: 'invalid_input' });\n\n if (!belongsTo && !groups.every((group) => (isString(group) && belongsTo) || has(group, 'belongsTo')))\n throw new Error('(SS12000::To::Groups) Some top layer groups are missing \"belongsTo\" values', { cause: 'invalid_input' });\n\n return groups.map((group) => {\n if (! isString(group) && group.members?.some((member) => isString(member))) {\n throw new Error('(SS12000::To::Groups) Some group members are missing \"id\" values', { cause: 'invalid_input' });\n }\n const members = !isString(group) && group.members?.length && !isString(group.members[0])\n ? group.members as Extract<CoreTypes.Mixed.Person, { id: string }>[]\n : [];\n\n const division = belongsTo ?? (!isString(group) ? group.belongsTo : undefined);\n if (!division || isString(division) || !('id' in division && division.id))\n throw new Error('(SS12000::To::Groups) Some group members are missing \"belongsTo\" values', { cause: 'invalid_input' });\n if (!('start' in division && division.start) || !('end' in division && division.end))\n throw new Error('(SS12000::To::Groups) Some group members are missing \"belongsTo\" start or end values', { cause: 'invalid_input' });\n\n return {\n id: `${ getDivisionId(group, belongsTo) }.${ isString(group) ? group : group.id }`,\n groupType: group.species === 'class' ? 'Klass' : 'Undervisning',\n startDate: moment(division.start).toISOString(),\n endDate: moment(division.end).toISOString(),\n ...!isString(group) && {\n meta: {\n created: moment(group.createdAt).toISOString(),\n modified: moment(group.updatedAt).toISOString()\n },\n /*\n Optionally add the following properties\n */\n ...omitBy({\n foreignId: group.ids,\n displayName: group.displayName,\n }, isNil),\n ...group.members && {\n // @ts-ignore\n groupMemberships: toReference(members, division).map(person => ({\n startDate: moment(division.start).toISOString(),\n endDate: moment(division.end).toISOString(),\n person: person\n }))\n },\n ...expand?.some(x => ['persons'].includes(x)) && {\n _embedded: {\n ...expand.includes('persons') && {\n groups: toPerson(members, division as Extract<CoreTypes.Deep.Division, { id: string }>)\n }\n }\n }\n }\n };\n });\n};"],"mappings":";;;;;;;;;AAYA,sBACE,QACA,WACA,WACY;AACZ,KAAI,CAAC,MAAM,QAAQ,OAAO,CACxB,OAAM,IAAI,MAAM,0DAA0D,EAAE,OAAO,iBAAiB,CAAC;AAEvG,KAAI,CAAC,OAAO,OAAO,UAAU,SAAS,MAAM,IAAI,SAAS,IAAI,OAAO,KAAK,CAAC,CAAC,CACzE,OAAM,IAAI,MAAM,+DAA6D,EAAE,OAAO,iBAAiB,CAAC;AAE1G,KAAI,CAAC,aAAa,CAAC,OAAO,OAAO,UAAW,SAAS,MAAM,IAAI,aAAc,IAAI,OAAO,YAAY,CAAC,CACnG,OAAM,IAAI,MAAM,gFAA8E,EAAE,OAAO,iBAAiB,CAAC;AAE3H,QAAO,OAAO,KAAK,UAAU;AAC3B,MAAI,CAAE,SAAS,MAAM,IAAI,MAAM,SAAS,MAAM,WAAW,SAAS,OAAO,CAAC,CACxE,OAAM,IAAI,MAAM,sEAAoE,EAAE,OAAO,iBAAiB,CAAC;EAEjH,MAAM,UAAU,CAAC,SAAS,MAAM,IAAI,MAAM,SAAS,UAAU,CAAC,SAAS,MAAM,QAAQ,GAAG,GACpF,MAAM,UACN,EAAE;EAEN,MAAM,WAAW,cAAc,CAAC,SAAS,MAAM,GAAG,MAAM,YAAY;AACpE,MAAI,CAAC,YAAY,SAAS,SAAS,IAAI,EAAE,QAAQ,YAAY,SAAS,IACpE,OAAM,IAAI,MAAM,6EAA2E,EAAE,OAAO,iBAAiB,CAAC;AACxH,MAAI,EAAE,WAAW,YAAY,SAAS,UAAU,EAAE,SAAS,YAAY,SAAS,KAC9E,OAAM,IAAI,MAAM,0FAAwF,EAAE,OAAO,iBAAiB,CAAC;AAErI,SAAO;GACL,IAAW,GAAI,cAAc,OAAO,UAAU,CAAE,GAAI,SAAS,MAAM,GAAG,QAAQ,MAAM;GACpF,WAAW,MAAM,YAAY,UAAU,UAAU;GACjD,WAAW,OAAO,SAAS,MAAM,CAAC,aAAa;GAC/C,SAAW,OAAO,SAAS,IAAI,CAAC,aAAa;GAC7C,GAAG,CAAC,SAAS,MAAM,IAAI;IACrB,MAAM;KACJ,SAAU,OAAO,MAAM,UAAU,CAAC,aAAa;KAC/C,UAAU,OAAO,MAAM,UAAU,CAAC,aAAa;KAChD;IAID,GAAG,OAAO;KACR,WAAa,MAAM;KACnB,aAAa,MAAM;KACpB,EAAE,MAAM;IACT,GAAG,MAAM,WAAW,EAElB,kBAAkB,YAAY,SAAS,SAAS,CAAC,KAAI,YAAW;KAC9D,WAAW,OAAO,SAAS,MAAM,CAAC,aAAa;KAC/C,SAAW,OAAO,SAAS,IAAI,CAAC,aAAa;KAClC;KACZ,EAAE,EACJ;IACD,GAAG,QAAQ,MAAK,MAAK,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,IAAI,EAC/C,WAAW,EACT,GAAG,OAAO,SAAS,UAAU,IAAI,EAC/B,QAAQA,gBAAS,SAAS,SAA6D,EACxF,EACF,EACF;IACF;GACF;GACD"}
|
|
@@ -7,49 +7,50 @@ import { Syllabus } from "../types/syllabus.js";
|
|
|
7
7
|
import { Activity } from "../types/activities.js";
|
|
8
8
|
import { Resource } from "../types/resources.js";
|
|
9
9
|
import { CalendarEvent } from "../types/calendar-events.js";
|
|
10
|
+
import "../../index.js";
|
|
10
11
|
|
|
11
12
|
//#region src/SS12000/to/index.d.ts
|
|
12
13
|
declare class export_default {
|
|
13
|
-
static activities: (activities: (Extract<Types.
|
|
14
|
+
static activities: (activities: (Extract<Types.Mixed.Course, {
|
|
14
15
|
id: string;
|
|
15
|
-
}> | Extract<Types.
|
|
16
|
+
}> | Extract<Types.Mixed.Event, {
|
|
16
17
|
id: string;
|
|
17
|
-
}>)[], belongsTo?: Extract<Types.
|
|
18
|
+
}>)[], belongsTo?: Extract<Types.Deep.Division, {
|
|
18
19
|
id: string;
|
|
19
20
|
}>, expand?: ("groups" | "teachers" | "syllabus" | "referenceNames")[]) => Activity[];
|
|
20
|
-
static calendarEvents: (events: Extract<Types.
|
|
21
|
+
static calendarEvents: (events: Extract<Types.Mixed.Event, {
|
|
21
22
|
id: string;
|
|
22
|
-
}>[], belongsTo?: Extract<Types.
|
|
23
|
+
}>[], belongsTo?: Extract<Types.Deep.Division, {
|
|
23
24
|
id: string;
|
|
24
25
|
}>, expand?: ("groups" | "teachers" | "referenceNames" | "activity")[]) => Partial<CalendarEvent>[];
|
|
25
|
-
static duties: (teachers: Extract<Types.
|
|
26
|
+
static duties: (teachers: Extract<Types.Mixed.Teacher, {
|
|
26
27
|
id: string;
|
|
27
|
-
}>[], belongsTo?: Extract<Types.
|
|
28
|
+
}>[], belongsTo?: Extract<Types.Deep.Division, {
|
|
28
29
|
id: string;
|
|
29
30
|
}>, expand?: ("person" | "referenceNames")[]) => Duty[];
|
|
30
|
-
static groups: (groups: Exclude<Extract<Types.
|
|
31
|
+
static groups: (groups: Exclude<Extract<Types.Mixed.Group, {
|
|
31
32
|
id: string;
|
|
32
33
|
}>, {
|
|
33
34
|
members: string[];
|
|
34
|
-
}>[], belongsTo?: Extract<Types.
|
|
35
|
+
}>[], belongsTo?: Extract<Types.Deep.Division, {
|
|
35
36
|
id: string;
|
|
36
37
|
}>, expand?: ("persons" | "referenceNames")[]) => Group[];
|
|
37
|
-
static persons: (persons: Extract<Types.
|
|
38
|
+
static persons: (persons: Extract<Types.Mixed.Person, {
|
|
38
39
|
id: string;
|
|
39
|
-
}>[], belongsTo?: Extract<Types.
|
|
40
|
+
}>[], belongsTo?: Extract<Types.Deep.Division, {
|
|
40
41
|
id: string;
|
|
41
42
|
}>) => Person[];
|
|
42
|
-
static resources: (resources: any[], belongsTo?: Extract<Types.
|
|
43
|
+
static resources: (resources: any[], belongsTo?: Extract<Types.Deep.Division, {
|
|
43
44
|
id: string;
|
|
44
45
|
}>) => Resource[];
|
|
45
|
-
static rooms: (locations: (Extract<Types.
|
|
46
|
+
static rooms: (locations: (Extract<Types.Mixed.Location, {
|
|
46
47
|
id: string;
|
|
47
|
-
}> | string)[], belongsTo?: Extract<Types.
|
|
48
|
+
}> | string)[], belongsTo?: Extract<Types.Deep.Division, {
|
|
48
49
|
id: string;
|
|
49
50
|
}>) => Room[];
|
|
50
|
-
static syllabuses: (syllabuses: (Extract<Types.
|
|
51
|
+
static syllabuses: (syllabuses: (Extract<Types.Mixed.Syllabus, {
|
|
51
52
|
id: string;
|
|
52
|
-
}> | string)[], belongsTo?: Extract<Types.
|
|
53
|
+
}> | string)[], belongsTo?: Extract<Types.Deep.Division, {
|
|
53
54
|
id: string;
|
|
54
55
|
}>) => Syllabus[];
|
|
55
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persons.js","names":["SexMap: Record<NonNullable<CoreTypes.
|
|
1
|
+
{"version":3,"file":"persons.js","names":["SexMap: Record<NonNullable<CoreTypes.Deep.Person['sex']>, Person['sex']>"],"sources":["../../../src/SS12000/to/persons.ts"],"sourcesContent":["import { isString, has, get, omitBy, isNil } from 'lodash-es';\nimport moment from 'moment';\nimport type { CoreTypes } from '../../core';\nimport type { Person } from '../types/persons';\nimport { getDivisionId } from './common';\n\nconst SexMap: Record<NonNullable<CoreTypes.Deep.Person['sex']>, Person['sex']> = { Man: 'Man', Woman: 'Kvinna' };\nconst TypeMap: Record<\n NonNullable<\n CoreTypes.Deep.Person['phoneNumbers']\n >[0]['type'],\n NonNullable<\n Person['phoneNumbers']\n >[0]['type']\n> = {\n private: 'Privat',\n organization: 'Arbete övrigt'\n};\n\n/**\n * @deprecated This is only used for SCS. can be removed when scs use v2\n */\nexport default (\n persons: Extract<CoreTypes.Mixed.Person, { id: string }>[],\n belongsTo?: Extract<CoreTypes.Deep.Division, { id: string }>\n): Person[] => {\n if (!Array.isArray(persons))\n throw new Error('(SS12000::To::Persons) Person input is not of array type', { cause: 'invalid_input' });\n\n if (!persons.every((person) => isString(person) || isString(get(person, 'id'))))\n throw new Error('(SS12000::To::Persons) Some persons are missing \"id\" values', { cause: 'invalid_input' });\n\n if (!belongsTo && !persons.every((person) => (isString(person) && belongsTo) || has(person, 'belongsTo')))\n throw new Error('(SS12000::To::Persons) Some top layer persons are missing \"belongsTo\" values', { cause: 'invalid_input' });\n\n return persons.map((person) => ({\n id: `${ getDivisionId(person, belongsTo) }.${ isString(person) ? person : person.id }`,\n ...!isString(person) && {\n meta: {\n created: moment(person.createdAt).toISOString(),\n modified: moment(person.updatedAt).toISOString()\n },\n sex: person.sex ? get(SexMap, person.sex, 'Okänt') : 'Okänt',\n ...omitBy({\n foreignId: person.ids,\n displayName: person.displayName,\n givenName: person.firstName,\n familyName: person.lastName,\n ...person.SSN?.value && { civicNo: person.SSN },\n emails: person.emails,\n phoneNumbers: person.phoneNumbers\n }, isNil)\n }\n }));\n};"],"mappings":";;;;;AAMA,MAAMA,SAA2E;CAAE,KAAK;CAAO,OAAO;CAAU;;;;AAgBhH,uBACE,SACA,cACa;AACb,KAAI,CAAC,MAAM,QAAQ,QAAQ,CACzB,OAAM,IAAI,MAAM,4DAA4D,EAAE,OAAO,iBAAiB,CAAC;AAEzG,KAAI,CAAC,QAAQ,OAAO,WAAW,SAAS,OAAO,IAAI,SAAS,IAAI,QAAQ,KAAK,CAAC,CAAC,CAC7E,OAAM,IAAI,MAAM,iEAA+D,EAAE,OAAO,iBAAiB,CAAC;AAE5G,KAAI,CAAC,aAAa,CAAC,QAAQ,OAAO,WAAY,SAAS,OAAO,IAAI,aAAc,IAAI,QAAQ,YAAY,CAAC,CACvG,OAAM,IAAI,MAAM,kFAAgF,EAAE,OAAO,iBAAiB,CAAC;AAE7H,QAAO,QAAQ,KAAK,YAAY;EAC9B,IAAI,GAAI,cAAc,QAAQ,UAAU,CAAE,GAAI,SAAS,OAAO,GAAG,SAAS,OAAO;EACjF,GAAG,CAAC,SAAS,OAAO,IAAI;GACtB,MAAM;IACJ,SAAU,OAAO,OAAO,UAAU,CAAC,aAAa;IAChD,UAAU,OAAO,OAAO,UAAU,CAAC,aAAa;IACjD;GACD,KAAK,OAAO,MAAM,IAAI,QAAQ,OAAO,KAAK,QAAQ,GAAG;GACrD,GAAG,OAAO;IACR,WAAc,OAAO;IACrB,aAAc,OAAO;IACrB,WAAc,OAAO;IACrB,YAAc,OAAO;IACrB,GAAG,OAAO,KAAK,SAAS,EAAE,SAAS,OAAO,KAAK;IAC/C,QAAc,OAAO;IACrB,cAAc,OAAO;IACtB,EAAE,MAAM;GACV;EACF,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resources.js","names":[],"sources":["../../../src/SS12000/to/resources.ts"],"sourcesContent":["import { isString, has, get, omitBy, isNil } from 'lodash-es';\nimport moment from 'moment';\nimport type { CoreTypes } from '../../core';\nimport type { Resource } from '../types/resources';\nimport { getDivisionId } from './common';\n\n/**\n * @deprecated This is only used for SCS. can be removed when scs use v2\n */\nexport default (\n resources: any[],\n belongsTo?: Extract<CoreTypes.
|
|
1
|
+
{"version":3,"file":"resources.js","names":[],"sources":["../../../src/SS12000/to/resources.ts"],"sourcesContent":["import { isString, has, get, omitBy, isNil } from 'lodash-es';\nimport moment from 'moment';\nimport type { CoreTypes } from '../../core';\nimport type { Resource } from '../types/resources';\nimport { getDivisionId } from './common';\n\n/**\n * @deprecated This is only used for SCS. can be removed when scs use v2\n */\nexport default (\n resources: any[],\n belongsTo?: Extract<CoreTypes.Deep.Division, { id: string }>\n): Resource[] => {\n if (!Array.isArray(resources))\n throw new Error('(SS12000::To::Resources) Resources input is not of array type', { cause: 'invalid_input' });\n\n if (!resources.every((resource) => isString(resource) || isString(get(resource, 'id'))))\n throw new Error('(SS12000::To::Resources) Some resources are missing \"id\" values', { cause: 'invalid_input' });\n\n if (!belongsTo && !resources.every((resource) => (isString(resource) && belongsTo) || has(resource, 'belongsTo')))\n throw new Error('(SS12000::To::Resources) Some top layer resources are missing \"belongsTo\" values', { cause: 'invalid_input' });\n\n return resources.map((resource) => ({\n id: `${ getDivisionId(resource, belongsTo) }.${ isString(resource) ? resource : resource.id }`,\n ...!isString(resource) && {\n meta: {\n created: moment(resource.createdAt).toISOString(),\n modified: moment(resource.updatedAt).toISOString()\n },\n /*\n Optionally add the following properties\n */\n\n ...omitBy({\n foreignId: resource.ids,\n }, isNil)\n }\n }));\n};\n"],"mappings":";;;;;;;;AASA,yBACE,WACA,cACe;AACf,KAAI,CAAC,MAAM,QAAQ,UAAU,CAC3B,OAAM,IAAI,MAAM,iEAAiE,EAAE,OAAO,iBAAiB,CAAC;AAE9G,KAAI,CAAC,UAAU,OAAO,aAAa,SAAS,SAAS,IAAI,SAAS,IAAI,UAAU,KAAK,CAAC,CAAC,CACrF,OAAM,IAAI,MAAM,qEAAmE,EAAE,OAAO,iBAAiB,CAAC;AAEhH,KAAI,CAAC,aAAa,CAAC,UAAU,OAAO,aAAc,SAAS,SAAS,IAAI,aAAc,IAAI,UAAU,YAAY,CAAC,CAC/G,OAAM,IAAI,MAAM,sFAAoF,EAAE,OAAO,iBAAiB,CAAC;AAEjI,QAAO,UAAU,KAAK,cAAc;EAClC,IAAI,GAAI,cAAc,UAAU,UAAU,CAAE,GAAI,SAAS,SAAS,GAAG,WAAW,SAAS;EACzF,GAAG,CAAC,SAAS,SAAS,IAAI;GACxB,MAAM;IACJ,SAAU,OAAO,SAAS,UAAU,CAAC,aAAa;IAClD,UAAU,OAAO,SAAS,UAAU,CAAC,aAAa;IACnD;GAKD,GAAG,OAAO,EACR,WAAW,SAAS,KACrB,EAAE,MAAM;GACV;EACF,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rooms.js","names":[],"sources":["../../../src/SS12000/to/rooms.ts"],"sourcesContent":["import { isString, has, get, omitBy, isNil } from 'lodash-es';\nimport moment from 'moment';\nimport type { CoreTypes } from '../../core';\nimport type { Room } from '../types/rooms';\nimport { getDivisionId } from './common';\n\n/**\n * @deprecated This is only used for SCS. can be removed when scs use v2\n */\nexport default (\n locations: (Extract<CoreTypes.
|
|
1
|
+
{"version":3,"file":"rooms.js","names":[],"sources":["../../../src/SS12000/to/rooms.ts"],"sourcesContent":["import { isString, has, get, omitBy, isNil } from 'lodash-es';\nimport moment from 'moment';\nimport type { CoreTypes } from '../../core';\nimport type { Room } from '../types/rooms';\nimport { getDivisionId } from './common';\n\n/**\n * @deprecated This is only used for SCS. can be removed when scs use v2\n */\nexport default (\n locations: (Extract<CoreTypes.Mixed.Location, { id: string }> | string)[],\n belongsTo?: Extract<CoreTypes.Deep.Division, { id: string }>\n): Room[] => {\n if (!Array.isArray(locations))\n throw new Error('(SS12000::To::Room) Room input is not of array type', { cause: 'invalid_input' });\n\n if (!locations.every((location) => isString(location) || isString(get(location, 'id'))))\n throw new Error('(SS12000::To::Room) Some locations are missing \"id\" values', { cause: 'invalid_input' });\n\n if (!belongsTo && !locations.every((location) => (isString(location) && belongsTo) || has(location, 'belongsTo')))\n throw new Error('(SS12000::To::Room) Some top layer locations are missing \"belongsTo\" values', { cause: 'invalid_input' });\n\n return locations.map((location) => ({\n id: `${ getDivisionId(location, belongsTo) }.${ isString(location) ? location : location.id }`,\n ...!isString(location) && {\n meta: {\n created: moment(location.createdAt).toISOString(),\n modified: moment(location.updatedAt).toISOString()\n },\n ...omitBy({\n foreignId: location.ids,\n displayName: location.displayName,\n seats: location.maximumCapacity,\n tags: location.tags,\n }, isNil),\n }\n }));\n};"],"mappings":";;;;;;;;AASA,qBACE,WACA,cACW;AACX,KAAI,CAAC,MAAM,QAAQ,UAAU,CAC3B,OAAM,IAAI,MAAM,uDAAuD,EAAE,OAAO,iBAAiB,CAAC;AAEpG,KAAI,CAAC,UAAU,OAAO,aAAa,SAAS,SAAS,IAAI,SAAS,IAAI,UAAU,KAAK,CAAC,CAAC,CACrF,OAAM,IAAI,MAAM,gEAA8D,EAAE,OAAO,iBAAiB,CAAC;AAE3G,KAAI,CAAC,aAAa,CAAC,UAAU,OAAO,aAAc,SAAS,SAAS,IAAI,aAAc,IAAI,UAAU,YAAY,CAAC,CAC/G,OAAM,IAAI,MAAM,iFAA+E,EAAE,OAAO,iBAAiB,CAAC;AAE5H,QAAO,UAAU,KAAK,cAAc;EAClC,IAAI,GAAI,cAAc,UAAU,UAAU,CAAE,GAAI,SAAS,SAAS,GAAG,WAAW,SAAS;EACzF,GAAG,CAAC,SAAS,SAAS,IAAI;GACxB,MAAM;IACJ,SAAU,OAAO,SAAS,UAAU,CAAC,aAAa;IAClD,UAAU,OAAO,SAAS,UAAU,CAAC,aAAa;IACnD;GACD,GAAG,OAAO;IACR,WAAa,SAAS;IACtB,aAAa,SAAS;IACtB,OAAa,SAAS;IACtB,MAAa,SAAS;IACvB,EAAE,MAAM;GACV;EACF,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syllabuses.js","names":[],"sources":["../../../src/SS12000/to/syllabuses.ts"],"sourcesContent":["import { isString, has, get, omitBy, isNil } from 'lodash-es';\nimport moment from 'moment';\nimport type { CoreTypes } from '../../core';\nimport type { Syllabus } from '../types/syllabus';\nimport { getDivisionId } from './common';\n\n/**\n * @deprecated This is only used for SCS. can be removed when scs use v2\n */\nexport default (\n syllabuses: (Extract<CoreTypes.
|
|
1
|
+
{"version":3,"file":"syllabuses.js","names":[],"sources":["../../../src/SS12000/to/syllabuses.ts"],"sourcesContent":["import { isString, has, get, omitBy, isNil } from 'lodash-es';\nimport moment from 'moment';\nimport type { CoreTypes } from '../../core';\nimport type { Syllabus } from '../types/syllabus';\nimport { getDivisionId } from './common';\n\n/**\n * @deprecated This is only used for SCS. can be removed when scs use v2\n */\nexport default (\n syllabuses: (Extract<CoreTypes.Mixed.Syllabus, { id: string }> | string)[],\n belongsTo?: Extract<CoreTypes.Deep.Division, { id: string }>\n): Syllabus[] => {\n if (!Array.isArray(syllabuses))\n throw new Error('(SS12000::To::Syllabus) Syllabus input is not of array type', { cause: 'invalid_input' });\n\n if (!syllabuses.every((location) => isString(location) || isString(get(location, 'id'))))\n throw new Error('(SS12000::To::Syllabus) Some syllabuses are missing \"id\" values', { cause: 'invalid_input' });\n\n if (!belongsTo && !syllabuses.every((location) => (isString(location) && belongsTo) || has(location, 'belongsTo')))\n throw new Error('(SS12000::To::Syllabus) Some top layer syllabuses are missing \"belongsTo\" values', { cause: 'invalid_input' });\n\n return syllabuses.map((syllabus) => ({\n id: `${ getDivisionId(syllabus, belongsTo) }.${ isString(syllabus) ? syllabus : syllabus.id }`,\n ...!isString(syllabus) && {\n meta: {\n created: moment(syllabus.createdAt).toISOString(),\n modified: moment(syllabus.updatedAt).toISOString()\n },\n ...omitBy({\n foreignId: syllabus.ids,\n schoolType: syllabus.schoolType,\n subjectDesignation: syllabus.subjectDesignation,\n subjectCode: syllabus.subjectCode,\n subjectName: syllabus.subjectName,\n official: syllabus.official,\n }, isNil),\n }\n }));\n};"],"mappings":";;;;;;;;AASA,0BACE,YACA,cACe;AACf,KAAI,CAAC,MAAM,QAAQ,WAAW,CAC5B,OAAM,IAAI,MAAM,+DAA+D,EAAE,OAAO,iBAAiB,CAAC;AAE5G,KAAI,CAAC,WAAW,OAAO,aAAa,SAAS,SAAS,IAAI,SAAS,IAAI,UAAU,KAAK,CAAC,CAAC,CACtF,OAAM,IAAI,MAAM,qEAAmE,EAAE,OAAO,iBAAiB,CAAC;AAEhH,KAAI,CAAC,aAAa,CAAC,WAAW,OAAO,aAAc,SAAS,SAAS,IAAI,aAAc,IAAI,UAAU,YAAY,CAAC,CAChH,OAAM,IAAI,MAAM,sFAAoF,EAAE,OAAO,iBAAiB,CAAC;AAEjI,QAAO,WAAW,KAAK,cAAc;EACnC,IAAI,GAAI,cAAc,UAAU,UAAU,CAAE,GAAI,SAAS,SAAS,GAAG,WAAW,SAAS;EACzF,GAAG,CAAC,SAAS,SAAS,IAAI;GACxB,MAAM;IACJ,SAAU,OAAO,SAAS,UAAU,CAAC,aAAa;IAClD,UAAU,OAAO,SAAS,UAAU,CAAC,aAAa;IACnD;GACD,GAAG,OAAO;IACR,WAAoB,SAAS;IAC7B,YAAoB,SAAS;IAC7B,oBAAoB,SAAS;IAC7B,aAAoB,SAAS;IAC7B,aAAoB,SAAS;IAC7B,UAAoB,SAAS;IAC9B,EAAE,MAAM;GACV;EACF,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_schedules"],"sources":["../../../../src/SchoolSoft/api/from/index.ts"],"sourcesContent":["import type { FromInterface } from '../../../common/types';\nimport _schedules from './schedules';\n\nexport default {\n schedules: _schedules\n} satisfies FromInterface;"],"mappings":";;;AAGA,mBAAe,EACb,WAAWA"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["_schedules"],"sources":["../../../../src/SchoolSoft/api/from/index.ts"],"sourcesContent":["import type { FromInterface } from '../../../common/types';\nimport _schedules from './schedules';\n\nexport default {\n schedules: _schedules\n} satisfies FromInterface;"],"mappings":";;;AAGA,mBAAe,EACb,WAAWA,mBACZ"}
|
|
@@ -115,7 +115,7 @@ var schedules_default = (data) => {
|
|
|
115
115
|
const id = initialTeacherMap.get(y)?.ids;
|
|
116
116
|
if (id) teacherSet.add(id);
|
|
117
117
|
});
|
|
118
|
-
const teachers
|
|
118
|
+
const teachers = [...teacherSet].map((to) => ({ to }));
|
|
119
119
|
const scheduledGroupIds = [];
|
|
120
120
|
const groupSet = /* @__PURE__ */ new Set();
|
|
121
121
|
split(x.group).forEach((y) => {
|
|
@@ -131,9 +131,9 @@ var schedules_default = (data) => {
|
|
|
131
131
|
course.groups?.forEach((z) => groupSet.add(z.to.toString()));
|
|
132
132
|
}
|
|
133
133
|
});
|
|
134
|
-
const groups
|
|
135
|
-
const key = courseMapKey(x.subject, groups
|
|
136
|
-
if (groups
|
|
134
|
+
const groups = [...groupSet].map((to) => ({ to }));
|
|
135
|
+
const key = courseMapKey(x.subject, groups.map(({ to }) => to), teachers.map(({ to }) => to));
|
|
136
|
+
if (groups.length && teachers.length && !courseMap.has(key)) {
|
|
137
137
|
const ids = scheduledGroupIds.join(sep);
|
|
138
138
|
courseMap.set(key, {
|
|
139
139
|
ids,
|
|
@@ -144,16 +144,12 @@ var schedules_default = (data) => {
|
|
|
144
144
|
});
|
|
145
145
|
}
|
|
146
146
|
});
|
|
147
|
-
const teachers = [...initialTeacherMap.values()];
|
|
148
|
-
const groups = [...nameGroupMap.values()];
|
|
149
|
-
const courses = [...courseMap.values()];
|
|
150
|
-
const events = [];
|
|
151
147
|
return {
|
|
152
148
|
locations,
|
|
153
|
-
teachers,
|
|
154
|
-
groups,
|
|
155
|
-
courses,
|
|
156
|
-
events,
|
|
149
|
+
teachers: [...initialTeacherMap.values()],
|
|
150
|
+
groups: [...nameGroupMap.values()],
|
|
151
|
+
courses: [...courseMap.values()],
|
|
152
|
+
events: [],
|
|
157
153
|
persons,
|
|
158
154
|
meta: {
|
|
159
155
|
...errors.length ? { errors } : {},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schedules.js","names":["errors: string[]","warnings: string[]","x","course: OutTypes.course","teachers","scheduledGroupIds: string[]","groups","events: OutTypes.event[]"],"sources":["../../../../src/SchoolSoft/api/from/schedules.ts"],"sourcesContent":["import type { CoreTypes } from '../../../core';\nimport type { Schedule } from '../types/schedule';\nimport type { Vertex } from '../../../core/types/common';\n\nconst sep = ',';\nfunction split (val: string): string[] {\n return val.split(sep)\n .map(x => x.trim())\n .filter(x => x.length);\n}\n\nfunction courseMapKey (\n subject: string | undefined,\n groups: string[],\n teachers: string[]\n): string {\n return JSON.stringify({ s: subject, g: groups.sort(), t: teachers.sort() });\n}\n\nnamespace OutTypes {\n export type event = CoreTypes.serializedWithoutInternalId.event & Required<Pick<Vertex, 'ids'>>;\n export type course = CoreTypes.serializedWithoutInternalId.course & Required<Pick<Vertex, 'ids'>>;\n export type location = CoreTypes.serializedWithoutInternalId.location & Required<Pick<Vertex, 'ids'>>;\n export type group = CoreTypes.serializedWithoutInternalId.group & Required<Pick<Vertex, 'ids'>>;\n export type person = CoreTypes.serializedWithoutInternalId.person & Required<Pick<Vertex, 'ids'>>;\n export type teacher = CoreTypes.serializedWithoutInternalId.teacher & Required<Pick<Vertex, 'ids'>>;\n}\ntype Out = {\n locations: OutTypes.location[];\n teachers: OutTypes.teacher[];\n groups: OutTypes.group[];\n courses: OutTypes.course[];\n events: OutTypes.event[];\n persons: OutTypes.person[];\n\n meta: {\n errors?: string[];\n warnings?: string[];\n };\n};\n\nexport default (\n data: Schedule\n): Out => {\n\n // gather all import related warnings/errors\n const errors: string[] = [];\n const warnings: string[] = [];\n\n ////\n //// persons\n ////\n const persons = data.persons\n .map((x): OutTypes.person => ({\n ids: x.id,\n //group: x.class, only name of class\n firstName: x.fname,\n lastName: x.lname,\n sex: ['m', 'p'].includes(x.sex) ? 'Man' : (['f', 'w'].includes(x.sex) ? 'Woman' : undefined),\n ...x.socialnumber && {\n SSN: {\n value: x.socialnumber,\n nationality: 'SE'\n }\n },\n ...x.email && {\n emails: [\n {\n value: x.email,\n type: 'organization'\n }\n ]\n }\n }));\n\n ////\n //// locations\n ////\n const locations = data.locations\n .map((x): OutTypes.location => ({\n ids: x.id,\n displayName: x.name\n }));\n\n\n ////\n //// teachers\n ////\n const initialTeacherMap = new Map(data.teachers\n .map((x): undefined | [string, OutTypes.location] => {\n // must be active\n if (x.active != '1') return;\n\n // ensure the initials to be unique\n if (initialTeacherMap.has(x.initial)) {\n warnings.push(`There already exists an active teacher with the initial \"${x.initial}\".`);\n return;\n }\n\n return [x.initial, {\n ids: x.id,\n displayName: x.fname + ' ' + x.lname\n }];\n })\n .filter(x => x != null)\n );\n\n\n\n ////\n //// groups\n ////\n const studentGroupMap = new Map<string, string>();\n const nameGroupMap = new Map<string, OutTypes.group>();\n data.groups.forEach(x => {\n const name = x.name.trim();\n\n // must be active\n if (x.active != '1') return;\n\n // must be a class type\n if (x.classtype != '1') return;\n\n // ensure the name to be unique\n if (nameGroupMap.has(name)) {\n warnings.push(`There already exists an active group with the name \"${name}\".`);\n return;\n }\n\n // add to student group map\n const members = split(x.studentid).filter(x => x);\n\n members.forEach(id => {\n if (studentGroupMap.has(id)) {\n errors.push(`The student with id \"${id}\" does already belong to a different group.`);\n return;\n }\n\n studentGroupMap.set(id, x.id);\n });\n\n // add group\n nameGroupMap.set(name, {\n ids: x.id,\n displayName: name,\n species: 'class',\n members\n });\n });\n\n\n ////\n //// create \"scheduled group\" to subject map\n ////\n const groupSubjectMap = new Map<string, string>();\n data.lessons.forEach(x => {\n if (x.subject) {\n groupSubjectMap.set(x.group.trim(), x.subject);\n }\n });\n\n\n ////\n //// courses\n ////\n const courseMap = new Map<string, OutTypes.course>();\n const nameCourseMap = new Map<string, OutTypes.course>();\n data.groups.forEach(x => {\n const name = x.name.trim();\n\n // must be active\n if (x.active != '1') return;\n\n // must be a course type\n if (x.classtype == '1') return;\n\n // find all groups connected to the course\n const groupSet = new Set<string>();\n split(x.studentid)\n .filter(x => x)\n .map(id => {\n const group = studentGroupMap.get(id);\n if (!group) {\n errors.push(`The student with id \"${id}\" does not belong to a group.`);\n return;\n }\n groupSet.add(group);\n });\n\n // find all teachers\n const teacherSet = new Set<string>();\n split(x.teacher)\n .filter(x => x)\n .map(initial => {\n const teacher = initialTeacherMap.get(initial);\n if (!teacher) {\n errors.push(`The teacher with initial \"${initial}\" does not exist.`);\n return;\n }\n\n teacherSet.add(teacher.ids);\n });\n\n // try to figure out the subject from the group name via its lessons\n const subject = groupSubjectMap.get(name);\n if (!subject) {\n warnings.push(`Could not determine the subject of the course \"${name}\" (${x.id}).`);\n }\n\n\n // ensure the name to be unique\n if (nameGroupMap.has(name)) {\n warnings.push(`There already exists an active group with the name \"${name}\".`);\n return;\n }\n\n // add course\n const course: OutTypes.course = {\n ids: x.id,\n displayName: name,\n // groups: [...groupSet].map(to => ({ to })),\n // teachers: [...teacherSet].map(to => ({ to })),\n ...(subject && { subject })\n };\n nameCourseMap.set(name, course);\n courseMap.set(courseMapKey(course.subject, [...groupSet], [...teacherSet]), course);\n });\n\n\n ////\n //// load further courses from lessons\n ////\n data.lessons.forEach(x => {\n\n // fetch its teachers\n const teacherSet = new Set<string>();\n split(x.teacher)\n .forEach(y => {\n const id = initialTeacherMap.get(y)?.ids;\n if (id) teacherSet.add(id);\n });\n const teachers = [...teacherSet].map(to => ({ to }));\n\n // fetch its groups\n const scheduledGroupIds: string[] = [];\n const groupSet = new Set<string>();\n split(x.group)\n .forEach(y => {\n // is group\n const id = nameGroupMap.get(y)?.ids;\n if (id) {\n scheduledGroupIds.push(id);\n groupSet.add(id);\n return;\n }\n\n // is course\n const course = nameCourseMap.get(y);\n if (course) {\n scheduledGroupIds.push(course.ids);\n course.groups?.forEach(z => groupSet.add(z.to.toString()));\n }\n });\n const groups = [...groupSet].map(to => ({ to }));\n\n // add as course if at least a single groups or teacher is connected\n const key = courseMapKey(x.subject, groups.map(({ to }) => to), teachers.map(({ to }) => to));\n if (groups.length && teachers.length && !courseMap.has(key)) {\n const ids = scheduledGroupIds.join(sep);\n courseMap.set(key, {\n ids: ids,\n displayName: x.subject + ( x.group.length ? ' - ' + x.group : '') + ( x.teacher.length ? ' - ' + x.teacher : ''),\n subject: x.subject,\n groups: [], // Don't assign to course\n teachers: [], // Don't assign to course\n });\n }\n\n });\n\n\n const teachers = [...initialTeacherMap.values()];\n const groups = [...nameGroupMap.values()];\n const courses = [...courseMap.values()];\n const events: OutTypes.event[] = [];\n return { locations, teachers, groups, courses, events, persons,\n meta: {\n ...( errors.length ? { errors: errors } : { } ),\n ...( warnings.length ? { warnings: warnings } : { } )\n }\n };\n};"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schedules.js","names":["errors: string[]","warnings: string[]","x","course: OutTypes.course","scheduledGroupIds: string[]"],"sources":["../../../../src/SchoolSoft/api/from/schedules.ts"],"sourcesContent":["import type { CoreTypes } from '../../../core';\nimport type { PUBLIC_ID_KEY } from '../../../core/interfaces/vertices/util/vertex';\nimport type { Schedule } from '../types/schedule';\n\nconst sep = ',';\nfunction split (val: string): string[] {\n return val.split(sep)\n .map(x => x.trim())\n .filter(x => x.length);\n}\n\nfunction courseMapKey (\n subject: string | undefined,\n groups: string[],\n teachers: string[]\n): string {\n return JSON.stringify({ s: subject, g: groups.sort(), t: teachers.sort() });\n}\n\nnamespace OutTypes {\n export type event = CoreTypes.SerializedWithOptionalId.Event & { [PUBLIC_ID_KEY]: string };\n export type course = CoreTypes.SerializedWithOptionalId.Course & { [PUBLIC_ID_KEY]: string };\n export type location = CoreTypes.SerializedWithOptionalId.Location & { [PUBLIC_ID_KEY]: string };\n export type group = CoreTypes.SerializedWithOptionalId.Group & { [PUBLIC_ID_KEY]: string };\n export type person = CoreTypes.SerializedWithOptionalId.Person & { [PUBLIC_ID_KEY]: string };\n export type teacher = CoreTypes.SerializedWithOptionalId.Teacher & { [PUBLIC_ID_KEY]: string };\n}\ntype Out = {\n locations: OutTypes.location[];\n teachers: OutTypes.teacher[];\n groups: OutTypes.group[];\n courses: OutTypes.course[];\n events: OutTypes.event[];\n persons: OutTypes.person[];\n\n meta: {\n errors?: string[];\n warnings?: string[];\n };\n};\n\nexport default (\n data: Schedule\n): Out => {\n\n // gather all import related warnings/errors\n const errors: string[] = [];\n const warnings: string[] = [];\n\n ////\n //// persons\n ////\n const persons = data.persons\n .map((x): OutTypes.person => ({\n ids: x.id,\n //group: x.class, only name of class\n firstName: x.fname,\n lastName: x.lname,\n sex: ['m', 'p'].includes(x.sex) ? 'Man' : (['f', 'w'].includes(x.sex) ? 'Woman' : undefined),\n ...x.socialnumber && {\n SSN: {\n value: x.socialnumber,\n nationality: 'SE'\n }\n },\n ...x.email && {\n emails: [\n {\n value: x.email,\n type: 'organization'\n }\n ]\n }\n }));\n\n ////\n //// locations\n ////\n const locations = data.locations\n .map((x): OutTypes.location => ({\n ids: x.id,\n displayName: x.name\n }));\n\n\n ////\n //// teachers\n ////\n const initialTeacherMap = new Map(data.teachers\n .map((x): undefined | [string, OutTypes.teacher] => {\n // must be active\n if (x.active != '1') return;\n\n // ensure the initials to be unique\n if (initialTeacherMap.has(x.initial)) {\n warnings.push(`There already exists an active teacher with the initial \"${x.initial}\".`);\n return;\n }\n\n return [x.initial, {\n ids: x.id,\n displayName: x.fname + ' ' + x.lname\n }];\n })\n .filter(x => x != null)\n );\n\n\n\n ////\n //// groups\n ////\n const studentGroupMap = new Map<string, string>();\n const nameGroupMap = new Map<string, OutTypes.group>();\n data.groups.forEach(x => {\n const name = x.name.trim();\n\n // must be active\n if (x.active != '1') return;\n\n // must be a class type\n if (x.classtype != '1') return;\n\n // ensure the name to be unique\n if (nameGroupMap.has(name)) {\n warnings.push(`There already exists an active group with the name \"${name}\".`);\n return;\n }\n\n // add to student group map\n const members = split(x.studentid).filter(x => x);\n\n members.forEach(id => {\n if (studentGroupMap.has(id)) {\n errors.push(`The student with id \"${id}\" does already belong to a different group.`);\n return;\n }\n\n studentGroupMap.set(id, x.id);\n });\n\n // add group\n nameGroupMap.set(name, {\n ids: x.id,\n displayName: name,\n species: 'class',\n members\n });\n });\n\n\n ////\n //// create \"scheduled group\" to subject map\n ////\n const groupSubjectMap = new Map<string, string>();\n data.lessons.forEach(x => {\n if (x.subject) {\n groupSubjectMap.set(x.group.trim(), x.subject);\n }\n });\n\n\n ////\n //// courses\n ////\n const courseMap = new Map<string, OutTypes.course>();\n const nameCourseMap = new Map<string, OutTypes.course>();\n data.groups.forEach(x => {\n const name = x.name.trim();\n\n // must be active\n if (x.active != '1') return;\n\n // must be a course type\n if (x.classtype == '1') return;\n\n // find all groups connected to the course\n const groupSet = new Set<string>();\n split(x.studentid)\n .filter(x => x)\n .map(id => {\n const group = studentGroupMap.get(id);\n if (!group) {\n errors.push(`The student with id \"${id}\" does not belong to a group.`);\n return;\n }\n groupSet.add(group);\n });\n\n // find all teachers\n const teacherSet = new Set<string>();\n split(x.teacher)\n .filter(x => x)\n .map(initial => {\n const teacher = initialTeacherMap.get(initial);\n if (!teacher) {\n errors.push(`The teacher with initial \"${initial}\" does not exist.`);\n return;\n }\n\n teacherSet.add(teacher.ids);\n });\n\n // try to figure out the subject from the group name via its lessons\n const subject = groupSubjectMap.get(name);\n if (!subject) {\n warnings.push(`Could not determine the subject of the course \"${name}\" (${x.id}).`);\n }\n\n\n // ensure the name to be unique\n if (nameGroupMap.has(name)) {\n warnings.push(`There already exists an active group with the name \"${name}\".`);\n return;\n }\n\n // add course\n const course: OutTypes.course = {\n ids: x.id,\n displayName: name,\n // groups: [...groupSet].map(to => ({ to })),\n // teachers: [...teacherSet].map(to => ({ to })),\n ...(subject && { subject })\n };\n nameCourseMap.set(name, course);\n courseMap.set(courseMapKey(course.subject, [...groupSet], [...teacherSet]), course);\n });\n\n\n ////\n //// load further courses from lessons\n ////\n data.lessons.forEach(x => {\n\n // fetch its teachers\n const teacherSet = new Set<string>();\n split(x.teacher)\n .forEach(y => {\n const id = initialTeacherMap.get(y)?.ids;\n if (id) teacherSet.add(id);\n });\n const teachers = [...teacherSet].map(to => ({ to }));\n\n // fetch its groups\n const scheduledGroupIds: string[] = [];\n const groupSet = new Set<string>();\n split(x.group)\n .forEach(y => {\n // is group\n const id = nameGroupMap.get(y)?.ids;\n if (id) {\n scheduledGroupIds.push(id);\n groupSet.add(id);\n return;\n }\n\n // is course\n const course = nameCourseMap.get(y);\n if (course) {\n scheduledGroupIds.push(course.ids);\n course.groups?.forEach(z => groupSet.add(z.to.toString()));\n }\n });\n const groups = [...groupSet].map(to => ({ to }));\n\n // add as course if at least a single groups or teacher is connected\n const key = courseMapKey(x.subject, groups.map(({ to }) => to), teachers.map(({ to }) => to));\n if (groups.length && teachers.length && !courseMap.has(key)) {\n const ids = scheduledGroupIds.join(sep);\n courseMap.set(key, {\n ids: ids,\n displayName: x.subject + ( x.group.length ? ' - ' + x.group : '') + ( x.teacher.length ? ' - ' + x.teacher : ''),\n subject: x.subject,\n groups: [], // Don't assign to course\n teachers: [], // Don't assign to course\n });\n }\n\n });\n\n\n const teachers = [...initialTeacherMap.values()];\n const groups = [...nameGroupMap.values()];\n const courses = [...courseMap.values()];\n const events: OutTypes.event[] = [];\n return { locations, teachers, groups, courses, events, persons,\n meta: {\n ...( errors.length ? { errors: errors } : { } ),\n ...( warnings.length ? { warnings: warnings } : { } )\n }\n };\n};"],"mappings":"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"}
|