@slickgrid-universal/odata 5.0.1 → 5.1.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/cjs/services/grid-odata.service.js +45 -14
- package/dist/cjs/services/grid-odata.service.js.map +1 -1
- package/dist/esm/services/grid-odata.service.js +45 -14
- package/dist/esm/services/grid-odata.service.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/interfaces/odataOption.interface.d.ts +3 -1
- package/dist/types/interfaces/odataOption.interface.d.ts.map +1 -1
- package/dist/types/services/grid-odata.service.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/interfaces/odataOption.interface.ts +4 -1
- package/src/services/grid-odata.service.ts +46 -15
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { BackendServiceOption, CaseType } from '@slickgrid-universal/common';
|
|
1
|
+
import type { BackendServiceFilterQueryOverrideArgs, BackendServiceOption, CaseType } from '@slickgrid-universal/common';
|
|
2
2
|
export interface OdataOption extends BackendServiceOption {
|
|
3
3
|
/** What is the casing type to use? Typically that would be 1 of the following 2: camelCase or PascalCase */
|
|
4
4
|
caseType: CaseType;
|
|
@@ -26,6 +26,8 @@ export interface OdataOption extends BackendServiceOption {
|
|
|
26
26
|
filterBySeparator?: 'and' | 'or';
|
|
27
27
|
/** Filter queue */
|
|
28
28
|
filterQueue?: any[];
|
|
29
|
+
/** An optional predicate function to overide the built-in filter construction */
|
|
30
|
+
filterQueryOverride?: (args: BackendServiceFilterQueryOverrideArgs) => string | undefined;
|
|
29
31
|
/** Sorting string (or array of string) that must be a valid OData string */
|
|
30
32
|
orderBy?: string | string[];
|
|
31
33
|
/** OData (or any other) version number (the query string is different between versions) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"odataOption.interface.d.ts","sourceRoot":"","sources":["../../../src/interfaces/odataOption.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"odataOption.interface.d.ts","sourceRoot":"","sources":["../../../src/interfaces/odataOption.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qCAAqC,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEzH,MAAM,WAAW,WAAY,SAAQ,oBAAoB;IACvD,4GAA4G;IAC5G,QAAQ,EAAE,QAAQ,CAAC;IAEnB,0FAA0F;IAC1F,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,6BAA6B;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,+FAA+F;IAC/F,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE3B,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,GAAG,CAAC;IAEf,wEAAwE;IACxE,iBAAiB,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IAEjC,mBAAmB;IACnB,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC;IAEpB,kFAAkF;IAClF,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,qCAAqC,KAAK,MAAM,GAAG,SAAS,CAAC;IAE1F,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE5B,2FAA2F;IAC3F,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAEjC,4JAA4J;IAC5J,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,MAAM,CAAC;IAE3C,uJAAuJ;IACvJ,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,MAAM,CAAC;CAC9C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid-odata.service.d.ts","sourceRoot":"","sources":["../../../src/services/grid-odata.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,cAAc,EACd,MAAM,EAEN,aAAa,EACb,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,UAAU,EACV,eAAe,EACf,UAAU,EACV,qBAAqB,EAErB,cAAc,EACd,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,SAAS,EACV,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAEL,SAAS,EAET,YAAY,EAGb,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAsB,MAAM,qBAAqB,CAAC;AAK3E,qBAAa,gBAAiB,YAAW,cAAc;IACrD,SAAS,CAAC,eAAe,EAAE,aAAa,EAAE,CAAM;IAChD,SAAS,CAAC,kBAAkB,EAAE,iBAAiB,GAAG,IAAI,CAAQ;IAC9D,SAAS,CAAC,eAAe,EAAE,aAAa,EAAE,CAAM;IAChD,SAAS,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAM;IAC5C,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;IACvC,SAAS,CAAC,aAAa,EAAE,wBAAwB,CAAC;IAClD,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/B,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;IACnC,cAAc,EAAE,WAAW,CAIzB;IAEF,wCAAwC;IACxC,IAAI,iBAAiB,kBAEpB;IAED,mCAAmC;IACnC,IAAI,YAAY,6BAEf;IAED,iEAAiE;IACjE,SAAS,KAAK,YAAY,IAAI,UAAU,CAEvC;;IAMD,IAAI,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI;IA8B3H,UAAU,IAAI,MAAM;IAIpB,WAAW,CAAC,aAAa,EAAE,GAAG,GAAG,IAAI;IAuDrC,YAAY;IAKZ,YAAY;IAKZ,aAAa,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;IAKnD,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI3C,0DAA0D;IAC1D,iBAAiB,IAAI,aAAa,EAAE;IAIpC,4DAA4D;IAC5D,oBAAoB,IAAI,iBAAiB,GAAG,IAAI;IAIhD,0DAA0D;IAC1D,iBAAiB,IAAI,aAAa,EAAE;IAIpC;;;;OAIG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM;IAgCjC,sBAAsB;IAMtB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,EAAE;IAOvE,sBAAsB,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS,EAAE,IAAI,EAAE,iBAAiB,GAAG,MAAM;IAyBlF,0BAA0B,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS,EAAE,IAAI,EAAE,qBAAqB;IAWjF,oBAAoB,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS,EAAE,IAAI,EAAE,gBAAgB,GAAG,eAAe;IAUxF;;;OAGG;IACH,aAAa,CAAC,aAAa,EAAE,aAAa,GAAG,aAAa,EAAE,EAAE,8BAA8B,CAAC,EAAE,OAAO;
|
|
1
|
+
{"version":3,"file":"grid-odata.service.d.ts","sourceRoot":"","sources":["../../../src/services/grid-odata.service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@slickgrid-universal/odata",
|
|
3
|
-
"version": "5.0
|
|
3
|
+
"version": "5.1.0",
|
|
4
4
|
"description": "Grid OData Service to sync a grid with an OData backend server",
|
|
5
5
|
"main": "./dist/cjs/index.js",
|
|
6
6
|
"module": "./dist/esm/index.js",
|
|
@@ -38,12 +38,12 @@
|
|
|
38
38
|
"not dead"
|
|
39
39
|
],
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@slickgrid-universal/common": "~5.0
|
|
41
|
+
"@slickgrid-universal/common": "~5.1.0",
|
|
42
42
|
"@slickgrid-universal/utils": "~5.0.0"
|
|
43
43
|
},
|
|
44
44
|
"funding": {
|
|
45
45
|
"type": "ko_fi",
|
|
46
46
|
"url": "https://ko-fi.com/ghiscoding"
|
|
47
47
|
},
|
|
48
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "dec8be36272c9111cd708a1836e1697ac81be323"
|
|
49
49
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { BackendServiceOption, CaseType } from '@slickgrid-universal/common';
|
|
1
|
+
import type { BackendServiceFilterQueryOverrideArgs, BackendServiceOption, CaseType } from '@slickgrid-universal/common';
|
|
2
2
|
|
|
3
3
|
export interface OdataOption extends BackendServiceOption {
|
|
4
4
|
/** What is the casing type to use? Typically that would be 1 of the following 2: camelCase or PascalCase */
|
|
@@ -37,6 +37,9 @@ export interface OdataOption extends BackendServiceOption {
|
|
|
37
37
|
/** Filter queue */
|
|
38
38
|
filterQueue?: any[];
|
|
39
39
|
|
|
40
|
+
/** An optional predicate function to overide the built-in filter construction */
|
|
41
|
+
filterQueryOverride?: (args: BackendServiceFilterQueryOverrideArgs) => string | undefined;
|
|
42
|
+
|
|
40
43
|
/** Sorting string (or array of string) that must be a valid OData string */
|
|
41
44
|
orderBy?: string | string[];
|
|
42
45
|
|
|
@@ -104,10 +104,10 @@ export class GridOdataService implements BackendService {
|
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
postProcess(processResult: any): void {
|
|
107
|
-
const odataVersion = this._odataService
|
|
107
|
+
const odataVersion = this._odataService.options.version ?? 2;
|
|
108
108
|
|
|
109
|
-
if (this.pagination && this._odataService
|
|
110
|
-
const countExtractor = this._odataService
|
|
109
|
+
if (this.pagination && this._odataService.options.enableCount) {
|
|
110
|
+
const countExtractor = this._odataService.options.countExtractor ??
|
|
111
111
|
odataVersion >= 4 ? (r: any) => r?.['@odata.count'] :
|
|
112
112
|
odataVersion === 3 ? (r: any) => r?.['__count'] :
|
|
113
113
|
(r: any) => r?.d?.['__count'];
|
|
@@ -117,8 +117,8 @@ export class GridOdataService implements BackendService {
|
|
|
117
117
|
}
|
|
118
118
|
}
|
|
119
119
|
|
|
120
|
-
if (this._odataService
|
|
121
|
-
const datasetExtractor = this._odataService
|
|
120
|
+
if (this._odataService.options.enableExpand) {
|
|
121
|
+
const datasetExtractor = this._odataService.options.datasetExtractor ??
|
|
122
122
|
odataVersion >= 4 ? (r: any) => r?.value :
|
|
123
123
|
odataVersion === 3 ? (r: any) => r?.results :
|
|
124
124
|
(r: any) => r?.d?.results;
|
|
@@ -295,7 +295,7 @@ export class GridOdataService implements BackendService {
|
|
|
295
295
|
updateFilters(columnFilters: ColumnFilters | CurrentFilter[], isUpdatedByPresetOrDynamically?: boolean) {
|
|
296
296
|
let searchBy = '';
|
|
297
297
|
const searchByArray: string[] = [];
|
|
298
|
-
const odataVersion = this._odataService
|
|
298
|
+
const odataVersion = this._odataService.options.version ?? 2;
|
|
299
299
|
|
|
300
300
|
// on filter preset load, we need to keep current filters
|
|
301
301
|
if (isUpdatedByPresetOrDynamically) {
|
|
@@ -342,13 +342,17 @@ export class GridOdataService implements BackendService {
|
|
|
342
342
|
|
|
343
343
|
// run regex to find possible filter operators unless the user disabled the feature
|
|
344
344
|
const autoParseInputFilterOperator = columnDef.autoParseInputFilterOperator ?? this._gridOptions.autoParseInputFilterOperator;
|
|
345
|
-
const matches = autoParseInputFilterOperator !== false
|
|
346
|
-
? fieldSearchValue.match(/^([<>!=*]{0,2})(.*[^<>!=*])([*]?)$/) // group 1: Operator, 2: searchValue, 3: last char is '*' (meaning starts with, ex.: abc*)
|
|
347
|
-
: [fieldSearchValue, '', fieldSearchValue, '']; // when parsing is disabled, we'll only keep the search value in the index 2 to make it easy for code reuse
|
|
348
345
|
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
346
|
+
// group (2): comboStartsWith, (3): comboEndsWith, (4): Operator, (1 or 5): searchValue, (6): last char is '*' (meaning starts with, ex.: abc*)
|
|
347
|
+
const matches = autoParseInputFilterOperator !== false
|
|
348
|
+
? fieldSearchValue.match(/^((.*[^\\*\r\n])[*]{1}(.*[^*\r\n]))|^([<>!=*]{0,2})(.*[^<>!=*])([*]?)$/) || []
|
|
349
|
+
: [fieldSearchValue, '', '', '', '', fieldSearchValue, ''];
|
|
350
|
+
|
|
351
|
+
const comboStartsWith = matches?.[2] || '';
|
|
352
|
+
const comboEndsWith = matches?.[3] || '';
|
|
353
|
+
let operator = columnFilter.operator || matches?.[4];
|
|
354
|
+
let searchValue = matches?.[1] || matches?.[5] || '';
|
|
355
|
+
const lastValueChar = matches?.[6] || (operator === '*z' || operator === OperatorType.endsWith) ? '*' : '';
|
|
352
356
|
const bypassOdataQuery = columnFilter.bypassBackendQuery || false;
|
|
353
357
|
|
|
354
358
|
// no need to query if search value is empty
|
|
@@ -357,7 +361,12 @@ export class GridOdataService implements BackendService {
|
|
|
357
361
|
continue;
|
|
358
362
|
}
|
|
359
363
|
|
|
360
|
-
|
|
364
|
+
// StartsWith + EndsWith combo
|
|
365
|
+
if (comboStartsWith && comboEndsWith) {
|
|
366
|
+
searchTerms = [comboStartsWith, comboEndsWith];
|
|
367
|
+
operator = OperatorType.startsWithEndsWith;
|
|
368
|
+
} else if (Array.isArray(searchTerms) && searchTerms.length === 1 && typeof searchTerms[0] === 'string' && searchTerms[0].indexOf('..') >= 0) {
|
|
369
|
+
// range filter
|
|
361
370
|
if (operator !== OperatorType.rangeInclusive && operator !== OperatorType.rangeExclusive) {
|
|
362
371
|
operator = this._gridOptions.defaultFilterRangeOperator ?? OperatorType.rangeInclusive;
|
|
363
372
|
}
|
|
@@ -390,7 +399,7 @@ export class GridOdataService implements BackendService {
|
|
|
390
399
|
operator = OperatorType.equal;
|
|
391
400
|
}
|
|
392
401
|
|
|
393
|
-
// if we still don't have an operator find the proper Operator to use
|
|
402
|
+
// if we still don't have an operator find the proper Operator to use according to field type
|
|
394
403
|
if (!operator) {
|
|
395
404
|
operator = mapOperatorByFieldType(fieldType);
|
|
396
405
|
}
|
|
@@ -417,7 +426,29 @@ export class GridOdataService implements BackendService {
|
|
|
417
426
|
fieldName = titleCase(getHtmlStringOutput(fieldName || ''));
|
|
418
427
|
}
|
|
419
428
|
|
|
420
|
-
|
|
429
|
+
let filterQueryOverride: string | undefined = undefined;
|
|
430
|
+
if (typeof this._odataService.options.filterQueryOverride === 'function') {
|
|
431
|
+
filterQueryOverride = this._odataService.options.filterQueryOverride({
|
|
432
|
+
fieldName: getHtmlStringOutput(fieldName),
|
|
433
|
+
columnDef,
|
|
434
|
+
operator,
|
|
435
|
+
columnFilterOperator: columnFilter.operator,
|
|
436
|
+
searchValue,
|
|
437
|
+
grid: this._grid
|
|
438
|
+
});
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
if (filterQueryOverride !== undefined) {
|
|
442
|
+
searchBy = filterQueryOverride;
|
|
443
|
+
} else if (operator === OperatorType.startsWithEndsWith && Array.isArray(searchTerms) && searchTerms.length === 2) {
|
|
444
|
+
const tmpSearchTerms: string[] = [];
|
|
445
|
+
const [sw, ew] = searchTerms;
|
|
446
|
+
|
|
447
|
+
// add 2 conditions (StartsWith A + EndsWith B) to the search array
|
|
448
|
+
tmpSearchTerms.push(`startswith(${fieldName}, ${sw})`);
|
|
449
|
+
tmpSearchTerms.push(`endswith(${fieldName}, ${ew})`);
|
|
450
|
+
searchBy = tmpSearchTerms.join(' and ');
|
|
451
|
+
} else if (searchTerms?.length > 1 && (operator === 'IN' || operator === 'NIN' || operator === 'NOTIN' || operator === 'NOT IN' || operator === 'NOT_IN')) {
|
|
421
452
|
// when having more than 1 search term (then check if we have a "IN" or "NOT IN" filter search)
|
|
422
453
|
const tmpSearchTerms: string[] = [];
|
|
423
454
|
if (operator === 'IN') {
|