@genesislcap/grid-pro 14.482.2-alpha-397d953.0 → 14.483.0
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/custom-elements.json +509 -829
- package/dist/dts/datasource/server-side.datasource.d.ts.map +1 -1
- package/dist/dts/datasource/server-side.resource-base.d.ts +2 -23
- package/dist/dts/datasource/server-side.resource-base.d.ts.map +1 -1
- package/dist/dts/datasource/server-side.resource-dataserver.d.ts +1 -32
- package/dist/dts/datasource/server-side.resource-dataserver.d.ts.map +1 -1
- package/dist/dts/datasource/server-side.resource-reqrep.d.ts +1 -1
- package/dist/dts/datasource/server-side.resource-reqrep.d.ts.map +1 -1
- package/dist/dts/react.d.ts +9 -9
- package/dist/esm/datasource/server-side.datasource.js +2 -13
- package/dist/esm/datasource/server-side.resource-base.js +135 -193
- package/dist/esm/datasource/server-side.resource-dataserver.js +28 -284
- package/dist/esm/datasource/server-side.resource-reqrep.js +5 -11
- package/dist/react.cjs +6 -6
- package/dist/react.mjs +5 -5
- package/package.json +14 -14
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-side.datasource.d.ts","sourceRoot":"","sources":["../../../src/datasource/server-side.datasource.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,UAAU,EACV,iBAAiB,EAYlB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAEL,cAAc,EAEf,MAAM,+BAA+B,CAAC;AAUvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;;;;;;;kBAoDb,CAAC;;;;;;;;8BAwBuD,CAAA,cACtF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAiBH,CAAH;4IAEkE,CAAA;wFAIL,CAAC;+IAOzC,CAAC;2FAEb,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAmCJ,CAAF;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"server-side.datasource.d.ts","sourceRoot":"","sources":["../../../src/datasource/server-side.datasource.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,UAAU,EACV,iBAAiB,EAYlB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAEL,cAAc,EAEf,MAAM,+BAA+B,CAAC;AAUvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;;;;;;;kBAoDb,CAAC;;;;;;;;8BAwBuD,CAAA,cACtF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAiBH,CAAH;4IAEkE,CAAA;wFAIL,CAAC;+IAOzC,CAAC;2FAEb,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAmCJ,CAAF;;;;;;;;;;;;;;;;;;;;;;;mBA4DE,CAAL;;;;;;;;;;;;;6BA6B6B,CAAC;8BACe,CAAC;kBAErC,CAAC;;oBAEuB,CAAC;;sBAMX,CAAC;oBAEnB,CAAF;;;;;;;;gDAmBQ,CAAC;;;;;;;;;;;;;;;;;;uBAmBM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4EA6ES,CAAC;yBACwB,CAAC;UAEP,GAAG;WAC1B,GAAG;;gBAKd,GAAG;;;;;;;WAeR,GAAG;YACkB,GAAG;;;;;;;;;;;oBAyC/B,GAAD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA2LiD,CAAA;cAG5C,CAAJ;eAG6E,CAAC;gBAG3C,CAAC;;;;;;;;;;;;;;SAmCxB,CAAC;;;iBAGR,CAAC;;AA7lBR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAGa,2BAA4B,SAAQ,gCAAqC;IACpE,UAAU,EAAG,cAAc,CAAC;IAChC,iBAAiB,EAAG,UAAU,CAAC;IAC3C;;;OAGG;IAC6D,mBAAmB,UAAS;IAE5F;;;OAGG;IACmD,WAAW,UAAS;IAE1E;;;;;;OAMG;IACiC,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;IAE3D,OAAO,EAAE,GAAG,CAAM;IAE9B,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,cAAc,CAA8D;IACpF,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,uBAAuB,CAA6B;IAE5D,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAOtD,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAaxD,iBAAiB;IAUjB,oBAAoB;IAUX,SAAS,IAAI,IAAI;IAO1B;;;;OAIG;IACG,kBAAkB,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAsCnE;;;OAGG;IACH,OAAO,CAAC,mCAAmC;IAc3C;;;OAGG;IACH,OAAO,CAAC,oCAAoC;IAWtC,IAAI;IAuIV,mBAAmB,CAAC,KAAK,EAAE,GAAG;IAMf,OAAO;IAmBP,OAAO;IAKtB,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,kBAAkB;YAgDZ,mBAAmB;IAKjC;;;;;;;;;;;;OAYG;YACW,kBAAkB;IA+BhC;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB,CAA+B;IAEzD;;;;;;;;;OASG;IACH,OAAO,CAAC,0BAA0B,CAAS;IAE3C;;;;;;OAMG;IACI,uBAAuB;IAM9B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,wBAAwB;IAsEhC,OAAO,CAAC,yBAAyB;YAyCnB,sBAAsB;YA2DtB,eAAe;IAmBpB,gBAAgB,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG;IAIvC,QAAQ;CAGlB"}
|
|
@@ -45,12 +45,6 @@ export declare abstract class BaseServerSideDatasource implements IServerSideDat
|
|
|
45
45
|
protected moreRows: boolean;
|
|
46
46
|
protected calculatedRowsCount: number;
|
|
47
47
|
protected currentSequenceId: any;
|
|
48
|
-
/**
|
|
49
|
-
* Whether the corrective ROWS_COUNT snapshot() has resolved for the current CRITERIA_MATCH.
|
|
50
|
-
* Reset in destroy() so it re-resolves on filter/sort changes.
|
|
51
|
-
* @internal
|
|
52
|
-
*/
|
|
53
|
-
protected criteriaRowCountResolved: boolean;
|
|
54
48
|
protected currentFilterModel: SetFilterModel;
|
|
55
49
|
protected originalCriteriaMatch: string | string[];
|
|
56
50
|
protected currentSortModel: SortModelItem[];
|
|
@@ -73,20 +67,15 @@ export declare abstract class BaseServerSideDatasource implements IServerSideDat
|
|
|
73
67
|
/**
|
|
74
68
|
* Handles filtering setup for server-side datasources.
|
|
75
69
|
* Common logic used by both dataserver and req-rep implementations.
|
|
76
|
-
*
|
|
77
|
-
* @returns `true` when a filter change triggered {@link refreshDatasource} - the current
|
|
78
|
-
* getRows() request is then superseded and the caller must stop processing it.
|
|
79
70
|
*/
|
|
80
|
-
protected setupFiltering(params: IServerSideGetRowsParams): Promise<
|
|
71
|
+
protected setupFiltering(params: IServerSideGetRowsParams): Promise<void>;
|
|
81
72
|
/**
|
|
82
73
|
* Handles sorting setup. Must be implemented by each datasource type.
|
|
83
74
|
* Different datasource types have different sorting requirements:
|
|
84
75
|
* - Dataserver: Requires indexed columns
|
|
85
76
|
* - Req-rep: Can sort by any column
|
|
86
|
-
*
|
|
87
|
-
* @returns `true` when a sort change triggered a refresh (same contract as {@link setupFiltering}).
|
|
88
77
|
*/
|
|
89
|
-
protected abstract setupSorting(params: IServerSideGetRowsParams): Promise<
|
|
78
|
+
protected abstract setupSorting(params: IServerSideGetRowsParams): Promise<void>;
|
|
90
79
|
/**
|
|
91
80
|
* Legacy method that combines filtering and sorting.
|
|
92
81
|
* Kept for backward compatibility. New implementations should use setupFiltering and setupSorting directly.
|
|
@@ -102,16 +91,6 @@ export declare abstract class BaseServerSideDatasource implements IServerSideDat
|
|
|
102
91
|
};
|
|
103
92
|
protected buildCriteriaMatchFromFilters(): string;
|
|
104
93
|
protected criteriaFromFilters(): string[];
|
|
105
|
-
/**
|
|
106
|
-
* Builds a single criteria fragment for one filter model (flat per-column model or a
|
|
107
|
-
* multi-filter sub-model).
|
|
108
|
-
* @internal
|
|
109
|
-
*/
|
|
110
|
-
protected criteriaForSingleModel(k: string, model: any): string | null;
|
|
111
|
-
protected criteriaForTextModel(k: string, model: any): string | null;
|
|
112
|
-
protected criteriaForSetModel(k: string, model: any): string | null;
|
|
113
|
-
protected criteriaForNumberModel(k: string, model: any): string | null;
|
|
114
|
-
protected criteriaForDateModel(k: string, model: any): string | null;
|
|
115
94
|
protected getFiltersByType(filterType: string): string[];
|
|
116
95
|
protected getPageNumber(start: number, recordsPerPage: number, totalRecords?: number, zeroBasedViewNumber?: boolean): number;
|
|
117
96
|
protected getCorrectRowCount(params: IServerSideGetRowsParams<any, any>): any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-side.resource-base.d.ts","sourceRoot":"","sources":["../../../src/datasource/server-side.resource-base.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,wBAAwB,EACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,IAAI,EACJ,OAAO,EACP,cAAc,EAEd,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AACrD,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;;;;GAKG;AACH,8BAAsB,wBAAyB,YAAW,qBAAqB;IACvE,IAAI,EAAG,IAAI,CAAC;IACT,OAAO,EAAG,OAAO,CAAC;IACrB,IAAI,EAAG,IAAI,CAAC;IAElB,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAa;IAEtC,sBAAsB,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D,SAAS,CAAC,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7C,SAAS,CAAC,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IAE3C,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,GAAG,CAAC;IACpB,SAAS,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACjD,SAAS,CAAC,eAAe,EAAE,cAAc,EAAE,CAAC;IAE5C,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,mBAAmB,EAAE,OAAO,CAAC;IACvC,SAAS,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAC9C,SAAS,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAExC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,kBAAkB,EAAE,iBAAiB,CAAC;IAEtC;;;OAGG;IACH,eAAe,SAAK;IAEpB;;;OAGG;IACH,eAAe,SAAK;IAEpB,SAAS,CAAC,QAAQ,UAAS;IAC3B,SAAS,CAAC,mBAAmB,SAAK;IAClC,SAAS,CAAC,iBAAiB,MAAQ;IAEnC
|
|
1
|
+
{"version":3,"file":"server-side.resource-base.d.ts","sourceRoot":"","sources":["../../../src/datasource/server-side.resource-base.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,49 +7,18 @@ import { BaseServerSideDatasource } from './server-side.resource-base';
|
|
|
7
7
|
* @beta
|
|
8
8
|
*/
|
|
9
9
|
export declare class DataserverServerSideDatasource extends BaseServerSideDatasource implements IServerSideDatasource {
|
|
10
|
-
/**
|
|
11
|
-
* Max time a non-paginated SSRM block may stay pending before the safety valve in
|
|
12
|
-
* getRows() resolves it with the rows accumulated so far.
|
|
13
|
-
* @internal
|
|
14
|
-
*/
|
|
15
|
-
private static readonly BLOCK_RESOLVE_TIMEOUT_MS;
|
|
16
|
-
/**
|
|
17
|
-
* Blocks awaiting stream messages. Settled blocks remove themselves; destroy() cancels
|
|
18
|
-
* (fails) the rest so AG Grid's concurrent-request slots are always released.
|
|
19
|
-
* @internal
|
|
20
|
-
*/
|
|
21
|
-
private pendingBlocks;
|
|
22
|
-
/**
|
|
23
|
-
* Highest absolute row index already handed to AG Grid this session (non-pagination).
|
|
24
|
-
* Live DELETEs below this watermark must not remove cache entries - see
|
|
25
|
-
* handleCurrentStreamLoad.
|
|
26
|
-
* @internal
|
|
27
|
-
*/
|
|
28
|
-
private deliveredRowCount;
|
|
29
10
|
dataserverStream: SocketObservable<FilteredDataServerResult>;
|
|
30
11
|
dataserverStreamSubscription: SocketSubscription;
|
|
31
12
|
createDataserverStreamFunc: (existingParams?: any) => Promise<SocketObservable<FilteredDataServerResult>>;
|
|
32
13
|
constructor(options: ServerSideDatasourceOptions);
|
|
33
14
|
refreshDatasource(params: DatasourceOptions): Promise<void>;
|
|
34
15
|
getRows(params: IServerSideGetRowsParams): Promise<void>;
|
|
35
|
-
/** @internal */
|
|
36
|
-
private cancelAllPendingBlocks;
|
|
37
|
-
/**
|
|
38
|
-
* Lazily attaches the single stream subscription for this datasource session.
|
|
39
|
-
* @internal
|
|
40
|
-
*/
|
|
41
|
-
private ensureStreamSubscription;
|
|
42
|
-
/**
|
|
43
|
-
* Fan-out: accumulate shared infinite-scroll state once, then notify each pending block.
|
|
44
|
-
* @internal
|
|
45
|
-
*/
|
|
46
|
-
private dispatchStreamMessage;
|
|
47
16
|
private applyServerSideData;
|
|
48
17
|
/**
|
|
49
18
|
* Dataserver-specific sorting setup that validates columns are part of an index.
|
|
50
19
|
* This is required because dataserver needs indexed columns for efficient sorting.
|
|
51
20
|
*/
|
|
52
|
-
protected setupSorting(params: IServerSideGetRowsParams): Promise<
|
|
21
|
+
protected setupSorting(params: IServerSideGetRowsParams): Promise<void>;
|
|
53
22
|
destroy(): Promise<void>;
|
|
54
23
|
private handleCurrentStreamLoad;
|
|
55
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-side.resource-dataserver.d.ts","sourceRoot":"","sources":["../../../src/datasource/server-side.resource-dataserver.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EAEzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EAGxB,gBAAgB,EAChB,kBAAkB,EAGnB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"server-side.resource-dataserver.d.ts","sourceRoot":"","sources":["../../../src/datasource/server-side.resource-dataserver.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EAEzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EAGxB,gBAAgB,EAChB,kBAAkB,EAGnB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAEvE;;;GAGG;AACH,qBAAa,8BACX,SAAQ,wBACR,YAAW,qBAAqB;IAEhC,gBAAgB,EAAE,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;IAC7D,4BAA4B,EAAE,kBAAkB,CAAC;IACjD,0BAA0B,EAAE,CAC1B,cAAc,CAAC,EAAE,GAAG,KACjB,OAAO,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,CAAC,CAAC;gBAE7C,OAAO,EAAE,2BAA2B;IAK1C,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3D,OAAO,CAAC,MAAM,EAAE,wBAAwB;IA+E9C,OAAO,CAAC,mBAAmB;IAiE3B;;;OAGG;cACa,YAAY,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IAqDvE,OAAO;IAOb,OAAO,CAAC,uBAAuB;CAYhC"}
|
|
@@ -74,7 +74,7 @@ export declare class ReqRepServerSideDatasource extends BaseServerSideDatasource
|
|
|
74
74
|
* Req-rep specific sorting setup that allows any column to be sorted
|
|
75
75
|
* (unlike dataserver which requires indexed columns only)
|
|
76
76
|
*/
|
|
77
|
-
protected setupSorting(params: IServerSideGetRowsParams): Promise<
|
|
77
|
+
protected setupSorting(params: IServerSideGetRowsParams): Promise<void>;
|
|
78
78
|
refreshDatasource(params: DatasourceOptions): Promise<void>;
|
|
79
79
|
destroy(): Promise<void>;
|
|
80
80
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-side.resource-reqrep.d.ts","sourceRoot":"","sources":["../../../src/datasource/server-side.resource-reqrep.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EAEzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,mBAAmB,EAInB,iBAAiB,EAGlB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAOvE;;;GAGG;AACH,qBAAa,0BACX,SAAQ,wBACR,YAAW,qBAAqB;IAEhC,uBAAuB,EAAE,CAAC,cAAc,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEhF;;;OAGG;IACH,OAAO,CAAC,sBAAsB,CAAC,CAG5B;IAEH;;OAEG;IACH,OAAO,CAAC,mBAAmB,CAAC,CAAwC;IAEpE;;OAEG;IACH,OAAO,CAAC,yBAAyB,CAAC,CAAqB;IAEvD;;;OAGG;IACH,OAAO,CAAC,uBAAuB,CAAC,CAAM;IAEtC;;OAEG;IACH,OAAO,CAAC,UAAU,CAAU;IAE5B;;OAEG;IACH,OAAO,CAAC,eAAe,CAAC,CAAwC;IAEhE;;OAEG;IACH,OAAO,CAAC,uBAAuB,CAAC,CAAa;IAE7C;;;OAGG;IACH,OAAO,CAAC,mBAAmB,CAAC,CAAgB;IAE5C;;;OAGG;IACH,OAAO,CAAC,qBAAqB,CAA8B;IAG3D,OAAO,CAAC,uBAAuB,CAAuB;IACtD,OAAO,CAAC,iBAAiB,CAAa;gBAE1B,OAAO,EAAE,2BAA2B;IA6B1C,OAAO,CAAC,MAAM,EAAE,wBAAwB;
|
|
1
|
+
{"version":3,"file":"server-side.resource-reqrep.d.ts","sourceRoot":"","sources":["../../../src/datasource/server-side.resource-reqrep.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EAEzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,mBAAmB,EAInB,iBAAiB,EAGlB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAOvE;;;GAGG;AACH,qBAAa,0BACX,SAAQ,wBACR,YAAW,qBAAqB;IAEhC,uBAAuB,EAAE,CAAC,cAAc,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEhF;;;OAGG;IACH,OAAO,CAAC,sBAAsB,CAAC,CAG5B;IAEH;;OAEG;IACH,OAAO,CAAC,mBAAmB,CAAC,CAAwC;IAEpE;;OAEG;IACH,OAAO,CAAC,yBAAyB,CAAC,CAAqB;IAEvD;;;OAGG;IACH,OAAO,CAAC,uBAAuB,CAAC,CAAM;IAEtC;;OAEG;IACH,OAAO,CAAC,UAAU,CAAU;IAE5B;;OAEG;IACH,OAAO,CAAC,eAAe,CAAC,CAAwC;IAEhE;;OAEG;IACH,OAAO,CAAC,uBAAuB,CAAC,CAAa;IAE7C;;;OAGG;IACH,OAAO,CAAC,mBAAmB,CAAC,CAAgB;IAE5C;;;OAGG;IACH,OAAO,CAAC,qBAAqB,CAA8B;IAG3D,OAAO,CAAC,uBAAuB,CAAuB;IACtD,OAAO,CAAC,iBAAiB,CAAa;gBAE1B,OAAO,EAAE,2BAA2B;IA6B1C,OAAO,CAAC,MAAM,EAAE,wBAAwB;IAmC9C;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAwB9B;;OAEG;YACW,mBAAmB;IAsCjC;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,mBAAmB;IAoF3B,SAAS,CAAC,kBAAkB,CAAC,MAAM,EAAE,wBAAwB,GAAG,MAAM;IA0BtE,OAAO,CAAC,uBAAuB;IAoB/B;;;OAGG;cACa,YAAY,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BvE,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB3D,OAAO;IAUb;;;;;;;;;;OAUG;YACW,mBAAmB;IAkCjC;;;;;;;;OAQG;IACH,OAAO,CAAC,oBAAoB;IAqB5B,OAAO,CAAC,mBAAmB;CAoB5B"}
|
package/dist/dts/react.d.ts
CHANGED
|
@@ -133,15 +133,6 @@ export declare const StringEditor: React.ForwardRefExoticComponent<
|
|
|
133
133
|
>;
|
|
134
134
|
export type StringEditorRef = StringEditorWC;
|
|
135
135
|
|
|
136
|
-
export declare const GridProColumn: React.ForwardRefExoticComponent<
|
|
137
|
-
React.PropsWithChildren<
|
|
138
|
-
Omit<PublicOf<GridProColumnWC>, 'children' | 'style'> &
|
|
139
|
-
HTMLWCProps & {
|
|
140
|
-
}
|
|
141
|
-
> & React.RefAttributes<GridProColumnWC>
|
|
142
|
-
>;
|
|
143
|
-
export type GridProColumnRef = GridProColumnWC;
|
|
144
|
-
|
|
145
136
|
export declare const ActionRenderer: React.ForwardRefExoticComponent<
|
|
146
137
|
React.PropsWithChildren<
|
|
147
138
|
Omit<PublicOf<ActionRendererWC>, 'children' | 'style'> &
|
|
@@ -214,6 +205,15 @@ export declare const AgTextRenderer: React.ForwardRefExoticComponent<
|
|
|
214
205
|
>;
|
|
215
206
|
export type AgTextRendererRef = AgTextRendererWC;
|
|
216
207
|
|
|
208
|
+
export declare const GridProColumn: React.ForwardRefExoticComponent<
|
|
209
|
+
React.PropsWithChildren<
|
|
210
|
+
Omit<PublicOf<GridProColumnWC>, 'children' | 'style'> &
|
|
211
|
+
HTMLWCProps & {
|
|
212
|
+
}
|
|
213
|
+
> & React.RefAttributes<GridProColumnWC>
|
|
214
|
+
>;
|
|
215
|
+
export type GridProColumnRef = GridProColumnWC;
|
|
216
|
+
|
|
217
217
|
export declare const GridProClientSideDatasource: React.ForwardRefExoticComponent<
|
|
218
218
|
React.PropsWithChildren<
|
|
219
219
|
Omit<PublicOf<GridProClientSideDatasourceWC>, 'children' | 'style'> &
|
|
@@ -178,29 +178,18 @@ let GridProServerSideDatasource = class GridProServerSideDatasource extends Life
|
|
|
178
178
|
this.$emit(datasourceEventNames.cacheFilterConfig);
|
|
179
179
|
this.clearRowData(withoutColumnDefs);
|
|
180
180
|
this.setDisconnected(false);
|
|
181
|
+
// Emit event to refresh server side with purge
|
|
182
|
+
this.$emit(datasourceEventNames.refreshServerSide, { purge: true });
|
|
181
183
|
if (params) {
|
|
182
184
|
const options = Object.assign(Object.assign({}, this.datasourceOptions()), params);
|
|
183
185
|
const initOK = yield this.initializeDatasource(options, true, false);
|
|
184
186
|
if (!initOK) {
|
|
185
187
|
// Emit event to set server side datasource to null
|
|
186
188
|
this.$emit(datasourceEventNames.setServerSideDatasource, { datasource: null });
|
|
187
|
-
// Purge AG Grid's SSRM cache even on failure, otherwise the pre-filter rows linger
|
|
188
|
-
// on screen (clearRowData emits an empty remove transaction, which clears nothing).
|
|
189
|
-
// The datasource is now null, so the purge clears the display without re-invoking
|
|
190
|
-
// getRows() against a dead datasource.
|
|
191
|
-
this.$emit(datasourceEventNames.refreshServerSide, { purge: true });
|
|
192
189
|
logger.error('Genesis Datasource re-init failed on filtering/sorting.');
|
|
193
|
-
return;
|
|
194
190
|
}
|
|
195
|
-
// Purge AG Grid's SSRM cache only AFTER the re-init completed: the purge makes AG Grid
|
|
196
|
-
// re-invoke getRows() immediately, and purging before initializeDatasource let that
|
|
197
|
-
// call race the destroyed/half-initialized datasource (stale rows, broken first loads).
|
|
198
|
-
this.$emit(datasourceEventNames.refreshServerSide, { purge: true });
|
|
199
191
|
}
|
|
200
192
|
else {
|
|
201
|
-
// Full re-init path: init() re-creates the whole ssrmDatasource, so no race here -
|
|
202
|
-
// purge up-front as before.
|
|
203
|
-
this.$emit(datasourceEventNames.refreshServerSide, { purge: true });
|
|
204
193
|
if (this.ssrmDatasource) {
|
|
205
194
|
yield this.ssrmDatasource.destroy();
|
|
206
195
|
this.ssrmDatasource = undefined;
|
|
@@ -24,12 +24,6 @@ export class BaseServerSideDatasource {
|
|
|
24
24
|
this.moreRows = false;
|
|
25
25
|
this.calculatedRowsCount = 0;
|
|
26
26
|
this.currentSequenceId = null;
|
|
27
|
-
/**
|
|
28
|
-
* Whether the corrective ROWS_COUNT snapshot() has resolved for the current CRITERIA_MATCH.
|
|
29
|
-
* Reset in destroy() so it re-resolves on filter/sort changes.
|
|
30
|
-
* @internal
|
|
31
|
-
*/
|
|
32
|
-
this.criteriaRowCountResolved = false;
|
|
33
27
|
this.reloadResourceDataFunc = options.reloadResourceDataFunc;
|
|
34
28
|
this.errorHandlerFunc = options.errorHandlerFunc;
|
|
35
29
|
this.onNoDataAvailableFunc = options.onNoDataAvailableFunc;
|
|
@@ -85,9 +79,6 @@ export class BaseServerSideDatasource {
|
|
|
85
79
|
/**
|
|
86
80
|
* Handles filtering setup for server-side datasources.
|
|
87
81
|
* Common logic used by both dataserver and req-rep implementations.
|
|
88
|
-
*
|
|
89
|
-
* @returns `true` when a filter change triggered {@link refreshDatasource} - the current
|
|
90
|
-
* getRows() request is then superseded and the caller must stop processing it.
|
|
91
82
|
*/
|
|
92
83
|
setupFiltering(params) {
|
|
93
84
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -100,18 +91,15 @@ export class BaseServerSideDatasource {
|
|
|
100
91
|
this.currentFilterModel = null;
|
|
101
92
|
this.setResourceParam('CRITERIA_MATCH', this.originalCriteriaMatch);
|
|
102
93
|
yield this.refreshDatasource(params);
|
|
103
|
-
|
|
104
|
-
// getRows() is re-invoked with fresh params - this invocation is superseded.
|
|
105
|
-
return true;
|
|
94
|
+
return;
|
|
106
95
|
}
|
|
107
96
|
else if (filterModelBeingAppliedDiffersFromCurrent && filtersAreBeingApplied) {
|
|
108
97
|
this.currentFilterModel = filterModelBeingApplied;
|
|
109
98
|
this.setResourceParam('CRITERIA_MATCH', this.buildCriteriaMatchFromFilters());
|
|
110
99
|
yield this.refreshDatasource(params);
|
|
111
|
-
return
|
|
100
|
+
return;
|
|
112
101
|
}
|
|
113
102
|
}
|
|
114
|
-
return false;
|
|
115
103
|
});
|
|
116
104
|
}
|
|
117
105
|
/**
|
|
@@ -134,7 +122,6 @@ export class BaseServerSideDatasource {
|
|
|
134
122
|
this.moreRows = false;
|
|
135
123
|
this.sourceRef = undefined;
|
|
136
124
|
this.lastSuccessRowData = undefined;
|
|
137
|
-
this.criteriaRowCountResolved = false;
|
|
138
125
|
}
|
|
139
126
|
refreshDatasource(params) {
|
|
140
127
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -186,184 +173,142 @@ export class BaseServerSideDatasource {
|
|
|
186
173
|
criteriaFromFilters() {
|
|
187
174
|
const filters = [];
|
|
188
175
|
this.getFiltersByType('text').forEach((k) => {
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
filters.push(
|
|
176
|
+
if (!this.currentFilterModel[k].filter &&
|
|
177
|
+
(this.currentFilterModel[k].type === 'false' || this.currentFilterModel[k].type === 'true')) {
|
|
178
|
+
filters.push(`${k} == ${this.currentFilterModel[k].type}`);
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
switch (this.currentFilterModel[k].type) {
|
|
182
|
+
case 'blank':
|
|
183
|
+
filters.push(`(${k} == '' || ${k} == null)`);
|
|
184
|
+
break;
|
|
185
|
+
case 'contains':
|
|
186
|
+
filters.push(`Expr.containsIgnoreCase(${k}, '${this.currentFilterModel[k].filter}')`);
|
|
187
|
+
break;
|
|
188
|
+
case 'equals':
|
|
189
|
+
filters.push(`${k} == '${this.currentFilterModel[k].filter}'`);
|
|
190
|
+
break;
|
|
191
|
+
case 'notBlank':
|
|
192
|
+
filters.push(`(${k} != '' && ${k} != null)`);
|
|
193
|
+
break;
|
|
194
|
+
case 'notEqual':
|
|
195
|
+
filters.push(`${k} != '${this.currentFilterModel[k].filter}'`);
|
|
196
|
+
break;
|
|
197
|
+
case 'wordStartsWith':
|
|
198
|
+
filters.push(`Expr.containsWordsStartingWithIgnoreCase(${k}, '${this.currentFilterModel[k].filter}')`);
|
|
199
|
+
break;
|
|
200
|
+
}
|
|
192
201
|
}
|
|
193
202
|
});
|
|
203
|
+
// TODO: Handle multi filters if we decide we want to use them in SSRM
|
|
194
204
|
// Handle set filters (typically used for enum fields with ag-set-column-filter)
|
|
195
205
|
this.getFiltersByType('set').forEach((k) => {
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
206
|
+
var _a, _b, _c;
|
|
207
|
+
const model = (_a = this.currentFilterModel) === null || _a === void 0 ? void 0 : _a[k];
|
|
208
|
+
const selectedValues = ((_b = model === null || model === void 0 ? void 0 : model.values) !== null && _b !== void 0 ? _b : []);
|
|
209
|
+
if (!selectedValues || selectedValues.length === 0) {
|
|
210
|
+
// Nothing selected means no additional criteria
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
// Try to detect "all values selected" using VALID_VALUES from metadata.
|
|
214
|
+
// In that case we don't want to send any criteria, as it would be equivalent
|
|
215
|
+
// to no filter at all.
|
|
216
|
+
const colMeta = (_c = this.resourceColDefs) === null || _c === void 0 ? void 0 : _c.find((o) => o.NAME === k);
|
|
217
|
+
let allValues;
|
|
218
|
+
if (colMeta === null || colMeta === void 0 ? void 0 : colMeta.VALID_VALUES) {
|
|
219
|
+
try {
|
|
220
|
+
allValues = Array.isArray(colMeta.VALID_VALUES)
|
|
221
|
+
? colMeta.VALID_VALUES
|
|
222
|
+
: colMeta.VALID_VALUES.split('|');
|
|
223
|
+
}
|
|
224
|
+
catch (_d) {
|
|
225
|
+
allValues = undefined;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
if (allValues &&
|
|
229
|
+
allValues.length === selectedValues.length &&
|
|
230
|
+
allValues.every((v) => selectedValues.includes(v))) {
|
|
231
|
+
// All enum options are selected – skip adding criteria for this column
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
const orConditions = selectedValues.map((val) => {
|
|
235
|
+
const safeVal = String(val).replace(/'/g, "\\'");
|
|
236
|
+
return `${k} == '${safeVal}'`;
|
|
237
|
+
});
|
|
238
|
+
if (orConditions.length > 0) {
|
|
239
|
+
filters.push(`(${orConditions.join(' || ')})`);
|
|
199
240
|
}
|
|
200
241
|
});
|
|
201
242
|
this.getFiltersByType('number').forEach((k) => {
|
|
202
|
-
const
|
|
203
|
-
|
|
204
|
-
|
|
243
|
+
const value = this.currentFilterModel[k].filter;
|
|
244
|
+
const valueTwo = this.currentFilterModel[k].filterTo;
|
|
245
|
+
switch (this.currentFilterModel[k].type) {
|
|
246
|
+
case 'equals':
|
|
247
|
+
!isNaN(value) && filters.push(`${k} == ${value}`);
|
|
248
|
+
break;
|
|
249
|
+
case 'notEqual':
|
|
250
|
+
!isNaN(value) && filters.push(`${k} != ${value}`);
|
|
251
|
+
break;
|
|
252
|
+
case 'greaterThan':
|
|
253
|
+
!isNaN(value) && filters.push(`${k} > ${value}`);
|
|
254
|
+
break;
|
|
255
|
+
case 'greaterThanOrEqual':
|
|
256
|
+
!isNaN(value) && filters.push(`${k} >= ${value}`);
|
|
257
|
+
break;
|
|
258
|
+
case 'lessThan':
|
|
259
|
+
!isNaN(value) && filters.push(`${k} < ${value}`);
|
|
260
|
+
break;
|
|
261
|
+
case 'lessThanOrEqual':
|
|
262
|
+
!isNaN(value) && filters.push(`${k} <= ${value}`);
|
|
263
|
+
break;
|
|
264
|
+
case 'inRange':
|
|
265
|
+
!isNaN(value) &&
|
|
266
|
+
!isNaN(valueTwo) &&
|
|
267
|
+
filters.push(`${k} >= ${value} && ${k} <= ${valueTwo}`);
|
|
268
|
+
break;
|
|
269
|
+
case 'blank':
|
|
270
|
+
filters.push(`${k} == 0`);
|
|
271
|
+
break;
|
|
272
|
+
case 'notBlank':
|
|
273
|
+
filters.push(`${k} != 0`);
|
|
274
|
+
break;
|
|
205
275
|
}
|
|
206
276
|
});
|
|
207
277
|
this.getFiltersByType('date').forEach((k) => {
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
278
|
+
var _a, _b;
|
|
279
|
+
const dateFrom = (_a = this.currentFilterModel[k].dateFrom) === null || _a === void 0 ? void 0 : _a.replace(/-/g, '').replace('T', '-').split(' ')[0];
|
|
280
|
+
const dateTo = (_b = this.currentFilterModel[k].dateTo) === null || _b === void 0 ? void 0 : _b.replace(/-/g, '').replace('T', '-').split(' ')[0];
|
|
281
|
+
switch (this.currentFilterModel[k].type) {
|
|
282
|
+
case 'equals':
|
|
283
|
+
filters.push(`Expr.dateIsEqual(${k}, '${dateFrom}')`);
|
|
284
|
+
break;
|
|
285
|
+
case 'lessThan':
|
|
286
|
+
filters.push(`Expr.dateIsBefore(${k}, '${dateFrom}')`);
|
|
287
|
+
break;
|
|
288
|
+
case 'greaterThan':
|
|
289
|
+
filters.push(`Expr.dateIsAfter(${k}, '${dateFrom}')`);
|
|
290
|
+
break;
|
|
291
|
+
case 'inRange':
|
|
292
|
+
filters.push(`Expr.dateIsAfter(${k}, '${dateFrom}') && Expr.dateIsBefore(${k}, '${dateTo}')`);
|
|
293
|
+
break;
|
|
294
|
+
case 'isToday':
|
|
295
|
+
const now = new Date();
|
|
296
|
+
const year = now.getFullYear();
|
|
297
|
+
const month = (now.getMonth() + 1).toString().padStart(2, '0');
|
|
298
|
+
const day = now.getDate().toString().padStart(2, '0');
|
|
299
|
+
const todayStr = `${year}-${month}-${day} 00:00:00`;
|
|
300
|
+
filters.push(`Expr.dateIsEqual(${k}, '${todayStr}')`);
|
|
301
|
+
break;
|
|
302
|
+
case 'blank':
|
|
303
|
+
filters.push(`${k} == null`);
|
|
304
|
+
break;
|
|
305
|
+
case 'notBlank':
|
|
306
|
+
filters.push(`${k} != null`);
|
|
307
|
+
break;
|
|
229
308
|
}
|
|
230
309
|
});
|
|
231
310
|
return filters;
|
|
232
311
|
}
|
|
233
|
-
/**
|
|
234
|
-
* Builds a single criteria fragment for one filter model (flat per-column model or a
|
|
235
|
-
* multi-filter sub-model).
|
|
236
|
-
* @internal
|
|
237
|
-
*/
|
|
238
|
-
criteriaForSingleModel(k, model) {
|
|
239
|
-
if (!model)
|
|
240
|
-
return null;
|
|
241
|
-
switch (model.filterType) {
|
|
242
|
-
case 'text':
|
|
243
|
-
return this.criteriaForTextModel(k, model);
|
|
244
|
-
case 'set':
|
|
245
|
-
return this.criteriaForSetModel(k, model);
|
|
246
|
-
case 'number':
|
|
247
|
-
return this.criteriaForNumberModel(k, model);
|
|
248
|
-
case 'date':
|
|
249
|
-
return this.criteriaForDateModel(k, model);
|
|
250
|
-
default:
|
|
251
|
-
return null;
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
criteriaForTextModel(k, model) {
|
|
255
|
-
const type = model.type;
|
|
256
|
-
const val = model.filter;
|
|
257
|
-
if (!val && (type === 'false' || type === 'true')) {
|
|
258
|
-
return `${k} == ${type}`;
|
|
259
|
-
}
|
|
260
|
-
const safeVal = val ? String(val).replace(/'/g, "\\'") : '';
|
|
261
|
-
switch (type) {
|
|
262
|
-
case 'blank':
|
|
263
|
-
return `(${k} == '' || ${k} == null)`;
|
|
264
|
-
case 'contains':
|
|
265
|
-
return `Expr.containsIgnoreCase(${k}, '${safeVal}')`;
|
|
266
|
-
case 'equals':
|
|
267
|
-
return `${k} == '${safeVal}'`;
|
|
268
|
-
case 'notBlank':
|
|
269
|
-
return `(${k} != '' && ${k} != null)`;
|
|
270
|
-
case 'notEqual':
|
|
271
|
-
return `${k} != '${safeVal}'`;
|
|
272
|
-
case 'wordStartsWith':
|
|
273
|
-
return `Expr.containsWordsStartingWithIgnoreCase(${k}, '${safeVal}')`;
|
|
274
|
-
default:
|
|
275
|
-
return null;
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
criteriaForSetModel(k, model) {
|
|
279
|
-
var _a, _b;
|
|
280
|
-
const selectedValues = ((_a = model.values) !== null && _a !== void 0 ? _a : []);
|
|
281
|
-
if (!selectedValues.length) {
|
|
282
|
-
// Nothing selected means no additional criteria
|
|
283
|
-
return null;
|
|
284
|
-
}
|
|
285
|
-
// Try to detect "all values selected" using VALID_VALUES from metadata.
|
|
286
|
-
// In that case we don't want to send any criteria, as it would be equivalent
|
|
287
|
-
// to no filter at all.
|
|
288
|
-
const colMeta = (_b = this.resourceColDefs) === null || _b === void 0 ? void 0 : _b.find((o) => o.NAME === k);
|
|
289
|
-
let allValues;
|
|
290
|
-
if (colMeta === null || colMeta === void 0 ? void 0 : colMeta.VALID_VALUES) {
|
|
291
|
-
try {
|
|
292
|
-
allValues = Array.isArray(colMeta.VALID_VALUES)
|
|
293
|
-
? colMeta.VALID_VALUES
|
|
294
|
-
: colMeta.VALID_VALUES.split('|');
|
|
295
|
-
}
|
|
296
|
-
catch (_c) {
|
|
297
|
-
allValues = undefined;
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
if (allValues &&
|
|
301
|
-
allValues.length === selectedValues.length &&
|
|
302
|
-
allValues.every((v) => selectedValues.includes(v))) {
|
|
303
|
-
// All enum options are selected – skip adding criteria for this column
|
|
304
|
-
return null;
|
|
305
|
-
}
|
|
306
|
-
const orConditions = selectedValues.map((val) => {
|
|
307
|
-
const safeVal = String(val).replace(/'/g, "\\'");
|
|
308
|
-
return `${k} == '${safeVal}'`;
|
|
309
|
-
});
|
|
310
|
-
return orConditions.length ? `(${orConditions.join(' || ')})` : null;
|
|
311
|
-
}
|
|
312
|
-
criteriaForNumberModel(k, model) {
|
|
313
|
-
const value = model.filter;
|
|
314
|
-
const valueTwo = model.filterTo;
|
|
315
|
-
const isNum = (v) => v !== null && v !== '' && !isNaN(Number(v));
|
|
316
|
-
switch (model.type) {
|
|
317
|
-
case 'equals':
|
|
318
|
-
return isNum(value) ? `${k} == ${value}` : null;
|
|
319
|
-
case 'notEqual':
|
|
320
|
-
return isNum(value) ? `${k} != ${value}` : null;
|
|
321
|
-
case 'greaterThan':
|
|
322
|
-
return isNum(value) ? `${k} > ${value}` : null;
|
|
323
|
-
case 'greaterThanOrEqual':
|
|
324
|
-
return isNum(value) ? `${k} >= ${value}` : null;
|
|
325
|
-
case 'lessThan':
|
|
326
|
-
return isNum(value) ? `${k} < ${value}` : null;
|
|
327
|
-
case 'lessThanOrEqual':
|
|
328
|
-
return isNum(value) ? `${k} <= ${value}` : null;
|
|
329
|
-
case 'inRange':
|
|
330
|
-
return isNum(value) && isNum(valueTwo) ? `${k} >= ${value} && ${k} <= ${valueTwo}` : null;
|
|
331
|
-
case 'blank':
|
|
332
|
-
return `${k} == 0`;
|
|
333
|
-
case 'notBlank':
|
|
334
|
-
return `${k} != 0`;
|
|
335
|
-
default:
|
|
336
|
-
return null;
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
criteriaForDateModel(k, model) {
|
|
340
|
-
var _a, _b;
|
|
341
|
-
const dateFrom = (_a = model.dateFrom) === null || _a === void 0 ? void 0 : _a.replace(/-/g, '').replace('T', '-').split(' ')[0];
|
|
342
|
-
const dateTo = (_b = model.dateTo) === null || _b === void 0 ? void 0 : _b.replace(/-/g, '').replace('T', '-').split(' ')[0];
|
|
343
|
-
switch (model.type) {
|
|
344
|
-
case 'equals':
|
|
345
|
-
return `Expr.dateIsEqual(${k}, '${dateFrom}')`;
|
|
346
|
-
case 'lessThan':
|
|
347
|
-
return `Expr.dateIsBefore(${k}, '${dateFrom}')`;
|
|
348
|
-
case 'greaterThan':
|
|
349
|
-
return `Expr.dateIsAfter(${k}, '${dateFrom}')`;
|
|
350
|
-
case 'inRange':
|
|
351
|
-
return `Expr.dateIsAfter(${k}, '${dateFrom}') && Expr.dateIsBefore(${k}, '${dateTo}')`;
|
|
352
|
-
case 'isToday': {
|
|
353
|
-
const now = new Date();
|
|
354
|
-
const year = now.getFullYear();
|
|
355
|
-
const month = (now.getMonth() + 1).toString().padStart(2, '0');
|
|
356
|
-
const day = now.getDate().toString().padStart(2, '0');
|
|
357
|
-
return `Expr.dateIsEqual(${k}, '${year}-${month}-${day} 00:00:00')`;
|
|
358
|
-
}
|
|
359
|
-
case 'blank':
|
|
360
|
-
return `${k} == null`;
|
|
361
|
-
case 'notBlank':
|
|
362
|
-
return `${k} != null`;
|
|
363
|
-
default:
|
|
364
|
-
return null;
|
|
365
|
-
}
|
|
366
|
-
}
|
|
367
312
|
getFiltersByType(filterType) {
|
|
368
313
|
var _a;
|
|
369
314
|
return Object.keys((_a = this.currentFilterModel) !== null && _a !== void 0 ? _a : {})
|
|
@@ -391,22 +336,19 @@ export class BaseServerSideDatasource {
|
|
|
391
336
|
}
|
|
392
337
|
return rowCount;
|
|
393
338
|
}
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
if (!this.moreRows) {
|
|
397
|
-
// Dataset ends here: rowData.size is the deduplicated loaded count. Deliberately not
|
|
398
|
-
// serverRowsCount (GSF's ROWS_COUNT ignores CRITERIA_MATCH) nor clientRowsCount
|
|
399
|
-
// (non-deduplicated running sum, overcounts on live streams).
|
|
400
|
-
rowCount = Math.min(this.rowData.size, this.maxView);
|
|
339
|
+
if (currentLastRowNumber === this.serverRowsCount && !this.moreRows) {
|
|
340
|
+
rowCount = this.serverRowsCount;
|
|
401
341
|
}
|
|
402
|
-
else if (
|
|
403
|
-
|
|
404
|
-
rowCount = this.maxView;
|
|
342
|
+
else if (currentLastRowNumber > this.maxView) {
|
|
343
|
+
rowCount = Math.min(defaultCount, this.calculatedRowsCount);
|
|
405
344
|
}
|
|
406
|
-
else {
|
|
407
|
-
//
|
|
408
|
-
//
|
|
409
|
-
rowCount =
|
|
345
|
+
else if (!this.moreRows && currentLastRowNumber > this.calculatedRowsCount) {
|
|
346
|
+
// No more data from server and request is beyond what has been counted.
|
|
347
|
+
// Return the actual loaded count so AG Grid knows the dataset ends here.
|
|
348
|
+
rowCount = this.clientRowsCount || this.calculatedRowsCount;
|
|
349
|
+
}
|
|
350
|
+
else if (!this.moreRows && this.serverRowsCount > this.calculatedRowsCount) {
|
|
351
|
+
rowCount = this.calculatedRowsCount;
|
|
410
352
|
}
|
|
411
353
|
return rowCount;
|
|
412
354
|
}
|