@adaptabletools/adaptable 11.0.0-canary.2 → 11.0.0-canary.6

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 (244) hide show
  1. package/agGrid.d.ts +1 -1
  2. package/agGrid.js +3 -3
  3. package/base.css +138 -68
  4. package/bundle.cjs.js +131 -127
  5. package/index.css +140 -68
  6. package/package.json +33 -33
  7. package/publishTimestamp.d.ts +1 -1
  8. package/publishTimestamp.js +1 -1
  9. package/src/AdaptableInterfaces/AdaptableNoCodeWizard.d.ts +7 -5
  10. package/src/AdaptableOptions/AdaptableFrameworkComponent.d.ts +1 -3
  11. package/src/AdaptableOptions/AdaptableOptions.d.ts +11 -2
  12. package/src/AdaptableOptions/AlertOptions.d.ts +82 -0
  13. package/src/AdaptableOptions/AlertOptions.js +2 -0
  14. package/src/AdaptableOptions/ContainerOptions.d.ts +2 -2
  15. package/src/AdaptableOptions/EntitlementOptions.d.ts +1 -1
  16. package/src/AdaptableOptions/FilterOptions.d.ts +1 -1
  17. package/src/AdaptableOptions/NotificationsOptions.d.ts +1 -78
  18. package/src/AdaptableOptions/QueryLanguageOptions.d.ts +3 -7
  19. package/src/AdaptableOptions/StateOptions.d.ts +2 -1
  20. package/src/AdaptableOptions/TeamSharingOptions.d.ts +2 -2
  21. package/src/AdaptableOptions/ToolPanelOptions.d.ts +0 -3
  22. package/src/AdaptableOptions/UserInterfaceOptions.d.ts +3 -3
  23. package/src/Api/AdaptableApi.d.ts +6 -0
  24. package/src/Api/AlertApi.d.ts +2 -3
  25. package/src/Api/ColumnApi.d.ts +0 -4
  26. package/src/Api/EventApi.d.ts +8 -3
  27. package/src/Api/Events/GridDataChanged.d.ts +4 -2
  28. package/src/Api/Events/SystemStatusMessageDisplayed.d.ts +1 -1
  29. package/src/Api/FreeTextColumnApi.d.ts +0 -12
  30. package/src/Api/GridApi.d.ts +5 -4
  31. package/src/Api/IPushPullApi.d.ts +1 -1
  32. package/src/Api/Implementation/AdaptableApiImpl.d.ts +2 -1
  33. package/src/Api/Implementation/AdaptableApiImpl.js +2 -0
  34. package/src/Api/Implementation/AlertApiImpl.d.ts +1 -2
  35. package/src/Api/Implementation/AlertApiImpl.js +19 -10
  36. package/src/Api/Implementation/ApiBase.d.ts +2 -0
  37. package/src/Api/Implementation/ApiBase.js +3 -0
  38. package/src/Api/Implementation/ColumnApiImpl.d.ts +0 -1
  39. package/src/Api/Implementation/ColumnApiImpl.js +0 -5
  40. package/src/Api/Implementation/DashboardApiImpl.js +1 -1
  41. package/src/Api/Implementation/FlashingCellApiImpl.js +2 -4
  42. package/src/Api/Implementation/FreeTextColumnApiImpl.d.ts +0 -5
  43. package/src/Api/Implementation/FreeTextColumnApiImpl.js +0 -9
  44. package/src/Api/Implementation/GridApiImpl.d.ts +5 -4
  45. package/src/Api/Implementation/GridApiImpl.js +4 -0
  46. package/src/Api/Implementation/InternalApiImpl.js +2 -2
  47. package/src/Api/Implementation/LayoutApiImpl.d.ts +2 -0
  48. package/src/Api/Implementation/LayoutApiImpl.js +12 -1
  49. package/src/Api/Implementation/QueryApiImpl.js +4 -1
  50. package/src/Api/Implementation/QueryLanguageApiImpl.d.ts +1 -1
  51. package/src/Api/Implementation/QueryLanguageApiImpl.js +6 -7
  52. package/src/Api/Implementation/SettingsPanelApiImpl.d.ts +7 -0
  53. package/src/Api/Implementation/SettingsPanelApiImpl.js +15 -0
  54. package/src/Api/LayoutApi.d.ts +7 -0
  55. package/src/Api/OpenFinApi.d.ts +5 -0
  56. package/src/Api/PluginsApi.d.ts +29 -0
  57. package/src/Api/QueryLanguageApi.d.ts +10 -10
  58. package/src/Api/SettingsPanelApi.d.ts +17 -0
  59. package/src/Api/SettingsPanelApi.js +2 -0
  60. package/src/Api/UserInterfaceApi.d.ts +5 -2
  61. package/src/PredefinedConfig/AlertState.d.ts +4 -6
  62. package/src/PredefinedConfig/CalculatedColumnState.d.ts +0 -1
  63. package/src/PredefinedConfig/Common/AdaptableQuery.d.ts +7 -4
  64. package/src/PredefinedConfig/Common/AdaptableQuery.js +3 -3
  65. package/src/PredefinedConfig/Common/CellHighlightInfo.d.ts +1 -12
  66. package/src/PredefinedConfig/Common/DataChangedInfo.d.ts +1 -1
  67. package/src/PredefinedConfig/Common/Enums.d.ts +0 -1
  68. package/src/PredefinedConfig/Common/Enums.js +0 -2
  69. package/src/PredefinedConfig/Common/FDC3Context.d.ts +4 -12
  70. package/src/PredefinedConfig/Common/RowHighlightInfo.d.ts +15 -0
  71. package/src/PredefinedConfig/Common/RowHighlightInfo.js +2 -0
  72. package/src/PredefinedConfig/Common/Types.d.ts +1 -1
  73. package/src/PredefinedConfig/CustomSortState.d.ts +0 -1
  74. package/src/PredefinedConfig/FlashingCellState.d.ts +5 -2
  75. package/src/PredefinedConfig/FreeTextColumnState.d.ts +1 -1
  76. package/src/PredefinedConfig/LayoutState.d.ts +0 -2
  77. package/src/PredefinedConfig/PredefinedConfig.d.ts +5 -2
  78. package/src/PredefinedConfig/SystemState.d.ts +2 -1
  79. package/src/Redux/ActionsReducers/ApplicationRedux.js +9 -3
  80. package/src/Redux/ActionsReducers/FlashingCellRedux.js +4 -8
  81. package/src/Redux/ActionsReducers/GridRedux.js +3 -1
  82. package/src/Redux/ActionsReducers/PopupRedux.js +13 -3
  83. package/src/Redux/ActionsReducers/QuickSearchRedux.js +3 -1
  84. package/src/Redux/ActionsReducers/SystemRedux.d.ts +6 -5
  85. package/src/Redux/ActionsReducers/SystemRedux.js +16 -14
  86. package/src/Redux/ActionsReducers/ThemeRedux.js +3 -1
  87. package/src/Redux/Store/AdaptableReduxLocalStorageEngine.js +1 -1
  88. package/src/Redux/Store/AdaptableReduxMerger.js +5 -5
  89. package/src/Redux/Store/AdaptableStore.js +18 -6
  90. package/src/Strategy/AlertModule.js +14 -4
  91. package/src/Strategy/ConditionalStyleModule.js +4 -0
  92. package/src/Strategy/DataChangeHistoryModule.js +1 -1
  93. package/src/Strategy/FlashingCellModule.d.ts +1 -1
  94. package/src/Strategy/FlashingCellModule.js +34 -18
  95. package/src/Strategy/FreeTextColumnModule.d.ts +2 -2
  96. package/src/Strategy/FreeTextColumnModule.js +10 -0
  97. package/src/Strategy/LayoutModule.js +1 -6
  98. package/src/Strategy/TeamSharingModule.js +1 -1
  99. package/src/Strategy/ToolPanelModule.js +5 -3
  100. package/src/Strategy/Utilities/getFlashingTargetViewItems.d.ts +1 -1
  101. package/src/Strategy/Utilities/getFlashingTargetViewItems.js +3 -1
  102. package/src/Strategy/Utilities/getFormatColumnSettingsViewItems.js +1 -1
  103. package/src/Strategy/Utilities/getRuleViewItems.d.ts +0 -1
  104. package/src/Strategy/Utilities/getRuleViewItems.js +0 -1
  105. package/src/Utilities/Defaults/DefaultAdaptableOptions.js +8 -6
  106. package/src/Utilities/ExpressionFunctions/{aggregationExpressionFunctions.d.ts → aggregatedBooleanExpressionFunctions.d.ts} +1 -1
  107. package/src/Utilities/ExpressionFunctions/{aggregationExpressionFunctions.js → aggregatedBooleanExpressionFunctions.js} +4 -4
  108. package/src/Utilities/ExpressionFunctions/aggregatedScalarExpressionFunctions.d.ts +7 -0
  109. package/src/Utilities/ExpressionFunctions/aggregatedScalarExpressionFunctions.js +42 -0
  110. package/src/Utilities/ExpressionFunctions/dateUtils.d.ts +1 -0
  111. package/src/Utilities/ExpressionFunctions/dateUtils.js +13 -0
  112. package/src/Utilities/ExpressionFunctions/deepMap.d.ts +35 -0
  113. package/src/Utilities/ExpressionFunctions/deepMap.js +283 -0
  114. package/src/Utilities/ExpressionFunctions/expressionFunctionUtils.js +1 -1
  115. package/src/Utilities/ExpressionFunctions/groupingMap.d.ts +36 -0
  116. package/src/Utilities/ExpressionFunctions/groupingMap.js +104 -0
  117. package/src/Utilities/ExpressionFunctions/observableExpressionFunctions.js +2 -3
  118. package/src/Utilities/ExpressionFunctions/scalarExpressionFunctions.js +13 -4
  119. package/src/Utilities/Extensions/StringExtensions.js +1 -1
  120. package/src/Utilities/Helpers/AdaptableHelper.js +3 -2
  121. package/src/Utilities/Helpers/CalendarHelper.js +220 -55
  122. package/src/Utilities/Interface/MessagePopups.d.ts +6 -2
  123. package/src/Utilities/ObjectFactory.js +5 -2
  124. package/src/Utilities/Services/AlertService.js +3 -3
  125. package/src/Utilities/Services/DataService.js +6 -1
  126. package/src/Utilities/Services/Interface/IQueryLanguageService.d.ts +2 -2
  127. package/src/Utilities/Services/LicenseService.js +1 -1
  128. package/src/Utilities/Services/QueryLanguageService.d.ts +2 -2
  129. package/src/Utilities/Services/QueryLanguageService.js +21 -16
  130. package/src/Utilities/Services/ReportService.js +7 -3
  131. package/src/Utilities/Services/TeamSharingService.js +5 -3
  132. package/src/View/AdaptablePopover/index.js +6 -1
  133. package/src/View/AdaptableView.js +1 -1
  134. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/ColumnsList.js +5 -1
  135. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/ConfigurationForm.js +5 -2
  136. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/index.js +4 -1
  137. package/src/View/AdaptableWizardView/helper.js +5 -3
  138. package/src/View/Alert/Wizard/AlertButtonsEditor.d.ts +1 -1
  139. package/src/View/Alert/Wizard/AlertButtonsEditor.js +5 -1
  140. package/src/View/Alert/Wizard/AlertRulesWizardSection.d.ts +1 -1
  141. package/src/View/Alert/Wizard/AlertWizard.js +2 -2
  142. package/src/View/Alert/Wizard/BaseAlertRulesWizardSection.d.ts +2 -3
  143. package/src/View/Alert/Wizard/BaseAlertRulesWizardSection.js +3 -5
  144. package/src/View/Alert/Wizard/BaseAlertScopeWizardSection.js +3 -2
  145. package/src/View/Alert/Wizard/isValidAlertRules.js +3 -3
  146. package/src/View/CalculatedColumn/Wizard/CalculatedColumnWizard.js +17 -6
  147. package/src/View/CellSummary/CellSummaryViewPanel.js +1 -2
  148. package/src/View/Components/AdaptableObjectList/AdaptableObjectList.js +5 -2
  149. package/src/View/Components/EntityRulesEditor/index.js +9 -9
  150. package/src/View/Components/FilterForm/FilterForm.js +0 -2
  151. package/src/View/Components/FilterForm/QuickFilterForm.js +8 -7
  152. package/src/View/Components/FilterForm/getDefaultColumnFilterPredicate.d.ts +1 -1
  153. package/src/View/Components/ModuleValueSelector/index.js +1 -1
  154. package/src/View/Components/Panels/PanelWithImage.d.ts +1 -1
  155. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopup.d.ts +0 -3
  156. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopup.js +45 -87
  157. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupDialog.d.ts +11 -0
  158. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupDialog.js +78 -0
  159. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupModuleView.d.ts +3 -1
  160. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupModuleView.js +19 -6
  161. package/src/View/Components/Popups/AdaptablePopup/Navigation.d.ts +1 -3
  162. package/src/View/Components/Popups/AdaptablePopup/Navigation.js +5 -13
  163. package/src/View/Components/Popups/AdaptablePopup/TopBar.js +5 -4
  164. package/src/View/Components/Popups/AdaptablePopup/useMenuItems.d.ts +2 -0
  165. package/src/View/Components/Popups/AdaptablePopup/useMenuItems.js +44 -0
  166. package/src/View/Components/Popups/AdaptablePopupConfirmation.js +3 -1
  167. package/src/View/Components/Popups/AdaptablePopupPrompt.d.ts +5 -12
  168. package/src/View/Components/Popups/AdaptablePopupPrompt.js +38 -37
  169. package/src/View/Components/Popups/AdaptablePopupTeamSharing.js +4 -1
  170. package/src/View/Components/ScopeComponent.js +4 -1
  171. package/src/View/Components/SharedProps/ModuleViewPopupProps.d.ts +1 -1
  172. package/src/View/Components/ToolPanel/AdaptableToolPanel.js +1 -1
  173. package/src/View/Components/ToolPanel/CustomToolPanelContent.js +6 -2
  174. package/src/View/Components/ToolPanel/ToolPanelPopup.js +7 -5
  175. package/src/View/Components/ToolPanel/ToolPanelWrapper.js +1 -1
  176. package/src/View/Components/ValueSelector/index.d.ts +2 -1
  177. package/src/View/Components/ValueSelector/index.js +5 -5
  178. package/src/View/ConditionalStyle/Wizard/ConditionalStyleRuleWizardSection.js +2 -2
  179. package/src/View/ConditionalStyle/Wizard/ConditionalStyleSettingsWizardSettings.d.ts +8 -0
  180. package/src/View/ConditionalStyle/Wizard/ConditionalStyleSettingsWizardSettings.js +27 -0
  181. package/src/View/ConditionalStyle/Wizard/ConditionalStyleWizard.js +17 -5
  182. package/src/View/CustomSort/Wizard/CustomSortValuesWizardSection.js +3 -1
  183. package/src/View/CustomSort/Wizard/CustomSortWizard.js +17 -5
  184. package/src/View/Dashboard/CustomToolbarWrapper.js +5 -1
  185. package/src/View/Dashboard/Dashboard.js +5 -5
  186. package/src/View/Dashboard/DashboardPopup.js +8 -6
  187. package/src/View/DataChangeHistory/DataChangeHistoryGrid.js +2 -1
  188. package/src/View/Export/Wizard/NewReportWizard.js +13 -3
  189. package/src/View/Export/Wizard/ReportColumnTypeWizard.js +3 -1
  190. package/src/View/Export/Wizard/ReportRowTypeWizard.js +3 -1
  191. package/src/View/Filter/FilterViewPanel.d.ts +1 -4
  192. package/src/View/Filter/FilterViewPanel.js +1 -3
  193. package/src/View/FlashingCell/Wizard/FlashingCellRulesWizardSection.js +17 -26
  194. package/src/View/FlashingCell/Wizard/FlashingCellScopeWizardSection.js +19 -2
  195. package/src/View/FlashingCell/Wizard/FlashingCellSettingsWizardSection.js +20 -5
  196. package/src/View/FlashingCell/Wizard/FlashingCellWizard.js +2 -2
  197. package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.js +2 -2
  198. package/src/View/FormatColumn/Wizard/FormatColumnWizard.js +11 -6
  199. package/src/View/FreeTextColumn/FreeTextColumnSummary.js +1 -2
  200. package/src/View/FreeTextColumn/Wizard/FreeTextColumnWizard.js +12 -5
  201. package/src/View/GridInfo/AdaptableOptionsComponent.js +4 -1
  202. package/src/View/Layout/Wizard/LayoutEditor/index.js +5 -1
  203. package/src/View/Layout/Wizard/LayoutEditorWizard.js +7 -1
  204. package/src/View/PlusMinus/Wizard/PlusMinusWizard.js +8 -2
  205. package/src/View/Query/ExpandedQueryPopup.js +9 -2
  206. package/src/View/Query/QueryViewPanel.js +15 -10
  207. package/src/View/Query/Wizard/NamedQueryWizard.js +6 -4
  208. package/src/View/QuickSearch/QuickSearchPopup.js +3 -3
  209. package/src/View/QuickSearch/useQuickSearchDebounced.js +1 -1
  210. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsSummary.js +12 -2
  211. package/src/View/Schedule/Wizard/ScheduleWizard.js +14 -14
  212. package/src/View/SpecialColumnSettingsWizardStep.js +1 -1
  213. package/src/View/UIHelper.js +4 -1
  214. package/src/View/Wizard/AdaptableWizard.js +13 -4
  215. package/src/View/Wizard/Interface/IAdaptableWizard.d.ts +2 -0
  216. package/src/View/Wizard/OnePageAdaptableWizard.js +6 -2
  217. package/src/agGrid/Adaptable.d.ts +2 -5
  218. package/src/agGrid/Adaptable.js +127 -75
  219. package/src/agGrid/agGridHelper.js +3 -8
  220. package/src/agGrid/agGridMenuHelper.js +5 -9
  221. package/src/agGrid/editors/AdaptableDateEditor/index.js +1 -1
  222. package/src/agGrid/editors/AdaptableNumberEditor/index.js +1 -1
  223. package/src/components/ApplicationIcon.d.ts +1 -0
  224. package/src/components/ApplicationIcon.js +2 -2
  225. package/src/components/Dashboard/Dashboard.js +4 -1
  226. package/src/components/Dashboard/DashboardManager.d.ts +5 -3
  227. package/src/components/Dashboard/DashboardManager.js +33 -27
  228. package/src/components/Dropdown/index.js +8 -1
  229. package/src/components/DropdownButton/renderItem.js +1 -1
  230. package/src/components/ExpressionEditor/EditorInputReactive.d.ts +1 -1
  231. package/src/components/ExpressionEditor/EditorInputReactive.js +4 -2
  232. package/src/components/ExpressionEditor/ExpressionFunctionDocumentation.js +4 -1
  233. package/src/components/ExpressionEditor/index.d.ts +1 -1
  234. package/src/components/ExpressionEditor/index.js +12 -5
  235. package/src/components/FormLayout/index.js +1 -1
  236. package/src/components/OverlayTrigger/Overlay.js +1 -1
  237. package/src/components/SizedContainer/index.js +7 -1
  238. package/src/components/WindowModal/WindowModal.js +4 -1
  239. package/src/metamodel/adaptable.metamodel.d.ts +75 -24
  240. package/src/metamodel/adaptable.metamodel.js +223 -115
  241. package/src/types.d.ts +6 -3
  242. package/themes/dark.css +4 -4
  243. package/version.d.ts +1 -1
  244. package/version.js +1 -1
@@ -0,0 +1,283 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DeepMap = void 0;
4
+ const SORT_ASC_REVISION = (p1, p2) => sortAscending(p1.revision, p2.revision);
5
+ class DeepMap {
6
+ constructor(initial) {
7
+ this.map = new Map();
8
+ this.length = 0;
9
+ this.revision = 0;
10
+ this.visit = (fn) => {
11
+ this.map.forEach((_, k) => this.visitKey(k, this.map, [], fn));
12
+ };
13
+ this.visitDepthFirst = (fn) => {
14
+ this.visitWithNext([], fn);
15
+ };
16
+ this.visitWithNext = (parentKeys, fn, currentMap = this.map) => {
17
+ if (!currentMap) {
18
+ return;
19
+ }
20
+ let i = 0;
21
+ currentMap.forEach((_, key) => {
22
+ const pair = currentMap.get(key);
23
+ if (!pair) {
24
+ return;
25
+ }
26
+ const { map } = pair;
27
+ const keys = [...parentKeys, key];
28
+ const next = map ? () => this.visitWithNext(keys, fn, map) : undefined;
29
+ if (pair.hasOwnProperty('value')) {
30
+ fn(pair.value, keys, i, next);
31
+ i++;
32
+ }
33
+ else {
34
+ next === null || next === void 0 ? void 0 : next();
35
+ }
36
+ });
37
+ };
38
+ if (initial) {
39
+ initial.forEach((entry) => {
40
+ const [keys, value] = entry;
41
+ this.set(keys, value);
42
+ });
43
+ }
44
+ }
45
+ static clone(map) {
46
+ const clone = new DeepMap();
47
+ map.visit((pair, keys) => {
48
+ clone.set(keys, pair.value);
49
+ });
50
+ return clone;
51
+ }
52
+ set(keys, value) {
53
+ let currentMap = this.map;
54
+ if (!keys.length) {
55
+ throw `Cannot set given keys - please provide a non-empty keys array.`;
56
+ // currentMap.set((EMPTY_KEY as unknown) as K, { value });
57
+ // this.length++;
58
+ // return this;
59
+ }
60
+ for (let i = 0, len = keys.length; i < len; i++) {
61
+ const key = keys[i];
62
+ const last = i === len - 1;
63
+ if (last) {
64
+ const pair = currentMap.has(key) ? currentMap.get(key) : {};
65
+ pair.revision = this.revision++;
66
+ pair.value = value;
67
+ currentMap.set(key, pair);
68
+ this.length++;
69
+ }
70
+ else {
71
+ const pair = currentMap.has(key) ? currentMap.get(key) : {};
72
+ if (!pair.map) {
73
+ pair.map = new Map();
74
+ currentMap.set(key, pair);
75
+ }
76
+ currentMap = pair.map;
77
+ }
78
+ }
79
+ return this;
80
+ }
81
+ get(keys) {
82
+ var _a;
83
+ let currentMap = this.map;
84
+ if (!keys.length) {
85
+ throw `Cannot get given keys - please provide a non-empty keys array.`;
86
+ // return currentMap.get((EMPTY_KEY as unknown) as K)?.value;
87
+ }
88
+ for (let i = 0, len = keys.length; i < len; i++) {
89
+ const key = keys[i];
90
+ const last = i === len - 1;
91
+ if (last) {
92
+ return (_a = currentMap.get(key)) === null || _a === void 0 ? void 0 : _a.value;
93
+ }
94
+ else {
95
+ const pair = currentMap.get(key);
96
+ if (!pair || !pair.map) {
97
+ return;
98
+ }
99
+ currentMap = pair.map;
100
+ }
101
+ }
102
+ return;
103
+ }
104
+ get size() {
105
+ return this.length;
106
+ }
107
+ clear() {
108
+ const clearMap = (map) => {
109
+ map.forEach((value, _key) => {
110
+ const { map } = value;
111
+ if (map) {
112
+ clearMap(map);
113
+ }
114
+ });
115
+ map.clear();
116
+ };
117
+ clearMap(this.map);
118
+ this.length = 0;
119
+ this.revision = 0;
120
+ }
121
+ delete(keys) {
122
+ keys = [...keys];
123
+ let currentMap = this.map;
124
+ if (!keys.length) {
125
+ throw `Cannot delete given keys - please provide a non-empty keys array.`;
126
+ // if (currentMap.has(EMPTY_KEY as unknown as K)) {
127
+ // this.length--;
128
+ // }
129
+ // return currentMap.delete((EMPTY_KEY as unknown) as K);
130
+ }
131
+ let maps = [currentMap];
132
+ let result = false;
133
+ for (let i = 0, len = keys.length; i < len; i++) {
134
+ const key = keys[i];
135
+ const last = i === len - 1;
136
+ if (last) {
137
+ const pair = currentMap.get(key);
138
+ if (pair) {
139
+ if (pair.hasOwnProperty('value')) {
140
+ delete pair.value;
141
+ delete pair.revision;
142
+ result = true;
143
+ this.length--;
144
+ }
145
+ if (pair.map && pair.map.size === 0) {
146
+ delete pair.map;
147
+ }
148
+ if (!pair.map) {
149
+ // pair is empty, so we can remove it altogether
150
+ currentMap.delete(key);
151
+ }
152
+ }
153
+ break;
154
+ }
155
+ else {
156
+ const pair = currentMap.get(key);
157
+ if (!pair || !pair.map) {
158
+ result = false;
159
+ break;
160
+ }
161
+ currentMap = pair.map;
162
+ maps.push(currentMap);
163
+ }
164
+ }
165
+ while (maps.length) {
166
+ let map = maps.pop();
167
+ let key = keys.pop();
168
+ if (key && (map === null || map === void 0 ? void 0 : map.size) === 0) {
169
+ let parentMap = maps[maps.length - 1];
170
+ let pair = parentMap === null || parentMap === void 0 ? void 0 : parentMap.get(key);
171
+ if (pair) {
172
+ // pair.map === map ; which can be deleted
173
+ delete pair.map;
174
+ if (!pair.hasOwnProperty('value')) {
175
+ // whole pair can be successfully deleted from parentMap
176
+ parentMap.delete(key);
177
+ }
178
+ }
179
+ }
180
+ }
181
+ return result;
182
+ }
183
+ has(keys) {
184
+ let currentMap = this.map;
185
+ if (!keys.length) {
186
+ throw `Cannot find existing given keys - please provide a non-empty keys array.`;
187
+ // return (
188
+ // currentMap.has((EMPTY_KEY as unknown) as K) &&
189
+ // currentMap.get((EMPTY_KEY as unknown) as K)?.value !== undefined
190
+ // );
191
+ }
192
+ for (let i = 0, len = keys.length; i < len; i++) {
193
+ const key = keys[i];
194
+ const last = i === len - 1;
195
+ if (last) {
196
+ const pair = currentMap.get(key);
197
+ return !!pair && pair.hasOwnProperty('value');
198
+ }
199
+ else {
200
+ const pair = currentMap.get(key);
201
+ if (!pair || !pair.map) {
202
+ return false;
203
+ }
204
+ currentMap = pair.map;
205
+ }
206
+ }
207
+ return false;
208
+ }
209
+ visitKey(key, currentMap, parentKeys, fn) {
210
+ const pair = currentMap.get(key);
211
+ if (!pair) {
212
+ return;
213
+ }
214
+ const { map } = pair;
215
+ const keys = [...parentKeys, key];
216
+ const next = once(() => {
217
+ if (map) {
218
+ map.forEach((_, k) => {
219
+ this.visitKey(k, map, keys, fn);
220
+ });
221
+ }
222
+ });
223
+ if (pair.hasOwnProperty('value')) {
224
+ fn(pair, keys, next);
225
+ }
226
+ // if it was called by fn, it won't be called again, as it's once-d
227
+ next();
228
+ }
229
+ getArray(fn) {
230
+ const result = [];
231
+ this.visit((pair, keys) => {
232
+ result.push(fn(Object.assign(Object.assign({}, pair), { keys })));
233
+ });
234
+ return result;
235
+ }
236
+ values() {
237
+ return this.sortedIterator((pair) => pair.value);
238
+ }
239
+ keys() {
240
+ const keys = this.sortedIterator((pair) => pair.keys);
241
+ return keys;
242
+ }
243
+ entries() {
244
+ return this.sortedIterator((pair) => [pair.keys, pair.value]);
245
+ }
246
+ topDownEntries() {
247
+ return this.getArray((pair) => [pair.keys, pair.value]);
248
+ }
249
+ topDownKeys() {
250
+ return this.getArray((pair) => pair.keys);
251
+ }
252
+ topDownValues() {
253
+ return this.getArray((pair) => pair.value);
254
+ }
255
+ sortedIterator(fn) {
256
+ const result = [];
257
+ this.visit((pair, keys) => {
258
+ result.push(Object.assign(Object.assign({}, pair), { keys }));
259
+ });
260
+ result.sort(SORT_ASC_REVISION);
261
+ function* makeIterator() {
262
+ for (let i = 0, len = result.length; i < len; i++) {
263
+ yield fn(result[i]);
264
+ }
265
+ }
266
+ return makeIterator();
267
+ }
268
+ }
269
+ exports.DeepMap = DeepMap;
270
+ function once(fn) {
271
+ let called = false;
272
+ let result = null;
273
+ const onceFn = () => {
274
+ if (called) {
275
+ return result;
276
+ }
277
+ called = true;
278
+ result = fn();
279
+ return result;
280
+ };
281
+ return onceFn;
282
+ }
283
+ const sortAscending = (a, b) => a - b;
@@ -5,7 +5,7 @@ const tslib_1 = require("tslib");
5
5
  const ExpressionEvaluationError_1 = require("../../parser/src/ExpressionEvaluationError");
6
6
  const StringExtensions_1 = tslib_1.__importDefault(require("../Extensions/StringExtensions"));
7
7
  const operators_1 = require("rxjs/operators");
8
- const toNumber_1 = tslib_1.__importDefault(require("lodash-es/toNumber"));
8
+ const toNumber_1 = tslib_1.__importDefault(require("lodash/toNumber"));
9
9
  const evaluator_1 = require("../../parser/src/evaluator");
10
10
  // string functions may be case (in)sensitive, see internalApi.isTextComparisonCaseSensitive()
11
11
  // if case is insensitive, we convert ALL involved strings to lower case
@@ -0,0 +1,36 @@
1
+ import { DeepMap } from './deepMap';
2
+ export declare type GroupKeyType<T extends any = any> = T;
3
+ export declare type GroupBy<DataType, KeyType> = {
4
+ field: keyof DataType;
5
+ toKey?: (value: any, data: DataType) => GroupKeyType<KeyType>;
6
+ column?: string;
7
+ };
8
+ export declare type GroupParams<DataType, KeyType> = {
9
+ groupBy: GroupBy<DataType, KeyType>[];
10
+ defaultToKey?: (value: any, item: DataType) => GroupKeyType<KeyType>;
11
+ reducers?: Record<string, DataSourceAggregationReducer<DataType, any>>;
12
+ };
13
+ export declare type DataSourceAggregationReducer<T, AggregationResultType> = {
14
+ name?: string;
15
+ field?: keyof T;
16
+ initialValue?: AggregationResultType;
17
+ getter?: (data: T) => any;
18
+ reducer: string | ((accumulator: any, value: any, data: T) => AggregationResultType | any);
19
+ done?: (accumulatedValue: AggregationResultType | any, array: T[]) => AggregationResultType;
20
+ };
21
+ export declare type DataGroupResult<DataType, KeyType extends any> = {
22
+ deepMap: DeepMap<GroupKeyType<KeyType>, DeepMapGroupValueType<DataType, KeyType>>;
23
+ groupParams: GroupParams<DataType, KeyType>;
24
+ initialData: DataType[];
25
+ reducerResults?: Record<string, AggregationReducerResult>;
26
+ };
27
+ export declare type DeepMapGroupValueType<DataType, KeyType> = {
28
+ items: DataType[];
29
+ commonData?: Partial<DataType>;
30
+ reducerResults: Record<string, AggregationReducerResult>;
31
+ };
32
+ export declare type AggregationReducerResult<AggregationResultType extends any = any> = {
33
+ value: AggregationResultType;
34
+ id: string;
35
+ };
36
+ export declare function group<DataType, KeyType = any>(groupParams: GroupParams<DataType, KeyType>, data: DataType[]): DataGroupResult<DataType, KeyType>;
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.group = void 0;
4
+ const deepMap_1 = require("./deepMap");
5
+ function DEFAULT_TO_KEY(value) {
6
+ return value;
7
+ }
8
+ function group(groupParams, data) {
9
+ const { groupBy, defaultToKey = DEFAULT_TO_KEY, reducers } = groupParams;
10
+ const groupByLength = groupBy.length;
11
+ const deepMap = new deepMap_1.DeepMap();
12
+ let currentGroupKeys = [];
13
+ const initialReducerValue = initReducers(reducers);
14
+ const globalReducerResults = Object.assign({}, initialReducerValue);
15
+ for (let i = 0, len = data.length; i < len; i++) {
16
+ let item = data[i];
17
+ for (let groupByIndex = 0; groupByIndex < groupByLength; groupByIndex++) {
18
+ const { field: groupByProperty, toKey: groupToKey } = groupBy[groupByIndex];
19
+ const key = (groupToKey || defaultToKey)(item[groupByProperty], item);
20
+ currentGroupKeys.push(key);
21
+ if (!deepMap.has(currentGroupKeys)) {
22
+ const deepMapGroupValue = {
23
+ items: [],
24
+ reducerResults: Object.assign({}, initialReducerValue),
25
+ };
26
+ deepMap.set(currentGroupKeys, deepMapGroupValue);
27
+ }
28
+ const { items: currentGroupItems, reducerResults } = deepMap.get(currentGroupKeys);
29
+ currentGroupItems.push(item);
30
+ if (reducers) {
31
+ computeReducersFor(item, reducers, reducerResults);
32
+ }
33
+ }
34
+ if (reducers) {
35
+ computeReducersFor(item, reducers, globalReducerResults);
36
+ }
37
+ currentGroupKeys.length = 0;
38
+ }
39
+ if (reducers) {
40
+ deepMap.visitDepthFirst((deepMapValue, _keys, _indexInGroup, next) => {
41
+ completeReducers(reducers, deepMapValue.reducerResults, deepMapValue.items);
42
+ next === null || next === void 0 ? void 0 : next();
43
+ });
44
+ }
45
+ if (reducers) {
46
+ completeReducers(reducers, globalReducerResults, data);
47
+ }
48
+ const result = {
49
+ deepMap,
50
+ groupParams,
51
+ initialData: data,
52
+ reducerResults: globalReducerResults,
53
+ };
54
+ return result;
55
+ }
56
+ exports.group = group;
57
+ function initReducers(reducers) {
58
+ if (!reducers || !Object.keys(reducers).length) {
59
+ return {};
60
+ }
61
+ const result = {};
62
+ for (let key in reducers)
63
+ if (reducers.hasOwnProperty(key)) {
64
+ result[key] = reducers[key].initialValue;
65
+ }
66
+ return result;
67
+ }
68
+ /**
69
+ *
70
+ * This fn mutates the reducerResults array!!!
71
+ *
72
+ * @param data data item
73
+ * @param reducers an array of reducers
74
+ * @param reducerResults the results on which to operate
75
+ *
76
+ */
77
+ function computeReducersFor(data, reducers, reducerResults) {
78
+ var _a, _b;
79
+ if (!reducers || !Object.keys(reducers).length) {
80
+ return;
81
+ }
82
+ for (let key in reducers)
83
+ if (reducers.hasOwnProperty(key)) {
84
+ const reducer = reducers[key];
85
+ if (typeof reducer.reducer !== 'function') {
86
+ continue;
87
+ }
88
+ const currentValue = reducerResults[key];
89
+ const value = reducer.field ? data[reducer.field] : (_b = (_a = reducer.getter) === null || _a === void 0 ? void 0 : _a.call(reducer, data)) !== null && _b !== void 0 ? _b : null;
90
+ reducerResults[key] = reducer.reducer(currentValue, value, data);
91
+ }
92
+ }
93
+ function completeReducers(reducers, reducerResults, items) {
94
+ if (reducers) {
95
+ for (let key in reducers)
96
+ if (reducers.hasOwnProperty(key)) {
97
+ const reducer = reducers[key];
98
+ if (reducer.done) {
99
+ reducerResults[key] = reducer.done(reducerResults[key], items);
100
+ }
101
+ }
102
+ }
103
+ return reducerResults;
104
+ }
@@ -4,7 +4,7 @@ exports.observableExpressionFunctions = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const rxjs_1 = require("rxjs");
6
6
  const operators_1 = require("rxjs/operators");
7
- const parseInt_1 = tslib_1.__importDefault(require("lodash-es/parseInt"));
7
+ const parseInt_1 = tslib_1.__importDefault(require("lodash/parseInt"));
8
8
  const ExpressionEvaluationError_1 = require("../../parser/src/ExpressionEvaluationError");
9
9
  const expressionFunctionUtils_1 = require("./expressionFunctionUtils");
10
10
  // numeric value(digits) followed by a single 's', 'm' or 'h' letter (case insensitive)
@@ -417,8 +417,7 @@ const getSlidingTimeframe$ = (source$, timeframeDuration, onTimeframeEnter, onTi
417
417
  }));
418
418
  };
419
419
  const getMaxTimeframeSize = (expressionValue, context) => {
420
- let maxTimeframeSize = context.api.internalApi.getAdaptableOptions().queryLanguageOptions
421
- .maxTimeframeSize;
420
+ let maxTimeframeSize = context.api.internalApi.getAdaptableOptions().queryLanguageOptions.maxTimeframeSize;
422
421
  if (maxTimeframeSize > SYSTEM_MAX_TIMEFRAME_SIZE) {
423
422
  maxTimeframeSize = SYSTEM_MAX_TIMEFRAME_SIZE;
424
423
  }
@@ -17,6 +17,7 @@ const differenceInWeeks_1 = tslib_1.__importDefault(require("date-fns/difference
17
17
  const differenceInMonths_1 = tslib_1.__importDefault(require("date-fns/differenceInMonths"));
18
18
  const differenceInYears_1 = tslib_1.__importDefault(require("date-fns/differenceInYears"));
19
19
  const expressionFunctionUtils_1 = require("./expressionFunctionUtils");
20
+ const dateUtils_1 = require("./dateUtils");
20
21
  exports.scalarExpressionFunctions = {
21
22
  ADD: {
22
23
  handler(args) {
@@ -222,7 +223,9 @@ exports.scalarExpressionFunctions = {
222
223
  },
223
224
  DIFF_DAYS: {
224
225
  handler(args) {
225
- return differenceInDays_1.default(args[0], args[1]);
226
+ const [first, second] = dateUtils_1.normalizeDateParams(args);
227
+ const result = differenceInDays_1.default(first, second);
228
+ return isNaN(result) ? '' : result;
226
229
  },
227
230
  description: 'Returns the difference in days between 2 dates',
228
231
  signatures: ['DIFF_DAYS(a: date, b: date)'],
@@ -230,7 +233,9 @@ exports.scalarExpressionFunctions = {
230
233
  },
231
234
  DIFF_WEEKS: {
232
235
  handler(args) {
233
- return differenceInWeeks_1.default(args[0], args[1]);
236
+ const [first, second] = dateUtils_1.normalizeDateParams(args);
237
+ const result = differenceInWeeks_1.default(first, second);
238
+ return isNaN(result) ? '' : result;
234
239
  },
235
240
  description: 'Returns the difference in weeks between 2 dates',
236
241
  signatures: ['DIFF_WEEKS(a: date, b: date)'],
@@ -238,7 +243,9 @@ exports.scalarExpressionFunctions = {
238
243
  },
239
244
  DIFF_MONTHS: {
240
245
  handler(args) {
241
- return differenceInMonths_1.default(args[0], args[1]);
246
+ const [first, second] = dateUtils_1.normalizeDateParams(args);
247
+ const result = differenceInMonths_1.default(first, second);
248
+ return isNaN(result) ? '' : result;
242
249
  },
243
250
  description: 'Returns the difference in months between 2 dates',
244
251
  signatures: ['DIFF_MONTHS(a: date, b: date)'],
@@ -246,7 +253,9 @@ exports.scalarExpressionFunctions = {
246
253
  },
247
254
  DIFF_YEARS: {
248
255
  handler(args) {
249
- return differenceInYears_1.default(args[0], args[1]);
256
+ const [first, second] = dateUtils_1.normalizeDateParams(args);
257
+ const result = differenceInYears_1.default(first, second);
258
+ return isNaN(result) ? '' : result;
250
259
  },
251
260
  description: 'Returns the difference in years between 2 dates',
252
261
  signatures: ['DIFF_YEARS(a: date, b: date)'],
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.StringExtensions = exports.IsNumeric = exports.ReplaceEmptySpacesWithUnderscore = exports.Humanize = exports.CapitaliseFirstLetter = exports.AbbreviateString = exports.NotIncludes = exports.Includes = exports.ToLowerCase = exports.RemoveTrailingComma = exports.CamelCaseToHumanText = exports.IsNotNullOrEmptyOrWhiteSpace = exports.IsNullOrEmptyOrWhiteSpace = exports.IsNotNullOrEmpty = exports.IsNullOrEmpty = exports.IsNotEmpty = exports.IsEmpty = exports.IsNotNull = exports.IsNull = void 0;
4
4
  const tslib_1 = require("tslib");
5
- const startCase_1 = tslib_1.__importDefault(require("lodash-es/startCase"));
5
+ const startCase_1 = tslib_1.__importDefault(require("lodash/startCase"));
6
6
  function IsNull(stringToCheck) {
7
7
  return stringToCheck == null || stringToCheck == undefined;
8
8
  }
@@ -2,8 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AdaptableHelper = exports.addAdaptableObjectUuidAndSource = exports.runAdaptableComparerFunction = exports.checkAdaptableOptions = exports.getAppropriateAccessLevel = exports.AdaptableObjectExistsInState = exports.checkValidPrimaryKey = exports.initPredefinedConfigWithUuids = exports.assignAdaptableOptions = void 0;
4
4
  const tslib_1 = require("tslib");
5
- const cloneDeepWith_1 = tslib_1.__importDefault(require("lodash-es/cloneDeepWith"));
6
- const isPlainObject_1 = tslib_1.__importDefault(require("lodash-es/isPlainObject"));
5
+ const cloneDeepWith_1 = tslib_1.__importDefault(require("lodash/cloneDeepWith"));
6
+ const isPlainObject_1 = tslib_1.__importDefault(require("lodash/isPlainObject"));
7
7
  const LoggingHelper_1 = require("./LoggingHelper");
8
8
  const Uuid_1 = require("../../PredefinedConfig/Uuid");
9
9
  const DefaultAdaptableOptions_1 = require("../Defaults/DefaultAdaptableOptions");
@@ -13,6 +13,7 @@ function assignAdaptableOptions(adaptableOptions) {
13
13
  returnedAdaptableOptions.adaptableStateKey = (_a = returnedAdaptableOptions.adaptableStateKey) !== null && _a !== void 0 ? _a : returnedAdaptableOptions.adaptableId;
14
14
  returnedAdaptableOptions.layoutOptions = Object.assign({}, DefaultAdaptableOptions_1.DefaultAdaptableOptions.layoutOptions, adaptableOptions.layoutOptions);
15
15
  returnedAdaptableOptions.notificationsOptions = Object.assign({}, DefaultAdaptableOptions_1.DefaultAdaptableOptions.notificationsOptions, adaptableOptions.notificationsOptions);
16
+ returnedAdaptableOptions.alertOptions = Object.assign({}, DefaultAdaptableOptions_1.DefaultAdaptableOptions.alertOptions, adaptableOptions.alertOptions);
16
17
  returnedAdaptableOptions.flashingCellOptions = Object.assign({}, DefaultAdaptableOptions_1.DefaultAdaptableOptions.flashingCellOptions, adaptableOptions.flashingCellOptions);
17
18
  returnedAdaptableOptions.entitlementOptions = Object.assign({}, DefaultAdaptableOptions_1.DefaultAdaptableOptions.entitlementOptions, adaptableOptions.entitlementOptions);
18
19
  returnedAdaptableOptions.dashboardOptions = Object.assign({}, DefaultAdaptableOptions_1.DefaultAdaptableOptions.dashboardOptions, adaptableOptions.dashboardOptions);