@apia/query 5.0.1 → 5.0.6
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/ListController.d.ts +29 -5
- package/dist/ListController.js +83 -36
- package/dist/ListController.js.map +1 -1
- package/dist/QueriesFunctionalityController.d.ts +25 -2
- package/dist/QueriesFunctionalityController.js +182 -53
- package/dist/QueriesFunctionalityController.js.map +1 -1
- package/dist/QueryPivotPresentationState.d.ts +40 -0
- package/dist/QueryPivotPresentationState.d.ts.map +1 -0
- package/dist/QueryPivotPresentationState.js +206 -0
- package/dist/QueryPivotPresentationState.js.map +1 -0
- package/dist/components/Pagination.js +3 -3
- package/dist/components/Pagination.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +4 -0
- package/package.json +8 -8
package/dist/ListController.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ type ListState = {
|
|
|
16
16
|
showPagination?: boolean;
|
|
17
17
|
showRegisterAmount?: boolean;
|
|
18
18
|
avoidRefreshOnClearFilters?: boolean;
|
|
19
|
-
|
|
19
|
+
hasReachedMax?: boolean;
|
|
20
20
|
hasMore?: boolean;
|
|
21
21
|
};
|
|
22
22
|
running: boolean;
|
|
@@ -68,6 +68,12 @@ type TListControllerConfiguration = {
|
|
|
68
68
|
canSetRegistersPerPage?: boolean;
|
|
69
69
|
refreshOnStartup?: boolean;
|
|
70
70
|
refreshAction?: string;
|
|
71
|
+
/**
|
|
72
|
+
* Runs filter-change server events sequentially so every event is processed
|
|
73
|
+
* and their table reconstructions finish in the same order they were emitted.
|
|
74
|
+
* Defaults to true. Set to false to retain the previous latest-event behavior.
|
|
75
|
+
*/
|
|
76
|
+
serializeFilterChanges?: boolean;
|
|
71
77
|
};
|
|
72
78
|
type Arr<T> = T extends Array<any> ? T : Array<T>;
|
|
73
79
|
type TQueryFilter = Arr<TLoadStructure['filters']>[0] & {
|
|
@@ -82,12 +88,22 @@ declare class ListController {
|
|
|
82
88
|
env: TQueryEnvironment;
|
|
83
89
|
configuration?: TListControllerConfiguration | undefined;
|
|
84
90
|
queue: TasksQueue;
|
|
91
|
+
/** Dedicated queue that preserves every filter business event in FIFO order. */
|
|
92
|
+
protected readonly filterChangeQueue: TasksQueue;
|
|
93
|
+
/** Prevents runAutomatically from scheduling extra refreshes during a bulk clear. */
|
|
94
|
+
protected isClearingFilters: boolean;
|
|
95
|
+
/** Selects the dedicated FIFO queue instead of the cancellable general queue. */
|
|
96
|
+
protected readonly serializeFilterChanges: boolean;
|
|
97
|
+
/** Reapplies required-filter errors when a clear operation rebuilds the filters. */
|
|
98
|
+
protected validateRequiredFiltersAfterBuild: boolean;
|
|
85
99
|
readonly table: TableController;
|
|
86
100
|
readonly state: ListState;
|
|
87
101
|
registersPerPage: number;
|
|
88
102
|
protected emitter: EventEmitter<{
|
|
89
103
|
refreshFuntionality: TFuntionalityData;
|
|
90
104
|
deleteFilters: any;
|
|
105
|
+
validationResult: boolean;
|
|
106
|
+
hasBuiltFromGenericTable: null;
|
|
91
107
|
}>;
|
|
92
108
|
constructor(env: TQueryEnvironment, configuration?: TListControllerConfiguration | undefined);
|
|
93
109
|
protected handleClickAction(action: TBasicAction, ev: React.KeyboardEvent<Element> | React.MouseEvent<Element, MouseEvent>): void;
|
|
@@ -100,7 +116,10 @@ declare class ListController {
|
|
|
100
116
|
protected getFilterTypesMethodParameters(defaultParams: Record<string, unknown>): Record<string, unknown>;
|
|
101
117
|
clearFilters(): Promise<void>;
|
|
102
118
|
page(pageNumber: number): Promise<void>;
|
|
103
|
-
validateFilters(
|
|
119
|
+
validateFilters(props?: {
|
|
120
|
+
showError?: boolean;
|
|
121
|
+
notify?: boolean;
|
|
122
|
+
}): boolean;
|
|
104
123
|
protected buildRefreshPostData(): Parameters<(typeof ApiaApi)['post']>[2];
|
|
105
124
|
protected buildExportConfirmData(): Record<string, unknown>;
|
|
106
125
|
protected filterChange(parameters?: Partial<{
|
|
@@ -110,19 +129,24 @@ declare class ListController {
|
|
|
110
129
|
refresh(parameters?: Partial<{
|
|
111
130
|
action: string;
|
|
112
131
|
clearBefore?: boolean;
|
|
132
|
+
keepStartingCustomLabel?: boolean;
|
|
133
|
+
/** Starts a new result set on page one instead of reloading the current page. */
|
|
134
|
+
resetPage?: boolean;
|
|
113
135
|
}>): Promise<false | undefined>;
|
|
114
136
|
protected refreshFuntionality(data: Omit<TListRefreshResponse, 'list'>): void;
|
|
115
|
-
on: <K extends "refreshFuntionality" | "deleteFilters">(event: K, cb: _apia_util.Callback<{
|
|
137
|
+
on: <K extends "refreshFuntionality" | "deleteFilters" | "validationResult" | "hasBuiltFromGenericTable">(event: K, cb: _apia_util.Callback<{
|
|
116
138
|
refreshFuntionality: TFuntionalityData;
|
|
117
139
|
deleteFilters: any;
|
|
140
|
+
validationResult: boolean;
|
|
141
|
+
hasBuiltFromGenericTable: null;
|
|
118
142
|
}, K>) => _apia_util.UnSubscriber;
|
|
119
143
|
print(): Promise<false | undefined>;
|
|
120
144
|
filterTypes(): Promise<false | undefined>;
|
|
121
145
|
export(): Promise<false | undefined>;
|
|
122
146
|
kill(): void;
|
|
123
147
|
protected parseResultBeforeBuild(result: ListState & TLoadStructure): ListState & TLoadStructure;
|
|
124
|
-
protected processRefreshResult(result: TListRefreshResponse): void;
|
|
125
|
-
processStructureResult(result: TLoadStructure): void;
|
|
148
|
+
protected processRefreshResult(result: TListRefreshResponse, keepStartingCustomLabel?: boolean): void;
|
|
149
|
+
processStructureResult(result: TLoadStructure, keepStartingCustomLabel?: boolean): void;
|
|
126
150
|
setRegistersPerPage(_n: number): void;
|
|
127
151
|
}
|
|
128
152
|
|
package/dist/ListController.js
CHANGED
|
@@ -22,6 +22,14 @@ class ListController {
|
|
|
22
22
|
this.env = env;
|
|
23
23
|
this.configuration = configuration;
|
|
24
24
|
__publicField(this, "queue", new TasksQueue());
|
|
25
|
+
/** Dedicated queue that preserves every filter business event in FIFO order. */
|
|
26
|
+
__publicField(this, "filterChangeQueue", new TasksQueue());
|
|
27
|
+
/** Prevents runAutomatically from scheduling extra refreshes during a bulk clear. */
|
|
28
|
+
__publicField(this, "isClearingFilters", false);
|
|
29
|
+
/** Selects the dedicated FIFO queue instead of the cancellable general queue. */
|
|
30
|
+
__publicField(this, "serializeFilterChanges");
|
|
31
|
+
/** Reapplies required-filter errors when a clear operation rebuilds the filters. */
|
|
32
|
+
__publicField(this, "validateRequiredFiltersAfterBuild", false);
|
|
25
33
|
__publicField(this, "table");
|
|
26
34
|
__publicField(this, "state", {
|
|
27
35
|
areAllFiltersApplied: true,
|
|
@@ -32,7 +40,7 @@ class ListController {
|
|
|
32
40
|
showPagination: true,
|
|
33
41
|
showRegisterAmount: true,
|
|
34
42
|
avoidRefreshOnClearFilters: false,
|
|
35
|
-
|
|
43
|
+
hasReachedMax: false,
|
|
36
44
|
hasMore: false
|
|
37
45
|
},
|
|
38
46
|
running: true,
|
|
@@ -46,37 +54,38 @@ class ListController {
|
|
|
46
54
|
__publicField(this, "emitter", new EventEmitter());
|
|
47
55
|
__publicField(this, "refreshTimeout", -1);
|
|
48
56
|
__publicField(this, "on", this.emitter.on.bind(this.emitter));
|
|
57
|
+
this.serializeFilterChanges = configuration?.serializeFilterChanges !== false;
|
|
49
58
|
this.table = new TableController({
|
|
50
59
|
labels: env.context.labels,
|
|
51
60
|
getDateFromString: env.getDateFromString,
|
|
52
61
|
getStringFromDate: env.getStringFromDate
|
|
53
62
|
});
|
|
54
|
-
this.table.setState("customLabel", window.MSG_FIRST_TIME);
|
|
55
63
|
this.table.head.getFiltersRow()?.setState("isHidden", true);
|
|
56
64
|
if (configuration?.refreshOnStartup !== false) {
|
|
57
|
-
this.refresh();
|
|
65
|
+
this.refresh({ keepStartingCustomLabel: true });
|
|
58
66
|
}
|
|
59
67
|
this.table.on("filterChange", async (filter) => {
|
|
68
|
+
const isPartOfClearFilters = this.isClearingFilters;
|
|
60
69
|
runInAction(() => {
|
|
61
70
|
this.state.areAllFiltersApplied = false;
|
|
62
71
|
});
|
|
63
72
|
await this.filterChange({ fireFilterName: filter.getState("name") });
|
|
64
|
-
if (filter.getState("runAutomatically")) {
|
|
73
|
+
if (filter.getState("runAutomatically") && !isPartOfClearFilters) {
|
|
65
74
|
await this.throttleRefresh();
|
|
66
75
|
}
|
|
67
76
|
});
|
|
68
77
|
this.table.on("filterPressEnter", (filter) => {
|
|
69
78
|
if (filter.getState("type") !== "DATE") {
|
|
70
|
-
this.refresh();
|
|
79
|
+
this.refresh({ resetPage: true });
|
|
71
80
|
}
|
|
72
81
|
});
|
|
73
82
|
this.table.on("filterBlur", (filter) => {
|
|
74
83
|
if (filter instanceof DateFilter) {
|
|
75
|
-
this.refresh();
|
|
84
|
+
this.refresh({ resetPage: true });
|
|
76
85
|
}
|
|
77
86
|
});
|
|
78
87
|
this.table.on("columnSort", () => {
|
|
79
|
-
this.refresh();
|
|
88
|
+
this.refresh({ resetPage: true });
|
|
80
89
|
});
|
|
81
90
|
this.table.on("rowDblClick", ({ action, ev }) => {
|
|
82
91
|
this.handleDblClickAction(action, ev);
|
|
@@ -101,7 +110,7 @@ class ListController {
|
|
|
101
110
|
throttleRefresh() {
|
|
102
111
|
clearTimeout(this.refreshTimeout);
|
|
103
112
|
this.refreshTimeout = setTimeout(() => {
|
|
104
|
-
this.refresh();
|
|
113
|
+
this.refresh({ resetPage: true });
|
|
105
114
|
}, 300);
|
|
106
115
|
}
|
|
107
116
|
getPageMethodParameters(defaultParams) {
|
|
@@ -142,19 +151,22 @@ class ListController {
|
|
|
142
151
|
}
|
|
143
152
|
});
|
|
144
153
|
}
|
|
145
|
-
validateFilters() {
|
|
146
|
-
const invalidFilters = this.table.getFilters().filter((c) => !c.validate());
|
|
154
|
+
validateFilters(props) {
|
|
155
|
+
const invalidFilters = this.table.getFilters().filter((c) => !c.validate(props?.showError !== false));
|
|
147
156
|
if (invalidFilters.length) {
|
|
148
157
|
this.table.setState("customLabel", "");
|
|
149
|
-
notify
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
158
|
+
if (props?.notify !== false) {
|
|
159
|
+
notify({
|
|
160
|
+
title: getLabel("titWarning").text,
|
|
161
|
+
message: getLabel("msgQryFilterRequiredList", {
|
|
162
|
+
text: {
|
|
163
|
+
TOK1: invalidFilters.map((c) => c.getState("title")).join(", ")
|
|
164
|
+
}
|
|
165
|
+
}).text
|
|
166
|
+
});
|
|
167
|
+
}
|
|
157
168
|
}
|
|
169
|
+
this.emitter.emit("validationResult", invalidFilters.length === 0);
|
|
158
170
|
return invalidFilters.length === 0;
|
|
159
171
|
}
|
|
160
172
|
buildRefreshPostData() {
|
|
@@ -196,8 +208,11 @@ class ListController {
|
|
|
196
208
|
if (!parameters?.fireFilterName && !this.table.getFilters().find((c) => c.getState("hasEvents"))) {
|
|
197
209
|
return;
|
|
198
210
|
}
|
|
199
|
-
this.queue
|
|
200
|
-
|
|
211
|
+
const queue = this.serializeFilterChanges ? this.filterChangeQueue : this.queue;
|
|
212
|
+
if (!this.serializeFilterChanges) {
|
|
213
|
+
queue.clear();
|
|
214
|
+
}
|
|
215
|
+
await queue.run(async () => {
|
|
201
216
|
const result = await ApiaApi.post(
|
|
202
217
|
{ ...this.env.context },
|
|
203
218
|
this.getRefreshMethodParameters({
|
|
@@ -222,6 +237,8 @@ class ListController {
|
|
|
222
237
|
this.state.areAllFiltersApplied = false;
|
|
223
238
|
}
|
|
224
239
|
this.queue.clear();
|
|
240
|
+
const refreshAction = parameters?.action ?? (this.configuration?.refreshAction || "refresh");
|
|
241
|
+
const page = parameters?.resetPage || parameters?.clearBefore ? 1 : Math.max(1, this.state.navigation.currentPage);
|
|
225
242
|
await this.queue.run(async () => {
|
|
226
243
|
if (this.validateFilters()) {
|
|
227
244
|
runInAction(() => {
|
|
@@ -230,14 +247,19 @@ class ListController {
|
|
|
230
247
|
const result = await ApiaApi.post(
|
|
231
248
|
{ ...this.env.context },
|
|
232
249
|
this.getRefreshMethodParameters({
|
|
233
|
-
action:
|
|
250
|
+
action: refreshAction,
|
|
251
|
+
page,
|
|
252
|
+
forceDataRefresh: true
|
|
234
253
|
}),
|
|
235
254
|
this.buildRefreshPostData()
|
|
236
255
|
);
|
|
237
256
|
if (result?.data?.list) {
|
|
238
|
-
this.processRefreshResult(
|
|
257
|
+
this.processRefreshResult(
|
|
258
|
+
result.data,
|
|
259
|
+
parameters?.keepStartingCustomLabel
|
|
260
|
+
);
|
|
239
261
|
}
|
|
240
|
-
if (result?.data?.list
|
|
262
|
+
if (result?.data?.list?.attributes) {
|
|
241
263
|
this.handleAttributes(result?.data?.list.attributes);
|
|
242
264
|
}
|
|
243
265
|
if (result?.data) {
|
|
@@ -245,6 +267,11 @@ class ListController {
|
|
|
245
267
|
}
|
|
246
268
|
} else {
|
|
247
269
|
this.table.body.setState("rows", []);
|
|
270
|
+
this.state.navigation.hasMore = false;
|
|
271
|
+
this.state.navigation.hasReachedMax = false;
|
|
272
|
+
this.state.navigation.pagesCount = 0;
|
|
273
|
+
this.state.navigation.registers = 0;
|
|
274
|
+
this.state.navigation.currentPage = 1;
|
|
248
275
|
}
|
|
249
276
|
});
|
|
250
277
|
}
|
|
@@ -329,14 +356,17 @@ class ListController {
|
|
|
329
356
|
parseResultBeforeBuild(result) {
|
|
330
357
|
return result;
|
|
331
358
|
}
|
|
332
|
-
processRefreshResult(result) {
|
|
359
|
+
processRefreshResult(result, keepStartingCustomLabel) {
|
|
333
360
|
runInAction(() => {
|
|
334
|
-
this.processStructureResult(
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
361
|
+
this.processStructureResult(
|
|
362
|
+
{
|
|
363
|
+
behavior: result.list.behavior,
|
|
364
|
+
columns: result.list.columns,
|
|
365
|
+
filters: result.list.filters,
|
|
366
|
+
rows: result.list.rows
|
|
367
|
+
},
|
|
368
|
+
keepStartingCustomLabel
|
|
369
|
+
);
|
|
340
370
|
if (arrayOrArray(result.list.rows).length === 0 && this.table.body.rows.length > 0 || this.state.customLabel === window.MSG_FILTER_REQUIRED || !this.state.avoidExecuteFirstRefresh && this.state.hasBuiltFromGenericTable || this.state.avoidExecuteFirstRefresh && this.state.hasBuiltFromGenericTable) {
|
|
341
371
|
this.table.setState("customLabel", window.FINDER_NO_DATA);
|
|
342
372
|
}
|
|
@@ -344,6 +374,9 @@ class ListController {
|
|
|
344
374
|
getDateFromString,
|
|
345
375
|
getStringFromDate
|
|
346
376
|
});
|
|
377
|
+
if (this.validateRequiredFiltersAfterBuild) {
|
|
378
|
+
this.validateFilters({ notify: false });
|
|
379
|
+
}
|
|
347
380
|
const filters = this.table.head.getFilters();
|
|
348
381
|
if (filters) {
|
|
349
382
|
if (Array.from(filters.filters.values()).some(
|
|
@@ -375,10 +408,14 @@ class ListController {
|
|
|
375
408
|
if (this.configuration) {
|
|
376
409
|
this.configuration.refreshOnDeleteFilters = !result.list.navigation.avoidRefreshOnClearFilters;
|
|
377
410
|
}
|
|
411
|
+
if (!this.state.hasBuiltFromGenericTable) {
|
|
412
|
+
this.validateFilters({ showError: false });
|
|
413
|
+
}
|
|
378
414
|
this.state.hasBuiltFromGenericTable = true;
|
|
415
|
+
this.emitter.emit("hasBuiltFromGenericTable", null);
|
|
379
416
|
});
|
|
380
417
|
}
|
|
381
|
-
processStructureResult(result) {
|
|
418
|
+
processStructureResult(result, keepStartingCustomLabel) {
|
|
382
419
|
runInAction(() => {
|
|
383
420
|
this.table.setState("allowEdition", result.behavior.allowEdition);
|
|
384
421
|
this.table.setState("allowSelection", result.behavior.allowSelection);
|
|
@@ -391,6 +428,10 @@ class ListController {
|
|
|
391
428
|
"avoidExecuteFirstRefresh",
|
|
392
429
|
!!result.behavior.avoidExecuteFirstRefresh
|
|
393
430
|
);
|
|
431
|
+
this.state.avoidExecuteFirstRefresh = !!result.behavior.avoidExecuteFirstRefresh;
|
|
432
|
+
if (result.behavior.avoidExecuteFirstRefresh && !keepStartingCustomLabel) {
|
|
433
|
+
this.table.setState("customLabel", "");
|
|
434
|
+
}
|
|
394
435
|
this.table.head.build({
|
|
395
436
|
columns: arrayOrArray(result.columns).map(({ attributes, ...c }) => {
|
|
396
437
|
return {
|
|
@@ -400,7 +441,7 @@ class ListController {
|
|
|
400
441
|
sortable: c.isSortable,
|
|
401
442
|
isHidden: c.isHidden,
|
|
402
443
|
properties: c,
|
|
403
|
-
content: c.title,
|
|
444
|
+
content: c.title === "" ? c.name : c.title,
|
|
404
445
|
className: c.className,
|
|
405
446
|
sortState: c.sortType,
|
|
406
447
|
showInAccordionTitle: c.showInAccordionTitle,
|
|
@@ -408,7 +449,8 @@ class ListController {
|
|
|
408
449
|
style: {
|
|
409
450
|
width: c.width
|
|
410
451
|
}
|
|
411
|
-
}
|
|
452
|
+
},
|
|
453
|
+
...attributes
|
|
412
454
|
};
|
|
413
455
|
}),
|
|
414
456
|
filters: arrayOrArray(result.filters).map(({ attributes, ...f }) => {
|
|
@@ -423,8 +465,9 @@ class ListController {
|
|
|
423
465
|
properties: f,
|
|
424
466
|
runAutomatically: f.runAutomatically,
|
|
425
467
|
columnName: f.columnName,
|
|
426
|
-
value: Array.isArray(f.options) || arrayOrArray(f.options)[0]
|
|
427
|
-
asAdditional: f.asAdditional
|
|
468
|
+
value: Array.isArray(f.options) || arrayOrArray(f.options)[0]?.label !== "" ? f.initialValue : "",
|
|
469
|
+
asAdditional: f.asAdditional,
|
|
470
|
+
...attributes
|
|
428
471
|
};
|
|
429
472
|
}
|
|
430
473
|
return {
|
|
@@ -438,10 +481,14 @@ class ListController {
|
|
|
438
481
|
runAutomatically: f.runAutomatically,
|
|
439
482
|
columnName: f.columnName,
|
|
440
483
|
value: f.initialValue,
|
|
441
|
-
asAdditional: f.asAdditional
|
|
484
|
+
asAdditional: f.asAdditional,
|
|
485
|
+
...attributes
|
|
442
486
|
};
|
|
443
487
|
})
|
|
444
488
|
});
|
|
489
|
+
if (this.validateRequiredFiltersAfterBuild || this.state.hasBuiltFromGenericTable && this.table.getFilters().some((f) => f.getState("runAutomatically"))) {
|
|
490
|
+
this.validateFilters({ notify: false });
|
|
491
|
+
}
|
|
445
492
|
});
|
|
446
493
|
}
|
|
447
494
|
setRegistersPerPage(_n) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListController.js","sources":["../src/ListController.tsx"],"sourcesContent":["import { TQueryEnvironment } from './types';\r\nimport { ApiaApi } from '@apia/api2';\r\nimport {\r\n arrayOrArray,\r\n downloadUrl,\r\n EventEmitter,\r\n getLabel,\r\n handleAction,\r\n TasksQueue,\r\n TBasicAction,\r\n TLoadStructure,\r\n} from '@apia/util';\r\nimport { makeObservable, observable, runInAction } from 'mobx';\r\nimport { notify } from '@apia/notifications';\r\nimport {\r\n Cell,\r\n DateFilter,\r\n FilterRenderer,\r\n TableController,\r\n} from '@apia/table2-controller';\r\nimport { getDateFromString } from './utils/getStringFromDate';\r\nimport { getStringFromDate } from './utils/getDateFromString';\r\nimport { ApiaUtil } from '@apia/components';\r\nimport { FilterTypes } from './components/modals/FilterTypes';\r\nimport { ExportModal } from './components/modals/ExportModal';\r\nimport { ExportController } from './components/modals/controllers/ExportController';\r\nimport {\r\n PivotTableConfig,\r\n TApiaChartDefinition,\r\n} from './QueriesFunctionalityController';\r\nimport { FC } from 'react';\r\n\r\nexport type ListState = {\r\n areAllFiltersApplied: boolean;\r\n attributes?: Record<string, unknown>;\r\n navigation: {\r\n pagesCount: number;\r\n registers: number;\r\n currentPage: number;\r\n showPagination?: boolean;\r\n showRegisterAmount?: boolean;\r\n avoidRefreshOnClearFilters?: boolean;\r\n reachedMax?: boolean;\r\n hasMore?: boolean;\r\n };\r\n running: boolean;\r\n title?: string;\r\n description?: string;\r\n customLabel?: string;\r\n avoidExecuteFirstRefresh?: boolean;\r\n hasBuiltFromGenericTable?: boolean;\r\n};\r\n\r\nexport type ListFunctionalityState = {\r\n fncId: number;\r\n isFavorite: boolean;\r\n isMaximized: boolean;\r\n};\r\n\r\nexport type TFuntionalityData = {\r\n chart?: {\r\n charts: { chart: TApiaChartDefinition } | { chart: TApiaChartDefinition }[];\r\n };\r\n chartButton?: {\r\n chartsbuttons:\r\n | { chartbutton: { qryChtId: string; title: string } }\r\n | { chartbutton: { qryChtId: string; title: string } }[];\r\n };\r\n pivot?: {\r\n pivots: { pivot: PivotTableConfig } | { pivot: PivotTableConfig }[];\r\n };\r\n};\r\n\r\nexport type TListRefreshResponse = {\r\n list: ListState & TLoadStructure;\r\n} & TFuntionalityData;\r\n\r\nexport type TListControllerConfiguration = {\r\n refreshOnDeleteFilters?: boolean;\r\n canSetRegistersPerPage?: boolean;\r\n refreshOnStartup?: boolean;\r\n refreshAction?: string;\r\n};\r\n\r\ntype Arr<T> = T extends Array<any> ? T : Array<T>;\r\nexport type TQueryFilter = Arr<TLoadStructure['filters']>[0] & {\r\n Renderer?: FilterRenderer;\r\n};\r\n\r\nexport type TQueryColumn = Arr<TLoadStructure['columns']>[0] & {\r\n Renderer?: FC<{ cell: Cell }>;\r\n};\r\n\r\nexport class ListController {\r\n queue = new TasksQueue();\r\n public readonly table: TableController;\r\n public readonly state: ListState = {\r\n areAllFiltersApplied: true,\r\n navigation: {\r\n currentPage: 0,\r\n pagesCount: 0,\r\n registers: 0,\r\n showPagination: true,\r\n showRegisterAmount: true,\r\n avoidRefreshOnClearFilters: false,\r\n reachedMax: false,\r\n hasMore: false,\r\n },\r\n running: true,\r\n title: '',\r\n description: '',\r\n customLabel: window.MSG_FIRST_TIME,\r\n avoidExecuteFirstRefresh: false,\r\n hasBuiltFromGenericTable: false,\r\n };\r\n registersPerPage = 30;\r\n\r\n protected emitter = new EventEmitter<{\r\n refreshFuntionality: TFuntionalityData;\r\n deleteFilters: any;\r\n }>();\r\n\r\n constructor(\r\n public env: TQueryEnvironment,\r\n public configuration?: TListControllerConfiguration,\r\n ) {\r\n this.table = new TableController({\r\n labels: env.context.labels,\r\n getDateFromString: env.getDateFromString,\r\n getStringFromDate: env.getStringFromDate,\r\n });\r\n this.table.setState('customLabel', window.MSG_FIRST_TIME);\r\n\r\n this.table.head.getFiltersRow()?.setState('isHidden', true);\r\n if (configuration?.refreshOnStartup !== false) {\r\n this.refresh();\r\n }\r\n\r\n this.table.on('filterChange', async (filter) => {\r\n runInAction(() => {\r\n this.state.areAllFiltersApplied = false;\r\n });\r\n\r\n await this.filterChange({ fireFilterName: filter.getState('name') });\r\n\r\n if (filter.getState('runAutomatically')) {\r\n await this.throttleRefresh();\r\n }\r\n });\r\n\r\n this.table.on('filterPressEnter', (filter) => {\r\n if (filter.getState('type') !== 'DATE') {\r\n this.refresh();\r\n }\r\n });\r\n\r\n this.table.on('filterBlur', (filter) => {\r\n if (filter instanceof DateFilter) {\r\n this.refresh();\r\n }\r\n });\r\n\r\n this.table.on('columnSort', () => {\r\n this.refresh();\r\n });\r\n this.table.on('rowDblClick', ({ action, ev }) => {\r\n this.handleDblClickAction(action, ev);\r\n });\r\n\r\n this.table.on('rowClick', ({ action, ev }) => {\r\n this.handleClickAction(action, ev);\r\n });\r\n makeObservable(this, { state: observable, table: observable });\r\n }\r\n\r\n protected handleClickAction(\r\n action: TBasicAction,\r\n ev: React.KeyboardEvent<Element> | React.MouseEvent<Element, MouseEvent>,\r\n ) {\r\n handleAction({}, ev, action);\r\n }\r\n\r\n protected handleDblClickAction(\r\n action: TBasicAction,\r\n ev: React.KeyboardEvent<Element> | React.MouseEvent<Element, MouseEvent>,\r\n ) {\r\n handleAction({}, ev, action);\r\n }\r\n\r\n protected handleAttributes(attributes: Pick<ListState, 'attributes'>): void {\r\n runInAction(() => {\r\n this.state.attributes = attributes;\r\n });\r\n return;\r\n }\r\n\r\n protected refreshTimeout = -1;\r\n protected throttleRefresh() {\r\n clearTimeout(this.refreshTimeout);\r\n this.refreshTimeout = setTimeout(() => {\r\n this.refresh();\r\n }, 300) as any;\r\n }\r\n\r\n protected getPageMethodParameters(\r\n defaultParams: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return defaultParams;\r\n }\r\n\r\n protected getRefreshMethodParameters(\r\n defaultParams: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return defaultParams;\r\n }\r\n\r\n protected getFilterTypesMethodParameters(\r\n defaultParams: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return defaultParams;\r\n }\r\n\r\n async clearFilters() {\r\n this.table.getFilters().forEach((c) => c.clear(false));\r\n runInAction(() => {\r\n this.state.areAllFiltersApplied = false;\r\n });\r\n\r\n this.emitter.emit('deleteFilters', null);\r\n await this.filterChange({ subAction: 'clearFilters' });\r\n\r\n if (this.configuration?.refreshOnDeleteFilters) {\r\n this.throttleRefresh();\r\n }\r\n }\r\n\r\n async page(pageNumber: number) {\r\n this.queue.clear();\r\n await this.queue.run(async () => {\r\n if (this.validateFilters()) {\r\n const result = await ApiaApi.post<TListRefreshResponse>(\r\n { ...this.env.context },\r\n this.getPageMethodParameters({\r\n action: this.configuration?.refreshAction || 'refresh',\r\n page: pageNumber,\r\n }),\r\n this.buildRefreshPostData(),\r\n );\r\n\r\n if (result?.data?.list) {\r\n this.processRefreshResult(result.data);\r\n }\r\n }\r\n });\r\n }\r\n\r\n public validateFilters() {\r\n const invalidFilters = this.table.getFilters().filter((c) => !c.validate());\r\n if (invalidFilters.length) {\r\n this.table.setState('customLabel', ''); //window.MSG_FILTER_REQUIRED);\r\n notify({\r\n title: getLabel('titWarning').text,\r\n message: getLabel('msgQryFilterRequiredList', {\r\n text: {\r\n TOK1: invalidFilters.map((c) => c.getState('title')).join(', '),\r\n },\r\n }).text,\r\n });\r\n }\r\n return invalidFilters.length === 0;\r\n }\r\n\r\n protected buildRefreshPostData(): Parameters<(typeof ApiaApi)['post']>[2] {\r\n return {\r\n postData: {\r\n ...this.table.getFilters().reduce(\r\n (acc, cur) => ({\r\n ...acc,\r\n [`filter_${cur.getState('name')}`]: cur.getValueForSubmit(),\r\n }),\r\n {},\r\n ),\r\n ...this.table.getColumns().reduce(\r\n (acc, cur) => ({\r\n ...acc,\r\n [`sort_${cur.getState('colName')}`]: cur.getState('sortState'),\r\n }),\r\n {},\r\n ),\r\n amount: this.table.getState('registersToShow'),\r\n },\r\n postDataTreatement: 'stringify',\r\n postDataStringifyOptions: { arrayFormat: 'repeat' },\r\n };\r\n }\r\n\r\n protected buildExportConfirmData(): Record<string, unknown> {\r\n return {\r\n format: ExportController.getInstance().getFormat(),\r\n amount: ExportController.getInstance().getAmount(),\r\n };\r\n }\r\n\r\n protected async filterChange(\r\n parameters?: Partial<{\r\n fireFilterName?: string;\r\n subAction?: string;\r\n }>,\r\n ) {\r\n if (!this.state.running) {\r\n return false;\r\n }\r\n\r\n if (\r\n parameters?.fireFilterName &&\r\n !this.table.getFilter(parameters.fireFilterName)?.getState('hasEvents')\r\n ) {\r\n return;\r\n }\r\n\r\n if (\r\n !parameters?.fireFilterName &&\r\n !this.table.getFilters().find((c) => c.getState('hasEvents'))\r\n ) {\r\n return;\r\n }\r\n\r\n this.queue.clear();\r\n await this.queue.run(async () => {\r\n const result = await ApiaApi.post<{ list: TLoadStructure }>(\r\n { ...this.env.context },\r\n this.getRefreshMethodParameters({\r\n action: 'newLoadStructure', //this.configuration?.refreshAction || 'refresh',\r\n subAction: parameters?.subAction ?? null,\r\n fireFilterName: parameters?.fireFilterName ?? null,\r\n }),\r\n this.buildRefreshPostData(),\r\n );\r\n\r\n if (result?.data?.list) {\r\n this.processStructureResult(result.data.list);\r\n }\r\n });\r\n }\r\n\r\n async refresh(\r\n parameters?: Partial<{ action: string; clearBefore?: boolean }>,\r\n ) {\r\n if (!this.state.running) {\r\n return false;\r\n }\r\n\r\n if (parameters?.clearBefore) {\r\n this.table.getFilters().forEach((c) => c.clear(false));\r\n this.state.areAllFiltersApplied = false;\r\n }\r\n\r\n this.queue.clear();\r\n await this.queue.run(async () => {\r\n if (this.validateFilters()) {\r\n runInAction(() => {\r\n this.state.areAllFiltersApplied = true;\r\n });\r\n\r\n const result = await ApiaApi.post<TListRefreshResponse>(\r\n { ...this.env.context },\r\n this.getRefreshMethodParameters({\r\n action:\r\n parameters?.action ??\r\n (this.configuration?.refreshAction || 'refresh'),\r\n }),\r\n this.buildRefreshPostData(),\r\n );\r\n\r\n if (result?.data?.list) {\r\n this.processRefreshResult(result.data);\r\n }\r\n if (result?.data?.list.attributes) {\r\n this.handleAttributes(result?.data?.list.attributes);\r\n }\r\n\r\n if (result?.data) {\r\n this.refreshFuntionality(result?.data);\r\n }\r\n } else {\r\n this.table.body.setState('rows', []);\r\n }\r\n });\r\n }\r\n\r\n protected refreshFuntionality(data: Omit<TListRefreshResponse, 'list'>) {\r\n if (data?.chart || data?.chartButton || data?.pivot) {\r\n this.emitter.emit('refreshFuntionality', data);\r\n }\r\n }\r\n\r\n on = this.emitter.on.bind(this.emitter);\r\n\r\n async print() {\r\n if (!this.state.running) {\r\n return false;\r\n }\r\n this.queue.clear();\r\n\r\n const w = window.open(\r\n `${window.CONTEXT}/react/generic/print.jsp?printComponent=print/query/PrintQuery`,\r\n '_blank',\r\n `height=${screen.height}, width=${screen.width},location=no,menubar=yes,resizable=yes,scrollbars=yes,titlebar=yes,toolbar=no`,\r\n );\r\n if (w) {\r\n w.onload = () => {\r\n w.printData = this as unknown as string;\r\n };\r\n w.printData = this as unknown as string;\r\n }\r\n }\r\n\r\n async filterTypes() {\r\n if (!this.state.running) {\r\n return false;\r\n }\r\n this.queue.clear();\r\n // await this.queue.run(async () => {\r\n // await ApiaApi.post({ ...this.env.context }, { action: 'filterOptions' });\r\n // });\r\n ApiaUtil.instance.modals.open({\r\n children: <FilterTypes controller={this} />,\r\n title: getLabel('sbtQryFilType').text,\r\n onConfirm: async () => {\r\n await this.queue.run(async () => {\r\n await ApiaApi.post(\r\n { ...this.env.context },\r\n // TODO: cuando se implementen las consultas de lista de tareas hay que manejar correctamente el working mode\r\n this.getFilterTypesMethodParameters({\r\n action: 'setFilterOptions',\r\n workingMode: 'R',\r\n }),\r\n {\r\n postData: this.table\r\n .getFilters()\r\n .reduce<Record<string, string>>((acc, filter, i) => {\r\n acc[filter.getState('id') ?? `filter_${i}`] =\r\n filter.getState('conditionValue') ?? '1';\r\n return acc;\r\n }, {}),\r\n postDataTreatement: 'stringify',\r\n },\r\n );\r\n });\r\n return true;\r\n },\r\n size: 'md-fixed',\r\n });\r\n }\r\n\r\n async export() {\r\n if (!this.state.running) {\r\n return false;\r\n }\r\n this.queue.clear();\r\n ApiaUtil.instance.modals.open({\r\n children: <ExportModal />,\r\n title: getLabel('titExport').text,\r\n onConfirm: async () => {\r\n const url = ApiaApi.makeUrl(this.env.context, {\r\n action: 'doExport',\r\n ...this.buildExportConfirmData(),\r\n });\r\n downloadUrl(url);\r\n return true;\r\n },\r\n size: 'md-fixed',\r\n });\r\n }\r\n\r\n public kill() {\r\n runInAction(() => {\r\n this.state.running = false;\r\n });\r\n this.queue.clear();\r\n }\r\n\r\n protected parseResultBeforeBuild(\r\n result: ListState & TLoadStructure,\r\n ): ListState & TLoadStructure {\r\n return result;\r\n }\r\n\r\n protected processRefreshResult(result: TListRefreshResponse) {\r\n runInAction(() => {\r\n this.processStructureResult({\r\n behavior: result.list.behavior,\r\n columns: result.list.columns,\r\n filters: result.list.filters,\r\n rows: result.list.rows,\r\n });\r\n if (\r\n (arrayOrArray(result.list.rows).length === 0 &&\r\n this.table.body.rows.length > 0) ||\r\n this.state.customLabel === window.MSG_FILTER_REQUIRED ||\r\n (!this.state.avoidExecuteFirstRefresh &&\r\n this.state.hasBuiltFromGenericTable) ||\r\n (this.state.avoidExecuteFirstRefresh &&\r\n this.state.hasBuiltFromGenericTable)\r\n ) {\r\n this.table.setState('customLabel', window.FINDER_NO_DATA);\r\n }\r\n this.table.fromGenericTable(this.parseResultBeforeBuild(result.list), {\r\n getDateFromString,\r\n getStringFromDate,\r\n });\r\n\r\n const filters = this.table.head.getFilters();\r\n if (filters) {\r\n if (\r\n Array.from(filters.filters.values()).some((f) =>\r\n f.getState('isRequired'),\r\n ) &&\r\n !this.state.hasBuiltFromGenericTable\r\n ) {\r\n this.table.setState('customLabel', '');\r\n }\r\n const headerFilters = Array.from(filters.filters.values()).filter(\r\n (f) => !f.asAdditional() || f.getCorrespondingColumn(),\r\n );\r\n\r\n const requiredHeaderFilters = headerFilters.filter((f) =>\r\n f.getState('isRequired'),\r\n );\r\n\r\n if (!this.state.hasBuiltFromGenericTable) {\r\n this.table.head\r\n .getFiltersRow()\r\n ?.setState(\r\n 'isHidden',\r\n requiredHeaderFilters.length > 0 ? false : true,\r\n );\r\n }\r\n }\r\n if (result.list.title) {\r\n this.state.title = result.list.title;\r\n this.table.setState('tableName', result.list.title);\r\n }\r\n if (result.list.description) {\r\n this.state.description = result.list.description;\r\n }\r\n this.state.navigation = result.list.navigation;\r\n if (this.configuration) {\r\n this.configuration.refreshOnDeleteFilters =\r\n !result.list.navigation.avoidRefreshOnClearFilters;\r\n }\r\n this.state.hasBuiltFromGenericTable = true;\r\n });\r\n }\r\n\r\n public processStructureResult(result: TLoadStructure) {\r\n runInAction(() => {\r\n this.table.setState('allowEdition', result.behavior.allowEdition);\r\n this.table.setState('allowSelection', result.behavior.allowSelection);\r\n this.table.setState(\r\n 'isSelectionMultiple',\r\n result.behavior.isMultipleSelection,\r\n );\r\n this.table.setState('fetchRowExpand', !!result.behavior.fetchRowExpand);\r\n this.table.setState(\r\n 'avoidExecuteFirstRefresh',\r\n !!result.behavior.avoidExecuteFirstRefresh,\r\n );\r\n this.table.head.build({\r\n columns: arrayOrArray(result.columns).map(({ attributes, ...c }) => {\r\n return {\r\n ...c,\r\n colName: c.name,\r\n asAdditional: c.showAsAdditional,\r\n sortable: c.isSortable,\r\n isHidden: c.isHidden,\r\n properties: c,\r\n content: c.title,\r\n className: c.className,\r\n sortState: c.sortType,\r\n showInAccordionTitle: c.showInAccordionTitle,\r\n domProperties: {\r\n style: {\r\n width: c.width,\r\n },\r\n },\r\n };\r\n }),\r\n filters: arrayOrArray(result.filters).map(({ attributes, ...f }) => {\r\n if (f.type === 'COMBO') {\r\n return {\r\n ...f,\r\n name: f.name,\r\n title: f.title,\r\n tooltip: 'no tooltip',\r\n type: f.type,\r\n isRequired: f.isRequired,\r\n properties: f,\r\n runAutomatically: f.runAutomatically,\r\n columnName: f.columnName,\r\n value:\r\n Array.isArray(f.options) ||\r\n arrayOrArray(f.options)[0].label !== ''\r\n ? f.initialValue\r\n : '',\r\n asAdditional: f.asAdditional,\r\n };\r\n }\r\n return {\r\n ...f,\r\n name: f.name,\r\n title: f.title,\r\n tooltip: 'no tooltip',\r\n type: f.type,\r\n isRequired: f.isRequired,\r\n properties: f,\r\n runAutomatically: f.runAutomatically,\r\n columnName: f.columnName,\r\n value: f.initialValue,\r\n asAdditional: f.asAdditional,\r\n };\r\n }),\r\n });\r\n });\r\n }\r\n\r\n public setRegistersPerPage(_n: number) {\r\n throw new Error('Not implemented');\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ListController.js","sources":["../src/ListController.tsx"],"sourcesContent":["import { TQueryEnvironment } from './types';\r\nimport { ApiaApi } from '@apia/api2';\r\nimport {\r\n arrayOrArray,\r\n downloadUrl,\r\n EventEmitter,\r\n getLabel,\r\n handleAction,\r\n TasksQueue,\r\n TBasicAction,\r\n TLoadStructure,\r\n} from '@apia/util';\r\nimport { makeObservable, observable, runInAction } from 'mobx';\r\nimport { notify } from '@apia/notifications';\r\nimport {\r\n Cell,\r\n DateFilter,\r\n FilterRenderer,\r\n TableController,\r\n} from '@apia/table2-controller';\r\nimport { getDateFromString } from './utils/getStringFromDate';\r\nimport { getStringFromDate } from './utils/getDateFromString';\r\nimport { ApiaUtil } from '@apia/components';\r\nimport { FilterTypes } from './components/modals/FilterTypes';\r\nimport { ExportModal } from './components/modals/ExportModal';\r\nimport { ExportController } from './components/modals/controllers/ExportController';\r\nimport {\r\n PivotTableConfig,\r\n TApiaChartDefinition,\r\n} from './QueriesFunctionalityController';\r\nimport { FC } from 'react';\r\n\r\nexport type ListState = {\r\n areAllFiltersApplied: boolean;\r\n attributes?: Record<string, unknown>;\r\n navigation: {\r\n pagesCount: number;\r\n registers: number;\r\n currentPage: number;\r\n showPagination?: boolean;\r\n showRegisterAmount?: boolean;\r\n avoidRefreshOnClearFilters?: boolean;\r\n hasReachedMax?: boolean;\r\n hasMore?: boolean;\r\n };\r\n running: boolean;\r\n title?: string;\r\n description?: string;\r\n customLabel?: string;\r\n avoidExecuteFirstRefresh?: boolean;\r\n hasBuiltFromGenericTable?: boolean;\r\n};\r\n\r\nexport type ListFunctionalityState = {\r\n fncId: number;\r\n isFavorite: boolean;\r\n isMaximized: boolean;\r\n};\r\n\r\nexport type TFuntionalityData = {\r\n chart?: {\r\n charts: { chart: TApiaChartDefinition } | { chart: TApiaChartDefinition }[];\r\n };\r\n chartButton?: {\r\n chartsbuttons:\r\n | { chartbutton: { qryChtId: string; title: string } }\r\n | { chartbutton: { qryChtId: string; title: string } }[];\r\n };\r\n pivot?: {\r\n pivots: { pivot: PivotTableConfig } | { pivot: PivotTableConfig }[];\r\n };\r\n};\r\n\r\nexport type TListRefreshResponse = {\r\n list: ListState & TLoadStructure;\r\n} & TFuntionalityData;\r\n\r\nexport type TListControllerConfiguration = {\r\n refreshOnDeleteFilters?: boolean;\r\n canSetRegistersPerPage?: boolean;\r\n refreshOnStartup?: boolean;\r\n refreshAction?: string;\r\n /**\r\n * Runs filter-change server events sequentially so every event is processed\r\n * and their table reconstructions finish in the same order they were emitted.\r\n * Defaults to true. Set to false to retain the previous latest-event behavior.\r\n */\r\n serializeFilterChanges?: boolean;\r\n};\r\n\r\ntype Arr<T> = T extends Array<any> ? T : Array<T>;\r\nexport type TQueryFilter = Arr<TLoadStructure['filters']>[0] & {\r\n Renderer?: FilterRenderer;\r\n};\r\n\r\nexport type TQueryColumn = Arr<TLoadStructure['columns']>[0] & {\r\n Renderer?: FC<{ cell: Cell }>;\r\n};\r\n\r\nexport class ListController {\r\n queue = new TasksQueue();\r\n /** Dedicated queue that preserves every filter business event in FIFO order. */\r\n protected readonly filterChangeQueue = new TasksQueue();\r\n /** Prevents runAutomatically from scheduling extra refreshes during a bulk clear. */\r\n protected isClearingFilters = false;\r\n /** Selects the dedicated FIFO queue instead of the cancellable general queue. */\r\n protected readonly serializeFilterChanges: boolean;\r\n /** Reapplies required-filter errors when a clear operation rebuilds the filters. */\r\n protected validateRequiredFiltersAfterBuild = false;\r\n public readonly table: TableController;\r\n public readonly state: ListState = {\r\n areAllFiltersApplied: true,\r\n navigation: {\r\n currentPage: 0,\r\n pagesCount: 0,\r\n registers: 0,\r\n showPagination: true,\r\n showRegisterAmount: true,\r\n avoidRefreshOnClearFilters: false,\r\n hasReachedMax: false,\r\n hasMore: false,\r\n },\r\n running: true,\r\n title: '',\r\n description: '',\r\n customLabel: window.MSG_FIRST_TIME,\r\n avoidExecuteFirstRefresh: false,\r\n hasBuiltFromGenericTable: false,\r\n };\r\n registersPerPage = 30;\r\n\r\n protected emitter = new EventEmitter<{\r\n refreshFuntionality: TFuntionalityData;\r\n deleteFilters: any;\r\n validationResult: boolean;\r\n hasBuiltFromGenericTable: null;\r\n }>();\r\n\r\n constructor(\r\n public env: TQueryEnvironment,\r\n public configuration?: TListControllerConfiguration,\r\n ) {\r\n // Serialization is the safe default: filter events may execute business\r\n // logic on the server, so dropping or reordering them can produce stale builds.\r\n this.serializeFilterChanges =\r\n configuration?.serializeFilterChanges !== false;\r\n this.table = new TableController({\r\n labels: env.context.labels,\r\n getDateFromString: env.getDateFromString,\r\n getStringFromDate: env.getStringFromDate,\r\n });\r\n\r\n this.table.head.getFiltersRow()?.setState('isHidden', true);\r\n if (configuration?.refreshOnStartup !== false) {\r\n this.refresh({ keepStartingCustomLabel: true });\r\n }\r\n\r\n this.table.on('filterChange', async (filter) => {\r\n const isPartOfClearFilters = this.isClearingFilters;\r\n\r\n runInAction(() => {\r\n this.state.areAllFiltersApplied = false;\r\n });\r\n\r\n await this.filterChange({ fireFilterName: filter.getState('name') });\r\n\r\n if (filter.getState('runAutomatically') && !isPartOfClearFilters) {\r\n await this.throttleRefresh();\r\n }\r\n });\r\n\r\n this.table.on('filterPressEnter', (filter) => {\r\n if (filter.getState('type') !== 'DATE') {\r\n this.refresh({ resetPage: true });\r\n }\r\n });\r\n\r\n this.table.on('filterBlur', (filter) => {\r\n if (filter instanceof DateFilter) {\r\n this.refresh({ resetPage: true });\r\n }\r\n });\r\n\r\n this.table.on('columnSort', () => {\r\n this.refresh({ resetPage: true });\r\n });\r\n\r\n this.table.on('rowDblClick', ({ action, ev }) => {\r\n this.handleDblClickAction(action, ev);\r\n });\r\n\r\n this.table.on('rowClick', ({ action, ev }) => {\r\n this.handleClickAction(action, ev);\r\n });\r\n makeObservable(this, { state: observable, table: observable });\r\n }\r\n\r\n protected handleClickAction(\r\n action: TBasicAction,\r\n ev: React.KeyboardEvent<Element> | React.MouseEvent<Element, MouseEvent>,\r\n ) {\r\n handleAction({}, ev, action);\r\n }\r\n\r\n protected handleDblClickAction(\r\n action: TBasicAction,\r\n ev: React.KeyboardEvent<Element> | React.MouseEvent<Element, MouseEvent>,\r\n ) {\r\n handleAction({}, ev, action);\r\n }\r\n\r\n protected handleAttributes(attributes: Pick<ListState, 'attributes'>): void {\r\n runInAction(() => {\r\n this.state.attributes = attributes;\r\n });\r\n return;\r\n }\r\n\r\n protected refreshTimeout = -1;\r\n protected throttleRefresh() {\r\n clearTimeout(this.refreshTimeout);\r\n this.refreshTimeout = setTimeout(() => {\r\n this.refresh({ resetPage: true });\r\n }, 300) as any;\r\n }\r\n\r\n protected getPageMethodParameters(\r\n defaultParams: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return defaultParams;\r\n }\r\n\r\n protected getRefreshMethodParameters(\r\n defaultParams: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return defaultParams;\r\n }\r\n\r\n protected getFilterTypesMethodParameters(\r\n defaultParams: Record<string, unknown>,\r\n ): Record<string, unknown> {\r\n return defaultParams;\r\n }\r\n\r\n async clearFilters() {\r\n this.table.getFilters().forEach((c) => c.clear(false));\r\n runInAction(() => {\r\n this.state.areAllFiltersApplied = false;\r\n });\r\n\r\n this.emitter.emit('deleteFilters', null);\r\n await this.filterChange({ subAction: 'clearFilters' });\r\n\r\n if (this.configuration?.refreshOnDeleteFilters) {\r\n this.throttleRefresh();\r\n }\r\n }\r\n\r\n async page(pageNumber: number) {\r\n this.queue.clear();\r\n await this.queue.run(async () => {\r\n if (this.validateFilters()) {\r\n const result = await ApiaApi.post<TListRefreshResponse>(\r\n { ...this.env.context },\r\n this.getPageMethodParameters({\r\n action: this.configuration?.refreshAction || 'refresh',\r\n page: pageNumber,\r\n }),\r\n this.buildRefreshPostData(),\r\n );\r\n\r\n if (result?.data?.list) {\r\n this.processRefreshResult(result.data);\r\n }\r\n }\r\n });\r\n }\r\n\r\n public validateFilters(props?: { showError?: boolean; notify?: boolean }) {\r\n const invalidFilters = this.table\r\n .getFilters()\r\n .filter((c) => !c.validate(props?.showError !== false));\r\n if (invalidFilters.length) {\r\n this.table.setState('customLabel', ''); //window.MSG_FILTER_REQUIRED);\r\n if (props?.notify !== false) {\r\n notify({\r\n title: getLabel('titWarning').text,\r\n message: getLabel('msgQryFilterRequiredList', {\r\n text: {\r\n TOK1: invalidFilters.map((c) => c.getState('title')).join(', '),\r\n },\r\n }).text,\r\n });\r\n }\r\n }\r\n this.emitter.emit('validationResult', invalidFilters.length === 0);\r\n return invalidFilters.length === 0;\r\n }\r\n\r\n protected buildRefreshPostData(): Parameters<(typeof ApiaApi)['post']>[2] {\r\n return {\r\n postData: {\r\n ...this.table.getFilters().reduce(\r\n (acc, cur) => ({\r\n ...acc,\r\n [`filter_${cur.getState('name')}`]: cur.getValueForSubmit(),\r\n }),\r\n {},\r\n ),\r\n ...this.table.getColumns().reduce(\r\n (acc, cur) => ({\r\n ...acc,\r\n [`sort_${cur.getState('colName')}`]: cur.getState('sortState'),\r\n }),\r\n {},\r\n ),\r\n amount: this.table.getState('registersToShow'),\r\n },\r\n postDataTreatement: 'stringify',\r\n postDataStringifyOptions: { arrayFormat: 'repeat' },\r\n };\r\n }\r\n\r\n protected buildExportConfirmData(): Record<string, unknown> {\r\n return {\r\n format: ExportController.getInstance().getFormat(),\r\n amount: ExportController.getInstance().getAmount(),\r\n };\r\n }\r\n\r\n protected async filterChange(\r\n parameters?: Partial<{\r\n fireFilterName?: string;\r\n subAction?: string;\r\n }>,\r\n ) {\r\n if (!this.state.running) {\r\n return false;\r\n }\r\n\r\n if (\r\n parameters?.fireFilterName &&\r\n !this.table.getFilter(parameters.fireFilterName)?.getState('hasEvents')\r\n ) {\r\n return;\r\n }\r\n\r\n if (\r\n !parameters?.fireFilterName &&\r\n !this.table.getFilters().find((c) => c.getState('hasEvents'))\r\n ) {\r\n return;\r\n }\r\n\r\n // Serialized mode never clears this queue: the explicit clearFilters event\r\n // is enqueued last, so awaiting it also waits for all prior filter events.\r\n const queue = this.serializeFilterChanges\r\n ? this.filterChangeQueue\r\n : this.queue;\r\n\r\n // Opt-out mode preserves the former behavior, where only the latest queued\r\n // filter change is kept and pending changes are cancelled.\r\n if (!this.serializeFilterChanges) {\r\n queue.clear();\r\n }\r\n\r\n await queue.run(async () => {\r\n const result = await ApiaApi.post<{ list: TLoadStructure }>(\r\n { ...this.env.context },\r\n this.getRefreshMethodParameters({\r\n action: 'newLoadStructure', //this.configuration?.refreshAction || 'refresh',\r\n subAction: parameters?.subAction ?? null,\r\n fireFilterName: parameters?.fireFilterName ?? null,\r\n }),\r\n this.buildRefreshPostData(),\r\n );\r\n\r\n if (result?.data?.list) {\r\n this.processStructureResult(result.data.list);\r\n }\r\n });\r\n }\r\n\r\n async refresh(\r\n parameters?: Partial<{\r\n action: string;\r\n clearBefore?: boolean;\r\n keepStartingCustomLabel?: boolean;\r\n /** Starts a new result set on page one instead of reloading the current page. */\r\n resetPage?: boolean;\r\n }>,\r\n ) {\r\n if (!this.state.running) {\r\n return false;\r\n }\r\n\r\n if (parameters?.clearBefore) {\r\n this.table.getFilters().forEach((c) => c.clear(false));\r\n this.state.areAllFiltersApplied = false;\r\n }\r\n\r\n this.queue.clear();\r\n const refreshAction =\r\n parameters?.action ?? (this.configuration?.refreshAction || 'refresh');\r\n const page =\r\n parameters?.resetPage || parameters?.clearBefore\r\n ? 1\r\n : Math.max(1, this.state.navigation.currentPage);\r\n\r\n await this.queue.run(async () => {\r\n if (this.validateFilters()) {\r\n runInAction(() => {\r\n this.state.areAllFiltersApplied = true;\r\n });\r\n\r\n const result = await ApiaApi.post<TListRefreshResponse>(\r\n { ...this.env.context },\r\n this.getRefreshMethodParameters({\r\n action: refreshAction,\r\n page,\r\n forceDataRefresh: true,\r\n }),\r\n this.buildRefreshPostData(),\r\n );\r\n\r\n if (result?.data?.list) {\r\n this.processRefreshResult(\r\n result.data,\r\n parameters?.keepStartingCustomLabel,\r\n );\r\n }\r\n if (result?.data?.list?.attributes) {\r\n this.handleAttributes(result?.data?.list.attributes);\r\n }\r\n\r\n if (result?.data) {\r\n this.refreshFuntionality(result?.data);\r\n }\r\n } else {\r\n this.table.body.setState('rows', []);\r\n this.state.navigation.hasMore = false;\r\n this.state.navigation.hasReachedMax = false;\r\n this.state.navigation.pagesCount = 0;\r\n this.state.navigation.registers = 0;\r\n this.state.navigation.currentPage = 1;\r\n }\r\n });\r\n }\r\n\r\n protected refreshFuntionality(data: Omit<TListRefreshResponse, 'list'>) {\r\n if (data?.chart || data?.chartButton || data?.pivot) {\r\n this.emitter.emit('refreshFuntionality', data);\r\n }\r\n }\r\n\r\n on = this.emitter.on.bind(this.emitter);\r\n\r\n async print() {\r\n if (!this.state.running) {\r\n return false;\r\n }\r\n this.queue.clear();\r\n\r\n const w = window.open(\r\n `${window.CONTEXT}/react/generic/print.jsp?printComponent=print/query/PrintQuery`,\r\n '_blank',\r\n `height=${screen.height}, width=${screen.width},location=no,menubar=yes,resizable=yes,scrollbars=yes,titlebar=yes,toolbar=no`,\r\n );\r\n if (w) {\r\n w.onload = () => {\r\n w.printData = this as unknown as string;\r\n };\r\n w.printData = this as unknown as string;\r\n }\r\n }\r\n\r\n async filterTypes() {\r\n if (!this.state.running) {\r\n return false;\r\n }\r\n this.queue.clear();\r\n // await this.queue.run(async () => {\r\n // await ApiaApi.post({ ...this.env.context }, { action: 'filterOptions' });\r\n // });\r\n ApiaUtil.instance.modals.open({\r\n children: <FilterTypes controller={this} />,\r\n title: getLabel('sbtQryFilType').text,\r\n onConfirm: async () => {\r\n await this.queue.run(async () => {\r\n await ApiaApi.post(\r\n { ...this.env.context },\r\n // TODO: cuando se implementen las consultas de lista de tareas hay que manejar correctamente el working mode\r\n this.getFilterTypesMethodParameters({\r\n action: 'setFilterOptions',\r\n workingMode: 'R',\r\n }),\r\n {\r\n postData: this.table\r\n .getFilters()\r\n .reduce<Record<string, string>>((acc, filter, i) => {\r\n acc[filter.getState('id') ?? `filter_${i}`] =\r\n filter.getState('conditionValue') ?? '1';\r\n return acc;\r\n }, {}),\r\n postDataTreatement: 'stringify',\r\n },\r\n );\r\n });\r\n return true;\r\n },\r\n size: 'md-fixed',\r\n });\r\n }\r\n\r\n async export() {\r\n if (!this.state.running) {\r\n return false;\r\n }\r\n this.queue.clear();\r\n ApiaUtil.instance.modals.open({\r\n children: <ExportModal />,\r\n title: getLabel('titExport').text,\r\n onConfirm: async () => {\r\n const url = ApiaApi.makeUrl(this.env.context, {\r\n action: 'doExport',\r\n ...this.buildExportConfirmData(),\r\n });\r\n downloadUrl(url);\r\n return true;\r\n },\r\n size: 'md-fixed',\r\n });\r\n }\r\n\r\n public kill() {\r\n runInAction(() => {\r\n this.state.running = false;\r\n });\r\n this.queue.clear();\r\n }\r\n\r\n protected parseResultBeforeBuild(\r\n result: ListState & TLoadStructure,\r\n ): ListState & TLoadStructure {\r\n return result;\r\n }\r\n\r\n protected processRefreshResult(\r\n result: TListRefreshResponse,\r\n keepStartingCustomLabel?: boolean,\r\n ) {\r\n runInAction(() => {\r\n this.processStructureResult(\r\n {\r\n behavior: result.list.behavior,\r\n columns: result.list.columns,\r\n filters: result.list.filters,\r\n rows: result.list.rows,\r\n },\r\n keepStartingCustomLabel,\r\n );\r\n if (\r\n (arrayOrArray(result.list.rows).length === 0 &&\r\n this.table.body.rows.length > 0) ||\r\n this.state.customLabel === window.MSG_FILTER_REQUIRED ||\r\n (!this.state.avoidExecuteFirstRefresh &&\r\n this.state.hasBuiltFromGenericTable) ||\r\n (this.state.avoidExecuteFirstRefresh &&\r\n this.state.hasBuiltFromGenericTable)\r\n ) {\r\n this.table.setState('customLabel', window.FINDER_NO_DATA);\r\n }\r\n this.table.fromGenericTable(this.parseResultBeforeBuild(result.list), {\r\n getDateFromString,\r\n getStringFromDate,\r\n });\r\n\r\n if (this.validateRequiredFiltersAfterBuild) {\r\n this.validateFilters({ notify: false });\r\n }\r\n\r\n const filters = this.table.head.getFilters();\r\n if (filters) {\r\n if (\r\n Array.from(filters.filters.values()).some((f) =>\r\n f.getState('isRequired'),\r\n ) &&\r\n !this.state.hasBuiltFromGenericTable\r\n ) {\r\n this.table.setState('customLabel', '');\r\n }\r\n const headerFilters = Array.from(filters.filters.values()).filter(\r\n (f) => !f.asAdditional() || f.getCorrespondingColumn(),\r\n );\r\n\r\n const requiredHeaderFilters = headerFilters.filter((f) =>\r\n f.getState('isRequired'),\r\n );\r\n\r\n if (!this.state.hasBuiltFromGenericTable) {\r\n this.table.head\r\n .getFiltersRow()\r\n ?.setState(\r\n 'isHidden',\r\n requiredHeaderFilters.length > 0 ? false : true,\r\n );\r\n }\r\n }\r\n if (result.list.title) {\r\n this.state.title = result.list.title;\r\n this.table.setState('tableName', result.list.title);\r\n }\r\n if (result.list.description) {\r\n this.state.description = result.list.description;\r\n }\r\n this.state.navigation = result.list.navigation;\r\n if (this.configuration) {\r\n this.configuration.refreshOnDeleteFilters =\r\n !result.list.navigation.avoidRefreshOnClearFilters;\r\n }\r\n if (!this.state.hasBuiltFromGenericTable) {\r\n this.validateFilters({ showError: false });\r\n }\r\n this.state.hasBuiltFromGenericTable = true;\r\n this.emitter.emit('hasBuiltFromGenericTable', null);\r\n });\r\n }\r\n\r\n public processStructureResult(\r\n result: TLoadStructure,\r\n keepStartingCustomLabel?: boolean,\r\n ) {\r\n runInAction(() => {\r\n this.table.setState('allowEdition', result.behavior.allowEdition);\r\n this.table.setState('allowSelection', result.behavior.allowSelection);\r\n this.table.setState(\r\n 'isSelectionMultiple',\r\n result.behavior.isMultipleSelection,\r\n );\r\n this.table.setState('fetchRowExpand', !!result.behavior.fetchRowExpand);\r\n this.table.setState(\r\n 'avoidExecuteFirstRefresh',\r\n !!result.behavior.avoidExecuteFirstRefresh,\r\n );\r\n this.state.avoidExecuteFirstRefresh =\r\n !!result.behavior.avoidExecuteFirstRefresh;\r\n if (\r\n result.behavior.avoidExecuteFirstRefresh &&\r\n !keepStartingCustomLabel\r\n ) {\r\n this.table.setState('customLabel', '');\r\n }\r\n this.table.head.build({\r\n columns: arrayOrArray(result.columns).map(({ attributes, ...c }) => {\r\n return {\r\n ...c,\r\n colName: c.name,\r\n asAdditional: c.showAsAdditional,\r\n sortable: c.isSortable,\r\n isHidden: c.isHidden,\r\n properties: c,\r\n content: c.title === '' ? c.name : c.title,\r\n className: c.className,\r\n sortState: c.sortType,\r\n showInAccordionTitle: c.showInAccordionTitle,\r\n domProperties: {\r\n style: {\r\n width: c.width,\r\n },\r\n },\r\n ...attributes,\r\n };\r\n }),\r\n filters: arrayOrArray(result.filters).map(({ attributes, ...f }) => {\r\n if (f.type === 'COMBO') {\r\n return {\r\n ...f,\r\n name: f.name,\r\n title: f.title,\r\n tooltip: 'no tooltip',\r\n type: f.type,\r\n isRequired: f.isRequired,\r\n properties: f,\r\n runAutomatically: f.runAutomatically,\r\n columnName: f.columnName,\r\n value:\r\n Array.isArray(f.options) ||\r\n arrayOrArray(f.options)[0]?.label !== ''\r\n ? f.initialValue\r\n : '',\r\n asAdditional: f.asAdditional,\r\n ...attributes,\r\n };\r\n }\r\n return {\r\n ...f,\r\n name: f.name,\r\n title: f.title,\r\n tooltip: 'no tooltip',\r\n type: f.type,\r\n isRequired: f.isRequired,\r\n properties: f,\r\n runAutomatically: f.runAutomatically,\r\n columnName: f.columnName,\r\n value: f.initialValue,\r\n asAdditional: f.asAdditional,\r\n ...attributes,\r\n };\r\n }),\r\n });\r\n if (\r\n this.validateRequiredFiltersAfterBuild ||\r\n (this.state.hasBuiltFromGenericTable &&\r\n this.table.getFilters().some((f) => f.getState('runAutomatically')))\r\n ) {\r\n this.validateFilters({ notify: false });\r\n }\r\n });\r\n }\r\n\r\n public setRegistersPerPage(_n: number) {\r\n throw new Error('Not implemented');\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import * as _apia_util from '@apia/util';
|
|
2
|
+
import { EventEmitter } from '@apia/util';
|
|
1
3
|
import { ListFunctionalityController } from './ListFunctionalityController.js';
|
|
2
4
|
import { TApiaChartColumn, TPivotTableData, ColumnSort, Pivot, TQuerySort, PivotTableUIProps } from '@apia/charts';
|
|
3
5
|
import { TQueryEnvironment } from './types.js';
|
|
4
|
-
import {
|
|
6
|
+
import { QueryPivotPresentationState } from './QueryPivotPresentationState.js';
|
|
5
7
|
import { TTab, TabsController, TabsControllerProps } from '@apia/components';
|
|
6
8
|
|
|
7
9
|
type PivotTableConfig = {
|
|
@@ -211,13 +213,20 @@ declare class QueriesFunctionalityController extends ListFunctionalityController
|
|
|
211
213
|
currentPivot?: TPivotTableData & {
|
|
212
214
|
pivotId: string;
|
|
213
215
|
};
|
|
216
|
+
currentPivotState?: QueryPivotPresentationState;
|
|
214
217
|
defaultChart?: string;
|
|
215
218
|
defaultPivot?: string;
|
|
216
219
|
isLoading: boolean;
|
|
217
220
|
};
|
|
218
221
|
protected emitter: EventEmitter<{
|
|
219
222
|
changeTab: string;
|
|
223
|
+
presentationStateChange: undefined;
|
|
220
224
|
}>;
|
|
225
|
+
private pivotRevision;
|
|
226
|
+
private pivotFilterCaptureSequence;
|
|
227
|
+
private pivotStateProtectionSequence;
|
|
228
|
+
private protectedPivotState?;
|
|
229
|
+
private replaceProtectedPivotFilters;
|
|
221
230
|
constructor(env: TQueryEnvironment, tabs?: TTab[] | undefined);
|
|
222
231
|
loadChart(chartId: string): Promise<TChartData>;
|
|
223
232
|
loadMainChart(): Promise<void>;
|
|
@@ -249,13 +258,27 @@ declare class QueriesFunctionalityController extends ListFunctionalityController
|
|
|
249
258
|
};
|
|
250
259
|
}>;
|
|
251
260
|
loadMainPivot(): Promise<void>;
|
|
261
|
+
activatePivot(retrievedPivot: TPivotTableData, pivotId: string): void;
|
|
252
262
|
private static stripHtml;
|
|
253
263
|
handleCloseChart(): void;
|
|
254
264
|
handleClosePivot(): void;
|
|
255
265
|
openAndReadFile(pivot: Pivot, accept?: string): void;
|
|
256
266
|
convertColumnSortToTQuerySort(sort: ColumnSort): TQuerySort;
|
|
257
267
|
parsePivotProps(pivot: Pivot): Omit<PivotTableUIProps, "onChange">;
|
|
258
|
-
|
|
268
|
+
parseCurrentPivotProps(pivot: Pivot): Omit<PivotTableUIProps, "onChange">;
|
|
269
|
+
/**
|
|
270
|
+
* Captures user changes made directly in the interactive pivot controls.
|
|
271
|
+
*/
|
|
272
|
+
capturePivotState(state: PivotTableUIProps): void;
|
|
273
|
+
onPresentationStateChange(callback: () => void): _apia_util.UnSubscriber;
|
|
274
|
+
applyPivotState(state?: QueryPivotPresentationState, replacePivotFilters?: boolean, previousState?: QueryPivotPresentationState | undefined): void;
|
|
275
|
+
/**
|
|
276
|
+
* Ignores transient all-selected callbacks emitted while a server state is rendered.
|
|
277
|
+
*/
|
|
278
|
+
private protectPivotState;
|
|
279
|
+
pivotRefresh(rowId?: string): Promise<void>;
|
|
280
|
+
private createPivotState;
|
|
281
|
+
private capturePivotFiltersWhenIdle;
|
|
259
282
|
}
|
|
260
283
|
|
|
261
284
|
export { type PivotTableConfig, QueriesFunctionalityController, type TApiaChartDefinition, type TChartData };
|