@kth/om-kursen-ladok-client 0.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.
- package/README.md +1 -0
- package/dist/createApiClient.d.ts +3 -0
- package/dist/createApiClient.js +142 -0
- package/dist/createApiClient.js.map +1 -0
- package/dist/groupSearchResults.d.ts +14 -0
- package/dist/groupSearchResults.js +66 -0
- package/dist/groupSearchResults.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/mapCourse.d.ts +17 -0
- package/dist/mapCourse.js +35 -0
- package/dist/mapCourse.js.map +1 -0
- package/dist/mapCourseRound.d.ts +38 -0
- package/dist/mapCourseRound.js +53 -0
- package/dist/mapCourseRound.js.map +1 -0
- package/dist/mapSearchResult.d.ts +40 -0
- package/dist/mapSearchResult.js +63 -0
- package/dist/mapSearchResult.js.map +1 -0
- package/dist/mapUtbildningsplan.d.ts +17 -0
- package/dist/mapUtbildningsplan.js +23 -0
- package/dist/mapUtbildningsplan.js.map +1 -0
- package/dist/types/OmKursenLadokApiClient.d.ts +24 -0
- package/dist/types/OmKursenLadokApiClient.js +3 -0
- package/dist/types/OmKursenLadokApiClient.js.map +1 -0
- package/dist/utils/creditsUtil.d.ts +3 -0
- package/dist/utils/creditsUtil.js +21 -0
- package/dist/utils/creditsUtil.js.map +1 -0
- package/dist/utils/dateUtil.d.ts +4 -0
- package/dist/utils/dateUtil.js +24 -0
- package/dist/utils/dateUtil.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.js +20 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/languageUtil.d.ts +29 -0
- package/dist/utils/languageUtil.js +46 -0
- package/dist/utils/languageUtil.js.map +1 -0
- package/dist/utils/periodUtil.d.ts +7 -0
- package/dist/utils/periodUtil.js +63 -0
- package/dist/utils/periodUtil.js.map +1 -0
- package/dist/utils/schoolUtil.d.ts +2 -0
- package/dist/utils/schoolUtil.js +12 -0
- package/dist/utils/schoolUtil.js.map +1 -0
- package/package.json +32 -0
package/README.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# om-kursen-ladok-client
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.createApiClient = void 0;
|
|
13
|
+
const ladok_mellanlager_client_1 = require("@kth/ladok-mellanlager-client");
|
|
14
|
+
const groupSearchResults_1 = require("./groupSearchResults");
|
|
15
|
+
const mapCourse_1 = require("./mapCourse");
|
|
16
|
+
const mapCourseRound_1 = require("./mapCourseRound");
|
|
17
|
+
const mapSearchResult_1 = require("./mapSearchResult");
|
|
18
|
+
const utils_1 = require("./utils");
|
|
19
|
+
const mapUtbildningsplan_1 = require("./mapUtbildningsplan");
|
|
20
|
+
const filterAndMapCourseRounds = (response, language) => {
|
|
21
|
+
if (response.type === "error") {
|
|
22
|
+
throw new Error(`API error: ${response.responseInfo.message}`);
|
|
23
|
+
}
|
|
24
|
+
return response.items
|
|
25
|
+
.map((x) => (0, mapCourseRound_1.mapCourseRound)(x, language))
|
|
26
|
+
.filter((x) => x !== undefined)
|
|
27
|
+
.filter((x) => { var _a; return !((_a = x.tillfalleskod) === null || _a === void 0 ? void 0 : _a.startsWith("OM")); } // TODO: "om-tillfällen" shouldn't be displayed on "Om kursen" - I've asked Sussane if we chould have solution an other solution than the tillfälleskod for this.
|
|
28
|
+
);
|
|
29
|
+
};
|
|
30
|
+
const createApiClient = (config) => {
|
|
31
|
+
const ladokClient = (0, ladok_mellanlager_client_1.createClient)(config);
|
|
32
|
+
return {
|
|
33
|
+
getLatestCourseVersion: (courseCode, language) => __awaiter(void 0, void 0, void 0, function* () {
|
|
34
|
+
const result = yield ladokClient.sokUtbildningsInstans({
|
|
35
|
+
kodEllerBenamning: courseCode,
|
|
36
|
+
striktKod: "true",
|
|
37
|
+
});
|
|
38
|
+
if (result.type === "error") {
|
|
39
|
+
return Object.assign({}, result.responseInfo);
|
|
40
|
+
}
|
|
41
|
+
if (result.searchMeta.pageResultSize === 0) {
|
|
42
|
+
return Object.assign(Object.assign({}, result.responseInfo), { statusCode: 404, message: "not found" });
|
|
43
|
+
}
|
|
44
|
+
const course = result.items
|
|
45
|
+
.sort((a, b) => parseInt(b.index.versionsnummer) - parseInt(a.index.versionsnummer))
|
|
46
|
+
.at(0);
|
|
47
|
+
const mappedCourse = (0, mapCourse_1.mapCourse)(course, language);
|
|
48
|
+
return Object.assign(Object.assign({}, result.responseInfo), mappedCourse);
|
|
49
|
+
}),
|
|
50
|
+
searchCourses: (searchParams, language) => __awaiter(void 0, void 0, void 0, function* () {
|
|
51
|
+
var _a;
|
|
52
|
+
const now = new Date();
|
|
53
|
+
const defaultPeriod = (0, utils_1.getPeriodCodeForDate)(now);
|
|
54
|
+
const { kodEllerBenamning, organisation, sprak, startPeriod, utbildningsniva, avvecklad, } = searchParams;
|
|
55
|
+
if (!avvecklad &&
|
|
56
|
+
!kodEllerBenamning &&
|
|
57
|
+
!organisation &&
|
|
58
|
+
!sprak &&
|
|
59
|
+
!startPeriod &&
|
|
60
|
+
!utbildningsniva) {
|
|
61
|
+
return "No query restriction was specified";
|
|
62
|
+
}
|
|
63
|
+
if (kodEllerBenamning && kodEllerBenamning.length < 3) {
|
|
64
|
+
return { errorCode: "errorKodEllerBenamning" };
|
|
65
|
+
}
|
|
66
|
+
let continuationToken = undefined;
|
|
67
|
+
let allCourses = [];
|
|
68
|
+
const MAX_ITERATIONS = 4;
|
|
69
|
+
let iterationCount = 0;
|
|
70
|
+
do {
|
|
71
|
+
if (iterationCount >= MAX_ITERATIONS) {
|
|
72
|
+
return { errorCode: "search-error-overflow" };
|
|
73
|
+
}
|
|
74
|
+
const requestObject = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (kodEllerBenamning
|
|
75
|
+
? { kodEllerBenamning }
|
|
76
|
+
: { kodEllerBenamning: "*" })), (!startPeriod && { terminPeriodStart: defaultPeriod })), (startPeriod && { startPeriod: startPeriod[0] })), (utbildningsniva && { utbildningsniva: utbildningsniva[0] })), (organisation && { organisation })), (sprak && { sprak })), (avvecklad && { avvecklad })), (continuationToken !== null &&
|
|
77
|
+
continuationToken !== undefined && { continuationToken }));
|
|
78
|
+
const result = yield ladokClient.sokKursTillfalle(requestObject);
|
|
79
|
+
if (typeof result === "string") {
|
|
80
|
+
return result;
|
|
81
|
+
}
|
|
82
|
+
if (result.type === "error") {
|
|
83
|
+
return {
|
|
84
|
+
errorCode: "errorUnknown",
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
if (result.searchMeta.pageResultSize === 0) {
|
|
88
|
+
return { searchHits: [] };
|
|
89
|
+
}
|
|
90
|
+
const mappedCourses = result.items.map((course) => (0, mapSearchResult_1.mapCourseResult)(course, language));
|
|
91
|
+
const groupedCourses = (0, groupSearchResults_1.groupSearchResults)(mappedCourses, !Boolean(startPeriod));
|
|
92
|
+
allCourses = allCourses.concat(groupedCourses);
|
|
93
|
+
if (allCourses.length > 250) {
|
|
94
|
+
return {
|
|
95
|
+
errorCode: "search-error-overflow",
|
|
96
|
+
searchHits: allCourses,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
continuationToken = (_a = result.searchMeta.continuationToken) !== null && _a !== void 0 ? _a : undefined;
|
|
100
|
+
iterationCount++;
|
|
101
|
+
} while (continuationToken);
|
|
102
|
+
return { searchHits: allCourses };
|
|
103
|
+
}),
|
|
104
|
+
getActiveCourseRounds: (courseCode, language) => __awaiter(void 0, void 0, void 0, function* () {
|
|
105
|
+
const now = new Date();
|
|
106
|
+
const period = (0, utils_1.getPeriodCodeForDate)(now); // TODO: we actually want course that are ongoing now and not just starting current semster -> Ask Ladok for filter on Undervisningsdatum? And alternative solution is to search for a couple of semester back and filter ourself after mapping.
|
|
107
|
+
const result = yield ladokClient.sokKursTillfalle({
|
|
108
|
+
kodEllerBenamning: courseCode,
|
|
109
|
+
terminKodStart: period,
|
|
110
|
+
striktKod: "true",
|
|
111
|
+
});
|
|
112
|
+
return filterAndMapCourseRounds(result, language);
|
|
113
|
+
}),
|
|
114
|
+
getCourseRoundsFromPeriod: (courseCode, fromPeriod, language) => __awaiter(void 0, void 0, void 0, function* () {
|
|
115
|
+
const result = yield ladokClient.sokKursTillfalle({
|
|
116
|
+
kodEllerBenamning: courseCode,
|
|
117
|
+
terminKodStart: fromPeriod,
|
|
118
|
+
striktKod: "true",
|
|
119
|
+
});
|
|
120
|
+
return filterAndMapCourseRounds(result, language);
|
|
121
|
+
}),
|
|
122
|
+
getCourseRoundsForExactStartPeriod: (courseCode, startPeriod, language) => __awaiter(void 0, void 0, void 0, function* () {
|
|
123
|
+
const result = yield ladokClient.sokKursTillfalle({
|
|
124
|
+
kodEllerBenamning: courseCode,
|
|
125
|
+
startPeriod: startPeriod,
|
|
126
|
+
striktKod: "true",
|
|
127
|
+
});
|
|
128
|
+
return filterAndMapCourseRounds(result, language);
|
|
129
|
+
}),
|
|
130
|
+
getUtbildningsPlan: (uid, language) => __awaiter(void 0, void 0, void 0, function* () {
|
|
131
|
+
const result = yield ladokClient.planForUtbildningUtbildningsinstans(uid);
|
|
132
|
+
if (result.type === "success") {
|
|
133
|
+
const plan = result.data.PlanerForUtbildning.filter((x) => ["BESLUTAD", "EJ_BESLUTAD"].includes(x.Tillstand)).at(0); // TODO: implement logic for selecting correct editions.
|
|
134
|
+
if (!plan)
|
|
135
|
+
return undefined;
|
|
136
|
+
return (0, mapUtbildningsplan_1.mapUtbildningsplan)(plan, language);
|
|
137
|
+
}
|
|
138
|
+
}),
|
|
139
|
+
};
|
|
140
|
+
};
|
|
141
|
+
exports.createApiClient = createApiClient;
|
|
142
|
+
//# sourceMappingURL=createApiClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createApiClient.js","sourceRoot":"","sources":["../src/createApiClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { CourseSearchResult, SearchResultPeriod } from "./mapSearchResult";
|
|
2
|
+
import { TranslatedGrunddata, TranslatedUtbildningstyp } from "./utils";
|
|
3
|
+
export type GroupedCourseSearchResult = Omit<CourseSearchResult, "studieort" | "undervisningssprak" | "utbildningstyp" | "studietakt" | "startperiod" | "period"> & {
|
|
4
|
+
studieort: TranslatedGrunddata[];
|
|
5
|
+
undervisningssprak: TranslatedGrunddata[];
|
|
6
|
+
utbildningstyp: TranslatedUtbildningstyp[];
|
|
7
|
+
studietakt: TranslatedGrunddata[];
|
|
8
|
+
startperiod: {
|
|
9
|
+
code: string;
|
|
10
|
+
inDigits: string | null;
|
|
11
|
+
}[];
|
|
12
|
+
period: SearchResultPeriod[];
|
|
13
|
+
};
|
|
14
|
+
export declare const groupSearchResults: (courseSearchResults: CourseSearchResult[], filterPeriod?: boolean) => GroupedCourseSearchResult[] | [];
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.groupSearchResults = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Adds {@link obj} to {@link arr} if an equal object isn't already added.
|
|
6
|
+
* Uses a callback {@link getCompareValue} to define uniqueness.
|
|
7
|
+
*
|
|
8
|
+
* @param arr array to add object to
|
|
9
|
+
* @param obj object to possibly add to array
|
|
10
|
+
* @param getCompareValue function that returns the comparison value for uniqueness
|
|
11
|
+
*/
|
|
12
|
+
const addUniqueObjectWithCallback = (arr, obj, getCompareValue) => {
|
|
13
|
+
if (arr.every((x) => getCompareValue(x) !== getCompareValue(obj))) {
|
|
14
|
+
arr.push(obj);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Adds a period object to the array if it is unique based on
|
|
19
|
+
* sistaUndervisningsdatum.date and forstaUndervisningsdatum.date.
|
|
20
|
+
*
|
|
21
|
+
* @param arr array of SearchResultPeriod objects
|
|
22
|
+
* @param obj SearchResultPeriod object to possibly add
|
|
23
|
+
*/
|
|
24
|
+
const addUniquePeriod = (arr, obj) => addUniqueObjectWithCallback(arr, obj, (item) => {
|
|
25
|
+
var _a, _b, _c, _d;
|
|
26
|
+
return `${(_b = (_a = item.sistaUndervisningsdatum) === null || _a === void 0 ? void 0 : _a.date) !== null && _b !== void 0 ? _b : ""}-${(_d = (_c = item.forstaUndervisningsdatum) === null || _c === void 0 ? void 0 : _c.date) !== null && _d !== void 0 ? _d : ""}`;
|
|
27
|
+
});
|
|
28
|
+
/**
|
|
29
|
+
* Adds an object to the array if it is unique based on its 'code' property.
|
|
30
|
+
*
|
|
31
|
+
* @param arr array of objects with a 'code' property
|
|
32
|
+
* @param obj object to possibly add
|
|
33
|
+
*/
|
|
34
|
+
const addUniqueObjectByCode = (arr, obj) => addUniqueObjectWithCallback(arr, obj, (item) => item.code);
|
|
35
|
+
const groupSearchResults = (courseSearchResults, filterPeriod = false) => {
|
|
36
|
+
const groupedResults = {};
|
|
37
|
+
courseSearchResults.forEach((searchResult) => {
|
|
38
|
+
var _a;
|
|
39
|
+
const key = `${searchResult.kod}-${filterPeriod ? "" : (_a = searchResult.startperiod) === null || _a === void 0 ? void 0 : _a.code}`;
|
|
40
|
+
if (!groupedResults[key]) {
|
|
41
|
+
groupedResults[key] = Object.assign(Object.assign({}, searchResult), { studieort: [], studietakt: [], undervisningssprak: [], utbildningstyp: [], startperiod: [], period: [] });
|
|
42
|
+
}
|
|
43
|
+
// Add unique objects by code to their respective arrays
|
|
44
|
+
if (searchResult.studieort) {
|
|
45
|
+
addUniqueObjectByCode(groupedResults[key].studieort, searchResult.studieort);
|
|
46
|
+
}
|
|
47
|
+
if (searchResult.studietakt) {
|
|
48
|
+
addUniqueObjectByCode(groupedResults[key].studietakt, searchResult.studietakt);
|
|
49
|
+
}
|
|
50
|
+
if (searchResult.undervisningssprak) {
|
|
51
|
+
addUniqueObjectByCode(groupedResults[key].undervisningssprak, searchResult.undervisningssprak);
|
|
52
|
+
}
|
|
53
|
+
if (searchResult.utbildningstyp) {
|
|
54
|
+
addUniqueObjectByCode(groupedResults[key].utbildningstyp, searchResult.utbildningstyp);
|
|
55
|
+
}
|
|
56
|
+
if (searchResult.startperiod) {
|
|
57
|
+
addUniqueObjectByCode(groupedResults[key].startperiod, searchResult.startperiod);
|
|
58
|
+
}
|
|
59
|
+
if (searchResult.period) {
|
|
60
|
+
addUniquePeriod(groupedResults[key].period, searchResult.period);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
return Object.values(groupedResults);
|
|
64
|
+
};
|
|
65
|
+
exports.groupSearchResults = groupSearchResults;
|
|
66
|
+
//# sourceMappingURL=groupSearchResults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"groupSearchResults.js","sourceRoot":"","sources":["../src/groupSearchResults.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./createApiClient";
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./createApiClient"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SokUtbildningsInstansItem } from "@kth/ladok-mellanlager-client";
|
|
2
|
+
import { Language, TranslatedGrunddata, TranslatedOrganisation, TranslatedUtbildningstyp } from "./utils/languageUtil";
|
|
3
|
+
export type Course = {
|
|
4
|
+
versionsnummer: string;
|
|
5
|
+
kod: string;
|
|
6
|
+
benamning: string;
|
|
7
|
+
omfattning: {
|
|
8
|
+
number: string;
|
|
9
|
+
formattedWithUnit: string;
|
|
10
|
+
};
|
|
11
|
+
organisation?: TranslatedOrganisation;
|
|
12
|
+
utbildningstyp?: TranslatedUtbildningstyp;
|
|
13
|
+
betygsskala?: TranslatedGrunddata;
|
|
14
|
+
huvudomraden?: TranslatedGrunddata[];
|
|
15
|
+
schoolCode: string;
|
|
16
|
+
};
|
|
17
|
+
export declare const mapCourse: (course: SokUtbildningsInstansItem, language: Language) => Course;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mapCourse = void 0;
|
|
4
|
+
const ladok_attributvarde_utils_1 = require("@kth/ladok-attributvarde-utils");
|
|
5
|
+
const languageUtil_1 = require("./utils/languageUtil");
|
|
6
|
+
const creditsUtil_1 = require("./utils/creditsUtil");
|
|
7
|
+
const schoolUtil_1 = require("./utils/schoolUtil");
|
|
8
|
+
const mapCourse = (course, language) => {
|
|
9
|
+
const benamning = {
|
|
10
|
+
sv: course.index["utbildning.attribut.svensk.benamning"],
|
|
11
|
+
en: course.index["utbildning.attribut.engelsk.benamning"],
|
|
12
|
+
};
|
|
13
|
+
const betygsskala = (0, ladok_attributvarde_utils_1.extractGrunddata)(course.Attributvarden, "utbildning.attribut.betygsskala");
|
|
14
|
+
const huvudomraden = (0, ladok_attributvarde_utils_1.extractHuvudomraden)(course.Attributvarden);
|
|
15
|
+
const organisation = (0, ladok_attributvarde_utils_1.extractOrganisation)(course.Attributvarden);
|
|
16
|
+
const utbildningstyp = (0, ladok_attributvarde_utils_1.extractUtbildningstyp)(course.Attributvarden);
|
|
17
|
+
const schoolCode = (0, schoolUtil_1.extractSchoolCodeFromOrganisation)(organisation, language);
|
|
18
|
+
const omfattning = course.index["utbildning.attribut.omfattning"];
|
|
19
|
+
return {
|
|
20
|
+
versionsnummer: course.index.versionsnummer,
|
|
21
|
+
kod: course.index["utbildning.attribut.kod"],
|
|
22
|
+
benamning: benamning[language],
|
|
23
|
+
omfattning: {
|
|
24
|
+
number: omfattning,
|
|
25
|
+
formattedWithUnit: (0, creditsUtil_1.formatCreditsWithUnitLabel)(omfattning, utbildningstyp, language),
|
|
26
|
+
},
|
|
27
|
+
organisation: organisation && (0, languageUtil_1.translateOrganisation)(organisation, language),
|
|
28
|
+
utbildningstyp: utbildningstyp && (0, languageUtil_1.translateUtbildningstyp)(utbildningstyp, language),
|
|
29
|
+
betygsskala: betygsskala && (0, languageUtil_1.translateGrunddata)(betygsskala, language),
|
|
30
|
+
huvudomraden: huvudomraden === null || huvudomraden === void 0 ? void 0 : huvudomraden.map((x) => (0, languageUtil_1.translateGrunddata)(x, language)),
|
|
31
|
+
schoolCode,
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
exports.mapCourse = mapCourse;
|
|
35
|
+
//# sourceMappingURL=mapCourse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapCourse.js","sourceRoot":"","sources":["../src/mapCourse.ts"],"names":[],"mappings":";;;AAAA,8EAKwC;AAGxC,uDAQ8B;AAC9B,qDAAiE;AACjE,mDAAuE;AAiBhE,MAAM,SAAS,GAAG,CACvB,MAAiC,EACjC,QAAkB,EACV,EAAE;IACV,MAAM,SAAS,GAAG;QAChB,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC;QACxD,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC;KAC1D,CAAC;IACF,MAAM,WAAW,GAAG,IAAA,4CAAgB,EAClC,MAAM,CAAC,cAAc,EACrB,iCAAiC,CAClC,CAAC;IACF,MAAM,YAAY,GAAG,IAAA,+CAAmB,EAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAChE,MAAM,YAAY,GAAG,IAAA,+CAAmB,EAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAChE,MAAM,cAAc,GAAG,IAAA,iDAAqB,EAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAEpE,MAAM,UAAU,GAAG,IAAA,8CAAiC,EAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAE7E,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAElE,OAAO;QACL,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc;QAC3C,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC;QAC5C,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC;QAC9B,UAAU,EAAE;YACV,MAAM,EAAE,UAAU;YAClB,iBAAiB,EAAE,IAAA,wCAA0B,EAC3C,UAAU,EACV,cAAc,EACd,QAAQ,CACT;SACF;QACD,YAAY,EAAE,YAAY,IAAI,IAAA,oCAAqB,EAAC,YAAY,EAAE,QAAQ,CAAC;QAC3E,cAAc,EACZ,cAAc,IAAI,IAAA,sCAAuB,EAAC,cAAc,EAAE,QAAQ,CAAC;QACrE,WAAW,EAAE,WAAW,IAAI,IAAA,iCAAkB,EAAC,WAAW,EAAE,QAAQ,CAAC;QACrE,YAAY,EAAE,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,iCAAkB,EAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACvE,UAAU;KACX,CAAC;AACJ,CAAC,CAAC;AAvCW,QAAA,SAAS,aAuCpB"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { LadokStatus } from "@kth/ladok-attributvarde-utils";
|
|
2
|
+
import { SokKursTillfalleItem } from "@kth/ladok-mellanlager-client";
|
|
3
|
+
import { Language, TranslatedGrunddata } from "./utils";
|
|
4
|
+
export type CourseRound = {
|
|
5
|
+
uid: string;
|
|
6
|
+
status?: LadokStatus;
|
|
7
|
+
installt: boolean;
|
|
8
|
+
tillfalleskod?: string;
|
|
9
|
+
startperiod?: {
|
|
10
|
+
code: string;
|
|
11
|
+
inDigits: string | null;
|
|
12
|
+
};
|
|
13
|
+
utbildningstillfalleskod?: string;
|
|
14
|
+
forstaUndervisningsdatum?: {
|
|
15
|
+
date: string;
|
|
16
|
+
year: number;
|
|
17
|
+
week: number;
|
|
18
|
+
};
|
|
19
|
+
sistaUndervisningsdatum?: {
|
|
20
|
+
date: string;
|
|
21
|
+
year: number;
|
|
22
|
+
week: number;
|
|
23
|
+
};
|
|
24
|
+
malgrupp?: string;
|
|
25
|
+
kortnamn?: string;
|
|
26
|
+
urvalskriterier?: string;
|
|
27
|
+
undervisningsform?: TranslatedGrunddata;
|
|
28
|
+
undervisningstid?: TranslatedGrunddata;
|
|
29
|
+
undervisningssprak?: TranslatedGrunddata;
|
|
30
|
+
studieort?: TranslatedGrunddata;
|
|
31
|
+
studietakt?: TranslatedGrunddata;
|
|
32
|
+
finansieringsform?: TranslatedGrunddata;
|
|
33
|
+
utbildningsplatser?: number;
|
|
34
|
+
minantalplatser?: number;
|
|
35
|
+
admissionLinkUrl?: string;
|
|
36
|
+
schemaUrl?: string;
|
|
37
|
+
};
|
|
38
|
+
export declare const mapCourseRound: (item: SokKursTillfalleItem, language: Language) => CourseRound;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mapCourseRound = void 0;
|
|
4
|
+
const ladok_attributvarde_utils_1 = require("@kth/ladok-attributvarde-utils");
|
|
5
|
+
const utils_1 = require("./utils");
|
|
6
|
+
const mapCourseRound = (item, language) => {
|
|
7
|
+
var _a, _b, _c, _d, _e;
|
|
8
|
+
const attributeValues = item.Attributvarden;
|
|
9
|
+
const malgrupp = {
|
|
10
|
+
sv: (0, ladok_attributvarde_utils_1.extractString)(attributeValues, "utbildning.lokalt.attribut.29.malgrupp.sv", "html"),
|
|
11
|
+
en: (0, ladok_attributvarde_utils_1.extractString)(attributeValues, "utbildning.lokalt.attribut.29.malgrupp.en", "html"),
|
|
12
|
+
};
|
|
13
|
+
const kortnamn = {
|
|
14
|
+
sv: (0, ladok_attributvarde_utils_1.extractString)(attributeValues, "utbildning.lokalt.attribut.29.kortnamn.sv"),
|
|
15
|
+
en: (0, ladok_attributvarde_utils_1.extractString)(attributeValues, "utbildning.lokalt.attribut.29.kortnamn.en"),
|
|
16
|
+
};
|
|
17
|
+
const urvalskriterier = {
|
|
18
|
+
sv: (0, ladok_attributvarde_utils_1.extractString)(attributeValues, "utbildning.lokalt.attribut.29.urvalskriterier_sv"),
|
|
19
|
+
en: (0, ladok_attributvarde_utils_1.extractString)(attributeValues, "utbildning.lokalt.attribut.29.urvalskriterier_en"),
|
|
20
|
+
};
|
|
21
|
+
const undervisningsform = (0, ladok_attributvarde_utils_1.extractGrunddata)(attributeValues, "utbildning.attribut.undervisningsform");
|
|
22
|
+
const undervisningstid = (0, ladok_attributvarde_utils_1.extractGrunddata)(attributeValues, "utbildning.attribut.undervisningstid");
|
|
23
|
+
const undervisningssprak = (0, ladok_attributvarde_utils_1.extractGrunddata)(attributeValues, "utbildning.attribut.undervisningssprak");
|
|
24
|
+
const studieort = (0, ladok_attributvarde_utils_1.extractGrunddata)(attributeValues, "utbildning.attribut.studieort");
|
|
25
|
+
const finansieringsform = (0, ladok_attributvarde_utils_1.extractGrunddata)(attributeValues, "utbildning.attribut.finansieringsform");
|
|
26
|
+
const studietakt = (0, ladok_attributvarde_utils_1.extractStudietakt)(attributeValues);
|
|
27
|
+
return {
|
|
28
|
+
uid: item.tillfalle_uid,
|
|
29
|
+
status: (0, ladok_attributvarde_utils_1.extractLadokStatus)(item.Attributvarden),
|
|
30
|
+
installt: (_a = (0, ladok_attributvarde_utils_1.extractBoolean)(item.Attributvarden, "installt")) !== null && _a !== void 0 ? _a : false,
|
|
31
|
+
tillfalleskod: (0, ladok_attributvarde_utils_1.extractString)(attributeValues, "utbildning.attribut.utbildningstillfalleskod"),
|
|
32
|
+
startperiod: {
|
|
33
|
+
code: item.index["utbildning.attribut.startperiod.kod"],
|
|
34
|
+
inDigits: (0, utils_1.transformPeriodInDigits)(item.index["utbildning.attribut.startperiod.kod"]),
|
|
35
|
+
},
|
|
36
|
+
utbildningstillfalleskod: (0, ladok_attributvarde_utils_1.extractString)(attributeValues, "utbildning.attribut.utbildningstillfalleskod"),
|
|
37
|
+
forstaUndervisningsdatum: Object.assign({ date: (_b = item.Tillfallesperioder.at(0)) === null || _b === void 0 ? void 0 : _b.ForstaUndervisningsdatum }, (0, utils_1.getYearAndWeek)((_c = item.Tillfallesperioder.at(0)) === null || _c === void 0 ? void 0 : _c.ForstaUndervisningsdatum)),
|
|
38
|
+
sistaUndervisningsdatum: Object.assign({ date: (_d = item.Tillfallesperioder.at(-1)) === null || _d === void 0 ? void 0 : _d.SistaUndervisningsdatum }, (0, utils_1.getYearAndWeek)((_e = item.Tillfallesperioder.at(-1)) === null || _e === void 0 ? void 0 : _e.SistaUndervisningsdatum)),
|
|
39
|
+
malgrupp: malgrupp[language],
|
|
40
|
+
kortnamn: kortnamn[language],
|
|
41
|
+
urvalskriterier: urvalskriterier[language],
|
|
42
|
+
undervisningsform: undervisningsform && (0, utils_1.translateGrunddata)(undervisningsform, language),
|
|
43
|
+
undervisningstid: undervisningstid && (0, utils_1.translateGrunddata)(undervisningstid, language),
|
|
44
|
+
undervisningssprak: undervisningssprak && (0, utils_1.translateGrunddata)(undervisningssprak, language),
|
|
45
|
+
studieort: studieort && (0, utils_1.translateGrunddata)(studieort, language),
|
|
46
|
+
studietakt: studietakt && (0, utils_1.translateStudietakt)(studietakt, language),
|
|
47
|
+
finansieringsform: finansieringsform && (0, utils_1.translateGrunddata)(finansieringsform, language),
|
|
48
|
+
minantalplatser: (0, ladok_attributvarde_utils_1.extractInteger)(attributeValues, "utbildning.lokalt.attribut.29.minantalplatser"),
|
|
49
|
+
utbildningsplatser: (0, ladok_attributvarde_utils_1.extractUtbildningsplatser)(attributeValues),
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
exports.mapCourseRound = mapCourseRound;
|
|
53
|
+
//# sourceMappingURL=mapCourseRound.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapCourseRound.js","sourceRoot":"","sources":["../src/mapCourseRound.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { SokKursTillfalleItem } from "@kth/ladok-mellanlager-client";
|
|
2
|
+
import { Language, TranslatedGrunddata, TranslatedOrganisation, TranslatedUtbildningstyp } from "./utils/languageUtil";
|
|
3
|
+
export type SearchResultPeriod = {
|
|
4
|
+
startperiod: string;
|
|
5
|
+
forstaUndervisningsdatum?: {
|
|
6
|
+
date: string;
|
|
7
|
+
period?: number;
|
|
8
|
+
year: number;
|
|
9
|
+
week: number;
|
|
10
|
+
};
|
|
11
|
+
sistaUndervisningsdatum?: {
|
|
12
|
+
date: string;
|
|
13
|
+
period?: number;
|
|
14
|
+
year: number;
|
|
15
|
+
week: number;
|
|
16
|
+
};
|
|
17
|
+
tillfallesperioderNummer: number;
|
|
18
|
+
};
|
|
19
|
+
export type CourseSearchResult = {
|
|
20
|
+
versionsnummer: string;
|
|
21
|
+
kod: string;
|
|
22
|
+
benamning: string;
|
|
23
|
+
omfattning: {
|
|
24
|
+
number: string;
|
|
25
|
+
formattedWithUnit: string;
|
|
26
|
+
};
|
|
27
|
+
utbildningstyp?: TranslatedUtbildningstyp;
|
|
28
|
+
studieort?: TranslatedGrunddata;
|
|
29
|
+
organisation?: TranslatedOrganisation;
|
|
30
|
+
undervisningssprak?: TranslatedGrunddata;
|
|
31
|
+
studietakt?: TranslatedGrunddata;
|
|
32
|
+
schoolCode: string;
|
|
33
|
+
malgrupp?: string;
|
|
34
|
+
startperiod?: {
|
|
35
|
+
code: string;
|
|
36
|
+
inDigits: string | null;
|
|
37
|
+
};
|
|
38
|
+
period?: SearchResultPeriod;
|
|
39
|
+
};
|
|
40
|
+
export declare const mapCourseResult: (courseRound: SokKursTillfalleItem, language: Language) => CourseSearchResult;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mapCourseResult = void 0;
|
|
4
|
+
const ladok_attributvarde_utils_1 = require("@kth/ladok-attributvarde-utils");
|
|
5
|
+
const languageUtil_1 = require("./utils/languageUtil");
|
|
6
|
+
const utils_1 = require("./utils");
|
|
7
|
+
const creditsUtil_1 = require("./utils/creditsUtil");
|
|
8
|
+
const schoolUtil_1 = require("./utils/schoolUtil");
|
|
9
|
+
const mapCourseResult = (courseRound, language) => {
|
|
10
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
11
|
+
const benamning = {
|
|
12
|
+
sv: courseRound.index["utbildning.attribut.svensk.benamning"],
|
|
13
|
+
en: courseRound.index["utbildning.attribut.engelsk.benamning"],
|
|
14
|
+
};
|
|
15
|
+
const organisation = (0, ladok_attributvarde_utils_1.extractOrganisation)(courseRound.Attributvarden);
|
|
16
|
+
const utbildningstyp = (0, ladok_attributvarde_utils_1.extractUtbildningstyp)(((_a = courseRound.instans) === null || _a === void 0 ? void 0 : _a.Attributvarden) || courseRound.Attributvarden);
|
|
17
|
+
const studieort = (0, ladok_attributvarde_utils_1.extractGrunddata)(courseRound.Attributvarden, "utbildning.attribut.studieort");
|
|
18
|
+
const undervisningssprak = (0, ladok_attributvarde_utils_1.extractGrunddata)(courseRound.Attributvarden, "utbildning.attribut.undervisningssprak");
|
|
19
|
+
const malgrupp = {
|
|
20
|
+
sv: (0, ladok_attributvarde_utils_1.extractString)(courseRound.Attributvarden, "utbildning.lokalt.attribut.29.malgrupp.sv", "html"),
|
|
21
|
+
en: (0, ladok_attributvarde_utils_1.extractString)(courseRound.Attributvarden, "utbildning.lokalt.attribut.29.malgrupp.en", "html"),
|
|
22
|
+
};
|
|
23
|
+
const startperiod = (0, ladok_attributvarde_utils_1.extractStartPeriod)(courseRound.Attributvarden);
|
|
24
|
+
const studietakt = (0, ladok_attributvarde_utils_1.extractStudietakt)(courseRound.Attributvarden);
|
|
25
|
+
const schoolCode = (0, schoolUtil_1.extractSchoolCodeFromOrganisation)(organisation, language);
|
|
26
|
+
const omfattning = courseRound.index["utbildning.attribut.omfattning"];
|
|
27
|
+
return {
|
|
28
|
+
versionsnummer: courseRound.index.versionsnummer,
|
|
29
|
+
kod: courseRound.index["utbildning.attribut.kod"],
|
|
30
|
+
benamning: benamning[language],
|
|
31
|
+
omfattning: {
|
|
32
|
+
number: omfattning,
|
|
33
|
+
formattedWithUnit: (0, creditsUtil_1.formatCreditsWithUnitLabel)(omfattning, utbildningstyp, language),
|
|
34
|
+
},
|
|
35
|
+
organisation: organisation && (0, languageUtil_1.translateOrganisation)(organisation, language),
|
|
36
|
+
studieort: studieort && (0, languageUtil_1.translateGrunddata)(studieort, language),
|
|
37
|
+
utbildningstyp: utbildningstyp && (0, languageUtil_1.translateUtbildningstyp)(utbildningstyp, language),
|
|
38
|
+
undervisningssprak: undervisningssprak && (0, languageUtil_1.translateGrunddata)(undervisningssprak, language),
|
|
39
|
+
studietakt: studietakt && (0, languageUtil_1.translateStudietakt)(studietakt, language),
|
|
40
|
+
malgrupp: malgrupp[language],
|
|
41
|
+
startperiod: startperiod && {
|
|
42
|
+
code: startperiod.code,
|
|
43
|
+
inDigits: (0, utils_1.transformPeriodInDigits)(startperiod.code),
|
|
44
|
+
},
|
|
45
|
+
period: {
|
|
46
|
+
startperiod: (startperiod === null || startperiod === void 0 ? void 0 : startperiod.code) || "",
|
|
47
|
+
forstaUndervisningsdatum: Object.assign({ date: (_b = courseRound.Tillfallesperioder.at(0)) === null || _b === void 0 ? void 0 : _b.ForstaUndervisningsdatum, period: (0, utils_1.getKthStudyPeriod)(new Date((_c = courseRound.Tillfallesperioder.at(0)) === null || _c === void 0 ? void 0 : _c.ForstaUndervisningsdatum), {
|
|
48
|
+
code: startperiod === null || startperiod === void 0 ? void 0 : startperiod.code,
|
|
49
|
+
startDate: startperiod && new Date(startperiod.startDay),
|
|
50
|
+
endDate: startperiod && new Date(startperiod.endDay),
|
|
51
|
+
}, "start") }, (0, utils_1.getYearAndWeek)((_d = courseRound.Tillfallesperioder.at(0)) === null || _d === void 0 ? void 0 : _d.ForstaUndervisningsdatum)),
|
|
52
|
+
sistaUndervisningsdatum: Object.assign({ date: (_e = courseRound.Tillfallesperioder.at(-1)) === null || _e === void 0 ? void 0 : _e.SistaUndervisningsdatum, period: (0, utils_1.getKthStudyPeriod)(new Date((_f = courseRound.Tillfallesperioder.at(-1)) === null || _f === void 0 ? void 0 : _f.SistaUndervisningsdatum), {
|
|
53
|
+
code: startperiod === null || startperiod === void 0 ? void 0 : startperiod.code,
|
|
54
|
+
startDate: startperiod && new Date(startperiod.startDay),
|
|
55
|
+
endDate: startperiod && new Date(startperiod.endDay),
|
|
56
|
+
}, "end") }, (0, utils_1.getYearAndWeek)((_g = courseRound.Tillfallesperioder.at(-1)) === null || _g === void 0 ? void 0 : _g.SistaUndervisningsdatum)),
|
|
57
|
+
tillfallesperioderNummer: courseRound.Tillfallesperioder.length,
|
|
58
|
+
},
|
|
59
|
+
schoolCode,
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
exports.mapCourseResult = mapCourseResult;
|
|
63
|
+
//# sourceMappingURL=mapSearchResult.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapSearchResult.js","sourceRoot":"","sources":["../src/mapSearchResult.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { PlanForUtbildning } from "@kth/ladok-mellanlager-client";
|
|
2
|
+
import { Language } from "./utils/languageUtil";
|
|
3
|
+
export type Utbildningsplan = {
|
|
4
|
+
uid: string;
|
|
5
|
+
courseList: {
|
|
6
|
+
year1: string | undefined;
|
|
7
|
+
year2: string | undefined;
|
|
8
|
+
year3: string | undefined;
|
|
9
|
+
year4: string | undefined;
|
|
10
|
+
year5: string | undefined;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* TODO: This a PoC for using course list in old programme syllabuses (utbildningsplan).
|
|
15
|
+
* This will be extended with more attributes later.
|
|
16
|
+
*/
|
|
17
|
+
export declare const mapUtbildningsplan: (planForUtbildning: PlanForUtbildning, language: Language) => Utbildningsplan;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mapUtbildningsplan = void 0;
|
|
4
|
+
const ladok_attributvarde_utils_1 = require("@kth/ladok-attributvarde-utils");
|
|
5
|
+
/**
|
|
6
|
+
* TODO: This a PoC for using course list in old programme syllabuses (utbildningsplan).
|
|
7
|
+
* This will be extended with more attributes later.
|
|
8
|
+
*/
|
|
9
|
+
const mapUtbildningsplan = (planForUtbildning, language) => {
|
|
10
|
+
const attributeValues = planForUtbildning.AktuellaAttributvarden;
|
|
11
|
+
return {
|
|
12
|
+
uid: planForUtbildning.Uid,
|
|
13
|
+
courseList: {
|
|
14
|
+
year1: (0, ladok_attributvarde_utils_1.extractString)(attributeValues, `utbildning.lokalt.attribut.29.kurslistaar1.${language}`, "markdown"),
|
|
15
|
+
year2: (0, ladok_attributvarde_utils_1.extractString)(attributeValues, `utbildning.lokalt.attribut.29.kurslistaar2.${language}`, "markdown"),
|
|
16
|
+
year3: (0, ladok_attributvarde_utils_1.extractString)(attributeValues, `utbildning.lokalt.attribut.29.kurslistaar3.${language}`, "markdown"),
|
|
17
|
+
year4: (0, ladok_attributvarde_utils_1.extractString)(attributeValues, `utbildning.lokalt.attribut.29.kurslistaar4.${language}`, "markdown"),
|
|
18
|
+
year5: (0, ladok_attributvarde_utils_1.extractString)(attributeValues, `utbildning.lokalt.attribut.29.kurslistaar5.${language}`, "markdown"),
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
exports.mapUtbildningsplan = mapUtbildningsplan;
|
|
23
|
+
//# sourceMappingURL=mapUtbildningsplan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapUtbildningsplan.js","sourceRoot":"","sources":["../src/mapUtbildningsplan.ts"],"names":[],"mappings":";;;AAKA,8EAA+D;AAa/D;;;GAGG;AACI,MAAM,kBAAkB,GAAG,CAChC,iBAAoC,EACpC,QAAkB,EACD,EAAE;IACnB,MAAM,eAAe,GAAG,iBAAiB,CAAC,sBAAsB,CAAC;IAEjE,OAAO;QACL,GAAG,EAAE,iBAAiB,CAAC,GAAG;QAC1B,UAAU,EAAE;YACV,KAAK,EAAE,IAAA,yCAAa,EAClB,eAAe,EACf,8CAA8C,QAAQ,EAAE,EACxD,UAAU,CACX;YACD,KAAK,EAAE,IAAA,yCAAa,EAClB,eAAe,EACf,8CAA8C,QAAQ,EAAE,EACxD,UAAU,CACX;YACD,KAAK,EAAE,IAAA,yCAAa,EAClB,eAAe,EACf,8CAA8C,QAAQ,EAAE,EACxD,UAAU,CACX;YACD,KAAK,EAAE,IAAA,yCAAa,EAClB,eAAe,EACf,8CAA8C,QAAQ,EAAE,EACxD,UAAU,CACX;YACD,KAAK,EAAE,IAAA,yCAAa,EAClB,eAAe,EACf,8CAA8C,QAAQ,EAAE,EACxD,UAAU,CACX;SACF;KACF,CAAC;AACJ,CAAC,CAAC;AApCW,QAAA,kBAAkB,sBAoC7B"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ResponseInfo } from "@kth/ladok-mellanlager-client";
|
|
2
|
+
import { GroupedCourseSearchResult } from "../groupSearchResults";
|
|
3
|
+
import { Course } from "../mapCourse";
|
|
4
|
+
import { CourseRound } from "../mapCourseRound";
|
|
5
|
+
import { Language } from "../utils";
|
|
6
|
+
import { Utbildningsplan } from "../mapUtbildningsplan";
|
|
7
|
+
export type OmKursenLadokApiClient = {
|
|
8
|
+
getLatestCourseVersion: (courseCode: string, language: Language) => Promise<(Course & ResponseInfo) | ResponseInfo>;
|
|
9
|
+
searchCourses: (searchParams: {
|
|
10
|
+
kodEllerBenamning?: string;
|
|
11
|
+
organisation?: string;
|
|
12
|
+
sprak?: string;
|
|
13
|
+
avvecklad?: string;
|
|
14
|
+
startPeriod?: string[];
|
|
15
|
+
utbildningsniva?: string[];
|
|
16
|
+
}, language: Language) => Promise<{
|
|
17
|
+
searchHits?: GroupedCourseSearchResult[] | [];
|
|
18
|
+
errorCode?: string;
|
|
19
|
+
} | string>;
|
|
20
|
+
getActiveCourseRounds: (courseCode: string, language: Language) => Promise<CourseRound[] | undefined>;
|
|
21
|
+
getCourseRoundsFromPeriod: (courseCode: string, fromPeriod: string, language: Language) => Promise<CourseRound[] | undefined>;
|
|
22
|
+
getCourseRoundsForExactStartPeriod: (courseCode: string, startPeriod: string, language: Language) => Promise<CourseRound[] | undefined>;
|
|
23
|
+
getUtbildningsPlan: (uid: string, language: Language) => Promise<Utbildningsplan | undefined>;
|
|
24
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OmKursenLadokApiClient.js","sourceRoot":"","sources":["../../src/types/OmKursenLadokApiClient.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatCreditsWithUnitLabel = void 0;
|
|
4
|
+
const getCreditsUnit = (utbildningstyp, language) => {
|
|
5
|
+
switch (utbildningstyp.creditsUnit.code) {
|
|
6
|
+
case "HP":
|
|
7
|
+
return language === "sv" ? "hp" : "credits";
|
|
8
|
+
case "FUP":
|
|
9
|
+
return "fup";
|
|
10
|
+
default:
|
|
11
|
+
return utbildningstyp.creditsUnit.code.toLocaleLowerCase();
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
const formatCredits = (omfattning, language) => language === "sv" ? omfattning.replace(".", ",") : omfattning;
|
|
15
|
+
const formatCreditsWithUnitLabel = (omfattning, utbildningstyp, language) => {
|
|
16
|
+
const credits = formatCredits(omfattning, language);
|
|
17
|
+
const unit = utbildningstyp ? getCreditsUnit(utbildningstyp, language) : "";
|
|
18
|
+
return `${credits} ${unit}`;
|
|
19
|
+
};
|
|
20
|
+
exports.formatCreditsWithUnitLabel = formatCreditsWithUnitLabel;
|
|
21
|
+
//# sourceMappingURL=creditsUtil.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"creditsUtil.js","sourceRoot":"","sources":["../../src/utils/creditsUtil.ts"],"names":[],"mappings":";;;AAGA,MAAM,cAAc,GAAG,CAAC,cAA8B,EAAE,QAAkB,EAAE,EAAE;IAC5E,QAAQ,cAAc,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACxC,KAAK,IAAI;YACP,OAAO,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9C,KAAK,KAAK;YACR,OAAO,KAAK,CAAC;QACf;YACE,OAAO,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC/D,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,UAAkB,EAAE,QAAkB,EAAE,EAAE,CAC/D,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AAEzD,MAAM,0BAA0B,GAAG,CACxC,UAAkB,EAClB,cAA0C,EAC1C,QAAkB,EAClB,EAAE;IACF,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5E,OAAO,GAAG,OAAO,IAAI,IAAI,EAAE,CAAC;AAC9B,CAAC,CAAC;AARW,QAAA,0BAA0B,8BAQrC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getYearAndWeek = void 0;
|
|
4
|
+
const getYearAndWeek = (dateString) => {
|
|
5
|
+
const date = new Date(dateString);
|
|
6
|
+
const year = date.getFullYear();
|
|
7
|
+
const getWeekNumber = (date) => {
|
|
8
|
+
const tempDate = new Date(date.getTime());
|
|
9
|
+
// Set date to nearest Thursday (It is a standard)
|
|
10
|
+
tempDate.setDate(tempDate.getDate() + 4 - (tempDate.getDay() || 7));
|
|
11
|
+
// Start of the year
|
|
12
|
+
const firstDayOfYear = new Date(Date.UTC(tempDate.getUTCFullYear(), 0, 1));
|
|
13
|
+
// Calculate full weeks to nearest Thursday
|
|
14
|
+
const weekNumber = Math.ceil(((tempDate.getTime() - firstDayOfYear.getTime()) / 86400000 + 1) / 7);
|
|
15
|
+
return weekNumber;
|
|
16
|
+
};
|
|
17
|
+
const week = getWeekNumber(date);
|
|
18
|
+
return {
|
|
19
|
+
year: year,
|
|
20
|
+
week: week,
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
exports.getYearAndWeek = getYearAndWeek;
|
|
24
|
+
//# sourceMappingURL=dateUtil.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dateUtil.js","sourceRoot":"","sources":["../../src/utils/dateUtil.ts"],"names":[],"mappings":";;;AAAO,MAAM,cAAc,GAAG,CAC5B,UAAkB,EACc,EAAE;IAClC,MAAM,IAAI,GAAS,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;IACxC,MAAM,IAAI,GAAW,IAAI,CAAC,WAAW,EAAE,CAAC;IAExC,MAAM,aAAa,GAAG,CAAC,IAAU,EAAU,EAAE;QAC3C,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAE1C,kDAAkD;QAClD,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAEpE,oBAAoB;QACpB,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAE3E,2CAA2C;QAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAC1B,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CACrE,CAAC;QAEF,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;IAEF,MAAM,IAAI,GAAW,aAAa,CAAC,IAAI,CAAC,CAAC;IAEzC,OAAO;QACL,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;KACX,CAAC;AACJ,CAAC,CAAC;AA7BW,QAAA,cAAc,kBA6BzB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./dateUtil"), exports);
|
|
18
|
+
__exportStar(require("./languageUtil"), exports);
|
|
19
|
+
__exportStar(require("./periodUtil"), exports);
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,iDAA+B;AAC/B,+CAA6B"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Grunddata, Organisation, Studietakt, Utbildningstyp } from "@kth/ladok-attributvarde-utils";
|
|
2
|
+
export type Language = "sv" | "en";
|
|
3
|
+
export interface TranslatedGrunddata {
|
|
4
|
+
id: string;
|
|
5
|
+
code: string;
|
|
6
|
+
name: string;
|
|
7
|
+
nameOther: string;
|
|
8
|
+
}
|
|
9
|
+
export interface TranslatedOrganisation extends TranslatedGrunddata {
|
|
10
|
+
organisationTypeName: string;
|
|
11
|
+
}
|
|
12
|
+
export interface TranslatedUtbildningstyp extends TranslatedGrunddata {
|
|
13
|
+
creditsUnit: {
|
|
14
|
+
code: string;
|
|
15
|
+
sv: string;
|
|
16
|
+
en: string;
|
|
17
|
+
};
|
|
18
|
+
level: {
|
|
19
|
+
code: string;
|
|
20
|
+
name: string;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export interface TranslatedStudietakt extends TranslatedGrunddata {
|
|
24
|
+
takt: Studietakt["takt"];
|
|
25
|
+
}
|
|
26
|
+
export declare const translateGrunddata: (grunddata: Grunddata, language: Language) => TranslatedGrunddata;
|
|
27
|
+
export declare const translateOrganisation: (organisation: Organisation, language: Language) => TranslatedOrganisation;
|
|
28
|
+
export declare const translateUtbildningstyp: (utbildningstyp: Utbildningstyp, language: Language) => TranslatedUtbildningstyp;
|
|
29
|
+
export declare const translateStudietakt: (studietakt: Studietakt, language: Language) => TranslatedStudietakt;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.translateStudietakt = exports.translateUtbildningstyp = exports.translateOrganisation = exports.translateGrunddata = void 0;
|
|
15
|
+
const translateGrunddata = (grunddata, language) => {
|
|
16
|
+
const { id, code } = grunddata, rest = __rest(grunddata, ["id", "code"]);
|
|
17
|
+
return {
|
|
18
|
+
id,
|
|
19
|
+
code,
|
|
20
|
+
name: rest[language],
|
|
21
|
+
nameOther: rest[language === 'sv' ? 'en' : 'sv']
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
exports.translateGrunddata = translateGrunddata;
|
|
25
|
+
const translateOrganisation = (organisation, language) => {
|
|
26
|
+
return Object.assign(Object.assign({}, (0, exports.translateGrunddata)(organisation, language)), { organisationTypeName: organisation.organisationType[language] });
|
|
27
|
+
};
|
|
28
|
+
exports.translateOrganisation = translateOrganisation;
|
|
29
|
+
const translateUtbildningstyp = (utbildningstyp, language) => {
|
|
30
|
+
const { sv, en } = utbildningstyp.creditsUnit;
|
|
31
|
+
const _a = utbildningstyp.level, { code } = _a, rest = __rest(_a, ["code"]);
|
|
32
|
+
return Object.assign(Object.assign({}, (0, exports.translateGrunddata)(utbildningstyp, language)), { creditsUnit: {
|
|
33
|
+
code: utbildningstyp.creditsUnit.code,
|
|
34
|
+
sv,
|
|
35
|
+
en,
|
|
36
|
+
}, level: {
|
|
37
|
+
code,
|
|
38
|
+
name: rest[language],
|
|
39
|
+
} });
|
|
40
|
+
};
|
|
41
|
+
exports.translateUtbildningstyp = translateUtbildningstyp;
|
|
42
|
+
const translateStudietakt = (studietakt, language) => {
|
|
43
|
+
return Object.assign(Object.assign({}, (0, exports.translateGrunddata)(studietakt, language)), { takt: studietakt.takt });
|
|
44
|
+
};
|
|
45
|
+
exports.translateStudietakt = translateStudietakt;
|
|
46
|
+
//# sourceMappingURL=languageUtil.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"languageUtil.js","sourceRoot":"","sources":["../../src/utils/languageUtil.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAoCO,MAAM,kBAAkB,GAAG,CAChC,SAAoB,EACpB,QAAkB,EACG,EAAE;IACvB,MAAM,EAAE,EAAE,EAAE,IAAI,KAAc,SAAS,EAAlB,IAAI,UAAK,SAAS,EAAjC,cAAqB,CAAY,CAAC;IACxC,OAAO;QACL,EAAE;QACF,IAAI;QACJ,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;QACpB,SAAS,EAAE,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;KACjD,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,kBAAkB,sBAW7B;AAEK,MAAM,qBAAqB,GAAG,CACnC,YAA0B,EAC1B,QAAkB,EACM,EAAE;IAC1B,uCACK,IAAA,0BAAkB,EAAC,YAAY,EAAE,QAAQ,CAAC,KAC7C,oBAAoB,EAAE,YAAY,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAC7D;AACJ,CAAC,CAAC;AARW,QAAA,qBAAqB,yBAQhC;AAEK,MAAM,uBAAuB,GAAG,CACrC,cAA8B,EAC9B,QAAkB,EACQ,EAAE;IAC5B,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,cAAc,CAAC,WAAW,CAAA;IAC7C,MAAM,KAAoB,cAAc,CAAC,KAAK,EAAxC,EAAE,IAAI,OAAkC,EAA7B,IAAI,cAAf,QAAiB,CAAuB,CAAC;IAC/C,uCACK,IAAA,0BAAkB,EAAC,cAAc,EAAE,QAAQ,CAAC,KAC/C,WAAW,EAAE;YACX,IAAI,EAAE,cAAc,CAAC,WAAW,CAAC,IAAI;YACrC,EAAE;YACF,EAAE;SACH,EACD,KAAK,EAAE;YACL,IAAI;YACJ,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;SACrB,IACD;AACJ,CAAC,CAAC;AAlBW,QAAA,uBAAuB,2BAkBlC;AAEK,MAAM,mBAAmB,GAAG,CACjC,UAAsB,EACtB,QAAkB,EACI,EAAE;IACxB,uCACK,IAAA,0BAAkB,EAAC,UAAU,EAAE,QAAQ,CAAC,KAC3C,IAAI,EAAE,UAAU,CAAC,IAAI,IACrB;AACJ,CAAC,CAAC;AARW,QAAA,mBAAmB,uBAQ9B"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const transformPeriodInDigits: (period: string) => string | null;
|
|
2
|
+
export declare const getPeriodCodeForDate: (date: Date) => string;
|
|
3
|
+
export declare const getKthStudyPeriod: (date: Date, startPeriod: {
|
|
4
|
+
code: string | undefined;
|
|
5
|
+
startDate: Date | undefined;
|
|
6
|
+
endDate: Date | undefined;
|
|
7
|
+
}, type: "start" | "end") => 4 | 0 | 1 | 2 | 3 | 5 | undefined;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getKthStudyPeriod = exports.getPeriodCodeForDate = exports.transformPeriodInDigits = void 0;
|
|
4
|
+
const transformPeriodInDigits = (period) => {
|
|
5
|
+
const validPrefixes = ["HT", "VT"];
|
|
6
|
+
if (validPrefixes.includes(period.slice(0, 2)) && period.length > 2) {
|
|
7
|
+
const suffix = period.startsWith("HT") ? "2" : "1";
|
|
8
|
+
const year = period.slice(2);
|
|
9
|
+
return year + suffix;
|
|
10
|
+
}
|
|
11
|
+
return null;
|
|
12
|
+
};
|
|
13
|
+
exports.transformPeriodInDigits = transformPeriodInDigits;
|
|
14
|
+
const getPeriodCodeForDate = (date) => {
|
|
15
|
+
const JULY = 6;
|
|
16
|
+
const year = date.getFullYear();
|
|
17
|
+
const month = date.getMonth();
|
|
18
|
+
const semester = month < JULY ? "VT" : "HT";
|
|
19
|
+
return `${semester}${year}`;
|
|
20
|
+
};
|
|
21
|
+
exports.getPeriodCodeForDate = getPeriodCodeForDate;
|
|
22
|
+
// The getKthStudyPeriod function generates the KTH specific Läsperiod => https://www.kth.se/student/studier/schema/lasarsindelning-1.912374
|
|
23
|
+
const getKthStudyPeriod = (date, startPeriod, type) => {
|
|
24
|
+
const month = date.getMonth() + 1;
|
|
25
|
+
const day = date.getDate();
|
|
26
|
+
if (!startPeriod.code || !startPeriod.startDate || !startPeriod.endDate)
|
|
27
|
+
return undefined;
|
|
28
|
+
if (type === "start") {
|
|
29
|
+
if (startPeriod.code.startsWith("HT") && date < startPeriod.startDate)
|
|
30
|
+
return 0;
|
|
31
|
+
if (startPeriod.code.startsWith("HT") &&
|
|
32
|
+
date >= startPeriod.startDate &&
|
|
33
|
+
month <= 9)
|
|
34
|
+
return 1;
|
|
35
|
+
if (startPeriod.code.startsWith("HT") && date <= startPeriod.endDate)
|
|
36
|
+
return 2;
|
|
37
|
+
if (startPeriod.code.startsWith("VT") &&
|
|
38
|
+
date >= startPeriod.startDate &&
|
|
39
|
+
month <= 2)
|
|
40
|
+
return 3;
|
|
41
|
+
if (startPeriod.code.startsWith("VT") && date <= startPeriod.endDate)
|
|
42
|
+
return 4;
|
|
43
|
+
if (startPeriod.code.startsWith("VT") && date > startPeriod.endDate)
|
|
44
|
+
return 5;
|
|
45
|
+
}
|
|
46
|
+
else if (type === "end") {
|
|
47
|
+
if ((month == 7 && day > 15) || month == 8)
|
|
48
|
+
return 0;
|
|
49
|
+
if (month >= 9 && month <= 11)
|
|
50
|
+
return 1;
|
|
51
|
+
if (month === 1 || month === 12)
|
|
52
|
+
return 2;
|
|
53
|
+
if (month <= 3)
|
|
54
|
+
return 3;
|
|
55
|
+
if (month <= 5 || (month == 6 && day < 15))
|
|
56
|
+
return 4;
|
|
57
|
+
if ((month == 6 && day > 15) || (month == 7 && day < 15))
|
|
58
|
+
return 5;
|
|
59
|
+
}
|
|
60
|
+
return undefined;
|
|
61
|
+
};
|
|
62
|
+
exports.getKthStudyPeriod = getKthStudyPeriod;
|
|
63
|
+
//# sourceMappingURL=periodUtil.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"periodUtil.js","sourceRoot":"","sources":["../../src/utils/periodUtil.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.extractSchoolCodeFromOrganisation = void 0;
|
|
4
|
+
const extractSchoolCodeFromOrganisation = (organisation, language) => {
|
|
5
|
+
if (!organisation)
|
|
6
|
+
return "";
|
|
7
|
+
return language == "sv"
|
|
8
|
+
? organisation.sv.split("/")[0]
|
|
9
|
+
: organisation.en.split("/")[0];
|
|
10
|
+
};
|
|
11
|
+
exports.extractSchoolCodeFromOrganisation = extractSchoolCodeFromOrganisation;
|
|
12
|
+
//# sourceMappingURL=schoolUtil.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schoolUtil.js","sourceRoot":"","sources":["../../src/utils/schoolUtil.ts"],"names":[],"mappings":";;;AAEO,MAAM,iCAAiC,GAAG,CAC/C,YAAsC,EACtC,QAAgB,EAChB,EAAE;IACF,IAAI,CAAC,YAAY;QAAE,OAAO,EAAE,CAAC;IAC7B,OAAO,QAAQ,IAAI,IAAI;QACrB,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC,CAAC;AARW,QAAA,iCAAiC,qCAQ5C"}
|
package/package.json
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@kth/om-kursen-ladok-client",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Wrapper module for applicationinsights",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"files": [
|
|
7
|
+
"dist"
|
|
8
|
+
],
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git+https://github.com/KTH/studadm-om-kursen-packages.git"
|
|
12
|
+
},
|
|
13
|
+
"publishConfig": {
|
|
14
|
+
"access": "public"
|
|
15
|
+
},
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "tsc",
|
|
18
|
+
"test": "jest",
|
|
19
|
+
"test:watch": "jest --watch"
|
|
20
|
+
},
|
|
21
|
+
"dependencies": {
|
|
22
|
+
"@kth/ladok-attributvarde-utils": "0.0.4",
|
|
23
|
+
"@kth/ladok-mellanlager-client": "0.0.3"
|
|
24
|
+
},
|
|
25
|
+
"devDependencies": {
|
|
26
|
+
"@types/jest": "^29.5.12",
|
|
27
|
+
"jest": "^29.7.0",
|
|
28
|
+
"rimraf": "^5.0.10",
|
|
29
|
+
"ts-jest": "^29.2.5",
|
|
30
|
+
"typescript": "^5.5.4"
|
|
31
|
+
}
|
|
32
|
+
}
|