Skip to content

Commit 083df69

Browse files
committed
now selected query done in model
1 parent 839e9ad commit 083df69

File tree

6 files changed

+60
-34
lines changed

6 files changed

+60
-34
lines changed

lib/public/components/qcFlags/qcFlagsPagesButtons.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export const qcFlagCreationPanelLink = (
3434
remoteRun,
3535
dplDetectorId,
3636
remoteDplDetectorsUserHasAccessTo,
37-
{ noPermissionContent = null, linkClasses = [], displayCheckbox = true } = {},
37+
{ noPermissionContent = null, displayCheckbox = true, overviewModel = null } = {},
3838
) => {
3939
const content = [h('.flex-row.items-center.g1', [h('small', iconPlus()), 'QC'])];
4040
let options = {};
@@ -75,6 +75,7 @@ export const qcFlagCreationPanelLink = (
7575
id: `qc-flag-checkbox-${run.runNumber}`,
7676
runNumber: run.runNumber,
7777
dplDetectorId: dplDetectorId,
78+
onchange: (e) => overviewModel && overviewModel.addToSelected(run.runNumber, dplDetectorId, e.target.checked),
7879
class: 'mr2',
7980
}),
8081
h('div.qc-link-wrapper', {

lib/public/views/QcFlags/ForDataPass/QcFlagsForDataPassOverviewPage.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,13 @@ export const QcFlagsForDataPassOverviewPage = ({
7676
[
7777
h('.flex-row.justify-between.items-center', [
7878
qcFlagsBreadcrumbs({ remoteDataPass, remoteRun, remoteDplDetector }),
79-
qcFlagCreationPanelLink({ dataPassId }, remoteRun, dplDetectorId, remoteDplDetectorsUserHasAccessTo, { displayCheckbox: false }),
79+
qcFlagCreationPanelLink(
80+
{ dataPassId },
81+
remoteRun,
82+
dplDetectorId,
83+
remoteDplDetectorsUserHasAccessTo,
84+
{ displayCheckbox: false },
85+
),
8086
]),
8187
remoteRun.match({
8288
Failure: (errors) => errorAlert(errors),

lib/public/views/Runs/ActiveColumns/runDetectorsAsyncQcActiveColumns.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ export const createRunDetectorsAsyncQcActiveColumns = (
5959
dplDetectors,
6060
remoteDplDetectorsUserHasAccessTo,
6161
{ dataPassId, simulationPassId },
62-
{ profiles, qcSummary } = {},
62+
{ profiles, qcSummary, overviewModel } = {},
6363
) =>
6464
Object.fromEntries(dplDetectors?.map(({ name: detectorName, id: dplDetectorId }) => [
6565
detectorName,
@@ -95,6 +95,7 @@ export const createRunDetectorsAsyncQcActiveColumns = (
9595
'No QC flag was assigned. You have no permission to manage QC flag for this detector',
9696
)),
9797
linkClasses: ['w-100'],
98+
overviewModel,
9899
},
99100
);
100101
}

lib/public/views/Runs/RunPerDataPass/RunsPerDataPassOverviewModel.js

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ export class RunsPerDataPassOverviewModel extends FixedPdpBeamTypeRunsOverviewMo
5353
this._gaqNotBadFractionFilterModel.observe(() => this._applyFilters());
5454
this._gaqNotBadFractionFilterModel.visualChange$.bubbleTo(this);
5555

56-
this._selectedDetectors = new ObservableData(RemoteData.NotAsked());
56+
this._selectedRunDetectors = {};
57+
this._selectedQueryString = '';
5758

5859
this.patchDisplayOptions({ horizontalScrollEnabled: true });
5960
}
@@ -228,6 +229,46 @@ export class RunsPerDataPassOverviewModel extends FixedPdpBeamTypeRunsOverviewMo
228229
}
229230
}
230231

232+
/**
233+
* Creates a query string to call the flag creation
234+
* @return {String} for flag creation query param
235+
*/
236+
generateSelectedQueryString() {
237+
return Object.entries(this._selectedRunDetectors)
238+
.map(([runNumber, detectorIds]) => `${runNumber}:${detectorIds.join(',')}`)
239+
.join(';');
240+
}
241+
242+
/**
243+
* Add detector id to selected run detectors and update the selected query string
244+
* And creates a query string to call the flag creation
245+
* @param {number} key run number
246+
* @param {number} value detector id
247+
* @param {boolean} check whether the box got checked or unchecked
248+
* @return {void}
249+
*/
250+
addToSelected(key, value, check) {
251+
if (check) {
252+
this._selectedRunDetectors[key] = [...this._selectedRunDetectors[key] || [], value];
253+
} else {
254+
this._selectedRunDetectors[key] = this._selectedRunDetectors[key].filter((id) => id !== value);
255+
if (this._selectedRunDetectors[key].length === 0) {
256+
delete this._selectedRunDetectors[key];
257+
}
258+
}
259+
260+
this._selectedQueryString = Object.entries(this._selectedRunDetectors)
261+
.map(([runNumber, detectorIds]) => `${runNumber}:${detectorIds.join(',')}`)
262+
.join(';');
263+
}
264+
265+
/**
266+
* Get current selected query string
267+
*/
268+
get selectedQueryString() {
269+
return this._selectedQueryString;
270+
}
271+
231272
/**
232273
* Result of request for marking current data pass as skimmable
233274
* @return {RemoteData} remote data

lib/public/views/Runs/RunPerDataPass/RunsPerDataPassOverviewPage.js

Lines changed: 3 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -91,27 +91,6 @@ const skimmableControl = (dataPass, onclick, requestResult) => {
9191
}
9292
};
9393

94-
/**
95-
* Creates a query string to call the flag creation
96-
* @return {String} for flag creation query param
97-
*/
98-
export function generateSelectedQueryString() {
99-
const detectors = Array.from(document.querySelectorAll('.select-multi-flag:checked'));
100-
const runNumberMap = detectors.reduce((acc, detector) => {
101-
const runNumber = parseInt(detector.getAttribute('runNumber'), 10);
102-
const detectorId = parseInt(detector.getAttribute('dplDetectorId'), 10);
103-
104-
acc[runNumber] = acc[runNumber] || [];
105-
acc[runNumber].push(detectorId);
106-
107-
return acc;
108-
}, {});
109-
110-
return Object.entries(runNumberMap)
111-
.map(([runNumber, detectorIds]) => `${runNumber}:${detectorIds.join(',')}`)
112-
.join(';');
113-
}
114-
11594
/**
11695
* Render Runs Per LHC Period overview page
11796
* @param {Model} model The overall model object.
@@ -217,14 +196,13 @@ export const RunsPerDataPassOverviewPage = ({
217196
Other: () => null,
218197
}),
219198
mcReproducibleAsNotBad,
199+
overviewModel: perDataPassOverviewModel,
220200
},
221201
),
222202
};
223203

224204
const commonTitle = h('h2#breadcrumb-header', { style: 'white-space: nowrap;' }, 'Physics Runs');
225205

226-
const selectedQueryString = generateSelectedQueryString();
227-
228206
return h('', { onremove: () => perDataPassOverviewModel.reset(false) }, [
229207
h('.flex-row.justify-between.items-center.g2', [
230208
filtersPanelPopover(perDataPassOverviewModel, activeColumns, { profile: 'runsPerDataPass' }),
@@ -258,11 +236,11 @@ export const RunsPerDataPassOverviewPage = ({
258236
exportRunsTriggerAndModal(perDataPassOverviewModel, modalModel, { autoMarginLeft: false }),
259237
frontLink(
260238
h('button.btn.btn-primary.w-100.h2}#set-qc-flags-trigger', {
261-
disabled: selectedQueryString.length < 1,
239+
disabled: perDataPassOverviewModel.selectedQueryString.length < 1,
262240
}, 'Set QC Flags'),
263241
'qc-flag-creation-for-data-pass',
264242
{
265-
runNumberDetectorMap: selectedQueryString,
243+
runNumberDetectorMap: perDataPassOverviewModel.selectedQueryString,
266244
dataPassId,
267245
},
268246
),

lib/public/views/Runs/RunsPerSimulationPass/RunsPerSimulationPassOverviewPage.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import { qcSummaryLegendTooltip } from '../../../components/qcFlags/qcSummaryLeg
2727
import { isRunNotSubjectToQc } from '../../../components/qcFlags/isRunSubjectToQc.js';
2828
import { PdpBeamType } from '../../../domain/enums/PdpBeamType.js';
2929
import { frontLink } from '../../../components/common/navigation/frontLink.js';
30-
import { generateSelectedQueryString } from '../RunPerDataPass/RunsPerDataPassOverviewPage.js';
3130

3231
const TABLEROW_HEIGHT = 59;
3332
// Estimate of the navbar and pagination elements height total; Needs to be updated in case of changes;
@@ -93,13 +92,13 @@ export const RunsPerSimulationPassOverviewPage = ({
9392
Success: (qcSummary) => qcSummary,
9493
Other: () => null,
9594
}),
95+
overviewModel: perSimulationPassOverviewModel,
9696
},
9797
),
9898
};
9999

100100
const commonTitle = h('h2', 'Runs per MC');
101-
const selectedQueryString = generateSelectedQueryString();
102-
101+
103102
return h('', [
104103
h('.flex-row.justify-between.items-center.g2', [
105104
h(
@@ -115,11 +114,11 @@ export const RunsPerSimulationPassOverviewPage = ({
115114
exportRunsTriggerAndModal(perSimulationPassOverviewModel, modalModel, { autoMarginLeft: false }),
116115
frontLink(
117116
h('button.btn.btn-primary.w-100.h2}#set-qc-flags-trigger', {
118-
disabled: selectedQueryString.length < 1,
117+
disabled: perSimulationPassOverviewModel.selectedQueryString.length < 1,
119118
}, 'Set QC Flags'),
120119
'qc-flag-creation-for-simulation-pass',
121120
{
122-
runNumberDetectorMap: selectedQueryString,
121+
runNumberDetectorMap: perSimulationPassOverviewModel.selectedQueryString,
123122
simulationPassId,
124123
},
125124
),

0 commit comments

Comments
 (0)