@adaptabletools/adaptable 12.1.5 → 12.1.8-canary.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.
Files changed (214) hide show
  1. package/base.css +11 -49
  2. package/bundle.cjs.js +106 -106
  3. package/index.css +13 -60
  4. package/package.json +1 -1
  5. package/publishTimestamp.d.ts +1 -1
  6. package/publishTimestamp.js +1 -1
  7. package/src/AdaptableInterfaces/IAdaptable.d.ts +12 -4
  8. package/src/AdaptableOptions/ColumnOptions.d.ts +2 -4
  9. package/src/AdaptableOptions/FilterOptions.d.ts +19 -0
  10. package/src/AdaptableOptions/FinancePluginOptions.d.ts +22 -1
  11. package/src/AdaptableOptions/StateOptions.d.ts +25 -12
  12. package/src/AdaptableOptions/UserInterfaceOptions.d.ts +31 -24
  13. package/src/Api/ColumnApi.d.ts +6 -1
  14. package/src/Api/ExportApi.d.ts +5 -0
  15. package/src/Api/FilterApi.d.ts +29 -0
  16. package/src/Api/FlashingCellApi.d.ts +8 -0
  17. package/src/Api/GridApi.d.ts +1 -0
  18. package/src/Api/Implementation/ColumnApiImpl.d.ts +2 -1
  19. package/src/Api/Implementation/ColumnApiImpl.js +7 -2
  20. package/src/Api/Implementation/DataSetApiImpl.js +1 -1
  21. package/src/Api/Implementation/ExportApiImpl.d.ts +3 -1
  22. package/src/Api/Implementation/ExportApiImpl.js +19 -3
  23. package/src/Api/Implementation/FilterApiImpl.d.ts +6 -0
  24. package/src/Api/Implementation/FilterApiImpl.js +42 -4
  25. package/src/Api/Implementation/FlashingCellApiImpl.d.ts +1 -0
  26. package/src/Api/Implementation/FlashingCellApiImpl.js +4 -0
  27. package/src/Api/Implementation/GridApiImpl.d.ts +1 -0
  28. package/src/Api/Implementation/GridApiImpl.js +4 -4
  29. package/src/Api/Implementation/InternalApiImpl.d.ts +0 -1
  30. package/src/Api/Implementation/InternalApiImpl.js +0 -3
  31. package/src/Api/Implementation/LayoutApiImpl.d.ts +1 -1
  32. package/src/Api/Implementation/LayoutApiImpl.js +4 -3
  33. package/src/Api/Implementation/PredicateApiImpl.js +4 -0
  34. package/src/Api/Implementation/QueryApiImpl.js +1 -1
  35. package/src/Api/Implementation/QueryLanguageApiImpl.js +9 -1
  36. package/src/Api/Implementation/TeamSharingApiImpl.js +1 -1
  37. package/src/Api/InternalApi.d.ts +0 -1
  38. package/src/Api/LayoutApi.d.ts +1 -1
  39. package/src/Api/SystemStatusApi.d.ts +1 -1
  40. package/src/Api/ToolPanelApi.d.ts +1 -1
  41. package/src/PredefinedConfig/CalculatedColumnState.d.ts +2 -2
  42. package/src/PredefinedConfig/Common/AdaptableColumn.js +3 -2
  43. package/src/PredefinedConfig/Common/AdaptablePredicate.js +30 -10
  44. package/src/PredefinedConfig/Common/AdaptableQuery.js +1 -1
  45. package/src/PredefinedConfig/Common/AggregationColumns.d.ts +6 -0
  46. package/src/PredefinedConfig/Common/AggregationColumns.js +4 -0
  47. package/src/PredefinedConfig/Common/ColumnFilter.d.ts +2 -2
  48. package/src/PredefinedConfig/Common/Enums.d.ts +0 -15
  49. package/src/PredefinedConfig/Common/Enums.js +1 -18
  50. package/src/PredefinedConfig/Common/SpecialColumnSettings.d.ts +6 -6
  51. package/src/PredefinedConfig/ExportState.d.ts +12 -4
  52. package/src/PredefinedConfig/LayoutState.d.ts +2 -1
  53. package/src/PredefinedConfig/PopupState.d.ts +1 -2
  54. package/src/Redux/ActionsReducers/AlertRedux.d.ts +1 -1
  55. package/src/Redux/ActionsReducers/AlertRedux.js +1 -1
  56. package/src/Redux/ActionsReducers/ConditionalStyleRedux.d.ts +1 -1
  57. package/src/Redux/ActionsReducers/ConditionalStyleRedux.js +1 -1
  58. package/src/Redux/ActionsReducers/CustomSortRedux.d.ts +1 -1
  59. package/src/Redux/ActionsReducers/CustomSortRedux.js +1 -1
  60. package/src/Redux/ActionsReducers/FlashingCellRedux.d.ts +1 -1
  61. package/src/Redux/ActionsReducers/FlashingCellRedux.js +1 -1
  62. package/src/Redux/ActionsReducers/FormatColumnRedux.d.ts +1 -1
  63. package/src/Redux/ActionsReducers/FormatColumnRedux.js +1 -1
  64. package/src/Redux/ActionsReducers/LayoutRedux.d.ts +28 -0
  65. package/src/Redux/ActionsReducers/LayoutRedux.js +80 -2
  66. package/src/Redux/ActionsReducers/PlusMinusRedux.d.ts +1 -1
  67. package/src/Redux/ActionsReducers/PlusMinusRedux.js +1 -1
  68. package/src/Redux/ActionsReducers/PopupRedux.d.ts +0 -2
  69. package/src/Redux/ActionsReducers/PopupRedux.js +1 -28
  70. package/src/Redux/ActionsReducers/ScheduleRedux.d.ts +5 -5
  71. package/src/Redux/ActionsReducers/ScheduleRedux.js +5 -5
  72. package/src/Redux/ActionsReducers/ShortcutRedux.d.ts +1 -1
  73. package/src/Redux/ActionsReducers/ShortcutRedux.js +1 -1
  74. package/src/Redux/ActionsReducers/SystemRedux.d.ts +1 -2
  75. package/src/Redux/ActionsReducers/SystemRedux.js +1 -2
  76. package/src/Redux/Store/AdaptableStore.js +30 -16
  77. package/src/Strategy/AlertModule.d.ts +1 -0
  78. package/src/Strategy/AlertModule.js +20 -0
  79. package/src/Strategy/CalculatedColumnModule.js +2 -2
  80. package/src/Strategy/ExportModule.d.ts +0 -1
  81. package/src/Strategy/ExportModule.js +0 -16
  82. package/src/Strategy/FilterModule.js +6 -0
  83. package/src/Strategy/FlashingCellModule.js +2 -2
  84. package/src/Strategy/Interface/IModule.d.ts +4 -0
  85. package/src/Strategy/LayoutModule.js +20 -20
  86. package/src/Strategy/Utilities/FormatColumn/getFormatColumnStyleViewItems.js +16 -1
  87. package/src/Strategy/Utilities/Layout/getLayoutFilterViewItems.js +15 -11
  88. package/src/Utilities/Constants/DocumentationLinkConstants.d.ts +1 -0
  89. package/src/Utilities/Constants/DocumentationLinkConstants.js +2 -1
  90. package/src/Utilities/Defaults/DefaultAdaptableOptions.js +3 -0
  91. package/src/Utilities/ExpressionFunctions/aggregatedBooleanExpressionFunctions.d.ts +12 -2
  92. package/src/Utilities/ExpressionFunctions/aggregatedBooleanExpressionFunctions.js +30 -66
  93. package/src/Utilities/ExpressionFunctions/aggregatedScalarExpressionFunctions.d.ts +22 -6
  94. package/src/Utilities/ExpressionFunctions/aggregatedScalarExpressionFunctions.js +423 -220
  95. package/src/Utilities/ExpressionFunctions/expressionFunctionUtils.d.ts +7 -1
  96. package/src/Utilities/ExpressionFunctions/expressionFunctionUtils.js +23 -7
  97. package/src/Utilities/ExpressionFunctions/scalarAggregationHelper.d.ts +0 -1
  98. package/src/Utilities/ExpressionFunctions/scalarAggregationHelper.js +6 -54
  99. package/src/Utilities/ExpressionFunctions/scalarExpressionFunctions.js +17 -5
  100. package/src/Utilities/Extensions/ArrayExtensions.js +6 -0
  101. package/src/Utilities/Helpers/CalendarHelper.js +10 -7
  102. package/src/Utilities/Helpers/DateHelper.d.ts +0 -26
  103. package/src/Utilities/Helpers/DateHelper.js +2 -32
  104. package/src/Utilities/Interface/MessagePopups.d.ts +0 -4
  105. package/src/Utilities/ObjectFactory.d.ts +6 -4
  106. package/src/Utilities/ObjectFactory.js +30 -17
  107. package/src/Utilities/Services/AggregatedScalarLiveValue.d.ts +25 -0
  108. package/src/Utilities/Services/AggregatedScalarLiveValue.js +103 -0
  109. package/src/Utilities/Services/AlertService.d.ts +0 -1
  110. package/src/Utilities/Services/AlertService.js +5 -17
  111. package/src/Utilities/Services/CalculatedColumnExpressionService.d.ts +4 -4
  112. package/src/Utilities/Services/CalculatedColumnExpressionService.js +29 -154
  113. package/src/Utilities/Services/Interface/ICalculatedColumnExpressionService.d.ts +2 -2
  114. package/src/Utilities/Services/Interface/IQueryLanguageService.d.ts +6 -3
  115. package/src/Utilities/Services/QueryLanguageService.d.ts +6 -3
  116. package/src/Utilities/Services/QueryLanguageService.js +23 -6
  117. package/src/Utilities/Services/ReportService.js +47 -46
  118. package/src/View/AdaptableView.js +1 -2
  119. package/src/View/CalculatedColumn/Utilities/getCalculatedColumnSettingsTags.d.ts +2 -0
  120. package/src/View/CalculatedColumn/Utilities/{getCalculatedColumnSettingTags.js → getCalculatedColumnSettingsTags.js} +5 -3
  121. package/src/View/CalculatedColumn/Wizard/CalculatedColumnDefinitionWizardSection.d.ts +10 -0
  122. package/src/View/CalculatedColumn/Wizard/CalculatedColumnDefinitionWizardSection.js +80 -0
  123. package/src/View/CalculatedColumn/Wizard/CalculatedColumnExpressionWizardSection.js +21 -15
  124. package/src/View/CalculatedColumn/Wizard/CalculatedColumnSettingsWizardSection.d.ts +1 -2
  125. package/src/View/CalculatedColumn/Wizard/CalculatedColumnSettingsWizardSection.js +10 -53
  126. package/src/View/CalculatedColumn/Wizard/CalculatedColumnWizard.js +14 -3
  127. package/src/View/Components/AdaptableDateInput/index.js +1 -1
  128. package/src/View/Components/AdaptableObjectList/AdaptableObjectCompactList.js +42 -6
  129. package/src/View/Components/AdaptableObjectList/AdaptableObjectList.js +1 -1
  130. package/src/View/Components/EntityRulesEditor/index.js +26 -5
  131. package/src/View/Components/FilterForm/FilterForm.js +10 -5
  132. package/src/View/Components/FilterForm/ListBoxFilterForm.js +1 -0
  133. package/src/View/Components/FilterForm/QuickFilterForm.js +12 -7
  134. package/src/View/Components/PermittedValuesSelector/PermitedValuesSelector.d.ts +9 -0
  135. package/src/View/Components/PermittedValuesSelector/PermitedValuesSelector.js +28 -0
  136. package/src/View/Components/PermittedValuesSelector/index.d.ts +1 -0
  137. package/src/View/Components/PermittedValuesSelector/index.js +5 -0
  138. package/src/View/Components/Popups/AdaptablePopup/Navigation.js +2 -2
  139. package/src/View/Components/Popups/AdaptableToaster.js +2 -7
  140. package/src/View/Components/Popups/WindowPopups/windowFactory.d.ts +0 -1
  141. package/src/View/Components/Popups/WindowPopups/windowFactory.js +1 -4
  142. package/src/View/Export/ExportViewPanel.d.ts +1 -2
  143. package/src/View/Export/ExportViewPanel.js +2 -6
  144. package/src/View/Export/Wizard/ReportColumnTypeWizard.d.ts +1 -2
  145. package/src/View/Export/Wizard/ReportColumnTypeWizard.js +11 -12
  146. package/src/View/Export/Wizard/ReportRowTypeWizard.d.ts +1 -2
  147. package/src/View/Export/Wizard/ReportRowTypeWizard.js +12 -13
  148. package/src/View/Export/Wizard/ReportSettingsWizard.js +1 -2
  149. package/src/View/Filter/FilterViewPanel.js +20 -4
  150. package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.js +1 -1
  151. package/src/View/FreeTextColumn/FreeTextColumnSummary.js +1 -2
  152. package/src/View/FreeTextColumn/Wizard/FreeTextColumnSettingsWizardSection.d.ts +1 -1
  153. package/src/View/FreeTextColumn/Wizard/FreeTextColumnWizard.js +1 -1
  154. package/src/View/Layout/Wizard/{LayoutEditor → Components}/ColumnLabels.d.ts +0 -0
  155. package/src/View/Layout/Wizard/{LayoutEditor → Components}/ColumnLabels.js +0 -0
  156. package/src/View/Layout/Wizard/LayoutWizard.js +1 -0
  157. package/src/View/Layout/Wizard/sections/AggregationsSection.d.ts +1 -0
  158. package/src/View/Layout/Wizard/sections/AggregationsSection.js +69 -8
  159. package/src/View/Layout/Wizard/sections/ColumnsSection.js +1 -1
  160. package/src/View/Query/QueryViewPanel.js +1 -1
  161. package/src/agGrid/Adaptable.d.ts +12 -3
  162. package/src/agGrid/Adaptable.js +225 -152
  163. package/src/agGrid/agGridHelper.d.ts +1 -0
  164. package/src/agGrid/agGridHelper.js +5 -3
  165. package/src/agGrid/agGridMenuHelper.d.ts +1 -0
  166. package/src/agGrid/agGridMenuHelper.js +4 -2
  167. package/src/agGrid/weightedAverage.d.ts +6 -0
  168. package/src/agGrid/weightedAverage.js +66 -0
  169. package/src/components/ExpressionEditor/BaseEditorInput.d.ts +1 -0
  170. package/src/components/ExpressionEditor/BaseEditorInput.js +2 -3
  171. package/src/components/ExpressionEditor/EditorInput.d.ts +1 -1
  172. package/src/components/ExpressionEditor/EditorInput.js +24 -4
  173. package/src/components/ExpressionEditor/{EditorInputReactive.d.ts → EditorInputWithWhereClause.d.ts} +3 -3
  174. package/src/components/ExpressionEditor/{EditorInputReactive.js → EditorInputWithWhereClause.js} +6 -5
  175. package/src/components/ExpressionEditor/editorButtonsAggregatedBoolean.d.ts +2 -0
  176. package/src/components/ExpressionEditor/{editorButtonsReactive.js → editorButtonsAggregatedBoolean.js} +22 -37
  177. package/src/components/ExpressionEditor/editorButtonsAggregatedScalar.js +5 -10
  178. package/src/components/ExpressionEditor/editorButtonsCumulativeAggregatedScalar.d.ts +2 -0
  179. package/src/components/ExpressionEditor/editorButtonsCumulativeAggregatedScalar.js +50 -0
  180. package/src/components/ExpressionEditor/editorButtonsObservable.d.ts +2 -0
  181. package/src/components/ExpressionEditor/editorButtonsObservable.js +40 -0
  182. package/src/components/ExpressionEditor/index.d.ts +1 -1
  183. package/src/components/ExpressionEditor/index.js +26 -5
  184. package/src/components/ProgressIndicator/ProgressIndicator.js +10 -12
  185. package/src/metamodel/adaptable.metamodel.d.ts +129 -7
  186. package/src/metamodel/adaptable.metamodel.js +1 -1
  187. package/src/parser/src/types.d.ts +1 -1
  188. package/src/types.d.ts +4 -4
  189. package/version.d.ts +1 -1
  190. package/version.js +1 -1
  191. package/src/View/CalculatedColumn/Utilities/getCalculatedColumnSettingTags.d.ts +0 -2
  192. package/src/View/Layout/LayoutEditorStandalonePopup.d.ts +0 -3
  193. package/src/View/Layout/LayoutEditorStandalonePopup.js +0 -78
  194. package/src/View/Layout/Wizard/LayoutEditor/ColumnList.d.ts +0 -27
  195. package/src/View/Layout/Wizard/LayoutEditor/ColumnList.js +0 -86
  196. package/src/View/Layout/Wizard/LayoutEditor/ColumnSortList.d.ts +0 -16
  197. package/src/View/Layout/Wizard/LayoutEditor/ColumnSortList.js +0 -89
  198. package/src/View/Layout/Wizard/LayoutEditor/PivotList.d.ts +0 -15
  199. package/src/View/Layout/Wizard/LayoutEditor/PivotList.js +0 -70
  200. package/src/View/Layout/Wizard/LayoutEditor/RowGroupsList.d.ts +0 -15
  201. package/src/View/Layout/Wizard/LayoutEditor/RowGroupsList.js +0 -70
  202. package/src/View/Layout/Wizard/LayoutEditor/droppableIds.d.ts +0 -7
  203. package/src/View/Layout/Wizard/LayoutEditor/droppableIds.js +0 -11
  204. package/src/View/Layout/Wizard/LayoutEditor/getItemStyle.d.ts +0 -6
  205. package/src/View/Layout/Wizard/LayoutEditor/getItemStyle.js +0 -26
  206. package/src/View/Layout/Wizard/LayoutEditor/index.d.ts +0 -9
  207. package/src/View/Layout/Wizard/LayoutEditor/index.js +0 -367
  208. package/src/View/Layout/Wizard/LayoutEditor/reducer.d.ts +0 -28
  209. package/src/View/Layout/Wizard/LayoutEditor/reducer.js +0 -46
  210. package/src/View/Layout/Wizard/LayoutEditor/utils.d.ts +0 -10
  211. package/src/View/Layout/Wizard/LayoutEditor/utils.js +0 -14
  212. package/src/View/Layout/Wizard/LayoutEditorWizard.d.ts +0 -30
  213. package/src/View/Layout/Wizard/LayoutEditorWizard.js +0 -132
  214. package/src/components/ExpressionEditor/editorButtonsReactive.d.ts +0 -2
@@ -281,7 +281,7 @@ exports.AdaptableStore = AdaptableStore;
281
281
  const adaptableMiddleware = (adaptable) => function (middlewareAPI) {
282
282
  return function (next) {
283
283
  return function (action) {
284
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
284
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
285
285
  switch (action.type) {
286
286
  /*******************
287
287
  * NAMED QUERY ACTIONS
@@ -354,6 +354,11 @@ const adaptableMiddleware = (adaptable) => function (middlewareAPI) {
354
354
  }
355
355
  return ret;
356
356
  }
357
+ case SystemRedux.SYSTEM_FLASHING_CELL_DELETE_ALL: {
358
+ let ret = next(action);
359
+ adaptable.redrawRenderedRows();
360
+ return ret;
361
+ }
357
362
  /*******************
358
363
  * ALERT ACTIONS
359
364
  *******************/
@@ -570,7 +575,7 @@ const adaptableMiddleware = (adaptable) => function (middlewareAPI) {
570
575
  aggregatedCalculatedColumns.forEach((calculatedColumn) => {
571
576
  adaptable.api.internalApi
572
577
  .getCalculatedColumnExpressionService()
573
- .createAggregatedScalarCalculatedColumn(calculatedColumn);
578
+ .createAggregatedScalarLiveValue(calculatedColumn);
574
579
  });
575
580
  // refresh calculated columns
576
581
  const aggCalculatedColumnIds = aggregatedCalculatedColumns.map((calculatedColumn) => calculatedColumn.ColumnId);
@@ -591,7 +596,7 @@ const adaptableMiddleware = (adaptable) => function (middlewareAPI) {
591
596
  returnAction.type === CalculatedColumnRedux.CALCULATED_COLUMN_EDIT) {
592
597
  adaptable.api.internalApi
593
598
  .getCalculatedColumnExpressionService()
594
- .createAggregatedScalarCalculatedColumn(returnAction.calculatedColumn);
599
+ .createAggregatedScalarLiveValue(returnAction.calculatedColumn);
595
600
  }
596
601
  adaptable.updateColDefsForSpecialColumns();
597
602
  return returnAction;
@@ -616,7 +621,7 @@ const adaptableMiddleware = (adaptable) => function (middlewareAPI) {
616
621
  const returnAction = next(actionTyped);
617
622
  adaptable.api.internalApi
618
623
  .getCalculatedColumnExpressionService()
619
- .destroyAggregatedScalarCalculatedColumn(returnAction.calculatedColumn);
624
+ .destroyAggregatedScalarLiveValue(returnAction.calculatedColumn);
620
625
  adaptable.updateColDefsForSpecialColumns();
621
626
  return returnAction;
622
627
  }
@@ -684,14 +689,7 @@ const adaptableMiddleware = (adaptable) => function (middlewareAPI) {
684
689
  if (adaptable.adaptableOptions.searchOptions.filterResultsAfterQuickSearch) {
685
690
  const actionTyped = action;
686
691
  const searchText = actionTyped.quickSearchText;
687
- // const gridOptions = adaptable.api.gridApi.getAgGridInstance();
688
692
  if (StringExtensions_1.StringExtensions.IsNotNullOrEmpty(searchText)) {
689
- // Currently using this but any searchable would allow us to limit the cols checked
690
- // const queryText = 'ANY_CONTAINS("' + searchText + '") ';
691
- // const queryText = 'ANY_SEARCHABLE_CONTAINS("' + searchText + '") ';
692
- // adaptable.api.queryApi.setCurrentQuery(queryText);
693
- // Better still would be to use ag grid if that is possible?
694
- // gridOptions.api.setQuickFilter(searchText);
695
693
  adaptable.setAgQuickSearch(searchText);
696
694
  }
697
695
  else {
@@ -723,7 +721,11 @@ const adaptableMiddleware = (adaptable) => function (middlewareAPI) {
723
721
  case LayoutRedux.LAYOUT_COLUMN_FILTER_EDIT:
724
722
  case LayoutRedux.LAYOUT_COLUMN_FILTER_SET:
725
723
  case LayoutRedux.LAYOUT_COLUMN_FILTER_CLEAR:
726
- case LayoutRedux.LAYOUT_COLUMN_FILTER_CLEAR_ALL: {
724
+ case LayoutRedux.LAYOUT_COLUMN_FILTER_CLEAR_ALL:
725
+ case LayoutRedux.LAYOUT_COLUMN_FILTER_SUSPEND:
726
+ case LayoutRedux.LAYOUT_COLUMN_FILTER_SUSPEND_ALL:
727
+ case LayoutRedux.LAYOUT_COLUMN_FILTER_UNSUSPEND:
728
+ case LayoutRedux.LAYOUT_COLUMN_FILTER_UNSUSPEND_ALL: {
727
729
  let returnAction;
728
730
  // needs to be called before 'next' so previous and next column filters are known
729
731
  const shouldTriggerGridFiltering = adaptable.api.filterApi.shouldNewColumnFilterTriggerGridFiltering(action);
@@ -763,6 +765,7 @@ const adaptableMiddleware = (adaptable) => function (middlewareAPI) {
763
765
  }, 5);
764
766
  adaptable.api.gridApi.fireSearchChangedEvent('Filter');
765
767
  adaptable.api.filterApi.fireFilterAppliedEvent();
768
+ adaptable.api.layoutApi.fireLayoutChangedEvent(action.type, null, middlewareAPI.getState().Layout);
766
769
  return returnAction;
767
770
  }
768
771
  /*******************
@@ -869,9 +872,17 @@ const adaptableMiddleware = (adaptable) => function (middlewareAPI) {
869
872
  case LayoutRedux.LAYOUT_SET_COLUMN_CAPTION:
870
873
  case LayoutRedux.LAYOUT_SELECT: {
871
874
  const oldLayoutState = middlewareAPI.getState().Layout;
875
+ // this must be called before 'next(action)'
876
+ const previousLayout = adaptable.api.layoutApi.getCurrentLayout();
872
877
  let returnAction = next(action);
873
878
  const newLayoutState = middlewareAPI.getState().Layout;
874
879
  adaptable.api.layoutApi.fireLayoutChangedEvent(action.type, oldLayoutState, newLayoutState);
880
+ const oldFilters = (_h = oldLayoutState.Layouts.find((l) => l.Name == oldLayoutState.CurrentLayout)) === null || _h === void 0 ? void 0 : _h.ColumnFilters;
881
+ const newFilters = (_j = newLayoutState.Layouts.find((l) => l.Name == newLayoutState.CurrentLayout)) === null || _j === void 0 ? void 0 : _j.ColumnFilters;
882
+ // Tell Grid to apply filtering if filters have been changed in a loaded Layout
883
+ if (adaptable.api.filterApi.areColumnFiltersDifferent(oldFilters, newFilters)) {
884
+ adaptable.applyGridFiltering();
885
+ }
875
886
  if (returnAction.type == LayoutRedux.LAYOUT_SELECT ||
876
887
  returnAction.type == LayoutRedux.LAYOUT_DELETE ||
877
888
  returnAction.type == LayoutRedux.LAYOUT_SET_COLUMN_CAPTION) {
@@ -884,7 +895,7 @@ const adaptableMiddleware = (adaptable) => function (middlewareAPI) {
884
895
  // tell grid the layout has been selected
885
896
  adaptable.setLayout(currentLayout);
886
897
  }
887
- if (!((_h = adaptable.adaptableOptions.layoutOptions) === null || _h === void 0 ? void 0 : _h.autoSaveLayouts)) {
898
+ if (!((_k = adaptable.adaptableOptions.layoutOptions) === null || _k === void 0 ? void 0 : _k.autoSaveLayouts)) {
888
899
  middlewareAPI.dispatch(GridRedux.LayoutUpdateCurrentDraft(currentLayout));
889
900
  }
890
901
  }
@@ -892,7 +903,7 @@ const adaptableMiddleware = (adaptable) => function (middlewareAPI) {
892
903
  returnAction.type == LayoutRedux.LAYOUT_SAVE) {
893
904
  const actionTyped = action;
894
905
  // if autosave is false
895
- if (!((_j = adaptable.adaptableOptions.layoutOptions) === null || _j === void 0 ? void 0 : _j.autoSaveLayouts)) {
906
+ if (!((_l = adaptable.adaptableOptions.layoutOptions) === null || _l === void 0 ? void 0 : _l.autoSaveLayouts)) {
896
907
  // and the current layout is saved, make sure we also update the draft
897
908
  if (actionTyped.layout.Name === newLayoutState.CurrentLayout) {
898
909
  middlewareAPI.dispatch(GridRedux.LayoutUpdateCurrentDraft(actionTyped.layout));
@@ -901,9 +912,12 @@ const adaptableMiddleware = (adaptable) => function (middlewareAPI) {
901
912
  }
902
913
  // when changing current layout via the api, the layout should update
903
914
  if (returnAction.type == LayoutRedux.LAYOUT_SAVE) {
904
- const currentLayout = adaptable.api.layoutApi.getCurrentLayout();
905
915
  const savingLayout = returnAction.layout;
906
- if (currentLayout.Name === savingLayout.Name) {
916
+ if (previousLayout.Name === savingLayout.Name &&
917
+ previousLayout !== savingLayout &&
918
+ // objects may have changed, but have the same contents
919
+ // this prevents pivot layout from infinite set-layout
920
+ !adaptable.api.layoutApi.areLayoutsEqual(previousLayout, savingLayout)) {
907
921
  adaptable.setLayout(savingLayout);
908
922
  }
909
923
  }
@@ -22,6 +22,7 @@ export declare class AlertModule extends AdaptableModuleBase implements IModule
22
22
  private getAlertDefinitionsForCellDataChange;
23
23
  private getAlertDefinitionsForGridDataChange;
24
24
  private getBaseAlertDefinitionsForDataChange;
25
+ private isAggregationAlertTriggered;
25
26
  private isAlertPredicateTriggered;
26
27
  private isAlertDefinitionForRowChangeEvent;
27
28
  getTeamSharingAction(): TeamSharingImportInfo<AlertDefinition>;
@@ -18,6 +18,7 @@ const AlertEmptyView_1 = require("../View/Alert/AlertEmptyView");
18
18
  const AlertStatusSubPanel_1 = require("../View/Alert/AlertStatusSubPanel");
19
19
  const getObjectTagsViewItems_1 = require("./Utilities/getObjectTagsViewItems");
20
20
  const ActiveAlertsPanelItemLabel_1 = require("../View/Alert/ActiveAlertsPanelItemLabel");
21
+ const ModuleConstants_1 = require("../Utilities/Constants/ModuleConstants");
21
22
  class AlertModule extends AdaptableModuleBase_1.AdaptableModuleBase {
22
23
  constructor(api) {
23
24
  super(ModuleConstants.AlertModuleId, ModuleConstants.AlertModuleFriendlyName, 'alert', 'AlertPopup', 'Get notified when things happen in Adaptable that you need to know about', api);
@@ -215,6 +216,14 @@ class AlertModule extends AdaptableModuleBase_1.AdaptableModuleBase {
215
216
  triggeredAlerts.push(alertDefinition);
216
217
  }
217
218
  }
219
+ else if (alertDefinition.Rule.AggregatedBooleanExpression) {
220
+ const isValidExpression = this.api.queryLanguageApi.isValidAggregatedBooleanExpression(alertDefinition.Rule.AggregatedBooleanExpression, this.moduleInfo.ModuleName, `Invalid Alert boolean expression '${alertDefinition.Rule.AggregatedBooleanExpression}'`);
221
+ const isSatisfiedExpression = isValidExpression &&
222
+ this.isAggregationAlertTriggered(alertDefinition, dataChangedEvent);
223
+ if (isSatisfiedExpression) {
224
+ triggeredAlerts.push(alertDefinition);
225
+ }
226
+ }
218
227
  else {
219
228
  if (!this.isAlertDefinitionForRowChangeEvent(alertDefinition) &&
220
229
  this.isAlertPredicateTriggered(alertDefinition, dataChangedEvent, defaultNoPredicateReturn)) {
@@ -225,6 +234,17 @@ class AlertModule extends AdaptableModuleBase_1.AdaptableModuleBase {
225
234
  }
226
235
  return triggeredAlerts;
227
236
  }
237
+ isAggregationAlertTriggered(alertDefinition, dataChangedEvent) {
238
+ const changedColumn = dataChangedEvent.column.columnId;
239
+ const aggregationColumns = this.api.queryLanguageApi.getColumnsFromExpression(alertDefinition.Rule.AggregatedBooleanExpression);
240
+ if (!aggregationColumns.includes(changedColumn)) {
241
+ return false;
242
+ }
243
+ const aggregatedBooleanValue = this.api.internalApi
244
+ .getQueryLanguageService()
245
+ .computeAggregatedBooleanValue(alertDefinition.Rule.AggregatedBooleanExpression, ModuleConstants_1.AlertModuleId);
246
+ return aggregatedBooleanValue;
247
+ }
228
248
  isAlertPredicateTriggered(alert, dataChangedEvent, defaultNoPredicateReturn = false) {
229
249
  return this.api.predicateApi.handlePredicate(alert.Rule.Predicate, {
230
250
  value: dataChangedEvent.newValue,
@@ -8,9 +8,9 @@ const CalculatedColumnRedux = tslib_1.__importStar(require("../Redux/ActionsRedu
8
8
  const LoggingHelper_1 = require("../Utilities/Helpers/LoggingHelper");
9
9
  const getExpressionViewItems_1 = require("./Utilities/getExpressionViewItems");
10
10
  const CalculatedColumnWizard_1 = require("../View/CalculatedColumn/Wizard/CalculatedColumnWizard");
11
- const getCalculatedColumnSettingTags_1 = require("../View/CalculatedColumn/Utilities/getCalculatedColumnSettingTags");
12
11
  const ArrayExtensions_1 = tslib_1.__importDefault(require("../Utilities/Extensions/ArrayExtensions"));
13
12
  const getObjectTagsViewItems_1 = require("./Utilities/getObjectTagsViewItems");
13
+ const getCalculatedColumnSettingsTags_1 = require("../View/CalculatedColumn/Utilities/getCalculatedColumnSettingsTags");
14
14
  class CalculatedColumnModule extends AdaptableModuleBase_1.AdaptableModuleBase {
15
15
  constructor(api) {
16
16
  super(ModuleConstants.CalculatedColumnModuleId, ModuleConstants.CalculatedColumnFriendlyName, 'calculated-column', 'CalculatedColumnPopup', 'Create bespoke columns whose cell value is derived dynamically from an Expression', api);
@@ -69,7 +69,7 @@ class CalculatedColumnModule extends AdaptableModuleBase_1.AdaptableModuleBase {
69
69
  };
70
70
  }
71
71
  toView(calculateColumn) {
72
- const settingsTags = getCalculatedColumnSettingTags_1.getCalculatedColumnSettingTags(calculateColumn.CalculatedColumnSettings);
72
+ const settingsTags = getCalculatedColumnSettingsTags_1.getCalculatedColumnSettingsTags(calculateColumn.CalculatedColumnSettings);
73
73
  let items = [
74
74
  {
75
75
  name: 'Settings',
@@ -12,7 +12,6 @@ export declare class ExportModule extends AdaptableModuleBase implements IExport
12
12
  getModuleAdaptableObjects(): AdaptableObject[];
13
13
  getExplicitlyReferencedColumnIds(report: Report): string[];
14
14
  getReferencedNamedQueryNames(report: Report): string[];
15
- updateOldConfig(): void;
16
15
  addContextMenuItems(menuContext: ContextMenuContext): AdaptableMenuItem[] | undefined;
17
16
  export(report: Report, exportDestination: ExportDestination | string): void;
18
17
  private isCustomDestination;
@@ -9,7 +9,6 @@ const Helper_1 = require("../Utilities/Helpers/Helper");
9
9
  const ExportRedux = tslib_1.__importStar(require("../Redux/ActionsReducers/ExportRedux"));
10
10
  const GeneralConstants_1 = require("../Utilities/Constants/GeneralConstants");
11
11
  const ArrayExtensions_1 = tslib_1.__importDefault(require("../Utilities/Extensions/ArrayExtensions"));
12
- const LoggingHelper_1 = require("../Utilities/Helpers/LoggingHelper");
13
12
  const StringExtensions_1 = tslib_1.__importDefault(require("../Utilities/Extensions/StringExtensions"));
14
13
  const PopupRedux = tslib_1.__importStar(require("../Redux/ActionsReducers/PopupRedux"));
15
14
  const ObjectFactory_1 = require("../Utilities/ObjectFactory");
@@ -41,21 +40,6 @@ class ExportModule extends AdaptableModuleBase_1.AdaptableModuleBase {
41
40
  }
42
41
  return this.api.queryApi.getReferencedNamedQueryNames(report.Query.BooleanExpression);
43
42
  }
44
- updateOldConfig() {
45
- let reportsToEdit = [];
46
- this.api.exportApi.getAllReports().forEach((report) => {
47
- if (!report.Query && report.Expression) {
48
- report.Query = {
49
- BooleanExpression: report.Expression,
50
- };
51
- LoggingHelper_1.LogAdaptableWarning(`Updating incorrect Predefined Config for Report: ${report.Name}`);
52
- report.Expression = undefined;
53
- LoggingHelper_1.LogAdaptableInfo('Updating Report: ' + report.Name + ' to use existing Expression');
54
- reportsToEdit.push(report);
55
- }
56
- });
57
- this.api.exportApi.editReports(reportsToEdit);
58
- }
59
43
  addContextMenuItems(menuContext) {
60
44
  const canExport = !menuContext.isRowGroupColumn &&
61
45
  this.isModuleAvailable() &&
@@ -111,6 +111,12 @@ class FilterModule extends AdaptableModuleBase_1.AdaptableModuleBase {
111
111
  getViewProperties() {
112
112
  const api = this.api;
113
113
  return {
114
+ getSuspendAction: (columnFilter) => LayoutRedux.LayoutColumnFilterSuspend(columnFilter),
115
+ getUnSuspendAction: (columnFilter) => LayoutRedux.LayoutColumnFilterUnSuspend(columnFilter),
116
+ getCompactSuspendAction: (columnFilter) => LayoutRedux.LayoutColumnFilterSuspend(columnFilter),
117
+ getCompactUnSuspendAction: (columnFilter) => LayoutRedux.LayoutColumnFilterUnSuspend(columnFilter),
118
+ getSuspendAllAction: () => LayoutRedux.LayoutColumnFilterSuspendAll(),
119
+ getUnSuspendAllAction: () => LayoutRedux.LayoutColumnFilterUnSuspendAll(),
114
120
  getDeleteAction: LayoutRedux.LayoutColumnFilterClear,
115
121
  getCompactDeleteAction: LayoutRedux.LayoutColumnFilterClear,
116
122
  getDeleteAllAction: LayoutRedux.LayoutColumnFilterClearAll,
@@ -95,10 +95,10 @@ class FlashingCellModule extends AdaptableModuleBase_1.AdaptableModuleBase {
95
95
  const flashingCellForRow = this.api.internalApi.getAdaptableFlashingCellFor(menuContext.primaryKeyValue);
96
96
  const flashingCellForCell = this.api.internalApi.getAdaptableFlashingCellFor(menuContext.primaryKeyValue, menuContext.adaptableColumn.columnId);
97
97
  if (flashingCellForRow && flashingCellForRow.flashTarget === 'row') {
98
- items.push(this.createColumnMenuItemReduxAction('Clear Flashing Cell for Row', this.moduleInfo.Glyph, SystemRedux.SystemFlashingCellDelete(flashingCellForRow)));
98
+ items.push(this.createColumnMenuItemReduxAction('Clear Flashing Row', this.moduleInfo.Glyph, SystemRedux.SystemFlashingCellDelete(flashingCellForRow)));
99
99
  }
100
100
  else if (flashingCellForCell && flashingCellForCell.flashTarget === 'cell') {
101
- items.push(this.createColumnMenuItemReduxAction('Clear Flashing Cell for Cell', this.moduleInfo.Glyph, SystemRedux.SystemFlashingCellDelete(flashingCellForCell)));
101
+ items.push(this.createColumnMenuItemReduxAction('Clear Flashing Cell', this.moduleInfo.Glyph, SystemRedux.SystemFlashingCellDelete(flashingCellForCell)));
102
102
  }
103
103
  }
104
104
  }
@@ -93,6 +93,10 @@ export interface AdaptableModuleView {
93
93
  getCompactDeleteAction?: (abObject: AdaptableObject) => Redux.Action;
94
94
  getSuspendAction?: (abObject: AdaptableObject) => Redux.Action;
95
95
  getUnSuspendAction?: (abObject: AdaptableObject) => Redux.Action;
96
+ getCompactSuspendAction?: (abObject: AdaptableObject) => Redux.Action;
97
+ getCompactUnSuspendAction?: (abObject: AdaptableObject) => Redux.Action;
98
+ getSuspendAllAction?: () => Redux.Action;
99
+ getUnSuspendAllAction?: () => Redux.Action;
96
100
  getDeleteAllAction?: () => Redux.Action;
97
101
  emptyView?: React.FunctionComponent<{
98
102
  module: IModule;
@@ -14,6 +14,7 @@ const SaveLayoutButton_1 = require("../View/Layout/SaveLayoutButton");
14
14
  const LayoutWizard_1 = require("../View/Layout/Wizard/LayoutWizard");
15
15
  const getLayoutFilterViewItems_1 = require("./Utilities/Layout/getLayoutFilterViewItems");
16
16
  const getLayoutSortViewItems_1 = require("./Utilities/Layout/getLayoutSortViewItems");
17
+ const AggregationColumns_1 = require("../PredefinedConfig/Common/AggregationColumns");
17
18
  class LayoutModule extends AdaptableModuleBase_1.AdaptableModuleBase {
18
19
  constructor(api) {
19
20
  super(ModuleConstants.LayoutModuleId, ModuleConstants.LayoutFriendlyName, 'layout', 'LayoutPopup', 'Named sets of column visibility, order, groupings, aggregation, pivots etc.', api);
@@ -26,26 +27,6 @@ class LayoutModule extends AdaptableModuleBase_1.AdaptableModuleBase {
26
27
  }
27
28
  });
28
29
  }
29
- /*
30
- // commenting this out as it doesnt make sense we dont know which filters should be applied to which layout
31
- // for this we will jsut say they need to reapply them
32
- updateOldConfig() {
33
- // @ts-ignore ignore reading deprecated state
34
- const oldColumnFilters = this.api.filterApi.getFilterState().ColumnFilters;
35
- if (ArrayExtensions.IsNotNullOrEmpty(oldColumnFilters)) {
36
- ConsoleLogWarning(
37
- `DEPRECATED: The 'Filter.ColumnFilters' property is deprecated; use 'Layout.ColumnFilters' instead'!`
38
- );
39
-
40
- this.api.internalApi.clearColumnFilterState();
41
- const currentLayout = this.api.layoutApi.getCurrentLayout();
42
-
43
- if (ArrayExtensions.IsNullOrEmpty(currentLayout.ColumnFilters)) {
44
- this.api.layoutApi.setColumnFilter(oldColumnFilters);
45
- }
46
- }
47
- }
48
- */
49
30
  getModuleAdaptableObjects() {
50
31
  return this.api.layoutApi.getAllLayout();
51
32
  }
@@ -264,6 +245,25 @@ class LayoutModule extends AdaptableModuleBase_1.AdaptableModuleBase {
264
245
  name: 'Pivot Columns',
265
246
  values: layout.PivotColumns.map((colId) => columnIdToFriendlyName(colId)),
266
247
  },
248
+ (layout === null || layout === void 0 ? void 0 : layout.AggregationColumns) &&
249
+ Object.keys(layout === null || layout === void 0 ? void 0 : layout.AggregationColumns).length && {
250
+ name: 'Aggregation Columns',
251
+ values: Object.entries(layout === null || layout === void 0 ? void 0 : layout.AggregationColumns)
252
+ .map(([colId, aggFn]) => {
253
+ if (colId === 'Source' || colId === 'Uuid') {
254
+ return '';
255
+ }
256
+ let aggFnName = '';
257
+ if (typeof aggFn === 'string') {
258
+ aggFnName = aggFn;
259
+ }
260
+ else if (typeof aggFn === 'object' && aggFn.type === 'weightedAverage') {
261
+ aggFnName = AggregationColumns_1.WEIGHTED_AVERAGE_AGG_FN_NAME;
262
+ }
263
+ return `${aggFnName}(${columnIdToFriendlyName(colId)})`;
264
+ })
265
+ .filter(Boolean),
266
+ },
267
267
  ].filter(Boolean),
268
268
  abObject: layout,
269
269
  };
@@ -6,6 +6,21 @@ const React = tslib_1.__importStar(require("react"));
6
6
  const rebass_1 = require("rebass");
7
7
  const FormatColumnStyleWizardSection_1 = require("../../../View/FormatColumn/Wizard/FormatColumnStyleWizardSection");
8
8
  const getFormatColumnStyleViewItems = (formatColumn, api) => {
9
- return React.createElement(rebass_1.Box, { mt: 2 }, FormatColumnStyleWizardSection_1.renderFormatColumnStyleSummary(formatColumn, api));
9
+ var _a, _b;
10
+ let styleType = '';
11
+ if ((_a = formatColumn === null || formatColumn === void 0 ? void 0 : formatColumn.ColumnStyle) === null || _a === void 0 ? void 0 : _a.GradientStyle) {
12
+ styleType = 'Gradient';
13
+ }
14
+ else if ((_b = formatColumn === null || formatColumn === void 0 ? void 0 : formatColumn.ColumnStyle) === null || _b === void 0 ? void 0 : _b.PercentBarStyle) {
15
+ styleType = 'Percent Bar';
16
+ }
17
+ else {
18
+ styleType = 'Standard';
19
+ }
20
+ return (React.createElement(rebass_1.Box, { mt: 2 },
21
+ React.createElement(rebass_1.Box, { mb: 1 },
22
+ "Type: ",
23
+ styleType),
24
+ FormatColumnStyleWizardSection_1.renderFormatColumnStyleSummary(formatColumn, api)));
10
25
  };
11
26
  exports.getFormatColumnStyleViewItems = getFormatColumnStyleViewItems;
@@ -8,17 +8,21 @@ const getLayoutFilterViewItems = (layout, api) => {
8
8
  };
9
9
  return {
10
10
  name: 'Filter',
11
- values: ((_a = layout.ColumnFilters) !== null && _a !== void 0 ? _a : []).map((customFilter) => `[${columnIdToFriendlyName(customFilter.ColumnId)}: ${customFilter.Predicate.PredicateId} ${customFilter.Predicate.Inputs.map((input) => {
12
- if (typeof input === 'string') {
13
- return input;
14
- }
15
- if (typeof (input === null || input === void 0 ? void 0 : input.toString) === 'function') {
16
- return input.toString();
17
- }
18
- return '';
19
- })
20
- .filter(Boolean)
21
- .join(', ')}]`),
11
+ values: ((_a = layout.ColumnFilters) !== null && _a !== void 0 ? _a : []).map((customFilter) => {
12
+ var _a, _b;
13
+ return `[${columnIdToFriendlyName(customFilter.ColumnId)}: ${customFilter.Predicate.PredicateId} ${((_b = (_a = customFilter.Predicate) === null || _a === void 0 ? void 0 : _a.Inputs) !== null && _b !== void 0 ? _b : [])
14
+ .map((input) => {
15
+ if (typeof input === 'string') {
16
+ return input;
17
+ }
18
+ if (typeof (input === null || input === void 0 ? void 0 : input.toString) === 'function') {
19
+ return input.toString();
20
+ }
21
+ return '';
22
+ })
23
+ .filter(Boolean)
24
+ .join(', ')}]`;
25
+ }),
22
26
  };
23
27
  };
24
28
  exports.getLayoutFilterViewItems = getLayoutFilterViewItems;
@@ -5,6 +5,7 @@ export declare const ScalarQueryDocsLink: string;
5
5
  export declare const ObservableQueryDocsLink: string;
6
6
  export declare const AggregatedBooleanQueryDocsLink: string;
7
7
  export declare const AggregatedScalarQueryDocsLink: string;
8
+ export declare const CumulativeAggregatedScalarQueryDocsLink: string;
8
9
  export declare const PredicateDocsLink: string;
9
10
  export declare const PrimaryKeyDocsLink: string;
10
11
  export declare const LicenseDocsLink: string;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AdaptableOptionsDocsLink = exports.LicenseDocsLink = exports.PrimaryKeyDocsLink = exports.PredicateDocsLink = exports.AggregatedScalarQueryDocsLink = exports.AggregatedBooleanQueryDocsLink = exports.ObservableQueryDocsLink = exports.ScalarQueryDocsLink = exports.BooleanQueryDocsLink = exports.ExpressionEditorDocsLink = exports.HOST_URL_DOCS = void 0;
3
+ exports.AdaptableOptionsDocsLink = exports.LicenseDocsLink = exports.PrimaryKeyDocsLink = exports.PredicateDocsLink = exports.CumulativeAggregatedScalarQueryDocsLink = exports.AggregatedScalarQueryDocsLink = exports.AggregatedBooleanQueryDocsLink = exports.ObservableQueryDocsLink = exports.ScalarQueryDocsLink = exports.BooleanQueryDocsLink = exports.ExpressionEditorDocsLink = exports.HOST_URL_DOCS = void 0;
4
4
  exports.HOST_URL_DOCS = 'https://docs.adaptabletools.com';
5
5
  //export const HOST_URL_DOCS = 'http://localhost:3000';
6
6
  exports.ExpressionEditorDocsLink = `${exports.HOST_URL_DOCS}/guide/ui-expression-editor`;
@@ -9,6 +9,7 @@ exports.ScalarQueryDocsLink = `${exports.HOST_URL_DOCS}/guide/adaptable-ql-expre
9
9
  exports.ObservableQueryDocsLink = `${exports.HOST_URL_DOCS}/guide/adaptable-ql-expression-observable`;
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
+ exports.CumulativeAggregatedScalarQueryDocsLink = `${exports.HOST_URL_DOCS}/guide/adaptable-ql-expression-aggregation-scalar#cumulative-aggregation`;
12
13
  exports.PredicateDocsLink = `${exports.HOST_URL_DOCS}/guide/adaptable-ql-predicate`;
13
14
  exports.PrimaryKeyDocsLink = `${exports.HOST_URL_DOCS}/guide/dev-guide-tutorial-primary-key`;
14
15
  exports.LicenseDocsLink = `${exports.HOST_URL_DOCS}/guide/licensing`;
@@ -205,6 +205,9 @@ exports.DefaultAdaptableOptions = {
205
205
  maxFilterValuesToDisplay: 2000,
206
206
  systemFilters: AdaptablePredicate_1.SystemFilterPredicateIds,
207
207
  showQuickFilter: true,
208
+ showDistinctFilteredValuesOnly: false,
209
+ showClearFilterButton: false,
210
+ showSuspendFilterButton: false,
208
211
  },
209
212
  searchOptions: {
210
213
  excludeColumnFromQuickSearch: undefined,
@@ -1,9 +1,19 @@
1
1
  import { ExpressionFunction } from '../../parser/src/types';
2
+ import { BaseParameter } from './expressionFunctionUtils';
3
+ import { AggregatedScalarExpressionEvaluation } from './aggregatedScalarExpressionFunctions';
2
4
  /**
3
5
  * List of all the Aggregation Functions available in AdaptableQL
4
6
  */
5
- export declare type AggregationFunctionName = 'WHERE' | 'COL' | AggregationFunction | ComparisonFunction;
6
- declare type AggregationFunction = 'SUM';
7
+ export declare type AggregationFunctionName = 'WHERE' | 'COL' | 'GROUP_BY' | AggregationFunction | ComparisonFunction;
8
+ declare type AggregationFunction = 'SUM' | 'MIN' | 'MAX' | 'AVG';
7
9
  declare type ComparisonFunction = 'EQ' | 'NEQ' | 'LT' | 'GT' | 'LTE' | 'GTE';
10
+ export interface BooleanAggregationParameter extends BaseParameter<'aggregationBoolean', AggregationFunction> {
11
+ scalarAggregation: ScalarAggregationOperand;
12
+ conditionValue: number;
13
+ conditionFn: (aggregatedValue: number, conditionValue: number) => boolean;
14
+ }
15
+ export interface ScalarAggregationOperand extends BaseParameter<'aggregationScalar', AggregationFunction> {
16
+ value: AggregatedScalarExpressionEvaluation;
17
+ }
8
18
  export declare const aggregatedBooleanExpressionFunctions: Record<AggregationFunctionName, ExpressionFunction>;
9
19
  export {};