Skip to content

Commit 532c5a8

Browse files
[O2B-1547] Migrate lhc period overview model to use filtering model pattern (#2105)
* pdpBeamTypesFilterModel, namesFilterModel and yearsFilterModel are now stored in a FilteringModel instance * pdpBeamTypesFilterModel, namesFilterModel and yearsFilterModel must now be accessed using the FilteringModel.get() funtion
1 parent 07d29e7 commit 532c5a8

2 files changed

Lines changed: 29 additions & 62 deletions

File tree

lib/public/views/lhcPeriods/ActiveColumns/lhcPeriodsActiveColumns.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ export const lhcPeriodsActiveColumns = {
3030
name: 'Name',
3131
visible: true,
3232
sortable: true,
33-
filter: ({ namesFilterModel }) => textFilter(
34-
namesFilterModel,
33+
filter: ({ filteringModel }) => textFilter(
34+
filteringModel.get('names'),
3535
{ class: 'w-75 mt1', placeholder: 'e.g. LHC22a, lhc23b, ...' },
3636
),
3737
classes: 'w-15',
@@ -92,8 +92,8 @@ export const lhcPeriodsActiveColumns = {
9292
visible: true,
9393
sortable: true,
9494
format: (_, lhcPeriod) => formatLhcPeriodYear(lhcPeriod.name),
95-
filter: ({ yearsFilterModel }) => textFilter(
96-
yearsFilterModel,
95+
filter: ({ filteringModel }) => textFilter(
96+
filteringModel.get('years'),
9797
{ class: 'w-75 mt1', placeholder: 'e.g. 2022, 2023, ...' },
9898
),
9999
classes: 'w-7',
@@ -104,8 +104,8 @@ export const lhcPeriodsActiveColumns = {
104104
visible: true,
105105
sortable: true,
106106
format: (pdpBeamTypes) => pdpBeamTypes.length > 0 ? pdpBeamTypes.join(',') : '-',
107-
filter: ({ pdpBeamTypesFilterModel }) => textFilter(
108-
pdpBeamTypesFilterModel,
107+
filter: ({ filteringModel }) => textFilter(
108+
filteringModel.get('pdpBeamTypes'),
109109
{ class: 'w-75 mt1', placeholder: 'e.g. pp, PbPb' },
110110
),
111111
classes: 'w-7',

lib/public/views/lhcPeriods/Overview/LhcPeriodsOverviewModel.js

Lines changed: 23 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
* or submit itself to any jurisdiction.
1212
*/
1313

14+
import { FilteringModel } from '../../../components/Filters/common/FilteringModel.js';
1415
import { TextTokensFilterModel } from '../../../components/Filters/common/filters/TextTokensFilterModel.js';
1516
import { OverviewPageModel } from '../../../models/OverviewModel.js';
1617
import { buildUrl } from '/js/src/index.js';
@@ -27,27 +28,33 @@ export class LhcPeriodsOverviewModel extends OverviewPageModel {
2728
constructor() {
2829
super();
2930

30-
this._namesFilterModel = new TextTokensFilterModel();
31-
this._registerFilter(this._namesFilterModel);
32-
this._yearsFilterModel = new TextTokensFilterModel();
33-
this._registerFilter(this._yearsFilterModel);
34-
this._pdpBeamTypesFilterModel = new TextTokensFilterModel();
35-
this._registerFilter(this._pdpBeamTypesFilterModel);
31+
this._filteringModel = new FilteringModel({
32+
names: new TextTokensFilterModel(),
33+
years: new TextTokensFilterModel(),
34+
pdpBeamTypes: new TextTokensFilterModel(),
35+
});
36+
37+
this._filteringModel.visualChange$.bubbleTo(this);
38+
this._filteringModel.observe(() => {
39+
this._pagination.silentlySetCurrentPage(1);
40+
this.load();
41+
});
3642
}
3743

3844
/**
3945
* @inheritdoc
4046
*/
4147
getRootEndpoint() {
42-
const params = {
43-
filter: {
44-
names: this._namesFilterModel.normalized,
45-
years: this._yearsFilterModel.normalized,
46-
pdpBeamTypes: this._pdpBeamTypesFilterModel.normalized,
47-
},
48-
};
48+
return buildUrl('/api/lhcPeriodsStatistics', { filter: this._filteringModel.normalized });
49+
}
4950

50-
return buildUrl('/api/lhcPeriodsStatistics', params);
51+
/**
52+
* Return the model managing all filters
53+
*
54+
* @return {FilteringModel} the filtering model
55+
*/
56+
get filteringModel() {
57+
return this._filteringModel;
5158
}
5259

5360
/**
@@ -66,61 +73,21 @@ export class LhcPeriodsOverviewModel extends OverviewPageModel {
6673
});
6774
}
6875

69-
/**
70-
* Returns lhc periods names filter model
71-
* @return {TextTokensFilterModel} lhc periods names filter model
72-
*/
73-
get namesFilterModel() {
74-
return this._namesFilterModel;
75-
}
76-
77-
/**
78-
* Returns lhc periods years filter model
79-
* @return {TextTokensFilterModel} lhc periods years filter model
80-
*/
81-
get yearsFilterModel() {
82-
return this._yearsFilterModel;
83-
}
84-
85-
/**
86-
* Returns lhc periods beam type filter model
87-
* @return {TextTokensFilterModel} lhc periods beam type filter model
88-
*/
89-
get pdpBeamTypesFilterModel() {
90-
return this._pdpBeamTypesFilterModel;
91-
}
92-
9376
/**
9477
* Reset this model to its default
9578
*
9679
* @returns {void}
9780
*/
9881
reset() {
9982
super.reset();
100-
this._namesFilterModel.reset();
101-
this._yearsFilterModel.reset();
102-
this._pdpBeamTypesFilterModel.reset();
103-
}
104-
105-
/**
106-
* Register a new filter model
107-
* @param {FilterModel} filterModel the filter model to register
108-
* @return {void}
109-
* @private
110-
*/
111-
_registerFilter(filterModel) {
112-
filterModel.visualChange$.bubbleTo(this);
113-
filterModel.observe(() => {
114-
this._pagination.silentlySetCurrentPage(1);
115-
this.load();
116-
});
83+
this._filteringModel.reset();
11784
}
11885

11986
/**
12087
* States whether any filter is active
12188
* @return {boolean} true if any filter is active
12289
*/
12390
isAnyFilterActive() {
124-
return !this._namesFilterModel.isEmpty || !this._yearsFilterModel.isEmpty || !this._pdpBeamTypesFilterModel.isEmpty;
91+
return this._filteringModel.isAnyFilterActive();
12592
}
12693
}

0 commit comments

Comments
 (0)