@studyportals/fawkes 6.0.1-9 → 7.0.1-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/src/presenters/DegreePresenter.d.ts +1 -0
- package/dist/src/presenters/DegreePresenter.js +28 -1
- package/dist/src/presenters/EducationalFormPresenter.js +14 -1
- package/dist/src/programmes/BaseProgrammeFilterKeyValueRule.d.ts +6 -0
- package/dist/src/programmes/BaseProgrammeFilterKeyValueRule.js +6 -0
- package/dist/src/programmes/BaseProgrammeRule.d.ts +10 -0
- package/dist/src/programmes/BaseProgrammeRule.js +5 -0
- package/dist/src/programmes/IProgrammeRule.d.ts +5 -0
- package/dist/src/programmes/IProgrammeRule.js +1 -0
- package/dist/src/programmes/ProgrammesBaseIndexabilityPolicy.d.ts +7 -0
- package/dist/src/programmes/ProgrammesBaseIndexabilityPolicy.js +21 -0
- package/dist/src/programmes/policies/Area.js +10 -8
- package/dist/src/programmes/policies/Attendance.js +7 -5
- package/dist/src/programmes/policies/AttendanceDegree.js +11 -9
- package/dist/src/programmes/policies/Continent.js +7 -5
- package/dist/src/programmes/policies/ContinentTuitionFee.js +11 -9
- package/dist/src/programmes/policies/Country.js +7 -5
- package/dist/src/programmes/policies/CountryAttendance.js +11 -9
- package/dist/src/programmes/policies/CountryAttendanceDegree.js +13 -11
- package/dist/src/programmes/policies/CountryDegree.js +11 -9
- package/dist/src/programmes/policies/CountryDuration.js +11 -9
- package/dist/src/programmes/policies/CountryDurationDegree.js +13 -11
- package/dist/src/programmes/policies/CountryEducationalForm.js +11 -9
- package/dist/src/programmes/policies/CountryFormat.js +11 -9
- package/dist/src/programmes/policies/CountryTuitionFee.js +11 -9
- package/dist/src/programmes/policies/Discipline.js +7 -5
- package/dist/src/programmes/policies/DisciplineArea.js +12 -10
- package/dist/src/programmes/policies/DisciplineAttendance.js +11 -9
- package/dist/src/programmes/policies/DisciplineContinent.js +11 -9
- package/dist/src/programmes/policies/DisciplineCountry.js +11 -9
- package/dist/src/programmes/policies/DisciplineCountryDegree.js +13 -11
- package/dist/src/programmes/policies/DisciplineCountryEducationalForm.js +13 -11
- package/dist/src/programmes/policies/DisciplineDegree.js +11 -9
- package/dist/src/programmes/policies/DisciplineDuration.js +11 -9
- package/dist/src/programmes/policies/DisciplineEducationalForm.js +11 -9
- package/dist/src/programmes/policies/DisciplineFormat.js +11 -9
- package/dist/src/programmes/policies/DisciplineTuitionFee.js +11 -9
- package/dist/src/programmes/policies/DisciplineTuitionFeeAttendance.js +13 -11
- package/dist/src/programmes/policies/SpecialProgrammes.js +7 -5
- package/dist/src/programmes/policies/TuitionFee.js +4 -6
- package/dist/src/programmes/rules/AffordableTuitionFeeRule.d.ts +2 -2
- package/dist/src/programmes/rules/AffordableTuitionFeeRule.js +2 -2
- package/dist/src/programmes/rules/AtLeastSevenResultsRule.d.ts +5 -3
- package/dist/src/programmes/rules/AtLeastSevenResultsRule.js +6 -2
- package/dist/src/programmes/rules/ErasmusOrJointSpecialProgrammesRule.d.ts +2 -2
- package/dist/src/programmes/rules/ErasmusOrJointSpecialProgrammesRule.js +2 -1
- package/dist/src/programmes/rules/IndexableDegreeRule.d.ts +2 -2
- package/dist/src/programmes/rules/IndexableDegreeRule.js +2 -1
- package/dist/src/programmes/rules/IndexableDurationRule.d.ts +2 -2
- package/dist/src/programmes/rules/IndexableDurationRule.js +2 -1
- package/dist/src/programmes/rules/IndexableEducationalFormRule.d.ts +2 -2
- package/dist/src/programmes/rules/IndexableEducationalFormRule.js +2 -1
- package/dist/src/programmes/rules/IndexablePageNumberRule.d.ts +2 -2
- package/dist/src/programmes/rules/IndexablePageNumberRule.js +2 -1
- package/dist/src/programmes/rules/MbaDegreeRule.d.ts +2 -2
- package/dist/src/programmes/rules/MbaDegreeRule.js +2 -2
- package/dist/src/programmes/rules/MbaOrMscDegreeRule.d.ts +2 -2
- package/dist/src/programmes/rules/MbaOrMscDegreeRule.js +2 -1
- package/dist/src/programmes/rules/NotDistanceLearningPortalRule.d.ts +2 -2
- package/dist/src/programmes/rules/NotDistanceLearningPortalRule.js +3 -1
- package/dist/src/programmes/rules/OneYearDurationRule.d.ts +2 -2
- package/dist/src/programmes/rules/OneYearDurationRule.js +2 -2
- package/dist/src/programmes/rules/PartTimeFormatRule.d.ts +2 -2
- package/dist/src/programmes/rules/PartTimeFormatRule.js +2 -2
- package/dist/src/programmes/types/IProgrammeSearchSitemapDependencies.d.ts +0 -2
- package/dist/src/sitemap-generator/ProgrammesSitemapUrlGeneratorManager.d.ts +1 -2
- package/dist/src/sitemap-generator/ProgrammesSitemapUrlGeneratorManager.js +2 -3
- package/package.json +3 -1
|
@@ -24,15 +24,17 @@ export class DisciplineAttendance extends ProgrammesBaseIndexabilityPolicy {
|
|
|
24
24
|
const disciplineFragments = DisciplinePresenter.getInstance().getFragments();
|
|
25
25
|
const attendanceFragments = AttendancePresenter.getInstance().getFragments();
|
|
26
26
|
const paths = [];
|
|
27
|
-
for (const
|
|
28
|
-
for (const
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
27
|
+
for (const pageNumber of this.indexablePageNumbers) {
|
|
28
|
+
for (const discipline of disciplineFragments) {
|
|
29
|
+
for (const attendance of attendanceFragments) {
|
|
30
|
+
const filterKeyValues = new Map([
|
|
31
|
+
[FilterKey.DISCIPLINES, [discipline.id]],
|
|
32
|
+
[FilterKey.DELIVERY_METHOD, [attendance.id]]
|
|
33
|
+
]);
|
|
34
|
+
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
35
|
+
if (result) {
|
|
36
|
+
paths.push(this.getPathWithPageNumber(`${attendance.path}/${discipline.path}`, pageNumber));
|
|
37
|
+
}
|
|
36
38
|
}
|
|
37
39
|
}
|
|
38
40
|
}
|
|
@@ -22,15 +22,17 @@ export class DisciplineContinent extends ProgrammesBaseIndexabilityPolicy {
|
|
|
22
22
|
const disciplineFragments = DisciplinePresenter.getInstance().getFragments();
|
|
23
23
|
const continentFragments = ContinentPresenter.getInstance().getFragments();
|
|
24
24
|
const paths = [];
|
|
25
|
-
for (const
|
|
26
|
-
for (const
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
25
|
+
for (const pageNumber of this.indexablePageNumbers) {
|
|
26
|
+
for (const discipline of disciplineFragments) {
|
|
27
|
+
for (const continent of continentFragments) {
|
|
28
|
+
const filterKeyValues = new Map([
|
|
29
|
+
[FilterKey.DISCIPLINES, [discipline.id]],
|
|
30
|
+
[FilterKey.CONTINENT, [continent.id]]
|
|
31
|
+
]);
|
|
32
|
+
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
33
|
+
if (result) {
|
|
34
|
+
paths.push(this.getPathWithPageNumber(`${discipline.path}/${continent.path}`, pageNumber));
|
|
35
|
+
}
|
|
34
36
|
}
|
|
35
37
|
}
|
|
36
38
|
}
|
|
@@ -22,15 +22,17 @@ export class DisciplineCountry extends ProgrammesBaseIndexabilityPolicy {
|
|
|
22
22
|
const disciplineFragments = DisciplinePresenter.getInstance().getFragments();
|
|
23
23
|
const countryFragments = CountryPresenter.getInstance().getFragments();
|
|
24
24
|
const paths = [];
|
|
25
|
-
for (const
|
|
26
|
-
for (const
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
25
|
+
for (const pageNumber of this.indexablePageNumbers) {
|
|
26
|
+
for (const discipline of disciplineFragments) {
|
|
27
|
+
for (const country of countryFragments) {
|
|
28
|
+
const filterKeyValues = new Map([
|
|
29
|
+
[FilterKey.DISCIPLINES, [discipline.id]],
|
|
30
|
+
[FilterKey.COUNTRY, [country.id]]
|
|
31
|
+
]);
|
|
32
|
+
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
33
|
+
if (result) {
|
|
34
|
+
paths.push(this.getPathWithPageNumber(`${discipline.path}/${country.path}`, pageNumber));
|
|
35
|
+
}
|
|
34
36
|
}
|
|
35
37
|
}
|
|
36
38
|
}
|
|
@@ -28,17 +28,19 @@ export class DisciplineCountryDegree extends ProgrammesBaseIndexabilityPolicy {
|
|
|
28
28
|
const countryFragments = CountryPresenter.getInstance().getFragments();
|
|
29
29
|
const degreeFragments = DegreePresenter.getInstance().getFragments();
|
|
30
30
|
const paths = [];
|
|
31
|
-
for (const
|
|
32
|
-
for (const
|
|
33
|
-
for (const
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
31
|
+
for (const pageNumber of this.indexablePageNumbers) {
|
|
32
|
+
for (const discipline of disciplineFragments) {
|
|
33
|
+
for (const country of countryFragments) {
|
|
34
|
+
for (const degree of degreeFragments) {
|
|
35
|
+
const filterKeyValues = new Map([
|
|
36
|
+
[FilterKey.DISCIPLINES, [discipline.id]],
|
|
37
|
+
[FilterKey.COUNTRY, [country.id]],
|
|
38
|
+
[FilterKey.DEGREE_TYPE, [degree.id]]
|
|
39
|
+
]);
|
|
40
|
+
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
41
|
+
if (result) {
|
|
42
|
+
paths.push(this.getPathWithPageNumber(`${degree.path}/${discipline.path}/${country.path}`, pageNumber));
|
|
43
|
+
}
|
|
42
44
|
}
|
|
43
45
|
}
|
|
44
46
|
}
|
|
@@ -28,17 +28,19 @@ export class DisciplineCountryEducationalForm extends ProgrammesBaseIndexability
|
|
|
28
28
|
const countryFragments = CountryPresenter.getInstance().getFragments();
|
|
29
29
|
const educationalFormFragments = EducationalFormPresenter.getInstance().getFragments();
|
|
30
30
|
const paths = [];
|
|
31
|
-
for (const
|
|
32
|
-
for (const
|
|
33
|
-
for (const
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
31
|
+
for (const pageNumber of this.indexablePageNumbers) {
|
|
32
|
+
for (const discipline of disciplineFragments) {
|
|
33
|
+
for (const country of countryFragments) {
|
|
34
|
+
for (const form of educationalFormFragments) {
|
|
35
|
+
const filterKeyValues = new Map([
|
|
36
|
+
[FilterKey.DISCIPLINES, [discipline.id]],
|
|
37
|
+
[FilterKey.COUNTRY, [country.id]],
|
|
38
|
+
[FilterKey.EDUCATIONAL_FORM, [form.id]]
|
|
39
|
+
]);
|
|
40
|
+
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
41
|
+
if (result) {
|
|
42
|
+
paths.push(this.getPathWithPageNumber(`${discipline.path}/${form.path}/${country.path}`, pageNumber));
|
|
43
|
+
}
|
|
42
44
|
}
|
|
43
45
|
}
|
|
44
46
|
}
|
|
@@ -24,15 +24,17 @@ export class DisciplineDegree extends ProgrammesBaseIndexabilityPolicy {
|
|
|
24
24
|
const disciplineFragments = DisciplinePresenter.getInstance().getFragments();
|
|
25
25
|
const degreeFragments = DegreePresenter.getInstance().getFragments();
|
|
26
26
|
const paths = [];
|
|
27
|
-
for (const
|
|
28
|
-
for (const
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
27
|
+
for (const pageNumber of this.indexablePageNumbers) {
|
|
28
|
+
for (const discipline of disciplineFragments) {
|
|
29
|
+
for (const degree of degreeFragments) {
|
|
30
|
+
const filterKeyValues = new Map([
|
|
31
|
+
[FilterKey.DISCIPLINES, [discipline.id]],
|
|
32
|
+
[FilterKey.DEGREE_TYPE, [degree.id]]
|
|
33
|
+
]);
|
|
34
|
+
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
35
|
+
if (result) {
|
|
36
|
+
paths.push(this.getPathWithPageNumber(`${degree.path}/${discipline.path}`, pageNumber));
|
|
37
|
+
}
|
|
36
38
|
}
|
|
37
39
|
}
|
|
38
40
|
}
|
|
@@ -24,15 +24,17 @@ export class DisciplineDuration extends ProgrammesBaseIndexabilityPolicy {
|
|
|
24
24
|
const disciplineFragments = DisciplinePresenter.getInstance().getFragments();
|
|
25
25
|
const durationFragments = DurationPresenter.getInstance().getFragments();
|
|
26
26
|
const paths = [];
|
|
27
|
-
for (const
|
|
28
|
-
for (const
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
27
|
+
for (const pageNumber of this.indexablePageNumbers) {
|
|
28
|
+
for (const discipline of disciplineFragments) {
|
|
29
|
+
for (const duration of durationFragments) {
|
|
30
|
+
const filterKeyValues = new Map([
|
|
31
|
+
[FilterKey.DISCIPLINES, [discipline.id]],
|
|
32
|
+
[FilterKey.DURATION, [duration.id]]
|
|
33
|
+
]);
|
|
34
|
+
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
35
|
+
if (result) {
|
|
36
|
+
paths.push(this.getPathWithPageNumber(`${duration.path}/${discipline.path}`, pageNumber));
|
|
37
|
+
}
|
|
36
38
|
}
|
|
37
39
|
}
|
|
38
40
|
}
|
|
@@ -25,15 +25,17 @@ export class DisciplineEducationalForm extends ProgrammesBaseIndexabilityPolicy
|
|
|
25
25
|
const disciplineFragments = DisciplinePresenter.getInstance().getFragments();
|
|
26
26
|
const educationalFormFragments = EducationalFormPresenter.getInstance().getFragments();
|
|
27
27
|
const paths = [];
|
|
28
|
-
for (const
|
|
29
|
-
for (const
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
28
|
+
for (const pageNumber of this.indexablePageNumbers) {
|
|
29
|
+
for (const discipline of disciplineFragments) {
|
|
30
|
+
for (const form of educationalFormFragments) {
|
|
31
|
+
const filterKeyValues = new Map([
|
|
32
|
+
[FilterKey.DISCIPLINES, [discipline.id]],
|
|
33
|
+
[FilterKey.EDUCATIONAL_FORM, [form.id]]
|
|
34
|
+
]);
|
|
35
|
+
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
36
|
+
if (result) {
|
|
37
|
+
paths.push(this.getPathWithPageNumber(`${discipline.path}/${form.path}`, pageNumber));
|
|
38
|
+
}
|
|
37
39
|
}
|
|
38
40
|
}
|
|
39
41
|
}
|
|
@@ -24,15 +24,17 @@ export class DisciplineFormat extends ProgrammesBaseIndexabilityPolicy {
|
|
|
24
24
|
const disciplineFragments = DisciplinePresenter.getInstance().getFragments();
|
|
25
25
|
const formatFragments = FormatPresenter.getInstance().getFragments();
|
|
26
26
|
const paths = [];
|
|
27
|
-
for (const
|
|
28
|
-
for (const
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
27
|
+
for (const pageNumber of this.indexablePageNumbers) {
|
|
28
|
+
for (const discipline of disciplineFragments) {
|
|
29
|
+
for (const format of formatFragments) {
|
|
30
|
+
const filterKeyValues = new Map([
|
|
31
|
+
[FilterKey.DISCIPLINES, [discipline.id]],
|
|
32
|
+
[FilterKey.ATTENDANCE, [format.id]]
|
|
33
|
+
]);
|
|
34
|
+
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
35
|
+
if (result) {
|
|
36
|
+
paths.push(this.getPathWithPageNumber(`${format.path}/${discipline.path}`, pageNumber));
|
|
37
|
+
}
|
|
36
38
|
}
|
|
37
39
|
}
|
|
38
40
|
}
|
|
@@ -24,15 +24,17 @@ export class DisciplineTuitionFee extends ProgrammesBaseIndexabilityPolicy {
|
|
|
24
24
|
const disciplineFragments = DisciplinePresenter.getInstance().getFragments();
|
|
25
25
|
const tuitionFeeFragments = TuitionFeePresenter.getInstance().getFragments();
|
|
26
26
|
const paths = [];
|
|
27
|
-
for (const
|
|
28
|
-
for (const
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
27
|
+
for (const pageNumber of this.indexablePageNumbers) {
|
|
28
|
+
for (const discipline of disciplineFragments) {
|
|
29
|
+
for (const tuitionFee of tuitionFeeFragments) {
|
|
30
|
+
const filterKeyValues = new Map([
|
|
31
|
+
[FilterKey.DISCIPLINES, [discipline.id]],
|
|
32
|
+
[FilterKey.TUITION_FEE, [tuitionFee.id]]
|
|
33
|
+
]);
|
|
34
|
+
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
35
|
+
if (result) {
|
|
36
|
+
paths.push(this.getPathWithPageNumber(`${tuitionFee.path}/${discipline.path}`, pageNumber));
|
|
37
|
+
}
|
|
36
38
|
}
|
|
37
39
|
}
|
|
38
40
|
}
|
|
@@ -29,17 +29,19 @@ export class DisciplineTuitionFeeAttendance extends ProgrammesBaseIndexabilityPo
|
|
|
29
29
|
const attendanceFragments = AttendancePresenter.getInstance().getFragments();
|
|
30
30
|
const tuitionFeeFragments = TuitionFeePresenter.getInstance().getFragments();
|
|
31
31
|
const paths = [];
|
|
32
|
-
for (const
|
|
33
|
-
for (const
|
|
34
|
-
for (const
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
32
|
+
for (const pageNumber of this.indexablePageNumbers) {
|
|
33
|
+
for (const discipline of disciplineFragments) {
|
|
34
|
+
for (const attendance of attendanceFragments) {
|
|
35
|
+
for (const tuitionFee of tuitionFeeFragments) {
|
|
36
|
+
const filterKeyValues = new Map([
|
|
37
|
+
[FilterKey.DISCIPLINES, [discipline.id]],
|
|
38
|
+
[FilterKey.DELIVERY_METHOD, [attendance.id]],
|
|
39
|
+
[FilterKey.TUITION_FEE, [tuitionFee.id]]
|
|
40
|
+
]);
|
|
41
|
+
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
42
|
+
if (result) {
|
|
43
|
+
paths.push(this.getPathWithPageNumber(`${tuitionFee.path}/${attendance.path}/${discipline.path}`, pageNumber));
|
|
44
|
+
}
|
|
43
45
|
}
|
|
44
46
|
}
|
|
45
47
|
}
|
|
@@ -21,11 +21,13 @@ export class SpecialProgrammes extends ProgrammesBaseIndexabilityPolicy {
|
|
|
21
21
|
async generateUrls() {
|
|
22
22
|
const specialProgrammeFragments = SpecialProgrammesPresenter.getInstance().getFragments();
|
|
23
23
|
const paths = [];
|
|
24
|
-
for (const
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
for (const pageNumber of this.indexablePageNumbers) {
|
|
25
|
+
for (const specialProgramme of specialProgrammeFragments) {
|
|
26
|
+
const filterKeyValues = new Map([[FilterKey.SPECIAL_PROGRAMMES, [specialProgramme.id]]]);
|
|
27
|
+
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
28
|
+
if (result) {
|
|
29
|
+
paths.push(this.getPathWithPageNumber(specialProgramme.path, pageNumber));
|
|
30
|
+
}
|
|
29
31
|
}
|
|
30
32
|
}
|
|
31
33
|
return paths;
|
|
@@ -19,14 +19,12 @@ export class TuitionFee extends ProgrammesBaseIndexabilityPolicy {
|
|
|
19
19
|
async generateUrls() {
|
|
20
20
|
const tuitionFeeFragments = TuitionFeePresenter.getInstance().getFragments();
|
|
21
21
|
const paths = [];
|
|
22
|
-
for (const
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
if (result) {
|
|
26
|
-
paths.push(tuitionFee.path);
|
|
22
|
+
for (const pageNumber of this.indexablePageNumbers) {
|
|
23
|
+
for (const tuitionFee of tuitionFeeFragments) {
|
|
24
|
+
paths.push(this.getPathWithPageNumber(tuitionFee.path, pageNumber));
|
|
27
25
|
}
|
|
28
26
|
}
|
|
29
|
-
return paths;
|
|
27
|
+
return Promise.resolve(paths);
|
|
30
28
|
}
|
|
31
29
|
get filterCombination() {
|
|
32
30
|
return FilterCombinations.TUITION_FEE;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare class AffordableTuitionFeeRule extends
|
|
1
|
+
import { BaseProgrammeFilterKeyValueRule } from '../BaseProgrammeFilterKeyValueRule';
|
|
2
|
+
export declare class AffordableTuitionFeeRule extends BaseProgrammeFilterKeyValueRule {
|
|
3
3
|
constructor();
|
|
4
4
|
getName(): string;
|
|
5
5
|
getDescription(): string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { FilterKey } from '@studyportals/search-filters';
|
|
2
2
|
import { TuitionFeeFilterOptionValue } from '@studyportals/search-filters';
|
|
3
|
-
import {
|
|
4
|
-
export class AffordableTuitionFeeRule extends
|
|
3
|
+
import { BaseProgrammeFilterKeyValueRule } from '../BaseProgrammeFilterKeyValueRule';
|
|
4
|
+
export class AffordableTuitionFeeRule extends BaseProgrammeFilterKeyValueRule {
|
|
5
5
|
constructor() {
|
|
6
6
|
const filterKeyValues = new Map([
|
|
7
7
|
[FilterKey.TUITION_FEE, [TuitionFeeFilterOptionValue.ZERO_TO_TWO_THOUSAND_FIVE_HUNDRED]]
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { ISearchDependencies } from '../../common/ISearchDependencies';
|
|
2
2
|
import { FilterKeyValuesMap } from '../../common/FilterKeyValuesMap';
|
|
3
3
|
import { ISearchApiClient } from '../../sitemap-generator/ISearchApiClient';
|
|
4
|
-
import {
|
|
5
|
-
export declare class AtLeastSevenResultsRule implements
|
|
4
|
+
import { IProgrammeRule } from '../IProgrammeRule';
|
|
5
|
+
export declare class AtLeastSevenResultsRule implements IProgrammeRule {
|
|
6
6
|
private readonly minimumResultsCount;
|
|
7
|
+
private readonly maximumPageSize;
|
|
7
8
|
private readonly searchApiClient?;
|
|
8
9
|
constructor(searchApiClient?: ISearchApiClient);
|
|
9
10
|
forSearch(dependencies: ISearchDependencies): Promise<boolean>;
|
|
10
|
-
|
|
11
|
+
forSitemapGeneratorWithPageNumber(filterKeyValues: FilterKeyValuesMap, pageNumber: number): Promise<boolean>;
|
|
12
|
+
forSitemapGenerator(): Promise<boolean>;
|
|
11
13
|
getName(): string;
|
|
12
14
|
getDescription(): string;
|
|
13
15
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { DependencyMissingError } from '../../errors/DependencyMissingError';
|
|
2
2
|
export class AtLeastSevenResultsRule {
|
|
3
3
|
minimumResultsCount = 7;
|
|
4
|
+
maximumPageSize = 20;
|
|
4
5
|
searchApiClient;
|
|
5
6
|
constructor(searchApiClient) {
|
|
6
7
|
this.searchApiClient = searchApiClient;
|
|
@@ -10,12 +11,15 @@ export class AtLeastSevenResultsRule {
|
|
|
10
11
|
const resultCount = applicationState.getNumberOfResults();
|
|
11
12
|
return Promise.resolve(resultCount >= this.minimumResultsCount);
|
|
12
13
|
}
|
|
13
|
-
async
|
|
14
|
+
async forSitemapGeneratorWithPageNumber(filterKeyValues, pageNumber) {
|
|
14
15
|
if (!this.searchApiClient) {
|
|
15
16
|
throw new DependencyMissingError('SearchApiClient');
|
|
16
17
|
}
|
|
17
18
|
const count = await this.searchApiClient.getProgrammeCount(filterKeyValues);
|
|
18
|
-
return count >= this.minimumResultsCount;
|
|
19
|
+
return count >= (pageNumber - 1) * this.maximumPageSize + this.minimumResultsCount;
|
|
20
|
+
}
|
|
21
|
+
forSitemapGenerator() {
|
|
22
|
+
throw new Error('Method not implemented.');
|
|
19
23
|
}
|
|
20
24
|
getName() {
|
|
21
25
|
return 'AtLeastSevenResultsRule';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { IRule } from '../../common/IRule';
|
|
2
1
|
import { ISearchDependencies } from '../../common/ISearchDependencies';
|
|
3
2
|
import { FilterKeyValuesMap } from '../../common/FilterKeyValuesMap';
|
|
4
|
-
|
|
3
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
4
|
+
export declare class ErasmusOrJointSpecialProgrammesRule extends BaseProgrammeRule {
|
|
5
5
|
forSearch(dependencies: ISearchDependencies): Promise<boolean>;
|
|
6
6
|
forSitemapGenerator(filterKeyValues: FilterKeyValuesMap): Promise<boolean>;
|
|
7
7
|
getName(): string;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { FilterKey } from '@studyportals/search-filters';
|
|
2
2
|
import { SpecialProgrammesFilterOptionValue } from '@studyportals/search-filters';
|
|
3
|
-
|
|
3
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
4
|
+
export class ErasmusOrJointSpecialProgrammesRule extends BaseProgrammeRule {
|
|
4
5
|
forSearch(dependencies) {
|
|
5
6
|
const { seoInfoBase, filterState } = dependencies;
|
|
6
7
|
const selectedSpecialProgramme = seoInfoBase.getFilterOptionValueBy(FilterKey.SPECIAL_PROGRAMMES, filterState);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { IRule } from '../../common/IRule';
|
|
2
1
|
import { ISearchDependencies } from '../../common/ISearchDependencies';
|
|
3
2
|
import { FilterKeyValuesMap } from '../../common/FilterKeyValuesMap';
|
|
4
|
-
|
|
3
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
4
|
+
export declare class IndexableDegreeRule extends BaseProgrammeRule {
|
|
5
5
|
forSearch(dependencies: ISearchDependencies): Promise<boolean>;
|
|
6
6
|
forSitemapGenerator(filterKeyValues: FilterKeyValuesMap): Promise<boolean>;
|
|
7
7
|
getName(): string;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { FilterKey } from '@studyportals/search-filters';
|
|
2
2
|
import { DegreeTypeFilterOptionValue } from '@studyportals/search-filters';
|
|
3
|
-
|
|
3
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
4
|
+
export class IndexableDegreeRule extends BaseProgrammeRule {
|
|
4
5
|
forSearch(dependencies) {
|
|
5
6
|
const { seoInfoBase, filterState } = dependencies;
|
|
6
7
|
const selectedDegree = seoInfoBase.getFilterOptionValueBy(FilterKey.DEGREE_TYPE, filterState);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { IRule } from '../../common/IRule';
|
|
2
1
|
import { ISearchDependencies } from '../../common/ISearchDependencies';
|
|
3
2
|
import { FilterKeyValuesMap } from '../../common/FilterKeyValuesMap';
|
|
4
|
-
|
|
3
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
4
|
+
export declare class IndexableDurationRule extends BaseProgrammeRule {
|
|
5
5
|
forSearch(dependencies: ISearchDependencies): Promise<boolean>;
|
|
6
6
|
forSitemapGenerator(filterKeyValues: FilterKeyValuesMap): Promise<boolean>;
|
|
7
7
|
getName(): string;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { FilterKey } from '@studyportals/search-filters';
|
|
2
2
|
import { DurationFilterOptionValue } from '@studyportals/search-filters';
|
|
3
|
-
|
|
3
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
4
|
+
export class IndexableDurationRule extends BaseProgrammeRule {
|
|
4
5
|
forSearch(dependencies) {
|
|
5
6
|
const { seoInfoBase, filterState } = dependencies;
|
|
6
7
|
const selectedDuration = seoInfoBase.getFilterOptionValueBy(FilterKey.DURATION, filterState);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { IRule } from '../../common/IRule';
|
|
2
1
|
import { ISearchDependencies } from '../../common/ISearchDependencies';
|
|
3
2
|
import { FilterKeyValuesMap } from '../../common/FilterKeyValuesMap';
|
|
4
|
-
|
|
3
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
4
|
+
export declare class IndexableEducationalFormRule extends BaseProgrammeRule {
|
|
5
5
|
forSearch(dependencies: ISearchDependencies): Promise<boolean>;
|
|
6
6
|
forSitemapGenerator(filterKeyValues: FilterKeyValuesMap): Promise<boolean>;
|
|
7
7
|
getName(): string;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { FilterKey } from '@studyportals/search-filters';
|
|
2
2
|
import { EducationalFormFilterOptionValue } from '@studyportals/search-filters';
|
|
3
|
-
|
|
3
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
4
|
+
export class IndexableEducationalFormRule extends BaseProgrammeRule {
|
|
4
5
|
forSearch(dependencies) {
|
|
5
6
|
const { seoInfoBase, filterState } = dependencies;
|
|
6
7
|
const selectedEducationalForm = seoInfoBase.getFilterOptionValueBy(FilterKey.EDUCATIONAL_FORM, filterState);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { IRule } from '../../common/IRule';
|
|
2
1
|
import { IProgrammeSearchDependencies } from '../types/IProgrammeSearchDependencies';
|
|
3
|
-
|
|
2
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
3
|
+
export declare class IndexablePageNumberRule extends BaseProgrammeRule {
|
|
4
4
|
private readonly minimumPageNumber;
|
|
5
5
|
forSearch(dependencies: IProgrammeSearchDependencies): Promise<boolean>;
|
|
6
6
|
forSitemapGenerator(): Promise<boolean>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare class MbaDegreeRule extends
|
|
1
|
+
import { BaseProgrammeFilterKeyValueRule } from '../BaseProgrammeFilterKeyValueRule';
|
|
2
|
+
export declare class MbaDegreeRule extends BaseProgrammeFilterKeyValueRule {
|
|
3
3
|
constructor();
|
|
4
4
|
getName(): string;
|
|
5
5
|
getDescription(): string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { FilterKey } from '@studyportals/search-filters';
|
|
2
2
|
import { DegreeTypeFilterOptionValue } from '@studyportals/search-filters';
|
|
3
|
-
import {
|
|
4
|
-
export class MbaDegreeRule extends
|
|
3
|
+
import { BaseProgrammeFilterKeyValueRule } from '../BaseProgrammeFilterKeyValueRule';
|
|
4
|
+
export class MbaDegreeRule extends BaseProgrammeFilterKeyValueRule {
|
|
5
5
|
constructor() {
|
|
6
6
|
const filterKeyValues = new Map([[FilterKey.DEGREE_TYPE, [DegreeTypeFilterOptionValue.MBA]]]);
|
|
7
7
|
super(filterKeyValues);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { IRule } from '../../common/IRule';
|
|
2
1
|
import { ISearchDependencies } from '../../common/ISearchDependencies';
|
|
3
2
|
import { FilterKeyValuesMap } from '../../common/FilterKeyValuesMap';
|
|
4
|
-
|
|
3
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
4
|
+
export declare class MbaOrMscDegreeRule extends BaseProgrammeRule {
|
|
5
5
|
forSearch(dependencies: ISearchDependencies): Promise<boolean>;
|
|
6
6
|
forSitemapGenerator(filterKeyValues: FilterKeyValuesMap): Promise<boolean>;
|
|
7
7
|
getName(): string;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { FilterKey } from '@studyportals/search-filters';
|
|
2
2
|
import { DegreeTypeFilterOptionValue } from '@studyportals/search-filters';
|
|
3
|
-
|
|
3
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
4
|
+
export class MbaOrMscDegreeRule extends BaseProgrammeRule {
|
|
4
5
|
forSearch(dependencies) {
|
|
5
6
|
const { seoInfoBase, filterState } = dependencies;
|
|
6
7
|
const selectedDegree = seoInfoBase.getFilterOptionValueBy(FilterKey.DEGREE_TYPE, filterState);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { IRule } from '../../common/IRule';
|
|
2
1
|
import { IProgrammeSearchDependencies } from '../types/IProgrammeSearchDependencies';
|
|
3
2
|
import { PortalType } from '@studyportals/domain-client';
|
|
4
|
-
|
|
3
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
4
|
+
export declare class NotDistanceLearningPortalRule extends BaseProgrammeRule {
|
|
5
5
|
private readonly portalType;
|
|
6
6
|
constructor(portalType?: PortalType);
|
|
7
7
|
forSearch(dependencies: IProgrammeSearchDependencies): Promise<boolean>;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { PortalType } from '@studyportals/domain-client';
|
|
2
2
|
import { DependencyMissingError } from '../../errors/DependencyMissingError';
|
|
3
|
-
|
|
3
|
+
import { BaseProgrammeRule } from '../BaseProgrammeRule';
|
|
4
|
+
export class NotDistanceLearningPortalRule extends BaseProgrammeRule {
|
|
4
5
|
portalType;
|
|
5
6
|
constructor(portalType) {
|
|
7
|
+
super();
|
|
6
8
|
this.portalType = portalType;
|
|
7
9
|
}
|
|
8
10
|
forSearch(dependencies) {
|