@royalschedule/maps 3.3.17 → 4.0.1

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.
Files changed (948) hide show
  1. package/README.md +1 -0
  2. package/dist/Additio/from/courses.js.map +1 -1
  3. package/dist/Additio/from/events.js.map +1 -1
  4. package/dist/Additio/from/groups.js.map +1 -1
  5. package/dist/Additio/from/index.js.map +1 -1
  6. package/dist/Additio/from/locations.js.map +1 -1
  7. package/dist/Additio/from/persons.js +1 -1
  8. package/dist/Additio/from/persons.js.map +1 -1
  9. package/dist/Additio/from/schedules.d.ts +32 -2
  10. package/dist/Additio/from/schedules.js.map +1 -1
  11. package/dist/Additio/from/teachers.js.map +1 -1
  12. package/dist/Additio/index.js.map +1 -1
  13. package/dist/Additio/to/index.d.ts +12 -12
  14. package/dist/Additio/to/index.js.map +1 -1
  15. package/dist/Additio/to/schedules.js +44 -46
  16. package/dist/Additio/to/schedules.js.map +1 -1
  17. package/dist/Additio/types/options.d.ts +8 -0
  18. package/dist/Admentum/from/courses.js.map +1 -1
  19. package/dist/Admentum/from/events.js.map +1 -1
  20. package/dist/Admentum/from/groups.js.map +1 -1
  21. package/dist/Admentum/from/index.js.map +1 -1
  22. package/dist/Admentum/from/locations.js.map +1 -1
  23. package/dist/Admentum/from/persons.js +1 -1
  24. package/dist/Admentum/from/persons.js.map +1 -1
  25. package/dist/Admentum/from/schedules.d.ts +32 -2
  26. package/dist/Admentum/from/schedules.js.map +1 -1
  27. package/dist/Admentum/from/teachers.js.map +1 -1
  28. package/dist/Admentum/index.js.map +1 -1
  29. package/dist/Admentum/to/index.d.ts +11 -10
  30. package/dist/Admentum/to/index.js.map +1 -1
  31. package/dist/Admentum/to/schedules.js +22 -25
  32. package/dist/Admentum/to/schedules.js.map +1 -1
  33. package/dist/Excel/index.d.ts +55 -4
  34. package/dist/Excel/index.js.map +1 -1
  35. package/dist/Excel/v1/from/index.js +7 -7
  36. package/dist/Excel/v1/from/index.js.map +1 -1
  37. package/dist/Excel/v1/index.d.ts +30 -2
  38. package/dist/Excel/v1/index.js.map +1 -1
  39. package/dist/Excel/v2/from/index.js +10 -10
  40. package/dist/Excel/v2/from/index.js.map +1 -1
  41. package/dist/Excel/v2/index.d.ts +53 -2
  42. package/dist/Excel/v2/index.js.map +1 -1
  43. package/dist/IdunSoft/from/courses.js +4 -3
  44. package/dist/IdunSoft/from/courses.js.map +1 -1
  45. package/dist/IdunSoft/from/events.js +43 -32
  46. package/dist/IdunSoft/from/events.js.map +1 -1
  47. package/dist/IdunSoft/from/groups.js +5 -4
  48. package/dist/IdunSoft/from/groups.js.map +1 -1
  49. package/dist/IdunSoft/from/index.js.map +1 -1
  50. package/dist/IdunSoft/from/locations.js +4 -3
  51. package/dist/IdunSoft/from/locations.js.map +1 -1
  52. package/dist/IdunSoft/from/schedules.d.ts +18 -3
  53. package/dist/IdunSoft/from/schedules.js +5 -10
  54. package/dist/IdunSoft/from/schedules.js.map +1 -1
  55. package/dist/IdunSoft/from/teachers.js +4 -3
  56. package/dist/IdunSoft/from/teachers.js.map +1 -1
  57. package/dist/IdunSoft/index.js.map +1 -1
  58. package/dist/IdunSoft/to/index.d.ts +2 -3
  59. package/dist/IdunSoft/to/index.js.map +1 -1
  60. package/dist/IdunSoft/to/schedules.js +22 -21
  61. package/dist/IdunSoft/to/schedules.js.map +1 -1
  62. package/dist/InfoMentor/index.js.map +1 -1
  63. package/dist/InfoMentor/to/index.d.ts +2 -2
  64. package/dist/InfoMentor/to/index.js.map +1 -1
  65. package/dist/InfoMentor/to/schedules.js +26 -27
  66. package/dist/InfoMentor/to/schedules.js.map +1 -1
  67. package/dist/PlanDigital/from/index.js.map +1 -1
  68. package/dist/PlanDigital/from/schedules.js +7 -6
  69. package/dist/PlanDigital/from/schedules.js.map +1 -1
  70. package/dist/PlanDigital/index.d.ts +106 -5
  71. package/dist/PlanDigital/index.js +0 -2
  72. package/dist/PlanDigital/index.js.map +1 -1
  73. package/dist/PlanDigital/types/index.d.ts +12 -11
  74. package/dist/Quiculum/file/to/index.d.ts +1 -1
  75. package/dist/Quiculum/file/to/schedules.js +11 -13
  76. package/dist/Quiculum/file/to/schedules.js.map +1 -1
  77. package/dist/RS/from/division.d.ts +7 -0
  78. package/dist/RS/from/division.js +14 -0
  79. package/dist/RS/from/division.js.map +1 -0
  80. package/dist/RS/from/index.js +12 -0
  81. package/dist/RS/from/index.js.map +1 -0
  82. package/dist/RS/from/schedules.d.ts +8 -0
  83. package/dist/RS/from/schedules.js +36 -0
  84. package/dist/RS/from/schedules.js.map +1 -0
  85. package/dist/RS/index.d.ts +11 -12
  86. package/dist/RS/index.js +4 -8
  87. package/dist/RS/index.js.map +1 -1
  88. package/dist/RS/make-connected.d.ts +24 -0
  89. package/dist/RS/make-connected.js +258 -0
  90. package/dist/RS/make-connected.js.map +1 -0
  91. package/dist/RS/to/index.js +8 -0
  92. package/dist/RS/to/index.js.map +1 -0
  93. package/dist/RS/to/initial-configuration.js +43 -0
  94. package/dist/RS/to/initial-configuration.js.map +1 -0
  95. package/dist/RS/to/input/collections.js +57 -0
  96. package/dist/RS/to/input/collections.js.map +1 -0
  97. package/dist/RS/{v3/to → to/input}/default.js +10 -18
  98. package/dist/RS/to/input/default.js.map +1 -0
  99. package/dist/RS/to/input/dependencies.js +32 -0
  100. package/dist/RS/to/input/dependencies.js.map +1 -0
  101. package/dist/RS/to/input/dynamic-locked-times.js +67 -0
  102. package/dist/RS/to/input/dynamic-locked-times.js.map +1 -0
  103. package/dist/RS/to/input/events.js +84 -0
  104. package/dist/RS/to/input/events.js.map +1 -0
  105. package/dist/RS/to/input/groups.js +36 -0
  106. package/dist/RS/to/input/groups.js.map +1 -0
  107. package/dist/RS/to/input/individuals.js +49 -0
  108. package/dist/RS/to/input/individuals.js.map +1 -0
  109. package/dist/RS/to/input/input.js +40 -0
  110. package/dist/RS/to/input/input.js.map +1 -0
  111. package/dist/RS/to/input/intervals.js +99 -0
  112. package/dist/RS/to/input/intervals.js.map +1 -0
  113. package/dist/RS/to/input/periods.js +44 -0
  114. package/dist/RS/to/input/periods.js.map +1 -0
  115. package/dist/RS/to/input/settings.js +17 -0
  116. package/dist/RS/to/input/settings.js.map +1 -0
  117. package/dist/RS/to/input/teachers.js +36 -0
  118. package/dist/RS/to/input/teachers.js.map +1 -0
  119. package/dist/RS/to/input/util/attach-locked-times.js +27 -0
  120. package/dist/RS/to/input/util/attach-locked-times.js.map +1 -0
  121. package/dist/RS/to/input/util/parse-days.js +10 -0
  122. package/dist/RS/to/input/util/parse-days.js.map +1 -0
  123. package/dist/RS/to/input/util/parse-group-references.js +58 -0
  124. package/dist/RS/to/input/util/parse-group-references.js.map +1 -0
  125. package/dist/RS/to/input/util/parse-intervals.js +55 -0
  126. package/dist/RS/to/input/util/parse-intervals.js.map +1 -0
  127. package/dist/RS/to/input/util/parse-location-references.js +31 -0
  128. package/dist/RS/to/input/util/parse-location-references.js.map +1 -0
  129. package/dist/RS/to/input/util/parse-max-working-hours.js +17 -0
  130. package/dist/RS/to/input/util/parse-max-working-hours.js.map +1 -0
  131. package/dist/RS/to/input/util/parse-minimum-break-length.js +19 -0
  132. package/dist/RS/to/input/util/parse-minimum-break-length.js.map +1 -0
  133. package/dist/RS/to/input/util/util.js +61 -0
  134. package/dist/RS/to/input/util/util.js.map +1 -0
  135. package/dist/RS/to/schedules.d.ts +7 -0
  136. package/dist/RS/to/schedules.js +40 -0
  137. package/dist/RS/to/schedules.js.map +1 -0
  138. package/dist/RS/{v3/types → types}/algorithm-parameters.d.ts +1 -1
  139. package/dist/RS/types/collections.d.ts +26 -0
  140. package/dist/RS/types/configurations.d.ts +10 -0
  141. package/dist/RS/{v3/types → types}/default.d.ts +4 -5
  142. package/dist/RS/types/dependencies.d.ts +16 -0
  143. package/dist/RS/types/event-configuration.d.ts +20 -0
  144. package/dist/RS/types/events.d.ts +27 -0
  145. package/dist/RS/{v2/types → types}/groups.d.ts +13 -12
  146. package/dist/RS/types/index.d.ts +45 -0
  147. package/dist/RS/types/individuals.d.ts +16 -0
  148. package/dist/RS/{v2/types → types}/locked-times.d.ts +2 -1
  149. package/dist/RS/types/root-intervals.d.ts +10 -0
  150. package/dist/RS/types/schedule-data.d.ts +16 -0
  151. package/dist/RS/{v2/types → types}/settings.d.ts +1 -1
  152. package/dist/RS/types/shared.d.ts +27 -0
  153. package/dist/RS/types/to.d.ts +59 -0
  154. package/dist/SchoolSoft/api/from/index.js.map +1 -1
  155. package/dist/SchoolSoft/api/from/schedules.js +31 -37
  156. package/dist/SchoolSoft/api/from/schedules.js.map +1 -1
  157. package/dist/SchoolSoft/api/index.d.ts +14 -2
  158. package/dist/SchoolSoft/api/index.js.map +1 -1
  159. package/dist/SchoolSoft/file/from/index.js.map +1 -1
  160. package/dist/SchoolSoft/file/from/schedules.js +36 -46
  161. package/dist/SchoolSoft/file/from/schedules.js.map +1 -1
  162. package/dist/SchoolSoft/file/index.d.ts +2 -3
  163. package/dist/SchoolSoft/file/index.js.map +1 -1
  164. package/dist/SchoolSoft/file/to/index.d.ts +6 -13
  165. package/dist/SchoolSoft/file/to/schedules.js +40 -42
  166. package/dist/SchoolSoft/file/to/schedules.js.map +1 -1
  167. package/dist/SchoolSoft/index.d.ts +2 -3
  168. package/dist/SchoolSoft/index.js.map +1 -1
  169. package/dist/Schoolity/txt/index.js.map +1 -1
  170. package/dist/Schoolity/txt/to/index.d.ts +3 -3
  171. package/dist/Schoolity/txt/to/index.js.map +1 -1
  172. package/dist/Schoolity/txt/to/schedules.js +78 -96
  173. package/dist/Schoolity/txt/to/schedules.js.map +1 -1
  174. package/dist/Skola24/index.js.map +1 -1
  175. package/dist/Skola24/mdb/from/course-and-events.js +36 -29
  176. package/dist/Skola24/mdb/from/course-and-events.js.map +1 -1
  177. package/dist/Skola24/mdb/from/groups.js.map +1 -1
  178. package/dist/Skola24/mdb/from/index.js.map +1 -1
  179. package/dist/Skola24/mdb/from/locations.js.map +1 -1
  180. package/dist/Skola24/mdb/from/schedule.d.ts +21 -3
  181. package/dist/Skola24/mdb/from/schedule.js +15 -17
  182. package/dist/Skola24/mdb/from/schedule.js.map +1 -1
  183. package/dist/Skola24/mdb/from/teachers.js.map +1 -1
  184. package/dist/Skola24/mdb/index.js.map +1 -1
  185. package/dist/Skola24/mdb/types/index.d.ts +7 -0
  186. package/dist/Skola24/txt/from/calendar-exceptions.js.map +1 -1
  187. package/dist/Skola24/txt/from/division.js.map +1 -1
  188. package/dist/Skola24/txt/from/index.js.map +1 -1
  189. package/dist/Skola24/txt/from/period.js.map +1 -1
  190. package/dist/Skola24/txt/from/schedules.d.ts +16 -0
  191. package/dist/Skola24/txt/from/schedules.js +90 -80
  192. package/dist/Skola24/txt/from/schedules.js.map +1 -1
  193. package/dist/Skola24/txt/index.d.ts +17 -5
  194. package/dist/Skola24/txt/index.js.map +1 -1
  195. package/dist/Skola24/txt/to/index.d.ts +3 -3
  196. package/dist/Skola24/txt/to/index.js.map +1 -1
  197. package/dist/Skola24/txt/to/schedules.js +76 -91
  198. package/dist/Skola24/txt/to/schedules.js.map +1 -1
  199. package/dist/Skola24/txt/types/index.d.ts +17 -1
  200. package/dist/common/constants.js +2 -2
  201. package/dist/common/constants.js.map +1 -1
  202. package/dist/common/functions.js +16 -21
  203. package/dist/common/functions.js.map +1 -1
  204. package/dist/common/get-date.js +5 -6
  205. package/dist/common/get-date.js.map +1 -1
  206. package/dist/common/make-chainable/index.js +36 -0
  207. package/dist/common/make-chainable/index.js.map +1 -0
  208. package/dist/common/types.d.ts +19 -0
  209. package/dist/core/from/courses.js +12 -0
  210. package/dist/core/from/courses.js.map +1 -0
  211. package/dist/core/from/events.js +13 -0
  212. package/dist/core/from/events.js.map +1 -0
  213. package/dist/core/from/exceptions.js +12 -0
  214. package/dist/core/from/exceptions.js.map +1 -0
  215. package/dist/core/from/groups.js +12 -0
  216. package/dist/core/from/groups.js.map +1 -0
  217. package/dist/core/{v2/from → from}/index.js +1 -1
  218. package/dist/core/from/index.js.map +1 -0
  219. package/dist/core/from/locations.js +12 -0
  220. package/dist/core/from/locations.js.map +1 -0
  221. package/dist/core/from/locked-times.js +12 -0
  222. package/dist/core/from/locked-times.js.map +1 -0
  223. package/dist/core/from/overlap-groups.js +12 -0
  224. package/dist/core/from/overlap-groups.js.map +1 -0
  225. package/dist/core/from/periods.js +12 -0
  226. package/dist/core/from/periods.js.map +1 -0
  227. package/dist/core/from/persons.js +12 -0
  228. package/dist/core/from/persons.js.map +1 -0
  229. package/dist/core/from/root-intervals.js +12 -0
  230. package/dist/core/from/root-intervals.js.map +1 -0
  231. package/dist/core/from/schedules.d.ts +7 -0
  232. package/dist/core/from/schedules.js +35 -0
  233. package/dist/core/from/schedules.js.map +1 -0
  234. package/dist/core/{v2/from → from}/syllabuses.js +1 -1
  235. package/dist/core/from/syllabuses.js.map +1 -0
  236. package/dist/core/from/teachers.js +12 -0
  237. package/dist/core/from/teachers.js.map +1 -0
  238. package/dist/core/index.d.ts +6 -12
  239. package/dist/core/index.js +4 -6
  240. package/dist/core/index.js.map +1 -1
  241. package/dist/core/to/courses.js +43 -0
  242. package/dist/core/to/courses.js.map +1 -0
  243. package/dist/core/to/division.js +10 -0
  244. package/dist/core/to/division.js.map +1 -0
  245. package/dist/core/to/events.js +43 -0
  246. package/dist/core/to/events.js.map +1 -0
  247. package/dist/core/to/exceptions.js +27 -0
  248. package/dist/core/to/exceptions.js.map +1 -0
  249. package/dist/core/to/groups.js +23 -0
  250. package/dist/core/to/groups.js.map +1 -0
  251. package/dist/core/{v1/to → to}/index.d.ts +1 -1
  252. package/dist/{RS/v3 → core}/to/index.js +1 -1
  253. package/dist/core/to/index.js.map +1 -0
  254. package/dist/core/to/locations.js +19 -0
  255. package/dist/core/to/locations.js.map +1 -0
  256. package/dist/core/to/locked-times.js +21 -0
  257. package/dist/core/to/locked-times.js.map +1 -0
  258. package/dist/core/to/overlap-groups.js +28 -0
  259. package/dist/core/to/overlap-groups.js.map +1 -0
  260. package/dist/core/to/periods.js +17 -0
  261. package/dist/core/to/periods.js.map +1 -0
  262. package/dist/core/to/persons.js +23 -0
  263. package/dist/core/to/persons.js.map +1 -0
  264. package/dist/core/to/root-intervals.js +17 -0
  265. package/dist/core/to/root-intervals.js.map +1 -0
  266. package/dist/core/to/schedules.d.ts +44 -0
  267. package/dist/core/to/schedules.js +40 -0
  268. package/dist/core/to/schedules.js.map +1 -0
  269. package/dist/core/to/settings.js +16 -0
  270. package/dist/core/to/settings.js.map +1 -0
  271. package/dist/core/to/syllabuses.js +17 -0
  272. package/dist/core/to/syllabuses.js.map +1 -0
  273. package/dist/core/to/teachers.js +24 -0
  274. package/dist/core/to/teachers.js.map +1 -0
  275. package/dist/core/to/util.d.ts +14 -0
  276. package/dist/core/to/util.js +22 -0
  277. package/dist/core/to/util.js.map +1 -0
  278. package/dist/core/types/areas.d.ts +10 -0
  279. package/dist/core/types/common/break-lengths.d.ts +5 -0
  280. package/dist/core/types/common/days.d.ts +8 -0
  281. package/dist/core/types/common/index.d.ts +45 -0
  282. package/dist/core/types/common/intervals.d.ts +20 -0
  283. package/dist/core/types/common/maximum-schedule-span.d.ts +19 -0
  284. package/dist/core/{v2/types → types/common}/meta.d.ts +1 -1
  285. package/dist/core/types/common/planned-schedule-duration.d.ts +13 -0
  286. package/dist/core/types/common/tag.d.ts +9 -0
  287. package/dist/core/types/courses.d.ts +58 -0
  288. package/dist/core/{v2/types → types}/division-settings.d.ts +14 -19
  289. package/dist/core/types/divisions.d.ts +24 -0
  290. package/dist/core/types/events.d.ts +54 -0
  291. package/dist/core/{v2/types → types}/exceptions.d.ts +14 -23
  292. package/dist/core/types/groups.d.ts +41 -0
  293. package/dist/core/types/index.d.ts +117 -15
  294. package/dist/core/types/locations.d.ts +27 -0
  295. package/dist/core/types/locked-times.d.ts +33 -0
  296. package/dist/core/types/overlap-groups.d.ts +14 -0
  297. package/dist/core/types/periods.d.ts +14 -0
  298. package/dist/core/{v2/types → types}/persons.d.ts +13 -22
  299. package/dist/core/types/root-intervals.d.ts +13 -0
  300. package/dist/core/types/schedules.d.ts +44 -0
  301. package/dist/core/types/syllabus.d.ts +18 -0
  302. package/dist/core/{v2/types → types}/teachers.d.ts +20 -30
  303. package/dist/core/util.js +46 -0
  304. package/dist/core/util.js.map +1 -0
  305. package/dist/core/vertex-mapping.d.ts +69 -0
  306. package/dist/identify/constants/index.d.ts +14 -58
  307. package/dist/identify/constants/index.js +7 -72
  308. package/dist/identify/constants/index.js.map +1 -1
  309. package/dist/identify/index.d.ts +1 -1
  310. package/dist/identify/index.js +38 -29
  311. package/dist/identify/index.js.map +1 -1
  312. package/dist/index.d.ts +23 -29
  313. package/dist/index.js +6 -7
  314. package/dist/sdui/from/classes.js.map +1 -1
  315. package/dist/sdui/from/courses.js.map +1 -1
  316. package/dist/sdui/from/holidays.js.map +1 -1
  317. package/dist/sdui/from/hours.js.map +1 -1
  318. package/dist/sdui/from/lessons.js.map +1 -1
  319. package/dist/sdui/from/rooms.js.map +1 -1
  320. package/dist/sdui/from/schedules.d.ts +19 -0
  321. package/dist/sdui/from/schedules.js +3 -3
  322. package/dist/sdui/from/schedules.js.map +1 -1
  323. package/dist/sdui/from/school-years.js.map +1 -1
  324. package/dist/sdui/from/subjects.js.map +1 -1
  325. package/dist/sdui/from/substitution-plans.js.map +1 -1
  326. package/dist/sdui/from/teachers.js.map +1 -1
  327. package/dist/sdui/index.d.ts +19 -11
  328. package/dist/sdui/index.js.map +1 -1
  329. package/dist/sdui/to/classes.js +4 -2
  330. package/dist/sdui/to/classes.js.map +1 -1
  331. package/dist/sdui/to/courses.js +5 -5
  332. package/dist/sdui/to/courses.js.map +1 -1
  333. package/dist/sdui/to/holidays.js +3 -2
  334. package/dist/sdui/to/holidays.js.map +1 -1
  335. package/dist/sdui/to/hours.js +4 -2
  336. package/dist/sdui/to/hours.js.map +1 -1
  337. package/dist/sdui/to/index.d.ts +11 -12
  338. package/dist/sdui/to/lessons.js +10 -9
  339. package/dist/sdui/to/lessons.js.map +1 -1
  340. package/dist/sdui/to/rooms.js +4 -2
  341. package/dist/sdui/to/rooms.js.map +1 -1
  342. package/dist/sdui/to/schedules.js +9 -9
  343. package/dist/sdui/to/schedules.js.map +1 -1
  344. package/dist/sdui/to/school-years.js +4 -3
  345. package/dist/sdui/to/school-years.js.map +1 -1
  346. package/dist/sdui/to/subjects.js.map +1 -1
  347. package/dist/sdui/to/substitution-plans.js +12 -11
  348. package/dist/sdui/to/substitution-plans.js.map +1 -1
  349. package/dist/sdui/to/teachers.js +4 -4
  350. package/dist/sdui/to/teachers.js.map +1 -1
  351. package/dist/sdui/types/index.d.ts +2 -0
  352. package/dist/vKlass/from/index.js +1 -3
  353. package/dist/vKlass/from/index.js.map +1 -1
  354. package/dist/vKlass/from/schedule.d.ts +18 -3
  355. package/dist/vKlass/from/schedule.js +16 -19
  356. package/dist/vKlass/from/schedule.js.map +1 -1
  357. package/dist/vKlass/index.d.ts +6 -4
  358. package/dist/vKlass/index.js.map +1 -1
  359. package/dist/vKlass/to/schedules.d.ts +1 -1
  360. package/dist/vKlass/to/schedules.js +5 -12
  361. package/dist/vKlass/to/schedules.js.map +1 -1
  362. package/dist/vKlass/types/index.d.ts +5 -5
  363. package/package.json +38 -29
  364. package/dist/PlanDigital/to/index.d.ts +0 -10
  365. package/dist/PlanDigital/to/index.js +0 -10
  366. package/dist/PlanDigital/to/index.js.map +0 -1
  367. package/dist/PlanDigital/to/schedules.js +0 -15
  368. package/dist/PlanDigital/to/schedules.js.map +0 -1
  369. package/dist/RS/v0/from/available-dependencies.js +0 -38
  370. package/dist/RS/v0/from/available-dependencies.js.map +0 -1
  371. package/dist/RS/v0/from/break-lengths.js +0 -15
  372. package/dist/RS/v0/from/break-lengths.js.map +0 -1
  373. package/dist/RS/v0/from/course-events.js +0 -68
  374. package/dist/RS/v0/from/course-events.js.map +0 -1
  375. package/dist/RS/v0/from/courses.js +0 -53
  376. package/dist/RS/v0/from/courses.js.map +0 -1
  377. package/dist/RS/v0/from/days.js +0 -14
  378. package/dist/RS/v0/from/days.js.map +0 -1
  379. package/dist/RS/v0/from/dependencies.js +0 -29
  380. package/dist/RS/v0/from/dependencies.js.map +0 -1
  381. package/dist/RS/v0/from/groups.js +0 -32
  382. package/dist/RS/v0/from/groups.js.map +0 -1
  383. package/dist/RS/v0/from/index.js +0 -32
  384. package/dist/RS/v0/from/index.js.map +0 -1
  385. package/dist/RS/v0/from/intervals.js +0 -15
  386. package/dist/RS/v0/from/intervals.js.map +0 -1
  387. package/dist/RS/v0/from/locked-times.js +0 -23
  388. package/dist/RS/v0/from/locked-times.js.map +0 -1
  389. package/dist/RS/v0/from/placements.js +0 -20
  390. package/dist/RS/v0/from/placements.js.map +0 -1
  391. package/dist/RS/v0/from/schedules.js +0 -44
  392. package/dist/RS/v0/from/schedules.js.map +0 -1
  393. package/dist/RS/v0/from/settings.js +0 -24
  394. package/dist/RS/v0/from/settings.js.map +0 -1
  395. package/dist/RS/v0/from/teachers.js +0 -31
  396. package/dist/RS/v0/from/teachers.js.map +0 -1
  397. package/dist/RS/v0/index.d.ts +0 -43
  398. package/dist/RS/v0/index.js +0 -12
  399. package/dist/RS/v0/index.js.map +0 -1
  400. package/dist/RS/v0/to/available-dependencies.js +0 -17
  401. package/dist/RS/v0/to/available-dependencies.js.map +0 -1
  402. package/dist/RS/v0/to/configurations.js +0 -22
  403. package/dist/RS/v0/to/configurations.js.map +0 -1
  404. package/dist/RS/v0/to/constraints.js +0 -34
  405. package/dist/RS/v0/to/constraints.js.map +0 -1
  406. package/dist/RS/v0/to/course-events/days.js +0 -13
  407. package/dist/RS/v0/to/course-events/days.js.map +0 -1
  408. package/dist/RS/v0/to/course-events/dependencies.js +0 -18
  409. package/dist/RS/v0/to/course-events/dependencies.js.map +0 -1
  410. package/dist/RS/v0/to/course-events/groups.js +0 -39
  411. package/dist/RS/v0/to/course-events/groups.js.map +0 -1
  412. package/dist/RS/v0/to/course-events/in-locations.js +0 -17
  413. package/dist/RS/v0/to/course-events/in-locations.js.map +0 -1
  414. package/dist/RS/v0/to/course-events/index.js +0 -52
  415. package/dist/RS/v0/to/course-events/index.js.map +0 -1
  416. package/dist/RS/v0/to/course-events/intervals.js +0 -12
  417. package/dist/RS/v0/to/course-events/intervals.js.map +0 -1
  418. package/dist/RS/v0/to/course-events/meta.js +0 -21
  419. package/dist/RS/v0/to/course-events/meta.js.map +0 -1
  420. package/dist/RS/v0/to/courses.js +0 -56
  421. package/dist/RS/v0/to/courses.js.map +0 -1
  422. package/dist/RS/v0/to/days.js +0 -11
  423. package/dist/RS/v0/to/days.js.map +0 -1
  424. package/dist/RS/v0/to/dependencies.js +0 -26
  425. package/dist/RS/v0/to/dependencies.js.map +0 -1
  426. package/dist/RS/v0/to/groups.js +0 -32
  427. package/dist/RS/v0/to/groups.js.map +0 -1
  428. package/dist/RS/v0/to/index.d.ts +0 -46
  429. package/dist/RS/v0/to/index.js +0 -34
  430. package/dist/RS/v0/to/index.js.map +0 -1
  431. package/dist/RS/v0/to/intervals.js +0 -17
  432. package/dist/RS/v0/to/intervals.js.map +0 -1
  433. package/dist/RS/v0/to/locked-times.js +0 -43
  434. package/dist/RS/v0/to/locked-times.js.map +0 -1
  435. package/dist/RS/v0/to/schedules.js +0 -16
  436. package/dist/RS/v0/to/schedules.js.map +0 -1
  437. package/dist/RS/v0/to/settings.js +0 -28
  438. package/dist/RS/v0/to/settings.js.map +0 -1
  439. package/dist/RS/v0/to/teachers.js +0 -30
  440. package/dist/RS/v0/to/teachers.js.map +0 -1
  441. package/dist/RS/v0/types/areas.d.ts +0 -8
  442. package/dist/RS/v0/types/available-dependencies.d.ts +0 -8
  443. package/dist/RS/v0/types/break-lengths.d.ts +0 -9
  444. package/dist/RS/v0/types/configurations.d.ts +0 -7
  445. package/dist/RS/v0/types/constraints.d.ts +0 -17
  446. package/dist/RS/v0/types/course-events.d.ts +0 -26
  447. package/dist/RS/v0/types/courses.d.ts +0 -27
  448. package/dist/RS/v0/types/days.d.ts +0 -8
  449. package/dist/RS/v0/types/dependencies.d.ts +0 -17
  450. package/dist/RS/v0/types/groups.d.ts +0 -25
  451. package/dist/RS/v0/types/index.d.ts +0 -31
  452. package/dist/RS/v0/types/intervals.d.ts +0 -8
  453. package/dist/RS/v0/types/locked-times.d.ts +0 -11
  454. package/dist/RS/v0/types/out-options.d.ts +0 -13
  455. package/dist/RS/v0/types/placements.d.ts +0 -12
  456. package/dist/RS/v0/types/schedules.d.ts +0 -15
  457. package/dist/RS/v0/types/settings.d.ts +0 -26
  458. package/dist/RS/v1/from/available-dependencies.js +0 -38
  459. package/dist/RS/v1/from/available-dependencies.js.map +0 -1
  460. package/dist/RS/v1/from/break-lengths.js +0 -15
  461. package/dist/RS/v1/from/break-lengths.js.map +0 -1
  462. package/dist/RS/v1/from/collections.js +0 -55
  463. package/dist/RS/v1/from/collections.js.map +0 -1
  464. package/dist/RS/v1/from/course-events.js +0 -65
  465. package/dist/RS/v1/from/course-events.js.map +0 -1
  466. package/dist/RS/v1/from/days.js +0 -14
  467. package/dist/RS/v1/from/days.js.map +0 -1
  468. package/dist/RS/v1/from/dependencies.js +0 -31
  469. package/dist/RS/v1/from/dependencies.js.map +0 -1
  470. package/dist/RS/v1/from/groups.js +0 -34
  471. package/dist/RS/v1/from/groups.js.map +0 -1
  472. package/dist/RS/v1/from/index.js +0 -32
  473. package/dist/RS/v1/from/index.js.map +0 -1
  474. package/dist/RS/v1/from/intervals.js +0 -18
  475. package/dist/RS/v1/from/intervals.js.map +0 -1
  476. package/dist/RS/v1/from/locked-times.js +0 -21
  477. package/dist/RS/v1/from/locked-times.js.map +0 -1
  478. package/dist/RS/v1/from/placements.js +0 -21
  479. package/dist/RS/v1/from/placements.js.map +0 -1
  480. package/dist/RS/v1/from/schedules.js +0 -44
  481. package/dist/RS/v1/from/schedules.js.map +0 -1
  482. package/dist/RS/v1/from/settings.js +0 -25
  483. package/dist/RS/v1/from/settings.js.map +0 -1
  484. package/dist/RS/v1/from/teachers.js +0 -33
  485. package/dist/RS/v1/from/teachers.js.map +0 -1
  486. package/dist/RS/v1/index.d.ts +0 -45
  487. package/dist/RS/v1/index.js +0 -12
  488. package/dist/RS/v1/index.js.map +0 -1
  489. package/dist/RS/v1/to/available-dependencies.js +0 -25
  490. package/dist/RS/v1/to/available-dependencies.js.map +0 -1
  491. package/dist/RS/v1/to/break-lengths.js +0 -19
  492. package/dist/RS/v1/to/break-lengths.js.map +0 -1
  493. package/dist/RS/v1/to/collections.js +0 -51
  494. package/dist/RS/v1/to/collections.js.map +0 -1
  495. package/dist/RS/v1/to/configurations.js +0 -22
  496. package/dist/RS/v1/to/configurations.js.map +0 -1
  497. package/dist/RS/v1/to/constraints.js +0 -26
  498. package/dist/RS/v1/to/constraints.js.map +0 -1
  499. package/dist/RS/v1/to/course-events/days.js +0 -12
  500. package/dist/RS/v1/to/course-events/days.js.map +0 -1
  501. package/dist/RS/v1/to/course-events/dependencies.js +0 -15
  502. package/dist/RS/v1/to/course-events/dependencies.js.map +0 -1
  503. package/dist/RS/v1/to/course-events/groups.js +0 -30
  504. package/dist/RS/v1/to/course-events/groups.js.map +0 -1
  505. package/dist/RS/v1/to/course-events/in-locations.js +0 -17
  506. package/dist/RS/v1/to/course-events/in-locations.js.map +0 -1
  507. package/dist/RS/v1/to/course-events/index.js +0 -47
  508. package/dist/RS/v1/to/course-events/index.js.map +0 -1
  509. package/dist/RS/v1/to/course-events/intervals.js +0 -11
  510. package/dist/RS/v1/to/course-events/intervals.js.map +0 -1
  511. package/dist/RS/v1/to/course-events/meta.js +0 -21
  512. package/dist/RS/v1/to/course-events/meta.js.map +0 -1
  513. package/dist/RS/v1/to/days.js +0 -11
  514. package/dist/RS/v1/to/days.js.map +0 -1
  515. package/dist/RS/v1/to/dependencies.js +0 -28
  516. package/dist/RS/v1/to/dependencies.js.map +0 -1
  517. package/dist/RS/v1/to/groups.js +0 -34
  518. package/dist/RS/v1/to/groups.js.map +0 -1
  519. package/dist/RS/v1/to/index.d.ts +0 -46
  520. package/dist/RS/v1/to/index.js +0 -34
  521. package/dist/RS/v1/to/index.js.map +0 -1
  522. package/dist/RS/v1/to/intervals.js +0 -17
  523. package/dist/RS/v1/to/intervals.js.map +0 -1
  524. package/dist/RS/v1/to/locked-times.js +0 -49
  525. package/dist/RS/v1/to/locked-times.js.map +0 -1
  526. package/dist/RS/v1/to/schedules.js +0 -16
  527. package/dist/RS/v1/to/schedules.js.map +0 -1
  528. package/dist/RS/v1/to/settings.js +0 -34
  529. package/dist/RS/v1/to/settings.js.map +0 -1
  530. package/dist/RS/v1/to/teachers.js +0 -34
  531. package/dist/RS/v1/to/teachers.js.map +0 -1
  532. package/dist/RS/v1/types/areas.d.ts +0 -8
  533. package/dist/RS/v1/types/available-dependencies.d.ts +0 -8
  534. package/dist/RS/v1/types/break-lengths.d.ts +0 -9
  535. package/dist/RS/v1/types/collections.d.ts +0 -27
  536. package/dist/RS/v1/types/configurations.d.ts +0 -10
  537. package/dist/RS/v1/types/constraints.d.ts +0 -17
  538. package/dist/RS/v1/types/course-events.d.ts +0 -26
  539. package/dist/RS/v1/types/days.d.ts +0 -8
  540. package/dist/RS/v1/types/dependencies.d.ts +0 -17
  541. package/dist/RS/v1/types/groups.d.ts +0 -25
  542. package/dist/RS/v1/types/index.d.ts +0 -31
  543. package/dist/RS/v1/types/intervals.d.ts +0 -8
  544. package/dist/RS/v1/types/locked-times.d.ts +0 -11
  545. package/dist/RS/v1/types/out-options.d.ts +0 -11
  546. package/dist/RS/v1/types/placements.d.ts +0 -12
  547. package/dist/RS/v1/types/schedules.d.ts +0 -16
  548. package/dist/RS/v1/types/settings.d.ts +0 -31
  549. package/dist/RS/v2/from/available-dependencies.js +0 -38
  550. package/dist/RS/v2/from/available-dependencies.js.map +0 -1
  551. package/dist/RS/v2/from/break-lengths.js +0 -15
  552. package/dist/RS/v2/from/break-lengths.js.map +0 -1
  553. package/dist/RS/v2/from/collections.js +0 -57
  554. package/dist/RS/v2/from/collections.js.map +0 -1
  555. package/dist/RS/v2/from/course-events.d.ts +0 -12
  556. package/dist/RS/v2/from/course-events.js +0 -67
  557. package/dist/RS/v2/from/course-events.js.map +0 -1
  558. package/dist/RS/v2/from/days.js +0 -14
  559. package/dist/RS/v2/from/days.js.map +0 -1
  560. package/dist/RS/v2/from/dependencies.js +0 -31
  561. package/dist/RS/v2/from/dependencies.js.map +0 -1
  562. package/dist/RS/v2/from/groups.js +0 -35
  563. package/dist/RS/v2/from/groups.js.map +0 -1
  564. package/dist/RS/v2/from/index.js +0 -32
  565. package/dist/RS/v2/from/index.js.map +0 -1
  566. package/dist/RS/v2/from/intervals.js +0 -18
  567. package/dist/RS/v2/from/intervals.js.map +0 -1
  568. package/dist/RS/v2/from/locked-times.js +0 -21
  569. package/dist/RS/v2/from/locked-times.js.map +0 -1
  570. package/dist/RS/v2/from/placements.js +0 -32
  571. package/dist/RS/v2/from/placements.js.map +0 -1
  572. package/dist/RS/v2/from/schedules.js +0 -78
  573. package/dist/RS/v2/from/schedules.js.map +0 -1
  574. package/dist/RS/v2/from/settings.js +0 -31
  575. package/dist/RS/v2/from/settings.js.map +0 -1
  576. package/dist/RS/v2/from/teachers.js +0 -33
  577. package/dist/RS/v2/from/teachers.js.map +0 -1
  578. package/dist/RS/v2/index.d.ts +0 -63
  579. package/dist/RS/v2/index.js +0 -12
  580. package/dist/RS/v2/index.js.map +0 -1
  581. package/dist/RS/v2/to/available-dependencies.js +0 -25
  582. package/dist/RS/v2/to/available-dependencies.js.map +0 -1
  583. package/dist/RS/v2/to/break-lengths.js +0 -19
  584. package/dist/RS/v2/to/break-lengths.js.map +0 -1
  585. package/dist/RS/v2/to/collections.js +0 -60
  586. package/dist/RS/v2/to/collections.js.map +0 -1
  587. package/dist/RS/v2/to/configurations.js +0 -23
  588. package/dist/RS/v2/to/configurations.js.map +0 -1
  589. package/dist/RS/v2/to/constraints.js +0 -88
  590. package/dist/RS/v2/to/constraints.js.map +0 -1
  591. package/dist/RS/v2/to/course-events/days.js +0 -12
  592. package/dist/RS/v2/to/course-events/days.js.map +0 -1
  593. package/dist/RS/v2/to/course-events/dependencies.js +0 -14
  594. package/dist/RS/v2/to/course-events/dependencies.js.map +0 -1
  595. package/dist/RS/v2/to/course-events/groups.js +0 -38
  596. package/dist/RS/v2/to/course-events/groups.js.map +0 -1
  597. package/dist/RS/v2/to/course-events/in-locations.js +0 -18
  598. package/dist/RS/v2/to/course-events/in-locations.js.map +0 -1
  599. package/dist/RS/v2/to/course-events/index.js +0 -56
  600. package/dist/RS/v2/to/course-events/index.js.map +0 -1
  601. package/dist/RS/v2/to/course-events/intervals.js +0 -11
  602. package/dist/RS/v2/to/course-events/intervals.js.map +0 -1
  603. package/dist/RS/v2/to/course-events/meta.js +0 -21
  604. package/dist/RS/v2/to/course-events/meta.js.map +0 -1
  605. package/dist/RS/v2/to/days.js +0 -11
  606. package/dist/RS/v2/to/days.js.map +0 -1
  607. package/dist/RS/v2/to/default.js +0 -36
  608. package/dist/RS/v2/to/default.js.map +0 -1
  609. package/dist/RS/v2/to/dependencies.js +0 -28
  610. package/dist/RS/v2/to/dependencies.js.map +0 -1
  611. package/dist/RS/v2/to/destructure.js +0 -40
  612. package/dist/RS/v2/to/destructure.js.map +0 -1
  613. package/dist/RS/v2/to/dynamic-locked-times.js +0 -57
  614. package/dist/RS/v2/to/dynamic-locked-times.js.map +0 -1
  615. package/dist/RS/v2/to/groups.js +0 -37
  616. package/dist/RS/v2/to/groups.js.map +0 -1
  617. package/dist/RS/v2/to/index.d.ts +0 -44
  618. package/dist/RS/v2/to/index.js +0 -36
  619. package/dist/RS/v2/to/index.js.map +0 -1
  620. package/dist/RS/v2/to/intervals.js +0 -32
  621. package/dist/RS/v2/to/intervals.js.map +0 -1
  622. package/dist/RS/v2/to/locked-times.js +0 -49
  623. package/dist/RS/v2/to/locked-times.js.map +0 -1
  624. package/dist/RS/v2/to/periods.js +0 -48
  625. package/dist/RS/v2/to/periods.js.map +0 -1
  626. package/dist/RS/v2/to/persons.js +0 -23
  627. package/dist/RS/v2/to/persons.js.map +0 -1
  628. package/dist/RS/v2/to/schedules.js +0 -19
  629. package/dist/RS/v2/to/schedules.js.map +0 -1
  630. package/dist/RS/v2/to/settings.js +0 -18
  631. package/dist/RS/v2/to/settings.js.map +0 -1
  632. package/dist/RS/v2/to/teachers.js +0 -37
  633. package/dist/RS/v2/to/teachers.js.map +0 -1
  634. package/dist/RS/v2/types/areas.d.ts +0 -8
  635. package/dist/RS/v2/types/available-dependencies.d.ts +0 -8
  636. package/dist/RS/v2/types/break-lengths.d.ts +0 -9
  637. package/dist/RS/v2/types/collections.d.ts +0 -29
  638. package/dist/RS/v2/types/configurations.d.ts +0 -10
  639. package/dist/RS/v2/types/constraints.d.ts +0 -21
  640. package/dist/RS/v2/types/course-events.d.ts +0 -30
  641. package/dist/RS/v2/types/days.d.ts +0 -8
  642. package/dist/RS/v2/types/default.d.ts +0 -25
  643. package/dist/RS/v2/types/dependencies.d.ts +0 -17
  644. package/dist/RS/v2/types/index.d.ts +0 -33
  645. package/dist/RS/v2/types/intervals.d.ts +0 -9
  646. package/dist/RS/v2/types/out-options.d.ts +0 -11
  647. package/dist/RS/v2/types/placements.d.ts +0 -12
  648. package/dist/RS/v2/types/schedules.d.ts +0 -18
  649. package/dist/RS/v3/from/division.js +0 -14
  650. package/dist/RS/v3/from/division.js.map +0 -1
  651. package/dist/RS/v3/from/index.js +0 -12
  652. package/dist/RS/v3/from/index.js.map +0 -1
  653. package/dist/RS/v3/from/schedules.js +0 -34
  654. package/dist/RS/v3/from/schedules.js.map +0 -1
  655. package/dist/RS/v3/index.d.ts +0 -21
  656. package/dist/RS/v3/index.js +0 -12
  657. package/dist/RS/v3/index.js.map +0 -1
  658. package/dist/RS/v3/to/available-dependencies.js +0 -26
  659. package/dist/RS/v3/to/available-dependencies.js.map +0 -1
  660. package/dist/RS/v3/to/break-lengths.js +0 -19
  661. package/dist/RS/v3/to/break-lengths.js.map +0 -1
  662. package/dist/RS/v3/to/collections.js +0 -56
  663. package/dist/RS/v3/to/collections.js.map +0 -1
  664. package/dist/RS/v3/to/configurations.js +0 -23
  665. package/dist/RS/v3/to/configurations.js.map +0 -1
  666. package/dist/RS/v3/to/constraints.js +0 -77
  667. package/dist/RS/v3/to/constraints.js.map +0 -1
  668. package/dist/RS/v3/to/course-events/days.js +0 -12
  669. package/dist/RS/v3/to/course-events/days.js.map +0 -1
  670. package/dist/RS/v3/to/course-events/dependencies.js +0 -14
  671. package/dist/RS/v3/to/course-events/dependencies.js.map +0 -1
  672. package/dist/RS/v3/to/course-events/groups.js +0 -44
  673. package/dist/RS/v3/to/course-events/groups.js.map +0 -1
  674. package/dist/RS/v3/to/course-events/in-locations.js +0 -18
  675. package/dist/RS/v3/to/course-events/in-locations.js.map +0 -1
  676. package/dist/RS/v3/to/course-events/index.js +0 -84
  677. package/dist/RS/v3/to/course-events/index.js.map +0 -1
  678. package/dist/RS/v3/to/course-events/intervals.js +0 -11
  679. package/dist/RS/v3/to/course-events/intervals.js.map +0 -1
  680. package/dist/RS/v3/to/course-events/meta.js +0 -21
  681. package/dist/RS/v3/to/course-events/meta.js.map +0 -1
  682. package/dist/RS/v3/to/days.js +0 -11
  683. package/dist/RS/v3/to/days.js.map +0 -1
  684. package/dist/RS/v3/to/default.js.map +0 -1
  685. package/dist/RS/v3/to/dependencies.js +0 -31
  686. package/dist/RS/v3/to/dependencies.js.map +0 -1
  687. package/dist/RS/v3/to/destructure.js +0 -33
  688. package/dist/RS/v3/to/destructure.js.map +0 -1
  689. package/dist/RS/v3/to/dynamic-locked-times.js +0 -97
  690. package/dist/RS/v3/to/dynamic-locked-times.js.map +0 -1
  691. package/dist/RS/v3/to/groups.js +0 -36
  692. package/dist/RS/v3/to/groups.js.map +0 -1
  693. package/dist/RS/v3/to/index.d.ts +0 -266
  694. package/dist/RS/v3/to/index.js.map +0 -1
  695. package/dist/RS/v3/to/individuals.js +0 -49
  696. package/dist/RS/v3/to/individuals.js.map +0 -1
  697. package/dist/RS/v3/to/intervals.js +0 -32
  698. package/dist/RS/v3/to/intervals.js.map +0 -1
  699. package/dist/RS/v3/to/locked-times.js +0 -49
  700. package/dist/RS/v3/to/locked-times.js.map +0 -1
  701. package/dist/RS/v3/to/periods.js +0 -48
  702. package/dist/RS/v3/to/periods.js.map +0 -1
  703. package/dist/RS/v3/to/schedules.js +0 -39
  704. package/dist/RS/v3/to/schedules.js.map +0 -1
  705. package/dist/RS/v3/to/settings.js +0 -18
  706. package/dist/RS/v3/to/settings.js.map +0 -1
  707. package/dist/RS/v3/to/teachers.js +0 -36
  708. package/dist/RS/v3/to/teachers.js.map +0 -1
  709. package/dist/RS/v3/to/util.js +0 -32
  710. package/dist/RS/v3/to/util.js.map +0 -1
  711. package/dist/RS/v3/types/areas.d.ts +0 -8
  712. package/dist/RS/v3/types/available-dependencies.d.ts +0 -8
  713. package/dist/RS/v3/types/break-lengths.d.ts +0 -9
  714. package/dist/RS/v3/types/collections.d.ts +0 -31
  715. package/dist/RS/v3/types/configurations.d.ts +0 -10
  716. package/dist/RS/v3/types/constraints.d.ts +0 -25
  717. package/dist/RS/v3/types/course-events.d.ts +0 -32
  718. package/dist/RS/v3/types/days.d.ts +0 -8
  719. package/dist/RS/v3/types/dependencies.d.ts +0 -17
  720. package/dist/RS/v3/types/groups.d.ts +0 -25
  721. package/dist/RS/v3/types/index.d.ts +0 -33
  722. package/dist/RS/v3/types/individuals.d.ts +0 -13
  723. package/dist/RS/v3/types/intervals.d.ts +0 -9
  724. package/dist/RS/v3/types/locked-times.d.ts +0 -11
  725. package/dist/RS/v3/types/out-options.d.ts +0 -23
  726. package/dist/RS/v3/types/placements.d.ts +0 -12
  727. package/dist/RS/v3/types/root-intervals.d.ts +0 -10
  728. package/dist/RS/v3/types/schedules.d.ts +0 -24
  729. package/dist/RS/v3/types/settings.d.ts +0 -12
  730. package/dist/SS12000/from/activities.js +0 -35
  731. package/dist/SS12000/from/activities.js.map +0 -1
  732. package/dist/SS12000/from/calendar-events.js +0 -20
  733. package/dist/SS12000/from/calendar-events.js.map +0 -1
  734. package/dist/SS12000/from/duties.js +0 -21
  735. package/dist/SS12000/from/duties.js.map +0 -1
  736. package/dist/SS12000/from/groups.js +0 -23
  737. package/dist/SS12000/from/groups.js.map +0 -1
  738. package/dist/SS12000/from/index.js +0 -24
  739. package/dist/SS12000/from/index.js.map +0 -1
  740. package/dist/SS12000/from/persons.js +0 -43
  741. package/dist/SS12000/from/persons.js.map +0 -1
  742. package/dist/SS12000/from/resources.js +0 -9
  743. package/dist/SS12000/from/resources.js.map +0 -1
  744. package/dist/SS12000/from/rooms.js +0 -18
  745. package/dist/SS12000/from/rooms.js.map +0 -1
  746. package/dist/SS12000/from/syllabuses.js +0 -21
  747. package/dist/SS12000/from/syllabuses.js.map +0 -1
  748. package/dist/SS12000/index.d.ts +0 -73
  749. package/dist/SS12000/index.js +0 -12
  750. package/dist/SS12000/index.js.map +0 -1
  751. package/dist/SS12000/to/activities.js +0 -55
  752. package/dist/SS12000/to/activities.js.map +0 -1
  753. package/dist/SS12000/to/calendar-events.js +0 -47
  754. package/dist/SS12000/to/calendar-events.js.map +0 -1
  755. package/dist/SS12000/to/common.js +0 -16
  756. package/dist/SS12000/to/common.js.map +0 -1
  757. package/dist/SS12000/to/duties.js +0 -36
  758. package/dist/SS12000/to/duties.js.map +0 -1
  759. package/dist/SS12000/to/groups.js +0 -37
  760. package/dist/SS12000/to/groups.js.map +0 -1
  761. package/dist/SS12000/to/index.d.ts +0 -25
  762. package/dist/SS12000/to/index.js +0 -24
  763. package/dist/SS12000/to/index.js.map +0 -1
  764. package/dist/SS12000/to/persons.js +0 -36
  765. package/dist/SS12000/to/persons.js.map +0 -1
  766. package/dist/SS12000/to/resources.js +0 -23
  767. package/dist/SS12000/to/resources.js.map +0 -1
  768. package/dist/SS12000/to/rooms.js +0 -28
  769. package/dist/SS12000/to/rooms.js.map +0 -1
  770. package/dist/SS12000/to/syllabuses.js +0 -30
  771. package/dist/SS12000/to/syllabuses.js.map +0 -1
  772. package/dist/SS12000/types/activities.d.ts +0 -41
  773. package/dist/SS12000/types/calendar-events.d.ts +0 -23
  774. package/dist/SS12000/types/codes.d.ts +0 -9
  775. package/dist/SS12000/types/duties.d.ts +0 -23
  776. package/dist/SS12000/types/duty-assignments.d.ts +0 -13
  777. package/dist/SS12000/types/groups.d.ts +0 -23
  778. package/dist/SS12000/types/index.d.ts +0 -21
  779. package/dist/SS12000/types/organisation.d.ts +0 -20
  780. package/dist/SS12000/types/persons.d.ts +0 -30
  781. package/dist/SS12000/types/resources.d.ts +0 -13
  782. package/dist/SS12000/types/rooms.d.ts +0 -17
  783. package/dist/SS12000/types/syllabus.d.ts +0 -19
  784. package/dist/core/v1/from/courses.js +0 -26
  785. package/dist/core/v1/from/courses.js.map +0 -1
  786. package/dist/core/v1/from/events.js +0 -12
  787. package/dist/core/v1/from/events.js.map +0 -1
  788. package/dist/core/v1/from/groups.js +0 -14
  789. package/dist/core/v1/from/groups.js.map +0 -1
  790. package/dist/core/v1/from/index.js +0 -8
  791. package/dist/core/v1/from/index.js.map +0 -1
  792. package/dist/core/v1/from/locations.js +0 -14
  793. package/dist/core/v1/from/locations.js.map +0 -1
  794. package/dist/core/v1/from/locked-times.js +0 -13
  795. package/dist/core/v1/from/locked-times.js.map +0 -1
  796. package/dist/core/v1/from/overlap-groups.js +0 -13
  797. package/dist/core/v1/from/overlap-groups.js.map +0 -1
  798. package/dist/core/v1/from/periods.js +0 -14
  799. package/dist/core/v1/from/periods.js.map +0 -1
  800. package/dist/core/v1/from/schedules.d.ts +0 -139
  801. package/dist/core/v1/from/schedules.js +0 -36
  802. package/dist/core/v1/from/schedules.js.map +0 -1
  803. package/dist/core/v1/from/teachers.js +0 -14
  804. package/dist/core/v1/from/teachers.js.map +0 -1
  805. package/dist/core/v1/index.d.ts +0 -14
  806. package/dist/core/v1/index.js +0 -12
  807. package/dist/core/v1/index.js.map +0 -1
  808. package/dist/core/v1/to/available-locations.js +0 -11
  809. package/dist/core/v1/to/available-locations.js.map +0 -1
  810. package/dist/core/v1/to/courses.js +0 -33
  811. package/dist/core/v1/to/courses.js.map +0 -1
  812. package/dist/core/v1/to/days.js +0 -13
  813. package/dist/core/v1/to/days.js.map +0 -1
  814. package/dist/core/v1/to/events.js +0 -35
  815. package/dist/core/v1/to/events.js.map +0 -1
  816. package/dist/core/v1/to/groups.js +0 -24
  817. package/dist/core/v1/to/groups.js.map +0 -1
  818. package/dist/core/v1/to/index.js +0 -10
  819. package/dist/core/v1/to/index.js.map +0 -1
  820. package/dist/core/v1/to/intervals.js +0 -14
  821. package/dist/core/v1/to/intervals.js.map +0 -1
  822. package/dist/core/v1/to/locations.js +0 -20
  823. package/dist/core/v1/to/locations.js.map +0 -1
  824. package/dist/core/v1/to/locked-times.js +0 -25
  825. package/dist/core/v1/to/locked-times.js.map +0 -1
  826. package/dist/core/v1/to/overlap-groups.js +0 -30
  827. package/dist/core/v1/to/overlap-groups.js.map +0 -1
  828. package/dist/core/v1/to/periods.js +0 -10
  829. package/dist/core/v1/to/periods.js.map +0 -1
  830. package/dist/core/v1/to/persons.js +0 -22
  831. package/dist/core/v1/to/persons.js.map +0 -1
  832. package/dist/core/v1/to/schedules.d.ts +0 -170
  833. package/dist/core/v1/to/schedules.js +0 -32
  834. package/dist/core/v1/to/schedules.js.map +0 -1
  835. package/dist/core/v1/to/settings.js +0 -13
  836. package/dist/core/v1/to/settings.js.map +0 -1
  837. package/dist/core/v1/to/teachers.js +0 -20
  838. package/dist/core/v1/to/teachers.js.map +0 -1
  839. package/dist/core/v1/types/areas.d.ts +0 -16
  840. package/dist/core/v1/types/available-locations.d.ts +0 -13
  841. package/dist/core/v1/types/break-lengths.d.ts +0 -5
  842. package/dist/core/v1/types/common/coalesced.d.ts +0 -10
  843. package/dist/core/v1/types/courses.d.ts +0 -54
  844. package/dist/core/v1/types/days.d.ts +0 -14
  845. package/dist/core/v1/types/division-settings.d.ts +0 -39
  846. package/dist/core/v1/types/divisions.d.ts +0 -45
  847. package/dist/core/v1/types/events.d.ts +0 -60
  848. package/dist/core/v1/types/groups.d.ts +0 -37
  849. package/dist/core/v1/types/index.d.ts +0 -41
  850. package/dist/core/v1/types/intervals.d.ts +0 -17
  851. package/dist/core/v1/types/locations.d.ts +0 -32
  852. package/dist/core/v1/types/locked-times.d.ts +0 -39
  853. package/dist/core/v1/types/meta.d.ts +0 -9
  854. package/dist/core/v1/types/overlap-groups.d.ts +0 -26
  855. package/dist/core/v1/types/periods.d.ts +0 -22
  856. package/dist/core/v1/types/persons.d.ts +0 -40
  857. package/dist/core/v1/types/teachers.d.ts +0 -34
  858. package/dist/core/v2/from/courses.js +0 -13
  859. package/dist/core/v2/from/courses.js.map +0 -1
  860. package/dist/core/v2/from/events.js +0 -12
  861. package/dist/core/v2/from/events.js.map +0 -1
  862. package/dist/core/v2/from/exceptions.js +0 -13
  863. package/dist/core/v2/from/exceptions.js.map +0 -1
  864. package/dist/core/v2/from/groups.js +0 -13
  865. package/dist/core/v2/from/groups.js.map +0 -1
  866. package/dist/core/v2/from/index.js.map +0 -1
  867. package/dist/core/v2/from/locations.js +0 -13
  868. package/dist/core/v2/from/locations.js.map +0 -1
  869. package/dist/core/v2/from/locked-times.js +0 -13
  870. package/dist/core/v2/from/locked-times.js.map +0 -1
  871. package/dist/core/v2/from/overlap-groups.js +0 -13
  872. package/dist/core/v2/from/overlap-groups.js.map +0 -1
  873. package/dist/core/v2/from/periods.js +0 -13
  874. package/dist/core/v2/from/periods.js.map +0 -1
  875. package/dist/core/v2/from/persons.js +0 -12
  876. package/dist/core/v2/from/persons.js.map +0 -1
  877. package/dist/core/v2/from/root-intervals.js +0 -13
  878. package/dist/core/v2/from/root-intervals.js.map +0 -1
  879. package/dist/core/v2/from/schedules.d.ts +0 -245
  880. package/dist/core/v2/from/schedules.js +0 -48
  881. package/dist/core/v2/from/schedules.js.map +0 -1
  882. package/dist/core/v2/from/syllabuses.js.map +0 -1
  883. package/dist/core/v2/from/teachers.js +0 -13
  884. package/dist/core/v2/from/teachers.js.map +0 -1
  885. package/dist/core/v2/index.d.ts +0 -16
  886. package/dist/core/v2/index.js +0 -12
  887. package/dist/core/v2/index.js.map +0 -1
  888. package/dist/core/v2/to/available-locations.js +0 -11
  889. package/dist/core/v2/to/available-locations.js.map +0 -1
  890. package/dist/core/v2/to/courses.js +0 -44
  891. package/dist/core/v2/to/courses.js.map +0 -1
  892. package/dist/core/v2/to/days.js +0 -13
  893. package/dist/core/v2/to/days.js.map +0 -1
  894. package/dist/core/v2/to/division.js +0 -10
  895. package/dist/core/v2/to/division.js.map +0 -1
  896. package/dist/core/v2/to/events.js +0 -47
  897. package/dist/core/v2/to/events.js.map +0 -1
  898. package/dist/core/v2/to/exceptions.js +0 -29
  899. package/dist/core/v2/to/exceptions.js.map +0 -1
  900. package/dist/core/v2/to/groups.js +0 -34
  901. package/dist/core/v2/to/groups.js.map +0 -1
  902. package/dist/core/v2/to/index.d.ts +0 -9
  903. package/dist/core/v2/to/index.js +0 -10
  904. package/dist/core/v2/to/index.js.map +0 -1
  905. package/dist/core/v2/to/intervals.js +0 -13
  906. package/dist/core/v2/to/intervals.js.map +0 -1
  907. package/dist/core/v2/to/locations.js +0 -35
  908. package/dist/core/v2/to/locations.js.map +0 -1
  909. package/dist/core/v2/to/locked-times.js +0 -25
  910. package/dist/core/v2/to/locked-times.js.map +0 -1
  911. package/dist/core/v2/to/overlap-groups.js +0 -30
  912. package/dist/core/v2/to/overlap-groups.js.map +0 -1
  913. package/dist/core/v2/to/periods.js +0 -10
  914. package/dist/core/v2/to/periods.js.map +0 -1
  915. package/dist/core/v2/to/persons.js +0 -25
  916. package/dist/core/v2/to/persons.js.map +0 -1
  917. package/dist/core/v2/to/root-intervals.js +0 -10
  918. package/dist/core/v2/to/root-intervals.js.map +0 -1
  919. package/dist/core/v2/to/schedules.d.ts +0 -249
  920. package/dist/core/v2/to/schedules.js +0 -40
  921. package/dist/core/v2/to/schedules.js.map +0 -1
  922. package/dist/core/v2/to/settings.js +0 -13
  923. package/dist/core/v2/to/settings.js.map +0 -1
  924. package/dist/core/v2/to/syllabuses.js +0 -16
  925. package/dist/core/v2/to/syllabuses.js.map +0 -1
  926. package/dist/core/v2/to/teachers.js +0 -28
  927. package/dist/core/v2/to/teachers.js.map +0 -1
  928. package/dist/core/v2/types/areas.d.ts +0 -16
  929. package/dist/core/v2/types/available-locations.d.ts +0 -13
  930. package/dist/core/v2/types/break-lengths.d.ts +0 -5
  931. package/dist/core/v2/types/common/coalesced.d.ts +0 -10
  932. package/dist/core/v2/types/common/maximum-schedule-span.d.ts +0 -8
  933. package/dist/core/v2/types/common/planned-schedule-duration.d.ts +0 -7
  934. package/dist/core/v2/types/courses.d.ts +0 -76
  935. package/dist/core/v2/types/days.d.ts +0 -14
  936. package/dist/core/v2/types/divisions.d.ts +0 -54
  937. package/dist/core/v2/types/events.d.ts +0 -76
  938. package/dist/core/v2/types/groups.d.ts +0 -50
  939. package/dist/core/v2/types/index.d.ts +0 -49
  940. package/dist/core/v2/types/intervals.d.ts +0 -17
  941. package/dist/core/v2/types/locations.d.ts +0 -38
  942. package/dist/core/v2/types/locked-times.d.ts +0 -44
  943. package/dist/core/v2/types/overlap-groups.d.ts +0 -26
  944. package/dist/core/v2/types/periods.d.ts +0 -25
  945. package/dist/core/v2/types/root-intervals.d.ts +0 -23
  946. package/dist/core/v2/types/schedules.d.ts +0 -38
  947. package/dist/core/v2/types/syllabus.d.ts +0 -27
  948. package/dist/vKlass/from/index.d.ts +0 -9
@@ -1,10 +1,11 @@
1
- import moment from "moment";
1
+ import { getVertexId } from "../../../core/util.js";
2
2
  import { isString } from "lodash-es";
3
- import Papa from "papaparse";
3
+ import moment from "moment";
4
4
  import { isObjectIdOrHexString } from "mongoose";
5
+ import Papa from "papaparse";
5
6
 
6
7
  //#region src/Schoolity/txt/to/schedules.ts
7
- const options = {
8
+ const papaOptions = {
8
9
  quotes: false,
9
10
  quoteChar: "\"",
10
11
  escapeChar: "\"",
@@ -14,34 +15,17 @@ const options = {
14
15
  skipEmptyLines: false
15
16
  };
16
17
  const uuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
17
- var schedules_default = (division) => {
18
- const { locations, teachers, groups, persons, events, courses, periods, syllabuses, start, end, displayName } = division;
18
+ var schedules_default = (data, options = {}) => {
19
+ const { locations, teachers, groups, persons, events, courses, periods, syllabuses, divisions } = data;
20
+ const { start, end, displayName } = divisions ?? data;
19
21
  const startYear = moment.utc(start).year();
20
22
  const startMonth = moment.utc(start).month();
21
- const courseMap = /* @__PURE__ */ new Map();
22
- if (courses) courses.forEach((course) => {
23
- courseMap.set(course.id, course);
24
- });
25
- const periodMap = /* @__PURE__ */ new Map();
26
- if (periods) periods.forEach((period) => {
27
- periodMap.set(period.id, period);
28
- });
29
- const teacherMap = /* @__PURE__ */ new Map();
30
- if (teachers) teachers.forEach((teacher) => {
31
- teacherMap.set(teacher.id, teacher);
32
- });
33
- const groupMap = /* @__PURE__ */ new Map();
34
- if (groups) groups.forEach((group) => {
35
- groupMap.set(group.id, group);
36
- });
37
- const locationMap = /* @__PURE__ */ new Map();
38
- if (locations) locations.forEach((location) => {
39
- locationMap.set(location.id, location);
40
- });
41
- const syllabusMap = /* @__PURE__ */ new Map();
42
- if (syllabuses) syllabuses.forEach((syllabus) => {
43
- syllabusMap.set(syllabus.id, syllabus);
44
- });
23
+ const courseMap = new Map(data.courses?.map((x) => [getVertexId(x, options), x]));
24
+ const periodMap = new Map(data.periods?.map((x) => [getVertexId(x, options), x]));
25
+ const teacherMap = new Map(data.teachers?.map((x) => [getVertexId(x, options), x]));
26
+ const groupMap = new Map(data.groups?.map((x) => [getVertexId(x, options), x]));
27
+ const locationMap = new Map(data.locations?.map((x) => [getVertexId(x, options), x]));
28
+ const syllabusMap = new Map(data.syllabuses?.map((x) => [getVertexId(x, options), x]));
45
29
  const subjectSyllabusMap = /* @__PURE__ */ new Map();
46
30
  if (courses) for (const course of courses) {
47
31
  const subject = course.subject;
@@ -50,22 +34,22 @@ var schedules_default = (division) => {
50
34
  if (!subjectSyllabusMap.has(subject)) subjectSyllabusMap.set(subject, {
51
35
  subjectCode: subject,
52
36
  fullText: subject,
53
- guid: syllabus?.ids
37
+ guid: typeof syllabus == "object" && "ids" in syllabus ? syllabus?.ids : void 0
54
38
  });
55
- } else if (syllabus && syllabus.id && syllabus.subjectCode && !syllabus.courseCode) {
56
- if (!subjectSyllabusMap.has(syllabus.id)) subjectSyllabusMap.set(syllabus.id, {
39
+ } else if (typeof syllabus == "object" && "subjectCode" in syllabus && syllabus.subjectCode && !syllabus.courseCode) {
40
+ if (!subjectSyllabusMap.has(getVertexId(syllabus, options))) subjectSyllabusMap.set(getVertexId(syllabus, options), {
57
41
  subjectCode: syllabus.subjectName,
58
42
  fullText: syllabus.subjectName,
59
43
  guid: syllabus.ids
60
44
  });
61
45
  }
62
46
  }
63
- let csv = `[Source]${options.newline}ApplicationVerMajor=4${options.newline}ApplicationVerMinor=0${options.newline}DatabaseRevNo=527${options.newline}CurrentNovaschemDatabase=${options.newline}User=${options.newline}`;
64
- csv += `SchoolID=RS${options.newline}School=${displayName}${options.newline}County=RS${options.newline}`;
65
- csv += `BaseYear=${startYear}${options.newline}OffsetYear=0${options.newline}OffsetMonth=${startMonth}${options.newline}CreationDate=${moment().format("YYYY-MM-DD")}${options.newline}${options.newline}`;
66
- csv += `[Destination]${options.newline}Application=${options.newline}ApplicationID=${options.newline}${options.newline}`;
67
- csv += `[DatabaseOptions]${options.newline}Update=TRUE${options.newline}AddNew=TRUE${options.newline}${options.newline}`;
68
- csv += `[Tables]${options.newline}${options.newline}`;
47
+ let csv = `[Source]${papaOptions.newline}ApplicationVerMajor=4${papaOptions.newline}ApplicationVerMinor=0${papaOptions.newline}DatabaseRevNo=527${papaOptions.newline}CurrentNovaschemDatabase=${papaOptions.newline}User=${papaOptions.newline}`;
48
+ csv += `SchoolID=RS${papaOptions.newline}School=${displayName}${papaOptions.newline}County=RS${papaOptions.newline}`;
49
+ csv += `BaseYear=${startYear}${papaOptions.newline}OffsetYear=0${papaOptions.newline}OffsetMonth=${startMonth}${papaOptions.newline}CreationDate=${moment().format("YYYY-MM-DD")}${papaOptions.newline}${papaOptions.newline}`;
50
+ csv += `[Destination]${papaOptions.newline}Application=${papaOptions.newline}ApplicationID=${papaOptions.newline}${papaOptions.newline}`;
51
+ csv += `[DatabaseOptions]${papaOptions.newline}Update=TRUE${papaOptions.newline}AddNew=TRUE${papaOptions.newline}${papaOptions.newline}`;
52
+ csv += `[Tables]${papaOptions.newline}${papaOptions.newline}`;
69
53
  const l = locations?.map((location) => {
70
54
  return {
71
55
  "Room (6601)": location.displayName,
@@ -74,15 +58,15 @@ var schedules_default = (division) => {
74
58
  "SeatingCapacity (6607)": location.maximumCapacity
75
59
  };
76
60
  }) ?? [];
77
- csv += `${options.newline}Room (6600)${options.newline}[Rows]${options.newline}`;
78
- if (l.length) csv += Papa.unparse(l, options);
61
+ csv += `${papaOptions.newline}Room (6600)${papaOptions.newline}[Rows]${papaOptions.newline}`;
62
+ if (l.length) csv += Papa.unparse(l, papaOptions);
79
63
  else csv += [
80
64
  "Room (6601)",
81
65
  "GUID (5800)",
82
66
  "Category (6602)",
83
67
  "SeatingCapacity (6607)"
84
- ].join(options.delimiter);
85
- csv += options.newline;
68
+ ].join(papaOptions.delimiter);
69
+ csv += papaOptions.newline;
86
70
  const subjectSyllabuses = syllabuses?.reduce((unique, syllabus) => {
87
71
  if (syllabus.subjectCode && syllabus.courseCode && !unique.seen.has(syllabus.subjectCode)) {
88
72
  unique.seen.add(syllabus.subjectCode);
@@ -112,8 +96,8 @@ var schedules_default = (division) => {
112
96
  "EvaluationNumber (6429)": ""
113
97
  };
114
98
  }));
115
- csv += `${options.newline}Subject (6400)${options.newline}[Rows]${options.newline}`;
116
- if (subjectSyllabuses.length) csv += Papa.unparse(subjectSyllabuses, options);
99
+ csv += `${papaOptions.newline}Subject (6400)${papaOptions.newline}[Rows]${papaOptions.newline}`;
100
+ if (subjectSyllabuses.length) csv += Papa.unparse(subjectSyllabuses, papaOptions);
117
101
  else csv += [
118
102
  "Subject (6401)",
119
103
  "GUID (5800)",
@@ -122,14 +106,14 @@ var schedules_default = (division) => {
122
106
  "BackgroundColor (6432)",
123
107
  "TextColor (6433)",
124
108
  "EvaluationNumber (6429)"
125
- ].join(options.delimiter);
126
- csv += options.newline;
109
+ ].join(papaOptions.delimiter);
110
+ csv += papaOptions.newline;
127
111
  const t = teachers?.map((teacher) => {
128
112
  return {
129
113
  "Teacher (6001)": teacher.signature,
130
114
  "GUID (5800)": "",
131
115
  "Category (6002)": "",
132
- "PersonalCode (6028)": teacher.person?.SSN?.value ?? "",
116
+ "PersonalCode (6028)": "person" in teacher && typeof teacher.person == "object" && "SSN" in teacher.person ? teacher.person?.SSN?.value ?? "" : "",
133
117
  "LastName (6003)": "",
134
118
  "Title (6006)": "",
135
119
  "FirstName (6004)": "",
@@ -138,8 +122,8 @@ var schedules_default = (division) => {
138
122
  "EvaluationNumber (6014)": ""
139
123
  };
140
124
  }) ?? [];
141
- csv += `${options.newline}Teacher (6000)${options.newline}[Rows]${options.newline}`;
142
- if (t.length) csv += Papa.unparse(t, options);
125
+ csv += `${papaOptions.newline}Teacher (6000)${papaOptions.newline}[Rows]${papaOptions.newline}`;
126
+ if (t.length) csv += Papa.unparse(t, papaOptions);
143
127
  else csv += [
144
128
  "Teacher (6001)",
145
129
  "GUID (5800)",
@@ -151,8 +135,8 @@ var schedules_default = (division) => {
151
135
  "Phone (6033)",
152
136
  "EMail (6034)",
153
137
  "EvaluationNumber (6014)"
154
- ].join(options.delimiter);
155
- csv += options.newline;
138
+ ].join(papaOptions.delimiter);
139
+ csv += papaOptions.newline;
156
140
  const s = persons?.filter((person) => {
157
141
  return person.type != "Teacher";
158
142
  }).filter((s$1) => Boolean(s$1.SSN)).map((person) => {
@@ -165,8 +149,8 @@ var schedules_default = (division) => {
165
149
  "EMail (7215)": person.emails?.[0]?.value ?? ""
166
150
  };
167
151
  }) ?? [];
168
- csv += `${options.newline}Student (7200)${options.newline}[Rows]${options.newline}`;
169
- if (s.length) csv += Papa.unparse(s, options);
152
+ csv += `${papaOptions.newline}Student (7200)${papaOptions.newline}[Rows]${papaOptions.newline}`;
153
+ if (s.length) csv += Papa.unparse(s, papaOptions);
170
154
  else csv += [
171
155
  "Student (7201)",
172
156
  "GUID (5800)",
@@ -174,12 +158,9 @@ var schedules_default = (division) => {
174
158
  "LastName (7202)",
175
159
  "FirstName (7211)",
176
160
  "EMail (7215)"
177
- ].join(options.delimiter);
178
- csv += options.newline;
179
- const studentMap = /* @__PURE__ */ new Map();
180
- if (persons) persons.forEach((person) => {
181
- if (person.type != "Teacher") studentMap.set(person.id, person.SSN?.value ?? "");
182
- });
161
+ ].join(papaOptions.delimiter);
162
+ csv += papaOptions.newline;
163
+ const studentMap = new Map(persons?.filter((x) => x.type != "Teacher").map((x) => [getVertexId(x, options), x.SSN?.value ?? ""]));
183
164
  const g = groups?.map((group) => {
184
165
  return {
185
166
  "Group (6201)": group.displayName,
@@ -187,11 +168,11 @@ var schedules_default = (division) => {
187
168
  "Class (6210)": group.species == "class" ? 1 : 0,
188
169
  "Teacher (6204)": "",
189
170
  "IClass (6206)": "",
190
- "Student (6205)": group.members?.map((student) => isString(student) ? student : student.id).map((x) => studentMap.get(x)).filter(Boolean).join(",")
171
+ "Student (6205)": group.members?.map((x) => studentMap.get(getVertexId(x, options))).filter(Boolean).join(",")
191
172
  };
192
173
  }) ?? [];
193
- csv += `${options.newline}Group (6200)${options.newline}[Rows]${options.newline}`;
194
- if (g.length) csv += Papa.unparse(g, options);
174
+ csv += `${papaOptions.newline}Group (6200)${papaOptions.newline}[Rows]${papaOptions.newline}`;
175
+ if (g.length) csv += Papa.unparse(g, papaOptions);
195
176
  else csv += [
196
177
  "Group (6201)",
197
178
  "GUID (5800)",
@@ -199,8 +180,8 @@ var schedules_default = (division) => {
199
180
  "Teacher (6204)",
200
181
  "IClass (6206)",
201
182
  "Student (6205)"
202
- ].join(options.delimiter);
203
- csv += options.newline;
183
+ ].join(papaOptions.delimiter);
184
+ csv += papaOptions.newline;
204
185
  const courseSyllabuses = syllabuses?.filter((syllabus) => !!syllabus.courseName).map((syllabus) => {
205
186
  return {
206
187
  "Course (7601)": syllabus.courseCode,
@@ -211,9 +192,9 @@ var schedules_default = (division) => {
211
192
  };
212
193
  }) ?? [];
213
194
  if (courseSyllabuses.length) {
214
- csv += `${options.newline}Course (7600)${options.newline}[Rows]${options.newline}`;
215
- csv += Papa.unparse(courseSyllabuses, options);
216
- csv += options.newline;
195
+ csv += `${papaOptions.newline}Course (7600)${papaOptions.newline}[Rows]${papaOptions.newline}`;
196
+ csv += Papa.unparse(courseSyllabuses, papaOptions);
197
+ csv += papaOptions.newline;
217
198
  }
218
199
  const p = periods?.map((period) => {
219
200
  return {
@@ -224,34 +205,34 @@ var schedules_default = (division) => {
224
205
  "Calendar (8005)": period.ranges?.map((range) => `${moment.utc(range.start).format("D/M")}-${moment.utc(range.end).format("D/M")}`).join(", ")
225
206
  };
226
207
  }) ?? [];
227
- csv += `${options.newline}Period (8000)${options.newline}[Rows]${options.newline}`;
228
- if (p.length) csv += Papa.unparse(p, options);
208
+ csv += `${papaOptions.newline}Period (8000)${papaOptions.newline}[Rows]${papaOptions.newline}`;
209
+ if (p.length) csv += Papa.unparse(p, papaOptions);
229
210
  else csv += [
230
211
  "Period (8001)",
231
212
  "GUID (5800)",
232
213
  "TextBelowSchedule (8002)",
233
214
  "Category (8006)",
234
215
  "Calendar (8005)"
235
- ].join(options.delimiter);
236
- csv += options.newline;
216
+ ].join(papaOptions.delimiter);
217
+ csv += papaOptions.newline;
237
218
  const totalHoursRegex = /(\d+) hrs/;
238
219
  const weekTimeRegex = /(\d+) min\/week/;
239
220
  const c = courses?.map((course) => {
240
- const teacherIds = course.teachers?.map((teacher) => isString(teacher?.to) ? teacher.to : teacher?.to?.id?.toString()).filter(Boolean);
241
- const teachers$1 = teacherIds?.map((id) => teacherMap.get(id)).filter(Boolean) ?? [];
242
- const groupIds = course.groups?.map((group) => isString(group?.to) ? group.to : group?.to?.id?.toString()).filter(Boolean);
243
- const groups$1 = groupIds?.map((id) => groupMap.get(id)).filter(Boolean) ?? [];
221
+ const teacherIds = course.teachers?.map((x) => getVertexId(x.to, options));
222
+ const teachers$1 = teacherIds?.map((id) => teacherMap.get(id)).filter((x) => x != null) ?? [];
223
+ const groupIds = course.groups?.map((x) => getVertexId(x.to, options));
224
+ const groups$1 = groupIds?.map((id) => groupMap.get(id)).filter((x) => x != null) ?? [];
244
225
  const syllabus = course.syllabus;
245
- const isCourseSyllabus = !!syllabus?.courseCode;
226
+ const subject = syllabus && typeof syllabus == "object" ? "courseCode" in syllabus ? syllabus.subjectCode ?? course.subject : course.subject ?? ("subjectName" in syllabus ? syllabus.subjectName : void 0) : course.subject;
246
227
  return {
247
228
  "PK (8200)": "",
248
229
  "GUID (5800)": course.ids,
249
230
  "OriginalRecord (8224)": "1",
250
231
  "CreateLesson (8227)": "1",
251
- "Course (8202)": syllabus?.courseCode,
252
- "Subject (8209)": isCourseSyllabus ? syllabus?.subjectCode ?? course.subject : course.subject ?? syllabus?.subjectName ?? "",
253
- "Teacher (8210)": teachers$1?.map((teacher) => teacher.signature).filter(Boolean).join(","),
254
- "Group (8203)": groups$1?.map((group) => group.displayName).filter(Boolean).join(","),
232
+ "Course (8202)": typeof syllabus == "object" && "courseCode" in syllabus ? syllabus?.courseCode : void 0,
233
+ "Subject (8209)": subject ?? "",
234
+ "Teacher (8210)": teachers$1?.map((x) => x.signature).filter(Boolean).join(","),
235
+ "Group (8203)": groups$1?.map((x) => x.displayName).filter(Boolean).join(","),
255
236
  "TotalHours (8204)": course.plannedDuration && totalHoursRegex.test(course.plannedDuration) ? totalHoursRegex.exec(course.plannedDuration)[1] : "",
256
237
  "Weektime (8208)": course.plannedDuration && weekTimeRegex.test(course.plannedDuration) ? weekTimeRegex.exec(course.plannedDuration)[1] : "",
257
238
  "Blockname (8215)": "",
@@ -261,8 +242,8 @@ var schedules_default = (division) => {
261
242
  "NotWeek (8213)": ""
262
243
  };
263
244
  }) ?? [];
264
- csv += `${options.newline}TA (8200)${options.newline}[Rows]${options.newline}`;
265
- if (c.length) csv += Papa.unparse(c, options);
245
+ csv += `${papaOptions.newline}TA (8200)${papaOptions.newline}[Rows]${papaOptions.newline}`;
246
+ if (c.length) csv += Papa.unparse(c, papaOptions);
266
247
  else csv += [
267
248
  "Course (8202)",
268
249
  "GUID (5800)",
@@ -276,23 +257,24 @@ var schedules_default = (division) => {
276
257
  "Week (8207)",
277
258
  "NotPeriod (8212)",
278
259
  "NotWeek (8213)"
279
- ].join(options.delimiter);
280
- csv += options.newline;
281
- const e = events?.filter((x) => !isNaN(Date.parse(x.start?.toString() ?? ""))).map((event, index) => {
282
- const courseId = isString(event.course) ? event.course : event.course?.id;
260
+ ].join(papaOptions.delimiter);
261
+ csv += papaOptions.newline;
262
+ const e = events?.map((event, index) => {
263
+ if (!event.start || !event.end) return;
264
+ const courseId = event.course ? getVertexId(event.course, options) : void 0;
283
265
  const course = courseId ? courseMap.get(courseId) : void 0;
284
266
  let period = event.period == null ? course?.period : event.period;
285
267
  if (isString(period)) period = periodMap.get(period);
286
268
  if (period && !("ranges" in period)) period = void 0;
287
269
  const t$1 = event.teachers == null ? course?.teachers : event.teachers;
288
- const teacherIds = t$1?.map((teacher) => isString(teacher?.to) ? teacher.to : teacher?.to?.id?.toString()).filter(Boolean);
270
+ const teacherIds = t$1?.map((x) => getVertexId(x.to, options));
289
271
  const teachers$1 = teacherIds?.map((id) => teacherMap.get(id)).filter(Boolean) ?? [];
290
272
  const g$1 = event.groups == null ? course?.groups : event.groups;
291
- const groupIds = g$1?.map((group) => isString(group?.to) ? group.to : group?.to?.id?.toString()).filter(Boolean);
273
+ const groupIds = g$1?.map((x) => getVertexId(x.to, options));
292
274
  const groups$1 = groupIds?.map((id) => groupMap.get(id)).filter(Boolean) ?? [];
293
- const locationIds = event.inLocations?.map((location) => isString(location) ? location : location?.id?.toString()).filter(Boolean);
275
+ const locationIds = event.inLocations?.map((x) => x ? getVertexId(x, options) : null).filter((x) => x != null);
294
276
  const locations$1 = locationIds?.map((id) => locationMap.get(id)).filter(Boolean) ?? [];
295
- const dayOfWeek = new Date(event.start?.toString()).toLocaleDateString("sv-SE", {
277
+ const dayOfWeek = moment.utc(event.start).toDate().toLocaleDateString("sv-SE", {
296
278
  weekday: "long",
297
279
  timeZone: "UTC"
298
280
  });
@@ -319,16 +301,16 @@ var schedules_default = (division) => {
319
301
  "Length (7115)": event.duration,
320
302
  "Course (7106)": syllabus?.courseCode,
321
303
  "Subject (7103)": isCourseSyllabus ? syllabus?.subjectCode ?? course?.subject : course?.subject ?? syllabus?.subjectName ?? "",
322
- "Teacher (7104)": teachers$1?.map((teacher) => teacher.signature).filter(Boolean).join(","),
323
- "Group (7105)": groups$1?.map((group) => group.displayName).filter(Boolean).join(","),
324
- "Room (7107)": locations$1?.map((x) => x.displayName).filter(Boolean).join(","),
304
+ "Teacher (7104)": teachers$1?.map((x) => x?.signature).filter(Boolean).join(","),
305
+ "Group (7105)": groups$1?.map((x) => x?.displayName).filter(Boolean).join(","),
306
+ "Room (7107)": locations$1?.map((x) => x?.displayName).filter(Boolean).join(","),
325
307
  "Period (7108)": "",
326
308
  "Week (7109)": "",
327
309
  "ActualWeeks (7167)": actualWeeks
328
310
  };
329
311
  }) ?? [];
330
- csv += `${options.newline}Lesson (7100)${options.newline}[Rows]${options.newline}`;
331
- if (e.length) csv += Papa.unparse(e, options);
312
+ csv += `${papaOptions.newline}Lesson (7100)${papaOptions.newline}[Rows]${papaOptions.newline}`;
313
+ if (e.length) csv += Papa.unparse(e, papaOptions);
332
314
  else csv += [
333
315
  "PK (7100)",
334
316
  "GUID (5800)",
@@ -340,7 +322,7 @@ var schedules_default = (division) => {
340
322
  "Period (7108)",
341
323
  "Week (7109)",
342
324
  "ActualWeeks (7167)"
343
- ].join(options.delimiter);
325
+ ].join(papaOptions.delimiter);
344
326
  return csv;
345
327
  };
346
328
 
@@ -1 +1 @@
1
- {"version":3,"file":"schedules.js","names":["s","teachers","groups","t","g","locations","allWeeks: Moment[]","index"],"sources":["../../../../src/Schoolity/txt/to/schedules.ts"],"sourcesContent":["import moment, { Moment } from 'moment';\nimport Papa from 'papaparse';\n\nimport { Types as CoreTypes,\n Deserialized } from '../../../core/types';\nimport { isString } from 'lodash-es';\nimport { isObjectIdOrHexString, Types } from 'mongoose';\n\nconst options = {\n quotes: false, //or array of booleans\n quoteChar: '\"',\n escapeChar: '\"',\n delimiter: '\\t',\n header: true,\n newline: '\\r\\n',\n skipEmptyLines: false, //other option is 'greedy', meaning skip delimiters, quotes, and whitespace.\n // columns: null //or array of strings\n} as Papa.UnparseConfig;\n\nconst uuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n\nexport default (division: Deserialized<CoreTypes.division>): string => {\n const { locations, teachers, groups, persons, events, courses, periods, syllabuses, start, end, displayName } = division;\n\n const startYear = moment.utc(start).year();\n const startMonth = moment.utc(start).month();\n\n const courseMap = new Map<string, CoreTypes.course>();\n if (courses) {\n courses.forEach(course => {\n courseMap.set(course.id!, course);\n });\n }\n\n const periodMap = new Map<string, CoreTypes.period>();\n if (periods) {\n periods.forEach(period => {\n periodMap.set(period.id!, period);\n });\n }\n\n const teacherMap = new Map<string, CoreTypes.teacher>();\n if (teachers) {\n teachers.forEach(teacher => {\n teacherMap.set(teacher.id!, teacher);\n });\n }\n\n const groupMap = new Map<string, CoreTypes.group>();\n if (groups) {\n groups.forEach(group => {\n groupMap.set(group.id!, group);\n });\n }\n\n const locationMap = new Map<string, CoreTypes.location>();\n if (locations) {\n locations.forEach(location => {\n locationMap.set(location.id!, location);\n });\n }\n\n const syllabusMap = new Map<string, CoreTypes.syllabus>();\n if (syllabuses) {\n syllabuses.forEach(syllabus => {\n syllabusMap.set(syllabus.id!, syllabus);\n });\n }\n\n // Stupid thing Schoolity wants (Nikos responsible for future bugs)\n // This overrides the normal behavior for gr. So basically if a course has a subject it will always use that for subjectCode and fulltext, even if it has a syllabus with different values.\n // In the case where a course has a syllabus but no subject it will use the regular behavior.\n\n const subjectSyllabusMap = new Map<string, { subjectCode: string, guid?: string, fullText: string }>();\n if (courses) {\n for (const course of courses) {\n const subject = course.subject;\n const syllabus = course.syllabus;\n if (subject) {\n // If the course has a subject, we want to use that instead of syllabus. This is because Schoolity is stupid. Also note that this is endorsed by Nikos. :(\n if (!subjectSyllabusMap.has(subject)) {\n subjectSyllabusMap.set(subject, {\n subjectCode: subject,\n fullText: subject,\n guid: syllabus?.ids\n });\n }\n } else if (syllabus && syllabus.id && syllabus.subjectCode && !syllabus.courseCode) {\n // If the course has a syllabus but no subject, we want to use the syllabus id as the identifier\n // and not the course id. This is because Schoolity expects the syllabus to be unique across all courses.\n if (!subjectSyllabusMap.has(syllabus.id)) {\n subjectSyllabusMap.set(syllabus.id, {\n subjectCode: syllabus.subjectName, // Use subjectName as subjectCode (Nikos responsible for future bugs)\n fullText: syllabus.subjectName,\n guid: syllabus.ids\n });\n };\n }\n };\n }\n\n // Set cvs to the source section\n let csv = `[Source]${options.newline}ApplicationVerMajor=4${options.newline}ApplicationVerMinor=0${options.newline}DatabaseRevNo=527${options.newline}CurrentNovaschemDatabase=${options.newline}User=${options.newline}`;\n csv += `SchoolID=RS${options.newline}School=${displayName}${options.newline}County=RS${options.newline}`;\n csv += `BaseYear=${startYear}${options.newline}OffsetYear=0${options.newline}OffsetMonth=${startMonth}${options.newline}CreationDate=${moment().format('YYYY-MM-DD')}${options.newline}${options.newline}`;\n // add destination section to csv\n csv += `[Destination]${options.newline}Application=${options.newline}ApplicationID=${options.newline}${options.newline}`;\n\n // add database options to csv\n csv += `[DatabaseOptions]${options.newline}Update=TRUE${options.newline}AddNew=TRUE${options.newline}${options.newline}`;\n\n // start tables section\n csv += `[Tables]${options.newline}${options.newline}`;\n\n // append locations to csv\n const l = locations?.map(location => {\n return {\n 'Room (6601)': location.displayName!,\n 'GUID (5800)': (location.ids && uuid.test(location.ids)) ? `{${location.ids}}` : '',\n 'Category (6602)': location.tags?.find(tag => tag.type == 'category')?.value ?? '',\n 'SeatingCapacity (6607)': location.maximumCapacity,\n };\n }) ?? [];\n csv += `${options.newline}Room (6600)${options.newline}[Rows]${options.newline}`;\n if (l.length) {\n csv += Papa.unparse(l, options);\n } else {\n csv += ['Room (6601)', 'GUID (5800)', 'Category (6602)', 'SeatingCapacity (6607)'].join(options.delimiter);\n }\n csv += options.newline;\n\n // append subjects to csv\n // First add all subjects from syllabuses with courses (they should follow the standard)\n const subjectSyllabuses = syllabuses?.reduce((unique, syllabus) => {\n if (syllabus.subjectCode && syllabus.courseCode && !unique.seen.has(syllabus.subjectCode)) {\n unique.seen.add(syllabus.subjectCode);\n unique.result.push({\n 'Subject (6401)': syllabus.subjectCode,\n 'GUID (5800)': syllabus.ids,\n 'Category (6402)': '',\n 'FullText (6403)': syllabus.subjectName,\n 'BackgroundColor (6432)': '',\n 'TextColor (6433)': '',\n 'EvaluationNumber (6429)': ''\n });\n }\n return unique;\n }, {\n seen: new Set<string>(),\n result: [] as Array<{\n 'Subject (6401)': string;\n 'GUID (5800)': string | undefined;\n 'Category (6402)': string | undefined;\n 'FullText (6403)': string;\n 'BackgroundColor (6432)': string | undefined;\n 'TextColor (6433)': string | undefined;\n 'EvaluationNumber (6429)': string | undefined;\n }>\n })?.result ?? [];\n // Then add all subjects from the subjectSyllabusMap (they should follow the Nikos standard, that is, the stupid one)\n subjectSyllabuses.push(...Array.from(subjectSyllabusMap.values()).map(subject => {\n return {\n 'Subject (6401)': subject.subjectCode,\n 'GUID (5800)': subject.guid,\n 'Category (6402)': '',\n 'FullText (6403)': subject.fullText,\n 'BackgroundColor (6432)': '',\n 'TextColor (6433)': '',\n 'EvaluationNumber (6429)': ''\n };\n }));\n\n csv += `${options.newline}Subject (6400)${options.newline}[Rows]${options.newline}`;\n if (subjectSyllabuses.length) {\n csv += Papa.unparse(subjectSyllabuses, options);\n } else {\n csv += ['Subject (6401)', 'GUID (5800)', 'Category (6402)', 'FullText (6403)', 'BackgroundColor (6432)', 'TextColor (6433)', 'EvaluationNumber (6429)'].join(options.delimiter);\n }\n csv += options.newline;\n\n // append teachers to csv\n const t = teachers?.map(teacher => {\n return {\n 'Teacher (6001)': teacher.signature,\n 'GUID (5800)': '',\n 'Category (6002)': '',\n 'PersonalCode (6028)': teacher.person?.SSN?.value ?? '',\n 'LastName (6003)': '',\n 'Title (6006)': '',\n 'FirstName (6004)': '',\n 'Phone (6033)': '',\n 'EMail (6034)': '',\n 'EvaluationNumber (6014)': ''\n };\n }) ?? [];\n csv += `${options.newline}Teacher (6000)${options.newline}[Rows]${options.newline}`;\n if (t.length) {\n csv += Papa.unparse(t, options);\n } else {\n csv += ['Teacher (6001)', 'GUID (5800)', 'Category (6002)', 'PersonalCode (6028)', 'LastName (6003)', 'Title (6006)', 'FirstName (6004)', 'Phone (6033)', 'EMail (6034)', 'EvaluationNumber (6014)'].join(options.delimiter);\n }\n csv += options.newline;\n\n // append students to csv\n const s = persons?.filter(person => {\n return person.type != 'Teacher';\n }).filter((s) => Boolean(s.SSN)).map(person => {\n return {\n 'Student (7201)': person.SSN?.value,\n 'GUID (5800)': (person.ids && uuid.test(person.ids)) ? `{${person.ids}}` : '',\n 'Category (7305)': '',\n 'LastName (7202)': person.lastName ?? '',\n 'FirstName (7211)': person.firstName ?? '',\n 'EMail (7215)': person.emails?.[0]?.value ?? ''\n };\n }) ?? [];\n csv += `${options.newline}Student (7200)${options.newline}[Rows]${options.newline}`;\n if (s.length) {\n csv += Papa.unparse(s, options);\n } else {\n csv += ['Student (7201)', 'GUID (5800)', 'Category (7305)', 'LastName (7202)', 'FirstName (7211)', 'EMail (7215)'].join(options.delimiter);\n }\n csv += options.newline;\n\n // create a map of students.id to students.SSN\n const studentMap = new Map<string, string>();\n if (persons) {\n persons.forEach(person => {\n if (person.type != 'Teacher') {\n studentMap.set(person.id!, person.SSN?.value ?? '');\n }\n });\n }\n\n // append groups to csv\n const g = groups?.map(group => {\n return {\n 'Group (6201)': group.displayName!,\n 'GUID (5800)': (group.ids && uuid.test(group.ids)) ? `{${group.ids}}` : '',\n 'Class (6210)': group.species == 'class' ? 1 : 0,\n 'Teacher (6204)': '',\n 'IClass (6206)': '',\n 'Student (6205)': group.members?.map(student => isString(student) ? student : student.id!).map(x => studentMap.get(x))\n .filter(Boolean)\n .join(',')\n };\n }) ?? [];\n csv += `${options.newline}Group (6200)${options.newline}[Rows]${options.newline}`;\n if (g.length) {\n csv += Papa.unparse(g, options);\n } else {\n csv += ['Group (6201)', 'GUID (5800)', 'Class (6210)', 'Teacher (6204)', 'IClass (6206)', 'Student (6205)'].join(options.delimiter);\n }\n csv += options.newline;\n\n // append courses to csv (only if there actually are courses, since its very important to Schoolity that the course table isn't present for GR)\n const courseSyllabuses = syllabuses?.filter(syllabus => !!syllabus.courseName).map(syllabus => {\n return {\n 'Course (7601)': syllabus.courseCode,\n 'GUID (5800)': syllabus.ids,\n 'FullText (7602)': syllabus.courseName,\n 'Subject (7603)': syllabus.subjectCode ?? '',\n 'Points (7604)': syllabus.points\n };\n }) ?? [];\n if (courseSyllabuses.length) {\n csv += `${options.newline}Course (7600)${options.newline}[Rows]${options.newline}`;\n csv += Papa.unparse(courseSyllabuses, options);\n csv += options.newline;\n }\n // else {\n // csv += ['PK (7100)', 'GUID (5800)', 'DayOfWeek (7101)', 'Starttime (7102)', 'Length (7115)', 'Course (7106)', 'Subject (7103)', 'Period (7108)', 'Week (7109)', 'ActualWeeks (7167)'].join(options.delimiter);\n // }\n\n // append periods to csv\n const p = periods?.map(period => {\n return {\n 'Period (8001)': period.displayName!,\n 'GUID (5800)': (period.ids && uuid.test(period.ids)) ? `{${period.ids}}` : '',\n 'TextBelowSchedule (8002)': period.displayName!,\n 'Category (8006)': '',\n 'Calendar (8005)': period.ranges?.map(range => `${moment.utc(range.start).format('D/M')}-${moment.utc(range.end).format('D/M')}`).join(', ')\n };\n }) ?? [];\n csv += `${options.newline}Period (8000)${options.newline}[Rows]${options.newline}`;\n if (p.length) {\n csv += Papa.unparse(p, options);\n } else {\n csv += ['Period (8001)', 'GUID (5800)', 'TextBelowSchedule (8002)', 'Category (8006)', 'Calendar (8005)'].join(options.delimiter);\n }\n csv += options.newline;\n\n // append TA to csv\n const totalHoursRegex = /(\\d+) hrs/;\n const weekTimeRegex = /(\\d+) min\\/week/;\n const c = courses?.map(course => {\n // Only use deserialize teachers\n const teacherIds = course.teachers?.map(teacher => isString(teacher?.to) ? teacher.to : teacher?.to?.id?.toString()!).filter(Boolean);\n const teachers = teacherIds?.map(id => teacherMap.get(id)!).filter(Boolean) ?? [];\n\n // Only use deserialize groups\n const groupIds = course.groups?.map(group => isString(group?.to) ? group.to : group?.to?.id?.toString()!).filter(Boolean);\n const groups = groupIds?.map(id => groupMap.get(id)!).filter(Boolean) ?? [];\n\n // Only use deserialize syllabus\n const syllabus = course.syllabus;\n const isCourseSyllabus = !!syllabus?.courseCode;\n\n return {\n 'PK (8200)': '',\n 'GUID (5800)': course.ids,\n 'OriginalRecord (8224)': '1',\n 'CreateLesson (8227)': '1',\n 'Course (8202)': syllabus?.courseCode,\n 'Subject (8209)': isCourseSyllabus ? (syllabus?.subjectCode ?? course.subject) : (course.subject ?? syllabus?.subjectName) ?? '', // Nikos ansvarig för framtida buggar\n 'Teacher (8210)': teachers?.map(teacher => teacher.signature).filter(Boolean)\n .join(','),\n 'Group (8203)': groups?.map(group => group.displayName).filter(Boolean)\n .join(','),\n 'TotalHours (8204)': (course.plannedDuration && totalHoursRegex.test(course.plannedDuration)) ? totalHoursRegex.exec(course.plannedDuration)![1] : '',\n 'Weektime (8208)': (course.plannedDuration && weekTimeRegex.test(course.plannedDuration)) ? weekTimeRegex.exec(course.plannedDuration)![1] : '',\n 'Blockname (8215)': '',\n 'Period (8206)': '',\n 'Week (8207)': '',\n 'NotPeriod (8212)': '',\n 'NotWeek (8213)': ''\n };\n }) ?? [];\n csv += `${options.newline}TA (8200)${options.newline}[Rows]${options.newline}`;\n if (c.length) {\n csv += Papa.unparse(c, options);\n } else {\n csv += ['Course (8202)', 'GUID (5800)', 'Subject (8209)', 'Teacher (8210)', 'Group (8203)', 'TotalHours (8204)', 'Weektime (8208)', 'Blockname (8215)', 'Period (8206)', 'Week (8207)', 'NotPeriod (8212)', 'NotWeek (8213)'].join(options.delimiter);\n }\n csv += options.newline;\n\n // append lessons to csv\n const e = events?.filter(x => !isNaN(Date.parse(x.start?.toString() ?? '')))\n .map((event, index) => {\n const courseId = isString(event.course) ? event.course : event.course?.id;\n const course = courseId ? courseMap.get(courseId) : undefined;\n\n // Only use deserialize period\n let period = event.period == null ? course?.period : event.period;\n if (isString(period))\n period = periodMap.get(period);\n if ((period && !('ranges' in period)))\n period = undefined;\n\n // Only use deserialize teachers\n const t = event.teachers == null ? course?.teachers : event.teachers;\n const teacherIds = t?.map(teacher => isString(teacher?.to) ? teacher.to : teacher?.to?.id?.toString()!).filter(Boolean);\n const teachers = teacherIds?.map(id => teacherMap.get(id)!).filter(Boolean) ?? [];\n\n // Only use deserialize groups\n const g = event.groups == null ? course?.groups : event.groups;\n const groupIds = g?.map(group => isString(group?.to) ? group.to : group?.to?.id?.toString()!).filter(Boolean);\n const groups = groupIds?.map(id => groupMap.get(id)!).filter(Boolean) ?? [];\n\n // Only use deserialize locations\n const locationIds = event.inLocations?.map(location => isString(location) ? location : location?.id?.toString()!).filter(Boolean);\n const locations = locationIds?.map(id => locationMap.get(id)!).filter(Boolean) ?? [];\n const dayOfWeek = new Date(event.start?.toString()!).toLocaleDateString('sv-SE', { weekday: 'long', timeZone: 'UTC' });\n\n // Syllabus of the course\n const syllabusId = isString(course?.syllabus) ? course.syllabus : (course?.syllabus && isObjectIdOrHexString(course?.syllabus)) ? (course?.syllabus as Types.ObjectId | string).toString() : undefined;\n const syllabus = syllabusId ? syllabusMap.get(syllabusId) : course?.syllabus as CoreTypes.syllabus | undefined;\n const isCourseSyllabus = !!syllabus?.courseCode;\n\n // From start and end, get all weeks that the schedule spans\n const allWeeks: Moment[] = [];\n const endDate = moment.utc(end);\n const currentDate = moment.utc(start);\n while (currentDate.isBefore(endDate) || currentDate.isSame(endDate, 'day')) {\n allWeeks.push(currentDate.clone());\n currentDate.add(1, 'week');\n }\n\n const actualWeeks = period\n ? period?.ranges?.map(range => `${moment.utc(range.start).week()}-${moment.utc(range.end).week()}`).join(',')\n : allWeeks.map((week, index) => {\n const nextWeek = index < allWeeks.length - 1 ? allWeeks[index + 1] : week.clone().add(1, 'week');\n return `${week.week()}-${nextWeek.week()}`;\n }).join(',');\n\n // capitalize first letter of dayOfWeek\n const dayOfWeekCapitalized = dayOfWeek.charAt(0).toUpperCase() + dayOfWeek.slice(1);\n return {\n 'PK (7100)': index + 1,\n 'GUID (5800)': (event.ids && uuid.test(event.ids)) ? `{${event.ids}}` : '',\n 'DayOfWeek (7101)': dayOfWeekCapitalized,\n 'Starttime (7102)': moment.utc(event.start).format('HH:mm'),\n 'Length (7115)': event.duration,\n 'Course (7106)': syllabus?.courseCode,\n 'Subject (7103)': isCourseSyllabus ? (syllabus?.subjectCode ?? course?.subject) : (course?.subject ?? syllabus?.subjectName) ?? '', // Nikos ansvarig för framtida buggar\n 'Teacher (7104)': teachers?.map(teacher => teacher.signature).filter(Boolean)\n .join(','),\n 'Group (7105)': groups?.map(group => group.displayName).filter(Boolean)\n .join(','),\n 'Room (7107)': locations?.map(x => x.displayName).filter(Boolean)\n .join(','),\n 'Period (7108)': '',\n 'Week (7109)': '',\n 'ActualWeeks (7167)': actualWeeks\n };\n }) ?? [];\n csv += `${options.newline}Lesson (7100)${options.newline}[Rows]${options.newline}`;\n if (e.length) {\n csv += Papa.unparse(e, options);\n } else {\n csv += ['PK (7100)', 'GUID (5800)', 'DayOfWeek (7101)', 'Starttime (7102)', 'Length (7115)', 'Course (7106)', 'Subject (7103)', 'Period (7108)', 'Week (7109)', 'ActualWeeks (7167)'].join(options.delimiter);\n }\n\n return csv;\n};"],"mappings":"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"}
1
+ {"version":3,"file":"schedules.js","names":["s","teachers","groups","t","g","locations","allWeeks: moment.Moment[]","index"],"sources":["../../../../src/Schoolity/txt/to/schedules.ts"],"sourcesContent":["import Papa from 'papaparse';\nimport moment from 'moment';\nimport { isString } from 'lodash-es';\nimport type { Types as MongooseTypes } from 'mongoose';\nimport { isObjectIdOrHexString } from 'mongoose';\nimport type { CoreTypes } from '../../../core';\nimport type { BaseOptions } from '../../../common/types';\nimport { getVertexId } from '../../../core/util';\n\nconst papaOptions = {\n quotes: false, //or array of booleans\n quoteChar: '\"',\n escapeChar: '\"',\n delimiter: '\\t',\n header: true,\n newline: '\\r\\n',\n skipEmptyLines: false, //other option is 'greedy', meaning skip delimiters, quotes, and whitespace.\n // columns: null //or array of strings\n} as Papa.UnparseConfig;\n\nconst uuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n\nexport default (\n data: CoreTypes.mixed.schedule,\n options: BaseOptions = {}\n): string => {\n const { locations, teachers, groups, persons, events, courses, periods, syllabuses, divisions } = data;\n const { start, end, displayName } = divisions ?? data as unknown as CoreTypes.mixed.division;\n\n const startYear = moment.utc(start).year ();\n const startMonth = moment.utc(start).month();\n\n const courseMap = new Map(data.courses ?.map(x => [getVertexId(x, options), x]));\n const periodMap = new Map(data.periods ?.map(x => [getVertexId(x, options), x]));\n const teacherMap = new Map(data.teachers ?.map(x => [getVertexId(x, options), x]));\n const groupMap = new Map(data.groups ?.map(x => [getVertexId(x, options), x]));\n const locationMap = new Map(data.locations ?.map(x => [getVertexId(x, options), x]));\n const syllabusMap = new Map(data.syllabuses?.map(x => [getVertexId(x, options), x]));\n\n // Stupid thing Schoolity wants (Nikos responsible for future bugs)\n // This overrides the normal behavior for gr. So basically if a course has a subject it will always use that for subjectCode and fulltext, even if it has a syllabus with different values.\n // In the case where a course has a syllabus but no subject it will use the regular behavior.\n\n const subjectSyllabusMap = new Map<string, { subjectCode: string, guid?: string, fullText: string }>();\n if (courses) {\n for (const course of courses) {\n const subject = course.subject;\n const syllabus = course.syllabus;\n if (subject) {\n // If the course has a subject, we want to use that instead of syllabus. This is because Schoolity is stupid. Also note that this is endorsed by Nikos. :(\n if (!subjectSyllabusMap.has(subject)) {\n subjectSyllabusMap.set(subject, {\n subjectCode: subject,\n fullText: subject,\n guid: typeof syllabus == 'object' && 'ids' in syllabus ? syllabus?.ids : undefined\n });\n }\n } else if (typeof syllabus == 'object' && 'subjectCode' in syllabus && syllabus.subjectCode && !syllabus.courseCode) {\n // If the course has a syllabus but no subject, we want to use the syllabus id as the identifier\n // and not the course id. This is because Schoolity expects the syllabus to be unique across all courses.\n if (!subjectSyllabusMap.has(getVertexId(syllabus, options))) {\n subjectSyllabusMap.set(getVertexId(syllabus, options), {\n subjectCode: syllabus.subjectName, // Use subjectName as subjectCode (Nikos responsible for future bugs)\n fullText: syllabus.subjectName,\n guid: syllabus.ids\n });\n };\n }\n };\n }\n\n // Set cvs to the source section\n let csv = `[Source]${papaOptions.newline}ApplicationVerMajor=4${papaOptions.newline}ApplicationVerMinor=0${papaOptions.newline}DatabaseRevNo=527${papaOptions.newline}CurrentNovaschemDatabase=${papaOptions.newline}User=${papaOptions.newline}`;\n csv += `SchoolID=RS${papaOptions.newline}School=${displayName}${papaOptions.newline}County=RS${papaOptions.newline}`;\n csv += `BaseYear=${startYear}${papaOptions.newline}OffsetYear=0${papaOptions.newline}OffsetMonth=${startMonth}${papaOptions.newline}CreationDate=${moment().format('YYYY-MM-DD')}${papaOptions.newline}${papaOptions.newline}`;\n // add destination section to csv\n csv += `[Destination]${papaOptions.newline}Application=${papaOptions.newline}ApplicationID=${papaOptions.newline}${papaOptions.newline}`;\n\n // add database options to csv\n csv += `[DatabaseOptions]${papaOptions.newline}Update=TRUE${papaOptions.newline}AddNew=TRUE${papaOptions.newline}${papaOptions.newline}`;\n\n // start tables section\n csv += `[Tables]${papaOptions.newline}${papaOptions.newline}`;\n\n // append locations to csv\n const l = locations?.map(location => {\n return {\n 'Room (6601)': location.displayName!,\n 'GUID (5800)': (location.ids && uuid.test(location.ids)) ? `{${location.ids}}` : '',\n 'Category (6602)': location.tags?.find(tag => tag.type == 'category')?.value ?? '',\n 'SeatingCapacity (6607)': location.maximumCapacity,\n };\n }) ?? [];\n csv += `${papaOptions.newline}Room (6600)${papaOptions.newline}[Rows]${papaOptions.newline}`;\n if (l.length) {\n csv += Papa.unparse(l, papaOptions);\n } else {\n csv += ['Room (6601)', 'GUID (5800)', 'Category (6602)', 'SeatingCapacity (6607)'].join(papaOptions.delimiter);\n }\n csv += papaOptions.newline;\n\n // append subjects to csv\n // First add all subjects from syllabuses with courses (they should follow the standard)\n const subjectSyllabuses = syllabuses?.reduce((unique, syllabus) => {\n if (syllabus.subjectCode && syllabus.courseCode && !unique.seen.has(syllabus.subjectCode)) {\n unique.seen.add(syllabus.subjectCode);\n unique.result.push({\n 'Subject (6401)': syllabus.subjectCode,\n 'GUID (5800)': syllabus.ids,\n 'Category (6402)': '',\n 'FullText (6403)': syllabus.subjectName,\n 'BackgroundColor (6432)': '',\n 'TextColor (6433)': '',\n 'EvaluationNumber (6429)': ''\n });\n }\n return unique;\n }, {\n seen: new Set<string>(),\n result: [] as Array<{\n 'Subject (6401)': string;\n 'GUID (5800)': string | undefined;\n 'Category (6402)': string | undefined;\n 'FullText (6403)': string;\n 'BackgroundColor (6432)': string | undefined;\n 'TextColor (6433)': string | undefined;\n 'EvaluationNumber (6429)': string | undefined;\n }>\n })?.result ?? [];\n // Then add all subjects from the subjectSyllabusMap (they should follow the Nikos standard, that is, the stupid one)\n subjectSyllabuses.push(...Array.from(subjectSyllabusMap.values()).map(subject => {\n return {\n 'Subject (6401)': subject.subjectCode,\n 'GUID (5800)': subject.guid,\n 'Category (6402)': '',\n 'FullText (6403)': subject.fullText,\n 'BackgroundColor (6432)': '',\n 'TextColor (6433)': '',\n 'EvaluationNumber (6429)': ''\n };\n }));\n\n csv += `${papaOptions.newline}Subject (6400)${papaOptions.newline}[Rows]${papaOptions.newline}`;\n if (subjectSyllabuses.length) {\n csv += Papa.unparse(subjectSyllabuses, papaOptions);\n } else {\n csv += ['Subject (6401)', 'GUID (5800)', 'Category (6402)', 'FullText (6403)', 'BackgroundColor (6432)', 'TextColor (6433)', 'EvaluationNumber (6429)'].join(papaOptions.delimiter);\n }\n csv += papaOptions.newline;\n\n // append teachers to csv\n const t = teachers?.map(teacher => {\n return {\n 'Teacher (6001)': teacher.signature,\n 'GUID (5800)': '',\n 'Category (6002)': '',\n 'PersonalCode (6028)': 'person' in teacher && typeof teacher.person == 'object' && 'SSN' in teacher.person ? (teacher.person?.SSN?.value ?? '') : '',\n 'LastName (6003)': '',\n 'Title (6006)': '',\n 'FirstName (6004)': '',\n 'Phone (6033)': '',\n 'EMail (6034)': '',\n 'EvaluationNumber (6014)': ''\n };\n }) ?? [];\n csv += `${papaOptions.newline}Teacher (6000)${papaOptions.newline}[Rows]${papaOptions.newline}`;\n if (t.length) {\n csv += Papa.unparse(t, papaOptions);\n } else {\n csv += ['Teacher (6001)', 'GUID (5800)', 'Category (6002)', 'PersonalCode (6028)', 'LastName (6003)', 'Title (6006)', 'FirstName (6004)', 'Phone (6033)', 'EMail (6034)', 'EvaluationNumber (6014)'].join(papaOptions.delimiter);\n }\n csv += papaOptions.newline;\n\n // append students to csv\n const s = persons?.filter(person => {\n return person.type != 'Teacher';\n }).filter((s) => Boolean(s.SSN)).map(person => {\n return {\n 'Student (7201)': person.SSN?.value,\n 'GUID (5800)': (person.ids && uuid.test(person.ids)) ? `{${person.ids}}` : '',\n 'Category (7305)': '',\n 'LastName (7202)': person.lastName ?? '',\n 'FirstName (7211)': person.firstName ?? '',\n 'EMail (7215)': person.emails?.[0]?.value ?? ''\n };\n }) ?? [];\n csv += `${papaOptions.newline}Student (7200)${papaOptions.newline}[Rows]${papaOptions.newline}`;\n if (s.length) {\n csv += Papa.unparse(s, papaOptions);\n } else {\n csv += ['Student (7201)', 'GUID (5800)', 'Category (7305)', 'LastName (7202)', 'FirstName (7211)', 'EMail (7215)'].join(papaOptions.delimiter);\n }\n csv += papaOptions.newline;\n\n // create a map of students.id to students.SSN\n const studentMap = new Map(persons?.filter(x => x.type != 'Teacher').map(x => [getVertexId(x, options), x.SSN?.value ?? '']));\n\n // append groups to csv\n const g = groups?.map(group => {\n return {\n 'Group (6201)': group.displayName!,\n 'GUID (5800)': (group.ids && uuid.test(group.ids)) ? `{${group.ids}}` : '',\n 'Class (6210)': group.species == 'class' ? 1 : 0,\n 'Teacher (6204)': '',\n 'IClass (6206)': '',\n 'Student (6205)': group.members?.map(x => studentMap.get(getVertexId(x, options))).filter(Boolean).join(',')\n };\n }) ?? [];\n csv += `${papaOptions.newline}Group (6200)${papaOptions.newline}[Rows]${papaOptions.newline}`;\n if (g.length) {\n csv += Papa.unparse(g, papaOptions);\n } else {\n csv += ['Group (6201)', 'GUID (5800)', 'Class (6210)', 'Teacher (6204)', 'IClass (6206)', 'Student (6205)'].join(papaOptions.delimiter);\n }\n csv += papaOptions.newline;\n\n // append courses to csv (only if there actually are courses, since its very important to Schoolity that the course table isn't present for GR)\n const courseSyllabuses = syllabuses?.filter(syllabus => !!syllabus.courseName).map(syllabus => {\n return {\n 'Course (7601)': syllabus.courseCode,\n 'GUID (5800)': syllabus.ids,\n 'FullText (7602)': syllabus.courseName,\n 'Subject (7603)': syllabus.subjectCode ?? '',\n 'Points (7604)': syllabus.points\n };\n }) ?? [];\n if (courseSyllabuses.length) {\n csv += `${papaOptions.newline}Course (7600)${papaOptions.newline}[Rows]${papaOptions.newline}`;\n csv += Papa.unparse(courseSyllabuses, papaOptions);\n csv += papaOptions.newline;\n }\n // else {\n // csv += ['PK (7100)', 'GUID (5800)', 'DayOfWeek (7101)', 'Starttime (7102)', 'Length (7115)', 'Course (7106)', 'Subject (7103)', 'Period (7108)', 'Week (7109)', 'ActualWeeks (7167)'].join(options.delimiter);\n // }\n\n // append periods to csv\n const p = periods?.map(period => {\n return {\n 'Period (8001)': period.displayName!,\n 'GUID (5800)': (period.ids && uuid.test(period.ids)) ? `{${period.ids}}` : '',\n 'TextBelowSchedule (8002)': period.displayName!,\n 'Category (8006)': '',\n 'Calendar (8005)': period.ranges?.map(range => `${moment.utc(range.start).format('D/M')}-${moment.utc(range.end).format('D/M')}`).join(', ')\n };\n }) ?? [];\n csv += `${papaOptions.newline}Period (8000)${papaOptions.newline}[Rows]${papaOptions.newline}`;\n if (p.length) {\n csv += Papa.unparse(p, papaOptions);\n } else {\n csv += ['Period (8001)', 'GUID (5800)', 'TextBelowSchedule (8002)', 'Category (8006)', 'Calendar (8005)'].join(papaOptions.delimiter);\n }\n csv += papaOptions.newline;\n\n // append TA to csv\n const totalHoursRegex = /(\\d+) hrs/;\n const weekTimeRegex = /(\\d+) min\\/week/;\n const c = courses?.map(course => {\n // Only use deserialize teachers\n const teacherIds = course.teachers?.map(x => getVertexId(x.to, options));\n const teachers = teacherIds?.map(id => teacherMap.get(id)).filter(x => x != null) ?? [];\n\n // Only use deserialize groups\n const groupIds = course.groups?.map(x => getVertexId(x.to, options));\n const groups = groupIds?.map(id => groupMap.get(id)).filter(x => x != null) ?? [];\n\n // Only use deserialize syllabus\n const syllabus = course.syllabus;\n const subject = syllabus && typeof syllabus == 'object'\n ? 'courseCode' in syllabus\n ? syllabus.subjectCode ?? course.subject\n : course.subject ?? ('subjectName' in syllabus ? syllabus.subjectName : undefined)\n : course.subject;\n\n return {\n 'PK (8200)': '',\n 'GUID (5800)': course.ids,\n 'OriginalRecord (8224)': '1',\n 'CreateLesson (8227)': '1',\n 'Course (8202)': typeof syllabus == 'object' && 'courseCode' in syllabus ? syllabus?.courseCode : undefined,\n 'Subject (8209)': subject ?? '', // Nikos ansvarig för framtida buggar\n 'Teacher (8210)': teachers?.map(x => x.signature ).filter(Boolean).join(','),\n 'Group (8203)': groups ?.map(x => x.displayName).filter(Boolean).join(','),\n 'TotalHours (8204)': (course.plannedDuration && totalHoursRegex.test(course.plannedDuration)) ? totalHoursRegex.exec(course.plannedDuration)![1] : '',\n 'Weektime (8208)': (course.plannedDuration && weekTimeRegex.test(course.plannedDuration)) ? weekTimeRegex.exec(course.plannedDuration)![1] : '',\n 'Blockname (8215)': '',\n 'Period (8206)': '',\n 'Week (8207)': '',\n 'NotPeriod (8212)': '',\n 'NotWeek (8213)': ''\n };\n }) ?? [];\n csv += `${papaOptions.newline}TA (8200)${papaOptions.newline}[Rows]${papaOptions.newline}`;\n if (c.length) {\n csv += Papa.unparse(c, papaOptions);\n } else {\n csv += ['Course (8202)', 'GUID (5800)', 'Subject (8209)', 'Teacher (8210)', 'Group (8203)', 'TotalHours (8204)', 'Weektime (8208)', 'Blockname (8215)', 'Period (8206)', 'Week (8207)', 'NotPeriod (8212)', 'NotWeek (8213)'].join(papaOptions.delimiter);\n }\n csv += papaOptions.newline;\n\n // append lessons to csv\n const e = events\n // ?.filter(x => !isNaN(Date.parse(x.start?.toString() ?? '')))\n ?.map((event, index) => {\n if (!event.start || !event.end) return;\n\n const courseId = event.course ? getVertexId(event.course, options) : undefined;\n const course = courseId ? courseMap.get(courseId) : undefined;\n\n // Only use deserialize period\n let period = event.period == null ? course?.period : event.period;\n if (isString(period))\n period = periodMap.get(period);\n if ((period && !('ranges' in period)))\n period = undefined;\n\n // Only use deserialize teachers\n const t = event.teachers == null ? course?.teachers : event.teachers;\n const teacherIds = t?.map(x => getVertexId(x.to, options));\n const teachers = teacherIds?.map(id => teacherMap.get(id)).filter(Boolean) ?? [];\n\n // Only use deserialize groups\n const g = event.groups == null ? course?.groups : event.groups;\n const groupIds = g?.map(x => getVertexId(x.to, options));\n const groups = groupIds?.map(id => groupMap.get(id)).filter(Boolean) ?? [];\n\n // Only use deserialize locations\n const locationIds = event.inLocations?.map(x => x ? getVertexId(x, options) : null).filter(x => x != null);\n const locations = locationIds?.map(id => locationMap.get(id)).filter(Boolean) ?? [];\n const dayOfWeek = moment.utc(event.start).toDate().toLocaleDateString('sv-SE', { weekday: 'long', timeZone: 'UTC' });\n\n // Syllabus of the course\n const syllabusId = isString(course?.syllabus) ? course.syllabus : (course?.syllabus && isObjectIdOrHexString(course?.syllabus)) ? (course?.syllabus as MongooseTypes.ObjectId | string).toString() : undefined;\n const syllabus = syllabusId ? syllabusMap.get(syllabusId) : course?.syllabus as CoreTypes.syllabus | undefined;\n const isCourseSyllabus = !!syllabus?.courseCode;\n\n // From start and end, get all weeks that the schedule spans\n const allWeeks: moment.Moment[] = [];\n const endDate = moment.utc(end);\n const currentDate = moment.utc(start);\n while (currentDate.isBefore(endDate) || currentDate.isSame(endDate, 'day')) {\n allWeeks.push(currentDate.clone());\n currentDate.add(1, 'week');\n }\n\n const actualWeeks = period\n ? period?.ranges?.map(range => `${moment.utc(range.start).week()}-${moment.utc(range.end).week()}`).join(',')\n : allWeeks.map((week, index) => {\n const nextWeek = index < allWeeks.length - 1 ? allWeeks[index + 1] : week.clone().add(1, 'week');\n return `${week.week()}-${nextWeek.week()}`;\n }).join(',');\n\n // capitalize first letter of dayOfWeek\n const dayOfWeekCapitalized = dayOfWeek.charAt(0).toUpperCase() + dayOfWeek.slice(1);\n return {\n 'PK (7100)': index + 1,\n 'GUID (5800)': (event.ids && uuid.test(event.ids)) ? `{${event.ids}}` : '',\n 'DayOfWeek (7101)': dayOfWeekCapitalized,\n 'Starttime (7102)': moment.utc(event.start).format('HH:mm'),\n 'Length (7115)': event.duration,\n 'Course (7106)': syllabus?.courseCode,\n 'Subject (7103)': isCourseSyllabus ? (syllabus?.subjectCode ?? course?.subject) : (course?.subject ?? syllabus?.subjectName) ?? '', // Nikos ansvarig för framtida buggar\n 'Teacher (7104)': teachers ?.map(x => x?.signature ).filter(Boolean).join(','),\n 'Group (7105)': groups ?.map(x => x?.displayName).filter(Boolean).join(','),\n 'Room (7107)': locations?.map(x => x?.displayName).filter(Boolean).join(','),\n 'Period (7108)': '',\n 'Week (7109)': '',\n 'ActualWeeks (7167)': actualWeeks\n };\n }) ?? [];\n csv += `${papaOptions.newline}Lesson (7100)${papaOptions.newline}[Rows]${papaOptions.newline}`;\n if (e.length) {\n csv += Papa.unparse(e, papaOptions);\n } else {\n csv += ['PK (7100)', 'GUID (5800)', 'DayOfWeek (7101)', 'Starttime (7102)', 'Length (7115)', 'Course (7106)', 'Subject (7103)', 'Period (7108)', 'Week (7109)', 'ActualWeeks (7167)'].join(papaOptions.delimiter);\n }\n\n return csv;\n};"],"mappings":";;;;;;;AASA,MAAM,cAAc;CAClB,QAAgB;CAChB,WAAgB;CAChB,YAAgB;CAChB,WAAgB;CAChB,QAAgB;CAChB,SAAgB;CAChB,gBAAgB;;AAIlB,MAAM,OAAO;AAEb,yBACE,MACA,UAAuB,OACZ;CACX,MAAM,EAAE,WAAW,UAAU,QAAQ,SAAS,QAAQ,SAAS,SAAS,YAAY,cAAc;CAClG,MAAM,EAAE,OAAO,KAAK,gBAAgB,aAAa;CAEjD,MAAM,YAAa,OAAO,IAAI,OAAO;CACrC,MAAM,aAAa,OAAO,IAAI,OAAO;CAErC,MAAM,YAAc,IAAI,IAAI,KAAK,SAAY,KAAI,MAAK,CAAC,YAAY,GAAG,UAAU;CAChF,MAAM,YAAc,IAAI,IAAI,KAAK,SAAY,KAAI,MAAK,CAAC,YAAY,GAAG,UAAU;CAChF,MAAM,aAAc,IAAI,IAAI,KAAK,UAAY,KAAI,MAAK,CAAC,YAAY,GAAG,UAAU;CAChF,MAAM,WAAc,IAAI,IAAI,KAAK,QAAY,KAAI,MAAK,CAAC,YAAY,GAAG,UAAU;CAChF,MAAM,cAAc,IAAI,IAAI,KAAK,WAAY,KAAI,MAAK,CAAC,YAAY,GAAG,UAAU;CAChF,MAAM,cAAc,IAAI,IAAI,KAAK,YAAY,KAAI,MAAK,CAAC,YAAY,GAAG,UAAU;CAMhF,MAAM,qCAAqB,IAAI;AAC/B,KAAI,QACF,MAAK,MAAM,UAAU,SAAS;EAC5B,MAAM,UAAU,OAAO;EACvB,MAAM,WAAW,OAAO;AACxB,MAAI,SAEF;OAAI,CAAC,mBAAmB,IAAI,SAC1B,oBAAmB,IAAI,SAAS;IAC9B,aAAa;IACb,UAAa;IACb,MAAa,OAAO,YAAY,YAAY,SAAS,WAAW,UAAU,MAAM;;aAG3E,OAAO,YAAY,YAAY,iBAAiB,YAAY,SAAS,eAAe,CAAC,SAAS,YAGvG;OAAI,CAAC,mBAAmB,IAAI,YAAY,UAAU,UAChD,oBAAmB,IAAI,YAAY,UAAU,UAAU;IACrD,aAAa,SAAS;IACtB,UAAa,SAAS;IACtB,MAAa,SAAS;;;;CAQhC,IAAI,MAAM,WAAW,YAAY,QAAQ,uBAAuB,YAAY,QAAQ,uBAAuB,YAAY,QAAQ,mBAAmB,YAAY,QAAQ,2BAA2B,YAAY,QAAQ,OAAO,YAAY;AACxO,QAAO,cAAc,YAAY,QAAQ,SAAS,cAAc,YAAY,QAAQ,WAAW,YAAY;AAC3G,QAAO,YAAY,YAAY,YAAY,QAAQ,cAAc,YAAY,QAAQ,cAAc,aAAa,YAAY,QAAQ,eAAe,SAAS,OAAO,gBAAgB,YAAY,UAAU,YAAY;AAErN,QAAO,gBAAgB,YAAY,QAAQ,cAAc,YAAY,QAAQ,gBAAgB,YAAY,UAAU,YAAY;AAG/H,QAAO,oBAAoB,YAAY,QAAQ,aAAa,YAAY,QAAQ,aAAa,YAAY,UAAU,YAAY;AAG/H,QAAO,WAAW,YAAY,UAAU,YAAY;CAGpD,MAAM,IAAI,WAAW,KAAI,aAAY;AACnC,SAAO;GACL,eAA0B,SAAS;GACnC,eAA2B,SAAS,OAAO,KAAK,KAAK,SAAS,OAAQ,IAAI,SAAS,IAAI,KAAK;GAC5F,mBAA0B,SAAS,MAAM,MAAK,QAAO,IAAI,QAAQ,aAAa,SAAS;GACvF,0BAA0B,SAAS;;OAEjC;AACN,QAAO,GAAG,YAAY,QAAQ,aAAa,YAAY,QAAQ,QAAQ,YAAY;AACnF,KAAI,EAAE,OACJ,QAAO,KAAK,QAAQ,GAAG;KAEvB,QAAO;EAAC;EAAe;EAAe;EAAmB;GAA0B,KAAK,YAAY;AAEtG,QAAO,YAAY;CAInB,MAAM,oBAAoB,YAAY,QAAQ,QAAQ,aAAa;AACjE,MAAI,SAAS,eAAe,SAAS,cAAc,CAAC,OAAO,KAAK,IAAI,SAAS,cAAc;AACzF,UAAO,KAAK,IAAI,SAAS;AACzB,UAAO,OAAO,KAAK;IACjB,kBAA2B,SAAS;IACpC,eAA2B,SAAS;IACpC,mBAA2B;IAC3B,mBAA2B,SAAS;IACpC,0BAA2B;IAC3B,oBAA2B;IAC3B,2BAA2B;;;AAG/B,SAAO;IACN;EACD,sBAAQ,IAAI;EACZ,QAAQ;KASN,UAAU;AAEd,mBAAkB,KAAK,GAAG,MAAM,KAAK,mBAAmB,UAAU,KAAI,YAAW;AAC/E,SAAO;GACL,kBAA2B,QAAQ;GACnC,eAA2B,QAAQ;GACnC,mBAA2B;GAC3B,mBAA2B,QAAQ;GACnC,0BAA2B;GAC3B,oBAA2B;GAC3B,2BAA2B;;;AAI/B,QAAO,GAAG,YAAY,QAAQ,gBAAgB,YAAY,QAAQ,QAAQ,YAAY;AACtF,KAAI,kBAAkB,OACpB,QAAO,KAAK,QAAQ,mBAAmB;KAEvC,QAAO;EAAC;EAAkB;EAAe;EAAmB;EAAmB;EAA0B;EAAoB;GAA2B,KAAK,YAAY;AAE3K,QAAO,YAAY;CAGnB,MAAM,IAAI,UAAU,KAAI,YAAW;AACjC,SAAO;GACL,kBAA2B,QAAQ;GACnC,eAA2B;GAC3B,mBAA2B;GAC3B,uBAA2B,YAAY,WAAW,OAAO,QAAQ,UAAU,YAAY,SAAS,QAAQ,SAAU,QAAQ,QAAQ,KAAK,SAAS,KAAM;GACtJ,mBAA2B;GAC3B,gBAA2B;GAC3B,oBAA2B;GAC3B,gBAA2B;GAC3B,gBAA2B;GAC3B,2BAA2B;;OAEzB;AACN,QAAO,GAAG,YAAY,QAAQ,gBAAgB,YAAY,QAAQ,QAAQ,YAAY;AACtF,KAAI,EAAE,OACJ,QAAO,KAAK,QAAQ,GAAG;KAEvB,QAAO;EAAC;EAAkB;EAAe;EAAmB;EAAuB;EAAmB;EAAgB;EAAoB;EAAgB;EAAgB;GAA2B,KAAK,YAAY;AAExN,QAAO,YAAY;CAGnB,MAAM,IAAI,SAAS,QAAO,WAAU;AAClC,SAAO,OAAO,QAAQ;IACrB,QAAQ,QAAM,QAAQA,IAAE,MAAM,KAAI,WAAU;AAC7C,SAAO;GACL,kBAAoB,OAAO,KAAK;GAChC,eAAqB,OAAO,OAAO,KAAK,KAAK,OAAO,OAAQ,IAAI,OAAO,IAAI,KAAK;GAChF,mBAAoB;GACpB,mBAAoB,OAAO,YAAY;GACvC,oBAAoB,OAAO,aAAa;GACxC,gBAAoB,OAAO,SAAS,IAAI,SAAS;;OAE/C;AACN,QAAO,GAAG,YAAY,QAAQ,gBAAgB,YAAY,QAAQ,QAAQ,YAAY;AACtF,KAAI,EAAE,OACJ,QAAO,KAAK,QAAQ,GAAG;KAEvB,QAAO;EAAC;EAAkB;EAAe;EAAmB;EAAmB;EAAoB;GAAgB,KAAK,YAAY;AAEtI,QAAO,YAAY;CAGnB,MAAM,aAAa,IAAI,IAAI,SAAS,QAAO,MAAK,EAAE,QAAQ,WAAW,KAAI,MAAK,CAAC,YAAY,GAAG,UAAU,EAAE,KAAK,SAAS;CAGxH,MAAM,IAAI,QAAQ,KAAI,UAAS;AAC7B,SAAO;GACL,gBAAkB,MAAM;GACxB,eAAmB,MAAM,OAAO,KAAK,KAAK,MAAM,OAAQ,IAAI,MAAM,IAAI,KAAK;GAC3E,gBAAkB,MAAM,WAAW,UAAU,IAAI;GACjD,kBAAkB;GAClB,iBAAkB;GAClB,kBAAkB,MAAM,SAAS,KAAI,MAAK,WAAW,IAAI,YAAY,GAAG,WAAW,OAAO,SAAS,KAAK;;OAEtG;AACN,QAAO,GAAG,YAAY,QAAQ,cAAc,YAAY,QAAQ,QAAQ,YAAY;AACpF,KAAI,EAAE,OACJ,QAAO,KAAK,QAAQ,GAAG;KAEvB,QAAO;EAAC;EAAgB;EAAe;EAAgB;EAAkB;EAAiB;GAAkB,KAAK,YAAY;AAE/H,QAAO,YAAY;CAGnB,MAAM,mBAAmB,YAAY,QAAO,aAAY,CAAC,CAAC,SAAS,YAAY,KAAI,aAAY;AAC7F,SAAO;GACL,iBAAmB,SAAS;GAC5B,eAAmB,SAAS;GAC5B,mBAAmB,SAAS;GAC5B,kBAAmB,SAAS,eAAe;GAC3C,iBAAmB,SAAS;;OAE1B;AACN,KAAI,iBAAiB,QAAQ;AAC3B,SAAO,GAAG,YAAY,QAAQ,eAAe,YAAY,QAAQ,QAAQ,YAAY;AACrF,SAAO,KAAK,QAAQ,kBAAkB;AACtC,SAAO,YAAY;;CAOrB,MAAM,IAAI,SAAS,KAAI,WAAU;AAC/B,SAAO;GACL,iBAA4B,OAAO;GACnC,eAA6B,OAAO,OAAO,KAAK,KAAK,OAAO,OAAQ,IAAI,OAAO,IAAI,KAAK;GACxF,4BAA4B,OAAO;GACnC,mBAA4B;GAC5B,mBAA4B,OAAO,QAAQ,KAAI,UAAS,GAAG,OAAO,IAAI,MAAM,OAAO,OAAO,OAAO,GAAG,OAAO,IAAI,MAAM,KAAK,OAAO,UAAU,KAAK;;OAE9I;AACN,QAAO,GAAG,YAAY,QAAQ,eAAe,YAAY,QAAQ,QAAQ,YAAY;AACrF,KAAI,EAAE,OACJ,QAAO,KAAK,QAAQ,GAAG;KAEvB,QAAO;EAAC;EAAiB;EAAe;EAA4B;EAAmB;GAAmB,KAAK,YAAY;AAE7H,QAAO,YAAY;CAGnB,MAAM,kBAAkB;CACxB,MAAM,gBAAgB;CACtB,MAAM,IAAI,SAAS,KAAI,WAAU;EAE/B,MAAM,aAAa,OAAO,UAAU,KAAI,MAAK,YAAY,EAAE,IAAI;EAC/D,MAAMC,aAAa,YAAY,KAAI,OAAM,WAAW,IAAI,KAAK,QAAO,MAAK,KAAK,SAAS;EAGvF,MAAM,WAAa,OAAO,QAAQ,KAAI,MAAK,YAAY,EAAE,IAAI;EAC7D,MAAMC,WAAa,UAAU,KAAI,OAAM,SAAS,IAAI,KAAK,QAAO,MAAK,KAAK,SAAS;EAGnF,MAAM,WAAW,OAAO;EACxB,MAAM,UAAU,YAAY,OAAO,YAAY,WAC3C,gBAAgB,WACd,SAAS,eAAe,OAAO,UAC/B,OAAO,YAAY,iBAAiB,WAAW,SAAS,cAAc,UACxE,OAAO;AAEX,SAAO;GACL,aAAyB;GACzB,eAAyB,OAAO;GAChC,yBAAyB;GACzB,uBAAyB;GACzB,iBAAyB,OAAO,YAAY,YAAY,gBAAgB,WAAW,UAAU,aAAa;GAC1G,kBAAyB,WAAW;GACpC,kBAAyBD,YAAU,KAAI,MAAK,EAAE,WAAa,OAAO,SAAS,KAAK;GAChF,gBAAyBC,UAAU,KAAI,MAAK,EAAE,aAAa,OAAO,SAAS,KAAK;GAChF,qBAA0B,OAAO,mBAAmB,gBAAgB,KAAK,OAAO,mBAAoB,gBAAgB,KAAK,OAAO,iBAAkB,KAAK;GACvJ,mBAA0B,OAAO,mBAAmB,cAAc,KAAK,OAAO,mBAAoB,cAAc,KAAK,OAAO,iBAAkB,KAAK;GACnJ,oBAAyB;GACzB,iBAAyB;GACzB,eAAyB;GACzB,oBAAyB;GACzB,kBAAyB;;OAEvB;AACN,QAAO,GAAG,YAAY,QAAQ,WAAW,YAAY,QAAQ,QAAQ,YAAY;AACjF,KAAI,EAAE,OACJ,QAAO,KAAK,QAAQ,GAAG;KAEvB,QAAO;EAAC;EAAiB;EAAe;EAAkB;EAAkB;EAAgB;EAAqB;EAAmB;EAAoB;EAAiB;EAAe;EAAoB;GAAkB,KAAK,YAAY;AAEjP,QAAO,YAAY;CAGnB,MAAM,IAAI,QAEN,KAAK,OAAO,UAAU;AACtB,MAAI,CAAC,MAAM,SAAS,CAAC,MAAM,IAAK;EAEhC,MAAM,WAAW,MAAM,SAAS,YAAY,MAAM,QAAQ,WAAW;EACrE,MAAM,SAAS,WAAW,UAAU,IAAI,YAAY;EAGpD,IAAI,SAAS,MAAM,UAAU,OAAO,QAAQ,SAAS,MAAM;AAC3D,MAAI,SAAS,QACX,UAAS,UAAU,IAAI;AACzB,MAAK,UAAU,EAAE,YAAY,QAC3B,UAAS;EAGX,MAAMC,MAAa,MAAM,YAAY,OAAO,QAAQ,WAAW,MAAM;EACrE,MAAM,aAAaA,KAAG,KAAI,MAAK,YAAY,EAAE,IAAI;EACjD,MAAMF,aAAa,YAAY,KAAI,OAAM,WAAW,IAAI,KAAK,OAAO,YAAY;EAGhF,MAAMG,MAAa,MAAM,UAAU,OAAO,QAAQ,SAAS,MAAM;EACjE,MAAM,WAAaA,KAAG,KAAI,MAAK,YAAY,EAAE,IAAI;EACjD,MAAMF,WAAa,UAAU,KAAI,OAAM,SAAS,IAAI,KAAK,OAAO,YAAY;EAG5E,MAAM,cAAc,MAAM,aAAa,KAAI,MAAK,IAAI,YAAY,GAAG,WAAW,MAAM,QAAO,MAAK,KAAK;EACrG,MAAMG,cAAc,aAAa,KAAI,OAAM,YAAY,IAAI,KAAK,OAAO,YAAY;EACnF,MAAM,YAAc,OAAO,IAAI,MAAM,OAAO,SAAS,mBAAmB,SAAS;GAAE,SAAS;GAAQ,UAAU;;EAG9G,MAAM,aAAa,SAAS,QAAQ,YAAY,OAAO,WAAY,QAAQ,YAAY,sBAAsB,QAAQ,aAAc,QAAQ,UAA6C,aAAa;EACrM,MAAM,WAAW,aAAa,YAAY,IAAI,cAAc,QAAQ;EACpE,MAAM,mBAAmB,CAAC,CAAC,UAAU;EAGrC,MAAMC,WAA4B;EAClC,MAAM,UAAU,OAAO,IAAI;EAC3B,MAAM,cAAc,OAAO,IAAI;AAC/B,SAAO,YAAY,SAAS,YAAY,YAAY,OAAO,SAAS,QAAQ;AAC1E,YAAS,KAAK,YAAY;AAC1B,eAAY,IAAI,GAAG;;EAGrB,MAAM,cAAc,SAChB,QAAQ,QAAQ,KAAI,UAAS,GAAG,OAAO,IAAI,MAAM,OAAO,OAAO,GAAG,OAAO,IAAI,MAAM,KAAK,UAAU,KAAK,OACvG,SAAS,KAAK,MAAM,YAAU;GAC9B,MAAM,WAAWC,UAAQ,SAAS,SAAS,IAAI,SAASA,UAAQ,KAAK,KAAK,QAAQ,IAAI,GAAG;AACzF,UAAO,GAAG,KAAK,OAAO,GAAG,SAAS;KACjC,KAAK;EAGV,MAAM,uBAAuB,UAAU,OAAO,GAAG,gBAAgB,UAAU,MAAM;AACjF,SAAO;GACL,aAAsB,QAAQ;GAC9B,eAAuB,MAAM,OAAO,KAAK,KAAK,MAAM,OAAQ,IAAI,MAAM,IAAI,KAAK;GAC/E,oBAAsB;GACtB,oBAAsB,OAAO,IAAI,MAAM,OAAO,OAAO;GACrD,iBAAsB,MAAM;GAC5B,iBAAsB,UAAU;GAChC,kBAAsB,mBAAoB,UAAU,eAAe,QAAQ,UAAY,QAAQ,WAAW,UAAU,eAAgB;GACpI,kBAAsBN,YAAW,KAAI,MAAK,GAAG,WAAa,OAAO,SAAS,KAAK;GAC/E,gBAAsBC,UAAW,KAAI,MAAK,GAAG,aAAa,OAAO,SAAS,KAAK;GAC/E,eAAsBG,aAAW,KAAI,MAAK,GAAG,aAAa,OAAO,SAAS,KAAK;GAC/E,iBAAsB;GACtB,eAAsB;GACtB,sBAAsB;;OAEpB;AACR,QAAO,GAAG,YAAY,QAAQ,eAAe,YAAY,QAAQ,QAAQ,YAAY;AACrF,KAAI,EAAE,OACJ,QAAO,KAAK,QAAQ,GAAG;KAEvB,QAAO;EAAC;EAAa;EAAe;EAAoB;EAAoB;EAAiB;EAAiB;EAAkB;EAAiB;EAAe;GAAsB,KAAK,YAAY;AAGzM,QAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["MDBMap","TXTMap"],"sources":["../../src/Skola24/index.ts"],"sourcesContent":["import { Map as MDBMap } from './mdb';\nimport { Map as TXTMap } from './txt';\n\nexport class Skola24Map {\n // static to = V2Map.to;\n // static from = V2Map.from;\n\n static MDB = MDBMap;\n static TXT = TXTMap;\n}\n\nexport type { Types as Skola24MDBTypes } from './mdb';\nexport type { Types as Skola24TXTTypes } from './txt';"],"mappings":";;;;AAGA,IAAa,aAAb,MAAwB;CAItB,OAAO,MAAMA;CACb,OAAO,MAAMC"}
1
+ {"version":3,"file":"index.js","names":["MDBMap","TXTMap"],"sources":["../../src/Skola24/index.ts"],"sourcesContent":["import { Map as MDBMap } from './mdb';\nimport { Map as TXTMap } from './txt';\n\nexport class Skola24Map {\n static MDB = MDBMap;\n static TXT = TXTMap;\n}\n\nexport type { Types as Skola24MDBTypes } from './mdb';\nexport type { Types as Skola24TXTTypes } from './txt';\n"],"mappings":";;;;AAGA,IAAa,aAAb,MAAwB;CACtB,OAAO,MAAMA;CACb,OAAO,MAAMC"}
@@ -1,5 +1,6 @@
1
+ import { makeChainable } from "../../../common/make-chainable/index.js";
2
+ import { uniqBy } from "lodash-es";
1
3
  import moment from "moment";
2
- import { groupBy, identity, isEqual, size } from "lodash-es";
3
4
 
4
5
  //#region src/Skola24/mdb/from/course-and-events.ts
5
6
  const separator = ", ";
@@ -23,7 +24,7 @@ function startAndEnd(lesson) {
23
24
  end,
24
25
  parked: false
25
26
  };
26
- } else return {};
27
+ }
27
28
  }
28
29
  function parseActualWeeks(val) {
29
30
  if (!val) return [];
@@ -39,7 +40,7 @@ function parseActualWeeks(val) {
39
40
  function addGroupsFromName(name, groupSet, groupNamePkMap) {
40
41
  const regex = /-([^\s-]+)/gi;
41
42
  let matches;
42
- while (matches = regex.exec(name)) if (groupNamePkMap.has(matches[1])) {
43
+ while ((matches = regex.exec(name)) !== null) if (groupNamePkMap.has(matches[1])) {
43
44
  const PK = groupNamePkMap.get(matches[1]);
44
45
  groupSet.add(PK);
45
46
  }
@@ -106,15 +107,17 @@ function course_and_events_default(groups, lessons, meta, groupPlansMap, planMap
106
107
  });
107
108
  });
108
109
  const courseHasGroups = coursesIds.some((x) => courseMap.get(x)?.groups);
109
- if (meta?.deduceGroupsFromCourseName && (!courseHasGroups || classes.size)) coursesIds.map((x) => courseMap.get(x)?.displayName).filter((x) => !!x).forEach((x) => addGroupsFromName(x, classes, groupNamePkMap));
110
+ if (meta?.deduceGroupsFromCourseName && (!courseHasGroups || classes.size)) coursesIds.map((x) => courseMap.get(x)?.displayName).filter((x) => x != null).forEach((x) => addGroupsFromName(x, classes, groupNamePkMap));
110
111
  if (classes.size) event.groups = [...classes].map((to) => ({ to }));
111
112
  const subject = subjectMap.get(l.FKSubject);
112
113
  if (subject?.toLowerCase() == arbetstid) {
113
- if (!event.start || !event.end) {
114
+ const start = event.start;
115
+ const end = event.end;
116
+ if (!start || !end) {
114
117
  warnings.push("Start or end not set on interval event");
115
118
  return;
116
119
  }
117
- const day = getDay(event.start);
120
+ const day = getDay(moment.utc(start));
118
121
  if (0 > day || day > numDays - 1) {
119
122
  warnings.push("Interval day out of bounds");
120
123
  return;
@@ -122,8 +125,8 @@ function course_and_events_default(groups, lessons, meta, groupPlansMap, planMap
122
125
  teachers?.forEach((t) => {
123
126
  if (!intervalMap.has(t)) intervalMap.set(t, /* @__PURE__ */ new Map());
124
127
  intervalMap.get(t)?.set(day, {
125
- start: event.start,
126
- end: event.end
128
+ start,
129
+ end
127
130
  });
128
131
  });
129
132
  } else {
@@ -164,12 +167,12 @@ function course_and_events_default(groups, lessons, meta, groupPlansMap, planMap
164
167
  const subjects = /* @__PURE__ */ new Set();
165
168
  const groups$1 = /* @__PURE__ */ new Set();
166
169
  const teachers = /* @__PURE__ */ new Set();
167
- courseIds.map((x) => courseMap.get(x)).filter((c) => !!c).forEach((c) => {
168
- c.ids && idss.push(c.ids);
169
- c.displayName && displayNames.push(c.displayName);
170
- c.subject && subjects.add(c.subject);
171
- c.groups && c.groups.forEach(({ to }) => groups$1.add(to.toString()));
172
- c.teachers && c.teachers.forEach(({ to }) => teachers.add(to.toString()));
170
+ courseIds.map((x) => courseMap.get(x)).filter((c) => c != void 0).forEach((c) => {
171
+ if (c.ids) idss.push(c.ids);
172
+ if (c.displayName) displayNames.push(c.displayName);
173
+ if (c.subject) subjects.add(c.subject);
174
+ if (c.groups) c.groups.forEach(({ to }) => groups$1.add(to.toString()));
175
+ if (c.teachers) c.teachers.forEach(({ to }) => teachers.add(to.toString()));
173
176
  });
174
177
  const newKey = --numAdditionalCourses;
175
178
  const newCourse = {
@@ -189,11 +192,11 @@ function course_and_events_default(groups, lessons, meta, groupPlansMap, planMap
189
192
  eventMap.forEach((events, key) => {
190
193
  if (!events.length) return;
191
194
  const courseIds = key.split(separator).map((x) => parseInt(x));
192
- if (courseIds.length != 1 && events.length) throw "Well this was unexpected...";
195
+ if (courseIds.length != 1 && events.length) throw new Error("Well this was unexpected...");
193
196
  const courseId = courseIds[0];
194
197
  const PK = courseMap.get(courseId)?.ids;
195
198
  if (PK == void 0) {
196
- errors.push(`The events with PKs ${events.map((e) => e.ids)} were ignored since their course was not found.`);
199
+ errors.push(`The events with PKs ${events.map((e) => e.ids).join(", ")} were ignored since their course was not found.`);
197
200
  events.length = 0;
198
201
  return;
199
202
  }
@@ -209,20 +212,24 @@ function course_and_events_default(groups, lessons, meta, groupPlansMap, planMap
209
212
  "teachers",
210
213
  "locations"
211
214
  ];
212
- for (const key of keys) {
213
- let iterate;
214
- if (key == "groups" || key == "teachers") iterate = identity;
215
- if (key == "locations") iterate = "0.locations";
216
- courseMap.forEach((c, courseKey) => {
217
- const events = eventMap.get(courseKey.toString());
218
- const courseEntry = c[key]?.sort();
219
- const eventEntries = events?.map((e) => e[key]?.sort());
220
- if (eventEntries?.[0] && size(groupBy(eventEntries, iterate)) == 1 && (!courseEntry || courseEntry.length == 0 || isEqual(courseEntry, eventEntries[0]))) {
215
+ for (const key of keys) courseMap.forEach((c, courseKey) => {
216
+ const events = eventMap.get(courseKey.toString());
217
+ const eventEntries = makeChainable(events ?? []).chain((x) => x.map((e) => e[key] ?? c[key]).filter((x$1) => x$1 != null), (x) => uniqBy(x, (x$1) => x$1.map((x$2) => "to" in x$2 ? x$2.to : x$2.locations[0]).sort().join("."))).value;
218
+ if (eventEntries.length != 1) return;
219
+ switch (key) {
220
+ case "groups":
221
221
  c[key] = eventEntries[0];
222
- events?.forEach((e) => delete e[key]);
223
- }
224
- });
225
- }
222
+ break;
223
+ case "teachers":
224
+ c[key] = eventEntries[0];
225
+ break;
226
+ case "locations":
227
+ c[key] = eventEntries[0];
228
+ break;
229
+ default: throw new Error(`Unknown key "${key}"`);
230
+ }
231
+ events?.forEach((e) => delete e[key]);
232
+ });
226
233
  return {
227
234
  courses: [...courseMap.values()],
228
235
  events: [...eventMap.values()].flat()