@thinkwise/testwise 0.2.105 → 0.2.111
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/artifact-builder/CustomActionBarGenerator.ts +210 -0
- package/artifact-builder/InterfaceGenerator.ts +4 -1
- package/artifact-builder/ScreenInterfaceRefiner.ts +7 -1
- package/artifact-builder/SubjectComponentGenerator.ts +7 -1
- package/artifact-builder/SubjectRegistration.ts +4 -1
- package/artifact-builder/TaskDataBuilder.ts +71 -0
- package/artifact-builder/helpers/DataRetriever.ts +11 -0
- package/artifact-builder/helpers/PipelinePaths.ts +5 -0
- package/artifact-builder/index.ts +2 -0
- package/components/action-bar/ActionBarObjects.ts +3 -1
- package/components/filter/FilterPopup.ts +77 -14
- package/components/filter/FilterPopupObjects.ts +25 -4
- package/components/grid/Grid.ts +40 -2
- package/components/grid/GridObjects.ts +18 -3
- package/components/pop-up/AllRowsPopUp.ts +4 -1
- package/controls/DateControl.ts +26 -13
- package/controls/DateControlObjects.ts +1 -1
- package/controls/FormComboBoxObjects.ts +2 -2
- package/controls/GridColumnControl.ts +10 -0
- package/dist/artifact-builder/CustomActionBarGenerator.d.ts +82 -0
- package/dist/artifact-builder/CustomActionBarGenerator.js +175 -0
- package/dist/artifact-builder/CustomActionBarGenerator.js.map +1 -0
- package/dist/artifact-builder/InterfaceGenerator.js +4 -1
- package/dist/artifact-builder/InterfaceGenerator.js.map +1 -1
- package/dist/artifact-builder/ScreenInterfaceRefiner.js +7 -1
- package/dist/artifact-builder/ScreenInterfaceRefiner.js.map +1 -1
- package/dist/artifact-builder/SubjectComponentGenerator.js +5 -1
- package/dist/artifact-builder/SubjectComponentGenerator.js.map +1 -1
- package/dist/artifact-builder/SubjectRegistration.js +4 -1
- package/dist/artifact-builder/SubjectRegistration.js.map +1 -1
- package/dist/artifact-builder/TaskDataBuilder.d.ts +21 -0
- package/dist/artifact-builder/TaskDataBuilder.js +60 -0
- package/dist/artifact-builder/TaskDataBuilder.js.map +1 -0
- package/dist/artifact-builder/helpers/DataRetriever.d.ts +2 -0
- package/dist/artifact-builder/helpers/DataRetriever.js +7 -0
- package/dist/artifact-builder/helpers/DataRetriever.js.map +1 -1
- package/dist/artifact-builder/helpers/PipelinePaths.d.ts +2 -0
- package/dist/artifact-builder/helpers/PipelinePaths.js +4 -0
- package/dist/artifact-builder/helpers/PipelinePaths.js.map +1 -1
- package/dist/artifact-builder/index.d.ts +2 -0
- package/dist/artifact-builder/index.js +2 -0
- package/dist/artifact-builder/index.js.map +1 -1
- package/dist/components/action-bar/ActionBarObjects.js +2 -1
- package/dist/components/action-bar/ActionBarObjects.js.map +1 -1
- package/dist/components/filter/FilterPopup.d.ts +50 -2
- package/dist/components/filter/FilterPopup.js +69 -15
- package/dist/components/filter/FilterPopup.js.map +1 -1
- package/dist/components/filter/FilterPopupObjects.d.ts +4 -2
- package/dist/components/filter/FilterPopupObjects.js +18 -4
- package/dist/components/filter/FilterPopupObjects.js.map +1 -1
- package/dist/components/grid/Grid.d.ts +22 -0
- package/dist/components/grid/Grid.js +36 -2
- package/dist/components/grid/Grid.js.map +1 -1
- package/dist/components/grid/GridObjects.d.ts +2 -0
- package/dist/components/grid/GridObjects.js +12 -2
- package/dist/components/grid/GridObjects.js.map +1 -1
- package/dist/components/pop-up/AllRowsPopUp.js +4 -1
- package/dist/components/pop-up/AllRowsPopUp.js.map +1 -1
- package/dist/controls/DateControl.d.ts +18 -10
- package/dist/controls/DateControl.js +21 -8
- package/dist/controls/DateControl.js.map +1 -1
- package/dist/controls/DateControlObjects.js +1 -1
- package/dist/controls/DateControlObjects.js.map +1 -1
- package/dist/controls/FormComboBoxObjects.js +2 -2
- package/dist/controls/FormComboBoxObjects.js.map +1 -1
- package/dist/controls/GridColumnControl.d.ts +2 -0
- package/dist/controls/GridColumnControl.js +6 -0
- package/dist/controls/GridColumnControl.js.map +1 -1
- package/dist/helpers/DateFormat.d.ts +69 -0
- package/dist/helpers/DateFormat.js +100 -0
- package/dist/helpers/DateFormat.js.map +1 -0
- package/dist/helpers/DateLocaleHelper.d.ts +17 -0
- package/dist/helpers/DateLocaleHelper.js +52 -0
- package/dist/helpers/DateLocaleHelper.js.map +1 -0
- package/dist/helpers/LoginHelper.js +2 -1
- package/dist/helpers/LoginHelper.js.map +1 -1
- package/dist/helpers/Poll.d.ts +24 -2
- package/dist/helpers/Poll.js +87 -5
- package/dist/helpers/Poll.js.map +1 -1
- package/dist/helpers/UserSimulationHelper.js +2 -1
- package/dist/helpers/UserSimulationHelper.js.map +1 -1
- package/dist/interfaces/ITabTask.d.ts +21 -0
- package/dist/interfaces/ITabTask.js +2 -0
- package/dist/interfaces/ITabTask.js.map +1 -0
- package/dist/services/IndiciumApi.service.d.ts +7 -0
- package/dist/services/IndiciumApi.service.js +19 -0
- package/dist/services/IndiciumApi.service.js.map +1 -1
- package/dist/types/PollTypes.d.ts +5 -0
- package/helpers/DateFormat.ts +123 -0
- package/helpers/DateLocaleHelper.ts +57 -0
- package/helpers/LoginHelper.ts +2 -1
- package/helpers/Poll.ts +108 -5
- package/helpers/UserSimulationHelper.ts +2 -1
- package/interfaces/ITabTask.ts +21 -0
- package/package.json +3 -1
- package/promptCredentials.js +124 -124
- package/scripts/checkPackageContents.js +39 -0
- package/scripts/sync.js +14 -0
- package/services/IndiciumApi.service.ts +21 -0
- package/types/PollTypes.ts +5 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
/** biome-ignore-all lint/suspicious/noExplicitAny: Because I can */
|
|
3
|
+
import * as fs from 'node:fs/promises';
|
|
4
|
+
import * as path from 'node:path';
|
|
5
|
+
import { indiciumApi } from '../services/IndiciumApi.service.js';
|
|
6
|
+
import { DataRetriever } from './helpers/DataRetriever.js';
|
|
7
|
+
import { PipelinePaths } from './helpers/PipelinePaths.js';
|
|
8
|
+
/**
|
|
9
|
+
* **Pipeline Step 1.5** — Fetches task button data from the Indicium API
|
|
10
|
+
* (`i_ui_tab_task`) for the verified GUI application and writes qualifying
|
|
11
|
+
* entries to `seed-data/tab-tasks.json`.
|
|
12
|
+
*
|
|
13
|
+
* **Qualifying tasks:** A task qualifies when `custom_display_type` is absent
|
|
14
|
+
* or not equal to `4`. Tasks where `custom_display_type === 4` are special
|
|
15
|
+
* UI elements (not standard toolbar buttons) and are excluded from typed
|
|
16
|
+
* ActionBar generation.
|
|
17
|
+
*
|
|
18
|
+
* **Output format:** An array of `ITabTask` objects — one per subject+variant
|
|
19
|
+
* that has at least one qualifying task. If all tasks for a given subject+variant
|
|
20
|
+
* are `custom_display_type === 4`, no entry is written for that pair (it will
|
|
21
|
+
* receive a plain `ActionBar` during subject class generation).
|
|
22
|
+
*
|
|
23
|
+
* **When it runs:** Step 1.5 of `testwise sync`, after `buildSubjects` and
|
|
24
|
+
* `buildScreens` but before `ModelDataRefiner`. Fetching here (pre-refinement)
|
|
25
|
+
* means the full model is queried once and the data is available for all
|
|
26
|
+
* registered subjects during Phase 4.
|
|
27
|
+
*/
|
|
28
|
+
export async function buildTaskData() {
|
|
29
|
+
if (!(await indiciumApi.canConnectToProject())) {
|
|
30
|
+
console.log('Cannot connect to Indicium API. Aborting task data build.');
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const rawTasks = await indiciumApi.getTabTasks();
|
|
34
|
+
// Group by subject+variant, keeping only qualifying tasks
|
|
35
|
+
const grouped = new Map();
|
|
36
|
+
for (const raw of rawTasks) {
|
|
37
|
+
const subject = raw.tab_id;
|
|
38
|
+
const variant = raw.tab_variant_id;
|
|
39
|
+
const taskId = raw.task_id;
|
|
40
|
+
const customDisplayType = raw.custom_display_type;
|
|
41
|
+
// Skip tasks rendered with a special custom display type (not a standard button)
|
|
42
|
+
if (customDisplayType === 4)
|
|
43
|
+
continue;
|
|
44
|
+
const key = `${subject}__${variant}`;
|
|
45
|
+
if (!grouped.has(key)) {
|
|
46
|
+
grouped.set(key, { subject, variant, tasks: [] });
|
|
47
|
+
}
|
|
48
|
+
grouped.get(key)?.tasks.push(taskId);
|
|
49
|
+
}
|
|
50
|
+
const result = [...grouped.values()];
|
|
51
|
+
const paths = new PipelinePaths();
|
|
52
|
+
const tabTasksPath = paths.tabTasksJson;
|
|
53
|
+
await fs.mkdir(path.dirname(tabTasksPath), { recursive: true });
|
|
54
|
+
await fs.writeFile(tabTasksPath, JSON.stringify(result, null, 2), 'utf-8');
|
|
55
|
+
console.log(`Task data written to ${tabTasksPath}`);
|
|
56
|
+
// Verify using DataRetriever to confirm the file was written correctly
|
|
57
|
+
const written = new DataRetriever(paths).getTabTasks();
|
|
58
|
+
console.log(`Task data verified: ${written.length} subject+variant combination(s) with qualifying tasks.`);
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=TaskDataBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskDataBuilder.js","sourceRoot":"","sources":["../../artifact-builder/TaskDataBuilder.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,oEAAoE;AACpE,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,IAAI,CAAC,CAAC,MAAM,WAAW,CAAC,mBAAmB,EAAE,CAAC,EAAE,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;QACzE,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAU,MAAM,WAAW,CAAC,WAAW,EAAE,CAAC;IAExD,0DAA0D;IAC1D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAiE,CAAC;IAEzF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAW,GAAG,CAAC,MAAM,CAAC;QACnC,MAAM,OAAO,GAAW,GAAG,CAAC,cAAc,CAAC;QAC3C,MAAM,MAAM,GAAW,GAAG,CAAC,OAAO,CAAC;QACnC,MAAM,iBAAiB,GAAuB,GAAG,CAAC,mBAAmB,CAAC;QAEtE,iFAAiF;QACjF,IAAI,iBAAiB,KAAK,CAAC;YAAE,SAAS;QAEtC,MAAM,GAAG,GAAG,GAAG,OAAO,KAAK,OAAO,EAAE,CAAC;QAErC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,MAAM,GAAe,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAEjD,MAAM,KAAK,GAAG,IAAI,aAAa,EAAE,CAAC;IAClC,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;IAExC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,CAAC,wBAAwB,YAAY,EAAE,CAAC,CAAC;IAEpD,uEAAuE;IACvE,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,uBAAuB,OAAO,CAAC,MAAM,wDAAwD,CAAC,CAAC;AAC7G,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { IRegisteredSubjects } from '../../interfaces/IRegisteredSubjects.js';
|
|
2
2
|
import type { ISubject } from '../../interfaces/ISubject.js';
|
|
3
|
+
import type { ITabTask } from '../../interfaces/ITabTask.js';
|
|
3
4
|
import { PipelinePaths } from './PipelinePaths.js';
|
|
4
5
|
/**
|
|
5
6
|
* Thin file-system accessor that reads all JSON seed-data files used by the
|
|
@@ -26,6 +27,7 @@ export declare class DataRetriever {
|
|
|
26
27
|
getSubjectsToBuild(): ISubject[];
|
|
27
28
|
getScreensToBuild(): string[];
|
|
28
29
|
getScreenComponentMeta(screenTypeId: string): Record<string, string>;
|
|
30
|
+
getTabTasks(): ITabTask[];
|
|
29
31
|
getSeedDataDirectory(): string;
|
|
30
32
|
private parseJsonFile;
|
|
31
33
|
}
|
|
@@ -67,6 +67,13 @@ export class DataRetriever {
|
|
|
67
67
|
}
|
|
68
68
|
return result;
|
|
69
69
|
}
|
|
70
|
+
getTabTasks() {
|
|
71
|
+
const tabTasksPath = this._paths.tabTasksJson;
|
|
72
|
+
if (!fs.existsSync(tabTasksPath)) {
|
|
73
|
+
return [];
|
|
74
|
+
}
|
|
75
|
+
return this.parseJsonFile(tabTasksPath);
|
|
76
|
+
}
|
|
70
77
|
getSeedDataDirectory() {
|
|
71
78
|
return this._paths.seedData;
|
|
72
79
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataRetriever.js","sourceRoot":"","sources":["../../../artifact-builder/helpers/DataRetriever.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"DataRetriever.js","sourceRoot":"","sources":["../../../artifact-builder/helpers/DataRetriever.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,8 @@ export declare class PipelinePaths {
|
|
|
25
25
|
get screensToBuildJson(): string;
|
|
26
26
|
/** `<consumer>/seed-data/registeredSubjects.json` – lives in the consumer project so it survives `npm install` */
|
|
27
27
|
get registeredSubjectsJson(): string;
|
|
28
|
+
/** `<package>/seed-data/tab-tasks.json` */
|
|
29
|
+
get tabTasksJson(): string;
|
|
28
30
|
/** `<package>/test-artifacts/` */
|
|
29
31
|
get testArtifacts(): string;
|
|
30
32
|
/** `<package>/test-artifacts/screens/` */
|
|
@@ -50,6 +50,10 @@ export class PipelinePaths {
|
|
|
50
50
|
get registeredSubjectsJson() {
|
|
51
51
|
return path.join(this._consumerRoot, 'seed-data', 'registeredSubjects.json');
|
|
52
52
|
}
|
|
53
|
+
/** `<package>/seed-data/tab-tasks.json` */
|
|
54
|
+
get tabTasksJson() {
|
|
55
|
+
return path.join(this.seedData, 'tab-tasks.json');
|
|
56
|
+
}
|
|
53
57
|
// ── Package root – generated artifacts ─────────────────────────────────
|
|
54
58
|
/** `<package>/test-artifacts/` */
|
|
55
59
|
get testArtifacts() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PipelinePaths.js","sourceRoot":"","sources":["../../../artifact-builder/helpers/PipelinePaths.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PipelinePaths.js","sourceRoot":"","sources":["../../../artifact-builder/helpers/PipelinePaths.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './ArtifactManager.js';
|
|
2
2
|
export * from './ComponentClassModelBuilder.js';
|
|
3
|
+
export * from './CustomActionBarGenerator.js';
|
|
3
4
|
export * from './helpers/index.js';
|
|
4
5
|
export * from './InterfaceGenerator.js';
|
|
5
6
|
export * from './ModelDataRefiner.js';
|
|
@@ -9,5 +10,6 @@ export * from './SubjectClassModelBuilder.js';
|
|
|
9
10
|
export * from './SubjectComponentGenerator.js';
|
|
10
11
|
export * from './SubjectGenerator.js';
|
|
11
12
|
export * from './SubjectRegistration.js';
|
|
13
|
+
export * from './TaskDataBuilder.js';
|
|
12
14
|
export * from './TsFileModel.js';
|
|
13
15
|
export * from './TsFileSerializer.js';
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './ArtifactManager.js';
|
|
2
2
|
export * from './ComponentClassModelBuilder.js';
|
|
3
|
+
export * from './CustomActionBarGenerator.js';
|
|
3
4
|
export * from './helpers/index.js';
|
|
4
5
|
export * from './InterfaceGenerator.js';
|
|
5
6
|
export * from './ModelDataRefiner.js';
|
|
@@ -9,6 +10,7 @@ export * from './SubjectClassModelBuilder.js';
|
|
|
9
10
|
export * from './SubjectComponentGenerator.js';
|
|
10
11
|
export * from './SubjectGenerator.js';
|
|
11
12
|
export * from './SubjectRegistration.js';
|
|
13
|
+
export * from './TaskDataBuilder.js';
|
|
12
14
|
export * from './TsFileModel.js';
|
|
13
15
|
export * from './TsFileSerializer.js';
|
|
14
16
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../artifact-builder/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,iCAAiC,CAAC;AAChD,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../artifact-builder/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC"}
|
|
@@ -37,7 +37,8 @@ export class ActionBarOverflowableObjects extends BaseComponentObjects {
|
|
|
37
37
|
// Generic, prefix-based items: Tasks, Reports, Cube views, Prefilter buttons
|
|
38
38
|
// Tasks: data-testid like: "actionbar__task__<something>"
|
|
39
39
|
this.taskButtons = () => this.context.locator('[data-testid^="actionbar__task__"]');
|
|
40
|
-
|
|
40
|
+
// The model's snake_case task id is rendered kebab-case, so both forms of the id resolve
|
|
41
|
+
this.taskButtonById = (id) => this.context.getByTestId(`actionbar__task__${id.toLowerCase().replace(/_/g, '-')}`);
|
|
41
42
|
this.taskButtonByLabel = (label) => this.context.locator('[data-testid^="actionbar__task__"]').filter({ hasText: label });
|
|
42
43
|
// Reports: data-testid like "actionbar__report__<something>"
|
|
43
44
|
this.reportButtons = () => this.context.locator('[data-testid^="actionbar__report__"]');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionBarObjects.js","sourceRoot":"","sources":["../../../components/action-bar/ActionBarObjects.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ActionBarObjects.js","sourceRoot":"","sources":["../../../components/action-bar/ActionBarObjects.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,15 +41,63 @@ export declare class FilterPopup {
|
|
|
41
41
|
fieldId: string;
|
|
42
42
|
part: string;
|
|
43
43
|
}): Promise<void>;
|
|
44
|
+
/**
|
|
45
|
+
* Enter a date into a filter date input from a canonical ISO string
|
|
46
|
+
* (`YYYY-MM-DD` or `YYYY-MM-DD HH:mm:ss`). Reads the app's active date locale,
|
|
47
|
+
* reorders the digits to the picker's expected order, types them sequentially,
|
|
48
|
+
* and blurs to commit — so the same ISO value applies the same real date under
|
|
49
|
+
* any locale. Use this instead of {@link setValue} for date/date-time parts
|
|
50
|
+
* (e.g. interval `date` inputs).
|
|
51
|
+
*
|
|
52
|
+
* @param args.fieldId - The filter field/column id.
|
|
53
|
+
* @param args.value - Canonical ISO date or date-time string.
|
|
54
|
+
* @param args.part - The value part to target (defaults to `date`).
|
|
55
|
+
*/
|
|
56
|
+
setDate(args: {
|
|
57
|
+
fieldId: string;
|
|
58
|
+
value: string;
|
|
59
|
+
part?: string;
|
|
60
|
+
}): Promise<void>;
|
|
44
61
|
openControl(fieldId: string, part: string): Promise<void>;
|
|
45
62
|
openOperator(fieldId: string): Promise<void>;
|
|
46
63
|
openTimeOperator(): Promise<void>;
|
|
47
|
-
|
|
48
|
-
|
|
64
|
+
/**
|
|
65
|
+
* One of a date column's interval selectors. Universal 2026.3.11 and later add the next interval condition row
|
|
66
|
+
* as soon as a row has a value, so a column can have several.
|
|
67
|
+
*
|
|
68
|
+
* @param colId - The column id.
|
|
69
|
+
* @param options.index - Which of the column's interval selectors, counting from 0 at the top. Defaults to 0.
|
|
70
|
+
*/
|
|
71
|
+
intervalSelector(colId: string, options?: {
|
|
72
|
+
index?: number;
|
|
73
|
+
}): Locator;
|
|
74
|
+
/**
|
|
75
|
+
* The input of one of a date column's interval selectors, see {@link intervalSelector}.
|
|
76
|
+
*
|
|
77
|
+
* @param colId - The column id.
|
|
78
|
+
* @param options.index - Which of the column's interval selectors, counting from 0 at the top. Defaults to 0.
|
|
79
|
+
*/
|
|
80
|
+
intervalSelectorInput(colId: string, options?: {
|
|
81
|
+
index?: number;
|
|
82
|
+
}): Locator;
|
|
83
|
+
/**
|
|
84
|
+
* Opens one of a date column's interval selectors, see {@link intervalSelector}.
|
|
85
|
+
*
|
|
86
|
+
* @param colId - The column id.
|
|
87
|
+
* @param options.index - Which of the column's interval selectors, counting from 0 at the top. Defaults to 0.
|
|
88
|
+
* @param options.rowIndex - A row number of the advanced filter grid instead, as in its test ids. Wins over
|
|
89
|
+
* `index`. It also counts the other columns' rows, and it changes when the pop-up reopens with the active
|
|
90
|
+
* filters at the top, so `index` is easier to use.
|
|
91
|
+
*/
|
|
49
92
|
openInterval(colId: string, options?: {
|
|
93
|
+
index?: number;
|
|
50
94
|
rowIndex?: number;
|
|
51
95
|
}): Promise<void>;
|
|
96
|
+
/**
|
|
97
|
+
* Picks an interval in one of a date column's interval selectors, see {@link openInterval} for `options`.
|
|
98
|
+
*/
|
|
52
99
|
setInterval(colId: string, kind: IntervalType, options?: {
|
|
100
|
+
index?: number;
|
|
53
101
|
rowIndex?: number;
|
|
54
102
|
}): Promise<void>;
|
|
55
103
|
autocompleteOption(key: AutocompleteKey): Locator;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { isoToLocaleDigits } from '../../helpers/DateFormat.js';
|
|
2
|
+
import { getDateLocale } from '../../helpers/DateLocaleHelper.js';
|
|
1
3
|
import { PopUpComponent } from '../pop-up/PopUpComponent.js';
|
|
2
4
|
import { FilterPopupObjects } from './FilterPopupObjects.js';
|
|
3
5
|
export class FilterPopup {
|
|
@@ -24,9 +26,15 @@ export class FilterPopup {
|
|
|
24
26
|
await this.saveAsPrefilterPopup(name);
|
|
25
27
|
}
|
|
26
28
|
async saveAsPrefilterPopup(name) {
|
|
27
|
-
|
|
28
|
-
await
|
|
29
|
-
await
|
|
29
|
+
const nameInput = this._filterPopupObjects.prefilterNameInput();
|
|
30
|
+
await nameInput.waitFor({ state: 'visible' });
|
|
31
|
+
await nameInput.fill(name);
|
|
32
|
+
await this._filterPopupObjects.prefilterSaveButton().click();
|
|
33
|
+
// "Save as prefilter" is a modal stacked on top of the filter popup, so saving unwinds
|
|
34
|
+
// TWO backdrops. Without waiting for both to detach this returns while a backdrop is
|
|
35
|
+
// still animating out, and the caller's next click gets intercepted.
|
|
36
|
+
await nameInput.waitFor({ state: 'hidden' });
|
|
37
|
+
await this._filterPopupObjects.applyFilterButton().waitFor({ state: 'hidden' });
|
|
30
38
|
}
|
|
31
39
|
async setAdvanced(enabled) {
|
|
32
40
|
await this.waitForOpen();
|
|
@@ -75,6 +83,29 @@ export class FilterPopup {
|
|
|
75
83
|
await this.waitForOpen();
|
|
76
84
|
await this._filterPopupObjects.valueInput(args.fieldId, args.part).press('Tab');
|
|
77
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* Enter a date into a filter date input from a canonical ISO string
|
|
88
|
+
* (`YYYY-MM-DD` or `YYYY-MM-DD HH:mm:ss`). Reads the app's active date locale,
|
|
89
|
+
* reorders the digits to the picker's expected order, types them sequentially,
|
|
90
|
+
* and blurs to commit — so the same ISO value applies the same real date under
|
|
91
|
+
* any locale. Use this instead of {@link setValue} for date/date-time parts
|
|
92
|
+
* (e.g. interval `date` inputs).
|
|
93
|
+
*
|
|
94
|
+
* @param args.fieldId - The filter field/column id.
|
|
95
|
+
* @param args.value - Canonical ISO date or date-time string.
|
|
96
|
+
* @param args.part - The value part to target (defaults to `date`).
|
|
97
|
+
*/
|
|
98
|
+
async setDate(args) {
|
|
99
|
+
await this.waitForOpen();
|
|
100
|
+
const part = args.part ?? 'date';
|
|
101
|
+
const input = this._filterPopupObjects.valueInput(args.fieldId, part);
|
|
102
|
+
const locale = await getDateLocale(this.page);
|
|
103
|
+
const digits = isoToLocaleDigits(args.value, locale);
|
|
104
|
+
await input.click();
|
|
105
|
+
await input.press('ControlOrMeta+a');
|
|
106
|
+
await input.pressSequentially(digits);
|
|
107
|
+
await input.press('Tab');
|
|
108
|
+
}
|
|
78
109
|
async openControl(fieldId, part) {
|
|
79
110
|
await this.waitForOpen();
|
|
80
111
|
await this._filterPopupObjects.fieldControl(fieldId, part).click();
|
|
@@ -87,21 +118,44 @@ export class FilterPopup {
|
|
|
87
118
|
await this.waitForOpen();
|
|
88
119
|
await this._filterPopupObjects.timeOperatorControl().click();
|
|
89
120
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
121
|
+
/**
|
|
122
|
+
* One of a date column's interval selectors. Universal 2026.3.11 and later add the next interval condition row
|
|
123
|
+
* as soon as a row has a value, so a column can have several.
|
|
124
|
+
*
|
|
125
|
+
* @param colId - The column id.
|
|
126
|
+
* @param options.index - Which of the column's interval selectors, counting from 0 at the top. Defaults to 0.
|
|
127
|
+
*/
|
|
128
|
+
intervalSelector(colId, options) {
|
|
129
|
+
return this._filterPopupObjects.intervalSelector(colId, options?.index);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* The input of one of a date column's interval selectors, see {@link intervalSelector}.
|
|
133
|
+
*
|
|
134
|
+
* @param colId - The column id.
|
|
135
|
+
* @param options.index - Which of the column's interval selectors, counting from 0 at the top. Defaults to 0.
|
|
136
|
+
*/
|
|
137
|
+
intervalSelectorInput(colId, options) {
|
|
138
|
+
return this._filterPopupObjects.intervalSelectorInput(colId, options?.index);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Opens one of a date column's interval selectors, see {@link intervalSelector}.
|
|
142
|
+
*
|
|
143
|
+
* @param colId - The column id.
|
|
144
|
+
* @param options.index - Which of the column's interval selectors, counting from 0 at the top. Defaults to 0.
|
|
145
|
+
* @param options.rowIndex - A row number of the advanced filter grid instead, as in its test ids. Wins over
|
|
146
|
+
* `index`. It also counts the other columns' rows, and it changes when the pop-up reopens with the active
|
|
147
|
+
* filters at the top, so `index` is easier to use.
|
|
148
|
+
*/
|
|
96
149
|
async openInterval(colId, options) {
|
|
97
150
|
await this.waitForOpen();
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
await this._filterPopupObjects.intervalSelectorInput(colId).click();
|
|
103
|
-
}
|
|
151
|
+
const input = options?.rowIndex !== undefined
|
|
152
|
+
? this._filterPopupObjects.intervalSelectorInputByRowIndex(options.rowIndex, colId)
|
|
153
|
+
: this.intervalSelectorInput(colId, options);
|
|
154
|
+
await input.click();
|
|
104
155
|
}
|
|
156
|
+
/**
|
|
157
|
+
* Picks an interval in one of a date column's interval selectors, see {@link openInterval} for `options`.
|
|
158
|
+
*/
|
|
105
159
|
async setInterval(colId, kind, options) {
|
|
106
160
|
await this.openInterval(colId, options);
|
|
107
161
|
await this.pickAutocomplete(kind);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterPopup.js","sourceRoot":"","sources":["../../../components/filter/FilterPopup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAgD7D,MAAM,OAAO,WAAW;IAKtB,YAAY,IAAU;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;QACvD,IAAI,CAAC,mBAAmB,GAAG,IAAI,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACtE,CAAC;IAED,0DAA0D;IACnD,OAAO;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEM,KAAK,CAAC,WAAW;QACtB,MAAM,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,CAAC,OAAO,EAAE,CAAC;IAC/D,CAAC;IAEM,KAAK,CAAC,WAAW;QACtB,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,CAAC;IAC7D,CAAC;IAEM,KAAK,CAAC,4BAA4B,CAAC,IAAY;QACpD,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,CAAC;QACzD,MAAM,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC;QACtD,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAEM,KAAK,CAAC,oBAAoB,CAAC,IAAY;QAC5C,MAAM,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"FilterPopup.js","sourceRoot":"","sources":["../../../components/filter/FilterPopup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAgD7D,MAAM,OAAO,WAAW;IAKtB,YAAY,IAAU;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;QACvD,IAAI,CAAC,mBAAmB,GAAG,IAAI,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACtE,CAAC;IAED,0DAA0D;IACnD,OAAO;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEM,KAAK,CAAC,WAAW;QACtB,MAAM,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,CAAC,OAAO,EAAE,CAAC;IAC/D,CAAC;IAEM,KAAK,CAAC,WAAW;QACtB,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,CAAC;IAC7D,CAAC;IAEM,KAAK,CAAC,4BAA4B,CAAC,IAAY;QACpD,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,CAAC;QACzD,MAAM,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC;QACtD,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAEM,KAAK,CAAC,oBAAoB,CAAC,IAAY;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,CAAC;QAChE,MAAM,SAAS,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC9C,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,MAAM,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,CAAC;QAE7D,uFAAuF;QACvF,qFAAqF;QACrF,qEAAqE;QACrE,MAAM,SAAS,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAClF,CAAC;IACM,KAAK,CAAC,WAAW,CAAC,OAAgB;QACvC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,CAAC;QACnE,IAAI,OAAO;YAAE,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;;YAC/B,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;IAChC,CAAC;IAEM,mBAAmB;QACxB,OAAO,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,CAAC;IACxD,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,GAAoD;QACjF,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,CAAC;QAC7D,MAAM,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACnE,CAAC;IAEM,UAAU,CAAC,OAAe;QAC/B,OAAO,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACtD,CAAC;IAEM,cAAc,CAAC,OAAe,EAAE,KAAa;QAClD,OAAO,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACjE,CAAC;IAEM,UAAU,CAAC,OAAe,EAAE,IAAY;QAC7C,OAAO,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC5D,CAAC;IAEM,SAAS,CAAC,OAAe;QAC9B,OAAO,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACrD,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,OAAe,EAAE,KAAa;QACjD,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC3D,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QACpB,MAAM,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,IAAsD;QAC1E,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3E,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QACpB,MAAM,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,kEAAkE;IAC3D,KAAK,CAAC,MAAM,CAAC,IAAuC;QACzD,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAClF,CAAC;IAED;;;;;;;;;;;OAWG;IACI,KAAK,CAAC,OAAO,CAAC,IAAuD;QAC1E,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAErD,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QACpB,MAAM,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrC,MAAM,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,OAAe,EAAE,IAAY;QACpD,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;IACrE,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,OAAe;QACvC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;IAClE,CAAC;IAEM,KAAK,CAAC,gBAAgB;QAC3B,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,CAAC;IAC/D,CAAC;IAED;;;;;;OAMG;IACI,gBAAgB,CAAC,KAAa,EAAE,OAA4B;QACjE,OAAO,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC1E,CAAC;IAED;;;;;OAKG;IACI,qBAAqB,CAAC,KAAa,EAAE,OAA4B;QACtE,OAAO,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/E,CAAC;IAED;;;;;;;;OAQG;IACI,KAAK,CAAC,YAAY,CAAC,KAAa,EAAE,OAA+C;QACtF,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,KAAK,GACT,OAAO,EAAE,QAAQ,KAAK,SAAS;YAC7B,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,+BAA+B,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC;YACnF,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,WAAW,CACtB,KAAa,EACb,IAAkB,EAClB,OAA+C;QAE/C,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACxC,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAEM,kBAAkB,CAAC,GAAoB;QAC5C,OAAO,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,GAAoB;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAChE,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,KAAa;QACpC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,CAAC;QAEhE,IAAI,MAAM,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,mBAAmB,CAAC,yBAAyB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5E,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,CAAC;QAC7D,CAAC;QAED,MAAM,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;IAC5D,CAAC;IAED,+DAA+D;IACxD,KAAK,CAAC,QAAQ,CAAC,KAAa;QACjC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,CAAC;QACxD,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;CACF"}
|
|
@@ -12,6 +12,8 @@ export declare class FilterPopupObjects extends BaseComponentObjects {
|
|
|
12
12
|
fieldInput: (fieldId: string) => Locator;
|
|
13
13
|
fieldInputChip: (fieldId: string, value: string) => Locator;
|
|
14
14
|
prefilterNameInput: () => Locator;
|
|
15
|
+
saveAsPopup: () => Locator;
|
|
16
|
+
prefilterSaveButton: () => Locator;
|
|
15
17
|
saveAsOption: () => Locator;
|
|
16
18
|
saveButton: () => Locator;
|
|
17
19
|
valueInput: (fieldId: string, part: string) => Locator;
|
|
@@ -19,8 +21,8 @@ export declare class FilterPopupObjects extends BaseComponentObjects {
|
|
|
19
21
|
fieldControl: (fieldId: string, part: string) => Locator;
|
|
20
22
|
operatorControl: (fieldId: string) => Locator;
|
|
21
23
|
timeOperatorControl: () => Locator;
|
|
22
|
-
intervalSelector: (colId: string) => Locator;
|
|
23
|
-
intervalSelectorInput: (colId: string) => Locator;
|
|
24
|
+
intervalSelector: (colId: string, index?: number) => Locator;
|
|
25
|
+
intervalSelectorInput: (colId: string, index?: number) => Locator;
|
|
24
26
|
intervalSelectorByRowIndex: (rowIndex: number, colId: string) => Locator;
|
|
25
27
|
intervalSelectorInputByRowIndex: (rowIndex: number, colId: string) => Locator;
|
|
26
28
|
autocompleteOption: (key: AutocompleteKey) => Locator;
|
|
@@ -10,6 +10,11 @@ export class FilterPopupObjects extends BaseComponentObjects {
|
|
|
10
10
|
this.fieldInput = (fieldId) => this.context.getByTestId(`form-field__${fieldId}__input`);
|
|
11
11
|
this.fieldInputChip = (fieldId, value) => this.context.getByTestId(`form-field__${fieldId}__input`).getByTestId(`autocomplete-tag-${value}`);
|
|
12
12
|
this.prefilterNameInput = () => this.context.getByTestId('prefilter__name__input');
|
|
13
|
+
this.saveAsPopup = () => this._page
|
|
14
|
+
.locator('[role="dialog"]')
|
|
15
|
+
.filter({ has: this._page.getByTestId('prefilter__name__input') })
|
|
16
|
+
.last();
|
|
17
|
+
this.prefilterSaveButton = () => this.saveAsPopup().getByRole('button', { name: 'Save' });
|
|
13
18
|
this.saveAsOption = () => this._page.getByRole('menuitem', { name: 'Save' });
|
|
14
19
|
this.saveButton = () => this._page.getByRole('button', { name: 'Save' });
|
|
15
20
|
this.valueInput = (fieldId, part) => this.context.getByTestId(`form-field__${fieldId}__${part}__input`);
|
|
@@ -17,14 +22,23 @@ export class FilterPopupObjects extends BaseComponentObjects {
|
|
|
17
22
|
this.fieldControl = (fieldId, part) => this.context.getByTestId(`form-field__${fieldId}__${part}__control`).getByRole('button', { name: 'Open' });
|
|
18
23
|
this.operatorControl = (fieldId) => this.context.getByTestId(`form-field__${fieldId}__operator__control`).getByRole('button', { name: 'Open' });
|
|
19
24
|
this.timeOperatorControl = () => this.context.getByTestId('form-field__event-time__operator__control').getByRole('button', { name: 'Open' });
|
|
20
|
-
|
|
21
|
-
|
|
25
|
+
// Universal 2026.3.11 and later add the next date interval condition row as soon as a row has a value
|
|
26
|
+
// (Universal PR 21830), so a column can show several interval selectors. `index` counts only the column's
|
|
27
|
+
// own selectors, from the top. A row number in the test id also counts the other columns' rows, and it
|
|
28
|
+
// changes when the pop-up reopens with the active filters at the top.
|
|
29
|
+
this.intervalSelector = (colId, index = 0) => this.context.locator(`[data-testid$="__${colId}__select-interval"]`).nth(index);
|
|
30
|
+
this.intervalSelectorInput = (colId, index = 0) => this.intervalSelector(colId, index).getByTestId('select-interval__input');
|
|
22
31
|
this.intervalSelectorByRowIndex = (rowIndex, colId) => this.context.getByTestId(`advanced-filter-grid__row${rowIndex}__${colId}__select-interval`);
|
|
23
32
|
this.intervalSelectorInputByRowIndex = (rowIndex, colId) => this.intervalSelectorByRowIndex(rowIndex, colId).getByTestId('select-interval__input');
|
|
24
33
|
this.autocompleteOption = (key) => this._page.getByTestId(`autocomplete-option-${key}`);
|
|
25
34
|
this.emptySelectFieldRow = () => this.context.getByTestId('advanced-filter-grid__row-empty-select-field');
|
|
26
|
-
|
|
27
|
-
|
|
35
|
+
// The field picker is an MUI Select. Universal 2026.3.11 and later (MUI v6) render it with
|
|
36
|
+
// role="combobox", Universal 2026.3.10.1 and earlier (MUI 5.12.3) with role="button".
|
|
37
|
+
// Accept both so these selectors work on every supported Universal version.
|
|
38
|
+
this.emptySelectFieldRowButton = () => this.emptySelectFieldRow().getByRole('combobox').or(this.emptySelectFieldRow().getByRole('button'));
|
|
39
|
+
this.selectFieldButton = () => this._page
|
|
40
|
+
.getByRole('combobox', { name: 'Select field' })
|
|
41
|
+
.or(this._page.getByRole('button', { name: 'Select field' }));
|
|
28
42
|
this.addFieldButton = () => this._page.getByRole('button', { name: 'Add field' });
|
|
29
43
|
this.colIdOption = (field) => this._page.getByTestId(`col-id-${field}`);
|
|
30
44
|
this._page = page;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterPopupObjects.js","sourceRoot":"","sources":["../../../components/filter/FilterPopupObjects.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGlE,MAAM,OAAO,kBAAmB,SAAQ,oBAAoB;IAG1D,YAAY,IAAU,EAAE,IAAa;QACnC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAIb,sBAAiB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;QAExE,oBAAe,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;QAEvE,2BAAsB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAE7F,wBAAmB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,8BAA8B,CAAC,CAAC;QAErF,yBAAoB,GAAG,CAAC,GAAoD,EAAE,EAAE,CACrF,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAC;QAEpD,eAAU,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,OAAO,SAAS,CAAC,CAAC;QAE5F,mBAAc,GAAG,CAAC,OAAe,EAAE,KAAa,EAAE,EAAE,CACzD,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,OAAO,SAAS,CAAC,CAAC,WAAW,CAAC,oBAAoB,KAAK,EAAE,CAAC,CAAC;QAE9F,uBAAkB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;QAE9E,iBAAY,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAExE,eAAU,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAEpE,eAAU,GAAG,CAAC,OAAe,EAAE,IAAY,EAAE,EAAE,CACpD,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,OAAO,KAAK,IAAI,SAAS,CAAC,CAAC;QAE9D,cAAS,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAElE,iBAAY,GAAG,CAAC,OAAe,EAAE,IAAY,EAAE,EAAE,CACtD,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,OAAO,KAAK,IAAI,WAAW,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAEtG,oBAAe,GAAG,CAAC,OAAe,EAAE,EAAE,CAC3C,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,OAAO,qBAAqB,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAEvG,wBAAmB,GAAG,GAAG,EAAE,CAChC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,2CAA2C,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"FilterPopupObjects.js","sourceRoot":"","sources":["../../../components/filter/FilterPopupObjects.ts"],"names":[],"mappings":"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"}
|
|
@@ -68,6 +68,17 @@ export declare class Grid {
|
|
|
68
68
|
* Gets all unique cell values for a specified column by its column ID.
|
|
69
69
|
*/
|
|
70
70
|
getCellValuesByColId(colId: string): Promise<string[]>;
|
|
71
|
+
/**
|
|
72
|
+
* Retrieves the cell in the grid's pinned bottom summary row for a specified column.
|
|
73
|
+
*
|
|
74
|
+
* Only present when the subject has grid summaries (count/sum) configured on the column.
|
|
75
|
+
*/
|
|
76
|
+
getSummaryCellByColId(colId: string): Locator;
|
|
77
|
+
/**
|
|
78
|
+
* Gets the summary value for a specified column, or `null` when the subject has no
|
|
79
|
+
* grid summary configured for it.
|
|
80
|
+
*/
|
|
81
|
+
getSummaryValueByColId(colId: string): Promise<string | null>;
|
|
71
82
|
/**
|
|
72
83
|
* Retrieves all column header values from the grid.
|
|
73
84
|
*
|
|
@@ -106,6 +117,17 @@ export declare class Grid {
|
|
|
106
117
|
* @returns {Locator} Locator for grid rows.
|
|
107
118
|
*/
|
|
108
119
|
rows(): Locator;
|
|
120
|
+
/**
|
|
121
|
+
* Makes a row the active record by clicking one of its cells.
|
|
122
|
+
*
|
|
123
|
+
* Pass a read-only column. Clicking a row's centre, as `rows().nth(i).click()` does,
|
|
124
|
+
* lands on whichever cell happens to sit mid-row; on an auto-edit grid that opens an
|
|
125
|
+
* editor and dirties the record instead of selecting it.
|
|
126
|
+
*
|
|
127
|
+
* @param rowIndex Zero-based index of the row within the grid body.
|
|
128
|
+
* @param colId Column to click, e.g. the primary key column.
|
|
129
|
+
*/
|
|
130
|
+
selectRowByIndex(rowIndex: number, colId: string): Promise<void>;
|
|
109
131
|
/**
|
|
110
132
|
* Verifies the number of records in the grid and checks for "No result" overlay if zero.
|
|
111
133
|
* @param expectedRecordCount The expected number of records.
|
|
@@ -100,6 +100,26 @@ export class Grid {
|
|
|
100
100
|
}
|
|
101
101
|
return Array.from(collected);
|
|
102
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* Retrieves the cell in the grid's pinned bottom summary row for a specified column.
|
|
105
|
+
*
|
|
106
|
+
* Only present when the subject has grid summaries (count/sum) configured on the column.
|
|
107
|
+
*/
|
|
108
|
+
getSummaryCellByColId(colId) {
|
|
109
|
+
return this._gridObjects.summaryCellsByColumnId(colId);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Gets the summary value for a specified column, or `null` when the subject has no
|
|
113
|
+
* grid summary configured for it.
|
|
114
|
+
*/
|
|
115
|
+
async getSummaryValueByColId(colId) {
|
|
116
|
+
const summaryCell = this._gridObjects.summaryCellsByColumnId(colId);
|
|
117
|
+
if ((await summaryCell.count()) === 0) {
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
const value = await summaryCell.first().textContent();
|
|
121
|
+
return value === null ? null : value.trim();
|
|
122
|
+
}
|
|
103
123
|
/**
|
|
104
124
|
* Retrieves all column header values from the grid.
|
|
105
125
|
*
|
|
@@ -157,6 +177,19 @@ export class Grid {
|
|
|
157
177
|
rows() {
|
|
158
178
|
return this._gridObjects.rows();
|
|
159
179
|
}
|
|
180
|
+
/**
|
|
181
|
+
* Makes a row the active record by clicking one of its cells.
|
|
182
|
+
*
|
|
183
|
+
* Pass a read-only column. Clicking a row's centre, as `rows().nth(i).click()` does,
|
|
184
|
+
* lands on whichever cell happens to sit mid-row; on an auto-edit grid that opens an
|
|
185
|
+
* editor and dirties the record instead of selecting it.
|
|
186
|
+
*
|
|
187
|
+
* @param rowIndex Zero-based index of the row within the grid body.
|
|
188
|
+
* @param colId Column to click, e.g. the primary key column.
|
|
189
|
+
*/
|
|
190
|
+
async selectRowByIndex(rowIndex, colId) {
|
|
191
|
+
await this._gridObjects.cellByRowIndexAndColumnId(rowIndex, colId).click();
|
|
192
|
+
}
|
|
160
193
|
/**
|
|
161
194
|
* Verifies the number of records in the grid and checks for "No result" overlay if zero.
|
|
162
195
|
* @param expectedRecordCount The expected number of records.
|
|
@@ -171,7 +204,8 @@ export class Grid {
|
|
|
171
204
|
}
|
|
172
205
|
}
|
|
173
206
|
await pollUntil(() => this.rows().count(), {
|
|
174
|
-
predicate: (n) => n === expectedRecordCount
|
|
207
|
+
predicate: (n) => n === expectedRecordCount,
|
|
208
|
+
description: `the grid to show ${expectedRecordCount} records`
|
|
175
209
|
});
|
|
176
210
|
}
|
|
177
211
|
/**
|
|
@@ -180,7 +214,7 @@ export class Grid {
|
|
|
180
214
|
*/
|
|
181
215
|
async hasNoRowsOverlay() {
|
|
182
216
|
const overlay = this._gridObjects.noRowsOverlay();
|
|
183
|
-
const hasCorrectWording = await pollUntil(async () => (await overlay.textContent())?.trim().includes('No result') ?? false, { predicate: Boolean });
|
|
217
|
+
const hasCorrectWording = await pollUntil(async () => (await overlay.textContent())?.trim().includes('No result') ?? false, { predicate: Boolean, description: 'the grid to show the "No result" overlay' });
|
|
184
218
|
return hasCorrectWording && (await overlay.isVisible());
|
|
185
219
|
}
|
|
186
220
|
}
|