@adaptabletools/adaptable 16.0.4 → 16.0.5

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 (55) hide show
  1. package/bundle.cjs.js +148 -148
  2. package/package.json +1 -1
  3. package/publishTimestamp.d.ts +1 -1
  4. package/publishTimestamp.js +1 -1
  5. package/src/AdaptableOptions/AdaptableOptions.d.ts +9 -4
  6. package/src/AdaptableOptions/ExpressionOptions.d.ts +52 -16
  7. package/src/AdaptableOptions/Fdc3Options.d.ts +23 -7
  8. package/src/AdaptableOptions/FilterOptions.d.ts +7 -0
  9. package/src/AdaptableOptions/PredicateOptions.d.ts +10 -2
  10. package/src/AdaptableOptions/QuickSearchOptions.d.ts +8 -0
  11. package/src/Api/ExportApi.d.ts +12 -3
  12. package/src/Api/ExpressionApi.d.ts +4 -0
  13. package/src/Api/FilterApi.d.ts +7 -1
  14. package/src/Api/Implementation/ApiBase.d.ts +3 -4
  15. package/src/Api/Implementation/ApiBase.js +5 -5
  16. package/src/Api/Implementation/ExportApiImpl.d.ts +2 -0
  17. package/src/Api/Implementation/ExportApiImpl.js +6 -0
  18. package/src/Api/Implementation/ExpressionApiImpl.d.ts +1 -0
  19. package/src/Api/Implementation/ExpressionApiImpl.js +4 -0
  20. package/src/Api/Implementation/FilterApiImpl.d.ts +2 -1
  21. package/src/Api/Implementation/FilterApiImpl.js +14 -1
  22. package/src/Api/Implementation/OptionsApiImpl.d.ts +3 -2
  23. package/src/Api/Implementation/OptionsApiImpl.js +2 -2
  24. package/src/Api/Implementation/PredicateApiImpl.d.ts +1 -0
  25. package/src/Api/Implementation/PredicateApiImpl.js +4 -2
  26. package/src/Api/Implementation/ScheduleApiImpl.js +1 -1
  27. package/src/Api/Internal/AdaptableInternalApi.d.ts +0 -1
  28. package/src/Api/Internal/AdaptableInternalApi.js +2 -5
  29. package/src/Api/Internal/ExpressionnternalApi.js +2 -2
  30. package/src/Api/Internal/PredicateInternalApi.js +5 -5
  31. package/src/Api/OptionsApi.d.ts +4 -3
  32. package/src/Api/PredicateApi.d.ts +4 -0
  33. package/src/PredefinedConfig/Common/AdaptablePredicate.js +15 -8
  34. package/src/PredefinedConfig/Common/ColumnFilter.d.ts +13 -0
  35. package/src/PredefinedConfig/Common/Fdc3Context.d.ts +1 -1
  36. package/src/PredefinedConfig/Common/Fdc3Context.js +1 -1
  37. package/src/Strategy/Fdc3Module.js +1 -1
  38. package/src/Utilities/Constants/DocumentationLinkConstants.js +1 -1
  39. package/src/Utilities/Constants/GeneralConstants.d.ts +1 -0
  40. package/src/Utilities/Constants/GeneralConstants.js +3 -2
  41. package/src/Utilities/Defaults/DefaultAdaptableOptions.js +22 -21
  42. package/src/Utilities/ExpressionFunctions/expressionFunctionUtils.js +1 -1
  43. package/src/Utilities/ExpressionFunctions/observableExpressionFunctions.js +1 -1
  44. package/src/Utilities/Helpers/AdaptableHelper.js +2 -3
  45. package/src/Utilities/Services/QueryLanguageService.js +4 -4
  46. package/src/View/Export/ExportSelector.js +2 -2
  47. package/src/agGrid/Adaptable.js +9 -3
  48. package/src/components/ExpressionEditor/BaseEditorInput.js +4 -4
  49. package/src/metamodel/adaptable.metamodel.d.ts +79 -45
  50. package/src/metamodel/adaptable.metamodel.js +1 -1
  51. package/src/types.d.ts +3 -4
  52. package/version.d.ts +1 -1
  53. package/version.js +1 -1
  54. package/src/AdaptableOptions/AdaptableQLOptions.d.ts +0 -58
  55. package/src/AdaptableOptions/AdaptableQLOptions.js +0 -2
@@ -22,7 +22,7 @@ class PredicateInternalApi extends ApiBase_1.ApiBase {
22
22
  ].filter((predicateDef) => predicateDef.moduleScope.includes('filter'));
23
23
  }
24
24
  getSystemFilterPredicateIds(scope) {
25
- const systemFilterPredicates = this.getAdaptableQLOptions().predicateOptions.systemFilterPredicates;
25
+ const systemFilterPredicates = this.getPredicateOptions().systemFilterPredicates;
26
26
  if (typeof systemFilterPredicates === 'function') {
27
27
  const systemPredicateContext = {
28
28
  adaptableApi: this.adaptable.api,
@@ -49,7 +49,7 @@ class PredicateInternalApi extends ApiBase_1.ApiBase {
49
49
  ].filter((predicateDef) => predicateDef.moduleScope.includes('alert'));
50
50
  }
51
51
  getSystemAlertPredicateIds(scope) {
52
- const systemAlertPredicates = this.getAdaptableQLOptions().predicateOptions.systemAlertPredicates;
52
+ const systemAlertPredicates = this.getPredicateOptions().systemAlertPredicates;
53
53
  if (typeof systemAlertPredicates === 'function') {
54
54
  const systemPredicateContext = {
55
55
  adaptableApi: this.adaptable.api,
@@ -66,7 +66,7 @@ class PredicateInternalApi extends ApiBase_1.ApiBase {
66
66
  return systemAlertPredicates;
67
67
  }
68
68
  getSystemBadgeStylePredicateIds(scope) {
69
- const systemBadgeStylePredicates = this.getAdaptableQLOptions().predicateOptions.systemBadgeStylePredicates;
69
+ const systemBadgeStylePredicates = this.getPredicateOptions().systemBadgeStylePredicates;
70
70
  if (typeof systemBadgeStylePredicates === 'function') {
71
71
  const systemPredicateContext = {
72
72
  adaptableApi: this.adaptable.api,
@@ -93,7 +93,7 @@ class PredicateInternalApi extends ApiBase_1.ApiBase {
93
93
  ].filter((predicateDef) => predicateDef.moduleScope.includes('formatColumn'));
94
94
  }
95
95
  getSystemFormatColumnPredicateIds(scope) {
96
- const systemFormatColumnPredicates = this.getAdaptableQLOptions().predicateOptions.systemFormatColumnPredicates;
96
+ const systemFormatColumnPredicates = this.getPredicateOptions().systemFormatColumnPredicates;
97
97
  if (typeof systemFormatColumnPredicates === 'function') {
98
98
  const systemPredicateContext = {
99
99
  adaptableApi: this.adaptable.api,
@@ -120,7 +120,7 @@ class PredicateInternalApi extends ApiBase_1.ApiBase {
120
120
  ].filter((predicateDef) => predicateDef.moduleScope.includes('flashingcell'));
121
121
  }
122
122
  getSystemFlashingCellPredicateIds(scope) {
123
- const systemFlashingCellPredicates = this.getAdaptableQLOptions().predicateOptions.systemFlashingCellPredicates;
123
+ const systemFlashingCellPredicates = this.getPredicateOptions().systemFlashingCellPredicates;
124
124
  if (typeof systemFlashingCellPredicates === 'function') {
125
125
  const systemPredicateContext = {
126
126
  adaptableApi: this.adaptable.api,
@@ -1,8 +1,9 @@
1
1
  import { CustomSortOptions } from '../AdaptableOptions/CustomSortOptions';
2
2
  import { DataSetOptions } from '../AdaptableOptions/DataSetOptions';
3
3
  import { GroupingOptions } from '../AdaptableOptions/GroupingOptions';
4
- import { ActionColumnOptions, ActionRowOptions, AdaptableOptions, AdaptableQLOptions, AlertOptions, CalendarOptions, CellSummaryOptions, ChartingOptions, ColumnOptions, CommentOptions, ContainerOptions, DashboardOptions, DataChangeHistoryOptions, EditOptions, EntitlementOptions, ExportOptions, FilterOptions, FlashingCellOptions, FormatColumnOptions, LayoutOptions, MenuOptions, NotificationsOptions, QuickSearchOptions, SettingsPanelOptions, StateOptions, TeamSharingOptions, ToolPanelOptions, UserInterfaceOptions } from '../types';
4
+ import { ActionColumnOptions, ActionRowOptions, AdaptableOptions, AlertOptions, CalendarOptions, CellSummaryOptions, ChartingOptions, ColumnOptions, CommentOptions, ContainerOptions, DashboardOptions, DataChangeHistoryOptions, EditOptions, EntitlementOptions, ExportOptions, FilterOptions, FlashingCellOptions, FormatColumnOptions, LayoutOptions, MenuOptions, NotificationsOptions, QuickSearchOptions, SettingsPanelOptions, StateOptions, TeamSharingOptions, ToolPanelOptions, UserInterfaceOptions } from '../types';
5
5
  import { Fdc3Options } from '../AdaptableOptions/Fdc3Options';
6
+ import { ExpressionOptions } from '../AdaptableOptions/ExpressionOptions';
6
7
  /**
7
8
  * Range of functions to access Adaptable Options
8
9
  */
@@ -48,9 +49,9 @@ export interface OptionsApi {
48
49
  */
49
50
  getAlertOptions(): Readonly<AlertOptions>;
50
51
  /**
51
- * Returns `AdaptableOptions.adaptableQLOptions`
52
+ * Returns `AdaptableOptions.expressionOptions`
52
53
  */
53
- getAdaptableQLOptions(): Readonly<AdaptableQLOptions>;
54
+ getExpressionOptions(): Readonly<ExpressionOptions>;
54
55
  /**
55
56
  * Returns `AdaptableOptions.calendarOptions`
56
57
  */
@@ -81,4 +81,8 @@ export interface PredicateApi {
81
81
  * @param defaultReturn Whether to return the default
82
82
  */
83
83
  handlePredicates(predicates: AdaptablePredicate[], params: Omit<PredicateDefHandlerContext, 'adaptableApi' | 'inputs'>, defaultReturn: boolean): boolean;
84
+ /**
85
+ * Whether Predicates are evaluated using Case Sensitivity
86
+ */
87
+ useCaseSensitivity(): boolean;
84
88
  }
@@ -18,6 +18,7 @@ const isYesterday_1 = tslib_1.__importDefault(require("date-fns/isYesterday"));
18
18
  const StringExtensions_1 = tslib_1.__importDefault(require("../../Utilities/Extensions/StringExtensions"));
19
19
  const DateHelper_1 = require("../../Utilities/Helpers/DateHelper");
20
20
  const Helper_1 = tslib_1.__importDefault(require("../../Utilities/Helpers/Helper"));
21
+ const GeneralConstants_1 = require("../../Utilities/Constants/GeneralConstants");
21
22
  /**
22
23
  * Array of Predicate Defs which are shipped by AdapTable
23
24
  */
@@ -32,6 +33,9 @@ exports.SystemPredicateDefs = [
32
33
  if (inputs.length === 0) {
33
34
  return true;
34
35
  }
36
+ if (inputs.includes(GeneralConstants_1.BLANK_DISTINCT_COLUMN_VALUE) && Helper_1.default.IsInputNullOrEmpty(value)) {
37
+ return true;
38
+ }
35
39
  if (column.dataType === 'Date') {
36
40
  return inputs.some((input) => {
37
41
  if (adaptableApi.optionsApi.getFilterOptions().filterUsingTime) {
@@ -46,7 +50,7 @@ exports.SystemPredicateDefs = [
46
50
  return inputs.includes(value);
47
51
  }
48
52
  if (column.dataType === 'String') {
49
- return adaptableApi.internalApi.isTextComparisonCaseSensitive()
53
+ return adaptableApi.predicateApi.useCaseSensitivity()
50
54
  ? inputs
51
55
  .map((i) => {
52
56
  return i === null || i === void 0 ? void 0 : i.toLocaleLowerCase();
@@ -70,6 +74,9 @@ exports.SystemPredicateDefs = [
70
74
  if (inputs.length === 0) {
71
75
  return true;
72
76
  }
77
+ if (inputs.includes(GeneralConstants_1.BLANK_DISTINCT_COLUMN_VALUE) && Helper_1.default.IsInputNullOrEmpty(value)) {
78
+ return false;
79
+ }
73
80
  if (column.dataType === 'Date') {
74
81
  if (adaptableApi.optionsApi.getFilterOptions().filterUsingTime) {
75
82
  return inputs.every((input) => {
@@ -86,7 +93,7 @@ exports.SystemPredicateDefs = [
86
93
  return !inputs.includes(value);
87
94
  }
88
95
  if (column.dataType === 'String') {
89
- return adaptableApi.internalApi.isTextComparisonCaseSensitive()
96
+ return adaptableApi.predicateApi.useCaseSensitivity()
90
97
  ? !inputs
91
98
  .map((i) => {
92
99
  return i === null || i === void 0 ? void 0 : i.toLocaleLowerCase();
@@ -255,7 +262,7 @@ exports.SystemPredicateDefs = [
255
262
  if (!value) {
256
263
  return false;
257
264
  }
258
- const ignoreCase = !adaptableApi.internalApi.isTextComparisonCaseSensitive();
265
+ const ignoreCase = !adaptableApi.predicateApi.useCaseSensitivity();
259
266
  const v = ignoreCase ? String(value).toLocaleLowerCase() : String(value);
260
267
  const i = ignoreCase ? String(inputs[0]).toLocaleLowerCase() : String(inputs[0]);
261
268
  return v == i;
@@ -274,7 +281,7 @@ exports.SystemPredicateDefs = [
274
281
  if (!value) {
275
282
  return true;
276
283
  }
277
- const ignoreCase = !adaptableApi.internalApi.isTextComparisonCaseSensitive();
284
+ const ignoreCase = !adaptableApi.predicateApi.useCaseSensitivity();
278
285
  const v = ignoreCase ? String(value).toLocaleLowerCase() : String(value);
279
286
  const i = ignoreCase ? String(inputs[0]).toLocaleLowerCase() : String(inputs[0]);
280
287
  return v != i;
@@ -293,7 +300,7 @@ exports.SystemPredicateDefs = [
293
300
  if (!value) {
294
301
  return false;
295
302
  }
296
- const ignoreCase = !adaptableApi.internalApi.isTextComparisonCaseSensitive();
303
+ const ignoreCase = !adaptableApi.predicateApi.useCaseSensitivity();
297
304
  const v = ignoreCase ? String(value).toLocaleLowerCase() : String(value);
298
305
  const i = ignoreCase ? String(inputs[0]).toLocaleLowerCase() : String(inputs[0]);
299
306
  return v.indexOf(i) !== -1;
@@ -311,7 +318,7 @@ exports.SystemPredicateDefs = [
311
318
  if (!value) {
312
319
  return true;
313
320
  }
314
- const ignoreCase = !adaptableApi.internalApi.isTextComparisonCaseSensitive();
321
+ const ignoreCase = !adaptableApi.predicateApi.useCaseSensitivity();
315
322
  const v = ignoreCase ? String(value).toLocaleLowerCase() : String(value);
316
323
  const i = ignoreCase ? String(inputs[0]).toLocaleLowerCase() : String(inputs[0]);
317
324
  return v.indexOf(i) === -1;
@@ -329,7 +336,7 @@ exports.SystemPredicateDefs = [
329
336
  if (!value) {
330
337
  return false;
331
338
  }
332
- const ignoreCase = !adaptableApi.internalApi.isTextComparisonCaseSensitive();
339
+ const ignoreCase = !adaptableApi.predicateApi.useCaseSensitivity();
333
340
  const v = ignoreCase ? String(value).toLocaleLowerCase() : String(value);
334
341
  const i = ignoreCase ? String(inputs[0]).toLocaleLowerCase() : String(inputs[0]);
335
342
  return v.startsWith(i);
@@ -347,7 +354,7 @@ exports.SystemPredicateDefs = [
347
354
  if (!value) {
348
355
  return false;
349
356
  }
350
- const ignoreCase = !adaptableApi.internalApi.isTextComparisonCaseSensitive();
357
+ const ignoreCase = !adaptableApi.predicateApi.useCaseSensitivity();
351
358
  const v = ignoreCase ? String(value).toLocaleLowerCase() : String(value);
352
359
  const i = ignoreCase ? String(inputs[0]).toLocaleLowerCase() : String(inputs[0]);
353
360
  return v.endsWith(i);
@@ -1,5 +1,18 @@
1
1
  import { SuspendableObject, AdaptablePredicate } from '../../types';
2
2
  import { TypeHint } from './Types';
3
+ /**
4
+ * Configuration for a Column Filter
5
+ */
6
+ export interface ColumnFilterConfig {
7
+ /**
8
+ * The Predicate ID to use when filtering the column
9
+ */
10
+ PredicateId: TypeHint<string, SystemFilterPredicateId>;
11
+ /**
12
+ * Optional Inputs that might be needed for evaluation
13
+ */
14
+ PredicateInputs?: any[];
15
+ }
3
16
  /**
4
17
  * Defines a Filter applied on a Column using a Predicate
5
18
  */
@@ -96,7 +96,7 @@ export declare const ContextConfiguration: {
96
96
  };
97
97
  readonly "fdc3.instrument": {
98
98
  readonly label: "Instrument";
99
- readonly icon: "moneh";
99
+ readonly icon: "money";
100
100
  };
101
101
  readonly "fdc3.instrumentList": {
102
102
  readonly label: "InstrumentList";
@@ -47,7 +47,7 @@ exports.ContextConfiguration = {
47
47
  },
48
48
  [exports.InstrumentContextKey]: {
49
49
  label: 'Instrument',
50
- icon: 'moneh',
50
+ icon: 'money',
51
51
  },
52
52
  [exports.InstrumentListContextKey]: {
53
53
  label: 'InstrumentList',
@@ -52,7 +52,7 @@ class Fdc3Module extends AdaptableModuleBase_1.AdaptableModuleBase {
52
52
  };
53
53
  if ((_a = intentConfig.contextMenu) === null || _a === void 0 ? void 0 : _a.icon) {
54
54
  const menuItemIcon = ((_b = intentConfig.contextMenu) === null || _b === void 0 ? void 0 : _b.icon) === '_defaultFdc3'
55
- ? this.getFdc3Api().internalApi.getDefaultIconForContext(contextType)
55
+ ? this.getFdc3Api().internalApi.getDefaultIconForIntent(intentType)
56
56
  : (_c = intentConfig.contextMenu) === null || _c === void 0 ? void 0 : _c.icon;
57
57
  menuItem.icon = menuItemIcon;
58
58
  }
@@ -10,7 +10,7 @@ exports.ObservableQueryDocsLink = `${exports.HOST_URL_DOCS}/guide/adaptable-ql-e
10
10
  exports.AggregatedBooleanQueryDocsLink = `${exports.HOST_URL_DOCS}/guide/adaptable-ql-expression-aggregation-boolean`;
11
11
  exports.AggregatedScalarQueryDocsLink = `${exports.HOST_URL_DOCS}/guide/adaptable-ql-expression-aggregation-scalar`;
12
12
  exports.CumulativeAggregatedScalarQueryDocsLink = `${exports.HOST_URL_DOCS}/guide/adaptable-ql-expression-cumulative`;
13
- exports.PredicateDocsLink = `${exports.HOST_URL_DOCS}/guide/adaptable-ql-predicate`;
13
+ exports.PredicateDocsLink = `${exports.HOST_URL_DOCS}/guide/adaptable-predicate`;
14
14
  exports.PrimaryKeyDocsLink = `${exports.HOST_URL_DOCS}/guide/getting-started-primary-key`;
15
15
  exports.LicenseDocsLink = `${exports.HOST_URL_DOCS}/guide/licensing`;
16
16
  exports.AdaptableOptionsDocsLink = `${exports.HOST_URL_DOCS}/guide/reference-options-overview`;
@@ -33,6 +33,7 @@ export declare const ADAPTABLE_ROW_ACTION_BUTTONS = "adaptableRowActionButtons";
33
33
  export declare const ADAPTABLE_ROW_ACTION_BUTTONS_FRIENDLY_NAME = "(ActionRowButtons)";
34
34
  export declare const ADAPTABLE_FDC3_ACTION_COLUMN_FRIENDLY_NAME = "(FDC3ActionColumn)";
35
35
  export declare const DEFAULT_DATE_FORMAT_PATTERN = "dd-MM-yyyy";
36
+ export declare const BLANK_DISTINCT_COLUMN_VALUE = "[BLANKS]";
36
37
  export declare const SYSTEM_STATUS_DEFAULT_MAX_MESSAGES_IN_STORE: number;
37
38
  export declare const QUICK_SEARCH_DEFAULT_BACK_COLOR: string;
38
39
  export declare const QUICK_SEARCH_DEFAULT_FORE_COLOR: string;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FLASHING_CELL_DEFAULT_DURATION_STATE_PROPERTY = exports.FLASHING_CELL_DEFAULT_DOWN_COLOR_STATE_PROPERTY = exports.FLASHING_CELL_DEFAULT_UP_COLOR_STATE_PROPERTY = exports.CURRENT_REPORT_STATE_PROPERTY = exports.CURRENT_LAYOUT_STATE_PROPERTY = exports.SUMMARY_OPERATION_STATE_PROPERTY = exports.ALERT_DEFAULT_SHOW_POPUP = exports.ALERT_DEFAULT_MESSAGE_TYPE = exports.PLUS_MINUS_DEFAULT_NUDGE_VALUE = exports.SERVER_VALIDATION_MESSAGE_TYPE = exports.SERVER_VALIDATION_HEADER = exports.DEFAULT_LIVE_REPORT_THROTTLE_TIME = exports.THEME_DEFAULT_CURRENT_THEME = exports.SYSTEM_DEFAULT_SYSTEM_STATUS_TYPE = exports.CELL_SUMMARY_DEFAULT_OPERATION = exports.QUICK_SEARCH_DEBOUNCE_TIME = exports.QUICK_SEARCH_DEFAULT_FORE_COLOR = exports.QUICK_SEARCH_DEFAULT_BACK_COLOR = exports.SYSTEM_STATUS_DEFAULT_MAX_MESSAGES_IN_STORE = exports.DEFAULT_DATE_FORMAT_PATTERN = exports.ADAPTABLE_FDC3_ACTION_COLUMN_FRIENDLY_NAME = exports.ADAPTABLE_ROW_ACTION_BUTTONS_FRIENDLY_NAME = exports.ADAPTABLE_ROW_ACTION_BUTTONS = exports.AG_GRID_CHART_WINDOW = exports.AG_GRID_PIVOT_COLUMN = exports.AG_GRID_GROUPED_COLUMN = exports.HALF_SECOND = exports.AB_FDC3_COLUMN = exports.AB_ROW_ACTIONS_COLUMN = exports.AB_SPECIAL_COLUMN = exports.EMPTY_ARRAY = exports.EMPTY_STRING = exports.FILTER_THROTTLE = exports.FILTER_NEVER = exports.FILTER_ALWAYS = exports.ALL_COLUMN_VALUES = exports.READ_ONLY_STYLE = exports.MENU_PREFIX = exports.AGGRID_TOOLPANEL_COLUMNS = exports.AGGRID_TOOLPANEL_FILTERS = exports.ADAPTABLE_TOOLPANEL_COMPONENT = exports.ADAPTABLE_TOOLPANEL_ID = exports.ADAPTABLE = exports.ADAPTABLE_ID = exports.USER_NAME = exports.DARK_THEME = exports.LIGHT_THEME = exports.DEFAULT_LAYOUT = exports.MISSING_COLUMN = exports.AUTOGENERATED_PK_COLUMN = void 0;
4
- exports.THEME_STYLE = exports.SELECTED_ROWS_REPORT = exports.SELECTED_CELLS_REPORT = exports.CURRENT_DATA_REPORT = exports.ALL_DATA_REPORT = exports.VISUAL_DATA_REPORT = exports.SYSTEM_THEMES = exports.SMART_EDIT_MATH_OPERATION_STATE_PROPERTY = exports.SMART_EDIT_VALUE_STATE_PROPERTY = exports.QUICK_SEARCH_STYLE_STATE_PROPERTY = exports.QUICK_SEARCH_TEXT_STATE_PROPERTY = exports.CURRENT_THEME_STATE_PROPERTY = void 0;
3
+ exports.FLASHING_CELL_DEFAULT_DOWN_COLOR_STATE_PROPERTY = exports.FLASHING_CELL_DEFAULT_UP_COLOR_STATE_PROPERTY = exports.CURRENT_REPORT_STATE_PROPERTY = exports.CURRENT_LAYOUT_STATE_PROPERTY = exports.SUMMARY_OPERATION_STATE_PROPERTY = exports.ALERT_DEFAULT_SHOW_POPUP = exports.ALERT_DEFAULT_MESSAGE_TYPE = exports.PLUS_MINUS_DEFAULT_NUDGE_VALUE = exports.SERVER_VALIDATION_MESSAGE_TYPE = exports.SERVER_VALIDATION_HEADER = exports.DEFAULT_LIVE_REPORT_THROTTLE_TIME = exports.THEME_DEFAULT_CURRENT_THEME = exports.SYSTEM_DEFAULT_SYSTEM_STATUS_TYPE = exports.CELL_SUMMARY_DEFAULT_OPERATION = exports.QUICK_SEARCH_DEBOUNCE_TIME = exports.QUICK_SEARCH_DEFAULT_FORE_COLOR = exports.QUICK_SEARCH_DEFAULT_BACK_COLOR = exports.SYSTEM_STATUS_DEFAULT_MAX_MESSAGES_IN_STORE = exports.BLANK_DISTINCT_COLUMN_VALUE = exports.DEFAULT_DATE_FORMAT_PATTERN = exports.ADAPTABLE_FDC3_ACTION_COLUMN_FRIENDLY_NAME = exports.ADAPTABLE_ROW_ACTION_BUTTONS_FRIENDLY_NAME = exports.ADAPTABLE_ROW_ACTION_BUTTONS = exports.AG_GRID_CHART_WINDOW = exports.AG_GRID_PIVOT_COLUMN = exports.AG_GRID_GROUPED_COLUMN = exports.HALF_SECOND = exports.AB_FDC3_COLUMN = exports.AB_ROW_ACTIONS_COLUMN = exports.AB_SPECIAL_COLUMN = exports.EMPTY_ARRAY = exports.EMPTY_STRING = exports.FILTER_THROTTLE = exports.FILTER_NEVER = exports.FILTER_ALWAYS = exports.ALL_COLUMN_VALUES = exports.READ_ONLY_STYLE = exports.MENU_PREFIX = exports.AGGRID_TOOLPANEL_COLUMNS = exports.AGGRID_TOOLPANEL_FILTERS = exports.ADAPTABLE_TOOLPANEL_COMPONENT = exports.ADAPTABLE_TOOLPANEL_ID = exports.ADAPTABLE = exports.ADAPTABLE_ID = exports.USER_NAME = exports.DARK_THEME = exports.LIGHT_THEME = exports.DEFAULT_LAYOUT = exports.MISSING_COLUMN = exports.AUTOGENERATED_PK_COLUMN = void 0;
4
+ exports.THEME_STYLE = exports.SELECTED_ROWS_REPORT = exports.SELECTED_CELLS_REPORT = exports.CURRENT_DATA_REPORT = exports.ALL_DATA_REPORT = exports.VISUAL_DATA_REPORT = exports.SYSTEM_THEMES = exports.SMART_EDIT_MATH_OPERATION_STATE_PROPERTY = exports.SMART_EDIT_VALUE_STATE_PROPERTY = exports.QUICK_SEARCH_STYLE_STATE_PROPERTY = exports.QUICK_SEARCH_TEXT_STATE_PROPERTY = exports.CURRENT_THEME_STATE_PROPERTY = exports.FLASHING_CELL_DEFAULT_DURATION_STATE_PROPERTY = void 0;
5
5
  const Enums_1 = require("../../PredefinedConfig/Common/Enums");
6
6
  const UIHelper_1 = require("../../View/UIHelper");
7
7
  exports.AUTOGENERATED_PK_COLUMN = '__ADAPTABLE_PK__';
@@ -36,6 +36,7 @@ exports.ADAPTABLE_ROW_ACTION_BUTTONS = 'adaptableRowActionButtons';
36
36
  exports.ADAPTABLE_ROW_ACTION_BUTTONS_FRIENDLY_NAME = '(ActionRowButtons)';
37
37
  exports.ADAPTABLE_FDC3_ACTION_COLUMN_FRIENDLY_NAME = '(FDC3ActionColumn)';
38
38
  exports.DEFAULT_DATE_FORMAT_PATTERN = 'dd-MM-yyyy';
39
+ exports.BLANK_DISTINCT_COLUMN_VALUE = '[BLANKS]';
39
40
  /*
40
41
  Redux / State Defaults
41
42
  Try to put all our Redux / State defaults here and ONLY reference from here - avoid magic numbers / strings.
@@ -54,28 +54,18 @@ exports.DefaultAdaptableOptions = {
54
54
  BackColor: (0, UIHelper_1.getHexForName)(UIHelper_1.GRAY),
55
55
  },
56
56
  },
57
- adaptableQLOptions: {
58
- caseSensitiveTextComparisons: false,
57
+ expressionOptions: {
59
58
  evaluateAdaptableQLExternally: undefined,
60
- expressionOptions: {
61
- displayColumnFriendlyNamesForExpressions: true,
62
- systemBooleanFunctions: undefined,
63
- systemScalarFunctions: undefined,
64
- systemObservableFunctions: undefined,
65
- systemAggregatedBooleanFunctions: undefined,
66
- systemAggregatedScalarFunctions: undefined,
67
- moduleExpressionFunctions: undefined,
68
- performExpressionValidation: true,
69
- maxTimeframeSize: 28800000, // 8 hours
70
- },
71
- predicateOptions: {
72
- customPredicateDefs: [],
73
- systemFilterPredicates: AdaptablePredicate_1.SystemFilterPredicateIds,
74
- systemAlertPredicates: AdaptablePredicate_1.SystemAlertPredicateIds,
75
- systemFormatColumnPredicates: AdaptablePredicate_1.SystemFormatColumnPredicateIds,
76
- systemFlashingCellPredicates: AdaptablePredicate_1.SystemFlashingCellPredicateIds,
77
- systemBadgeStylePredicates: AdaptablePredicate_1.SystemBadgeStylePredicateIds,
78
- },
59
+ displayColumnFriendlyNamesForExpressions: true,
60
+ systemBooleanFunctions: undefined,
61
+ systemScalarFunctions: undefined,
62
+ systemObservableFunctions: undefined,
63
+ systemAggregatedBooleanFunctions: undefined,
64
+ systemAggregatedScalarFunctions: undefined,
65
+ moduleExpressionFunctions: undefined,
66
+ performExpressionValidation: true,
67
+ maxTimeframeSize: 28800000,
68
+ caseSensitiveExpressions: false,
79
69
  },
80
70
  calendarOptions: { holidays: undefined },
81
71
  cellSummaryOptions: { cellSummaryOperations: undefined },
@@ -221,6 +211,16 @@ exports.DefaultAdaptableOptions = {
221
211
  quickFilterWildcards: {},
222
212
  showValuesCount: undefined,
223
213
  quickFilterValuesWidth: 180,
214
+ includeBlankFilterValues: false,
215
+ },
216
+ predicateOptions: {
217
+ customPredicateDefs: [],
218
+ systemFilterPredicates: AdaptablePredicate_1.SystemFilterPredicateIds,
219
+ systemAlertPredicates: AdaptablePredicate_1.SystemAlertPredicateIds,
220
+ systemFormatColumnPredicates: AdaptablePredicate_1.SystemFormatColumnPredicateIds,
221
+ systemFlashingCellPredicates: AdaptablePredicate_1.SystemFlashingCellPredicateIds,
222
+ systemBadgeStylePredicates: AdaptablePredicate_1.SystemBadgeStylePredicateIds,
223
+ caseSensitivePredicates: false,
224
224
  },
225
225
  quickSearchOptions: {
226
226
  excludeColumnFromQuickSearch: undefined,
@@ -228,6 +228,7 @@ exports.DefaultAdaptableOptions = {
228
228
  clearSearchesOnStartUp: false,
229
229
  quickSearchPlaceholder: 'Search',
230
230
  filterResultsAfterQuickSearch: false,
231
+ runQuickSearchWithCaseSensitivity: false,
231
232
  },
232
233
  stateOptions: {
233
234
  debounceStateDelay: 400,
@@ -19,7 +19,7 @@ const getStringValue = (context, stringArgument) => {
19
19
  return (0, exports.isTextSearchCaseInsensitive)(context) ? stringArgument.toLowerCase() : stringArgument;
20
20
  };
21
21
  exports.getStringValue = getStringValue;
22
- const isTextSearchCaseInsensitive = (context) => !context.adaptableApi.internalApi.isTextComparisonCaseSensitive();
22
+ const isTextSearchCaseInsensitive = (context) => !context.adaptableApi.expressionApi.useCaseSensitivity();
23
23
  exports.isTextSearchCaseInsensitive = isTextSearchCaseInsensitive;
24
24
  // returns an observable which filters the source$ emissions and emits only if the CellDataChangedInfo relates to the given column
25
25
  // optionally, if a filter function (where clause) is provided, it is also evaluated
@@ -428,7 +428,7 @@ const getSlidingTimeframe$ = (source$, timeframeDuration, onTimeframeEnter, onTi
428
428
  }));
429
429
  };
430
430
  const getMaxTimeframeSize = (expressionValue, context) => {
431
- let maxTimeframeSize = context.adaptableApi.optionsApi.getAdaptableQLOptions().expressionOptions.maxTimeframeSize;
431
+ let maxTimeframeSize = context.adaptableApi.optionsApi.getExpressionOptions().maxTimeframeSize;
432
432
  if (maxTimeframeSize > SYSTEM_MAX_TIMEFRAME_SIZE) {
433
433
  maxTimeframeSize = SYSTEM_MAX_TIMEFRAME_SIZE;
434
434
  }
@@ -11,14 +11,13 @@ function assignAdaptableOptions(adaptableOptions) {
11
11
  const returnedAdaptableOptions = Object.assign({}, DefaultAdaptableOptions_1.DefaultAdaptableOptions, adaptableOptions);
12
12
  returnedAdaptableOptions.adaptableStateKey =
13
13
  (_a = returnedAdaptableOptions.adaptableStateKey) !== null && _a !== void 0 ? _a : returnedAdaptableOptions.adaptableId;
14
- returnedAdaptableOptions.adaptableQLOptions = Object.assign({}, DefaultAdaptableOptions_1.DefaultAdaptableOptions.adaptableQLOptions, adaptableOptions.adaptableQLOptions);
14
+ returnedAdaptableOptions.expressionOptions = Object.assign({}, DefaultAdaptableOptions_1.DefaultAdaptableOptions.expressionOptions, adaptableOptions.expressionOptions);
15
15
  returnedAdaptableOptions.calendarOptions = Object.assign({}, DefaultAdaptableOptions_1.DefaultAdaptableOptions.calendarOptions, adaptableOptions.calendarOptions);
16
16
  returnedAdaptableOptions.columnOptions = Object.assign({}, DefaultAdaptableOptions_1.DefaultAdaptableOptions.columnOptions, adaptableOptions.columnOptions);
17
17
  returnedAdaptableOptions.customSortOptions = Object.assign({}, DefaultAdaptableOptions_1.DefaultAdaptableOptions.customSortOptions, adaptableOptions.customSortOptions);
18
18
  returnedAdaptableOptions.dataSetOptions = Object.assign({}, DefaultAdaptableOptions_1.DefaultAdaptableOptions.dataSetOptions, adaptableOptions.dataSetOptions);
19
19
  returnedAdaptableOptions.cellSummaryOptions = Object.assign({}, DefaultAdaptableOptions_1.DefaultAdaptableOptions.cellSummaryOptions, adaptableOptions.cellSummaryOptions);
20
- returnedAdaptableOptions.adaptableQLOptions.expressionOptions = Object.assign({}, DefaultAdaptableOptions_1.DefaultAdaptableOptions.adaptableQLOptions.expressionOptions, returnedAdaptableOptions.adaptableQLOptions.expressionOptions);
21
- returnedAdaptableOptions.adaptableQLOptions.predicateOptions = Object.assign({}, DefaultAdaptableOptions_1.DefaultAdaptableOptions.adaptableQLOptions.predicateOptions, returnedAdaptableOptions.adaptableQLOptions.predicateOptions);
20
+ returnedAdaptableOptions.predicateOptions = Object.assign({}, DefaultAdaptableOptions_1.DefaultAdaptableOptions.predicateOptions, returnedAdaptableOptions.predicateOptions);
22
21
  returnedAdaptableOptions.layoutOptions = Object.assign({}, DefaultAdaptableOptions_1.DefaultAdaptableOptions.layoutOptions, adaptableOptions.layoutOptions);
23
22
  returnedAdaptableOptions.notificationsOptions = Object.assign({}, DefaultAdaptableOptions_1.DefaultAdaptableOptions.notificationsOptions, adaptableOptions.notificationsOptions);
24
23
  returnedAdaptableOptions.alertOptions = Object.assign({}, DefaultAdaptableOptions_1.DefaultAdaptableOptions.alertOptions, adaptableOptions.alertOptions);
@@ -93,7 +93,7 @@ class QueryLanguageService {
93
93
  }
94
94
  const force = (_a = config === null || config === void 0 ? void 0 : config.force) !== null && _a !== void 0 ? _a : false;
95
95
  // see if validation should be performed
96
- if (!this.adaptableApi.optionsApi.getAdaptableQLOptions().expressionOptions
96
+ if (!this.adaptableApi.optionsApi.getExpressionOptions()
97
97
  .performExpressionValidation &&
98
98
  !force) {
99
99
  const result = { isValid: true, errorMessage: '' };
@@ -283,7 +283,7 @@ class QueryLanguageService {
283
283
  // if there are no specific functions defined, it falls back to the default values
284
284
  getModuleExpressionFunctionsMap(module) {
285
285
  var _a, _b, _c;
286
- const expressionOptions = this.adaptableApi.optionsApi.getAdaptableQLOptions().expressionOptions;
286
+ const expressionOptions = this.adaptableApi.optionsApi.getExpressionOptions();
287
287
  if (module) {
288
288
  let cachedResult = this.cacheModuleSpecificExpressionFunctions.get(module);
289
289
  if (cachedResult) {
@@ -369,14 +369,14 @@ class QueryLanguageService {
369
369
  return generalExpressionFunctions;
370
370
  }
371
371
  evaluateCustomQueryVariable(functionName, args) {
372
- var _a, _b, _c;
372
+ var _a, _b;
373
373
  const context = {
374
374
  adaptableApi: this.adaptableApi,
375
375
  userName: this.adaptableApi.optionsApi.getUserName(),
376
376
  adaptableId: this.adaptableApi.optionsApi.getAdaptableId(),
377
377
  args,
378
378
  };
379
- const customQueryVariableDefinition = (_c = (_b = (_a = this.adaptableApi.optionsApi.getAdaptableQLOptions()) === null || _a === void 0 ? void 0 : _a.expressionOptions) === null || _b === void 0 ? void 0 : _b.customQueryVariables) === null || _c === void 0 ? void 0 : _c[functionName];
379
+ const customQueryVariableDefinition = (_b = (_a = this.adaptableApi.optionsApi.getExpressionOptions()) === null || _a === void 0 ? void 0 : _a.customQueryVariables) === null || _b === void 0 ? void 0 : _b[functionName];
380
380
  return typeof customQueryVariableDefinition === 'function'
381
381
  ? customQueryVariableDefinition(context)
382
382
  : customQueryVariableDefinition;
@@ -63,10 +63,10 @@ const ExportSelector = () => {
63
63
  // export
64
64
  const handleExport = () => {
65
65
  if (isCustomDestination(currentDestination)) {
66
- adaptable.api.exportApi.sendReport(currentReport.Name, currentDestination.name);
66
+ adaptable.api.exportApi.runReport(currentReport.Name, currentDestination.name);
67
67
  }
68
68
  else {
69
- adaptable.api.exportApi.sendReport(currentReport.Name, currentDestination);
69
+ adaptable.api.exportApi.runReport(currentReport.Name, currentDestination);
70
70
  }
71
71
  };
72
72
  return (React.createElement(React.Fragment, null,
@@ -1284,7 +1284,7 @@ class Adaptable {
1284
1284
  return false;
1285
1285
  }
1286
1286
  const displayValue = (_a = this.api.gridApi.getDisplayValueFromRowNode(params.node, abColumn.columnId)) !== null && _a !== void 0 ? _a : '';
1287
- const ignoreCase = !this.api.internalApi.isTextComparisonCaseSensitive();
1287
+ const ignoreCase = !this.adaptableOptions.quickSearchOptions.runQuickSearchWithCaseSensitivity;
1288
1288
  const v = ignoreCase ? String(displayValue).toLocaleLowerCase() : String(displayValue);
1289
1289
  const i = ignoreCase ? String(quickSearchValue).toLocaleLowerCase() : String(quickSearchValue);
1290
1290
  return v.indexOf(i) !== -1;
@@ -1907,7 +1907,13 @@ class Adaptable {
1907
1907
  else {
1908
1908
  this.gridOptions.api.forEachNode((rowNode) => {
1909
1909
  const gridCell = this.addDistinctColumnValue(rowNode, column.columnId);
1910
- if (gridCell && gridCell.rawValue != undefined && gridCell.rowNode !== skipRowNode) {
1910
+ if (gridCell && gridCell.rowNode !== skipRowNode) {
1911
+ if (gridCell.rawValue == undefined &&
1912
+ this.adaptableOptions.filterOptions.includeBlankFilterValues) {
1913
+ gridCell.rawValue = GeneralConstants_1.BLANK_DISTINCT_COLUMN_VALUE;
1914
+ gridCell.displayValue = GeneralConstants_1.BLANK_DISTINCT_COLUMN_VALUE;
1915
+ gridCell.normalisedValue = GeneralConstants_1.BLANK_DISTINCT_COLUMN_VALUE;
1916
+ }
1911
1917
  returnValues.push(gridCell);
1912
1918
  }
1913
1919
  });
@@ -1920,7 +1926,7 @@ class Adaptable {
1920
1926
  }
1921
1927
  return value;
1922
1928
  });
1923
- if (column.dataType == 'String' && this.api.internalApi.isTextComparisonCaseSensitive()) {
1929
+ if (column.dataType == 'String' && this.api.predicateApi.useCaseSensitivity()) {
1924
1930
  uniqueVals = (0, uniqBy_1.default)(uniqueVals, (d) => d.displayValue.toLowerCase());
1925
1931
  }
1926
1932
  return uniqueVals.slice(0, this.adaptableOptions.filterOptions.maxFilterValuesToDisplay);
@@ -46,13 +46,13 @@ const getCategoryOrder = (category) => {
46
46
  return predefinedOrder[category] || 0;
47
47
  };
48
48
  const VarEditorButton = () => {
49
- var _a, _b;
49
+ var _a;
50
50
  const adaptable = (0, AdaptableContext_1.useAdaptable)();
51
- const expressionOptions = (_b = (_a = adaptable.api.optionsApi.getAdaptableQLOptions()) === null || _a === void 0 ? void 0 : _a.expressionOptions) === null || _b === void 0 ? void 0 : _b.customQueryVariables;
52
- if (!expressionOptions || Object.keys(expressionOptions).length === 0) {
51
+ const customQueryVariables = (_a = adaptable.api.optionsApi.getExpressionOptions()) === null || _a === void 0 ? void 0 : _a.customQueryVariables;
52
+ if (!customQueryVariables || Object.keys(customQueryVariables).length === 0) {
53
53
  return React.createElement(React.Fragment, null);
54
54
  }
55
- return (React.createElement(React.Fragment, null, Object.keys(expressionOptions).map((varOption) => {
55
+ return (React.createElement(React.Fragment, null, Object.keys(customQueryVariables).map((varOption) => {
56
56
  const varString = `VAR('${varOption}')`;
57
57
  return (React.createElement(EditorButton_1.default, { data: varString, key: varOption }, varString));
58
58
  })));