@kth/om-kursen-ladok-client 1.3.12 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/attributVardenConstants.d.ts +1 -0
- package/dist/attributVardenConstants.js +12 -1
- package/dist/attributVardenConstants.js.map +1 -1
- package/dist/createApiClient.js +6 -4
- package/dist/createApiClient.js.map +1 -1
- package/dist/mapCourse.d.ts +2 -1
- package/dist/mapCourse.js +5 -3
- package/dist/mapCourse.js.map +1 -1
- package/dist/mapCourseSyllabus.d.ts +8 -6
- package/dist/mapCourseSyllabus.js +10 -4
- package/dist/mapCourseSyllabus.js.map +1 -1
- package/dist/mapPartOfProgramme.js +7 -4
- package/dist/mapPartOfProgramme.js.map +1 -1
- package/dist/mapProgramInstans.d.ts +2 -2
- package/dist/mapProgramInstans.js +3 -3
- package/dist/mapProgramInstans.js.map +1 -1
- package/dist/mapProgramTerm.js +1 -1
- package/dist/mapProgramTerm.js.map +1 -1
- package/dist/mapProgramTillfalle.d.ts +1 -1
- package/dist/mapProgramTillfalle.js +3 -3
- package/dist/mapProgramTillfalle.js.map +1 -1
- package/dist/mapSearchResult.d.ts +1 -0
- package/dist/mapSearchResult.js +11 -9
- package/dist/mapSearchResult.js.map +1 -1
- package/dist/search/createSearchApi.js +40 -22
- package/dist/search/createSearchApi.js.map +1 -1
- package/dist/search/types.d.ts +5 -0
- package/dist/search/utbildningsTypIdConstants.d.ts +20 -4
- package/dist/search/utbildningsTypIdConstants.js +17 -16
- package/dist/search/utbildningsTypIdConstants.js.map +1 -1
- package/dist/search/utils/educationalTypeUtils.d.ts +11 -0
- package/dist/search/utils/educationalTypeUtils.js +36 -0
- package/dist/search/utils/educationalTypeUtils.js.map +1 -0
- package/dist/search/utils/getAllEntitiesByUseOfContinuation.js +1 -1
- package/dist/search/utils/getLatestCompletedCourseVersions.d.ts +8 -0
- package/dist/search/utils/getLatestCompletedCourseVersions.js +20 -0
- package/dist/search/utils/getLatestCompletedCourseVersions.js.map +1 -0
- package/dist/search/utils/mapCourseVersionDTO.js +3 -3
- package/dist/search/utils/mapCourseVersionDTO.js.map +1 -1
- package/dist/search/utils/searchUtils.d.ts +12 -6
- package/dist/search/utils/searchUtils.js +84 -39
- package/dist/search/utils/searchUtils.js.map +1 -1
- package/dist/supportApis/createSupportApis.d.ts +16 -0
- package/dist/supportApis/createSupportApis.js +137 -0
- package/dist/supportApis/createSupportApis.js.map +1 -0
- package/dist/types/OmKursenLadokApiClient.d.ts +2 -0
- package/dist/utils/examinationModulesUtil.d.ts +2 -2
- package/dist/utils/examinationModulesUtil.js +9 -4
- package/dist/utils/examinationModulesUtil.js.map +1 -1
- package/dist/utils/partOfProgrammeUtil.js +6 -5
- package/dist/utils/partOfProgrammeUtil.js.map +1 -1
- package/dist/utils/programStrukturUtil.d.ts +3 -2
- package/dist/utils/programStrukturUtil.js +12 -10
- package/dist/utils/programStrukturUtil.js.map +1 -1
- package/dist/utils/programUtil.js +3 -3
- package/dist/utils/programUtil.js.map +1 -1
- package/dist/utils/studyYearUtil.d.ts +4 -3
- package/dist/utils/studyYearUtil.js +32 -15
- package/dist/utils/studyYearUtil.js.map +1 -1
- package/package.json +3 -3
|
@@ -11,7 +11,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.createSearchApi = void 0;
|
|
13
13
|
const searchUtils_1 = require("./utils/searchUtils");
|
|
14
|
-
const SearchError_1 = require("./SearchError");
|
|
15
14
|
const getAllEntitiesByUseOfContinuation_1 = require("./utils/getAllEntitiesByUseOfContinuation");
|
|
16
15
|
const mapSearchResult_1 = require("../mapSearchResult");
|
|
17
16
|
const groupSearchResults_1 = require("../groupSearchResults");
|
|
@@ -22,17 +21,21 @@ const utils_1 = require("../utils");
|
|
|
22
21
|
const mapCourseRoundSearchDTO_1 = require("./utils/mapCourseRoundSearchDTO");
|
|
23
22
|
const mapCourseVersionDTO_1 = require("./utils/mapCourseVersionDTO");
|
|
24
23
|
const typeChecking_1 = require("../utils/typeChecking");
|
|
24
|
+
const createSupportApis_1 = require("../supportApis/createSupportApis");
|
|
25
|
+
const getLatestCompletedCourseVersions_1 = require("./utils/getLatestCompletedCourseVersions");
|
|
25
26
|
const createSearchApi = (ladokClient) => {
|
|
26
27
|
return {
|
|
27
28
|
searchCourses: (searchParams, language) => __awaiter(void 0, void 0, void 0, function* () {
|
|
28
29
|
try {
|
|
29
|
-
(0, searchUtils_1.
|
|
30
|
-
const
|
|
31
|
-
const { requestQuery, filterPeriod } = (0, searchUtils_1.prepareSearchRequestQueryForKursTillfallen)(
|
|
30
|
+
const cleanSearchParams = (0, searchUtils_1.validateAndCleanSearchParams)(searchParams);
|
|
31
|
+
const departmentList = yield getDepartmentList(ladokClient, language);
|
|
32
|
+
const { requestQuery, filterPeriod } = (0, searchUtils_1.prepareSearchRequestQueryForKursTillfallen)(cleanSearchParams, departmentList);
|
|
32
33
|
const allCourses = yield (0, getAllEntitiesByUseOfContinuation_1.getAllEntitiesByUseOfContinuation)(ladokClient.sokKursTillfalleSlim, requestQuery);
|
|
33
34
|
const mappedCourses = allCourses.map(course => (0, mapSearchResult_1.mapKursTillfalleResult)(course, language));
|
|
34
35
|
const groupedCourses = (0, groupSearchResults_1.groupSearchResults)(mappedCourses, filterPeriod);
|
|
35
|
-
|
|
36
|
+
// TODO Remove this once we have a query parameter to filter for miljö courses
|
|
37
|
+
const courseVersionsToShow = possiblyFilterByMiljo(groupedCourses, cleanSearchParams.onlyMHU);
|
|
38
|
+
const courseRoundSearchDTOs = courseVersionsToShow.map(mapCourseRoundSearchDTO_1.mapCourseRoundSearchDTO);
|
|
36
39
|
return { searchHits: courseRoundSearchDTOs };
|
|
37
40
|
}
|
|
38
41
|
catch (error) {
|
|
@@ -45,16 +48,18 @@ const createSearchApi = (ladokClient) => {
|
|
|
45
48
|
}),
|
|
46
49
|
searchCourseVersions: (searchParams, language) => __awaiter(void 0, void 0, void 0, function* () {
|
|
47
50
|
try {
|
|
48
|
-
(0, searchUtils_1.
|
|
49
|
-
const
|
|
51
|
+
const cleanSearchParams = (0, searchUtils_1.validateAndCleanSearchParams)(searchParams);
|
|
52
|
+
const departmentList = yield getDepartmentList(ladokClient, language);
|
|
53
|
+
cleanSearchParams.kodEllerBenamning = '*';
|
|
54
|
+
const requestQueryForKursInstans = (0, searchUtils_1.prepareSearchRequestQueryForKursInstans)(cleanSearchParams, departmentList);
|
|
50
55
|
const allCourseVersions = yield (0, getAllEntitiesByUseOfContinuation_1.getAllEntitiesByUseOfContinuation)(ladokClient.sokUtbildningsInstansSlim, requestQueryForKursInstans);
|
|
51
56
|
const gradingScalesCodes = yield (0, gradingScalesUtils_1.getGradingScalesCodes)(ladokClient); // TODO: Use cached values
|
|
52
57
|
const allMappedCourseVersions = allCourseVersions.map(courseVersion => (0, mapCourse_1.mapCourse)(courseVersion, language, gradingScalesCodes));
|
|
53
58
|
const latestCourseVersions = findLatestCourseVersions(allMappedCourseVersions);
|
|
54
|
-
|
|
55
|
-
// TODO
|
|
56
|
-
const
|
|
57
|
-
const courseVersionDTOs =
|
|
59
|
+
const latestApprovedCourses = (0, getLatestCompletedCourseVersions_1.getLatestCompletedCourseVersions)(latestCourseVersions);
|
|
60
|
+
// TODO Remove this once we have a query parameter to filter for miljö courses
|
|
61
|
+
const courseVersionsToShow = possiblyFilterByMiljo(latestApprovedCourses, cleanSearchParams.onlyMHU);
|
|
62
|
+
const courseVersionDTOs = courseVersionsToShow.map(mapCourseVersionDTO_1.mapCourseVersionDTO);
|
|
58
63
|
return { searchHits: courseVersionDTOs };
|
|
59
64
|
}
|
|
60
65
|
catch (error) {
|
|
@@ -68,20 +73,18 @@ const createSearchApi = (ladokClient) => {
|
|
|
68
73
|
};
|
|
69
74
|
};
|
|
70
75
|
exports.createSearchApi = createSearchApi;
|
|
76
|
+
// TODO Remove this once we have a query parameter to filter for miljö courses
|
|
71
77
|
/**
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
* @param
|
|
78
|
+
* If onlyMHU is true, this function filters the courses to only include those that have the flag isMiljo set to true.
|
|
79
|
+
* @param courses
|
|
80
|
+
* @param onlyMHU
|
|
75
81
|
* @returns
|
|
76
82
|
*/
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
83
|
-
return utbildningstypResponse.data.Utbildningstyp;
|
|
84
|
-
});
|
|
83
|
+
const possiblyFilterByMiljo = (courses, onlyMHU = false) => {
|
|
84
|
+
if (!onlyMHU)
|
|
85
|
+
return courses;
|
|
86
|
+
return courses.filter(course => course.isMiljo);
|
|
87
|
+
};
|
|
85
88
|
// TODO Benni: refactor or remove this function if it is not needed anymore (basically a failsafe)
|
|
86
89
|
/**
|
|
87
90
|
* This function takes an array of courseVersions, groups them by their kod, and finds the latest version of each course.
|
|
@@ -104,4 +107,19 @@ const findLatestCourseVersions = (courseVersions) => {
|
|
|
104
107
|
.filter(typeChecking_1.isDefined);
|
|
105
108
|
return latestDefinedCourses;
|
|
106
109
|
};
|
|
110
|
+
/**
|
|
111
|
+
* This function retrieves a list of SchoolWithDepartments from ladok
|
|
112
|
+
* @param ladokClient
|
|
113
|
+
* @param language
|
|
114
|
+
* @returns
|
|
115
|
+
*/
|
|
116
|
+
const getDepartmentList = (ladokClient, language) => __awaiter(void 0, void 0, void 0, function* () {
|
|
117
|
+
const supportAPI = (0, createSupportApis_1.createSupportApi)(ladokClient);
|
|
118
|
+
const [currentDepartmentList, deprecatedDepartmentList] = yield Promise.all([
|
|
119
|
+
supportAPI.createDepartmentList(language),
|
|
120
|
+
supportAPI.createDepartmentList(language, true),
|
|
121
|
+
]);
|
|
122
|
+
const departmentList = [...currentDepartmentList, ...deprecatedDepartmentList];
|
|
123
|
+
return departmentList;
|
|
124
|
+
});
|
|
107
125
|
//# sourceMappingURL=createSearchApi.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSearchApi.js","sourceRoot":"","sources":["../../src/search/createSearchApi.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"createSearchApi.js","sourceRoot":"","sources":["../../src/search/createSearchApi.ts"],"names":[],"mappings":"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"}
|
package/dist/search/types.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { EducationalLevelCode } from '@kth/ladok-attributvarde-utils';
|
|
1
2
|
import { Language } from '../utils';
|
|
2
3
|
export type SearchApi = {
|
|
3
4
|
searchCourses: (searchParams: SearchParams, language: Language) => Promise<SearchCourseResponse<CourseRoundSearchDTO>>;
|
|
@@ -14,6 +15,10 @@ export type SearchParams = {
|
|
|
14
15
|
avvecklad?: string;
|
|
15
16
|
startPeriod?: string[];
|
|
16
17
|
utbildningsniva?: string[];
|
|
18
|
+
onlyMHU?: boolean;
|
|
19
|
+
};
|
|
20
|
+
export type CleanSearchParams = Omit<SearchParams, 'utbildningsniva'> & {
|
|
21
|
+
utbildningsniva?: EducationalLevelCode[];
|
|
17
22
|
};
|
|
18
23
|
export type CourseVersionDTO = {
|
|
19
24
|
kod: string;
|
|
@@ -1,7 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
export declare const VERSION_UTBILDNINGSTYP_IDS_BASIC: {
|
|
2
|
+
ID: number;
|
|
3
|
+
Kod: string;
|
|
4
|
+
}[];
|
|
5
|
+
export declare const VERSION_UTBILDNINGSTYP_IDS_ADVANCED: {
|
|
6
|
+
ID: number;
|
|
7
|
+
Kod: string;
|
|
8
|
+
}[];
|
|
9
|
+
export declare const VERSION_UTBILDNINGSTYP_IDS_PREPARATORY: {
|
|
10
|
+
ID: number;
|
|
11
|
+
Kod: string;
|
|
12
|
+
}[];
|
|
13
|
+
export declare const VERSION_UTUBILDNINGSTYP_IDS_RESEARCH: {
|
|
14
|
+
ID: number;
|
|
15
|
+
Kod: string;
|
|
16
|
+
}[];
|
|
17
|
+
export declare const VERSION_UTBILDNINGSTYP_IDS_UPPDRAG: {
|
|
18
|
+
ID: number;
|
|
19
|
+
Kod: string;
|
|
20
|
+
}[];
|
|
5
21
|
/**
|
|
6
22
|
* The utbildningstyp Ids that we are interested in when searching for courseInstances.
|
|
7
23
|
*/
|
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.INSTANCE_UTBILDNINGSTYP_IDS = exports.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
121910,
|
|
18
|
-
]
|
|
3
|
+
exports.INSTANCE_UTBILDNINGSTYP_IDS = exports.VERSION_UTBILDNINGSTYP_IDS_UPPDRAG = exports.VERSION_UTUBILDNINGSTYP_IDS_RESEARCH = exports.VERSION_UTBILDNINGSTYP_IDS_PREPARATORY = exports.VERSION_UTBILDNINGSTYP_IDS_ADVANCED = exports.VERSION_UTBILDNINGSTYP_IDS_BASIC = void 0;
|
|
4
|
+
exports.VERSION_UTBILDNINGSTYP_IDS_BASIC = [
|
|
5
|
+
{ ID: 22, Kod: '2007GKURS' },
|
|
6
|
+
{ ID: 101992, Kod: 'UPHPGKURS' },
|
|
7
|
+
{ ID: 105630, Kod: '0793GKURS' },
|
|
8
|
+
];
|
|
9
|
+
exports.VERSION_UTBILDNINGSTYP_IDS_ADVANCED = [
|
|
10
|
+
{ ID: 24, Kod: '2007AKURS' },
|
|
11
|
+
{ ID: 101993, Kod: 'UPHPAKURS' },
|
|
12
|
+
{ ID: 105631, Kod: '0793AKURS' },
|
|
13
|
+
];
|
|
14
|
+
exports.VERSION_UTBILDNINGSTYP_IDS_PREPARATORY = [{ ID: 101378, Kod: 'FUPKURS' }];
|
|
15
|
+
exports.VERSION_UTUBILDNINGSTYP_IDS_RESEARCH = [
|
|
16
|
+
{ ID: 101954, Kod: '2007FKURS' },
|
|
17
|
+
{ ID: 121910, Kod: '20073KURS' },
|
|
18
|
+
];
|
|
19
|
+
exports.VERSION_UTBILDNINGSTYP_IDS_UPPDRAG = [{ ID: 102006, Kod: 'UPVKURS' }];
|
|
19
20
|
/**
|
|
20
21
|
* The utbildningstyp Ids that we are interested in when searching for courseInstances.
|
|
21
22
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utbildningsTypIdConstants.js","sourceRoot":"","sources":["../../src/search/utbildningsTypIdConstants.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"utbildningsTypIdConstants.js","sourceRoot":"","sources":["../../src/search/utbildningsTypIdConstants.ts"],"names":[],"mappings":";;;AAAa,QAAA,gCAAgC,GAAG;IAC9C,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE;IAC5B,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE;IAChC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE;CACjC,CAAA;AAEY,QAAA,mCAAmC,GAAG;IACjD,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE;IAC5B,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE;IAChC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE;CACjC,CAAA;AAEY,QAAA,sCAAsC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAA;AAEzE,QAAA,oCAAoC,GAAG;IAClD,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE;IAChC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE;CACjC,CAAA;AAEY,QAAA,kCAAkC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAA;AAElF;;GAEG;AACU,QAAA,2BAA2B,GAAG;IACzC,MAAM,EAAE,SAAS;IACjB,EAAE,EAAE,UAAU;IACd,MAAM,EAAE,qBAAqB;IAC7B,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,kBAAkB;IAC1B,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,qBAAqB;CAC9B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAEX,MAAM,kCAAkC,GAAG;IACzC,MAAM,EAAE,sBAAsB;IAC9B,MAAM,EAAE,sBAAsB;CAC/B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAEX,MAAM,mCAAmC,GAAG;IAC1C,MAAM,EAAE,sBAAsB;IAC9B,MAAM,EAAE,qBAAqB;CAC9B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { EducationalLevelCode } from '@kth/ladok-attributvarde-utils';
|
|
2
|
+
export declare const getAllVersionUtbildningstyperIDs: () => number[];
|
|
3
|
+
/**
|
|
4
|
+
* Returns the version utbildningstyper for the given educational levels.
|
|
5
|
+
* @param educationalLevels
|
|
6
|
+
* @returns
|
|
7
|
+
*/
|
|
8
|
+
export declare const getVersionUtbildningstyperForEducationalLevels: (educationalLevels: EducationalLevelCode[]) => {
|
|
9
|
+
ID: number;
|
|
10
|
+
Kod: string;
|
|
11
|
+
}[];
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getVersionUtbildningstyperForEducationalLevels = exports.getAllVersionUtbildningstyperIDs = void 0;
|
|
4
|
+
const ladok_attributvarde_utils_1 = require("@kth/ladok-attributvarde-utils");
|
|
5
|
+
const utbildningsTypIdConstants_1 = require("../utbildningsTypIdConstants");
|
|
6
|
+
const getAllVersionUtbildningstyperIDs = () => {
|
|
7
|
+
return [
|
|
8
|
+
...utbildningsTypIdConstants_1.VERSION_UTBILDNINGSTYP_IDS_PREPARATORY,
|
|
9
|
+
...utbildningsTypIdConstants_1.VERSION_UTBILDNINGSTYP_IDS_BASIC,
|
|
10
|
+
...utbildningsTypIdConstants_1.VERSION_UTBILDNINGSTYP_IDS_ADVANCED,
|
|
11
|
+
...utbildningsTypIdConstants_1.VERSION_UTUBILDNINGSTYP_IDS_RESEARCH,
|
|
12
|
+
...utbildningsTypIdConstants_1.VERSION_UTBILDNINGSTYP_IDS_UPPDRAG,
|
|
13
|
+
].map(utbildningstyp => utbildningstyp.ID);
|
|
14
|
+
};
|
|
15
|
+
exports.getAllVersionUtbildningstyperIDs = getAllVersionUtbildningstyperIDs;
|
|
16
|
+
/**
|
|
17
|
+
* Returns the version utbildningstyper for the given educational levels.
|
|
18
|
+
* @param educationalLevels
|
|
19
|
+
* @returns
|
|
20
|
+
*/
|
|
21
|
+
const getVersionUtbildningstyperForEducationalLevels = (educationalLevels) => {
|
|
22
|
+
return educationalLevels.flatMap(level => {
|
|
23
|
+
switch (level) {
|
|
24
|
+
case ladok_attributvarde_utils_1.EducationalLevelCode.Preparatory:
|
|
25
|
+
return utbildningsTypIdConstants_1.VERSION_UTBILDNINGSTYP_IDS_PREPARATORY;
|
|
26
|
+
case ladok_attributvarde_utils_1.EducationalLevelCode.Basic:
|
|
27
|
+
return utbildningsTypIdConstants_1.VERSION_UTBILDNINGSTYP_IDS_BASIC;
|
|
28
|
+
case ladok_attributvarde_utils_1.EducationalLevelCode.Advanced:
|
|
29
|
+
return utbildningsTypIdConstants_1.VERSION_UTBILDNINGSTYP_IDS_ADVANCED;
|
|
30
|
+
case ladok_attributvarde_utils_1.EducationalLevelCode.Research:
|
|
31
|
+
return utbildningsTypIdConstants_1.VERSION_UTUBILDNINGSTYP_IDS_RESEARCH;
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
exports.getVersionUtbildningstyperForEducationalLevels = getVersionUtbildningstyperForEducationalLevels;
|
|
36
|
+
//# sourceMappingURL=educationalTypeUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"educationalTypeUtils.js","sourceRoot":"","sources":["../../../src/search/utils/educationalTypeUtils.ts"],"names":[],"mappings":";;;AAAA,8EAAqE;AACrE,4EAMqC;AAE9B,MAAM,gCAAgC,GAAG,GAAa,EAAE;IAC7D,OAAO;QACL,GAAG,kEAAsC;QACzC,GAAG,4DAAgC;QACnC,GAAG,+DAAmC;QACtC,GAAG,gEAAoC;QACvC,GAAG,8DAAkC;KACtC,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;AAC5C,CAAC,CAAA;AARY,QAAA,gCAAgC,oCAQ5C;AAED;;;;GAIG;AACI,MAAM,8CAA8C,GAAG,CAAC,iBAAyC,EAAE,EAAE;IAC1G,OAAO,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACvC,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,gDAAoB,CAAC,WAAW;gBACnC,OAAO,kEAAsC,CAAA;YAC/C,KAAK,gDAAoB,CAAC,KAAK;gBAC7B,OAAO,4DAAgC,CAAA;YACzC,KAAK,gDAAoB,CAAC,QAAQ;gBAChC,OAAO,+DAAmC,CAAA;YAC5C,KAAK,gDAAoB,CAAC,QAAQ;gBAChC,OAAO,gEAAoC,CAAA;QAC/C,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAbY,QAAA,8CAA8C,kDAa1D"}
|
|
@@ -11,7 +11,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.getAllEntitiesByUseOfContinuation = void 0;
|
|
13
13
|
const SearchError_1 = require("../SearchError");
|
|
14
|
-
const MAX_SEARCH_RESULTS_TO_RETURN =
|
|
14
|
+
const MAX_SEARCH_RESULTS_TO_RETURN = 300; // TODO Benni, make sure to adjust this. We do not want to have more than 250 results in the UI, but here it could be more
|
|
15
15
|
const MAX_CONTINUATION_ITERATIONS = 4;
|
|
16
16
|
const getAllEntitiesByUseOfContinuation = (apiCall, requestQuery) => __awaiter(void 0, void 0, void 0, function* () {
|
|
17
17
|
var _a;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Course } from '../../mapCourse';
|
|
2
|
+
/**
|
|
3
|
+
* Returns only course versions that have been completed at least once.
|
|
4
|
+
* This means that the versionsnummer is greater than 1 or if it is 1, the ladokStatusCode is Complete.
|
|
5
|
+
* @param courseVersions
|
|
6
|
+
* @returns
|
|
7
|
+
*/
|
|
8
|
+
export declare const getLatestCompletedCourseVersions: <T extends Pick<Course, "versionsnummer" | "ladokStatusCode">>(courseVersions: T[]) => T[];
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getLatestCompletedCourseVersions = void 0;
|
|
4
|
+
const ladok_attributvarde_utils_1 = require("@kth/ladok-attributvarde-utils");
|
|
5
|
+
/**
|
|
6
|
+
* Returns only course versions that have been completed at least once.
|
|
7
|
+
* This means that the versionsnummer is greater than 1 or if it is 1, the ladokStatusCode is Complete.
|
|
8
|
+
* @param courseVersions
|
|
9
|
+
* @returns
|
|
10
|
+
*/
|
|
11
|
+
const getLatestCompletedCourseVersions = (courseVersions) => {
|
|
12
|
+
return courseVersions.filter(course => {
|
|
13
|
+
const versionsnummer = parseInt(course.versionsnummer, 10);
|
|
14
|
+
if (course.ladokStatusCode === ladok_attributvarde_utils_1.LadokStatusCode.Complete)
|
|
15
|
+
return true;
|
|
16
|
+
return versionsnummer > 1; // If a versionnummer is greater than 1, there once has been at least one completed version
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
exports.getLatestCompletedCourseVersions = getLatestCompletedCourseVersions;
|
|
20
|
+
//# sourceMappingURL=getLatestCompletedCourseVersions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getLatestCompletedCourseVersions.js","sourceRoot":"","sources":["../../../src/search/utils/getLatestCompletedCourseVersions.ts"],"names":[],"mappings":";;;AAAA,8EAAgE;AAGhE;;;;;GAKG;AACI,MAAM,gCAAgC,GAAG,CAC9C,cAAmB,EACd,EAAE;IACP,OAAO,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;QACpC,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;QAE1D,IAAI,MAAM,CAAC,eAAe,KAAK,2CAAe,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAA;QAEpE,OAAO,cAAc,GAAG,CAAC,CAAA,CAAC,2FAA2F;IACvH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAVY,QAAA,gCAAgC,oCAU5C"}
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.mapCourseVersionDTO = void 0;
|
|
4
4
|
const mapCourseVersionDTO = (courseVersion) => {
|
|
5
|
-
var _a, _b;
|
|
5
|
+
var _a, _b, _c;
|
|
6
6
|
return {
|
|
7
7
|
kod: courseVersion.kod,
|
|
8
|
-
benamning: courseVersion.benamning,
|
|
8
|
+
benamning: (_a = courseVersion === null || courseVersion === void 0 ? void 0 : courseVersion.benamning) !== null && _a !== void 0 ? _a : '',
|
|
9
9
|
omfattning: courseVersion.omfattning.formattedWithUnit,
|
|
10
|
-
utbildningstyp: (
|
|
10
|
+
utbildningstyp: (_c = (_b = courseVersion.utbildningstyp) === null || _b === void 0 ? void 0 : _b.level.name) !== null && _c !== void 0 ? _c : '',
|
|
11
11
|
};
|
|
12
12
|
};
|
|
13
13
|
exports.mapCourseVersionDTO = mapCourseVersionDTO;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapCourseVersionDTO.js","sourceRoot":"","sources":["../../../src/search/utils/mapCourseVersionDTO.ts"],"names":[],"mappings":";;;AAGO,MAAM,mBAAmB,GAAG,CAAC,aAAqB,EAAoB,EAAE;;IAC7E,OAAO;QACL,GAAG,EAAE,aAAa,CAAC,GAAG;QACtB,SAAS,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"mapCourseVersionDTO.js","sourceRoot":"","sources":["../../../src/search/utils/mapCourseVersionDTO.ts"],"names":[],"mappings":";;;AAGO,MAAM,mBAAmB,GAAG,CAAC,aAAqB,EAAoB,EAAE;;IAC7E,OAAO;QACL,GAAG,EAAE,aAAa,CAAC,GAAG;QACtB,SAAS,EAAE,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,SAAS,mCAAI,EAAE;QACzC,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,iBAAiB;QACtD,cAAc,EAAE,MAAA,MAAA,aAAa,CAAC,cAAc,0CAAE,KAAK,CAAC,IAAI,mCAAI,EAAE;KAC/D,CAAA;AACH,CAAC,CAAA;AAPY,QAAA,mBAAmB,uBAO/B"}
|
|
@@ -1,12 +1,18 @@
|
|
|
1
|
-
import { SokUtbildningsInstansSlimQuery,
|
|
2
|
-
import {
|
|
1
|
+
import { SokUtbildningsInstansSlimQuery, SokUtbildningsTillfalleSlimQuery } from '@kth/ladok-mellanlager-client';
|
|
2
|
+
import { CleanSearchParams, SearchParams } from '../types';
|
|
3
|
+
import { SchoolWithDepartments } from '../../supportApis/createSupportApis';
|
|
3
4
|
/**
|
|
5
|
+
* Validates and cleans the search parameters for the search API.
|
|
4
6
|
* Throws an error if the searchParams are invalid.
|
|
5
7
|
* @param searchParams
|
|
8
|
+
* @returns
|
|
9
|
+
* @throws SearchError
|
|
10
|
+
* - noRestrictions: if no search parameters are provided
|
|
11
|
+
* - kodEllerBenamning: if kodEllerBenamning is provided but less than 3 characters
|
|
6
12
|
*/
|
|
7
|
-
export declare const
|
|
8
|
-
export declare const prepareSearchRequestQueryForKursTillfallen: (
|
|
9
|
-
requestQuery:
|
|
13
|
+
export declare const validateAndCleanSearchParams: (searchParams: SearchParams) => CleanSearchParams;
|
|
14
|
+
export declare const prepareSearchRequestQueryForKursTillfallen: (searchParams: CleanSearchParams, schoolsWithDepartments: SchoolWithDepartments[]) => {
|
|
15
|
+
requestQuery: NonNullable<SokUtbildningsTillfalleSlimQuery>;
|
|
10
16
|
filterPeriod: boolean;
|
|
11
17
|
};
|
|
12
|
-
export declare const prepareSearchRequestQueryForKursInstans: (searchParams:
|
|
18
|
+
export declare const prepareSearchRequestQueryForKursInstans: (searchParams: CleanSearchParams, schoolsWithDepartments: SchoolWithDepartments[]) => NonNullable<SokUtbildningsInstansSlimQuery>;
|
|
@@ -1,72 +1,117 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.prepareSearchRequestQueryForKursInstans = exports.prepareSearchRequestQueryForKursTillfallen = exports.
|
|
3
|
+
exports.prepareSearchRequestQueryForKursInstans = exports.prepareSearchRequestQueryForKursTillfallen = exports.validateAndCleanSearchParams = void 0;
|
|
4
4
|
const SearchError_1 = require("../SearchError");
|
|
5
5
|
const utils_1 = require("../../utils");
|
|
6
6
|
const ladok_attributvarde_utils_1 = require("@kth/ladok-attributvarde-utils");
|
|
7
7
|
const utbildningsTypIdConstants_1 = require("../utbildningsTypIdConstants");
|
|
8
8
|
const attributVardenConstants_1 = require("../../attributVardenConstants");
|
|
9
|
+
const educationalTypeUtils_1 = require("./educationalTypeUtils");
|
|
10
|
+
const typeChecking_1 = require("../../utils/typeChecking");
|
|
9
11
|
/**
|
|
12
|
+
* Validates and cleans the search parameters for the search API.
|
|
10
13
|
* Throws an error if the searchParams are invalid.
|
|
11
14
|
* @param searchParams
|
|
15
|
+
* @returns
|
|
16
|
+
* @throws SearchError
|
|
17
|
+
* - noRestrictions: if no search parameters are provided
|
|
18
|
+
* - kodEllerBenamning: if kodEllerBenamning is provided but less than 3 characters
|
|
12
19
|
*/
|
|
13
|
-
const
|
|
14
|
-
const { kodEllerBenamning, organisation, sprak, startPeriod, utbildningsniva, avvecklad } = searchParams;
|
|
15
|
-
|
|
20
|
+
const validateAndCleanSearchParams = (searchParams) => {
|
|
21
|
+
const { kodEllerBenamning, organisation, sprak, startPeriod, utbildningsniva: rawUtbildningsniva, avvecklad, onlyMHU, } = searchParams;
|
|
22
|
+
// TODO add onlyMHU here as well once we have a query parameter to filter for miljö courses
|
|
23
|
+
if (!avvecklad && !kodEllerBenamning && !organisation && !sprak && !startPeriod && !rawUtbildningsniva) {
|
|
16
24
|
throw SearchError_1.SearchError.noRestrictions();
|
|
17
25
|
}
|
|
18
26
|
if (kodEllerBenamning && kodEllerBenamning.length < 3) {
|
|
19
27
|
throw SearchError_1.SearchError.kodEllerBenamning();
|
|
20
28
|
}
|
|
29
|
+
const utbildningsniva = rawUtbildningsniva ? cleanUtbildningsnivaParam(rawUtbildningsniva) : undefined;
|
|
30
|
+
return {
|
|
31
|
+
kodEllerBenamning,
|
|
32
|
+
organisation,
|
|
33
|
+
sprak,
|
|
34
|
+
startPeriod,
|
|
35
|
+
utbildningsniva,
|
|
36
|
+
avvecklad,
|
|
37
|
+
onlyMHU,
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
exports.validateAndCleanSearchParams = validateAndCleanSearchParams;
|
|
41
|
+
const cleanUtbildningsnivaParam = (utbildningsniva) => {
|
|
42
|
+
const mappedUtbildningsniva = utbildningsniva.map(mapUtbildningsniva);
|
|
43
|
+
return mappedUtbildningsniva.filter(typeChecking_1.isDefined);
|
|
44
|
+
};
|
|
45
|
+
const mapUtbildningsniva = (utbildningsniva) => {
|
|
46
|
+
switch (utbildningsniva) {
|
|
47
|
+
case ladok_attributvarde_utils_1.EducationalLevelCode.Preparatory:
|
|
48
|
+
return ladok_attributvarde_utils_1.EducationalLevelCode.Preparatory;
|
|
49
|
+
case ladok_attributvarde_utils_1.EducationalLevelCode.Advanced:
|
|
50
|
+
return ladok_attributvarde_utils_1.EducationalLevelCode.Advanced;
|
|
51
|
+
case ladok_attributvarde_utils_1.EducationalLevelCode.Basic:
|
|
52
|
+
return ladok_attributvarde_utils_1.EducationalLevelCode.Basic;
|
|
53
|
+
case ladok_attributvarde_utils_1.EducationalLevelCode.Research:
|
|
54
|
+
return ladok_attributvarde_utils_1.EducationalLevelCode.Research;
|
|
55
|
+
default:
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
21
58
|
};
|
|
22
|
-
exports.validateSearchParams = validateSearchParams;
|
|
23
59
|
const MAX_ANTAL_TRAFFAR = '100';
|
|
24
60
|
// TODO Benni, maybe this does not make things cleaner, observe
|
|
25
61
|
// TODO Benni don't forget this when cleaning up types on query object
|
|
26
62
|
const DEFAULT_INSTANCE_QUERY_PARAMS = {
|
|
27
63
|
attributVarden: attributVardenConstants_1.ATTRIBUT_VARDEN_FOR_COURSE_ROUNDS_SEARCH,
|
|
28
|
-
instansAttributVarden:
|
|
64
|
+
instansAttributVarden: attributVardenConstants_1.INSTANS_ATTRIBUT_VARDEN_FOR_COURSE_ROUNDS_SEARCH,
|
|
29
65
|
antalTraffar: MAX_ANTAL_TRAFFAR,
|
|
30
66
|
};
|
|
31
|
-
const prepareSearchRequestQueryForKursTillfallen = (
|
|
67
|
+
const prepareSearchRequestQueryForKursTillfallen = (searchParams, schoolsWithDepartments) => {
|
|
32
68
|
const { kodEllerBenamning, organisation, sprak, startPeriod, utbildningsniva, avvecklad } = searchParams;
|
|
33
|
-
const educationalTypes =
|
|
69
|
+
const educationalTypes = getUtbildningsnivaParameterForKursTillfalle(utbildningsniva);
|
|
70
|
+
const organisationsFilter = getOrganisationsFilter(schoolsWithDepartments, organisation);
|
|
34
71
|
const filterPeriod = !Boolean(startPeriod);
|
|
35
|
-
const requestQuery = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ kodEllerBenamning: kodEllerBenamning !== null && kodEllerBenamning !== void 0 ? kodEllerBenamning : '*' }, getStartPeriodOrTerminkodStart(startPeriod)), (educationalTypes && { utbildningsniva: educationalTypes
|
|
72
|
+
const requestQuery = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ kodEllerBenamning: kodEllerBenamning !== null && kodEllerBenamning !== void 0 ? kodEllerBenamning : '*' }, getStartPeriodOrTerminkodStart(startPeriod)), (educationalTypes && { utbildningsniva: educationalTypes })), (organisationsFilter && { organisation: organisationsFilter })), (sprak && { sprak })), (avvecklad && { avvecklad })), DEFAULT_INSTANCE_QUERY_PARAMS), { utbildningstypid: utbildningsTypIdConstants_1.INSTANCE_UTBILDNINGSTYP_IDS });
|
|
36
73
|
return { requestQuery, filterPeriod }; // TODO Benni this does two things, filterPeriod should probably be split out
|
|
37
74
|
};
|
|
38
75
|
exports.prepareSearchRequestQueryForKursTillfallen = prepareSearchRequestQueryForKursTillfallen;
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
exports.prepareSearchRequestQueryForKursInstans = prepareSearchRequestQueryForKursInstans;
|
|
49
|
-
const filterAndMapEducationalTypes = ({ utbildningsniva, utbildningstyper: ladokTypes, }) => {
|
|
50
|
-
if (!utbildningsniva)
|
|
51
|
-
return [];
|
|
52
|
-
const preparatoryTypes = [ladok_attributvarde_utils_1.EDUCATIONAL_TYPE_CODE_FOR_PREPARATORY_LEVEL]; // Hard coded
|
|
53
|
-
const basicTypes = ladokTypes
|
|
54
|
-
.filter(typ => String(typ.NivaInomStudieordningID) === ladok_attributvarde_utils_1.EducationalLevelCode.Basic)
|
|
55
|
-
.map(x => x.Kod);
|
|
56
|
-
const advancedTypes = ladokTypes
|
|
57
|
-
.filter(typ => String(typ.NivaInomStudieordningID) === ladok_attributvarde_utils_1.EducationalLevelCode.Advanced)
|
|
58
|
-
.map(x => x.Kod);
|
|
59
|
-
const researchTypes = ladokTypes
|
|
60
|
-
.filter(typ => String(typ.NivaInomStudieordningID) === ladok_attributvarde_utils_1.EducationalLevelCode.Research)
|
|
61
|
-
.map(x => x.Kod);
|
|
62
|
-
const levelMap = new Map([
|
|
63
|
-
[ladok_attributvarde_utils_1.EducationalLevelCode.Preparatory, preparatoryTypes],
|
|
64
|
-
[ladok_attributvarde_utils_1.EducationalLevelCode.Basic, basicTypes],
|
|
65
|
-
[ladok_attributvarde_utils_1.EducationalLevelCode.Advanced, advancedTypes],
|
|
66
|
-
[ladok_attributvarde_utils_1.EducationalLevelCode.Research, researchTypes],
|
|
67
|
-
]);
|
|
68
|
-
return utbildningsniva === null || utbildningsniva === void 0 ? void 0 : utbildningsniva.flatMap(level => levelMap.get(level) || []);
|
|
76
|
+
/**
|
|
77
|
+
* Takes an array of educational levels and returns a comma-separated string of the corresponding utbildningstypKoder.
|
|
78
|
+
* @param educationalLevels
|
|
79
|
+
* @returns
|
|
80
|
+
*/
|
|
81
|
+
const getUtbildningsnivaParameterForKursTillfalle = (educationalLevels) => {
|
|
82
|
+
if (!educationalLevels)
|
|
83
|
+
return undefined;
|
|
84
|
+
return getCommaSeparatedEducationalTypesInFormat('Kod', educationalLevels);
|
|
69
85
|
};
|
|
86
|
+
/**
|
|
87
|
+
* Takes an array of educational levels and returns a comma-separated string of the corresponding utbildningstypIDn.
|
|
88
|
+
* @param educationalLevels
|
|
89
|
+
* @returns
|
|
90
|
+
*/
|
|
91
|
+
const getUtbildningsnivaParameterForKursInstans = (educationalLevels) => {
|
|
92
|
+
if (!educationalLevels)
|
|
93
|
+
return (0, educationalTypeUtils_1.getAllVersionUtbildningstyperIDs)().join(',');
|
|
94
|
+
return getCommaSeparatedEducationalTypesInFormat('ID', educationalLevels);
|
|
95
|
+
};
|
|
96
|
+
const getCommaSeparatedEducationalTypesInFormat = (format, educationalLevels) => {
|
|
97
|
+
const selectedEducationalTypes = (0, educationalTypeUtils_1.getVersionUtbildningstyperForEducationalLevels)(educationalLevels);
|
|
98
|
+
const selectedEducationalTypeIdentifiers = selectedEducationalTypes.map(item => item[format]);
|
|
99
|
+
return selectedEducationalTypeIdentifiers.join(',');
|
|
100
|
+
};
|
|
101
|
+
const getOrganisationsFilter = (organisationer, organisation) => {
|
|
102
|
+
var _a, _b;
|
|
103
|
+
if (organisation && (organisation === null || organisation === void 0 ? void 0 : organisation.length) === 1) {
|
|
104
|
+
return ((_b = (_a = organisationer
|
|
105
|
+
.find(org => org.departmentPrefix === organisation)) === null || _a === void 0 ? void 0 : _a.departments.map(department => department.code).join(',')) !== null && _b !== void 0 ? _b : organisation);
|
|
106
|
+
}
|
|
107
|
+
return organisation;
|
|
108
|
+
};
|
|
109
|
+
const prepareSearchRequestQueryForKursInstans = (searchParams, schoolsWithDepartments) => {
|
|
110
|
+
const { kodEllerBenamning, avvecklad, organisation, utbildningsniva } = searchParams;
|
|
111
|
+
const organisationsFilter = getOrganisationsFilter(schoolsWithDepartments, organisation);
|
|
112
|
+
return Object.assign(Object.assign(Object.assign({ kodEllerBenamning: kodEllerBenamning !== null && kodEllerBenamning !== void 0 ? kodEllerBenamning : '*', antalTraffar: MAX_ANTAL_TRAFFAR }, (avvecklad && { avvecklad })), (organisationsFilter && { organisation: organisationsFilter })), { utbildningstypgrundtyp: 'KURS', utbildningstypid: getUtbildningsnivaParameterForKursInstans(utbildningsniva), instansAttributVarden: attributVardenConstants_1.ATTRIBUT_VARDEN_FOR_COURSE_VERSIONS, senasteversion: 'true' });
|
|
113
|
+
};
|
|
114
|
+
exports.prepareSearchRequestQueryForKursInstans = prepareSearchRequestQueryForKursInstans;
|
|
70
115
|
/**
|
|
71
116
|
* If startPeriod is defined, returns it as an object with startPeriod property and comma-separated values.
|
|
72
117
|
* If not, returns an object with terminkodStart property and the default period.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"searchUtils.js","sourceRoot":"","sources":["../../../src/search/utils/searchUtils.ts"],"names":[],"mappings":";;;AACA,gDAA4C;AAE5C,uCAAkD;AAClD,
|
|
1
|
+
{"version":3,"file":"searchUtils.js","sourceRoot":"","sources":["../../../src/search/utils/searchUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { LadokMellanlagerApiClient } from '@kth/ladok-mellanlager-client';
|
|
2
|
+
import { Language } from '../utils';
|
|
3
|
+
export declare const createSupportApi: (ladokClient: LadokMellanlagerApiClient) => SupportApi;
|
|
4
|
+
export type SupportApi = {
|
|
5
|
+
createDepartmentList: (language: Language, deprecated?: boolean) => Promise<SchoolWithDepartments[]>;
|
|
6
|
+
};
|
|
7
|
+
type DepartmentFlat = {
|
|
8
|
+
name: string;
|
|
9
|
+
code: string;
|
|
10
|
+
};
|
|
11
|
+
export type SchoolWithDepartments = {
|
|
12
|
+
departmentPrefix: string;
|
|
13
|
+
name: string;
|
|
14
|
+
departments: DepartmentFlat[];
|
|
15
|
+
};
|
|
16
|
+
export {};
|