@studyportals/fawkes 7.4.2-2 → 7.4.2-3
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 +176 -176
- package/dist/src/common/FilterKeyValuesMap.d.ts +1 -1
- package/dist/src/common/IPolicyMetaData.d.ts +6 -0
- package/dist/src/common/IPolicyMetaData.js +1 -0
- package/dist/src/common/IPresenter.d.ts +1 -1
- package/dist/src/common/ISeoFilterState.d.ts +1 -1
- package/dist/src/common/ISeoInfoBase.d.ts +1 -1
- package/dist/src/common/rules/OnlineAttendanceRule.js +1 -1
- package/dist/src/common/rules/OnlyFiltersSelectedRule.d.ts +1 -1
- package/dist/src/common/rules/SingleValueSelectedForFilterRule.d.ts +1 -1
- package/dist/src/enums/FilterCombinations.d.ts +22 -1
- package/dist/src/enums/FilterCombinations.js +22 -1
- package/dist/src/errors/InvalidFilterValueError.d.ts +1 -1
- package/dist/src/organisations/OrganisationsRuleBasedIndexabilityPolicy.d.ts +11 -0
- package/dist/src/organisations/OrganisationsRuleBasedIndexabilityPolicy.js +19 -0
- package/dist/src/organisations/policies/our-picks/Area.js +1 -1
- package/dist/src/organisations/policies/our-picks/AreaAttendance.js +1 -1
- package/dist/src/organisations/policies/our-picks/Attendance.js +1 -1
- package/dist/src/organisations/policies/our-picks/Continent.js +1 -1
- package/dist/src/organisations/policies/our-picks/Country.js +1 -1
- package/dist/src/organisations/policies/our-picks/CountryAttendance.js +1 -1
- package/dist/src/organisations/policies/ranked/RankedArea.js +1 -1
- package/dist/src/organisations/policies/ranked/RankedAreaDiscipline.js +1 -1
- package/dist/src/organisations/policies/ranked/RankedAttendance.js +1 -1
- package/dist/src/organisations/policies/ranked/RankedAttendanceDiscipline.js +1 -1
- package/dist/src/organisations/policies/ranked/RankedContinent.js +1 -1
- package/dist/src/organisations/policies/ranked/RankedContinentAttendance.js +1 -1
- package/dist/src/organisations/policies/ranked/RankedCountry.js +1 -1
- package/dist/src/organisations/policies/ranked/RankedCountryAttendance.js +1 -1
- package/dist/src/organisations/policies/ranked/RankedCountryDiscipline.js +1 -1
- package/dist/src/organisations/policies/ranked/RankedDiscipline.js +1 -1
- package/dist/src/organisations/rules/BaseSearchVolumeOrganisationsRule.d.ts +1 -1
- package/dist/src/organisations/rules/ContinentIsEuropeRule.js +1 -1
- package/dist/src/organisations/rules/OnlineAttendanceRule.d.ts +6 -0
- package/dist/src/organisations/rules/OnlineAttendanceRule.js +14 -0
- package/dist/src/organisations/rules/SearchVolumeAreasAttendanceRule.js +1 -1
- package/dist/src/organisations/rules/SearchVolumeAreasDisciplineRule.js +1 -1
- package/dist/src/organisations/rules/SearchVolumeCountriesAttendanceRule.js +1 -1
- package/dist/src/presenters/AreaPresenter.d.ts +1 -1
- package/dist/src/presenters/AreaPresenter.js +1 -1
- package/dist/src/presenters/AttendancePresenter.d.ts +1 -1
- package/dist/src/presenters/AttendancePresenter.js +5 -1
- package/dist/src/presenters/ContinentPresenter.d.ts +1 -1
- package/dist/src/presenters/ContinentPresenter.js +1 -1
- package/dist/src/presenters/CountryPresenter.d.ts +1 -1
- package/dist/src/presenters/CountryPresenter.js +1 -1
- package/dist/src/presenters/DegreePresenter.d.ts +1 -1
- package/dist/src/presenters/DegreePresenter.js +1 -2
- package/dist/src/presenters/DisciplinePresenter.d.ts +1 -1
- package/dist/src/presenters/DisciplinePresenter.js +1 -1
- package/dist/src/presenters/DurationPresenter.d.ts +1 -2
- package/dist/src/presenters/DurationPresenter.js +1 -2
- package/dist/src/presenters/EducationalFormPresenter.d.ts +1 -1
- package/dist/src/presenters/EducationalFormPresenter.js +1 -2
- package/dist/src/presenters/FormatPresenter.d.ts +1 -1
- package/dist/src/presenters/FormatPresenter.js +5 -3
- package/dist/src/presenters/SpecialProgrammesPresenter.d.ts +1 -1
- package/dist/src/presenters/SpecialProgrammesPresenter.js +5 -2
- package/dist/src/presenters/TuitionFeePresenter.d.ts +1 -1
- package/dist/src/presenters/TuitionFeePresenter.js +1 -2
- package/dist/src/programmes/IProgrammeSearchApplicationState.d.ts +4 -0
- package/dist/src/programmes/IProgrammeSearchApplicationState.js +1 -0
- package/dist/src/programmes/IProgrammeSearchDependencies.d.ts +7 -0
- package/dist/src/programmes/IProgrammeSearchDependencies.js +1 -0
- package/dist/src/programmes/IProgrammesSeoDependencies.d.ts +2 -0
- package/dist/src/programmes/IProgrammesSeoDependencies.js +1 -0
- package/dist/src/programmes/ProgrammesBaseIndexabilityPolicy.d.ts +1 -1
- package/dist/src/programmes/SearchIndexabilityManager.js +27 -3
- package/dist/src/programmes/policies/Area.d.ts +1 -1
- package/dist/src/programmes/policies/Area.js +1 -1
- package/dist/src/programmes/policies/Attendance.d.ts +1 -1
- package/dist/src/programmes/policies/Attendance.js +1 -1
- package/dist/src/programmes/policies/AttendanceArea.d.ts +16 -0
- package/dist/src/programmes/policies/AttendanceArea.js +48 -0
- package/dist/src/programmes/policies/AttendanceContinent.d.ts +16 -0
- package/dist/src/programmes/policies/AttendanceContinent.js +46 -0
- package/dist/src/programmes/policies/AttendanceDegree.d.ts +3 -4
- package/dist/src/programmes/policies/AttendanceDegree.js +8 -7
- package/dist/src/programmes/policies/AttendanceDuration.d.ts +16 -0
- package/dist/src/programmes/policies/AttendanceDuration.js +48 -0
- package/dist/src/programmes/policies/AttendanceFormat.d.ts +16 -0
- package/dist/src/programmes/policies/AttendanceFormat.js +48 -0
- package/dist/src/programmes/policies/AttendanceTuitionFee.d.ts +16 -0
- package/dist/src/programmes/policies/AttendanceTuitionFee.js +49 -0
- package/dist/src/programmes/policies/Continent.d.ts +1 -1
- package/dist/src/programmes/policies/Continent.js +1 -1
- package/dist/src/programmes/policies/ContinentDuration.d.ts +15 -0
- package/dist/src/programmes/policies/ContinentDuration.js +46 -0
- package/dist/src/programmes/policies/ContinentFormat.d.ts +15 -0
- package/dist/src/programmes/policies/ContinentFormat.js +46 -0
- package/dist/src/programmes/policies/ContinentSpecialProgrammes.d.ts +15 -0
- package/dist/src/programmes/policies/ContinentSpecialProgrammes.js +46 -0
- package/dist/src/programmes/policies/ContinentTuitionFee.d.ts +1 -1
- package/dist/src/programmes/policies/ContinentTuitionFee.js +1 -1
- package/dist/src/programmes/policies/Country.d.ts +1 -1
- package/dist/src/programmes/policies/Country.js +1 -1
- package/dist/src/programmes/policies/CountryAttendance.d.ts +1 -1
- package/dist/src/programmes/policies/CountryAttendance.js +1 -1
- package/dist/src/programmes/policies/CountryAttendanceDegree.d.ts +1 -1
- package/dist/src/programmes/policies/CountryAttendanceDegree.js +2 -2
- package/dist/src/programmes/policies/CountryDegree.d.ts +1 -1
- package/dist/src/programmes/policies/CountryDegree.js +1 -1
- package/dist/src/programmes/policies/CountryDuration.d.ts +3 -3
- package/dist/src/programmes/policies/CountryDuration.js +7 -5
- package/dist/src/programmes/policies/CountryDurationDegree.d.ts +1 -1
- package/dist/src/programmes/policies/CountryDurationDegree.js +2 -2
- package/dist/src/programmes/policies/CountryEducationalForm.d.ts +1 -1
- package/dist/src/programmes/policies/CountryEducationalForm.js +2 -2
- package/dist/src/programmes/policies/CountryFormat.d.ts +1 -1
- package/dist/src/programmes/policies/CountryFormat.js +1 -1
- package/dist/src/programmes/policies/CountrySpecialProgrammes.d.ts +15 -0
- package/dist/src/programmes/policies/CountrySpecialProgrammes.js +46 -0
- package/dist/src/programmes/policies/CountryTuitionFee.d.ts +1 -1
- package/dist/src/programmes/policies/CountryTuitionFee.js +1 -1
- package/dist/src/programmes/policies/Degree.d.ts +1 -1
- package/dist/src/programmes/policies/Degree.js +1 -1
- package/dist/src/programmes/policies/DegreeArea.d.ts +15 -0
- package/dist/src/programmes/policies/DegreeArea.js +46 -0
- package/dist/src/programmes/policies/DegreeAreaTuitionFee.d.ts +15 -0
- package/dist/src/programmes/policies/DegreeAreaTuitionFee.js +52 -0
- package/dist/src/programmes/policies/DegreeAttendanceDiscipline.d.ts +3 -2
- package/dist/src/programmes/policies/DegreeAttendanceDiscipline.js +14 -14
- package/dist/src/programmes/policies/DegreeAttendanceFormat.d.ts +15 -0
- package/dist/src/programmes/policies/DegreeAttendanceFormat.js +52 -0
- package/dist/src/programmes/policies/DegreeAttendanceSpecialProgrammes.d.ts +16 -0
- package/dist/src/programmes/policies/DegreeAttendanceSpecialProgrammes.js +56 -0
- package/dist/src/programmes/policies/DegreeAttendanceTuitionFee.d.ts +16 -0
- package/dist/src/programmes/policies/DegreeAttendanceTuitionFee.js +55 -0
- package/dist/src/programmes/policies/DegreeContinent.d.ts +16 -0
- package/dist/src/programmes/policies/DegreeContinent.js +46 -0
- package/dist/src/programmes/policies/DegreeContinentTuitionFee.d.ts +16 -0
- package/dist/src/programmes/policies/DegreeContinentTuitionFee.js +52 -0
- package/dist/src/programmes/policies/DegreeCountryAttendance.d.ts +1 -1
- package/dist/src/programmes/policies/DegreeCountryAttendance.js +2 -2
- package/dist/src/programmes/policies/DegreeCountryDiscipline.d.ts +1 -1
- package/dist/src/programmes/policies/DegreeCountryDiscipline.js +2 -2
- package/dist/src/programmes/policies/DegreeCountryTuitionFee.d.ts +1 -1
- package/dist/src/programmes/policies/DegreeCountryTuitionFee.js +3 -3
- package/dist/src/programmes/policies/DegreeDuration.d.ts +16 -0
- package/dist/src/programmes/policies/DegreeDuration.js +48 -0
- package/dist/src/programmes/policies/DegreeFormat.d.ts +16 -0
- package/dist/src/programmes/policies/DegreeFormat.js +49 -0
- package/dist/src/programmes/policies/DegreeFormatTuitionFee.d.ts +16 -0
- package/dist/src/programmes/policies/DegreeFormatTuitionFee.js +52 -0
- package/dist/src/programmes/policies/DegreeSpecialProgrammes.d.ts +15 -0
- package/dist/src/programmes/policies/DegreeSpecialProgrammes.js +48 -0
- package/dist/src/programmes/policies/DegreeTuitionFee.d.ts +15 -0
- package/dist/src/programmes/policies/DegreeTuitionFee.js +47 -0
- package/dist/src/programmes/policies/Discipline.d.ts +1 -1
- package/dist/src/programmes/policies/Discipline.js +1 -1
- package/dist/src/programmes/policies/DisciplineArea.d.ts +1 -1
- package/dist/src/programmes/policies/DisciplineArea.js +1 -1
- package/dist/src/programmes/policies/DisciplineAttendance.d.ts +1 -1
- package/dist/src/programmes/policies/DisciplineAttendance.js +1 -1
- package/dist/src/programmes/policies/DisciplineContinent.d.ts +1 -1
- package/dist/src/programmes/policies/DisciplineContinent.js +1 -1
- package/dist/src/programmes/policies/DisciplineContinentAttendance.d.ts +16 -0
- package/dist/src/programmes/policies/DisciplineContinentAttendance.js +54 -0
- package/dist/src/programmes/policies/DisciplineCountry.d.ts +1 -1
- package/dist/src/programmes/policies/DisciplineCountry.js +1 -1
- package/dist/src/programmes/policies/DisciplineCountryAttendance.d.ts +16 -0
- package/dist/src/programmes/policies/DisciplineCountryAttendance.js +54 -0
- package/dist/src/programmes/policies/DisciplineCountryDegree.d.ts +16 -0
- package/dist/src/programmes/policies/DisciplineCountryDegree.js +53 -0
- package/dist/src/programmes/policies/DisciplineCountryEducationalForm.d.ts +1 -1
- package/dist/src/programmes/policies/DisciplineCountryEducationalForm.js +2 -2
- package/dist/src/programmes/policies/DisciplineCountryFormat.d.ts +15 -0
- package/dist/src/programmes/policies/DisciplineCountryFormat.js +52 -0
- package/dist/src/programmes/policies/DisciplineDegree.d.ts +1 -1
- package/dist/src/programmes/policies/DisciplineDegree.js +1 -1
- package/dist/src/programmes/policies/DisciplineDuration.d.ts +1 -1
- package/dist/src/programmes/policies/DisciplineDuration.js +1 -1
- package/dist/src/programmes/policies/DisciplineEducationalForm.d.ts +1 -1
- package/dist/src/programmes/policies/DisciplineEducationalForm.js +2 -2
- package/dist/src/programmes/policies/DisciplineFormat.d.ts +1 -1
- package/dist/src/programmes/policies/DisciplineFormat.js +1 -1
- package/dist/src/programmes/policies/DisciplineSpecialProgrammes.d.ts +15 -0
- package/dist/src/programmes/policies/DisciplineSpecialProgrammes.js +46 -0
- package/dist/src/programmes/policies/DisciplineTuitionFee.d.ts +1 -1
- package/dist/src/programmes/policies/DisciplineTuitionFee.js +1 -1
- package/dist/src/programmes/policies/DisciplineTuitionFeeAttendance.d.ts +1 -1
- package/dist/src/programmes/policies/DisciplineTuitionFeeAttendance.js +1 -1
- package/dist/src/programmes/policies/Duration.d.ts +15 -0
- package/dist/src/programmes/policies/Duration.js +35 -0
- package/dist/src/programmes/policies/Format.d.ts +15 -0
- package/dist/src/programmes/policies/Format.js +35 -0
- package/dist/src/programmes/policies/SpecialProgrammes.d.ts +2 -3
- package/dist/src/programmes/policies/SpecialProgrammes.js +2 -4
- package/dist/src/programmes/policies/TuitionFee.d.ts +1 -1
- package/dist/src/programmes/policies/TuitionFee.js +1 -1
- package/dist/src/programmes/policies/index.d.ts +26 -1
- package/dist/src/programmes/policies/index.js +26 -1
- package/dist/src/programmes/rules/AffordableTuitionFeeRule.js +2 -2
- package/dist/src/programmes/rules/DegreeAttendanceDisciplineRule.js +2 -2
- package/dist/src/programmes/rules/DegreeAttendanceDisciplineSpecificRule.js +2 -2
- package/dist/src/programmes/rules/DegreeAttendanceSpecificRule.d.ts +10 -0
- package/dist/src/programmes/rules/DegreeAttendanceSpecificRule.js +42 -0
- package/dist/src/programmes/rules/DegreeCountryAttendanceSpecificRule.js +2 -3
- package/dist/src/programmes/rules/DegreeCountryDisciplineSpecificRule.js +2 -2
- package/dist/src/programmes/rules/DegreeCountrySpecificRule.d.ts +10 -0
- package/dist/src/programmes/rules/DegreeCountrySpecificRule.js +43 -0
- package/dist/src/programmes/rules/DegreeCountryTuitionFeeRule.d.ts +11 -0
- package/dist/src/programmes/rules/DegreeCountryTuitionFeeRule.js +40 -0
- package/dist/src/programmes/rules/DegreeCountryTuitionFeeSpecificRule.js +3 -3
- package/dist/src/programmes/rules/DegreeDisciplineRule.js +2 -2
- package/dist/src/programmes/rules/ErasmusOrJointSpecialProgrammesRule.js +2 -2
- package/dist/src/programmes/rules/IndexableDegreeRule.js +2 -2
- package/dist/src/programmes/rules/IndexableDurationRule.js +1 -1
- package/dist/src/programmes/rules/IndexableEducationalFormRule.js +2 -2
- package/dist/src/programmes/rules/MBACountryAttendanceRule.d.ts +11 -0
- package/dist/src/programmes/rules/MBACountryAttendanceRule.js +40 -0
- package/dist/src/programmes/rules/MasterOfArtsDisciplineRule.d.ts +10 -0
- package/dist/src/programmes/rules/MasterOfArtsDisciplineRule.js +41 -0
- package/dist/src/programmes/rules/MasterOfEducationCountryDisciplineRule.d.ts +11 -0
- package/dist/src/programmes/rules/MasterOfEducationCountryDisciplineRule.js +69 -0
- package/dist/src/programmes/rules/MasterOfLawsCountryAttendanceRule.d.ts +12 -0
- package/dist/src/programmes/rules/MasterOfLawsCountryAttendanceRule.js +43 -0
- package/dist/src/programmes/rules/MasterOfLawsCountryTuitionFeeRule.d.ts +12 -0
- package/dist/src/programmes/rules/MasterOfLawsCountryTuitionFeeRule.js +46 -0
- package/dist/src/programmes/rules/MasterOfPhilosophyCountryAttendanceRule.d.ts +12 -0
- package/dist/src/programmes/rules/MasterOfPhilosophyCountryAttendanceRule.js +43 -0
- package/dist/src/programmes/rules/MasterOfScienceDisciplineRule.d.ts +10 -0
- package/dist/src/programmes/rules/MasterOfScienceDisciplineRule.js +41 -0
- package/dist/src/programmes/rules/MbaDegreeRule.js +2 -2
- package/dist/src/programmes/rules/MbaOrMscDegreeRule.js +2 -2
- package/dist/src/programmes/rules/OneYearDurationRule.js +2 -2
- package/dist/src/programmes/rules/OneYearOnlyRule.d.ts +11 -0
- package/dist/src/programmes/rules/OneYearOnlyRule.js +34 -0
- package/dist/src/programmes/rules/OnlineAttendanceRule.d.ts +6 -0
- package/dist/src/programmes/rules/OnlineAttendanceRule.js +15 -0
- package/dist/src/programmes/rules/PartTimeFormatRule.js +2 -2
- package/dist/src/programmes/types/IProgrammeSitemapUrlGenerator.d.ts +1 -1
- package/dist/src/scholarships/policies/Area.js +1 -1
- package/dist/src/scholarships/policies/Country.js +1 -1
- package/dist/src/scholarships/policies/Discipline.js +1 -1
- package/dist/src/scholarships/policies/DisciplineCountry.js +1 -1
- package/dist/src/scholarships/policies/UniversityCountry.js +2 -2
- package/dist/src/scholarships/rules/ExceptAustaliaAreasRule.js +1 -1
- package/dist/src/scholarships/rules/SearchVolumeAreasRule.js +1 -1
- package/dist/src/scholarships/rules/SearchVolumeCountriesDisciplinesRule.js +1 -1
- package/dist/src/scholarships/rules/SearchVolumeCountriesRule.js +1 -1
- package/dist/src/scholarships/rules/SearchVolumeDisciplinesRule.js +1 -1
- package/dist/src/sitemap-generator/BaseSitemapUrlGeneratorManager.d.ts +1 -1
- package/dist/src/sitemap-generator/IPageNumberProvider.d.ts +3 -0
- package/dist/src/sitemap-generator/IPageNumberProvider.js +1 -0
- package/dist/src/sitemap-generator/ISitemapUrlGeneratorManager.d.ts +1 -1
- package/dist/src/sitemap-generator/OrganisationsSitemapUrlGeneratorManager.d.ts +1 -1
- package/dist/src/sitemap-generator/OrganisationsSitemapUrlGeneratorManager.js +1 -1
- package/dist/src/sitemap-generator/ProgrammesSitemapUrlGeneratorManager.d.ts +1 -1
- package/dist/src/sitemap-generator/ProgrammesSitemapUrlGeneratorManager.js +28 -4
- package/package.json +105 -104
- package/dist/src/enums/AttendanceFilterOptionValue.d.ts +0 -5
- package/dist/src/enums/AttendanceFilterOptionValue.js +0 -6
- package/dist/src/enums/DegreeTypeFilterOptionValue.d.ts +0 -29
- package/dist/src/enums/DegreeTypeFilterOptionValue.js +0 -30
- package/dist/src/enums/DurationFilterOptionValue.d.ts +0 -16
- package/dist/src/enums/DurationFilterOptionValue.js +0 -17
- package/dist/src/enums/EducationalFormFilterOptionValue.d.ts +0 -8
- package/dist/src/enums/EducationalFormFilterOptionValue.js +0 -9
- package/dist/src/enums/FilterKey.d.ts +0 -21
- package/dist/src/enums/FilterKey.js +0 -22
- package/dist/src/enums/FormatFilterOptionValue.d.ts +0 -4
- package/dist/src/enums/FormatFilterOptionValue.js +0 -5
- package/dist/src/enums/SpecialProgrammesFilterOptionValue.d.ts +0 -5
- package/dist/src/enums/SpecialProgrammesFilterOptionValue.js +0 -6
- package/dist/src/enums/TuitionFeeFilterOptionValue.d.ts +0 -3
- package/dist/src/enums/TuitionFeeFilterOptionValue.js +0 -4
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
6
|
+
import { ContinentPresenter } from '../../presenters/ContinentPresenter';
|
|
7
|
+
import { AttendancePresenter } from '../../presenters/AttendancePresenter';
|
|
8
|
+
import { OnlineAttendanceRule } from '../../common/rules/OnlineAttendanceRule';
|
|
9
|
+
export class AttendanceContinent extends ProgrammesBaseIndexabilityPolicy {
|
|
10
|
+
name = 'Attendance Continent Policy';
|
|
11
|
+
description = 'Determines indexing rules for pages filtered by tuition fee and attendance.';
|
|
12
|
+
filterKeys = [FilterKey.CONTINENT, FilterKey.DELIVERY_METHOD];
|
|
13
|
+
rules = [
|
|
14
|
+
new SingleValueSelectedForFilterRule(FilterKey.DELIVERY_METHOD),
|
|
15
|
+
new SingleValueSelectedForFilterRule(FilterKey.CONTINENT),
|
|
16
|
+
new OnlyFiltersSelectedRule([FilterKey.DELIVERY_METHOD, FilterKey.CONTINENT]),
|
|
17
|
+
new OnlineAttendanceRule()
|
|
18
|
+
];
|
|
19
|
+
constructor(dependencies) {
|
|
20
|
+
super(dependencies);
|
|
21
|
+
this.initateBaseRules();
|
|
22
|
+
}
|
|
23
|
+
async generateUrls() {
|
|
24
|
+
const attendanceFragments = AttendancePresenter.getInstance().getFragments();
|
|
25
|
+
const continentFragments = ContinentPresenter.getInstance().getFragments();
|
|
26
|
+
const paths = [];
|
|
27
|
+
for (const pageNumber of this.indexablePageNumbers) {
|
|
28
|
+
for (const attendance of attendanceFragments) {
|
|
29
|
+
for (const continent of continentFragments) {
|
|
30
|
+
const filterKeyValues = new Map([
|
|
31
|
+
[FilterKey.DELIVERY_METHOD, [attendance.id]],
|
|
32
|
+
[FilterKey.CONTINENT, [continent.id]]
|
|
33
|
+
]);
|
|
34
|
+
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
35
|
+
if (result) {
|
|
36
|
+
paths.push(this.getPathWithPageNumber(`${attendance.path}/${continent.path}`, pageNumber));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return paths;
|
|
42
|
+
}
|
|
43
|
+
get filterCombination() {
|
|
44
|
+
return FilterCombinations.ATTENDANCE_CONTINENT;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import { FilterKey } from
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
2
|
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
3
|
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
4
|
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
-
import { OnlineAttendanceRule } from '../../common/rules/OnlineAttendanceRule';
|
|
6
|
-
import { IndexableDegreeRule } from '../rules/IndexableDegreeRule';
|
|
7
5
|
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
8
6
|
import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
|
|
7
|
+
import { IndexableDegreeRule } from '../rules/IndexableDegreeRule';
|
|
9
8
|
export declare class AttendanceDegree extends ProgrammesBaseIndexabilityPolicy {
|
|
10
9
|
readonly name: string;
|
|
11
10
|
readonly description: string;
|
|
12
11
|
readonly filterKeys: FilterKey[];
|
|
13
|
-
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule |
|
|
12
|
+
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | IndexableDegreeRule)[];
|
|
14
13
|
constructor(dependencies: IProgrammeSeoDependencies);
|
|
15
14
|
protected generateUrls(): Promise<string[]>;
|
|
16
15
|
get filterCombination(): FilterCombinations;
|
|
@@ -1,22 +1,20 @@
|
|
|
1
|
-
import { FilterKey } from
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
2
|
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
3
|
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
4
|
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
-
import { OnlineAttendanceRule } from '../../common/rules/OnlineAttendanceRule';
|
|
6
|
-
import { IndexableDegreeRule } from '../rules/IndexableDegreeRule';
|
|
7
5
|
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
8
6
|
import { AttendancePresenter } from '../../presenters/AttendancePresenter';
|
|
9
7
|
import { DegreePresenter } from '../../presenters/DegreePresenter';
|
|
8
|
+
import { IndexableDegreeRule } from '../rules/IndexableDegreeRule';
|
|
10
9
|
export class AttendanceDegree extends ProgrammesBaseIndexabilityPolicy {
|
|
11
10
|
name = 'Attendance Degree Type Policy';
|
|
12
|
-
description = 'Determines indexing rules for pages filtered by both study format (online, on-campus, etc.), and degree type prioritizing degrees and formats with demonstrated search demand.';
|
|
11
|
+
description = 'Determines indexing rules for pages filtered by both study format (online, blended, on-campus, etc.), and degree type prioritizing degrees and formats with demonstrated search demand.';
|
|
13
12
|
filterKeys = [FilterKey.DELIVERY_METHOD, FilterKey.DEGREE_TYPE];
|
|
14
13
|
rules = [
|
|
15
14
|
new SingleValueSelectedForFilterRule(FilterKey.DELIVERY_METHOD),
|
|
16
15
|
new SingleValueSelectedForFilterRule(FilterKey.DEGREE_TYPE),
|
|
17
16
|
new OnlyFiltersSelectedRule([FilterKey.DELIVERY_METHOD, FilterKey.DEGREE_TYPE]),
|
|
18
|
-
new IndexableDegreeRule()
|
|
19
|
-
new OnlineAttendanceRule()
|
|
17
|
+
new IndexableDegreeRule()
|
|
20
18
|
];
|
|
21
19
|
constructor(dependencies) {
|
|
22
20
|
super(dependencies);
|
|
@@ -25,9 +23,12 @@ export class AttendanceDegree extends ProgrammesBaseIndexabilityPolicy {
|
|
|
25
23
|
async generateUrls() {
|
|
26
24
|
const attendanceFragments = AttendancePresenter.getInstance().getFragments();
|
|
27
25
|
const degreeFragments = DegreePresenter.getInstance().getFragments();
|
|
26
|
+
// Allow online and blended learning formats
|
|
27
|
+
const allowedAttendanceIds = ["online", "blended"];
|
|
28
|
+
const allowedAttendances = attendanceFragments.filter(attendance => allowedAttendanceIds.includes(attendance.id));
|
|
28
29
|
const paths = [];
|
|
29
30
|
for (const pageNumber of this.indexablePageNumbers) {
|
|
30
|
-
for (const attendance of
|
|
31
|
+
for (const attendance of allowedAttendances) {
|
|
31
32
|
for (const degree of degreeFragments) {
|
|
32
33
|
const filterKeyValues = new Map([
|
|
33
34
|
[FilterKey.DELIVERY_METHOD, [attendance.id]],
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
+
import { OnlineAttendanceRule } from '../../common/rules/OnlineAttendanceRule';
|
|
6
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
7
|
+
import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
|
|
8
|
+
export declare class AttendanceDuration extends ProgrammesBaseIndexabilityPolicy {
|
|
9
|
+
readonly name: string;
|
|
10
|
+
readonly description: string;
|
|
11
|
+
readonly filterKeys: FilterKey[];
|
|
12
|
+
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | OnlineAttendanceRule)[];
|
|
13
|
+
constructor(dependencies: IProgrammeSeoDependencies);
|
|
14
|
+
protected generateUrls(): Promise<string[]>;
|
|
15
|
+
get filterCombination(): FilterCombinations;
|
|
16
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
+
import { OnlineAttendanceRule } from '../../common/rules/OnlineAttendanceRule';
|
|
6
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
7
|
+
import { AttendancePresenter } from '../../presenters/AttendancePresenter';
|
|
8
|
+
import { DurationPresenter } from '../../presenters/DurationPresenter';
|
|
9
|
+
export class AttendanceDuration extends ProgrammesBaseIndexabilityPolicy {
|
|
10
|
+
name = 'Attendance Duration Type Policy';
|
|
11
|
+
description = 'Determines indexing rules for pages filtered by both study format (online, on-campus, etc.), and duration prioritizing durations and formats with demonstrated search demand.';
|
|
12
|
+
filterKeys = [FilterKey.DELIVERY_METHOD, FilterKey.DURATION];
|
|
13
|
+
rules = [
|
|
14
|
+
new SingleValueSelectedForFilterRule(FilterKey.DELIVERY_METHOD),
|
|
15
|
+
new SingleValueSelectedForFilterRule(FilterKey.DURATION),
|
|
16
|
+
new OnlyFiltersSelectedRule([FilterKey.DELIVERY_METHOD, FilterKey.DURATION]),
|
|
17
|
+
new OnlineAttendanceRule()
|
|
18
|
+
];
|
|
19
|
+
constructor(dependencies) {
|
|
20
|
+
super(dependencies);
|
|
21
|
+
this.initateBaseRules();
|
|
22
|
+
}
|
|
23
|
+
async generateUrls() {
|
|
24
|
+
const attendanceFragments = AttendancePresenter.getInstance().getFragments();
|
|
25
|
+
const durationFragments = DurationPresenter.getInstance().getFragments();
|
|
26
|
+
const paths = [];
|
|
27
|
+
const allowedDurationIds = ["[360,360]"];
|
|
28
|
+
const allowedDurations = durationFragments.filter(duration => allowedDurationIds.includes(duration.id));
|
|
29
|
+
for (const pageNumber of this.indexablePageNumbers) {
|
|
30
|
+
for (const attendance of attendanceFragments) {
|
|
31
|
+
for (const duration of allowedDurations) {
|
|
32
|
+
const filterKeyValues = new Map([
|
|
33
|
+
[FilterKey.DELIVERY_METHOD, [attendance.id]],
|
|
34
|
+
[FilterKey.DURATION, [duration.id]]
|
|
35
|
+
]);
|
|
36
|
+
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
37
|
+
if (result) {
|
|
38
|
+
paths.push(this.getPathWithPageNumber(`${attendance.path}/${duration.path}`, pageNumber));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return paths;
|
|
44
|
+
}
|
|
45
|
+
get filterCombination() {
|
|
46
|
+
return FilterCombinations.ATTENDANCE_DURATION;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
+
import { OnlineAttendanceRule } from '../../common/rules/OnlineAttendanceRule';
|
|
6
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
7
|
+
import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
|
|
8
|
+
export declare class AttendanceFormat extends ProgrammesBaseIndexabilityPolicy {
|
|
9
|
+
readonly name: string;
|
|
10
|
+
readonly description: string;
|
|
11
|
+
readonly filterKeys: FilterKey[];
|
|
12
|
+
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | OnlineAttendanceRule)[];
|
|
13
|
+
constructor(dependencies: IProgrammeSeoDependencies);
|
|
14
|
+
protected generateUrls(): Promise<string[]>;
|
|
15
|
+
get filterCombination(): FilterCombinations;
|
|
16
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
+
import { OnlineAttendanceRule } from '../../common/rules/OnlineAttendanceRule';
|
|
6
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
7
|
+
import { AttendancePresenter } from '../../presenters/AttendancePresenter';
|
|
8
|
+
import { FormatPresenter } from '../../presenters/FormatPresenter';
|
|
9
|
+
export class AttendanceFormat extends ProgrammesBaseIndexabilityPolicy {
|
|
10
|
+
name = 'Attendance Format Type Policy';
|
|
11
|
+
description = 'Determines indexing rules for pages filtered by both study format (online, on-campus, etc.), and format prioritizing formats and formats with demonstrated search demand.';
|
|
12
|
+
filterKeys = [FilterKey.DELIVERY_METHOD, FilterKey.DURATION];
|
|
13
|
+
rules = [
|
|
14
|
+
new SingleValueSelectedForFilterRule(FilterKey.DELIVERY_METHOD),
|
|
15
|
+
new SingleValueSelectedForFilterRule(FilterKey.ATTENDANCE),
|
|
16
|
+
new OnlyFiltersSelectedRule([FilterKey.DELIVERY_METHOD, FilterKey.ATTENDANCE]),
|
|
17
|
+
new OnlineAttendanceRule()
|
|
18
|
+
];
|
|
19
|
+
constructor(dependencies) {
|
|
20
|
+
super(dependencies);
|
|
21
|
+
this.initateBaseRules();
|
|
22
|
+
}
|
|
23
|
+
async generateUrls() {
|
|
24
|
+
const attendanceFragments = AttendancePresenter.getInstance().getFragments();
|
|
25
|
+
const formatFragments = FormatPresenter.getInstance().getFragments();
|
|
26
|
+
const allowedFormatIds = ["parttime", "fulltime"];
|
|
27
|
+
const allowedFormats = formatFragments.filter(format => allowedFormatIds.includes(format.id));
|
|
28
|
+
const paths = [];
|
|
29
|
+
for (const pageNumber of this.indexablePageNumbers) {
|
|
30
|
+
for (const attendance of attendanceFragments) {
|
|
31
|
+
for (const format of allowedFormats) {
|
|
32
|
+
const filterKeyValues = new Map([
|
|
33
|
+
[FilterKey.DELIVERY_METHOD, [attendance.id]],
|
|
34
|
+
[FilterKey.ATTENDANCE, [format.id]]
|
|
35
|
+
]);
|
|
36
|
+
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
37
|
+
if (result) {
|
|
38
|
+
paths.push(this.getPathWithPageNumber(`${attendance.path}/${format.path}`, pageNumber));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return paths;
|
|
44
|
+
}
|
|
45
|
+
get filterCombination() {
|
|
46
|
+
return FilterCombinations.ATTENDANCE_FORMAT;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
6
|
+
import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
|
|
7
|
+
import { OnlineAttendanceRule } from '../../common/rules/OnlineAttendanceRule';
|
|
8
|
+
export declare class AttendanceTuitionFee extends ProgrammesBaseIndexabilityPolicy {
|
|
9
|
+
readonly name: string;
|
|
10
|
+
readonly description: string;
|
|
11
|
+
readonly filterKeys: FilterKey[];
|
|
12
|
+
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | OnlineAttendanceRule)[];
|
|
13
|
+
constructor(dependencies: IProgrammeSeoDependencies);
|
|
14
|
+
protected generateUrls(): Promise<string[]>;
|
|
15
|
+
get filterCombination(): FilterCombinations;
|
|
16
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { TuitionFeeFilterOptionValue } from '@studyportals/search-filters';
|
|
3
|
+
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
4
|
+
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
5
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
6
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
7
|
+
import { TuitionFeePresenter } from '../../presenters/TuitionFeePresenter';
|
|
8
|
+
import { AttendancePresenter } from '../../presenters/AttendancePresenter';
|
|
9
|
+
import { OnlineAttendanceRule } from '../../common/rules/OnlineAttendanceRule';
|
|
10
|
+
export class AttendanceTuitionFee extends ProgrammesBaseIndexabilityPolicy {
|
|
11
|
+
name = 'Tuition Fee Attendance Policy';
|
|
12
|
+
description = 'Determines indexing rules for pages filtered by tuition fee and attendance.';
|
|
13
|
+
filterKeys = [FilterKey.TUITION_FEE, FilterKey.DELIVERY_METHOD];
|
|
14
|
+
rules = [
|
|
15
|
+
new SingleValueSelectedForFilterRule(FilterKey.DELIVERY_METHOD),
|
|
16
|
+
new SingleValueSelectedForFilterRule(FilterKey.TUITION_FEE),
|
|
17
|
+
new OnlyFiltersSelectedRule([FilterKey.DELIVERY_METHOD, FilterKey.TUITION_FEE]),
|
|
18
|
+
new OnlineAttendanceRule()
|
|
19
|
+
];
|
|
20
|
+
constructor(dependencies) {
|
|
21
|
+
super(dependencies);
|
|
22
|
+
this.initateBaseRules();
|
|
23
|
+
}
|
|
24
|
+
async generateUrls() {
|
|
25
|
+
const attendanceFragments = AttendancePresenter.getInstance().getFragments();
|
|
26
|
+
const tuitionFeeFragments = TuitionFeePresenter.getInstance().getFragments();
|
|
27
|
+
const paths = [];
|
|
28
|
+
const affordableTuition = tuitionFeeFragments.find(t => t.id === TuitionFeeFilterOptionValue.ZERO_TO_TWO_THOUSAND_FIVE_HUNDRED);
|
|
29
|
+
if (!affordableTuition) {
|
|
30
|
+
return paths;
|
|
31
|
+
}
|
|
32
|
+
for (const pageNumber of this.indexablePageNumbers) {
|
|
33
|
+
for (const attendance of attendanceFragments) {
|
|
34
|
+
const filterKeyValues = new Map([
|
|
35
|
+
[FilterKey.DELIVERY_METHOD, [attendance.id]],
|
|
36
|
+
[FilterKey.TUITION_FEE, [affordableTuition.id]]
|
|
37
|
+
]);
|
|
38
|
+
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
39
|
+
if (result) {
|
|
40
|
+
paths.push(this.getPathWithPageNumber(`${attendance.path}/${affordableTuition.path}`, pageNumber));
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return paths;
|
|
45
|
+
}
|
|
46
|
+
get filterCombination() {
|
|
47
|
+
return FilterCombinations.ATTENDANCE_TUITION_FEE;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FilterKey } from
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
2
|
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
3
|
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
4
|
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FilterKey } from
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
2
|
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
3
|
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
4
|
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
6
|
+
import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
|
|
7
|
+
export declare class ContinentDuration extends ProgrammesBaseIndexabilityPolicy {
|
|
8
|
+
readonly name: string;
|
|
9
|
+
readonly description: string;
|
|
10
|
+
readonly filterKeys: FilterKey[];
|
|
11
|
+
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule)[];
|
|
12
|
+
constructor(dependencies: IProgrammeSeoDependencies);
|
|
13
|
+
protected generateUrls(): Promise<string[]>;
|
|
14
|
+
get filterCombination(): FilterCombinations;
|
|
15
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
6
|
+
import { ContinentPresenter } from '../../presenters/ContinentPresenter';
|
|
7
|
+
import { DurationPresenter } from '../../presenters/DurationPresenter';
|
|
8
|
+
export class ContinentDuration extends ProgrammesBaseIndexabilityPolicy {
|
|
9
|
+
name = 'Continent Duration Policy';
|
|
10
|
+
description = 'Determines indexing rules for pages filtered by continent and duration (1 year).';
|
|
11
|
+
filterKeys = [FilterKey.CONTINENT, FilterKey.DURATION];
|
|
12
|
+
rules = [
|
|
13
|
+
new SingleValueSelectedForFilterRule(FilterKey.DURATION),
|
|
14
|
+
new SingleValueSelectedForFilterRule(FilterKey.CONTINENT),
|
|
15
|
+
new OnlyFiltersSelectedRule([FilterKey.DURATION, FilterKey.CONTINENT]),
|
|
16
|
+
];
|
|
17
|
+
constructor(dependencies) {
|
|
18
|
+
super(dependencies);
|
|
19
|
+
this.initateBaseRules();
|
|
20
|
+
}
|
|
21
|
+
async generateUrls() {
|
|
22
|
+
const durationFragments = DurationPresenter.getInstance().getFragments();
|
|
23
|
+
const continentFragments = ContinentPresenter.getInstance().getFragments();
|
|
24
|
+
const paths = [];
|
|
25
|
+
const allowedDurationIds = ["[360,360]"];
|
|
26
|
+
const allowedDurations = durationFragments.filter(duration => allowedDurationIds.includes(duration.id));
|
|
27
|
+
for (const pageNumber of this.indexablePageNumbers) {
|
|
28
|
+
for (const duration of allowedDurations) {
|
|
29
|
+
for (const continent of continentFragments) {
|
|
30
|
+
const filterKeyValues = new Map([
|
|
31
|
+
[FilterKey.DURATION, [duration.id]],
|
|
32
|
+
[FilterKey.CONTINENT, [continent.id]]
|
|
33
|
+
]);
|
|
34
|
+
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
35
|
+
if (result) {
|
|
36
|
+
paths.push(this.getPathWithPageNumber(`${continent.path}/${duration.path}`, pageNumber));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return paths;
|
|
42
|
+
}
|
|
43
|
+
get filterCombination() {
|
|
44
|
+
return FilterCombinations.CONTINENT_FORMAT;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
6
|
+
import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
|
|
7
|
+
export declare class ContinentFormat extends ProgrammesBaseIndexabilityPolicy {
|
|
8
|
+
readonly name: string;
|
|
9
|
+
readonly description: string;
|
|
10
|
+
readonly filterKeys: FilterKey[];
|
|
11
|
+
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule)[];
|
|
12
|
+
constructor(dependencies: IProgrammeSeoDependencies);
|
|
13
|
+
protected generateUrls(): Promise<string[]>;
|
|
14
|
+
get filterCombination(): FilterCombinations;
|
|
15
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
6
|
+
import { ContinentPresenter } from '../../presenters/ContinentPresenter';
|
|
7
|
+
import { FormatPresenter } from '../../presenters/FormatPresenter';
|
|
8
|
+
export class ContinentFormat extends ProgrammesBaseIndexabilityPolicy {
|
|
9
|
+
name = 'Continent Format Policy';
|
|
10
|
+
description = 'Determines indexing rules for pages filtered by continent and format.';
|
|
11
|
+
filterKeys = [FilterKey.CONTINENT, FilterKey.ATTENDANCE];
|
|
12
|
+
rules = [
|
|
13
|
+
new SingleValueSelectedForFilterRule(FilterKey.ATTENDANCE),
|
|
14
|
+
new SingleValueSelectedForFilterRule(FilterKey.CONTINENT),
|
|
15
|
+
new OnlyFiltersSelectedRule([FilterKey.ATTENDANCE, FilterKey.CONTINENT]),
|
|
16
|
+
];
|
|
17
|
+
constructor(dependencies) {
|
|
18
|
+
super(dependencies);
|
|
19
|
+
this.initateBaseRules();
|
|
20
|
+
}
|
|
21
|
+
async generateUrls() {
|
|
22
|
+
const formatFragments = FormatPresenter.getInstance().getFragments();
|
|
23
|
+
const continentFragments = ContinentPresenter.getInstance().getFragments();
|
|
24
|
+
const paths = [];
|
|
25
|
+
const allowedFormatIds = ['parttime'];
|
|
26
|
+
const allowedFormats = formatFragments.filter(format => allowedFormatIds.includes(format.id));
|
|
27
|
+
for (const pageNumber of this.indexablePageNumbers) {
|
|
28
|
+
for (const format of allowedFormats) {
|
|
29
|
+
for (const continent of continentFragments) {
|
|
30
|
+
const filterKeyValues = new Map([
|
|
31
|
+
[FilterKey.ATTENDANCE, [format.id]],
|
|
32
|
+
[FilterKey.CONTINENT, [continent.id]]
|
|
33
|
+
]);
|
|
34
|
+
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
35
|
+
if (result) {
|
|
36
|
+
paths.push(this.getPathWithPageNumber(`${continent.path}/${format.path}`, pageNumber));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return paths;
|
|
42
|
+
}
|
|
43
|
+
get filterCombination() {
|
|
44
|
+
return FilterCombinations.CONTINENT_FORMAT;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
6
|
+
import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
|
|
7
|
+
export declare class ContinentSpecialProgrammes extends ProgrammesBaseIndexabilityPolicy {
|
|
8
|
+
readonly name: string;
|
|
9
|
+
readonly description: string;
|
|
10
|
+
readonly filterKeys: FilterKey[];
|
|
11
|
+
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule)[];
|
|
12
|
+
constructor(dependencies: IProgrammeSeoDependencies);
|
|
13
|
+
protected generateUrls(): Promise<string[]>;
|
|
14
|
+
get filterCombination(): FilterCombinations;
|
|
15
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
|
+
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
|
+
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
|
+
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
+
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
6
|
+
import { ContinentPresenter } from '../../presenters/ContinentPresenter';
|
|
7
|
+
import { SpecialProgrammesPresenter } from '../../presenters/SpecialProgrammesPresenter';
|
|
8
|
+
export class ContinentSpecialProgrammes extends ProgrammesBaseIndexabilityPolicy {
|
|
9
|
+
name = 'Continent Special Programmes Policy';
|
|
10
|
+
description = 'Determines indexing rules for pages filtered by continent and special programmes (Erasmus Mundus).';
|
|
11
|
+
filterKeys = [FilterKey.CONTINENT, FilterKey.SPECIAL_PROGRAMMES];
|
|
12
|
+
rules = [
|
|
13
|
+
new SingleValueSelectedForFilterRule(FilterKey.SPECIAL_PROGRAMMES),
|
|
14
|
+
new SingleValueSelectedForFilterRule(FilterKey.CONTINENT),
|
|
15
|
+
new OnlyFiltersSelectedRule([FilterKey.SPECIAL_PROGRAMMES, FilterKey.CONTINENT]),
|
|
16
|
+
];
|
|
17
|
+
constructor(dependencies) {
|
|
18
|
+
super(dependencies);
|
|
19
|
+
this.initateBaseRules();
|
|
20
|
+
}
|
|
21
|
+
async generateUrls() {
|
|
22
|
+
const specialProgrammesFragments = SpecialProgrammesPresenter.getInstance().getFragments();
|
|
23
|
+
const continentFragments = ContinentPresenter.getInstance().getFragments();
|
|
24
|
+
const paths = [];
|
|
25
|
+
const validSpecialProgrammesIds = ['erasmus'];
|
|
26
|
+
const validSpecialProgrammes = specialProgrammesFragments.filter(specialProgramme => validSpecialProgrammesIds.includes(specialProgramme.id));
|
|
27
|
+
for (const pageNumber of this.indexablePageNumbers) {
|
|
28
|
+
for (const specialProgramme of validSpecialProgrammes) {
|
|
29
|
+
for (const continent of continentFragments) {
|
|
30
|
+
const filterKeyValues = new Map([
|
|
31
|
+
[FilterKey.SPECIAL_PROGRAMMES, [specialProgramme.id]],
|
|
32
|
+
[FilterKey.CONTINENT, [continent.id]]
|
|
33
|
+
]);
|
|
34
|
+
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
35
|
+
if (result) {
|
|
36
|
+
paths.push(this.getPathWithPageNumber(`${continent.path}/${specialProgramme.path}`, pageNumber));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return paths;
|
|
42
|
+
}
|
|
43
|
+
get filterCombination() {
|
|
44
|
+
return FilterCombinations.CONTINENT_FORMAT;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FilterKey } from
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
2
|
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
3
|
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
4
|
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FilterKey } from
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
2
|
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
3
|
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
4
|
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FilterKey } from
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
2
|
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
3
|
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
4
|
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FilterKey } from
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
2
|
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
3
|
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
4
|
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FilterKey } from
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
2
|
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
3
|
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
4
|
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FilterKey } from
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
2
|
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
3
|
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
4
|
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FilterKey } from
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
2
|
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
3
|
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
4
|
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FilterKey } from
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
2
|
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
3
|
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
4
|
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
@@ -10,7 +10,7 @@ import { AttendancePresenter } from '../../presenters/AttendancePresenter';
|
|
|
10
10
|
import { DegreePresenter } from '../../presenters/DegreePresenter';
|
|
11
11
|
export class CountryAttendanceDegree extends ProgrammesBaseIndexabilityPolicy {
|
|
12
12
|
name = 'Country Attendance Degree Policy';
|
|
13
|
-
description = `Determines indexing rules for pages filtered by country,
|
|
13
|
+
description = `Determines indexing rules for pages filtered by country,
|
|
14
14
|
study format (online, on-campus, etc.), and degree type.`;
|
|
15
15
|
filterKeys = [FilterKey.COUNTRY, FilterKey.DELIVERY_METHOD, FilterKey.DEGREE_TYPE];
|
|
16
16
|
rules = [
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FilterKey } from
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
2
|
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
3
|
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
4
|
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FilterKey } from
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
2
|
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
3
|
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
4
|
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { FilterKey } from
|
|
1
|
+
import { FilterKey } from '@studyportals/search-filters';
|
|
2
2
|
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
3
|
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
4
|
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
|
-
import {
|
|
5
|
+
import { OneYearOnlyRule } from '../rules/OneYearOnlyRule';
|
|
6
6
|
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
7
7
|
import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
|
|
8
8
|
export declare class CountryDuration extends ProgrammesBaseIndexabilityPolicy {
|
|
9
9
|
readonly name: string;
|
|
10
10
|
readonly description: string;
|
|
11
11
|
readonly filterKeys: FilterKey[];
|
|
12
|
-
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule |
|
|
12
|
+
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | OneYearOnlyRule)[];
|
|
13
13
|
constructor(dependencies: IProgrammeSeoDependencies);
|
|
14
14
|
protected generateUrls(): Promise<string[]>;
|
|
15
15
|
get filterCombination(): FilterCombinations;
|