pict-section-recordset 1.0.37 → 1.0.38

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.
Files changed (34) hide show
  1. package/example_applications/simple_entity/Simple-RecordSet-Application.js +10 -0
  2. package/package.json +2 -2
  3. package/source/application/Pict-Application-RecordSet.js +4 -0
  4. package/source/providers/RecordSet-RecordProvider-MeadowEndpoints.js +71 -27
  5. package/source/services/RecordsSet-MetaController.js +14 -1
  6. package/source/views/RecordSet-Filters.js +19 -12
  7. package/source/views/dashboard/RecordSet-Dashboard-HeaderDashboard.js +2 -2
  8. package/source/views/dashboard/RecordSet-Dashboard-PaginationBottom.js +2 -2
  9. package/source/views/dashboard/RecordSet-Dashboard-PaginationTop.js +2 -2
  10. package/source/views/dashboard/RecordSet-Dashboard-RecordList.js +5 -5
  11. package/source/views/dashboard/RecordSet-Dashboard-RecordListEntry.js +2 -2
  12. package/source/views/dashboard/RecordSet-Dashboard-RecordListHeader.js +2 -2
  13. package/source/views/dashboard/RecordSet-Dashboard-Title.js +2 -2
  14. package/source/views/dashboard/RecordSet-Dashboard.js +3 -1
  15. package/source/views/filters/RecordSet-Filter-Base-Range.js +2 -2
  16. package/source/views/filters/RecordSet-Filter-Base.js +7 -2
  17. package/source/views/list/RecordSet-List.js +3 -1
  18. package/types/application/Pict-Application-RecordSet.d.ts.map +1 -1
  19. package/types/providers/RecordSet-RecordProvider-MeadowEndpoints.d.ts +9 -0
  20. package/types/providers/RecordSet-RecordProvider-MeadowEndpoints.d.ts.map +1 -1
  21. package/types/services/RecordsSet-MetaController.d.ts.map +1 -1
  22. package/types/views/RecordSet-Filters.d.ts +1 -0
  23. package/types/views/RecordSet-Filters.d.ts.map +1 -1
  24. package/types/views/dashboard/RecordSet-Dashboard-HeaderDashboard.d.ts +3 -3
  25. package/types/views/dashboard/RecordSet-Dashboard-PaginationBottom.d.ts +3 -3
  26. package/types/views/dashboard/RecordSet-Dashboard-PaginationTop.d.ts +3 -3
  27. package/types/views/dashboard/RecordSet-Dashboard-RecordList.d.ts +5 -5
  28. package/types/views/dashboard/RecordSet-Dashboard-RecordList.d.ts.map +1 -1
  29. package/types/views/dashboard/RecordSet-Dashboard-RecordListEntry.d.ts +3 -3
  30. package/types/views/dashboard/RecordSet-Dashboard-RecordListHeader.d.ts +3 -3
  31. package/types/views/dashboard/RecordSet-Dashboard-Title.d.ts +3 -3
  32. package/types/views/dashboard/RecordSet-Dashboard.d.ts.map +1 -1
  33. package/types/views/filters/RecordSet-Filter-Base.d.ts.map +1 -1
  34. package/types/views/list/RecordSet-List.d.ts.map +1 -1
@@ -230,6 +230,16 @@ module.exports.default_configuration.pict_configuration = (
230
230
  "RecordSetType": "MeadowEndpoint", // Could be "Custom" which would require a provider to already be created for the record set.
231
231
  "RecordSetMeadowEntity": "Book", // This leverages the /Schema endpoint to get the record set columns.
232
232
 
233
+ "RecordSetIgnoreFilterFields": [ "Deleted", "DeletingIDUser", "DeleteDate", "UpdateDate" ],
234
+
235
+ "RecordSetFieldFilterClauses":
236
+ {
237
+ "Title":
238
+ [
239
+ { "FilterKey": "Title", "ClauseKey": "TitleMatch", "DisplayName": "Book Title Custom Filter", "Type": "StringMatch", "FilterByColumn": "Title", "ExactMatch": true }
240
+ ]
241
+ },
242
+
233
243
  "RecordSetListColumns": [
234
244
  {
235
245
  "Key": "Title",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pict-section-recordset",
3
- "version": "1.0.37",
3
+ "version": "1.0.38",
4
4
  "description": "Pict dynamic record set management views",
5
5
  "main": "source/Pict-Section-RecordSet.js",
6
6
  "directories": {
@@ -37,7 +37,7 @@
37
37
  "pict-application": "^1.0.27",
38
38
  "pict-service-commandlineutility": "^1.0.15",
39
39
  "quackage": "^1.0.42",
40
- "typescript": "^5.8.3"
40
+ "typescript": "^5.9.2"
41
41
  },
42
42
  "dependencies": {
43
43
  "fable-serviceproviderbase": "^3.0.15",
@@ -45,6 +45,10 @@ class PictSectionRecordSetApplication extends libPictApplication
45
45
 
46
46
  onAfterInitialize()
47
47
  {
48
+ if (this.pict.CSSMap)
49
+ {
50
+ this.pict.CSSMap.injectCSS();
51
+ }
48
52
  // Now add the routes
49
53
  this.pict.providers.RecordSetRouter.addRoutes(this.fable.providers.RecordSetRouter.pictRouter);
50
54
 
@@ -66,6 +66,18 @@ class MeadowEndpointsRecordSetProvider extends libRecordSetProviderBase
66
66
  return this._EntityProvider;
67
67
  }
68
68
 
69
+ /**
70
+ * @return {Array<string>} - The fields to ignore for filter availability.
71
+ */
72
+ get ignoreFilterFields()
73
+ {
74
+ if (Array.isArray(this.options.IgnoreFilterFields))
75
+ {
76
+ return this.options.IgnoreFilterFields;
77
+ }
78
+ return [];
79
+ }
80
+
69
81
  /**
70
82
  * Get a record by its ID or GUID.
71
83
  *
@@ -350,6 +362,43 @@ class MeadowEndpointsRecordSetProvider extends libRecordSetProviderBase
350
362
  return pRecord;
351
363
  }
352
364
 
365
+ /**
366
+ * @param {string} pSchemaField - The schema field name.
367
+ * @param {Record<string, any>} pColumn - The full column definition from the schema.
368
+ */
369
+ getFieldFilterClauses(pSchemaField, pColumn)
370
+ {
371
+ let tmpFieldFilterClauses = this.options.FieldFilterClauses?.[pSchemaField];
372
+ if (!Array.isArray(tmpFieldFilterClauses))
373
+ {
374
+ tmpFieldFilterClauses = [];
375
+ const tmpFieldHumanName = this._getHumanReadableFieldName(pSchemaField);
376
+ switch (pColumn.type)
377
+ {
378
+ case 'string':
379
+ tmpFieldFilterClauses.push({ FilterKey: pSchemaField, ClauseKey: `${pSchemaField}_Match_Exact`, DisplayName: `${tmpFieldHumanName} Exact Match`, Type: 'StringMatch', FilterByColumn: pSchemaField, ExactMatch: true, Ordinal: tmpFieldFilterClauses.length + 1 });
380
+ tmpFieldFilterClauses.push({ FilterKey: pSchemaField, ClauseKey: `${pSchemaField}_Match_Fuzzy`, DisplayName: `${tmpFieldHumanName} Partial Match`, Type: 'StringMatch', FilterByColumn: pSchemaField, ExactMatch: false , Ordinal: tmpFieldFilterClauses.length + 1 });
381
+ tmpFieldFilterClauses.push({ FilterKey: pSchemaField, ClauseKey: `${pSchemaField}_Range`, DisplayName: `${tmpFieldHumanName} in Range`, Type: 'StringRange', FilterByColumn: pSchemaField , Ordinal: tmpFieldFilterClauses.length + 1 });
382
+ break;
383
+ case 'date':
384
+ case 'datetime':
385
+ tmpFieldFilterClauses.push({ FilterKey: pSchemaField, ClauseKey: `${pSchemaField}_Match_Exact`, DisplayName: `${tmpFieldHumanName} Exact Match`, Type: 'DateMatch', FilterByColumn: pSchemaField, ExactMatch: true , Ordinal: tmpFieldFilterClauses.length + 1 });
386
+ tmpFieldFilterClauses.push({ FilterKey: pSchemaField, ClauseKey: `${pSchemaField}_Match_Fuzzy`, DisplayName: `${tmpFieldHumanName} Partial Match`, Type: 'DateMatch', FilterByColumn: pSchemaField, ExactMatch: false , Ordinal: tmpFieldFilterClauses.length + 1 });
387
+ tmpFieldFilterClauses.push({ FilterKey: pSchemaField, ClauseKey: `${pSchemaField}_Range`, DisplayName: `${tmpFieldHumanName} in Range`, Type: 'DateRange', FilterByColumn: pSchemaField , Ordinal: tmpFieldFilterClauses.length + 1 });
388
+ break;
389
+ case 'boolean': //TODO: we didn't add filters for this - they are just numeric but it's weird for the user, maybe we should add views for this that account for the difference
390
+ case 'integer':
391
+ tmpFieldFilterClauses.push({ FilterKey: pSchemaField, ClauseKey: `${pSchemaField}_Match_Exact`, DisplayName: `${tmpFieldHumanName} Exact Match`, Type: 'NumericMatch', FilterByColumn: pSchemaField, ExactMatch: true , Ordinal: tmpFieldFilterClauses.length + 1 });
392
+ tmpFieldFilterClauses.push({ FilterKey: pSchemaField, ClauseKey: `${pSchemaField}_Match_Fuzzy`, DisplayName: `${tmpFieldHumanName} Partial Match`, Type: 'NumericMatch', FilterByColumn: pSchemaField, ExactMatch: false , Ordinal: tmpFieldFilterClauses.length + 1 });
393
+ tmpFieldFilterClauses.push({ FilterKey: pSchemaField, ClauseKey: `${pSchemaField}_Range`, DisplayName: `${tmpFieldHumanName} in Range`, Type: 'NumericRange', FilterByColumn: pSchemaField , Ordinal: tmpFieldFilterClauses.length + 1 });
394
+ break;
395
+ default:
396
+ this.pict.log.warn(`Unsupported field type ${pColumn.type} for field ${pSchemaField}`, { Schema: pColumn });
397
+ }
398
+ }
399
+ return tmpFieldFilterClauses;
400
+ }
401
+
353
402
  /**
354
403
  * @param {(error?: Error) => void} fCallback - The callback function.
355
404
  */
@@ -416,6 +465,10 @@ class MeadowEndpointsRecordSetProvider extends libRecordSetProviderBase
416
465
  if (tmpExperience.Default && !tmpEntityFilterState.FilterClauses)
417
466
  {
418
467
  tmpEntityFilterState.FilterClauses = JSON.parse(JSON.stringify(this._Experiences[tmpKey].FilterClauses));
468
+ for (const tmpClause of tmpEntityFilterState.FilterClauses)
469
+ {
470
+ tmpClause.Hash = `${tmpClause.FilterByColumn}-${tmpClause.Type}-${this.pict.getUUID()}`;
471
+ }
419
472
  }
420
473
  continue;
421
474
  }
@@ -434,15 +487,15 @@ class MeadowEndpointsRecordSetProvider extends libRecordSetProviderBase
434
487
  return fCallback(pError);
435
488
  }
436
489
  const tmpProperties = tmpSchema?.properties;
437
- // loop throught the schema and add the columns to the tableCells
490
+ // loop through the schema and add the columns to the tableCells
438
491
  let tmpOrdinal = 0;
439
492
  for (const tmpSchemaField in tmpProperties)
440
493
  {
441
- ++tmpOrdinal;
442
- if (tmpSchemaField === 'Deleted' || tmpSchemaField === 'DeletingIDUser')
494
+ if (this.ignoreFilterFields.includes(tmpSchemaField))
443
495
  {
444
496
  continue;
445
497
  }
498
+ ++tmpOrdinal;
446
499
  const tmpColumn = tmpProperties[tmpSchemaField];
447
500
  let tmpFieldFilterSchema = this._FilterSchema[tmpSchemaField];
448
501
  if (!tmpFieldFilterSchema)
@@ -477,28 +530,15 @@ class MeadowEndpointsRecordSetProvider extends libRecordSetProviderBase
477
530
  {
478
531
  tmpFieldFilterSchema.AvailableClauses = [];
479
532
  }
480
- const tmpFieldHumanName = this._getHumanReadableFieldName(tmpSchemaField);
481
- switch (tmpColumn.type)
533
+ const tmpFieldFilterClauses = this.getFieldFilterClauses(tmpSchemaField, tmpColumn);
534
+ if (Array.isArray(tmpFieldFilterClauses) && tmpFieldFilterClauses.length > 0)
482
535
  {
483
- case 'string':
484
- tmpFieldFilterSchema.AvailableClauses.push({ FilterKey: tmpSchemaField, ClauseKey: `${tmpSchemaField}_Match_Exact`, DisplayName: `${tmpFieldHumanName} Exact Match`, Type: 'StringMatch', FilterByColumn: tmpSchemaField, ExactMatch: true, Ordinal: tmpFieldFilterSchema.AvailableClauses.length + 1 });
485
- tmpFieldFilterSchema.AvailableClauses.push({ FilterKey: tmpSchemaField, ClauseKey: `${tmpSchemaField}_Match_Fuzzy`, DisplayName: `${tmpFieldHumanName} Partial Match`, Type: 'StringMatch', FilterByColumn: tmpSchemaField, ExactMatch: false , Ordinal: tmpFieldFilterSchema.AvailableClauses.length + 1 });
486
- tmpFieldFilterSchema.AvailableClauses.push({ FilterKey: tmpSchemaField, ClauseKey: `${tmpSchemaField}_Range`, DisplayName: `${tmpFieldHumanName} in Range`, Type: 'StringRange', FilterByColumn: tmpSchemaField , Ordinal: tmpFieldFilterSchema.AvailableClauses.length + 1 });
487
- break;
488
- case 'date':
489
- case 'datetime':
490
- tmpFieldFilterSchema.AvailableClauses.push({ FilterKey: tmpSchemaField, ClauseKey: `${tmpSchemaField}_Match_Exact`, DisplayName: `${tmpFieldHumanName} Exact Match`, Type: 'DateMatch', FilterByColumn: tmpSchemaField, ExactMatch: true , Ordinal: tmpFieldFilterSchema.AvailableClauses.length + 1 });
491
- tmpFieldFilterSchema.AvailableClauses.push({ FilterKey: tmpSchemaField, ClauseKey: `${tmpSchemaField}_Match_Fuzzy`, DisplayName: `${tmpFieldHumanName} Partial Match`, Type: 'DateMatch', FilterByColumn: tmpSchemaField, ExactMatch: false , Ordinal: tmpFieldFilterSchema.AvailableClauses.length + 1 });
492
- tmpFieldFilterSchema.AvailableClauses.push({ FilterKey: tmpSchemaField, ClauseKey: `${tmpSchemaField}_Range`, DisplayName: `${tmpFieldHumanName} in Range`, Type: 'DateRange', FilterByColumn: tmpSchemaField , Ordinal: tmpFieldFilterSchema.AvailableClauses.length + 1 });
493
- break;
494
- case 'boolean': //TODO: we didn't add filters for this - they are just numeric but it's weird for the user, maybe we should add views for this that account for the difference
495
- case 'integer':
496
- tmpFieldFilterSchema.AvailableClauses.push({ FilterKey: tmpSchemaField, ClauseKey: `${tmpSchemaField}_Match_Exact`, DisplayName: `${tmpFieldHumanName} Exact Match`, Type: 'NumericMatch', FilterByColumn: tmpSchemaField, ExactMatch: true , Ordinal: tmpFieldFilterSchema.AvailableClauses.length + 1 });
497
- tmpFieldFilterSchema.AvailableClauses.push({ FilterKey: tmpSchemaField, ClauseKey: `${tmpSchemaField}_Match_Fuzzy`, DisplayName: `${tmpFieldHumanName} Partial Match`, Type: 'NumericMatch', FilterByColumn: tmpSchemaField, ExactMatch: false , Ordinal: tmpFieldFilterSchema.AvailableClauses.length + 1 });
498
- tmpFieldFilterSchema.AvailableClauses.push({ FilterKey: tmpSchemaField, ClauseKey: `${tmpSchemaField}_Range`, DisplayName: `${tmpFieldHumanName} in Range`, Type: 'NumericRange', FilterByColumn: tmpSchemaField , Ordinal: tmpFieldFilterSchema.AvailableClauses.length + 1 });
499
- break;
500
- default:
501
- this.pict.log.warn(`Unsupported field type ${tmpColumn.type} for field ${tmpSchemaField}`, { Schema: tmpColumn });
536
+ for (const tmpFilterClause of tmpFieldFilterClauses)
537
+ {
538
+ //TODO: allow customization of filter order
539
+ tmpFilterClause.Ordinal = tmpFieldFilterSchema.AvailableClauses.length + 1;
540
+ tmpFieldFilterSchema.AvailableClauses.push(tmpFilterClause);
541
+ }
502
542
  }
503
543
  }
504
544
  if (typeof this.pict.providers.FilterManager.filters === 'object')
@@ -522,9 +562,14 @@ class MeadowEndpointsRecordSetProvider extends libRecordSetProviderBase
522
562
  {
523
563
  tmpFieldFilterSchema.RecordSet = this.options.RecordSet;
524
564
  }
565
+ const tmpFieldHumanName = this._getHumanReadableFieldName(tmpFilterKey);
566
+ if (tmpFilterClause.DisplayName)
567
+ {
568
+ tmpFieldFilterSchema.DisplayName = tmpFilterClause.DisplayName;
569
+ }
525
570
  if (!tmpFieldFilterSchema.DisplayName)
526
571
  {
527
- tmpFieldFilterSchema.DisplayName = tmpFilterClause.DisplayName || this._getHumanReadableFieldName(tmpFilterKey);
572
+ tmpFieldFilterSchema.DisplayName = tmpFieldHumanName;
528
573
  }
529
574
  if (!tmpFieldFilterSchema.Description)
530
575
  {
@@ -542,7 +587,6 @@ class MeadowEndpointsRecordSetProvider extends libRecordSetProviderBase
542
587
  {
543
588
  tmpFieldFilterSchema.AvailableClauses = [];
544
589
  }
545
- const tmpFieldHumanName = this._getHumanReadableFieldName(tmpFilterKey);
546
590
  tmpFieldFilterSchema.AvailableClauses.push(tmpFilterClause);
547
591
  if (!tmpFilterClause.FilterKey)
548
592
  {
@@ -628,7 +672,7 @@ class MeadowEndpointsRecordSetProvider extends libRecordSetProviderBase
628
672
  {
629
673
  if (error)
630
674
  {
631
- this.fable.log.error('Error fetching schema', error);
675
+ this.fable.log.error(`Error fetching schema: ${error?.message || error}`, { Stack: error?.stack });
632
676
  this._Schema = null;
633
677
  return fCallback(error);
634
678
  }
@@ -168,11 +168,24 @@ class RecordSetMetacontroller extends libFableServiceProviderBase
168
168
  {
169
169
  providerConfiguration.URLPrefix = '/1.0/';
170
170
  }
171
+ if (`RecordSetIgnoreFilterFields` in pRecordSetConfiguration)
172
+ {
173
+ providerConfiguration.IgnoreFilterFields = pRecordSetConfiguration.RecordSetIgnoreFilterFields;
174
+ }
175
+ else
176
+ {
177
+ providerConfiguration.IgnoreFilterFields = [ 'Deleted', 'DeletingIDUser', 'DeleteDate' ];
178
+ }
179
+ if (`RecordSetFieldFilterClauses` in pRecordSetConfiguration)
180
+ {
181
+ providerConfiguration.FieldFilterClauses = pRecordSetConfiguration.RecordSetFieldFilterClauses;
182
+ }
183
+
171
184
  tmpProvider = this.recordSetProviders[pRecordSetConfiguration.RecordSet] = this.fable.addProvider(providerConfiguration.Hash, providerConfiguration, ProviderMeadowEndpoints);
172
185
  break;
173
186
  default:
174
187
  case 'Custom':
175
- // Create a custom provider
188
+ // Create a custom provider
176
189
  if (`ProviderHash` in providerConfiguration)
177
190
  {
178
191
  if (!(providerConfiguration.ProviderHash in this.fable.servicesMap))
@@ -31,16 +31,14 @@ const _DEFAULT_CONFIGURATION_SUBSET_Filter =
31
31
  Hash: 'PRSP-SUBSET-Filters-Template',
32
32
  Template: /*html*/`
33
33
  <!-- DefaultPackage pict view template: [PRSP-SUBSET-Filters-Template] -->
34
- <section id="PRSP_Filters_Container">
35
- <form id="PRSP_Filter_Form" onsubmit="_Pict.views['PRSP-Filters'].handleSearch(event, '{~D:Record.RecordSet~}', '{~D:Record.ViewContext~}'); return false;">
36
- {~T:PRSP-SUBSET-Filters-Template-Input-Fieldset~}
37
- <div id="PRSP_Filter_Instances">
38
- {~FIV:Record~}
39
- </div>
40
- {~T:PRSP-SUBSET-Filters-Template-Button-Fieldset~}
41
- {~T:PRSP-SUBSET-Filters-Template-AddFilter-Fieldset~}
42
- </form>
43
- </section>
34
+ <form id="PRSP_Filter_Form" onsubmit="_Pict.views['PRSP-Filters'].handleSearch(event, '{~D:Record.RecordSet~}', '{~D:Record.ViewContext~}'); return false;">
35
+ {~T:PRSP-SUBSET-Filters-Template-Input-Fieldset~}
36
+ <div id="PRSP_Filter_Instances">
37
+ {~FIV:Record~}
38
+ </div>
39
+ {~T:PRSP-SUBSET-Filters-Template-Button-Fieldset~}
40
+ {~T:PRSP-SUBSET-Filters-Template-AddFilter-Fieldset~}
41
+ </form>
44
42
  <!-- DefaultPackage end view template: [PRSP-SUBSET-Filters-Template] -->
45
43
  `
46
44
  },
@@ -49,8 +47,8 @@ const _DEFAULT_CONFIGURATION_SUBSET_Filter =
49
47
  Template: /*html*/`
50
48
  <!-- DefaultPackage pict view template: [PRSP-SUBSET-Filters-Template-Input-Fieldset] -->
51
49
  <fieldset>
52
- <label for="filter">Filter:</label>
53
- <input type="text" name="filter">
50
+ <label for="search_filter">Filter:</label>
51
+ <input id="search_filter" type="text" name="filter">
54
52
  </fieldset>
55
53
  <!-- DefaultPackage end view template: [PRSP-SUBSET-Filters-Template-Input-Fieldset] -->
56
54
  `
@@ -371,6 +369,15 @@ class ViewRecordSetSUBSETFilters extends libPictView
371
369
  this.render(undefined, undefined, { RecordSet: pRecordSet, ViewContext: pViewContext });
372
370
  }
373
371
 
372
+ removeFilter(pEvent, pRecordSet, pViewContext, pSpecificFilterKey)
373
+ {
374
+ pEvent?.preventDefault();
375
+ this.pict.log.info(`Removing filter: ${pSpecificFilterKey} from record set: ${pRecordSet} in view context: ${pViewContext}`);
376
+ this.pict.providers[`RSP-Provider-${pRecordSet}`].removeFilterClause(pSpecificFilterKey);
377
+ //FIXME: we need the record from the original render here but no longer have it...
378
+ this.render(undefined, undefined, { RecordSet: pRecordSet, ViewContext: pViewContext });
379
+ }
380
+
374
381
  getFilterSchema(pRecordSet)
375
382
  {
376
383
  const tmpRecordsetProvider = this.pict.providers['RSP-Provider-' + pRecordSet];
@@ -49,7 +49,7 @@ const _DEFAULT_CONFIGURATION_Dashboard_HeaderList =
49
49
  Manifests: {},
50
50
  };
51
51
 
52
- class viewRecordSetListHeaderList extends libPictView
52
+ class viewRecordSetDashboardHeaderList extends libPictView
53
53
  {
54
54
  constructor(pFable, pOptions, pServiceHash)
55
55
  {
@@ -58,7 +58,7 @@ class viewRecordSetListHeaderList extends libPictView
58
58
  }
59
59
  }
60
60
 
61
- module.exports = viewRecordSetListHeaderList;
61
+ module.exports = viewRecordSetDashboardHeaderList;
62
62
 
63
63
  module.exports.default_configuration = _DEFAULT_CONFIGURATION_Dashboard_HeaderList;
64
64
 
@@ -53,7 +53,7 @@ const _DEFAULT_CONFIGURATION_List_PaginationBottom = (
53
53
  Manifests: {}
54
54
  });
55
55
 
56
- class viewRecordSetListPaginationBottom extends libPictView
56
+ class viewRecordSetDashboardPaginationBottom extends libPictView
57
57
  {
58
58
  constructor(pFable, pOptions, pServiceHash)
59
59
  {
@@ -62,7 +62,7 @@ class viewRecordSetListPaginationBottom extends libPictView
62
62
  }
63
63
  }
64
64
 
65
- module.exports = viewRecordSetListPaginationBottom;
65
+ module.exports = viewRecordSetDashboardPaginationBottom;
66
66
 
67
67
  module.exports.default_configuration = _DEFAULT_CONFIGURATION_List_PaginationBottom;
68
68
 
@@ -113,7 +113,7 @@ const _DEFAULT_CONFIGURATION_List_PaginationTop = (
113
113
  Manifests: {}
114
114
  });
115
115
 
116
- class viewRecordSetListPaginationTop extends libPictView
116
+ class viewRecordSetDashboardPaginationTop extends libPictView
117
117
  {
118
118
  constructor(pFable, pOptions, pServiceHash)
119
119
  {
@@ -122,7 +122,7 @@ class viewRecordSetListPaginationTop extends libPictView
122
122
  }
123
123
  }
124
124
 
125
- module.exports = viewRecordSetListPaginationTop;
125
+ module.exports = viewRecordSetDashboardPaginationTop;
126
126
 
127
127
  module.exports.default_configuration = _DEFAULT_CONFIGURATION_List_PaginationTop;
128
128
 
@@ -1,7 +1,7 @@
1
1
  const libPictView = require('pict-view');
2
2
 
3
3
  /** @type {Record<string, any>} */
4
- const _DEFAULT_CONFIGURATION_List_RecordList =
4
+ const _DEFAULT_CONFIGURATION_Dashboard_RecordList =
5
5
  {
6
6
  ViewIdentifier: 'PRSP-Dashboard-RecordList',
7
7
 
@@ -65,16 +65,16 @@ const _DEFAULT_CONFIGURATION_List_RecordList =
65
65
  Manifests: {}
66
66
  };
67
67
 
68
- class viewRecordSetListRecordList extends libPictView
68
+ class viewRecordSetDashboardRecordList extends libPictView
69
69
  {
70
70
  constructor(pFable, pOptions, pServiceHash)
71
71
  {
72
- let tmpOptions = Object.assign({}, _DEFAULT_CONFIGURATION_List_RecordList, pOptions);
72
+ let tmpOptions = Object.assign({}, _DEFAULT_CONFIGURATION_Dashboard_RecordList, pOptions);
73
73
  super(pFable, tmpOptions, pServiceHash);
74
74
  }
75
75
  }
76
76
 
77
- module.exports = viewRecordSetListRecordList;
77
+ module.exports = viewRecordSetDashboardRecordList;
78
78
 
79
- module.exports.default_configuration = _DEFAULT_CONFIGURATION_List_RecordList;
79
+ module.exports.default_configuration = _DEFAULT_CONFIGURATION_Dashboard_RecordList;
80
80
 
@@ -106,7 +106,7 @@ const _DEFAULT_CONFIGURATION_List_RecordListEntry = (
106
106
  Manifests: {}
107
107
  });
108
108
 
109
- class viewRecordSetListRecordListEntry extends libPictView
109
+ class viewRecordSetDashboardRecordListEntry extends libPictView
110
110
  {
111
111
  constructor(pFable, pOptions, pServiceHash)
112
112
  {
@@ -115,7 +115,7 @@ class viewRecordSetListRecordListEntry extends libPictView
115
115
  }
116
116
  }
117
117
 
118
- module.exports = viewRecordSetListRecordListEntry;
118
+ module.exports = viewRecordSetDashboardRecordListEntry;
119
119
 
120
120
  module.exports.default_configuration = _DEFAULT_CONFIGURATION_List_RecordListEntry;
121
121
 
@@ -96,7 +96,7 @@ const _DEFAULT_CONFIGURATION_List_RecordListHeader = (
96
96
  Manifests: {}
97
97
  });
98
98
 
99
- class viewRecordSetListRecordListHeader extends libPictView
99
+ class viewRecordSetDashboardRecordListHeader extends libPictView
100
100
  {
101
101
  constructor(pFable, pOptions, pServiceHash)
102
102
  {
@@ -105,7 +105,7 @@ class viewRecordSetListRecordListHeader extends libPictView
105
105
  }
106
106
  }
107
107
 
108
- module.exports = viewRecordSetListRecordListHeader;
108
+ module.exports = viewRecordSetDashboardRecordListHeader;
109
109
 
110
110
  module.exports.default_configuration = _DEFAULT_CONFIGURATION_List_RecordListHeader;
111
111
 
@@ -53,7 +53,7 @@ const _DEFAULT_CONFIGURATION_List_Title =
53
53
  Manifests: {},
54
54
  };
55
55
 
56
- class viewRecordSetListTitle extends libPictView
56
+ class viewRecordSetDashboardTitle extends libPictView
57
57
  {
58
58
  constructor(pFable, pOptions, pServiceHash)
59
59
  {
@@ -62,6 +62,6 @@ class viewRecordSetListTitle extends libPictView
62
62
  }
63
63
  }
64
64
 
65
- module.exports = viewRecordSetListTitle;
65
+ module.exports = viewRecordSetDashboardTitle;
66
66
 
67
67
  module.exports.default_configuration = _DEFAULT_CONFIGURATION_List_Title;
@@ -43,7 +43,9 @@ const _DEFAULT_CONFIGURATION__Dashboard = (
43
43
  <section id="PRSP_List_Container">
44
44
  {~V:PRSP-Dashboard-Title~}
45
45
  {~V:PRSP-Dashboard-HeaderDashboard~}
46
- {~FV:PRSP-Filters:Dashboard~}
46
+ <section id="PRSP_Filters_Container">
47
+ {~FV:PRSP-Filters:Dashboard~}
48
+ </section>
47
49
  {~V:PRSP-Dashboard-PaginationTop~}
48
50
  {~V:PRSP-Dashboard-RecordList~}
49
51
  {~V:PRSP-Dashboard-PaginationBottom~}
@@ -20,7 +20,7 @@ class ViewRecordSetSUBSETFilterBaseRange extends ViewRecordSetSUBSETFilterBase
20
20
 
21
21
  pRecord.StartClauseDescriptor =
22
22
  {
23
- Hash: this.fable.DataFormat.sanitizeObjectKey(this.constructor.name),
23
+ Hash: this.fable.DataFormat.sanitizeObjectKey(`${pRecord.StartClauseAddress}_${this.constructor.name}`),
24
24
  Address: pRecord.StartClauseAddress,
25
25
  //TODO: figure out a nice pattern for extracting a name for the field from the filter - and allow the filter author to provide the label here
26
26
  Name: pRecord.MinimumLabel || `Minimum ${pRecord.ExternalFilterByColumn || pRecord.ExternalFilterByColumns?.[0] || pRecord.FilterByColumn || pRecord.FilterByColumns?.[0] || 'Value'}`,
@@ -29,7 +29,7 @@ class ViewRecordSetSUBSETFilterBaseRange extends ViewRecordSetSUBSETFilterBase
29
29
 
30
30
  pRecord.EndClauseDescriptor =
31
31
  {
32
- Hash: this.fable.DataFormat.sanitizeObjectKey(this.constructor.name),
32
+ Hash: this.fable.DataFormat.sanitizeObjectKey(`${pRecord.EndClauseAddress}_${this.constructor.name}`),
33
33
  Address: pRecord.EndClauseAddress,
34
34
  Name: pRecord.MaximumLabel || `Maximum ${pRecord.ExternalFilterByColumn || pRecord.ExternalFilterByColumns?.[0] || pRecord.FilterByColumn || pRecord.FilterByColumns?.[0] || 'Value'}`,
35
35
  DataType: 'String',
@@ -33,7 +33,7 @@ const _DEFAULT_CONFIGURATION_SUBSET_Filter =
33
33
  Hash: 'PRSP-Filter-Base-Form',
34
34
  Template: /*html*/`
35
35
  <!-- DefaultPackage pict view template: [PRSP-Filter-Base-Form] -->
36
- {~JD:Record~}
36
+ {~DJ:Record~}
37
37
  <!-- DefaultPackage end view template: [PRSP-Filter-Base-Form] -->
38
38
  `
39
39
  },
@@ -42,6 +42,11 @@ const _DEFAULT_CONFIGURATION_SUBSET_Filter =
42
42
  Template: /*html*/`
43
43
  <!-- DefaultPackage pict view template: [PRSP-Filter-Base-Template] -->
44
44
  <div>
45
+ <button type="button"
46
+ onclick="_Pict.views['PRSP-Filters'].removeFilter(event, '{~D:Record.RecordSet~}', '{~D:Record.ViewContext~}', '{~D:Record.Hash~}');"
47
+ >
48
+ -
49
+ </button>
45
50
  {~TBR:Context[0].getFilterFormTemplate()~}
46
51
  </div>
47
52
  <!-- DefaultPackage end view template: [PRSP-Filter-Base-Template] -->
@@ -81,7 +86,7 @@ class ViewRecordSetSUBSETFilterBase extends libPictView
81
86
  pRecord.ClauseDescriptor =
82
87
  {
83
88
  Address: pRecord.ClauseValueAddress,
84
- Hash: this.fable.DataFormat.sanitizeObjectKey(this.constructor.name),
89
+ Hash: this.fable.DataFormat.sanitizeObjectKey(`${pRecord.ClauseValueAddress}_${this.constructor.name}`),
85
90
  //TODO: figure out a nice pattern for extracting a name for the field from the filter - and allow the filter author to provide the label here
86
91
  Name: pRecord.Label || pRecord.ExternalFilterByColumn || pRecord.ExternalFilterByColumns?.[0] || pRecord.FilterByColumn || pRecord.FilterByColumns?.[0] || 'Value',
87
92
  DataType: 'String',
@@ -43,7 +43,9 @@ const _DEFAULT_CONFIGURATION__List = (
43
43
  <section id="PRSP_List_Container">
44
44
  {~V:PRSP-List-Title~}
45
45
  {~V:PRSP-List-HeaderList~}
46
- {~FV:PRSP-Filters:List~}
46
+ <section id="PRSP_Filters_Container">
47
+ {~FV:PRSP-Filters:List~}
48
+ </section>
47
49
  {~V:PRSP-List-PaginationTop~}
48
50
  {~V:PRSP-List-RecordList~}
49
51
  {~V:PRSP-List-PaginationBottom~}
@@ -1 +1 @@
1
- {"version":3,"file":"Pict-Application-RecordSet.d.ts","sourceRoot":"","sources":["../../source/application/Pict-Application-RecordSet.js"],"names":[],"mappings":";AAOA;;;;;;;GAOG;AACH;IAEC,2DAeC;CAoBD;;;;;qCAIU,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC"}
1
+ {"version":3,"file":"Pict-Application-RecordSet.d.ts","sourceRoot":"","sources":["../../source/application/Pict-Application-RecordSet.js"],"names":[],"mappings":";AAOA;;;;;;;GAOG;AACH;IAEC,2DAeC;CAwBD;;;;;qCAIU,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC"}
@@ -70,6 +70,10 @@ declare class MeadowEndpointsRecordSetProvider extends libRecordSetProviderBase
70
70
  get entityProvider(): import("pict/types/source/Pict-Meadow-EntityProvider.js");
71
71
  /** @type {import('pict/types/source/Pict-Meadow-EntityProvider.js')} */
72
72
  _EntityProvider: import("pict/types/source/Pict-Meadow-EntityProvider.js");
73
+ /**
74
+ * @return {Array<string>} - The fields to ignore for filter availability.
75
+ */
76
+ get ignoreFilterFields(): Array<string>;
73
77
  /**
74
78
  * Get a record by its ID or GUID.
75
79
  *
@@ -119,6 +123,11 @@ declare class MeadowEndpointsRecordSetProvider extends libRecordSetProviderBase
119
123
  * @param {Record<string, any>} pRecord - The record to clone.
120
124
  */
121
125
  cloneRecord(pRecord: Record<string, any>): Promise<any>;
126
+ /**
127
+ * @param {string} pSchemaField - The schema field name.
128
+ * @param {Record<string, any>} pColumn - The full column definition from the schema.
129
+ */
130
+ getFieldFilterClauses(pSchemaField: string, pColumn: Record<string, any>): any;
122
131
  /**
123
132
  * @param {(error?: Error) => void} fCallback - The callback function.
124
133
  */
@@ -1 +1 @@
1
- {"version":3,"file":"RecordSet-RecordProvider-MeadowEndpoints.d.ts","sourceRoot":"","sources":["../../source/providers/RecordSet-RecordProvider-MeadowEndpoints.js"],"names":[],"mappings":";AAGA;;;GAGG;AAEH;;;GAGG;AACH;IAcE;;;;;;;;;aASS;IACT,MAVW,OAAO,MAAM,CAAC,GAAG;QACpB,GAAG,EAAE,GAAG,CAAC;QACT,QAAQ,EACf;YACI,oBAAoB,EAAE,YAAY,CAAC;;;;;;aAAsC,CAAC,CAAC;YAC/E,CAAK,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;SACnB,CAAC;QACE,6CAA6C,EAAE,CAAC,IAAI,QAAQ,KAAK,GAAG,CAAC;QACrE,oBAAoB,EAAE,YAAY,CAAC;;;;;;SAAsC,CAAC,CAAA;KAC7E,CACI;IACT;aAVa,GAAG;kBAEf;YACI,oBAAoB,EAAE,YAAY,CAAC;;;;;;aAAsC,CAAC,CAAC;YAC/E,CAAK,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;SACnB;uDACkD,CAAC,IAAI,QAAQ,KAAK,GAAG;8BAC9C,YAAY,CAAC;;;;;;SAAsC,CAAC;MAG5D;IAMtB,kCAAkC;IAClC,SADW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CACZ;IAClB,kDAAkD;IAClD,cADW,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CACvB;IACvB,kDAAkD;IAClD,iBADW,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CACpB;IAG3B,0EAA0E;IAC1E,sBADa,OAAO,iDAAiD,CAAC,CAerE;IAVC,wEAAwE;IAExE,iBAFW,OAAO,iDAAiD,CAAC,CAE4B;IAUlG;;;;OAIG;IACH,qBAFW,MAAM,GAAC,MAAM,gBA4BvB;IAED;;;;OAIG;IACH,uBAFW,MAAM,GAAC,MAAM,gBA2BvB;IAED,iGAiBC;IA+CD;;;;OAIG;IACH,4BAFW,eAAe,gBA0BzB;IAED;;;;OAIG;IACH,sBAFW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,gBAsB7B;IAED;;;;OAIG;IACH,sBAFW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,gBAsB7B;IAED;;;;OAIG;IACH,sBAFW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,gBAsB7B;IAED;;;;OAIG;IACH,sBAFW,MAAM,GAAC,MAAM,gBAKvB;IAaD;;;;OAIG;IACH,qBAFW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,gBAK7B;IAcD;;OAEG;IACH,6BAFW,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,QAoNjC;IAED;;;OAGG;IACH,oCAHW,MAAM,GACL,MAAM,CAKjB;IAED;;;OAGG;IACH,yCAHW,MAAM,GACL,MAAM,CAiCjB;IAED;;OAEG;IACH,kCAFW,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,QA6BjC;IAED,gDAcC;CAsCD;;;;;uBArrBY,OAAO,oCAAoC,EAAE,eAAe;uBAC5D,OAAO,oCAAoC,EAAE,eAAe"}
1
+ {"version":3,"file":"RecordSet-RecordProvider-MeadowEndpoints.d.ts","sourceRoot":"","sources":["../../source/providers/RecordSet-RecordProvider-MeadowEndpoints.js"],"names":[],"mappings":";AAGA;;;GAGG;AAEH;;;GAGG;AACH;IAcE;;;;;;;;;aASS;IACT,MAVW,OAAO,MAAM,CAAC,GAAG;QACpB,GAAG,EAAE,GAAG,CAAC;QACT,QAAQ,EACf;YACI,oBAAoB,EAAE,YAAY,CAAC;;;;;;aAAsC,CAAC,CAAC;YAC/E,CAAK,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;SACnB,CAAC;QACE,6CAA6C,EAAE,CAAC,IAAI,QAAQ,KAAK,GAAG,CAAC;QACrE,oBAAoB,EAAE,YAAY,CAAC;;;;;;SAAsC,CAAC,CAAA;KAC7E,CACI;IACT;aAVa,GAAG;kBAEf;YACI,oBAAoB,EAAE,YAAY,CAAC;;;;;;aAAsC,CAAC,CAAC;YAC/E,CAAK,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;SACnB;uDACkD,CAAC,IAAI,QAAQ,KAAK,GAAG;8BAC9C,YAAY,CAAC;;;;;;SAAsC,CAAC;MAG5D;IAMtB,kCAAkC;IAClC,SADW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CACZ;IAClB,kDAAkD;IAClD,cADW,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CACvB;IACvB,kDAAkD;IAClD,iBADW,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CACpB;IAG3B,0EAA0E;IAC1E,sBADa,OAAO,iDAAiD,CAAC,CAerE;IAVC,wEAAwE;IAExE,iBAFW,OAAO,iDAAiD,CAAC,CAE4B;IAUlG;;OAEG;IACH,0BAFY,KAAK,CAAC,MAAM,CAAC,CASxB;IAED;;;;OAIG;IACH,qBAFW,MAAM,GAAC,MAAM,gBA4BvB;IAED;;;;OAIG;IACH,uBAFW,MAAM,GAAC,MAAM,gBA2BvB;IAED,iGAiBC;IA+CD;;;;OAIG;IACH,4BAFW,eAAe,gBA0BzB;IAED;;;;OAIG;IACH,sBAFW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,gBAsB7B;IAED;;;;OAIG;IACH,sBAFW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,gBAsB7B;IAED;;;;OAIG;IACH,sBAFW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,gBAsB7B;IAED;;;;OAIG;IACH,sBAFW,MAAM,GAAC,MAAM,gBAKvB;IAaD;;;;OAIG;IACH,qBAFW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,gBAK7B;IAcD;;;OAGG;IACH,oCAHW,MAAM,WACN,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,OAiC7B;IAED;;OAEG;IACH,6BAFW,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,QA+MjC;IAED;;;OAGG;IACH,oCAHW,MAAM,GACL,MAAM,CAKjB;IAED;;;OAGG;IACH,yCAHW,MAAM,GACL,MAAM,CAiCjB;IAED;;OAEG;IACH,kCAFW,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,QA6BjC;IAED,gDAcC;CAsCD;;;;;uBAjuBY,OAAO,oCAAoC,EAAE,eAAe;uBAC5D,OAAO,oCAAoC,EAAE,eAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"RecordsSet-MetaController.d.ts","sourceRoot":"","sources":["../../source/services/RecordsSet-MetaController.js"],"names":[],"mappings":";AAwBA;IAEC,2DA0CC;IArCA,0JAA0J;IAC1J,OADW,OAAO,MAAM,CAAC,GAAG;QAAE,iCAAiC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,KAAK,GAAG,CAAC;QAAC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAA;KAAE,CAC5I;IACV;2CAFiE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,KAAK,GAAG;qBAAe,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG;MAE9H;IACtB,kBAAkB;IAClB,KADW,GAAG,CACN;IACR,kBAAkB;IAClB,SADW,GAAG,CACF;IACZ,qBAAqB;IACrB,MADW,MAAM,CACR;IAET;;;;;MAKC;IAED,sDAAsD;IACtD,oBADW,MAAM,CAAC,MAAM,EAAE,OAAO,eAAe,CAAC,CAAC,CACtB;IAC5B,kDAAkD;IAClD,iCADW,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CACL;IAEzC,kDAAkD;IAClD,yBADW,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CACb;IAEjC,+DAA+D;IAC/D,kBADW,KAAK,CAAC,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CACjC;IAE1B,kDAAkD;IAClD,qBADW,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CACjB;IAC7B,iDAAiD;IACjD,WADW,MAAM,CAAC,MAAM,EAAE,OAAO,UAAU,CAAC,CAAC,CACG;IAEhD,yBAA4B;IAiC7B;;OAEG;IACH,4CAFY,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAK9B;IAED,kEA0FC;IAED,4EAmBC;IAED,kFAyCC;IAED,yDAaC;IAED,qCAMC;IAED,iDAUC;IAED,iFAGC;IAED,0BA2EC;IAED,6CAGC;IAED;;OAEG;IACH,sCAFW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAwC7B;CAED;;;;AA1ZD,kCAAkC;AAClC,sCADW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAI3B"}
1
+ {"version":3,"file":"RecordsSet-MetaController.d.ts","sourceRoot":"","sources":["../../source/services/RecordsSet-MetaController.js"],"names":[],"mappings":";AAwBA;IAEC,2DA0CC;IArCA,0JAA0J;IAC1J,OADW,OAAO,MAAM,CAAC,GAAG;QAAE,iCAAiC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,KAAK,GAAG,CAAC;QAAC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAA;KAAE,CAC5I;IACV;2CAFiE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,KAAK,GAAG;qBAAe,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG;MAE9H;IACtB,kBAAkB;IAClB,KADW,GAAG,CACN;IACR,kBAAkB;IAClB,SADW,GAAG,CACF;IACZ,qBAAqB;IACrB,MADW,MAAM,CACR;IAET;;;;;MAKC;IAED,sDAAsD;IACtD,oBADW,MAAM,CAAC,MAAM,EAAE,OAAO,eAAe,CAAC,CAAC,CACtB;IAC5B,kDAAkD;IAClD,iCADW,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CACL;IAEzC,kDAAkD;IAClD,yBADW,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CACb;IAEjC,+DAA+D;IAC/D,kBADW,KAAK,CAAC,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CACjC;IAE1B,kDAAkD;IAClD,qBADW,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CACjB;IAC7B,iDAAiD;IACjD,WADW,MAAM,CAAC,MAAM,EAAE,OAAO,UAAU,CAAC,CAAC,CACG;IAEhD,yBAA4B;IAiC7B;;OAEG;IACH,4CAFY,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAK9B;IAED,kEAuGC;IAED,4EAmBC;IAED,kFAyCC;IAED,yDAaC;IAED,qCAMC;IAED,iDAUC;IAED,iFAGC;IAED,0BA2EC;IAED,6CAGC;IAED;;OAEG;IACH,sCAFW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAwC7B;CAED;;;;AAvaD,kCAAkC;AAClC,sCADW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAI3B"}
@@ -50,6 +50,7 @@ declare class ViewRecordSetSUBSETFilters extends libPictView {
50
50
  */
51
51
  selectFilterToAdd(pEvent: Event, pRecordSet: string, pViewContext: string): void;
52
52
  addFilter(pEvent: any, pRecordSet: any, pViewContext: any, pFilterKey: any, pClauseKey: any): void;
53
+ removeFilter(pEvent: any, pRecordSet: any, pViewContext: any, pSpecificFilterKey: any): void;
53
54
  getFilterSchema(pRecordSet: any): any[];
54
55
  serializeFilterExperience(pExperience: any): Promise<string>;
55
56
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"RecordSet-Filters.d.ts","sourceRoot":"","sources":["../../source/views/RecordSet-Filters.js"],"names":[],"mappings":";AAwJA;IAEC,2DAqEC;IAjEA,kHAAkH;IAClH,MADW,GAAe,GAAG,OAAO,MAAM,CAAC,GAAG;QAAE,oBAAoB,EAAE;;;;;;SAAsC,CAAA;KAAE,CACrG;IAwDT,cAA+E;IAG/E,wCAA0E;IAU3E;;;;OAIG;IACH,qBAFa,GAAG,CAaf;IAED;;;;OAIG;IACH,mBAFa,GAAG,CAaf;IAED;;;;OAIG;IACH,qBAJW,KAAK,cACL,MAAM,gBACN,MAAM,QAShB;IAED;;;;OAIG;IACH,0BAJW,MAAM,gBACN,MAAM,kBACN,MAAM,QA+ChB;IAED;;;;OAIG;IACH,oBAJW,KAAK,cACL,MAAM,gBACN,MAAM,QAgBhB;IAED;;;;OAIG;IACH,0BAJW,KAAK,cACL,MAAM,gBACN,MAAM,QAQhB;IAED,mGAOC;IAED,wCAIC;IAwCD,6DAOC;IAED;;;;OAIG;IACH,yCAJW,MAAM,GAEL,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAUvC;IAED;;;;;OAKG;IACH,iBALW,MAAM,aACN,iBAAiB,GAEhB,OAAO,CAAC,WAAW,CAAC,CAU/B;IAED;;;OAGG;IACH,sBAHW,UAAU,aACV,iBAAiB,mBAY3B;IAED;;;;OAIG;IACH,oBAJW,WAAW,GAEV,MAAM,CA2BjB;IAED;;;;OAIG;IACH,eAJW,MAAM,GAEL,WAAW,CAsCtB;CACD;;;;;AAjiBD,kCAAkC;AAClC,oDADW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAiJ5B"}
1
+ {"version":3,"file":"RecordSet-Filters.d.ts","sourceRoot":"","sources":["../../source/views/RecordSet-Filters.js"],"names":[],"mappings":";AAsJA;IAEC,2DAqEC;IAjEA,kHAAkH;IAClH,MADW,GAAe,GAAG,OAAO,MAAM,CAAC,GAAG;QAAE,oBAAoB,EAAE;;;;;;SAAsC,CAAA;KAAE,CACrG;IAwDT,cAA+E;IAG/E,wCAA0E;IAU3E;;;;OAIG;IACH,qBAFa,GAAG,CAaf;IAED;;;;OAIG;IACH,mBAFa,GAAG,CAaf;IAED;;;;OAIG;IACH,qBAJW,KAAK,cACL,MAAM,gBACN,MAAM,QAShB;IAED;;;;OAIG;IACH,0BAJW,MAAM,gBACN,MAAM,kBACN,MAAM,QA+ChB;IAED;;;;OAIG;IACH,oBAJW,KAAK,cACL,MAAM,gBACN,MAAM,QAgBhB;IAED;;;;OAIG;IACH,0BAJW,KAAK,cACL,MAAM,gBACN,MAAM,QAQhB;IAED,mGAOC;IAED,6FAOC;IAED,wCAIC;IAwCD,6DAOC;IAED;;;;OAIG;IACH,yCAJW,MAAM,GAEL,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAUvC;IAED;;;;;OAKG;IACH,iBALW,MAAM,aACN,iBAAiB,GAEhB,OAAO,CAAC,WAAW,CAAC,CAU/B;IAED;;;OAGG;IACH,sBAHW,UAAU,aACV,iBAAiB,mBAY3B;IAED;;;;OAIG;IACH,oBAJW,WAAW,GAEV,MAAM,CA2BjB;IAED;;;;OAIG;IACH,eAJW,MAAM,GAEL,WAAW,CAsCtB;CACD;;;;;AAxiBD,kCAAkC;AAClC,oDADW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA+I5B"}
@@ -1,8 +1,8 @@
1
- export = viewRecordSetListHeaderList;
2
- declare class viewRecordSetListHeaderList extends libPictView {
1
+ export = viewRecordSetDashboardHeaderList;
2
+ declare class viewRecordSetDashboardHeaderList extends libPictView {
3
3
  constructor(pFable: any, pOptions: any, pServiceHash: any);
4
4
  }
5
- declare namespace viewRecordSetListHeaderList {
5
+ declare namespace viewRecordSetDashboardHeaderList {
6
6
  export { _DEFAULT_CONFIGURATION_Dashboard_HeaderList as default_configuration };
7
7
  }
8
8
  import libPictView = require("pict-view");
@@ -1,8 +1,8 @@
1
- export = viewRecordSetListPaginationBottom;
2
- declare class viewRecordSetListPaginationBottom extends libPictView {
1
+ export = viewRecordSetDashboardPaginationBottom;
2
+ declare class viewRecordSetDashboardPaginationBottom extends libPictView {
3
3
  constructor(pFable: any, pOptions: any, pServiceHash: any);
4
4
  }
5
- declare namespace viewRecordSetListPaginationBottom {
5
+ declare namespace viewRecordSetDashboardPaginationBottom {
6
6
  export { _DEFAULT_CONFIGURATION_List_PaginationBottom as default_configuration };
7
7
  }
8
8
  import libPictView = require("pict-view");
@@ -1,8 +1,8 @@
1
- export = viewRecordSetListPaginationTop;
2
- declare class viewRecordSetListPaginationTop extends libPictView {
1
+ export = viewRecordSetDashboardPaginationTop;
2
+ declare class viewRecordSetDashboardPaginationTop extends libPictView {
3
3
  constructor(pFable: any, pOptions: any, pServiceHash: any);
4
4
  }
5
- declare namespace viewRecordSetListPaginationTop {
5
+ declare namespace viewRecordSetDashboardPaginationTop {
6
6
  export { _DEFAULT_CONFIGURATION_List_PaginationTop as default_configuration };
7
7
  }
8
8
  import libPictView = require("pict-view");
@@ -1,11 +1,11 @@
1
- export = viewRecordSetListRecordList;
2
- declare class viewRecordSetListRecordList extends libPictView {
1
+ export = viewRecordSetDashboardRecordList;
2
+ declare class viewRecordSetDashboardRecordList extends libPictView {
3
3
  constructor(pFable: any, pOptions: any, pServiceHash: any);
4
4
  }
5
- declare namespace viewRecordSetListRecordList {
6
- export { _DEFAULT_CONFIGURATION_List_RecordList as default_configuration };
5
+ declare namespace viewRecordSetDashboardRecordList {
6
+ export { _DEFAULT_CONFIGURATION_Dashboard_RecordList as default_configuration };
7
7
  }
8
8
  import libPictView = require("pict-view");
9
9
  /** @type {Record<string, any>} */
10
- declare const _DEFAULT_CONFIGURATION_List_RecordList: Record<string, any>;
10
+ declare const _DEFAULT_CONFIGURATION_Dashboard_RecordList: Record<string, any>;
11
11
  //# sourceMappingURL=RecordSet-Dashboard-RecordList.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RecordSet-Dashboard-RecordList.d.ts","sourceRoot":"","sources":["../../../source/views/dashboard/RecordSet-Dashboard-RecordList.js"],"names":[],"mappings":";AAmEA;IAEC,2DAIC;CACD;;;;;AAxED,kCAAkC;AAClC,sDADW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA+D5B"}
1
+ {"version":3,"file":"RecordSet-Dashboard-RecordList.d.ts","sourceRoot":"","sources":["../../../source/views/dashboard/RecordSet-Dashboard-RecordList.js"],"names":[],"mappings":";AAmEA;IAEC,2DAIC;CACD;;;;;AAxED,kCAAkC;AAClC,2DADW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA+D5B"}
@@ -1,8 +1,8 @@
1
- export = viewRecordSetListRecordListEntry;
2
- declare class viewRecordSetListRecordListEntry extends libPictView {
1
+ export = viewRecordSetDashboardRecordListEntry;
2
+ declare class viewRecordSetDashboardRecordListEntry extends libPictView {
3
3
  constructor(pFable: any, pOptions: any, pServiceHash: any);
4
4
  }
5
- declare namespace viewRecordSetListRecordListEntry {
5
+ declare namespace viewRecordSetDashboardRecordListEntry {
6
6
  export { _DEFAULT_CONFIGURATION_List_RecordListEntry as default_configuration };
7
7
  }
8
8
  import libPictView = require("pict-view");
@@ -1,8 +1,8 @@
1
- export = viewRecordSetListRecordListHeader;
2
- declare class viewRecordSetListRecordListHeader extends libPictView {
1
+ export = viewRecordSetDashboardRecordListHeader;
2
+ declare class viewRecordSetDashboardRecordListHeader extends libPictView {
3
3
  constructor(pFable: any, pOptions: any, pServiceHash: any);
4
4
  }
5
- declare namespace viewRecordSetListRecordListHeader {
5
+ declare namespace viewRecordSetDashboardRecordListHeader {
6
6
  export { _DEFAULT_CONFIGURATION_List_RecordListHeader as default_configuration };
7
7
  }
8
8
  import libPictView = require("pict-view");
@@ -1,8 +1,8 @@
1
- export = viewRecordSetListTitle;
2
- declare class viewRecordSetListTitle extends libPictView {
1
+ export = viewRecordSetDashboardTitle;
2
+ declare class viewRecordSetDashboardTitle extends libPictView {
3
3
  constructor(pFable: any, pOptions: any, pServiceHash: any);
4
4
  }
5
- declare namespace viewRecordSetListTitle {
5
+ declare namespace viewRecordSetDashboardTitle {
6
6
  export { _DEFAULT_CONFIGURATION_List_Title as default_configuration };
7
7
  }
8
8
  import libPictView = require("pict-view");
@@ -1 +1 @@
1
- {"version":3,"file":"RecordSet-Dashboard.d.ts","sourceRoot":"","sources":["../../../source/views/dashboard/RecordSet-Dashboard.js"],"names":[],"mappings":";AA0EA;IAOE;;;;;;;;MAQC;IAGF,iEAuCC;IA2BD,8CAGC;IAED,sDAuCC;IAnCA,iCAUC;IA2BF;;;;;;;;;;OAUG;IACH,wCAVW,MAAM,2BACN,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,iBACnB,MAAM,iBACN,MAAM,+BACN,MAAM,WACN,MAAM,aACN,MAAM,GAEL,OAAO,CAAC,IAAI,CAAC,CA+QxB;IAED;;;;;;;;;OASG;IACH,yCATW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,iBACnB,MAAM,iBACN,MAAM,+BACN,MAAM,WACN,MAAM,aACN,MAAM,GAEL,OAAO,CAAC,IAAI,CAAC,CA4QxB;CAwBD;;;;;AAvwBD,kCAAkC;AAClC,iDADW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA6D1B"}
1
+ {"version":3,"file":"RecordSet-Dashboard.d.ts","sourceRoot":"","sources":["../../../source/views/dashboard/RecordSet-Dashboard.js"],"names":[],"mappings":";AA4EA;IAOE;;;;;;;;MAQC;IAGF,iEAuCC;IA2BD,8CAGC;IAED,sDAuCC;IAnCA,iCAUC;IA2BF;;;;;;;;;;OAUG;IACH,wCAVW,MAAM,2BACN,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,iBACnB,MAAM,iBACN,MAAM,+BACN,MAAM,WACN,MAAM,aACN,MAAM,GAEL,OAAO,CAAC,IAAI,CAAC,CA+QxB;IAED;;;;;;;;;OASG;IACH,yCATW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,iBACnB,MAAM,iBACN,MAAM,+BACN,MAAM,WACN,MAAM,aACN,MAAM,GAEL,OAAO,CAAC,IAAI,CAAC,CA4QxB;CAwBD;;;;;AAzwBD,kCAAkC;AAClC,iDADW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA+D1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"RecordSet-Filter-Base.d.ts","sourceRoot":"","sources":["../../../source/views/filters/RecordSet-Filter-Base.js"],"names":[],"mappings":";AA8DA;IAEC,2DAIC;IAED;;;;OAIG;IACH,uBAFW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAe7B;IAED,gCAGC;CACD;;;;;AA5FD,kCAAkC;AAClC,oDADW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA0D5B"}
1
+ {"version":3,"file":"RecordSet-Filter-Base.d.ts","sourceRoot":"","sources":["../../../source/views/filters/RecordSet-Filter-Base.js"],"names":[],"mappings":";AAmEA;IAEC,2DAIC;IAED;;;;OAIG;IACH,uBAFW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAe7B;IAED,gCAGC;CACD;;;;;AAjGD,kCAAkC;AAClC,oDADW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA+D5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"RecordSet-List.d.ts","sourceRoot":"","sources":["../../../source/views/list/RecordSet-List.js"],"names":[],"mappings":";AA0EA;IAOE;;;;;;;;MAQC;IAGF,4DAwBC;IAiBD,8CAGC;IAED,sDAkCC;IA9BA,iCAUC;IAsBF;;;;;;;;;OASG;IACH,oCATW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,iBACnB,MAAM,iBACN,MAAM,+BACN,MAAM,WACN,MAAM,aACN,MAAM,GAEL,OAAO,CAAC,IAAI,CAAC,CAmOxB;CAwBD;;;;;AAtaD,kCAAkC;AAClC,4CADW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA6D1B"}
1
+ {"version":3,"file":"RecordSet-List.d.ts","sourceRoot":"","sources":["../../../source/views/list/RecordSet-List.js"],"names":[],"mappings":";AA4EA;IAOE;;;;;;;;MAQC;IAGF,4DAwBC;IAiBD,8CAGC;IAED,sDAkCC;IA9BA,iCAUC;IAsBF;;;;;;;;;OASG;IACH,oCATW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,iBACnB,MAAM,iBACN,MAAM,+BACN,MAAM,WACN,MAAM,aACN,MAAM,GAEL,OAAO,CAAC,IAAI,CAAC,CAmOxB;CAwBD;;;;;AAxaD,kCAAkC;AAClC,4CADW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA+D1B"}