@studyportals/fawkes 4.0.3-0 → 5.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/scholarships-seo/index.d.ts +2 -4
- package/dist/sitemap-generator-seo/index.d.ts +6 -2
- package/dist/sitemap-generator-seo/index.js +3 -2
- package/dist/src/common/IPresenter.d.ts +6 -0
- package/dist/src/common/index.d.ts +1 -0
- package/dist/src/common/index.js +1 -0
- package/dist/src/common/policies/BaseSeoIndexabilityPolicy.d.ts +3 -3
- package/dist/src/enums/FilterCombinations.d.ts +11 -20
- package/dist/src/enums/FilterCombinations.js +11 -20
- package/dist/src/organisations/policies/OrganisationsSeoIndexabilityPolicy.d.ts +2 -0
- package/dist/src/organisations/policies/OrganisationsSeoIndexabilityPolicy.js +9 -0
- package/dist/src/organisations/policies/RankedOrganisationsSeoIndexabilityPolicy.d.ts +7 -0
- package/dist/src/organisations/policies/RankedOrganisationsSeoIndexabilityPolicy.js +20 -0
- package/dist/src/organisations/policies/our-picks/Area.js +14 -1
- package/dist/src/organisations/policies/our-picks/AreaAttendance.js +19 -1
- package/dist/src/organisations/policies/our-picks/Attendance.js +11 -1
- package/dist/src/organisations/policies/our-picks/Continent.d.ts +1 -1
- package/dist/src/organisations/policies/our-picks/Continent.js +13 -3
- package/dist/src/organisations/policies/our-picks/Country.d.ts +1 -1
- package/dist/src/organisations/policies/our-picks/Country.js +13 -3
- package/dist/src/organisations/policies/our-picks/CountryAttendance.d.ts +1 -1
- package/dist/src/organisations/policies/our-picks/CountryAttendance.js +20 -3
- package/dist/src/organisations/policies/our-picks/Unfiltered.js +2 -2
- package/dist/src/organisations/policies/ranked/RankedArea.d.ts +5 -6
- package/dist/src/organisations/policies/ranked/RankedArea.js +22 -9
- package/dist/src/organisations/policies/ranked/RankedAreaDiscipline.d.ts +5 -6
- package/dist/src/organisations/policies/ranked/RankedAreaDiscipline.js +28 -10
- package/dist/src/organisations/policies/ranked/RankedAttendance.d.ts +5 -6
- package/dist/src/organisations/policies/ranked/RankedAttendance.js +19 -9
- package/dist/src/organisations/policies/ranked/RankedAttendanceDiscipline.d.ts +6 -7
- package/dist/src/organisations/policies/ranked/RankedAttendanceDiscipline.js +26 -9
- package/dist/src/organisations/policies/ranked/RankedContinent.d.ts +5 -6
- package/dist/src/organisations/policies/ranked/RankedContinent.js +20 -10
- package/dist/src/organisations/policies/ranked/RankedContinentAttendance.d.ts +5 -6
- package/dist/src/organisations/policies/ranked/RankedContinentAttendance.js +25 -8
- package/dist/src/organisations/policies/ranked/RankedCountry.d.ts +5 -6
- package/dist/src/organisations/policies/ranked/RankedCountry.js +19 -12
- package/dist/src/organisations/policies/ranked/RankedCountryAttendance.d.ts +5 -6
- package/dist/src/organisations/policies/ranked/RankedCountryAttendance.js +25 -8
- package/dist/src/organisations/policies/ranked/RankedCountryDiscipline.d.ts +5 -6
- package/dist/src/organisations/policies/ranked/RankedCountryDiscipline.js +26 -9
- package/dist/src/organisations/policies/ranked/RankedDiscipline.d.ts +5 -6
- package/dist/src/organisations/policies/ranked/RankedDiscipline.js +19 -9
- package/dist/src/organisations/policies/ranked/RankedUnfiltered.d.ts +5 -6
- package/dist/src/organisations/policies/ranked/RankedUnfiltered.js +12 -7
- package/dist/src/organisations/rules/AtLeastTwoRankedResultsRule.d.ts +4 -0
- package/dist/src/organisations/rules/AtLeastTwoRankedResultsRule.js +13 -4
- package/dist/src/organisations/rules/BaseSearchVolumeOrganisationsRule.d.ts +13 -0
- package/dist/src/organisations/rules/BaseSearchVolumeOrganisationsRule.js +30 -0
- package/dist/src/organisations/rules/ContinentIsEuropeRule.d.ts +3 -7
- package/dist/src/organisations/rules/ContinentIsEuropeRule.js +6 -10
- package/dist/src/organisations/rules/SearchVolumeAreasAttendanceRule.d.ts +3 -9
- package/dist/src/organisations/rules/SearchVolumeAreasAttendanceRule.js +9 -20
- package/dist/src/organisations/rules/SearchVolumeAreasDisciplineRule.d.ts +3 -9
- package/dist/src/organisations/rules/SearchVolumeAreasDisciplineRule.js +10 -21
- package/dist/src/organisations/rules/SearchVolumeCountriesAttendanceRule.d.ts +3 -9
- package/dist/src/organisations/rules/SearchVolumeCountriesAttendanceRule.js +9 -21
- package/dist/src/organisations/types/IOrganisationsSitemapDependencies.d.ts +2 -0
- package/dist/src/presenters/AreaPresenter.d.ts +5 -2
- package/dist/src/presenters/AreaPresenter.js +3 -1
- package/dist/src/presenters/AttendancePresenter.d.ts +11 -0
- package/dist/src/presenters/AttendancePresenter.js +23 -0
- package/dist/src/presenters/ContinentPresenter.d.ts +12 -0
- package/dist/src/presenters/ContinentPresenter.js +33 -0
- package/dist/src/presenters/CountryPresenter.d.ts +5 -2
- package/dist/src/presenters/CountryPresenter.js +3 -1
- package/dist/src/presenters/DisciplinePresenter.d.ts +5 -2
- package/dist/src/presenters/DisciplinePresenter.js +3 -1
- package/dist/src/scholarships/policies/Area.d.ts +1 -1
- package/dist/src/scholarships/policies/Country.d.ts +1 -1
- package/dist/src/scholarships/policies/Discipline.d.ts +1 -1
- package/dist/src/scholarships/policies/DisciplineCountry.d.ts +1 -1
- package/dist/src/scholarships/policies/Unfiltered.d.ts +1 -1
- package/dist/src/scholarships/policies/UniversityCountry.d.ts +1 -1
- package/dist/src/scholarships/types.d.ts +3 -4
- package/dist/src/scholarships/types.js +3 -4
- package/dist/src/sitemap-generator/BaseSitemapUrlGeneratorManager.d.ts +13 -0
- package/dist/src/sitemap-generator/BaseSitemapUrlGeneratorManager.js +23 -0
- package/dist/src/sitemap-generator/IRankingApiClient.d.ts +4 -0
- package/dist/src/sitemap-generator/ISitemapUrlGeneratorManager.d.ts +4 -0
- package/dist/src/sitemap-generator/OrganisationsSitemapUrlGeneratorManager.d.ts +14 -0
- package/dist/src/sitemap-generator/OrganisationsSitemapUrlGeneratorManager.js +51 -0
- package/dist/src/sitemap-generator/ScholarshipsSitemapUrlGeneratorManager.d.ts +9 -0
- package/dist/src/sitemap-generator/ScholarshipsSitemapUrlGeneratorManager.js +28 -0
- package/package.json +2 -10
- package/dist/programmes-seo/index.d.ts +0 -6
- package/dist/programmes-seo/index.js +0 -2
- package/dist/src/common/policies/RuleBasedIndexabilityPolicy.d.ts +0 -11
- package/dist/src/common/policies/RuleBasedIndexabilityPolicy.js +0 -24
- package/dist/src/organisations/OrganisationsRuleBasedIndexabilityPolicy.d.ts +0 -11
- package/dist/src/organisations/OrganisationsRuleBasedIndexabilityPolicy.js +0 -19
- package/dist/src/organisations/rules/NoFiltersSelectedRule.d.ts +0 -8
- package/dist/src/organisations/rules/NoFiltersSelectedRule.js +0 -14
- package/dist/src/programmes/IProgrammeSearchApplicationState.d.ts +0 -4
- package/dist/src/programmes/IProgrammeSearchDependencies.d.ts +0 -7
- package/dist/src/programmes/ProgrammesBaseIndexabilityPolicy.d.ts +0 -7
- package/dist/src/programmes/ProgrammesBaseIndexabilityPolicy.js +0 -10
- package/dist/src/programmes/SearchIndexabilityManager.d.ts +0 -10
- package/dist/src/programmes/SearchIndexabilityManager.js +0 -50
- package/dist/src/programmes/policies/Area.d.ts +0 -7
- package/dist/src/programmes/policies/Area.js +0 -19
- package/dist/src/programmes/policies/Attendance.d.ts +0 -7
- package/dist/src/programmes/policies/Attendance.js +0 -20
- package/dist/src/programmes/policies/AttendanceDegree.d.ts +0 -7
- package/dist/src/programmes/policies/AttendanceDegree.js +0 -23
- package/dist/src/programmes/policies/Continent.d.ts +0 -7
- package/dist/src/programmes/policies/Continent.js +0 -18
- package/dist/src/programmes/policies/ContinentTuitionFee.d.ts +0 -7
- package/dist/src/programmes/policies/ContinentTuitionFee.js +0 -21
- package/dist/src/programmes/policies/Country.d.ts +0 -7
- package/dist/src/programmes/policies/Country.js +0 -18
- package/dist/src/programmes/policies/CountryAttendance.d.ts +0 -7
- package/dist/src/programmes/policies/CountryAttendance.js +0 -21
- package/dist/src/programmes/policies/CountryAttendanceDegree.d.ts +0 -7
- package/dist/src/programmes/policies/CountryAttendanceDegree.js +0 -24
- package/dist/src/programmes/policies/CountryDegree.d.ts +0 -7
- package/dist/src/programmes/policies/CountryDegree.js +0 -21
- package/dist/src/programmes/policies/CountryDuration.d.ts +0 -7
- package/dist/src/programmes/policies/CountryDuration.js +0 -21
- package/dist/src/programmes/policies/CountryDurationDegree.d.ts +0 -7
- package/dist/src/programmes/policies/CountryDurationDegree.js +0 -24
- package/dist/src/programmes/policies/CountryEducationalForm.d.ts +0 -7
- package/dist/src/programmes/policies/CountryEducationalForm.js +0 -21
- package/dist/src/programmes/policies/CountryFormat.d.ts +0 -7
- package/dist/src/programmes/policies/CountryFormat.js +0 -21
- package/dist/src/programmes/policies/CountryTuitionFee.d.ts +0 -7
- package/dist/src/programmes/policies/CountryTuitionFee.js +0 -21
- package/dist/src/programmes/policies/Discipline.d.ts +0 -7
- package/dist/src/programmes/policies/Discipline.js +0 -18
- package/dist/src/programmes/policies/DisciplineArea.d.ts +0 -7
- package/dist/src/programmes/policies/DisciplineArea.js +0 -20
- package/dist/src/programmes/policies/DisciplineAttendance.d.ts +0 -7
- package/dist/src/programmes/policies/DisciplineAttendance.js +0 -21
- package/dist/src/programmes/policies/DisciplineContinent.d.ts +0 -7
- package/dist/src/programmes/policies/DisciplineContinent.js +0 -19
- package/dist/src/programmes/policies/DisciplineCountry.d.ts +0 -7
- package/dist/src/programmes/policies/DisciplineCountry.js +0 -19
- package/dist/src/programmes/policies/DisciplineCountryDegree.d.ts +0 -7
- package/dist/src/programmes/policies/DisciplineCountryDegree.js +0 -22
- package/dist/src/programmes/policies/DisciplineCountryEducationalForm.d.ts +0 -7
- package/dist/src/programmes/policies/DisciplineCountryEducationalForm.js +0 -22
- package/dist/src/programmes/policies/DisciplineDegree.d.ts +0 -7
- package/dist/src/programmes/policies/DisciplineDegree.js +0 -21
- package/dist/src/programmes/policies/DisciplineDuration.d.ts +0 -7
- package/dist/src/programmes/policies/DisciplineDuration.js +0 -21
- package/dist/src/programmes/policies/DisciplineEducationalForm.d.ts +0 -7
- package/dist/src/programmes/policies/DisciplineEducationalForm.js +0 -21
- package/dist/src/programmes/policies/DisciplineFormat.d.ts +0 -7
- package/dist/src/programmes/policies/DisciplineFormat.js +0 -21
- package/dist/src/programmes/policies/DisciplineTuitionFee.d.ts +0 -7
- package/dist/src/programmes/policies/DisciplineTuitionFee.js +0 -21
- package/dist/src/programmes/policies/DisciplineTuitionFeeAttendance.d.ts +0 -7
- package/dist/src/programmes/policies/DisciplineTuitionFeeAttendance.js +0 -24
- package/dist/src/programmes/policies/SpecialProgrammes.d.ts +0 -7
- package/dist/src/programmes/policies/SpecialProgrammes.js +0 -20
- package/dist/src/programmes/policies/TuitionFee.d.ts +0 -7
- package/dist/src/programmes/policies/TuitionFee.js +0 -18
- package/dist/src/programmes/policies/Unfiltered.d.ts +0 -7
- package/dist/src/programmes/policies/Unfiltered.js +0 -15
- package/dist/src/programmes/policies/index.d.ts +0 -30
- package/dist/src/programmes/policies/index.js +0 -30
- package/dist/src/programmes/rules/AffordableTuitionFeeRule.d.ts +0 -7
- package/dist/src/programmes/rules/AffordableTuitionFeeRule.js +0 -18
- package/dist/src/programmes/rules/AtLeastSevenResultsRule.d.ts +0 -7
- package/dist/src/programmes/rules/AtLeastSevenResultsRule.js +0 -13
- package/dist/src/programmes/rules/ErasmusOrJointSpecialProgrammesRule.d.ts +0 -7
- package/dist/src/programmes/rules/ErasmusOrJointSpecialProgrammesRule.js +0 -19
- package/dist/src/programmes/rules/IndexableDegreeRule.d.ts +0 -8
- package/dist/src/programmes/rules/IndexableDegreeRule.js +0 -42
- package/dist/src/programmes/rules/IndexableDurationRule.d.ts +0 -8
- package/dist/src/programmes/rules/IndexableDurationRule.js +0 -25
- package/dist/src/programmes/rules/IndexableEducationalFormRule.d.ts +0 -8
- package/dist/src/programmes/rules/IndexableEducationalFormRule.js +0 -25
- package/dist/src/programmes/rules/IndexablePageNumberRule.d.ts +0 -6
- package/dist/src/programmes/rules/IndexablePageNumberRule.js +0 -13
- package/dist/src/programmes/rules/MbaDegreeRule.d.ts +0 -7
- package/dist/src/programmes/rules/MbaDegreeRule.js +0 -18
- package/dist/src/programmes/rules/MbaOrMscDegreeRule.d.ts +0 -7
- package/dist/src/programmes/rules/MbaOrMscDegreeRule.js +0 -18
- package/dist/src/programmes/rules/NotDistanceLearningPortalRule.d.ts +0 -7
- package/dist/src/programmes/rules/NotDistanceLearningPortalRule.js +0 -14
- package/dist/src/programmes/rules/OneYearDurationRule.d.ts +0 -7
- package/dist/src/programmes/rules/OneYearDurationRule.js +0 -18
- package/dist/src/programmes/rules/OnlineAttendanceRule.d.ts +0 -5
- package/dist/src/programmes/rules/OnlineAttendanceRule.js +0 -11
- package/dist/src/programmes/rules/PartTimeFormatRule.d.ts +0 -7
- package/dist/src/programmes/rules/PartTimeFormatRule.js +0 -18
- /package/dist/src/{programmes/IProgrammeSearchApplicationState.js → common/IPresenter.js} +0 -0
- /package/dist/src/{programmes/IProgrammeSearchDependencies.js → sitemap-generator/IRankingApiClient.js} +0 -0
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import { ISeoFilterState } from '../src/common
|
|
2
|
-
import { ISeoInfoBase } from '../src/common/ISeoInfoBase';
|
|
3
|
-
import { ISearchIndexabilityManager } from '../src/common/ISearchIndexabilityManager';
|
|
1
|
+
import { ISeoFilterState, ISearchApplicationState, ISearchIndexabilityManager, ISeoInfoBase } from '../src/common';
|
|
4
2
|
import { SearchIndexabilityManager } from '../src/scholarships/SearchIndexabilityManager';
|
|
5
3
|
import { types } from '../src/scholarships/types';
|
|
6
|
-
export { ISeoFilterState,
|
|
4
|
+
export { ISeoFilterState, ISearchApplicationState, ISearchIndexabilityManager, ISeoInfoBase, SearchIndexabilityManager, types };
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { IOrganisationsClient } from '../src/sitemap-generator/IOrganisationsClient';
|
|
2
2
|
import { IOrganisation } from '../src/sitemap-generator/IOrganisation';
|
|
3
|
+
import { IRankingApiClient } from '../src/sitemap-generator/IRankingApiClient';
|
|
3
4
|
import { ISearchApiClient } from '../src/sitemap-generator/ISearchApiClient';
|
|
4
5
|
import { ISitemapUrlGeneratorManager } from '../src/sitemap-generator/ISitemapUrlGeneratorManager';
|
|
5
|
-
import {
|
|
6
|
+
import { OrganisationsSitemapUrlGeneratorManager } from '../src/sitemap-generator/OrganisationsSitemapUrlGeneratorManager';
|
|
7
|
+
import { ScholarshipsSitemapUrlGeneratorManager } from '../src/sitemap-generator/ScholarshipsSitemapUrlGeneratorManager';
|
|
6
8
|
import { FilterCombinations } from '../src/enums/FilterCombinations';
|
|
7
|
-
|
|
9
|
+
import { FilterKeyValuesMap } from '../src/common/FilterKeyValuesMap';
|
|
10
|
+
import { IPresenter } from '../src/common';
|
|
11
|
+
export { IOrganisationsClient, IOrganisation, IRankingApiClient, ISearchApiClient, ISitemapUrlGeneratorManager, OrganisationsSitemapUrlGeneratorManager, ScholarshipsSitemapUrlGeneratorManager, FilterCombinations, FilterKeyValuesMap, IPresenter };
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { OrganisationsSitemapUrlGeneratorManager } from '../src/sitemap-generator/OrganisationsSitemapUrlGeneratorManager';
|
|
2
|
+
import { ScholarshipsSitemapUrlGeneratorManager } from '../src/sitemap-generator/ScholarshipsSitemapUrlGeneratorManager';
|
|
2
3
|
import { FilterCombinations } from '../src/enums/FilterCombinations';
|
|
3
|
-
export {
|
|
4
|
+
export { OrganisationsSitemapUrlGeneratorManager, ScholarshipsSitemapUrlGeneratorManager, FilterCombinations };
|
package/dist/src/common/index.js
CHANGED
|
@@ -4,7 +4,7 @@ import { IRule } from '../IRule';
|
|
|
4
4
|
import { FilterKeyValuesMap } from '../FilterKeyValuesMap';
|
|
5
5
|
import { ISeoIndexabilityPolicy } from '../ISeoIndexabilityPolicy';
|
|
6
6
|
import { ISitemapUrlGenerator } from '../ISitemapUrlGenerator';
|
|
7
|
-
import { FilterCombinations } from '
|
|
7
|
+
import { FilterCombinations } from '../../../sitemap-generator-seo';
|
|
8
8
|
export declare abstract class BaseSeoIndexabilityPolicy<TDependencies extends IDependencies> implements ISeoIndexabilityPolicy, ISitemapUrlGenerator {
|
|
9
9
|
protected readonly dependencies: TDependencies;
|
|
10
10
|
protected abstract readonly rules: IRule[];
|
|
@@ -16,6 +16,6 @@ export declare abstract class BaseSeoIndexabilityPolicy<TDependencies extends ID
|
|
|
16
16
|
protected isIndexable(): Promise<boolean>;
|
|
17
17
|
protected checkRulesForSearch(dependencies: ISearchDependencies): Promise<boolean>;
|
|
18
18
|
protected checkRulesForSitemap(filterKeyValues: FilterKeyValuesMap): Promise<boolean>;
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
protected isIndexabilityPolicyDependencies(): boolean;
|
|
20
|
+
protected isSitemapUrlGeneratorDependencies(): boolean;
|
|
21
21
|
}
|
|
@@ -3,35 +3,26 @@ export declare enum FilterCombinations {
|
|
|
3
3
|
AREA_ATTENDANCE = "areaAttendance",
|
|
4
4
|
AREA_DISCIPLINE = "areaDiscipline",
|
|
5
5
|
COUNTRY = "country",
|
|
6
|
-
COUNTRY_DEGREE = "countryDegree",
|
|
7
|
-
COUNTRY_DURATION = "countryDuration",
|
|
8
|
-
COUNTRY_FORMAT = "countryFormat",
|
|
9
|
-
COUNTRY_TUITION_FEE = "countryTuitionFee",
|
|
10
|
-
COUNTRY_EDUCATIONAL_FORM = "countryEducationalForm",
|
|
11
|
-
COUNTRY_ATTENDANCE_DEGREE = "countryAttendanceDegree",
|
|
12
|
-
COUNTRY_DURATION_DEGREE = "countryDurationDegree",
|
|
13
6
|
DISCIPLINE_AREA = "disciplineArea",
|
|
14
7
|
DISCIPLINE_ATTENDANCE = "disciplineAttendance",
|
|
15
8
|
DISCIPLINE_COUNTRY = "disciplineCountry",
|
|
16
|
-
DISCIPLINE_CONTINENT = "disciplineContinent",
|
|
17
|
-
DISCIPLINE_DEGREE = "disciplineDegree",
|
|
18
|
-
DISCIPLINE_DURATION = "disciplineDuration",
|
|
19
|
-
DISCIPLINE_FORMAT = "disciplineFormat",
|
|
20
|
-
DISCIPLINE_TUITION_FEE = "disciplineTuitionFee",
|
|
21
|
-
DISCIPLINE_EDUCATIONAL_FORM = "disciplineEducationalForm",
|
|
22
|
-
DISCIPLINE_TUITION_FEE_ATTENDANCE = "disciplineTuitionFeeAttendance",
|
|
23
|
-
DISCIPLINE_COUNTRY_EDUCATIONAL_FORM = "disciplineCountryEducationalForm",
|
|
24
|
-
DISCIPLINE_COUNTRY_DEGREE = "disciplineCountryDegree",
|
|
25
9
|
DISCIPLINE = "discipline",
|
|
26
10
|
UNFILTERED = "unfiltered",
|
|
27
11
|
UNIVERSITY_COUNTRY = "universityCountry",
|
|
28
12
|
ATTENDANCE_DISCIPLINE = "attendancedDiscipline",
|
|
29
|
-
ATTENDANCE_DEGREE = "attendanceDegree",
|
|
30
13
|
CONTINENT_ATTENDANCE = "continentAttendance",
|
|
31
14
|
COUNTRY_ATTENDANCE = "countryAttendance",
|
|
32
15
|
ATTENDANCE = "attendance",
|
|
33
16
|
CONTINENT = "continent",
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
17
|
+
RANKED_AREA = "rankedArea",
|
|
18
|
+
RANKED_AREA_DISCIPLINE = "rankedAreaDiscipline",
|
|
19
|
+
RANKED_ATTENDANCE = "rankedAttendance",
|
|
20
|
+
RANKED_ATTENDANCE_DISCIPLINE = "rankedAttendancedDiscipline",
|
|
21
|
+
RANKED_CONTINENT = "rankedContinent",
|
|
22
|
+
RANKED_CONTINENT_ATTENDANCE = "rankedContinentAttendance",
|
|
23
|
+
RANKED_COUNTRY = "rankedCountry",
|
|
24
|
+
RANKED_COUNTRY_ATTENDANCE = "rankedCountryAttendance",
|
|
25
|
+
RANKED_DISCIPLINE_COUNTRY = "rankedDisciplineCountry",
|
|
26
|
+
RANKED_DISCIPLINE = "rankedDiscipline",
|
|
27
|
+
RANKED_UNFILTERED = "rankedUnfiltered"
|
|
37
28
|
}
|
|
@@ -4,35 +4,26 @@ export var FilterCombinations;
|
|
|
4
4
|
FilterCombinations["AREA_ATTENDANCE"] = "areaAttendance";
|
|
5
5
|
FilterCombinations["AREA_DISCIPLINE"] = "areaDiscipline";
|
|
6
6
|
FilterCombinations["COUNTRY"] = "country";
|
|
7
|
-
FilterCombinations["COUNTRY_DEGREE"] = "countryDegree";
|
|
8
|
-
FilterCombinations["COUNTRY_DURATION"] = "countryDuration";
|
|
9
|
-
FilterCombinations["COUNTRY_FORMAT"] = "countryFormat";
|
|
10
|
-
FilterCombinations["COUNTRY_TUITION_FEE"] = "countryTuitionFee";
|
|
11
|
-
FilterCombinations["COUNTRY_EDUCATIONAL_FORM"] = "countryEducationalForm";
|
|
12
|
-
FilterCombinations["COUNTRY_ATTENDANCE_DEGREE"] = "countryAttendanceDegree";
|
|
13
|
-
FilterCombinations["COUNTRY_DURATION_DEGREE"] = "countryDurationDegree";
|
|
14
7
|
FilterCombinations["DISCIPLINE_AREA"] = "disciplineArea";
|
|
15
8
|
FilterCombinations["DISCIPLINE_ATTENDANCE"] = "disciplineAttendance";
|
|
16
9
|
FilterCombinations["DISCIPLINE_COUNTRY"] = "disciplineCountry";
|
|
17
|
-
FilterCombinations["DISCIPLINE_CONTINENT"] = "disciplineContinent";
|
|
18
|
-
FilterCombinations["DISCIPLINE_DEGREE"] = "disciplineDegree";
|
|
19
|
-
FilterCombinations["DISCIPLINE_DURATION"] = "disciplineDuration";
|
|
20
|
-
FilterCombinations["DISCIPLINE_FORMAT"] = "disciplineFormat";
|
|
21
|
-
FilterCombinations["DISCIPLINE_TUITION_FEE"] = "disciplineTuitionFee";
|
|
22
|
-
FilterCombinations["DISCIPLINE_EDUCATIONAL_FORM"] = "disciplineEducationalForm";
|
|
23
|
-
FilterCombinations["DISCIPLINE_TUITION_FEE_ATTENDANCE"] = "disciplineTuitionFeeAttendance";
|
|
24
|
-
FilterCombinations["DISCIPLINE_COUNTRY_EDUCATIONAL_FORM"] = "disciplineCountryEducationalForm";
|
|
25
|
-
FilterCombinations["DISCIPLINE_COUNTRY_DEGREE"] = "disciplineCountryDegree";
|
|
26
10
|
FilterCombinations["DISCIPLINE"] = "discipline";
|
|
27
11
|
FilterCombinations["UNFILTERED"] = "unfiltered";
|
|
28
12
|
FilterCombinations["UNIVERSITY_COUNTRY"] = "universityCountry";
|
|
29
13
|
FilterCombinations["ATTENDANCE_DISCIPLINE"] = "attendancedDiscipline";
|
|
30
|
-
FilterCombinations["ATTENDANCE_DEGREE"] = "attendanceDegree";
|
|
31
14
|
FilterCombinations["CONTINENT_ATTENDANCE"] = "continentAttendance";
|
|
32
15
|
FilterCombinations["COUNTRY_ATTENDANCE"] = "countryAttendance";
|
|
33
16
|
FilterCombinations["ATTENDANCE"] = "attendance";
|
|
34
17
|
FilterCombinations["CONTINENT"] = "continent";
|
|
35
|
-
FilterCombinations["
|
|
36
|
-
FilterCombinations["
|
|
37
|
-
FilterCombinations["
|
|
18
|
+
FilterCombinations["RANKED_AREA"] = "rankedArea";
|
|
19
|
+
FilterCombinations["RANKED_AREA_DISCIPLINE"] = "rankedAreaDiscipline";
|
|
20
|
+
FilterCombinations["RANKED_ATTENDANCE"] = "rankedAttendance";
|
|
21
|
+
FilterCombinations["RANKED_ATTENDANCE_DISCIPLINE"] = "rankedAttendancedDiscipline";
|
|
22
|
+
FilterCombinations["RANKED_CONTINENT"] = "rankedContinent";
|
|
23
|
+
FilterCombinations["RANKED_CONTINENT_ATTENDANCE"] = "rankedContinentAttendance";
|
|
24
|
+
FilterCombinations["RANKED_COUNTRY"] = "rankedCountry";
|
|
25
|
+
FilterCombinations["RANKED_COUNTRY_ATTENDANCE"] = "rankedCountryAttendance";
|
|
26
|
+
FilterCombinations["RANKED_DISCIPLINE_COUNTRY"] = "rankedDisciplineCountry";
|
|
27
|
+
FilterCombinations["RANKED_DISCIPLINE"] = "rankedDiscipline";
|
|
28
|
+
FilterCombinations["RANKED_UNFILTERED"] = "rankedUnfiltered";
|
|
38
29
|
})(FilterCombinations || (FilterCombinations = {}));
|
|
@@ -6,6 +6,8 @@ export declare abstract class OrganisationsSeoIndexabilityPolicy extends BaseSeo
|
|
|
6
6
|
protected readonly indexablePortalTypes: PortalType[];
|
|
7
7
|
protected abstract readonly sortingOption: SortingOptions;
|
|
8
8
|
constructor(dependencies: IOrganisationsSeoDependencies);
|
|
9
|
+
generateSitemapUrls(): Promise<string[]>;
|
|
9
10
|
protected isIndexable(): Promise<boolean>;
|
|
11
|
+
protected getPathWithSortingOption(path: string): string;
|
|
10
12
|
private matchesSortingOption;
|
|
11
13
|
}
|
|
@@ -5,6 +5,12 @@ export class OrganisationsSeoIndexabilityPolicy extends BaseSeoIndexabilityPolic
|
|
|
5
5
|
constructor(dependencies) {
|
|
6
6
|
super(dependencies);
|
|
7
7
|
}
|
|
8
|
+
async generateSitemapUrls() {
|
|
9
|
+
if (this.indexablePortalTypes.includes(this.dependencies.portalType)) {
|
|
10
|
+
return super.generateSitemapUrls();
|
|
11
|
+
}
|
|
12
|
+
return [];
|
|
13
|
+
}
|
|
8
14
|
async isIndexable() {
|
|
9
15
|
const isIndexable = await super.isIndexable();
|
|
10
16
|
if (!isIndexable) {
|
|
@@ -12,6 +18,9 @@ export class OrganisationsSeoIndexabilityPolicy extends BaseSeoIndexabilityPolic
|
|
|
12
18
|
}
|
|
13
19
|
return this.indexablePortalTypes.includes(this.dependencies.portalType) && this.matchesSortingOption();
|
|
14
20
|
}
|
|
21
|
+
getPathWithSortingOption(path) {
|
|
22
|
+
return path;
|
|
23
|
+
}
|
|
15
24
|
matchesSortingOption() {
|
|
16
25
|
const dependencies = this.dependencies;
|
|
17
26
|
return dependencies.sortingState.getSelectedOption() === this.sortingOption;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { SortingOptions } from '../../enums/SortingOptions';
|
|
2
|
+
import { OrganisationsSeoIndexabilityPolicy } from './OrganisationsSeoIndexabilityPolicy';
|
|
3
|
+
export declare abstract class RankedOrganisationsSeoIndexabilityPolicy extends OrganisationsSeoIndexabilityPolicy {
|
|
4
|
+
protected readonly sortingOption: SortingOptions;
|
|
5
|
+
protected addRankedResultsCountRule(): void;
|
|
6
|
+
protected getPathWithSortingOption(path: string): string;
|
|
7
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { SortingOptions } from '../../enums/SortingOptions';
|
|
2
|
+
import { OrganisationsSeoIndexabilityPolicy } from './OrganisationsSeoIndexabilityPolicy';
|
|
3
|
+
import { AtLeastTwoRankedResultsRule } from '../rules/AtLeastTwoRankedResultsRule';
|
|
4
|
+
export class RankedOrganisationsSeoIndexabilityPolicy extends OrganisationsSeoIndexabilityPolicy {
|
|
5
|
+
sortingOption = SortingOptions.UNIVERSITY_META_RANKING;
|
|
6
|
+
addRankedResultsCountRule() {
|
|
7
|
+
let rankedResultsCountRule;
|
|
8
|
+
if (super.isSitemapUrlGeneratorDependencies()) {
|
|
9
|
+
const dependencies = this.dependencies;
|
|
10
|
+
rankedResultsCountRule = new AtLeastTwoRankedResultsRule(dependencies.rankingApiClient);
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
rankedResultsCountRule = new AtLeastTwoRankedResultsRule();
|
|
14
|
+
}
|
|
15
|
+
this.rules.push(rankedResultsCountRule);
|
|
16
|
+
}
|
|
17
|
+
getPathWithSortingOption(path) {
|
|
18
|
+
return 'rankings/' + path;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -4,6 +4,7 @@ import { SortingOptions } from '../../../enums/SortingOptions';
|
|
|
4
4
|
import { SingleValueSelectedForFilterRule } from '../../../common/rules/SingleValueSelectedForFilterRule';
|
|
5
5
|
import { OrganisationsSeoIndexabilityPolicy } from '../../../organisations/policies/OrganisationsSeoIndexabilityPolicy';
|
|
6
6
|
import { OnlyFiltersSelectedRule } from '../../../common/rules/OnlyFiltersSelectedRule';
|
|
7
|
+
import { AreaPresenter } from '../../../presenters/AreaPresenter';
|
|
7
8
|
export class Area extends OrganisationsSeoIndexabilityPolicy {
|
|
8
9
|
sortingOption = SortingOptions.OUR_PICKS;
|
|
9
10
|
rules = [
|
|
@@ -12,7 +13,19 @@ export class Area extends OrganisationsSeoIndexabilityPolicy {
|
|
|
12
13
|
new OnlyFiltersSelectedRule([FilterKey.AREA, FilterKey.COUNTRY])
|
|
13
14
|
];
|
|
14
15
|
async generateUrls() {
|
|
15
|
-
|
|
16
|
+
const areaFragments = AreaPresenter.getInstance().getFragments();
|
|
17
|
+
const paths = [];
|
|
18
|
+
for (const area of areaFragments) {
|
|
19
|
+
const filterKeyValues = new Map([
|
|
20
|
+
[FilterKey.AREA, [area.id]],
|
|
21
|
+
[FilterKey.COUNTRY, [area.countryId]]
|
|
22
|
+
]);
|
|
23
|
+
const result = await this.checkRulesForSitemap(filterKeyValues);
|
|
24
|
+
if (result) {
|
|
25
|
+
paths.push(this.getPathWithSortingOption(area.path));
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return paths;
|
|
16
29
|
}
|
|
17
30
|
get filterCombination() {
|
|
18
31
|
return FilterCombinations.AREA;
|
|
@@ -6,6 +6,8 @@ import { SortingOptions } from '../../../enums/SortingOptions';
|
|
|
6
6
|
import { SingleValueSelectedForFilterRule } from '../../../common/rules/SingleValueSelectedForFilterRule';
|
|
7
7
|
import { OnlyFiltersSelectedRule } from '../../../common/rules/OnlyFiltersSelectedRule';
|
|
8
8
|
import { OnlineAttendanceRule } from '../../../organisations/rules/OnlineAttendanceRule';
|
|
9
|
+
import { AreaPresenter } from '../../../presenters/AreaPresenter';
|
|
10
|
+
import { AttendancePresenter } from '../../../presenters/AttendancePresenter';
|
|
9
11
|
export class AreaAttendance extends OrganisationsSeoIndexabilityPolicy {
|
|
10
12
|
sortingOption = SortingOptions.OUR_PICKS;
|
|
11
13
|
rules = [
|
|
@@ -17,7 +19,23 @@ export class AreaAttendance extends OrganisationsSeoIndexabilityPolicy {
|
|
|
17
19
|
new OnlineAttendanceRule()
|
|
18
20
|
];
|
|
19
21
|
async generateUrls() {
|
|
20
|
-
|
|
22
|
+
const areaFragments = AreaPresenter.getInstance().getFragments();
|
|
23
|
+
const attendanceFragments = AttendancePresenter.getInstance().getFragments();
|
|
24
|
+
const paths = [];
|
|
25
|
+
for (const area of areaFragments) {
|
|
26
|
+
for (const attendance of attendanceFragments) {
|
|
27
|
+
const filterKeyValues = new Map([
|
|
28
|
+
[FilterKey.AREA, [area.id]],
|
|
29
|
+
[FilterKey.COUNTRY, [area.countryId]],
|
|
30
|
+
[FilterKey.DELIVERY_METHOD, [attendance.id]]
|
|
31
|
+
]);
|
|
32
|
+
const result = await this.checkRulesForSitemap(filterKeyValues);
|
|
33
|
+
if (result) {
|
|
34
|
+
paths.push(this.getPathWithSortingOption(`${attendance.path}/${area.path}`));
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return paths;
|
|
21
39
|
}
|
|
22
40
|
get filterCombination() {
|
|
23
41
|
return FilterCombinations.AREA_ATTENDANCE;
|
|
@@ -5,6 +5,7 @@ import { OrganisationsSeoIndexabilityPolicy } from '../../../organisations/polic
|
|
|
5
5
|
import { SingleValueSelectedForFilterRule } from '../../../common/rules/SingleValueSelectedForFilterRule';
|
|
6
6
|
import { OnlyFiltersSelectedRule } from '../../../common/rules/OnlyFiltersSelectedRule';
|
|
7
7
|
import { OnlineAttendanceRule } from '../../../organisations/rules/OnlineAttendanceRule';
|
|
8
|
+
import { AttendancePresenter } from '../../../presenters/AttendancePresenter';
|
|
8
9
|
export class Attendance extends OrganisationsSeoIndexabilityPolicy {
|
|
9
10
|
sortingOption = SortingOptions.OUR_PICKS;
|
|
10
11
|
rules = [
|
|
@@ -13,7 +14,16 @@ export class Attendance extends OrganisationsSeoIndexabilityPolicy {
|
|
|
13
14
|
new OnlineAttendanceRule()
|
|
14
15
|
];
|
|
15
16
|
async generateUrls() {
|
|
16
|
-
|
|
17
|
+
const attendanceFragments = AttendancePresenter.getInstance().getFragments();
|
|
18
|
+
const paths = [];
|
|
19
|
+
for (const attendance of attendanceFragments) {
|
|
20
|
+
const filterKeyValues = new Map([[FilterKey.DELIVERY_METHOD, [attendance.id]]]);
|
|
21
|
+
const result = await this.checkRulesForSitemap(filterKeyValues);
|
|
22
|
+
if (result) {
|
|
23
|
+
paths.push(this.getPathWithSortingOption(attendance.path));
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return paths;
|
|
17
27
|
}
|
|
18
28
|
get filterCombination() {
|
|
19
29
|
return FilterCombinations.ATTENDANCE;
|
|
@@ -6,6 +6,6 @@ import { OnlyFiltersSelectedRule } from '../../../common/rules/OnlyFiltersSelect
|
|
|
6
6
|
export declare class Continent extends OrganisationsSeoIndexabilityPolicy {
|
|
7
7
|
protected readonly sortingOption = SortingOptions.OUR_PICKS;
|
|
8
8
|
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule)[];
|
|
9
|
-
protected generateUrls(): Promise<string[]>;
|
|
10
9
|
get filterCombination(): FilterCombinations;
|
|
10
|
+
protected generateUrls(): Promise<string[]>;
|
|
11
11
|
}
|
|
@@ -4,16 +4,26 @@ import { SortingOptions } from '../../../enums/SortingOptions';
|
|
|
4
4
|
import { OrganisationsSeoIndexabilityPolicy } from '../../../organisations/policies/OrganisationsSeoIndexabilityPolicy';
|
|
5
5
|
import { SingleValueSelectedForFilterRule } from '../../../common/rules/SingleValueSelectedForFilterRule';
|
|
6
6
|
import { OnlyFiltersSelectedRule } from '../../../common/rules/OnlyFiltersSelectedRule';
|
|
7
|
+
import { ContinentPresenter } from '../../../presenters/ContinentPresenter';
|
|
7
8
|
export class Continent extends OrganisationsSeoIndexabilityPolicy {
|
|
8
9
|
sortingOption = SortingOptions.OUR_PICKS;
|
|
9
10
|
rules = [
|
|
10
11
|
new SingleValueSelectedForFilterRule(FilterKey.CONTINENT),
|
|
11
12
|
new OnlyFiltersSelectedRule([FilterKey.CONTINENT])
|
|
12
13
|
];
|
|
13
|
-
async generateUrls() {
|
|
14
|
-
throw new Error('Method not implemented.');
|
|
15
|
-
}
|
|
16
14
|
get filterCombination() {
|
|
17
15
|
return FilterCombinations.CONTINENT;
|
|
18
16
|
}
|
|
17
|
+
async generateUrls() {
|
|
18
|
+
const continentFragments = ContinentPresenter.getInstance().getFragments();
|
|
19
|
+
const paths = [];
|
|
20
|
+
for (const continent of continentFragments) {
|
|
21
|
+
const filterKeyValues = new Map([[FilterKey.CONTINENT, [continent.id]]]);
|
|
22
|
+
const result = await this.checkRulesForSitemap(filterKeyValues);
|
|
23
|
+
if (result) {
|
|
24
|
+
paths.push(this.getPathWithSortingOption(continent.path));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return paths;
|
|
28
|
+
}
|
|
19
29
|
}
|
|
@@ -6,6 +6,6 @@ import { OnlyFiltersSelectedRule } from '../../../common/rules/OnlyFiltersSelect
|
|
|
6
6
|
export declare class Country extends OrganisationsSeoIndexabilityPolicy {
|
|
7
7
|
protected readonly sortingOption = SortingOptions.OUR_PICKS;
|
|
8
8
|
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule)[];
|
|
9
|
-
protected generateUrls(): Promise<string[]>;
|
|
10
9
|
get filterCombination(): FilterCombinations;
|
|
10
|
+
protected generateUrls(): Promise<string[]>;
|
|
11
11
|
}
|
|
@@ -4,13 +4,23 @@ import { SortingOptions } from '../../../enums/SortingOptions';
|
|
|
4
4
|
import { OrganisationsSeoIndexabilityPolicy } from '../../../organisations/policies/OrganisationsSeoIndexabilityPolicy';
|
|
5
5
|
import { SingleValueSelectedForFilterRule } from '../../../common/rules/SingleValueSelectedForFilterRule';
|
|
6
6
|
import { OnlyFiltersSelectedRule } from '../../../common/rules/OnlyFiltersSelectedRule';
|
|
7
|
+
import { CountryPresenter } from '../../../presenters/CountryPresenter';
|
|
7
8
|
export class Country extends OrganisationsSeoIndexabilityPolicy {
|
|
8
9
|
sortingOption = SortingOptions.OUR_PICKS;
|
|
9
10
|
rules = [new SingleValueSelectedForFilterRule(FilterKey.COUNTRY), new OnlyFiltersSelectedRule([FilterKey.COUNTRY])];
|
|
10
|
-
async generateUrls() {
|
|
11
|
-
throw new Error('Method not implemented.');
|
|
12
|
-
}
|
|
13
11
|
get filterCombination() {
|
|
14
12
|
return FilterCombinations.COUNTRY;
|
|
15
13
|
}
|
|
14
|
+
async generateUrls() {
|
|
15
|
+
const countryFragments = CountryPresenter.getInstance().getFragments();
|
|
16
|
+
const paths = [];
|
|
17
|
+
for (const country of countryFragments) {
|
|
18
|
+
const filterKeyValues = new Map([[FilterKey.COUNTRY, [country.id]]]);
|
|
19
|
+
const result = await this.checkRulesForSitemap(filterKeyValues);
|
|
20
|
+
if (result) {
|
|
21
|
+
paths.push(this.getPathWithSortingOption(country.path));
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return paths;
|
|
25
|
+
}
|
|
16
26
|
}
|
|
@@ -8,6 +8,6 @@ import { SearchVolumeCountriesAttendanceRule } from '../../../organisations/rule
|
|
|
8
8
|
export declare class CountryAttendance extends OrganisationsSeoIndexabilityPolicy {
|
|
9
9
|
protected readonly sortingOption = SortingOptions.OUR_PICKS;
|
|
10
10
|
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | OnlineAttendanceRule | SearchVolumeCountriesAttendanceRule)[];
|
|
11
|
-
protected generateUrls(): Promise<string[]>;
|
|
12
11
|
get filterCombination(): FilterCombinations;
|
|
12
|
+
protected generateUrls(): Promise<string[]>;
|
|
13
13
|
}
|
|
@@ -6,6 +6,8 @@ import { SingleValueSelectedForFilterRule } from '../../../common/rules/SingleVa
|
|
|
6
6
|
import { OnlyFiltersSelectedRule } from '../../../common/rules/OnlyFiltersSelectedRule';
|
|
7
7
|
import { OnlineAttendanceRule } from '../../../organisations/rules/OnlineAttendanceRule';
|
|
8
8
|
import { SearchVolumeCountriesAttendanceRule } from '../../../organisations/rules/SearchVolumeCountriesAttendanceRule';
|
|
9
|
+
import { CountryPresenter } from '../../../presenters/CountryPresenter';
|
|
10
|
+
import { AttendancePresenter } from '../../../presenters/AttendancePresenter';
|
|
9
11
|
export class CountryAttendance extends OrganisationsSeoIndexabilityPolicy {
|
|
10
12
|
sortingOption = SortingOptions.OUR_PICKS;
|
|
11
13
|
rules = [
|
|
@@ -15,10 +17,25 @@ export class CountryAttendance extends OrganisationsSeoIndexabilityPolicy {
|
|
|
15
17
|
new SearchVolumeCountriesAttendanceRule(),
|
|
16
18
|
new OnlineAttendanceRule()
|
|
17
19
|
];
|
|
18
|
-
async generateUrls() {
|
|
19
|
-
throw new Error('Method not implemented.');
|
|
20
|
-
}
|
|
21
20
|
get filterCombination() {
|
|
22
21
|
return FilterCombinations.COUNTRY_ATTENDANCE;
|
|
23
22
|
}
|
|
23
|
+
async generateUrls() {
|
|
24
|
+
const countryFragments = CountryPresenter.getInstance().getFragments();
|
|
25
|
+
const attendanceFragments = AttendancePresenter.getInstance().getFragments();
|
|
26
|
+
const paths = [];
|
|
27
|
+
for (const country of countryFragments) {
|
|
28
|
+
for (const attendance of attendanceFragments) {
|
|
29
|
+
const filterKeyValues = new Map([
|
|
30
|
+
[FilterKey.COUNTRY, [country.id]],
|
|
31
|
+
[FilterKey.DELIVERY_METHOD, [attendance.id]]
|
|
32
|
+
]);
|
|
33
|
+
const result = await this.checkRulesForSitemap(filterKeyValues);
|
|
34
|
+
if (result) {
|
|
35
|
+
paths.push(this.getPathWithSortingOption(`${attendance.path}/${country.path}`));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return paths;
|
|
40
|
+
}
|
|
24
41
|
}
|
|
@@ -5,8 +5,8 @@ import { NoFiltersSelectedRule } from '../../../common/rules/NoFiltersSelectedRu
|
|
|
5
5
|
export class Unfiltered extends OrganisationsSeoIndexabilityPolicy {
|
|
6
6
|
sortingOption = SortingOptions.OUR_PICKS;
|
|
7
7
|
rules = [new NoFiltersSelectedRule()];
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
generateUrls() {
|
|
9
|
+
return Promise.resolve([this.getPathWithSortingOption('')]);
|
|
10
10
|
}
|
|
11
11
|
get filterCombination() {
|
|
12
12
|
return FilterCombinations.UNFILTERED;
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { FilterCombinations } from '../../../enums/FilterCombinations';
|
|
2
|
-
import { SortingOptions } from '../../../enums/SortingOptions';
|
|
3
|
-
import { OrganisationsSeoIndexabilityPolicy } from '../../../organisations/policies/OrganisationsSeoIndexabilityPolicy';
|
|
4
2
|
import { SingleValueSelectedForFilterRule } from '../../../common/rules/SingleValueSelectedForFilterRule';
|
|
5
3
|
import { OnlyFiltersSelectedRule } from '../../../common/rules/OnlyFiltersSelectedRule';
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule
|
|
4
|
+
import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisationsSeoIndexabilityPolicy';
|
|
5
|
+
import { IOrganisationsSeoDependencies } from '../../../organisations/types/IOrganisationsSeoDependencies';
|
|
6
|
+
export declare class RankedArea extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
7
|
+
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule)[];
|
|
8
|
+
constructor(dependencies: IOrganisationsSeoDependencies);
|
|
10
9
|
protected generateUrls(): Promise<string[]>;
|
|
11
10
|
get filterCombination(): FilterCombinations;
|
|
12
11
|
}
|
|
@@ -1,22 +1,35 @@
|
|
|
1
1
|
import { FilterCombinations } from '../../../enums/FilterCombinations';
|
|
2
2
|
import { FilterKey } from '@studyportals/search-filters';
|
|
3
|
-
import { SortingOptions } from '../../../enums/SortingOptions';
|
|
4
|
-
import { OrganisationsSeoIndexabilityPolicy } from '../../../organisations/policies/OrganisationsSeoIndexabilityPolicy';
|
|
5
3
|
import { SingleValueSelectedForFilterRule } from '../../../common/rules/SingleValueSelectedForFilterRule';
|
|
6
4
|
import { OnlyFiltersSelectedRule } from '../../../common/rules/OnlyFiltersSelectedRule';
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
import { AreaPresenter } from '../../../presenters/AreaPresenter';
|
|
6
|
+
import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisationsSeoIndexabilityPolicy';
|
|
7
|
+
export class RankedArea extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
10
8
|
rules = [
|
|
11
9
|
new SingleValueSelectedForFilterRule(FilterKey.AREA),
|
|
12
10
|
new SingleValueSelectedForFilterRule(FilterKey.COUNTRY),
|
|
13
|
-
new OnlyFiltersSelectedRule([FilterKey.AREA, FilterKey.COUNTRY])
|
|
14
|
-
new AtLeastTwoRankedResultsRule()
|
|
11
|
+
new OnlyFiltersSelectedRule([FilterKey.AREA, FilterKey.COUNTRY])
|
|
15
12
|
];
|
|
13
|
+
constructor(dependencies) {
|
|
14
|
+
super(dependencies);
|
|
15
|
+
this.addRankedResultsCountRule();
|
|
16
|
+
}
|
|
16
17
|
async generateUrls() {
|
|
17
|
-
|
|
18
|
+
const areaFragments = AreaPresenter.getInstance().getFragments();
|
|
19
|
+
const paths = [];
|
|
20
|
+
for (const area of areaFragments) {
|
|
21
|
+
const filterKeyValues = new Map([
|
|
22
|
+
[FilterKey.AREA, [area.id]],
|
|
23
|
+
[FilterKey.COUNTRY, [area.countryId]]
|
|
24
|
+
]);
|
|
25
|
+
const result = await this.checkRulesForSitemap(filterKeyValues);
|
|
26
|
+
if (result) {
|
|
27
|
+
paths.push(this.getPathWithSortingOption(area.path));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return paths;
|
|
18
31
|
}
|
|
19
32
|
get filterCombination() {
|
|
20
|
-
return FilterCombinations.
|
|
33
|
+
return FilterCombinations.RANKED_AREA;
|
|
21
34
|
}
|
|
22
35
|
}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import { OrganisationsSeoIndexabilityPolicy } from '../../../organisations/policies/OrganisationsSeoIndexabilityPolicy';
|
|
2
1
|
import { SearchVolumeAreasDisciplineRule } from '../../../organisations/rules/SearchVolumeAreasDisciplineRule';
|
|
3
|
-
import { AtLeastTwoRankedResultsRule } from '../../../organisations/rules/AtLeastTwoRankedResultsRule';
|
|
4
2
|
import { FilterCombinations } from '../../../enums/FilterCombinations';
|
|
5
|
-
import { SortingOptions } from '../../../enums/SortingOptions';
|
|
6
3
|
import { SingleValueSelectedForFilterRule } from '../../../common/rules/SingleValueSelectedForFilterRule';
|
|
7
4
|
import { OnlyFiltersSelectedRule } from '../../../common/rules/OnlyFiltersSelectedRule';
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisationsSeoIndexabilityPolicy';
|
|
6
|
+
import { IOrganisationsSeoDependencies } from '../../../organisations/types/IOrganisationsSeoDependencies';
|
|
7
|
+
export declare class RankedAreaDiscipline extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
8
|
+
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | SearchVolumeAreasDisciplineRule)[];
|
|
9
|
+
constructor(dependencies: IOrganisationsSeoDependencies);
|
|
11
10
|
get filterCombination(): FilterCombinations;
|
|
12
11
|
protected generateUrls(): Promise<string[]>;
|
|
13
12
|
}
|
|
@@ -1,25 +1,43 @@
|
|
|
1
|
-
import { OrganisationsSeoIndexabilityPolicy } from '../../../organisations/policies/OrganisationsSeoIndexabilityPolicy';
|
|
2
1
|
import { SearchVolumeAreasDisciplineRule } from '../../../organisations/rules/SearchVolumeAreasDisciplineRule';
|
|
3
|
-
import { AtLeastTwoRankedResultsRule } from '../../../organisations/rules/AtLeastTwoRankedResultsRule';
|
|
4
2
|
import { FilterCombinations } from '../../../enums/FilterCombinations';
|
|
5
3
|
import { FilterKey } from '@studyportals/search-filters';
|
|
6
|
-
import { SortingOptions } from '../../../enums/SortingOptions';
|
|
7
4
|
import { SingleValueSelectedForFilterRule } from '../../../common/rules/SingleValueSelectedForFilterRule';
|
|
8
5
|
import { OnlyFiltersSelectedRule } from '../../../common/rules/OnlyFiltersSelectedRule';
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
import { AreaPresenter } from '../../../presenters/AreaPresenter';
|
|
7
|
+
import { DisciplinePresenter } from '../../../presenters/DisciplinePresenter';
|
|
8
|
+
import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisationsSeoIndexabilityPolicy';
|
|
9
|
+
export class RankedAreaDiscipline extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
11
10
|
rules = [
|
|
12
11
|
new SingleValueSelectedForFilterRule(FilterKey.AREA),
|
|
13
12
|
new SingleValueSelectedForFilterRule(FilterKey.COUNTRY),
|
|
14
13
|
new SingleValueSelectedForFilterRule(FilterKey.DISCIPLINES),
|
|
15
14
|
new OnlyFiltersSelectedRule([FilterKey.AREA, FilterKey.COUNTRY, FilterKey.DISCIPLINES]),
|
|
16
|
-
new SearchVolumeAreasDisciplineRule()
|
|
17
|
-
new AtLeastTwoRankedResultsRule()
|
|
15
|
+
new SearchVolumeAreasDisciplineRule()
|
|
18
16
|
];
|
|
17
|
+
constructor(dependencies) {
|
|
18
|
+
super(dependencies);
|
|
19
|
+
this.addRankedResultsCountRule();
|
|
20
|
+
}
|
|
19
21
|
get filterCombination() {
|
|
20
|
-
return FilterCombinations.
|
|
22
|
+
return FilterCombinations.RANKED_AREA_DISCIPLINE;
|
|
21
23
|
}
|
|
22
|
-
generateUrls() {
|
|
23
|
-
|
|
24
|
+
async generateUrls() {
|
|
25
|
+
const areaFragments = AreaPresenter.getInstance().getFragments();
|
|
26
|
+
const disciplineFragments = DisciplinePresenter.getInstance().getFragments();
|
|
27
|
+
const paths = [];
|
|
28
|
+
for (const area of areaFragments) {
|
|
29
|
+
for (const discipline of disciplineFragments) {
|
|
30
|
+
const filterKeyValues = new Map([
|
|
31
|
+
[FilterKey.AREA, [area.id]],
|
|
32
|
+
[FilterKey.COUNTRY, [area.countryId]],
|
|
33
|
+
[FilterKey.DISCIPLINES, [discipline.id]]
|
|
34
|
+
]);
|
|
35
|
+
const result = await this.checkRulesForSitemap(filterKeyValues);
|
|
36
|
+
if (result) {
|
|
37
|
+
paths.push(this.getPathWithSortingOption(`${area.path}/${discipline.path}`));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return paths;
|
|
24
42
|
}
|
|
25
43
|
}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import { OrganisationsSeoIndexabilityPolicy } from '../../../organisations/policies/OrganisationsSeoIndexabilityPolicy';
|
|
2
|
-
import { AtLeastTwoRankedResultsRule } from '../../../organisations/rules/AtLeastTwoRankedResultsRule';
|
|
3
1
|
import { OnlineAttendanceRule } from '../../../organisations/rules/OnlineAttendanceRule';
|
|
4
2
|
import { FilterCombinations } from '../../../enums/FilterCombinations';
|
|
5
|
-
import { SortingOptions } from '../../../enums/SortingOptions';
|
|
6
3
|
import { SingleValueSelectedForFilterRule } from '../../../common/rules/SingleValueSelectedForFilterRule';
|
|
7
4
|
import { OnlyFiltersSelectedRule } from '../../../common/rules/OnlyFiltersSelectedRule';
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
import { RankedOrganisationsSeoIndexabilityPolicy } from '../RankedOrganisationsSeoIndexabilityPolicy';
|
|
6
|
+
import { IOrganisationsSeoDependencies } from '../../../organisations/types/IOrganisationsSeoDependencies';
|
|
7
|
+
export declare class RankedAttendance extends RankedOrganisationsSeoIndexabilityPolicy {
|
|
8
|
+
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | OnlineAttendanceRule)[];
|
|
9
|
+
constructor(dependencies: IOrganisationsSeoDependencies);
|
|
11
10
|
protected generateUrls(): Promise<string[]>;
|
|
12
11
|
get filterCombination(): FilterCombinations;
|
|
13
12
|
}
|