@studyportals/fawkes 8.0.2-2 → 8.0.2-21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/enums/FilterCombinations.d.ts +3 -0
- package/dist/src/enums/FilterCombinations.js +3 -0
- package/dist/src/programmes/SearchIndexabilityManager.js +4 -0
- package/dist/src/programmes/policies/AttendanceArea.js +1 -1
- package/dist/src/programmes/policies/AttendanceDegree.d.ts +2 -1
- package/dist/src/programmes/policies/AttendanceDegree.js +4 -5
- package/dist/src/programmes/policies/AttendanceDuration.d.ts +2 -1
- package/dist/src/programmes/policies/AttendanceDuration.js +3 -1
- package/dist/src/programmes/policies/AttendanceFormat.js +1 -1
- package/dist/src/programmes/policies/AttendanceTuitionFee.d.ts +2 -1
- package/dist/src/programmes/policies/AttendanceTuitionFee.js +4 -2
- package/dist/src/programmes/policies/ContinentDuration.d.ts +2 -1
- package/dist/src/programmes/policies/ContinentDuration.js +5 -3
- package/dist/src/programmes/policies/ContinentFormat.js +2 -2
- package/dist/src/programmes/policies/ContinentSpecialProgrammes.d.ts +2 -1
- package/dist/src/programmes/policies/ContinentSpecialProgrammes.js +4 -2
- package/dist/src/programmes/policies/CountrySpecialProgrammes.d.ts +2 -1
- package/dist/src/programmes/policies/CountrySpecialProgrammes.js +3 -1
- package/dist/src/programmes/policies/DegreeAreaTuitionFee.d.ts +2 -1
- package/dist/src/programmes/policies/DegreeAreaTuitionFee.js +5 -3
- package/dist/src/programmes/policies/DegreeAttendanceFormat.d.ts +3 -1
- package/dist/src/programmes/policies/DegreeAttendanceFormat.js +5 -1
- package/dist/src/programmes/policies/DegreeAttendanceSpecialProgrammes.d.ts +2 -1
- package/dist/src/programmes/policies/DegreeAttendanceSpecialProgrammes.js +6 -4
- package/dist/src/programmes/policies/DegreeAttendanceTuitionFee.d.ts +3 -1
- package/dist/src/programmes/policies/DegreeAttendanceTuitionFee.js +6 -2
- package/dist/src/programmes/policies/DegreeCountryAttendance.js +3 -3
- package/dist/src/programmes/policies/DegreeCountryTuitionFee.js +2 -2
- package/dist/src/programmes/policies/DegreeDuration.d.ts +2 -1
- package/dist/src/programmes/policies/DegreeDuration.js +3 -1
- package/dist/src/programmes/policies/DegreeFormatTuitionFee.d.ts +3 -1
- package/dist/src/programmes/policies/DegreeFormatTuitionFee.js +6 -2
- package/dist/src/programmes/policies/DegreeSpecialProgrammes.d.ts +3 -1
- package/dist/src/programmes/policies/DegreeSpecialProgrammes.js +4 -0
- package/dist/src/programmes/policies/DegreeTuitionFee.d.ts +2 -1
- package/dist/src/programmes/policies/DegreeTuitionFee.js +2 -0
- package/dist/src/programmes/policies/DisciplineCountryFormat.d.ts +2 -1
- package/dist/src/programmes/policies/DisciplineCountryFormat.js +2 -0
- package/dist/src/programmes/policies/DisciplineSpecialProgrammes.d.ts +2 -1
- package/dist/src/programmes/policies/DisciplineSpecialProgrammes.js +4 -2
- package/dist/src/programmes/policies/DisciplineTuitionFee.js +1 -1
- package/dist/src/programmes/policies/Duration.d.ts +2 -1
- package/dist/src/programmes/policies/Duration.js +3 -1
- package/dist/src/programmes/policies/SpecialProgrammes.js +1 -1
- package/dist/src/programmes/policies/index.d.ts +1 -0
- package/dist/src/programmes/policies/index.js +1 -0
- package/dist/src/programmes/rules/BlendedOrOnlineAttendanceRule.d.ts +6 -0
- package/dist/src/programmes/rules/BlendedOrOnlineAttendanceRule.js +18 -0
- package/dist/src/programmes/rules/ErasmusOrExecutiveSpecialProgrammeRule.d.ts +6 -0
- package/dist/src/programmes/rules/ErasmusOrExecutiveSpecialProgrammeRule.js +19 -0
- package/dist/src/programmes/rules/ErasmusSpecialProgrammeRule.d.ts +6 -0
- package/dist/src/programmes/rules/ErasmusSpecialProgrammeRule.js +19 -0
- package/dist/src/programmes/rules/ExecutiveSpecialProgrammeRule.d.ts +6 -0
- package/dist/src/programmes/rules/ExecutiveSpecialProgrammeRule.js +19 -0
- package/dist/src/programmes/rules/MinimumAmountOfResultsRule.js +0 -6
- package/dist/src/programmes/rules/OneOrTwoYearDurationRule.d.ts +6 -0
- package/dist/src/programmes/rules/OneOrTwoYearDurationRule.js +19 -0
- package/dist/src/programmes/rules/TwoYearDurationRule.d.ts +6 -0
- package/dist/src/programmes/rules/TwoYearDurationRule.js +19 -0
- package/dist/src/sitemap-generator/BaseSitemapUrlGeneratorManager.js +0 -1
- package/dist/src/sitemap-generator/ProgrammesSitemapUrlGeneratorManager.js +5 -2
- package/package.json +2 -2
|
@@ -15,6 +15,8 @@ export declare enum FilterCombinations {
|
|
|
15
15
|
COUNTRY_DURATION_DEGREE = "countryDurationDegree",
|
|
16
16
|
COUNTRY_SPECIAL_PROGRAMMES = "countrySpecialProgrammes",
|
|
17
17
|
CONTINENT_FORMAT = "continentFormat",
|
|
18
|
+
CONTINENT_DURATION = "continentDuration",
|
|
19
|
+
CONTINENT_SPECIAL_PROGRAMMES = "continentSpecialProgrammes",
|
|
18
20
|
DISCIPLINE_AREA = "disciplineArea",
|
|
19
21
|
DISCIPLINE_ATTENDANCE = "disciplineAttendance",
|
|
20
22
|
DISCIPLINE_COUNTRY = "disciplineCountry",
|
|
@@ -44,6 +46,7 @@ export declare enum FilterCombinations {
|
|
|
44
46
|
DEGREE_DURATION = "degreeDuration",
|
|
45
47
|
DEGREE_FORMAT_TUITION_FEE = "degreeFormatTuitionFee",
|
|
46
48
|
DEGREE_SPECIAL_PROGRAMMES = "degreeSpecialProgrammes",
|
|
49
|
+
DEGREE_ATTENDANCE_SPECIAL_PROGRAMMES = "degreeAttendanceSpecialProgrammes",
|
|
47
50
|
DISCIPLINE = "discipline",
|
|
48
51
|
UNFILTERED = "unfiltered",
|
|
49
52
|
UNIVERSITY_COUNTRY = "universityCountry",
|
|
@@ -16,6 +16,8 @@ export var FilterCombinations;
|
|
|
16
16
|
FilterCombinations["COUNTRY_DURATION_DEGREE"] = "countryDurationDegree";
|
|
17
17
|
FilterCombinations["COUNTRY_SPECIAL_PROGRAMMES"] = "countrySpecialProgrammes";
|
|
18
18
|
FilterCombinations["CONTINENT_FORMAT"] = "continentFormat";
|
|
19
|
+
FilterCombinations["CONTINENT_DURATION"] = "continentDuration";
|
|
20
|
+
FilterCombinations["CONTINENT_SPECIAL_PROGRAMMES"] = "continentSpecialProgrammes";
|
|
19
21
|
FilterCombinations["DISCIPLINE_AREA"] = "disciplineArea";
|
|
20
22
|
FilterCombinations["DISCIPLINE_ATTENDANCE"] = "disciplineAttendance";
|
|
21
23
|
FilterCombinations["DISCIPLINE_COUNTRY"] = "disciplineCountry";
|
|
@@ -45,6 +47,7 @@ export var FilterCombinations;
|
|
|
45
47
|
FilterCombinations["DEGREE_DURATION"] = "degreeDuration";
|
|
46
48
|
FilterCombinations["DEGREE_FORMAT_TUITION_FEE"] = "degreeFormatTuitionFee";
|
|
47
49
|
FilterCombinations["DEGREE_SPECIAL_PROGRAMMES"] = "degreeSpecialProgrammes";
|
|
50
|
+
FilterCombinations["DEGREE_ATTENDANCE_SPECIAL_PROGRAMMES"] = "degreeAttendanceSpecialProgrammes";
|
|
48
51
|
FilterCombinations["DISCIPLINE"] = "discipline";
|
|
49
52
|
FilterCombinations["UNFILTERED"] = "unfiltered";
|
|
50
53
|
FilterCombinations["UNIVERSITY_COUNTRY"] = "universityCountry";
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Area, Attendance, AttendanceDegree, Continent, ContinentTuitionFee, Country, CountryAttendance, CountryAttendanceDegree, CountryDegree, CountryDuration, CountryDurationDegree, CountryEducationalForm, CountryFormat, CountryTuitionFee, DegreeAttendanceDiscipline, DegreeCountryAttendance, DegreeCountryDiscipline, DegreeCountryTuitionFee, Discipline, DisciplineAttendance, DisciplineContinent, DisciplineCountry, DisciplineCountryEducationalForm, DisciplineDegree, DisciplineDuration, DisciplineEducationalForm, DisciplineFormat, DisciplineTuitionFee, DisciplineTuitionFeeAttendance, SpecialProgrammes, TuitionFee, Unfiltered, AttendanceArea, AttendanceContinent, AttendanceDuration, AttendanceFormat, AttendanceTuitionFee, ContinentDuration, ContinentFormat, ContinentSpecialProgrammes, CountrySpecialProgrammes, DegreeArea, DegreeAreaTuitionFee, DegreeAttendanceFormat, DegreeAttendanceTuitionFee, DegreeContinent, DegreeContinentTuitionFee, DegreeDuration, DegreeFormat, DegreeFormatTuitionFee, DegreeSpecialProgrammes, DegreeTuitionFee, DisciplineContinentAttendance, DisciplineCountryAttendance, DisciplineCountryFormat, Duration, Format } from './policies';
|
|
2
2
|
import { DependencyTypes } from '../enums/DependencyTypes';
|
|
3
3
|
import { Degree } from './policies/Degree';
|
|
4
|
+
import { DisciplineSpecialProgrammes } from './policies/DisciplineSpecialProgrammes';
|
|
5
|
+
import { DegreeAttendanceSpecialProgrammes } from './policies/DegreeAttendanceSpecialProgrammes';
|
|
4
6
|
export class SearchIndexabilityManager {
|
|
5
7
|
policies;
|
|
6
8
|
constructor(portalType, seoInfoBase, filterState, applicationState) {
|
|
@@ -31,6 +33,7 @@ export class SearchIndexabilityManager {
|
|
|
31
33
|
new DegreeCountryAttendance(dependencies),
|
|
32
34
|
new DegreeCountryDiscipline(dependencies),
|
|
33
35
|
new DegreeCountryTuitionFee(dependencies),
|
|
36
|
+
new DegreeAttendanceSpecialProgrammes(dependencies),
|
|
34
37
|
new Discipline(dependencies),
|
|
35
38
|
new DisciplineAttendance(dependencies),
|
|
36
39
|
new DisciplineContinent(dependencies),
|
|
@@ -43,6 +46,7 @@ export class SearchIndexabilityManager {
|
|
|
43
46
|
new DisciplineTuitionFee(dependencies),
|
|
44
47
|
new DisciplineTuitionFeeAttendance(dependencies),
|
|
45
48
|
new SpecialProgrammes(dependencies),
|
|
49
|
+
new DisciplineSpecialProgrammes(dependencies),
|
|
46
50
|
new TuitionFee(dependencies),
|
|
47
51
|
new Unfiltered(dependencies),
|
|
48
52
|
new CountrySpecialProgrammes(dependencies),
|
|
@@ -14,7 +14,7 @@ export class AttendanceArea extends ProgrammesBaseIndexabilityPolicy {
|
|
|
14
14
|
new SingleValueSelectedForFilterRule(FilterKey.AREA),
|
|
15
15
|
new SingleValueSelectedForFilterRule(FilterKey.COUNTRY),
|
|
16
16
|
new SingleValueSelectedForFilterRule(FilterKey.DELIVERY_METHOD),
|
|
17
|
-
new OnlyFiltersSelectedRule([FilterKey.AREA, FilterKey.DELIVERY_METHOD]),
|
|
17
|
+
new OnlyFiltersSelectedRule([FilterKey.AREA, FilterKey.COUNTRY, FilterKey.DELIVERY_METHOD]),
|
|
18
18
|
new OnlineAttendanceRule()
|
|
19
19
|
];
|
|
20
20
|
constructor(dependencies) {
|
|
@@ -5,11 +5,12 @@ import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
|
5
5
|
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
6
6
|
import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
|
|
7
7
|
import { IndexableDegreeRule } from '../rules/IndexableDegreeRule';
|
|
8
|
+
import { BlendedOrOnlineAttendanceRule } from '../rules/BlendedOrOnlineAttendanceRule';
|
|
8
9
|
export declare class AttendanceDegree extends ProgrammesBaseIndexabilityPolicy {
|
|
9
10
|
readonly name: string;
|
|
10
11
|
readonly description: string;
|
|
11
12
|
readonly filterKeys: FilterKey[];
|
|
12
|
-
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | IndexableDegreeRule)[];
|
|
13
|
+
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | IndexableDegreeRule | BlendedOrOnlineAttendanceRule)[];
|
|
13
14
|
constructor(dependencies: IProgrammeSeoDependencies);
|
|
14
15
|
protected generateUrls(): Promise<string[]>;
|
|
15
16
|
get filterCombination(): FilterCombinations;
|
|
@@ -6,6 +6,7 @@ import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityP
|
|
|
6
6
|
import { AttendancePresenter } from '../../presenters/AttendancePresenter';
|
|
7
7
|
import { DegreePresenter } from '../../presenters/DegreePresenter';
|
|
8
8
|
import { IndexableDegreeRule } from '../rules/IndexableDegreeRule';
|
|
9
|
+
import { BlendedOrOnlineAttendanceRule } from '../rules/BlendedOrOnlineAttendanceRule';
|
|
9
10
|
export class AttendanceDegree extends ProgrammesBaseIndexabilityPolicy {
|
|
10
11
|
name = 'Attendance Degree Type Policy';
|
|
11
12
|
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.';
|
|
@@ -14,7 +15,8 @@ export class AttendanceDegree extends ProgrammesBaseIndexabilityPolicy {
|
|
|
14
15
|
new SingleValueSelectedForFilterRule(FilterKey.DELIVERY_METHOD),
|
|
15
16
|
new SingleValueSelectedForFilterRule(FilterKey.DEGREE_TYPE),
|
|
16
17
|
new OnlyFiltersSelectedRule([FilterKey.DELIVERY_METHOD, FilterKey.DEGREE_TYPE]),
|
|
17
|
-
new IndexableDegreeRule()
|
|
18
|
+
new IndexableDegreeRule(),
|
|
19
|
+
new BlendedOrOnlineAttendanceRule()
|
|
18
20
|
];
|
|
19
21
|
constructor(dependencies) {
|
|
20
22
|
super(dependencies);
|
|
@@ -23,12 +25,9 @@ export class AttendanceDegree extends ProgrammesBaseIndexabilityPolicy {
|
|
|
23
25
|
async generateUrls() {
|
|
24
26
|
const attendanceFragments = AttendancePresenter.getInstance().getFragments();
|
|
25
27
|
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));
|
|
29
28
|
const paths = [];
|
|
30
29
|
for (const pageNumber of this.indexablePageNumbers) {
|
|
31
|
-
for (const attendance of
|
|
30
|
+
for (const attendance of attendanceFragments) {
|
|
32
31
|
for (const degree of degreeFragments) {
|
|
33
32
|
const filterKeyValues = new Map([
|
|
34
33
|
[FilterKey.DELIVERY_METHOD, [attendance.id]],
|
|
@@ -5,11 +5,12 @@ import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
|
5
5
|
import { OnlineAttendanceRule } from '../../common/rules/OnlineAttendanceRule';
|
|
6
6
|
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
7
7
|
import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
|
|
8
|
+
import { OneYearDurationRule } from '../../programmes/rules/OneYearDurationRule';
|
|
8
9
|
export declare class AttendanceDuration extends ProgrammesBaseIndexabilityPolicy {
|
|
9
10
|
readonly name: string;
|
|
10
11
|
readonly description: string;
|
|
11
12
|
readonly filterKeys: FilterKey[];
|
|
12
|
-
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | OnlineAttendanceRule)[];
|
|
13
|
+
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | OnlineAttendanceRule | OneYearDurationRule)[];
|
|
13
14
|
constructor(dependencies: IProgrammeSeoDependencies);
|
|
14
15
|
protected generateUrls(): Promise<string[]>;
|
|
15
16
|
get filterCombination(): FilterCombinations;
|
|
@@ -6,6 +6,7 @@ import { OnlineAttendanceRule } from '../../common/rules/OnlineAttendanceRule';
|
|
|
6
6
|
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
7
7
|
import { AttendancePresenter } from '../../presenters/AttendancePresenter';
|
|
8
8
|
import { DurationPresenter } from '../../presenters/DurationPresenter';
|
|
9
|
+
import { OneYearDurationRule } from '../../programmes/rules/OneYearDurationRule';
|
|
9
10
|
export class AttendanceDuration extends ProgrammesBaseIndexabilityPolicy {
|
|
10
11
|
name = 'Attendance Duration Type Policy';
|
|
11
12
|
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.';
|
|
@@ -14,7 +15,8 @@ export class AttendanceDuration extends ProgrammesBaseIndexabilityPolicy {
|
|
|
14
15
|
new SingleValueSelectedForFilterRule(FilterKey.DELIVERY_METHOD),
|
|
15
16
|
new SingleValueSelectedForFilterRule(FilterKey.DURATION),
|
|
16
17
|
new OnlyFiltersSelectedRule([FilterKey.DELIVERY_METHOD, FilterKey.DURATION]),
|
|
17
|
-
new OnlineAttendanceRule()
|
|
18
|
+
new OnlineAttendanceRule(),
|
|
19
|
+
new OneYearDurationRule()
|
|
18
20
|
];
|
|
19
21
|
constructor(dependencies) {
|
|
20
22
|
super(dependencies);
|
|
@@ -35,7 +35,7 @@ export class AttendanceFormat extends ProgrammesBaseIndexabilityPolicy {
|
|
|
35
35
|
]);
|
|
36
36
|
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
37
37
|
if (result) {
|
|
38
|
-
paths.push(this.getPathWithPageNumber(`${
|
|
38
|
+
paths.push(this.getPathWithPageNumber(`${format.path}/${attendance.path}`, pageNumber));
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
}
|
|
@@ -5,11 +5,12 @@ import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
|
5
5
|
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
6
6
|
import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
|
|
7
7
|
import { OnlineAttendanceRule } from '../../common/rules/OnlineAttendanceRule';
|
|
8
|
+
import { AffordableTuitionFeeRule } from '../rules/AffordableTuitionFeeRule';
|
|
8
9
|
export declare class AttendanceTuitionFee extends ProgrammesBaseIndexabilityPolicy {
|
|
9
10
|
readonly name: string;
|
|
10
11
|
readonly description: string;
|
|
11
12
|
readonly filterKeys: FilterKey[];
|
|
12
|
-
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | OnlineAttendanceRule)[];
|
|
13
|
+
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | OnlineAttendanceRule | AffordableTuitionFeeRule)[];
|
|
13
14
|
constructor(dependencies: IProgrammeSeoDependencies);
|
|
14
15
|
protected generateUrls(): Promise<string[]>;
|
|
15
16
|
get filterCombination(): FilterCombinations;
|
|
@@ -7,6 +7,7 @@ import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityP
|
|
|
7
7
|
import { TuitionFeePresenter } from '../../presenters/TuitionFeePresenter';
|
|
8
8
|
import { AttendancePresenter } from '../../presenters/AttendancePresenter';
|
|
9
9
|
import { OnlineAttendanceRule } from '../../common/rules/OnlineAttendanceRule';
|
|
10
|
+
import { AffordableTuitionFeeRule } from '../rules/AffordableTuitionFeeRule';
|
|
10
11
|
export class AttendanceTuitionFee extends ProgrammesBaseIndexabilityPolicy {
|
|
11
12
|
name = 'Tuition Fee Attendance Policy';
|
|
12
13
|
description = 'Determines indexing rules for pages filtered by tuition fee and attendance.';
|
|
@@ -15,7 +16,8 @@ export class AttendanceTuitionFee extends ProgrammesBaseIndexabilityPolicy {
|
|
|
15
16
|
new SingleValueSelectedForFilterRule(FilterKey.DELIVERY_METHOD),
|
|
16
17
|
new SingleValueSelectedForFilterRule(FilterKey.TUITION_FEE),
|
|
17
18
|
new OnlyFiltersSelectedRule([FilterKey.DELIVERY_METHOD, FilterKey.TUITION_FEE]),
|
|
18
|
-
new OnlineAttendanceRule()
|
|
19
|
+
new OnlineAttendanceRule(),
|
|
20
|
+
new AffordableTuitionFeeRule()
|
|
19
21
|
];
|
|
20
22
|
constructor(dependencies) {
|
|
21
23
|
super(dependencies);
|
|
@@ -37,7 +39,7 @@ export class AttendanceTuitionFee extends ProgrammesBaseIndexabilityPolicy {
|
|
|
37
39
|
]);
|
|
38
40
|
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
39
41
|
if (result) {
|
|
40
|
-
paths.push(this.getPathWithPageNumber(`${
|
|
42
|
+
paths.push(this.getPathWithPageNumber(`${affordableTuition.path}/${attendance.path}`, pageNumber));
|
|
41
43
|
}
|
|
42
44
|
}
|
|
43
45
|
}
|
|
@@ -4,11 +4,12 @@ import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValue
|
|
|
4
4
|
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
5
|
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
6
6
|
import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
|
|
7
|
+
import { OneYearDurationRule } from '../rules/OneYearDurationRule';
|
|
7
8
|
export declare class ContinentDuration extends ProgrammesBaseIndexabilityPolicy {
|
|
8
9
|
readonly name: string;
|
|
9
10
|
readonly description: string;
|
|
10
11
|
readonly filterKeys: FilterKey[];
|
|
11
|
-
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule)[];
|
|
12
|
+
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | OneYearDurationRule)[];
|
|
12
13
|
constructor(dependencies: IProgrammeSeoDependencies);
|
|
13
14
|
protected generateUrls(): Promise<string[]>;
|
|
14
15
|
get filterCombination(): FilterCombinations;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { FilterKey } from '@studyportals/search-filters/server-side';
|
|
1
|
+
import { DurationFilterOptionValue, FilterKey } from '@studyportals/search-filters/server-side';
|
|
2
2
|
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
3
|
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
4
|
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
5
|
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
6
6
|
import { ContinentPresenter } from '../../presenters/ContinentPresenter';
|
|
7
7
|
import { DurationPresenter } from '../../presenters/DurationPresenter';
|
|
8
|
+
import { OneYearDurationRule } from '../rules/OneYearDurationRule';
|
|
8
9
|
export class ContinentDuration extends ProgrammesBaseIndexabilityPolicy {
|
|
9
10
|
name = 'Continent Duration Policy';
|
|
10
11
|
description = 'Determines indexing rules for pages filtered by continent and duration (1 year).';
|
|
@@ -13,6 +14,7 @@ export class ContinentDuration extends ProgrammesBaseIndexabilityPolicy {
|
|
|
13
14
|
new SingleValueSelectedForFilterRule(FilterKey.DURATION),
|
|
14
15
|
new SingleValueSelectedForFilterRule(FilterKey.CONTINENT),
|
|
15
16
|
new OnlyFiltersSelectedRule([FilterKey.DURATION, FilterKey.CONTINENT]),
|
|
17
|
+
new OneYearDurationRule()
|
|
16
18
|
];
|
|
17
19
|
constructor(dependencies) {
|
|
18
20
|
super(dependencies);
|
|
@@ -22,7 +24,7 @@ export class ContinentDuration extends ProgrammesBaseIndexabilityPolicy {
|
|
|
22
24
|
const durationFragments = DurationPresenter.getInstance().getFragments();
|
|
23
25
|
const continentFragments = ContinentPresenter.getInstance().getFragments();
|
|
24
26
|
const paths = [];
|
|
25
|
-
const allowedDurationIds = [
|
|
27
|
+
const allowedDurationIds = [DurationFilterOptionValue.ONE_YEAR];
|
|
26
28
|
const allowedDurations = durationFragments.filter(duration => allowedDurationIds.includes(duration.id));
|
|
27
29
|
for (const pageNumber of this.indexablePageNumbers) {
|
|
28
30
|
for (const duration of allowedDurations) {
|
|
@@ -41,6 +43,6 @@ export class ContinentDuration extends ProgrammesBaseIndexabilityPolicy {
|
|
|
41
43
|
return paths;
|
|
42
44
|
}
|
|
43
45
|
get filterCombination() {
|
|
44
|
-
return FilterCombinations.
|
|
46
|
+
return FilterCombinations.CONTINENT_DURATION;
|
|
45
47
|
}
|
|
46
48
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FilterKey } from '@studyportals/search-filters/server-side';
|
|
1
|
+
import { FilterKey, FormatFilterOptionValue } from '@studyportals/search-filters/server-side';
|
|
2
2
|
import { OnlyFiltersSelectedRule } from '../../common/rules/OnlyFiltersSelectedRule';
|
|
3
3
|
import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValueSelectedForFilterRule';
|
|
4
4
|
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
@@ -24,7 +24,7 @@ export class ContinentFormat extends ProgrammesBaseIndexabilityPolicy {
|
|
|
24
24
|
const formatFragments = FormatPresenter.getInstance().getFragments();
|
|
25
25
|
const continentFragments = ContinentPresenter.getInstance().getFragments();
|
|
26
26
|
const paths = [];
|
|
27
|
-
const allowedFormatIds = [
|
|
27
|
+
const allowedFormatIds = [FormatFilterOptionValue.PART_TIME];
|
|
28
28
|
const allowedFormats = formatFragments.filter(format => allowedFormatIds.includes(format.id));
|
|
29
29
|
for (const pageNumber of this.indexablePageNumbers) {
|
|
30
30
|
for (const format of allowedFormats) {
|
|
@@ -4,11 +4,12 @@ import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValue
|
|
|
4
4
|
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
5
|
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
6
6
|
import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
|
|
7
|
+
import { ErasmusSpecialProgrammeRule } from '../../programmes/rules/ErasmusSpecialProgrammeRule';
|
|
7
8
|
export declare class ContinentSpecialProgrammes extends ProgrammesBaseIndexabilityPolicy {
|
|
8
9
|
readonly name: string;
|
|
9
10
|
readonly description: string;
|
|
10
11
|
readonly filterKeys: FilterKey[];
|
|
11
|
-
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule)[];
|
|
12
|
+
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | ErasmusSpecialProgrammeRule)[];
|
|
12
13
|
constructor(dependencies: IProgrammeSeoDependencies);
|
|
13
14
|
protected generateUrls(): Promise<string[]>;
|
|
14
15
|
get filterCombination(): FilterCombinations;
|
|
@@ -5,6 +5,7 @@ import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
|
5
5
|
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
6
6
|
import { ContinentPresenter } from '../../presenters/ContinentPresenter';
|
|
7
7
|
import { SpecialProgrammesPresenter } from '../../presenters/SpecialProgrammesPresenter';
|
|
8
|
+
import { ErasmusSpecialProgrammeRule } from '../../programmes/rules/ErasmusSpecialProgrammeRule';
|
|
8
9
|
export class ContinentSpecialProgrammes extends ProgrammesBaseIndexabilityPolicy {
|
|
9
10
|
name = 'Continent Special Programmes Policy';
|
|
10
11
|
description = 'Determines indexing rules for pages filtered by continent and special programmes (Erasmus Mundus).';
|
|
@@ -13,6 +14,7 @@ export class ContinentSpecialProgrammes extends ProgrammesBaseIndexabilityPolicy
|
|
|
13
14
|
new SingleValueSelectedForFilterRule(FilterKey.SPECIAL_PROGRAMMES),
|
|
14
15
|
new SingleValueSelectedForFilterRule(FilterKey.CONTINENT),
|
|
15
16
|
new OnlyFiltersSelectedRule([FilterKey.SPECIAL_PROGRAMMES, FilterKey.CONTINENT]),
|
|
17
|
+
new ErasmusSpecialProgrammeRule()
|
|
16
18
|
];
|
|
17
19
|
constructor(dependencies) {
|
|
18
20
|
super(dependencies);
|
|
@@ -33,7 +35,7 @@ export class ContinentSpecialProgrammes extends ProgrammesBaseIndexabilityPolicy
|
|
|
33
35
|
]);
|
|
34
36
|
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
35
37
|
if (result) {
|
|
36
|
-
paths.push(this.getPathWithPageNumber(`${
|
|
38
|
+
paths.push(this.getPathWithPageNumber(`${specialProgramme.path}/${continent.path}`, pageNumber));
|
|
37
39
|
}
|
|
38
40
|
}
|
|
39
41
|
}
|
|
@@ -41,6 +43,6 @@ export class ContinentSpecialProgrammes extends ProgrammesBaseIndexabilityPolicy
|
|
|
41
43
|
return paths;
|
|
42
44
|
}
|
|
43
45
|
get filterCombination() {
|
|
44
|
-
return FilterCombinations.
|
|
46
|
+
return FilterCombinations.CONTINENT_SPECIAL_PROGRAMMES;
|
|
45
47
|
}
|
|
46
48
|
}
|
|
@@ -4,11 +4,12 @@ import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValue
|
|
|
4
4
|
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
5
|
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
6
6
|
import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
|
|
7
|
+
import { ErasmusSpecialProgrammeRule } from '../../programmes/rules/ErasmusSpecialProgrammeRule';
|
|
7
8
|
export declare class CountrySpecialProgrammes extends ProgrammesBaseIndexabilityPolicy {
|
|
8
9
|
readonly name: string;
|
|
9
10
|
readonly description: string;
|
|
10
11
|
readonly filterKeys: FilterKey[];
|
|
11
|
-
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule)[];
|
|
12
|
+
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | ErasmusSpecialProgrammeRule)[];
|
|
12
13
|
constructor(dependencies: IProgrammeSeoDependencies);
|
|
13
14
|
protected generateUrls(): Promise<string[]>;
|
|
14
15
|
get filterCombination(): FilterCombinations;
|
|
@@ -5,6 +5,7 @@ import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
|
5
5
|
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
6
6
|
import { CountryPresenter } from '../../presenters/CountryPresenter';
|
|
7
7
|
import { SpecialProgrammesPresenter } from '../../presenters/SpecialProgrammesPresenter';
|
|
8
|
+
import { ErasmusSpecialProgrammeRule } from '../../programmes/rules/ErasmusSpecialProgrammeRule';
|
|
8
9
|
export class CountrySpecialProgrammes extends ProgrammesBaseIndexabilityPolicy {
|
|
9
10
|
name = 'Country Special Programmes Policy';
|
|
10
11
|
description = 'Determines indexing rules for pages filtered by country and special programmes (Joint).';
|
|
@@ -13,6 +14,7 @@ export class CountrySpecialProgrammes extends ProgrammesBaseIndexabilityPolicy {
|
|
|
13
14
|
new SingleValueSelectedForFilterRule(FilterKey.SPECIAL_PROGRAMMES),
|
|
14
15
|
new SingleValueSelectedForFilterRule(FilterKey.COUNTRY),
|
|
15
16
|
new OnlyFiltersSelectedRule([FilterKey.SPECIAL_PROGRAMMES, FilterKey.COUNTRY]),
|
|
17
|
+
new ErasmusSpecialProgrammeRule()
|
|
16
18
|
];
|
|
17
19
|
constructor(dependencies) {
|
|
18
20
|
super(dependencies);
|
|
@@ -33,7 +35,7 @@ export class CountrySpecialProgrammes extends ProgrammesBaseIndexabilityPolicy {
|
|
|
33
35
|
]);
|
|
34
36
|
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
35
37
|
if (result) {
|
|
36
|
-
paths.push(this.getPathWithPageNumber(`${
|
|
38
|
+
paths.push(this.getPathWithPageNumber(`${specialProgramme.path}/${country.path}`, pageNumber));
|
|
37
39
|
}
|
|
38
40
|
}
|
|
39
41
|
}
|
|
@@ -4,11 +4,12 @@ import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValue
|
|
|
4
4
|
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
5
|
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
6
6
|
import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
|
|
7
|
+
import { AffordableTuitionFeeRule } from '../rules/AffordableTuitionFeeRule';
|
|
7
8
|
export declare class DegreeAreaTuitionFee extends ProgrammesBaseIndexabilityPolicy {
|
|
8
9
|
readonly name: string;
|
|
9
10
|
readonly description: string;
|
|
10
11
|
readonly filterKeys: FilterKey[];
|
|
11
|
-
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule)[];
|
|
12
|
+
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | AffordableTuitionFeeRule)[];
|
|
12
13
|
constructor(dependencies: IProgrammeSeoDependencies);
|
|
13
14
|
protected generateUrls(): Promise<string[]>;
|
|
14
15
|
get filterCombination(): FilterCombinations;
|
|
@@ -6,16 +6,18 @@ import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityP
|
|
|
6
6
|
import { AreaPresenter } from '../../presenters/AreaPresenter';
|
|
7
7
|
import { DegreePresenter } from '../../presenters/DegreePresenter';
|
|
8
8
|
import { TuitionFeePresenter } from '../../presenters/TuitionFeePresenter';
|
|
9
|
+
import { AffordableTuitionFeeRule } from '../rules/AffordableTuitionFeeRule';
|
|
9
10
|
export class DegreeAreaTuitionFee extends ProgrammesBaseIndexabilityPolicy {
|
|
10
11
|
name = 'Degree Area Tuition fee Policy';
|
|
11
12
|
description = 'Controls indexing of pages filtered by geographic areas and tuition fees.';
|
|
12
|
-
filterKeys = [FilterKey.AREA, FilterKey.TUITION_FEE];
|
|
13
|
+
filterKeys = [FilterKey.AREA, FilterKey.DEGREE_TYPE, FilterKey.TUITION_FEE, FilterKey.COUNTRY];
|
|
13
14
|
rules = [
|
|
14
15
|
new SingleValueSelectedForFilterRule(FilterKey.AREA),
|
|
15
16
|
new SingleValueSelectedForFilterRule(FilterKey.COUNTRY),
|
|
16
17
|
new SingleValueSelectedForFilterRule(FilterKey.DEGREE_TYPE),
|
|
17
18
|
new SingleValueSelectedForFilterRule(FilterKey.TUITION_FEE),
|
|
18
|
-
new OnlyFiltersSelectedRule([FilterKey.AREA, FilterKey.DEGREE_TYPE, FilterKey.TUITION_FEE])
|
|
19
|
+
new OnlyFiltersSelectedRule([FilterKey.AREA, FilterKey.COUNTRY, FilterKey.DEGREE_TYPE, FilterKey.TUITION_FEE]),
|
|
20
|
+
new AffordableTuitionFeeRule()
|
|
19
21
|
];
|
|
20
22
|
constructor(dependencies) {
|
|
21
23
|
super(dependencies);
|
|
@@ -38,7 +40,7 @@ export class DegreeAreaTuitionFee extends ProgrammesBaseIndexabilityPolicy {
|
|
|
38
40
|
]);
|
|
39
41
|
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
40
42
|
if (result) {
|
|
41
|
-
paths.push(this.getPathWithPageNumber(`${degree.path}/${
|
|
43
|
+
paths.push(this.getPathWithPageNumber(`${degree.path}/${tuitionFee.path}/${area.path}`, pageNumber));
|
|
42
44
|
}
|
|
43
45
|
}
|
|
44
46
|
}
|
|
@@ -4,11 +4,13 @@ import { SingleValueSelectedForFilterRule } from '../../common/rules/SingleValue
|
|
|
4
4
|
import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
5
5
|
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
6
6
|
import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
|
|
7
|
+
import { OnlineAttendanceRule } from '../../common/rules/OnlineAttendanceRule';
|
|
8
|
+
import { PartTimeFormatRule } from '../rules/PartTimeFormatRule';
|
|
7
9
|
export declare class DegreeAttendanceFormat extends ProgrammesBaseIndexabilityPolicy {
|
|
8
10
|
readonly name: string;
|
|
9
11
|
readonly description: string;
|
|
10
12
|
readonly filterKeys: FilterKey[];
|
|
11
|
-
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule)[];
|
|
13
|
+
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | OnlineAttendanceRule | PartTimeFormatRule)[];
|
|
12
14
|
constructor(dependencies: IProgrammeSeoDependencies);
|
|
13
15
|
protected generateUrls(): Promise<string[]>;
|
|
14
16
|
get filterCombination(): FilterCombinations;
|
|
@@ -6,6 +6,8 @@ import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityP
|
|
|
6
6
|
import { DegreePresenter } from '../../presenters/DegreePresenter';
|
|
7
7
|
import { AttendancePresenter } from '../../presenters/AttendancePresenter';
|
|
8
8
|
import { FormatPresenter } from '../../presenters/FormatPresenter';
|
|
9
|
+
import { OnlineAttendanceRule } from '../../common/rules/OnlineAttendanceRule';
|
|
10
|
+
import { PartTimeFormatRule } from '../rules/PartTimeFormatRule';
|
|
9
11
|
export class DegreeAttendanceFormat extends ProgrammesBaseIndexabilityPolicy {
|
|
10
12
|
name = 'Degree Attendance Format Policy';
|
|
11
13
|
description = 'Determines indexing rules for pages filtered by degree type, attendance, and format.';
|
|
@@ -15,6 +17,8 @@ export class DegreeAttendanceFormat extends ProgrammesBaseIndexabilityPolicy {
|
|
|
15
17
|
new SingleValueSelectedForFilterRule(FilterKey.DELIVERY_METHOD),
|
|
16
18
|
new SingleValueSelectedForFilterRule(FilterKey.ATTENDANCE),
|
|
17
19
|
new OnlyFiltersSelectedRule([FilterKey.DEGREE_TYPE, FilterKey.DELIVERY_METHOD, FilterKey.ATTENDANCE]),
|
|
20
|
+
new OnlineAttendanceRule(),
|
|
21
|
+
new PartTimeFormatRule()
|
|
18
22
|
];
|
|
19
23
|
constructor(dependencies) {
|
|
20
24
|
super(dependencies);
|
|
@@ -38,7 +42,7 @@ export class DegreeAttendanceFormat extends ProgrammesBaseIndexabilityPolicy {
|
|
|
38
42
|
]);
|
|
39
43
|
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
40
44
|
if (result) {
|
|
41
|
-
paths.push(this.getPathWithPageNumber(`${degree.path}/${
|
|
45
|
+
paths.push(this.getPathWithPageNumber(`${degree.path}/${format.path}/${attendance.path}`, pageNumber));
|
|
42
46
|
}
|
|
43
47
|
}
|
|
44
48
|
}
|
|
@@ -5,11 +5,12 @@ import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
|
5
5
|
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
6
6
|
import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
|
|
7
7
|
import { OnlineAttendanceRule } from '../../common/rules/OnlineAttendanceRule';
|
|
8
|
+
import { ExecutiveSpecialProgrammeRule } from '../rules/ExecutiveSpecialProgrammeRule';
|
|
8
9
|
export declare class DegreeAttendanceSpecialProgrammes extends ProgrammesBaseIndexabilityPolicy {
|
|
9
10
|
readonly name: string;
|
|
10
11
|
readonly description: string;
|
|
11
12
|
readonly filterKeys: FilterKey[];
|
|
12
|
-
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | OnlineAttendanceRule)[];
|
|
13
|
+
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | OnlineAttendanceRule | ExecutiveSpecialProgrammeRule)[];
|
|
13
14
|
constructor(dependencies: IProgrammeSeoDependencies);
|
|
14
15
|
protected generateUrls(): Promise<string[]>;
|
|
15
16
|
get filterCombination(): FilterCombinations;
|
|
@@ -7,6 +7,7 @@ import { DegreePresenter } from '../../presenters/DegreePresenter';
|
|
|
7
7
|
import { SpecialProgrammesPresenter } from '../../presenters/SpecialProgrammesPresenter';
|
|
8
8
|
import { OnlineAttendanceRule } from '../../common/rules/OnlineAttendanceRule';
|
|
9
9
|
import { AttendancePresenter } from '../../presenters/AttendancePresenter';
|
|
10
|
+
import { ExecutiveSpecialProgrammeRule } from '../rules/ExecutiveSpecialProgrammeRule';
|
|
10
11
|
export class DegreeAttendanceSpecialProgrammes extends ProgrammesBaseIndexabilityPolicy {
|
|
11
12
|
name = 'Degree Attendance Special Programmes Policy';
|
|
12
13
|
description = 'Determines indexing rules for pages filtered by special programmes, attendance(online) and degree type.';
|
|
@@ -15,8 +16,9 @@ export class DegreeAttendanceSpecialProgrammes extends ProgrammesBaseIndexabilit
|
|
|
15
16
|
new SingleValueSelectedForFilterRule(FilterKey.DEGREE_TYPE),
|
|
16
17
|
new SingleValueSelectedForFilterRule(FilterKey.SPECIAL_PROGRAMMES),
|
|
17
18
|
new SingleValueSelectedForFilterRule(FilterKey.DELIVERY_METHOD),
|
|
18
|
-
new OnlyFiltersSelectedRule([FilterKey.DEGREE_TYPE, FilterKey.SPECIAL_PROGRAMMES]),
|
|
19
|
-
new OnlineAttendanceRule()
|
|
19
|
+
new OnlyFiltersSelectedRule([FilterKey.DEGREE_TYPE, FilterKey.SPECIAL_PROGRAMMES, FilterKey.DELIVERY_METHOD]),
|
|
20
|
+
new OnlineAttendanceRule(),
|
|
21
|
+
new ExecutiveSpecialProgrammeRule()
|
|
20
22
|
];
|
|
21
23
|
constructor(dependencies) {
|
|
22
24
|
super(dependencies);
|
|
@@ -42,7 +44,7 @@ export class DegreeAttendanceSpecialProgrammes extends ProgrammesBaseIndexabilit
|
|
|
42
44
|
]);
|
|
43
45
|
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
44
46
|
if (result) {
|
|
45
|
-
paths.push(this.getPathWithPageNumber(`${degree.path}/${
|
|
47
|
+
paths.push(this.getPathWithPageNumber(`${degree.path}/${specialProgramme.path}/${attendance.path}`, pageNumber));
|
|
46
48
|
}
|
|
47
49
|
}
|
|
48
50
|
}
|
|
@@ -51,6 +53,6 @@ export class DegreeAttendanceSpecialProgrammes extends ProgrammesBaseIndexabilit
|
|
|
51
53
|
return paths;
|
|
52
54
|
}
|
|
53
55
|
get filterCombination() {
|
|
54
|
-
return FilterCombinations.
|
|
56
|
+
return FilterCombinations.DEGREE_ATTENDANCE_SPECIAL_PROGRAMMES;
|
|
55
57
|
}
|
|
56
58
|
}
|
|
@@ -5,11 +5,13 @@ import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
|
5
5
|
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
6
6
|
import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
|
|
7
7
|
import { OnlineAttendanceRule } from '../../common/rules/OnlineAttendanceRule';
|
|
8
|
+
import { IndexableDegreeRule } from '../rules/IndexableDegreeRule';
|
|
9
|
+
import { AffordableTuitionFeeRule } from '../rules/AffordableTuitionFeeRule';
|
|
8
10
|
export declare class DegreeAttendanceTuitionFee extends ProgrammesBaseIndexabilityPolicy {
|
|
9
11
|
readonly name: string;
|
|
10
12
|
readonly description: string;
|
|
11
13
|
readonly filterKeys: FilterKey[];
|
|
12
|
-
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | OnlineAttendanceRule)[];
|
|
14
|
+
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | OnlineAttendanceRule | IndexableDegreeRule | AffordableTuitionFeeRule)[];
|
|
13
15
|
constructor(dependencies: IProgrammeSeoDependencies);
|
|
14
16
|
protected generateUrls(): Promise<string[]>;
|
|
15
17
|
get filterCombination(): FilterCombinations;
|
|
@@ -8,6 +8,8 @@ import { DegreePresenter } from '../../presenters/DegreePresenter';
|
|
|
8
8
|
import { TuitionFeePresenter } from '../../presenters/TuitionFeePresenter';
|
|
9
9
|
import { AttendancePresenter } from '../../presenters/AttendancePresenter';
|
|
10
10
|
import { OnlineAttendanceRule } from '../../common/rules/OnlineAttendanceRule';
|
|
11
|
+
import { IndexableDegreeRule } from '../rules/IndexableDegreeRule';
|
|
12
|
+
import { AffordableTuitionFeeRule } from '../rules/AffordableTuitionFeeRule';
|
|
11
13
|
export class DegreeAttendanceTuitionFee extends ProgrammesBaseIndexabilityPolicy {
|
|
12
14
|
name = 'Tuition Fee Attendance Degree Policy';
|
|
13
15
|
description = 'Determines indexing rules for pages filtered by tuition fee, attendance, and degree type.';
|
|
@@ -17,7 +19,9 @@ export class DegreeAttendanceTuitionFee extends ProgrammesBaseIndexabilityPolicy
|
|
|
17
19
|
new SingleValueSelectedForFilterRule(FilterKey.DELIVERY_METHOD),
|
|
18
20
|
new SingleValueSelectedForFilterRule(FilterKey.TUITION_FEE),
|
|
19
21
|
new OnlyFiltersSelectedRule([FilterKey.DEGREE_TYPE, FilterKey.DELIVERY_METHOD, FilterKey.TUITION_FEE]),
|
|
20
|
-
new
|
|
22
|
+
new IndexableDegreeRule(),
|
|
23
|
+
new OnlineAttendanceRule(),
|
|
24
|
+
new AffordableTuitionFeeRule()
|
|
21
25
|
];
|
|
22
26
|
constructor(dependencies) {
|
|
23
27
|
super(dependencies);
|
|
@@ -42,7 +46,7 @@ export class DegreeAttendanceTuitionFee extends ProgrammesBaseIndexabilityPolicy
|
|
|
42
46
|
]);
|
|
43
47
|
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
44
48
|
if (result) {
|
|
45
|
-
paths.push(this.getPathWithPageNumber(`${degree.path}/${
|
|
49
|
+
paths.push(this.getPathWithPageNumber(`${degree.path}/${affordableTuition.path}/${attendance.path}`, pageNumber));
|
|
46
50
|
}
|
|
47
51
|
}
|
|
48
52
|
}
|
|
@@ -47,7 +47,7 @@ export class DegreeCountryAttendance extends ProgrammesBaseIndexabilityPolicy {
|
|
|
47
47
|
]);
|
|
48
48
|
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
49
49
|
if (result) {
|
|
50
|
-
paths.push(this.getPathWithPageNumber(`${mba.path}/${
|
|
50
|
+
paths.push(this.getPathWithPageNumber(`${mba.path}/${onlineAttendance.path}/${country.path}`, pageNumber));
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
}
|
|
@@ -61,7 +61,7 @@ export class DegreeCountryAttendance extends ProgrammesBaseIndexabilityPolicy {
|
|
|
61
61
|
]);
|
|
62
62
|
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
63
63
|
if (result) {
|
|
64
|
-
paths.push(this.getPathWithPageNumber(`${llm.path}/${
|
|
64
|
+
paths.push(this.getPathWithPageNumber(`${llm.path}/${onlineAttendance.path}/${country.path}`, pageNumber));
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
}
|
|
@@ -75,7 +75,7 @@ export class DegreeCountryAttendance extends ProgrammesBaseIndexabilityPolicy {
|
|
|
75
75
|
]);
|
|
76
76
|
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
77
77
|
if (result) {
|
|
78
|
-
paths.push(this.getPathWithPageNumber(`${mphil.path}/${
|
|
78
|
+
paths.push(this.getPathWithPageNumber(`${mphil.path}/${onlineAttendance.path}/${country.path}`, pageNumber));
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
}
|
|
@@ -46,7 +46,7 @@ export class DegreeCountryTuitionFee extends ProgrammesBaseIndexabilityPolicy {
|
|
|
46
46
|
]);
|
|
47
47
|
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
48
48
|
if (result) {
|
|
49
|
-
paths.push(this.getPathWithPageNumber(`${mba.path}/${
|
|
49
|
+
paths.push(this.getPathWithPageNumber(`${mba.path}/${affordableTuition.path}/${country.path}`, pageNumber));
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
}
|
|
@@ -60,7 +60,7 @@ export class DegreeCountryTuitionFee extends ProgrammesBaseIndexabilityPolicy {
|
|
|
60
60
|
]);
|
|
61
61
|
const result = await this.checkRulesForSitemapWithPageNumber(filterKeyValues, pageNumber);
|
|
62
62
|
if (result) {
|
|
63
|
-
paths.push(this.getPathWithPageNumber(`${llm.path}/${
|
|
63
|
+
paths.push(this.getPathWithPageNumber(`${llm.path}/${affordableTuition.path}/${country.path}`, pageNumber));
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
}
|
|
@@ -5,11 +5,12 @@ import { FilterCombinations } from '../../enums/FilterCombinations';
|
|
|
5
5
|
import { IndexableDegreeRule } from '../rules/IndexableDegreeRule';
|
|
6
6
|
import { ProgrammesBaseIndexabilityPolicy } from '../ProgrammesBaseIndexabilityPolicy';
|
|
7
7
|
import { IProgrammeSeoDependencies } from '../types/IProgrammeSeoDependencies';
|
|
8
|
+
import { OneOrTwoYearDurationRule } from '../rules/OneOrTwoYearDurationRule';
|
|
8
9
|
export declare class DegreeDuration extends ProgrammesBaseIndexabilityPolicy {
|
|
9
10
|
readonly name: string;
|
|
10
11
|
readonly description: string;
|
|
11
12
|
readonly filterKeys: FilterKey[];
|
|
12
|
-
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | IndexableDegreeRule)[];
|
|
13
|
+
protected readonly rules: (SingleValueSelectedForFilterRule | OnlyFiltersSelectedRule | IndexableDegreeRule | OneOrTwoYearDurationRule)[];
|
|
13
14
|
constructor(dependencies: IProgrammeSeoDependencies);
|
|
14
15
|
protected generateUrls(): Promise<string[]>;
|
|
15
16
|
get filterCombination(): FilterCombinations;
|