@adaptabletools/adaptable 18.0.0-canary.8 → 18.0.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 (439) hide show
  1. package/base.css +18 -20
  2. package/base.css.map +1 -1
  3. package/index.css +22 -20
  4. package/index.css.map +1 -1
  5. package/package.json +1 -1
  6. package/src/AdaptableInterfaces/IAdaptable.d.ts +10 -4
  7. package/src/AdaptableOptions/ActionColumnOptions.d.ts +3 -2
  8. package/src/AdaptableOptions/AdaptableFrameworkComponent.d.ts +3 -0
  9. package/src/AdaptableOptions/AdaptableOptions.d.ts +15 -14
  10. package/src/AdaptableOptions/AdaptablePlugin.d.ts +2 -0
  11. package/src/AdaptableOptions/AdaptablePlugin.js +2 -0
  12. package/src/AdaptableOptions/ColumnFilterOptions.d.ts +7 -0
  13. package/src/AdaptableOptions/ColumnMenuOptions.d.ts +94 -0
  14. package/src/AdaptableOptions/ColumnOptions.d.ts +9 -4
  15. package/src/AdaptableOptions/CommentOptions.d.ts +20 -9
  16. package/src/AdaptableOptions/ContextMenuOptions.d.ts +94 -0
  17. package/src/AdaptableOptions/CustomSortOptions.d.ts +2 -2
  18. package/src/AdaptableOptions/DataImportOptions.d.ts +2 -2
  19. package/src/AdaptableOptions/FormatColumnOptions.d.ts +2 -2
  20. package/src/AdaptableOptions/GroupingOptions.d.ts +0 -26
  21. package/src/AdaptableOptions/NoteOptions.d.ts +12 -3
  22. package/src/AdaptableOptions/PredicateOptions.d.ts +2 -2
  23. package/src/AdaptableOptions/QuickSearchOptions.d.ts +1 -1
  24. package/src/AdaptableOptions/StateOptions.d.ts +6 -0
  25. package/src/AdaptableOptions/UserInterfaceOptions.d.ts +2 -2
  26. package/src/Api/AdaptableApi.d.ts +16 -6
  27. package/src/Api/ColumnApi.d.ts +13 -0
  28. package/src/Api/ColumnMenuApi.d.ts +13 -0
  29. package/src/Api/{ScopeApi.d.ts → ColumnScopeApi.d.ts} +36 -26
  30. package/src/Api/CommentApi.d.ts +20 -22
  31. package/src/Api/ConfigApi.d.ts +4 -5
  32. package/src/Api/ContextMenuApi.d.ts +9 -0
  33. package/src/Api/EventApi.d.ts +7 -9
  34. package/src/Api/Events/CommentChanged.d.ts +11 -0
  35. package/src/Api/Events/CommentChanged.js +1 -0
  36. package/src/Api/Events/GridDataChanged.d.ts +1 -1
  37. package/src/Api/FlashingCellApi.d.ts +2 -2
  38. package/src/Api/GridApi.d.ts +35 -3
  39. package/src/Api/Implementation/ActionColumnApiImpl.js +3 -6
  40. package/src/Api/Implementation/ActionRowApiImpl.js +3 -7
  41. package/src/Api/Implementation/AdaptableApiImpl.d.ts +7 -5
  42. package/src/Api/Implementation/AdaptableApiImpl.js +9 -5
  43. package/src/Api/Implementation/AlertApiImpl.js +8 -13
  44. package/src/Api/Implementation/ApiBase.d.ts +6 -4
  45. package/src/Api/Implementation/ApiBase.js +11 -5
  46. package/src/Api/Implementation/CalendarApiImpl.js +1 -6
  47. package/src/Api/Implementation/CellSummaryApiImpl.d.ts +0 -5
  48. package/src/Api/Implementation/CellSummaryApiImpl.js +2 -23
  49. package/src/Api/Implementation/ChartingApiImpl.js +3 -3
  50. package/src/Api/Implementation/ColumnApiImpl.d.ts +5 -0
  51. package/src/Api/Implementation/ColumnApiImpl.js +45 -15
  52. package/src/Api/Implementation/ColumnFilterApiImpl.js +7 -7
  53. package/src/Api/Implementation/ColumnMenuApiImpl.d.ts +8 -0
  54. package/src/Api/Implementation/ColumnMenuApiImpl.js +12 -0
  55. package/src/Api/Implementation/ColumnScopeApiImpl.d.ts +33 -0
  56. package/src/Api/Implementation/{ScopeApiImpl.js → ColumnScopeApiImpl.js} +65 -19
  57. package/src/Api/Implementation/CommentsApiImpl.d.ts +8 -5
  58. package/src/Api/Implementation/CommentsApiImpl.js +10 -5
  59. package/src/Api/Implementation/ConfigApiImpl.d.ts +2 -2
  60. package/src/Api/Implementation/ConfigApiImpl.js +27 -28
  61. package/src/Api/Implementation/ContextMenuApiImpl.d.ts +7 -0
  62. package/src/Api/Implementation/ContextMenuApiImpl.js +9 -0
  63. package/src/Api/Implementation/DashboardApiImpl.js +1 -6
  64. package/src/Api/Implementation/ExportApiImpl.js +5 -10
  65. package/src/Api/Implementation/ExpressionApiImpl.js +14 -19
  66. package/src/Api/Implementation/Fdc3ApiImpl.js +1 -1
  67. package/src/Api/Implementation/FlashingCellApiImpl.d.ts +2 -2
  68. package/src/Api/Implementation/FlashingCellApiImpl.js +3 -8
  69. package/src/Api/Implementation/FormatColumnApiImpl.js +4 -4
  70. package/src/Api/Implementation/FreeTextColumnApiImpl.js +1 -1
  71. package/src/Api/Implementation/GridApiImpl.d.ts +9 -1
  72. package/src/Api/Implementation/GridApiImpl.js +63 -9
  73. package/src/Api/Implementation/LayoutApiImpl.d.ts +4 -11
  74. package/src/Api/Implementation/LayoutApiImpl.js +20 -28
  75. package/src/Api/Implementation/NoteApiImpl.d.ts +18 -0
  76. package/src/Api/Implementation/NoteApiImpl.js +40 -0
  77. package/src/Api/Implementation/OptionsApiImpl.d.ts +6 -5
  78. package/src/Api/Implementation/OptionsApiImpl.js +7 -4
  79. package/src/Api/Implementation/PredicateApiImpl.js +2 -2
  80. package/src/Api/Implementation/ScheduleApiImpl.js +6 -6
  81. package/src/Api/Implementation/TeamSharingApiImpl.js +3 -15
  82. package/src/Api/Implementation/ThemeApiImpl.js +2 -7
  83. package/src/Api/Implementation/UserInterfaceApiImpl.d.ts +14 -8
  84. package/src/Api/Implementation/UserInterfaceApiImpl.js +32 -27
  85. package/src/Api/Internal/ActionRowInternalApi.d.ts +1 -0
  86. package/src/Api/Internal/ActionRowInternalApi.js +19 -46
  87. package/src/Api/Internal/AdaptableInternalApi.d.ts +3 -4
  88. package/src/Api/Internal/AdaptableInternalApi.js +16 -30
  89. package/src/Api/Internal/AlertInternalApi.d.ts +2 -2
  90. package/src/Api/Internal/AlertInternalApi.js +7 -20
  91. package/src/Api/Internal/CalculatedColumnInternalApi.js +11 -17
  92. package/src/Api/Internal/ChartingInternalApi.js +13 -13
  93. package/src/Api/Internal/ColumnFilterInternalApi.d.ts +1 -0
  94. package/src/Api/Internal/ColumnFilterInternalApi.js +24 -30
  95. package/src/Api/Internal/ColumnInternalApi.d.ts +2 -0
  96. package/src/Api/Internal/ColumnInternalApi.js +7 -1
  97. package/src/Api/Internal/CommentsInternalApi.d.ts +4 -0
  98. package/src/Api/Internal/CommentsInternalApi.js +14 -0
  99. package/src/Api/Internal/CustomSortInternalApi.js +1 -1
  100. package/src/Api/Internal/DashboardInternalApi.js +5 -11
  101. package/src/Api/Internal/DataImportInternalApi.js +3 -9
  102. package/src/Api/Internal/DataSetInternalApi.js +2 -7
  103. package/src/Api/Internal/ExportInternalApi.d.ts +2 -1
  104. package/src/Api/Internal/ExportInternalApi.js +8 -5
  105. package/src/Api/Internal/ExpressionInternalApi.js +3 -13
  106. package/src/Api/Internal/Fdc3InternalApi.js +3 -12
  107. package/src/Api/Internal/FormatColumnInternalApi.d.ts +3 -6
  108. package/src/Api/Internal/FormatColumnInternalApi.js +38 -30
  109. package/src/Api/Internal/FreeTextColumnInternalApi.js +5 -4
  110. package/src/Api/Internal/GridFilterInternalApi.d.ts +5 -0
  111. package/src/Api/Internal/GridFilterInternalApi.js +8 -8
  112. package/src/Api/Internal/GridInternalApi.d.ts +2 -0
  113. package/src/Api/Internal/GridInternalApi.js +28 -40
  114. package/src/Api/Internal/LayoutInternalApi.d.ts +2 -0
  115. package/src/Api/Internal/LayoutInternalApi.js +26 -19
  116. package/src/Api/Internal/NoteInternalApi.d.ts +4 -0
  117. package/src/Api/Internal/NoteInternalApi.js +14 -0
  118. package/src/Api/Internal/PredicateInternalApi.d.ts +6 -6
  119. package/src/Api/Internal/PredicateInternalApi.js +5 -40
  120. package/src/Api/Internal/ScheduleInternalApi.js +1 -6
  121. package/src/Api/Internal/StyledColumnInternalApi.d.ts +2 -2
  122. package/src/Api/Internal/StyledColumnInternalApi.js +8 -9
  123. package/src/Api/Internal/SystemStatusInternalApi.js +1 -7
  124. package/src/Api/Internal/TeamSharingInternalApi.js +2 -7
  125. package/src/Api/Internal/ThemeInternalApi.js +1 -1
  126. package/src/Api/Internal/UserInterfaceInternalApi.js +1 -1
  127. package/src/Api/LayoutApi.d.ts +15 -15
  128. package/src/Api/NoteApi.d.ts +48 -0
  129. package/src/Api/NoteApi.js +1 -0
  130. package/src/Api/OptionsApi.d.ts +14 -10
  131. package/src/Api/UserInterfaceApi.d.ts +15 -13
  132. package/src/PredefinedConfig/AdaptableState.d.ts +2 -2
  133. package/src/PredefinedConfig/AlertState.d.ts +2 -2
  134. package/src/PredefinedConfig/CommentState.d.ts +27 -23
  135. package/src/PredefinedConfig/Common/AdaptableColumn.d.ts +4 -0
  136. package/src/PredefinedConfig/Common/AdaptableIcon.d.ts +1 -1
  137. package/src/PredefinedConfig/Common/AdaptableObject.d.ts +4 -4
  138. package/src/PredefinedConfig/Common/AdaptablePredicate.d.ts +2 -2
  139. package/src/PredefinedConfig/Common/CellSummary.d.ts +5 -14
  140. package/src/PredefinedConfig/Common/{AdaptableScope.d.ts → ColumnScope.d.ts} +4 -1
  141. package/src/PredefinedConfig/Common/ColumnScope.js +1 -0
  142. package/src/PredefinedConfig/Common/DataUpdateConfig.d.ts +1 -5
  143. package/src/PredefinedConfig/Common/Enums.d.ts +4 -1
  144. package/src/PredefinedConfig/Common/Enums.js +3 -0
  145. package/src/PredefinedConfig/Common/Fdc3Intent.d.ts +2 -2
  146. package/src/PredefinedConfig/Common/Menu.d.ts +39 -4
  147. package/src/PredefinedConfig/Common/Menu.js +125 -1
  148. package/src/PredefinedConfig/Common/RowScope.d.ts +17 -0
  149. package/src/PredefinedConfig/Common/RowScope.js +1 -0
  150. package/src/PredefinedConfig/Common/RowSummary.d.ts +21 -0
  151. package/src/PredefinedConfig/Common/RowSummary.js +17 -0
  152. package/src/PredefinedConfig/Common/TransposeConfig.d.ts +30 -0
  153. package/src/PredefinedConfig/Common/TransposeConfig.js +1 -0
  154. package/src/PredefinedConfig/Common/Types.d.ts +4 -4
  155. package/src/PredefinedConfig/Common/Types.js +4 -1
  156. package/src/PredefinedConfig/ExportState.d.ts +2 -2
  157. package/src/PredefinedConfig/FlashingCellState.d.ts +2 -2
  158. package/src/PredefinedConfig/FormatColumnState.d.ts +9 -5
  159. package/src/PredefinedConfig/LayoutState.d.ts +6 -1
  160. package/src/PredefinedConfig/{NotesState.d.ts → NoteState.d.ts} +4 -4
  161. package/src/PredefinedConfig/NoteState.js +1 -0
  162. package/src/PredefinedConfig/PlusMinusState.d.ts +2 -2
  163. package/src/PredefinedConfig/PopupState.d.ts +1 -2
  164. package/src/PredefinedConfig/PredefinedConfig.d.ts +2 -2
  165. package/src/PredefinedConfig/Selection/GridCell.d.ts +13 -0
  166. package/src/PredefinedConfig/ShortcutState.d.ts +2 -2
  167. package/src/PredefinedConfig/StyledColumnState.d.ts +5 -5
  168. package/src/PredefinedConfig/SystemState.d.ts +12 -4
  169. package/src/Redux/ActionsReducers/CommentsRedux.d.ts +0 -4
  170. package/src/Redux/ActionsReducers/CommentsRedux.js +0 -34
  171. package/src/Redux/ActionsReducers/LayoutRedux.d.ts +9 -0
  172. package/src/Redux/ActionsReducers/LayoutRedux.js +32 -10
  173. package/src/Redux/ActionsReducers/NoteRedux.d.ts +38 -0
  174. package/src/Redux/ActionsReducers/{NotesRedux.js → NoteRedux.js} +24 -24
  175. package/src/Redux/ActionsReducers/PopupRedux.d.ts +5 -13
  176. package/src/Redux/ActionsReducers/PopupRedux.js +0 -19
  177. package/src/Redux/ActionsReducers/SystemRedux.d.ts +15 -4
  178. package/src/Redux/ActionsReducers/SystemRedux.js +24 -9
  179. package/src/Redux/Store/AdaptableStore.js +48 -30
  180. package/src/Redux/Store/Interface/IAdaptableStore.d.ts +2 -2
  181. package/src/Strategy/AdaptableModuleBase.d.ts +10 -10
  182. package/src/Strategy/AdaptableModuleBase.js +13 -16
  183. package/src/Strategy/AlertModule.d.ts +3 -2
  184. package/src/Strategy/AlertModule.js +4 -4
  185. package/src/Strategy/BulkUpdateModule.d.ts +3 -2
  186. package/src/Strategy/BulkUpdateModule.js +2 -1
  187. package/src/Strategy/CalculatedColumnModule.d.ts +3 -4
  188. package/src/Strategy/CalculatedColumnModule.js +18 -14
  189. package/src/Strategy/CellSummaryModule.d.ts +10 -9
  190. package/src/Strategy/CellSummaryModule.js +101 -83
  191. package/src/Strategy/ColumnFilterModule.d.ts +3 -3
  192. package/src/Strategy/ColumnFilterModule.js +36 -57
  193. package/src/Strategy/ColumnInfoModule.d.ts +3 -3
  194. package/src/Strategy/ColumnInfoModule.js +6 -4
  195. package/src/Strategy/CommentModule.d.ts +12 -0
  196. package/src/Strategy/CommentModule.js +70 -0
  197. package/src/Strategy/CustomSortModule.d.ts +1 -2
  198. package/src/Strategy/CustomSortModule.js +3 -2
  199. package/src/Strategy/DashboardModule.d.ts +3 -3
  200. package/src/Strategy/DashboardModule.js +11 -21
  201. package/src/Strategy/DataImportModule.d.ts +4 -4
  202. package/src/Strategy/DataImportModule.js +8 -8
  203. package/src/Strategy/ExportModule.d.ts +1 -2
  204. package/src/Strategy/ExportModule.js +58 -44
  205. package/src/Strategy/Fdc3Module.d.ts +1 -1
  206. package/src/Strategy/Fdc3Module.js +3 -13
  207. package/src/Strategy/FlashingCellModule.d.ts +4 -3
  208. package/src/Strategy/FlashingCellModule.js +10 -10
  209. package/src/Strategy/FormatColumnModule.d.ts +1 -1
  210. package/src/Strategy/FormatColumnModule.js +29 -47
  211. package/src/Strategy/FreeTextColumnModule.d.ts +1 -2
  212. package/src/Strategy/FreeTextColumnModule.js +2 -2
  213. package/src/Strategy/GridInfoModule.d.ts +3 -3
  214. package/src/Strategy/GridInfoModule.js +5 -3
  215. package/src/Strategy/Interface/IModule.d.ts +4 -4
  216. package/src/Strategy/LayoutModule.d.ts +4 -3
  217. package/src/Strategy/LayoutModule.js +71 -72
  218. package/src/Strategy/NoteModule.d.ts +10 -0
  219. package/src/Strategy/NoteModule.js +55 -0
  220. package/src/Strategy/PlusMinusModule.d.ts +1 -2
  221. package/src/Strategy/PlusMinusModule.js +5 -5
  222. package/src/Strategy/SettingsPanelModule.d.ts +3 -3
  223. package/src/Strategy/SettingsPanelModule.js +6 -6
  224. package/src/Strategy/ShortcutModule.js +1 -1
  225. package/src/Strategy/SmartEditModule.d.ts +3 -2
  226. package/src/Strategy/SmartEditModule.js +2 -1
  227. package/src/Strategy/StyledColumnModule.d.ts +2 -1
  228. package/src/Strategy/StyledColumnModule.js +42 -22
  229. package/src/Strategy/SystemStatusModule.d.ts +3 -3
  230. package/src/Strategy/SystemStatusModule.js +6 -3
  231. package/src/Strategy/Utilities/FormatColumn/getFormatColumnSettingsViewItems.js +4 -2
  232. package/src/Strategy/Utilities/getScopeViewItems.d.ts +2 -2
  233. package/src/Strategy/Utilities/getScopeViewItems.js +3 -0
  234. package/src/Utilities/Constants/GeneralConstants.d.ts +1 -0
  235. package/src/Utilities/Constants/GeneralConstants.js +1 -0
  236. package/src/Utilities/Constants/ModuleConstants.d.ts +6 -6
  237. package/src/Utilities/Constants/ModuleConstants.js +6 -6
  238. package/src/Utilities/Defaults/DefaultSettingsPanel.js +2 -2
  239. package/src/Utilities/ExpressionFunctions/aggregatedScalarExpressionFunctions.d.ts +3 -2
  240. package/src/Utilities/ExpressionFunctions/aggregatedScalarExpressionFunctions.js +433 -3
  241. package/src/Utilities/ExpressionFunctions/observableExpressionFunctions.js +3 -3
  242. package/src/Utilities/ExpressionFunctions/scalarAggregationHelper.js +1 -1
  243. package/src/Utilities/ExpressionFunctions/scalarExpressionFunctions.d.ts +1 -1
  244. package/src/Utilities/ExpressionFunctions/scalarExpressionFunctions.js +15 -0
  245. package/src/Utilities/Extensions/ArrayExtensions.d.ts +2 -0
  246. package/src/Utilities/Extensions/ArrayExtensions.js +4 -0
  247. package/src/Utilities/Helpers/AdaptableHelper.d.ts +3 -1
  248. package/src/Utilities/Helpers/AdaptableHelper.js +19 -0
  249. package/src/Utilities/Interface/MessagePopups.d.ts +0 -3
  250. package/src/Utilities/MenuItem.d.ts +10 -7
  251. package/src/Utilities/MenuItem.js +6 -3
  252. package/src/Utilities/ObjectFactory.d.ts +3 -3
  253. package/src/Utilities/ObjectFactory.js +7 -25
  254. package/src/Utilities/Services/AggregatedScalarLiveValue.d.ts +4 -2
  255. package/src/Utilities/Services/AggregatedScalarLiveValue.js +23 -18
  256. package/src/Utilities/Services/CellPopupService.js +4 -4
  257. package/src/Utilities/Services/Interface/IQueryLanguageService.d.ts +1 -1
  258. package/src/Utilities/Services/Interface/IReportService.d.ts +1 -4
  259. package/src/Utilities/Services/LicenseService/index.js +1 -190
  260. package/src/Utilities/Services/ModuleService.js +6 -2
  261. package/src/Utilities/Services/QueryLanguageService.d.ts +1 -1
  262. package/src/Utilities/Services/QueryLanguageService.js +4 -3
  263. package/src/Utilities/Services/ReportService.d.ts +7 -5
  264. package/src/Utilities/Services/ReportService.js +245 -26
  265. package/src/Utilities/Services/RowSummaryService.d.ts +26 -0
  266. package/src/Utilities/Services/RowSummaryService.js +155 -0
  267. package/src/Utilities/Services/ValidationService.js +2 -2
  268. package/src/Utilities/adaptableQlUtils.d.ts +2 -0
  269. package/src/Utilities/adaptableQlUtils.js +14 -0
  270. package/src/Utilities/license/decode.js +1 -65
  271. package/src/Utilities/license/hashing.js +1 -43
  272. package/src/View/AdaptableViewFactory.js +2 -2
  273. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/UIOptions/UIOptionsStatusbarForm.js +1 -1
  274. package/src/View/Alert/AlertEntityRow.js +1 -1
  275. package/src/View/Alert/Utilities/getAvailablePredicates.d.ts +2 -2
  276. package/src/View/Alert/Utilities/getDefaultAlertDefinition.d.ts +1 -1
  277. package/src/View/Alert/Wizard/AlertScopeWizardSection.js +2 -2
  278. package/src/View/Alert/Wizard/BaseAlertScopeWizardSection.js +1 -1
  279. package/src/View/BulkUpdate/BulkUpdatePopup.js +2 -2
  280. package/src/View/CalculatedColumn/Wizard/CalculatedColumnWizard.d.ts +1 -1
  281. package/src/View/CalculatedColumn/Wizard/CalculatedColumnWizard.js +3 -3
  282. package/src/View/ColumnInfo/ColumnInfo.js +1 -1
  283. package/src/View/Comments/CommentsEditor.js +28 -17
  284. package/src/View/Comments/CommentsPopup.js +15 -7
  285. package/src/View/Components/AdaptableDateInput/index.d.ts +1 -1
  286. package/src/View/Components/AdaptableInput/AdaptableDateInlineInput.d.ts +5 -0
  287. package/src/View/Components/AdaptableInput/AdaptableDateInlineInput.js +42 -0
  288. package/src/View/Components/AdaptableObjectList/AdaptableObjectList.js +5 -2
  289. package/src/View/Components/CellPopup/index.d.ts +1 -0
  290. package/src/View/Components/CellPopup/index.js +6 -3
  291. package/src/View/Components/EntityRulesEditor/EntityRulePredicatesEditor/EntityRulePredicatesEditor.d.ts +3 -3
  292. package/src/View/Components/EntityRulesEditor/index.d.ts +3 -3
  293. package/src/View/Components/FilterForm/FilterForm.js +20 -12
  294. package/src/View/Components/FilterForm/QuickFilterForm.js +15 -8
  295. package/src/View/Components/FilterForm/QuickFilterValues.js +39 -23
  296. package/src/View/Components/NewScopeComponent.d.ts +5 -5
  297. package/src/View/Components/NewScopeComponent.js +36 -3
  298. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopup.js +4 -1
  299. package/src/View/Components/Popups/AdaptablePopup/useMenuItems.js +10 -1
  300. package/src/View/Components/Popups/GridCellPopup/GridCellPopup.js +7 -10
  301. package/src/View/Components/RangesComponent.d.ts +2 -2
  302. package/src/View/Components/RangesComponent.js +1 -1
  303. package/src/View/Components/Selectors/PermittedValuesSelector.js +1 -1
  304. package/src/View/Components/SharedProps/WizardScopeState.d.ts +2 -2
  305. package/src/View/Components/ValueSelector/index.d.ts +1 -0
  306. package/src/View/Components/ValueSelector/index.js +2 -2
  307. package/src/View/CustomSort/Wizard/CustomSortColumnWizardSection.js +1 -1
  308. package/src/View/DataChangeHistory/DataChangeHistoryGrid.js +4 -2
  309. package/src/View/DataImport/DataImportWizard/DataImportWizard.js +1 -1
  310. package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.d.ts +2 -2
  311. package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.js +20 -7
  312. package/src/View/FormatColumn/Wizard/FormatColumnRuleWizardSection.js +1 -1
  313. package/src/View/FormatColumn/Wizard/FormatColumnScopeWizardSection.js +1 -1
  314. package/src/View/FormatColumn/Wizard/FormatColumnSettingsWizardSection.js +27 -12
  315. package/src/View/FormatColumn/Wizard/FormatColumnStyleWizardSection.js +1 -1
  316. package/src/View/FreeTextColumn/FreeTextColumnSummary.js +1 -1
  317. package/src/View/FreeTextColumn/Wizard/FreeTextColumnWizard.js +3 -1
  318. package/src/View/GridFilter/GridFilterViewPanel.js +3 -3
  319. package/src/View/GridFilter/useGridFilterExpressionEditor.js +1 -1
  320. package/src/View/Layout/LayoutViewPanel.js +2 -1
  321. package/src/View/Layout/TransposedPopup.js +27 -25
  322. package/src/View/Layout/Wizard/LayoutWizard.js +38 -3
  323. package/src/View/Layout/Wizard/sections/ColumnsSection.js +1 -1
  324. package/src/View/Layout/Wizard/sections/FilterSection.js +1 -1
  325. package/src/View/Layout/Wizard/sections/RowGroupingSection.js +18 -2
  326. package/src/View/Layout/Wizard/sections/RowSummarySection.d.ts +9 -0
  327. package/src/View/Layout/Wizard/sections/RowSummarySection.js +174 -0
  328. package/src/View/License/LicenseWatermark.js +1 -61
  329. package/src/View/Note/NotePopup.d.ts +2 -0
  330. package/src/View/{Notes/NotesPopup.js → Note/NotePopup.js} +14 -9
  331. package/src/View/PlusMinus/PlusMinusSummary.js +2 -2
  332. package/src/View/SmartEdit/SmartEditPopup.js +1 -1
  333. package/src/View/SpecialColumnSettingsWizardStep.js +4 -4
  334. package/src/View/StyledColumn/Wizard/StyledColumnBadgeSection.js +5 -7
  335. package/src/View/StyledColumn/Wizard/StyledColumnWizard.js +1 -1
  336. package/src/View/StyledColumn/Wizard/StyledColumnWizardColumnSection.js +1 -1
  337. package/src/View/StyledColumn/Wizard/StyledColumnWizardSettingsSection.js +38 -14
  338. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/StyledColumnWizardStyleSection.js +1 -1
  339. package/src/agGrid/ActionColumnRenderer.js +40 -4
  340. package/src/agGrid/AdaptableAgGrid.d.ts +21 -12
  341. package/src/agGrid/AdaptableAgGrid.js +313 -225
  342. package/src/agGrid/AgGridAdapter.d.ts +5 -2
  343. package/src/agGrid/AgGridAdapter.js +20 -0
  344. package/src/agGrid/AgGridColumnAdapter.d.ts +1 -3
  345. package/src/agGrid/AgGridColumnAdapter.js +52 -70
  346. package/src/agGrid/AgGridMenuAdapter.d.ts +25 -8
  347. package/src/agGrid/AgGridMenuAdapter.js +405 -74
  348. package/src/agGrid/AgGridOptionsService.d.ts +4 -1
  349. package/src/agGrid/AgGridOptionsService.js +22 -0
  350. package/src/agGrid/BadgeRenderer.d.ts +2 -2
  351. package/src/agGrid/BadgeRenderer.js +24 -11
  352. package/src/agGrid/PercentBarRenderer.js +2 -1
  353. package/src/agGrid/buildSortedColumnStateForLayout.d.ts +7 -0
  354. package/src/agGrid/buildSortedColumnStateForLayout.js +120 -0
  355. package/src/agGrid/defaultAdaptableOptions.js +7 -12
  356. package/src/agGrid/editors/AdaptableDateEditor/index.d.ts +1 -1
  357. package/src/agGrid/editors/AdaptableDateEditor/index.js +1 -1
  358. package/src/agGrid/editors/AdaptableNumberEditor/index.d.ts +2 -2
  359. package/src/agGrid/sortColumnStateForVisibleColumns.d.ts +12 -0
  360. package/src/agGrid/sortColumnStateForVisibleColumns.js +46 -0
  361. package/src/agGrid/weightedAverage.d.ts +0 -2
  362. package/src/agGrid/weightedAverage.js +0 -54
  363. package/src/components/Accordion.d.ts +7 -0
  364. package/src/components/Accordion.js +36 -0
  365. package/src/components/CheckBox/index.js +1 -1
  366. package/src/components/ColorPicker/ColorPicker.d.ts +1 -1
  367. package/src/components/Datepicker/index.d.ts +1 -1
  368. package/src/components/Datepicker/index.js +10 -2
  369. package/src/components/ExpressionEditor/QueryBuilder/QueryPredicateBuilder.js +2 -1
  370. package/src/components/ExpressionEditor/QueryBuilder/utils.d.ts +0 -1
  371. package/src/components/ExpressionEditor/QueryBuilder/utils.js +1 -14
  372. package/src/components/Input/index.d.ts +1 -2
  373. package/src/components/List/ListGroupItem/index.d.ts +1 -1
  374. package/src/components/ProgressIndicator/ProgressIndicator.js +15 -6
  375. package/src/components/Select/Select.d.ts +1 -1
  376. package/src/components/Select/Select.js +3 -1
  377. package/src/components/Textarea/index.d.ts +2 -2
  378. package/src/components/icons/collapse-all.d.ts +3 -0
  379. package/src/components/icons/collapse-all.js +4 -0
  380. package/src/components/icons/copy.d.ts +3 -0
  381. package/src/components/icons/copy.js +4 -0
  382. package/src/components/icons/csv.d.ts +3 -0
  383. package/src/components/icons/csv.js +4 -0
  384. package/src/components/icons/data-object.d.ts +3 -0
  385. package/src/components/icons/data-object.js +4 -0
  386. package/src/components/icons/excel.d.ts +3 -0
  387. package/src/components/icons/excel.js +5 -0
  388. package/src/components/icons/expand-all.d.ts +3 -0
  389. package/src/components/icons/expand-all.js +4 -0
  390. package/src/components/icons/filter-off.d.ts +3 -0
  391. package/src/components/icons/filter-off.js +4 -0
  392. package/src/components/icons/grid-info.d.ts +3 -0
  393. package/src/components/icons/grid-info.js +4 -0
  394. package/src/components/icons/index.js +24 -0
  395. package/src/components/icons/note.js +2 -2
  396. package/src/components/icons/rows.d.ts +3 -0
  397. package/src/components/icons/rows.js +4 -0
  398. package/src/components/icons/select-all.d.ts +3 -0
  399. package/src/components/icons/select-all.js +4 -0
  400. package/src/components/icons/select-fwd.d.ts +3 -0
  401. package/src/components/icons/select-fwd.js +4 -0
  402. package/src/components/icons/select-off.d.ts +3 -0
  403. package/src/components/icons/select-off.js +4 -0
  404. package/src/env.js +2 -2
  405. package/src/metamodel/adaptable.metamodel.d.ts +230 -116
  406. package/src/metamodel/adaptable.metamodel.js +1 -9408
  407. package/src/parser/src/parser.js +576 -553
  408. package/src/parser/src/predicate/mapExpressionToQlPredicate.js +1 -1
  409. package/src/parser/src/predicate/mapQlPredicateToExpression.js +3 -4
  410. package/src/parser/src/types.d.ts +7 -2
  411. package/src/parser/src/types.js +1 -2
  412. package/src/types.d.ts +32 -25
  413. package/tsconfig.esm.tsbuildinfo +1 -1
  414. package/src/AdaptableOptions/MenuOptions.d.ts +0 -234
  415. package/src/AdaptableOptions/MenuOptions.js +0 -95
  416. package/src/Api/Events/CommentsChangedInfo.d.ts +0 -5
  417. package/src/Api/Implementation/NotesApiImpl.d.ts +0 -14
  418. package/src/Api/Implementation/NotesApiImpl.js +0 -35
  419. package/src/Api/Implementation/ScopeApiImpl.d.ts +0 -31
  420. package/src/Api/NotesApi.d.ts +0 -48
  421. package/src/PredefinedConfig/CellAddress.d.ts +0 -13
  422. package/src/PredefinedConfig/CellAddress.js +0 -4
  423. package/src/Redux/ActionsReducers/NotesRedux.d.ts +0 -38
  424. package/src/Strategy/CommentsModule.d.ts +0 -17
  425. package/src/Strategy/CommentsModule.js +0 -78
  426. package/src/Strategy/NotesModule.d.ts +0 -10
  427. package/src/Strategy/NotesModule.js +0 -57
  428. package/src/View/Components/ScopeComponent.d.ts +0 -24
  429. package/src/View/Components/ScopeComponent.js +0 -133
  430. package/src/View/Export/Wizard/ReportScopeWizard.d.ts +0 -17
  431. package/src/View/Export/Wizard/ReportScopeWizard.js +0 -47
  432. package/src/View/Notes/NotesPopup.d.ts +0 -2
  433. /package/src/{Api/Events/CommentsChangedInfo.js → AdaptableOptions/ColumnMenuOptions.js} +0 -0
  434. /package/src/{Api/NotesApi.js → AdaptableOptions/ContextMenuOptions.js} +0 -0
  435. /package/src/Api/{ScopeApi.js → ColumnMenuApi.js} +0 -0
  436. /package/src/{PredefinedConfig/Common/AdaptableScope.js → Api/ColumnScopeApi.js} +0 -0
  437. /package/src/{PredefinedConfig/NotesState.js → Api/ContextMenuApi.js} +0 -0
  438. /package/src/View/{Notes → Note}/NoteEditor.d.ts +0 -0
  439. /package/src/View/{Notes → Note}/NoteEditor.js +0 -0
@@ -16,7 +16,7 @@ export declare class QueryLanguageService implements IQueryLanguageService {
16
16
  constructor(adaptableApi: AdaptableApi);
17
17
  evaluateBooleanExpression(expression: string, module: AdaptableModule, rowNode: any): any;
18
18
  evaluateScalarExpression(expression: string, module: AdaptableModule, rowNode: IRowNode): any;
19
- evaluateAggregatedScalarExpression(expression: string, module: AdaptableModule): ScalarAggregationParameter;
19
+ evaluateAggregatedScalarExpression(expression: string, module: AdaptableModule, getRowNodes?: () => IRowNode[]): ScalarAggregationParameter;
20
20
  evaluateObservableExpression(reactiveExpression: string, module: AdaptableModule): Observable<CellDataChangedInfo | GridDataChangedInfo>;
21
21
  evaluateAggregatedBooleanExpression(aggregationExpression: string, module: AdaptableModule): BooleanAggregationParameter;
22
22
  validateBoolean(expressionInput: string, module: AdaptableModule, config?: {
@@ -32,7 +32,7 @@ export class QueryLanguageService {
32
32
  // currently scalar and boolean expressions are evaluated the same
33
33
  return this.evaluateBooleanExpression(expression, module, rowNode);
34
34
  }
35
- evaluateAggregatedScalarExpression(expression, module) {
35
+ evaluateAggregatedScalarExpression(expression, module, getRowNodes) {
36
36
  const aggregatedScalarFunctions = this.getModuleExpressionFunctionsMap(module).aggregatedScalarFunctions;
37
37
  return parser.evaluate(expression, {
38
38
  node: null,
@@ -41,13 +41,14 @@ export class QueryLanguageService {
41
41
  adaptableId: this.adaptableApi.optionsApi.getAdaptableId(),
42
42
  functions: aggregatedScalarFunctions,
43
43
  evaluateCustomQueryVariable: this.evaluateCustomQueryVariable,
44
+ getRowNodes,
44
45
  });
45
46
  }
46
47
  evaluateObservableExpression(reactiveExpression, module) {
47
48
  const moduleExpressionFunctions = this.getModuleExpressionFunctionsMap(module);
48
49
  const booleanAndScalarFunctions = this.getBooleanAndScalarFunctions(moduleExpressionFunctions);
49
50
  const reactiveExpression$ = parser.evaluate(reactiveExpression, {
50
- node: reactiveExpression,
51
+ node: this.adaptableApi.gridApi.getFirstRowNode(),
51
52
  adaptableApi: this.adaptableApi,
52
53
  userName: this.adaptableApi.optionsApi.getUserName(),
53
54
  adaptableId: this.adaptableApi.optionsApi.getAdaptableId(),
@@ -61,7 +62,7 @@ export class QueryLanguageService {
61
62
  const moduleExpressionFunctionsMap = this.getModuleExpressionFunctionsMap(module);
62
63
  const booleanAndScalarFunctions = this.getBooleanAndScalarFunctions(moduleExpressionFunctionsMap);
63
64
  const aggregationEvaluation = parser.evaluate(aggregationExpression, {
64
- node: aggregationExpression,
65
+ node: this.adaptableApi.gridApi.getFirstRowNode(),
65
66
  adaptableApi: this.adaptableApi,
66
67
  userName: this.adaptableApi.optionsApi.getUserName(),
67
68
  adaptableId: this.adaptableApi.optionsApi.getAdaptableId(),
@@ -10,11 +10,8 @@ export declare class ReportService implements IReportService {
10
10
  private cellClassKey2excelStyleIdMap;
11
11
  private excelStylesWithFormattedDate;
12
12
  constructor(adaptableApi: AdaptableApi);
13
- resetExcelStyleMemoization(): void;
14
- registerExcelStyle(excelStyle: Partial<ExcelStyle>, cellClassKey: string): void;
15
- getRegisteredExcelStyles(): ExcelStyle[];
13
+ destroy(): void;
16
14
  getExcelStyleIdForCellClassKey(cellClassKey: string): string;
17
- registerExcelStyleWithFormattedDate(cellClassId: string, isoFormattedValue: string): void;
18
15
  getExcelStyleWithFormattedDate(cellClassId: string): string;
19
16
  CreateSystemReport(systemReportName: SystemReportName): Report;
20
17
  IsSystemReport(reportName: string): boolean;
@@ -33,7 +30,12 @@ export declare class ReportService implements IReportService {
33
30
  getCellExportValueFromRowNode(rowNode: IRowNode, columnId: string): any;
34
31
  getCellExportValueFromRawValue(rowNode: IRowNode, cellRawValue: any, columnId: string): any;
35
32
  getReportFileName(reportName: string, destination: SystemExportDestination | CustomDestination): string;
36
- destroy(): void;
37
33
  private getCustomExportDateFormat;
38
34
  private getCellExportValueFromRawValueByType;
35
+ buildExcelStylesForVisualReports(): ExcelStyle[];
36
+ createExcelStyleMemoization(): void;
37
+ private convertCSSToExcelStyle;
38
+ private resetExcelStyleMemoization;
39
+ private registerExcelStyle;
40
+ private registerExcelStyleWithFormattedDate;
39
41
  }
@@ -7,6 +7,8 @@ import StringExtensions from '../Extensions/StringExtensions';
7
7
  import { ExportModuleId } from '../Constants/ModuleConstants';
8
8
  import { createUuid } from '../../components/utils/uuid';
9
9
  import { createBaseContext } from '../ObjectFactory';
10
+ import { convertCSSAbsoluteFontSizeToPt, getVariableColor, sanitizeStyle, } from '../Helpers/StyleHelper';
11
+ import tinycolor from 'tinycolor2';
10
12
  export class ReportService {
11
13
  constructor(adaptableApi) {
12
14
  this.adaptableApi = adaptableApi;
@@ -15,29 +17,12 @@ export class ReportService {
15
17
  this.excelStylesWithFormattedDate = {};
16
18
  this.adaptableApi = adaptableApi;
17
19
  }
18
- resetExcelStyleMemoization() {
19
- this.excelStylesCache = {};
20
- this.cellClassKey2excelStyleIdMap = {};
21
- this.excelStylesWithFormattedDate = {};
22
- }
23
- registerExcelStyle(excelStyle, cellClassKey) {
24
- const excelStyleKey = JSON.stringify(excelStyle);
25
- if (!this.excelStylesCache[excelStyleKey]) {
26
- const excelStyleId = createUuid();
27
- const excelStyleWithId = Object.assign(Object.assign({}, excelStyle), { id: excelStyleId });
28
- this.excelStylesCache[excelStyleKey] = excelStyleWithId;
29
- }
30
- this.cellClassKey2excelStyleIdMap[cellClassKey] = this.excelStylesCache[excelStyleKey].id;
31
- }
32
- getRegisteredExcelStyles() {
33
- return Object.values(this.excelStylesCache);
20
+ destroy() {
21
+ // TO DO
34
22
  }
35
23
  getExcelStyleIdForCellClassKey(cellClassKey) {
36
24
  return this.cellClassKey2excelStyleIdMap[cellClassKey];
37
25
  }
38
- registerExcelStyleWithFormattedDate(cellClassId, isoFormattedValue) {
39
- this.excelStylesWithFormattedDate[cellClassId] = isoFormattedValue;
40
- }
41
26
  getExcelStyleWithFormattedDate(cellClassId) {
42
27
  return this.excelStylesWithFormattedDate[cellClassId];
43
28
  }
@@ -99,8 +84,11 @@ export class ReportService {
99
84
  reportName == VISUAL_DATA_REPORT);
100
85
  }
101
86
  IsSystemReportActive(reportName) {
102
- if (reportName == SELECTED_CELLS_REPORT || reportName == SELECTED_ROWS_REPORT) {
103
- return this.adaptableApi.gridApi.isGridSelectable();
87
+ if (reportName == SELECTED_CELLS_REPORT) {
88
+ return this.adaptableApi.gridApi.isGridRangeSelectable();
89
+ }
90
+ if (reportName == SELECTED_ROWS_REPORT) {
91
+ return this.adaptableApi.gridApi.isGridRowSelectable();
104
92
  }
105
93
  if (reportName === VISUAL_DATA_REPORT) {
106
94
  return this.adaptableApi.exportApi
@@ -146,7 +134,7 @@ export class ReportService {
146
134
  case 'SelectedColumns':
147
135
  return '[Selected Columns]';
148
136
  case 'ScopeColumns':
149
- return this.adaptableApi.scopeApi.getScopeDescription(report.Scope);
137
+ return this.adaptableApi.columnScopeApi.getScopeDescription(report.Scope);
150
138
  }
151
139
  }
152
140
  GetReportExpressionDescription(report, cols) {
@@ -209,7 +197,7 @@ export class ReportService {
209
197
  reportColumns = report.Scope.ColumnIds.map((columnId) => this.adaptableApi.columnApi.getColumnWithColumnId(columnId)).filter((c) => c);
210
198
  }
211
199
  else {
212
- reportColumns = this.adaptableApi.scopeApi.getColumnsForScope(report.Scope);
200
+ reportColumns = this.adaptableApi.columnScopeApi.getColumnsForScope(report.Scope);
213
201
  }
214
202
  break;
215
203
  }
@@ -365,9 +353,6 @@ export class ReportService {
365
353
  }
366
354
  return fileName;
367
355
  }
368
- destroy() {
369
- // TO DO
370
- }
371
356
  getCustomExportDateFormat() {
372
357
  return this.adaptableApi.optionsApi.getExportOptions().exportDateFormat;
373
358
  }
@@ -379,4 +364,238 @@ export class ReportService {
379
364
  : // type === formattedValue
380
365
  this.adaptableApi.gridApi.getDisplayValueFromRawValue(rowNode, columnId, cellRawValue);
381
366
  }
367
+ // aggregate and merge all acive Adaptable styles with the user proviided ExcelStyles
368
+ buildExcelStylesForVisualReports() {
369
+ // for historical reasons, the styles are merged as class variables
370
+ // we could/should refactor this to be more functional
371
+ this.createExcelStyleMemoization();
372
+ return Object.values(this.excelStylesCache);
373
+ }
374
+ createExcelStyleMemoization() {
375
+ this.resetExcelStyleMemoization();
376
+ // we memoize as much as possible, as this is called quite A LOT
377
+ const adaptableColumnMap = {};
378
+ const getAdaptableColumnWithColumnId = (columnId) => {
379
+ const memoizedColumn = adaptableColumnMap[columnId];
380
+ if (memoizedColumn) {
381
+ return memoizedColumn;
382
+ }
383
+ const abColumn = this.adaptableApi.columnApi.getColumnWithColumnId(columnId);
384
+ adaptableColumnMap[columnId] = abColumn;
385
+ return abColumn;
386
+ };
387
+ const formatColumnsWithDisplayFormatForColumn = {};
388
+ const getFormatColumnsWithDisplayFormatForColumn = (columnId) => {
389
+ const memoizedFormatColumns = formatColumnsWithDisplayFormatForColumn[columnId];
390
+ if (memoizedFormatColumns) {
391
+ return memoizedFormatColumns;
392
+ }
393
+ const abColumn = getAdaptableColumnWithColumnId(columnId);
394
+ const formatColumns = this.adaptableApi.formatColumnApi.internalApi.getFormatColumnsWithDisplayFormatForColumn(abColumn);
395
+ formatColumnsWithDisplayFormatForColumn[columnId] = formatColumns;
396
+ return formatColumns;
397
+ };
398
+ const isDateCellExportedAsFormattedValue = this.adaptableApi.exportApi.internalApi.isDateCellExportedAsFormattedValue();
399
+ const displayedColumns = this.adaptableApi.agGridApi.getAllDisplayedColumns();
400
+ const colDefs = displayedColumns.map((column) => {
401
+ return column.getColDef();
402
+ });
403
+ const forAllVisibleRowNodesDoConfig = { includeGroupRows: true };
404
+ const agGridApi = this.adaptableApi.agGridApi;
405
+ const userExcelStyles = this.adaptableApi.internalApi
406
+ .getAdaptableInstance()
407
+ .agGridAdapter.getUserGridOptionsProperty('excelStyles') || [];
408
+ this.adaptableApi.internalApi.forAllVisibleRowNodesDo((node, rowIndex) => {
409
+ var _a;
410
+ const rowParams = {
411
+ node,
412
+ data: node.data,
413
+ rowIndex,
414
+ api: agGridApi,
415
+ columnApi: null,
416
+ context: ((_a = agGridApi.__getContext) === null || _a === void 0 ? void 0 : _a.call(agGridApi)) || {},
417
+ };
418
+ const getRowStyleFn = agGridApi.getGridOption('getRowStyle');
419
+ const rowStyle = getRowStyleFn ? getRowStyleFn(rowParams) : {};
420
+ displayedColumns.forEach((column, columnIndex) => {
421
+ var _a, _b, _c;
422
+ const colDef = colDefs[columnIndex];
423
+ let cellClassParams;
424
+ const getLazyCellClassParams = () => {
425
+ if (!cellClassParams) {
426
+ cellClassParams = {
427
+ colDef,
428
+ node,
429
+ column,
430
+ data: node.data,
431
+ value: this.adaptableApi.gridApi.getRawValueFromRowNode(node, column.getId()),
432
+ rowIndex,
433
+ api: agGridApi,
434
+ columnApi: null,
435
+ context: {},
436
+ };
437
+ }
438
+ return cellClassParams;
439
+ };
440
+ const cellStyle = typeof colDef.cellStyle === 'function' ? colDef.cellStyle(getLazyCellClassParams()) : {};
441
+ const excelStyles = [];
442
+ // add user defined excel styles
443
+ let userColDefCellClass = this.adaptableApi.internalApi
444
+ .getAdaptableInstance()
445
+ .agGridColumnAdapter.getUserColDefProperty(column.getColId(), 'cellClass');
446
+ const userDefinedCellClass = typeof userColDefCellClass === 'function'
447
+ ? userColDefCellClass(getLazyCellClassParams())
448
+ : userColDefCellClass;
449
+ const userDefinedExcelStyle = userDefinedCellClass &&
450
+ userExcelStyles.find((excelStyle) => {
451
+ var _a;
452
+ return typeof userDefinedCellClass === 'string'
453
+ ? userDefinedCellClass === excelStyle.id
454
+ : (_a = userDefinedCellClass === null || userDefinedCellClass === void 0 ? void 0 : userDefinedCellClass.includes) === null || _a === void 0 ? void 0 : _a.call(userDefinedCellClass, excelStyle.id);
455
+ });
456
+ if (userDefinedExcelStyle) {
457
+ excelStyles.push(userDefinedExcelStyle);
458
+ }
459
+ // add adaptable derived styles (format column etc.)
460
+ const adaptableStyle = Object.assign(Object.assign({}, rowStyle), Object.keys(cellStyle).reduce((result, key) => {
461
+ if (cellStyle[key] !== null) {
462
+ result[key] = cellStyle[key];
463
+ }
464
+ return result;
465
+ }, {}));
466
+ const sanitizedAdaptableStyle = sanitizeStyle(adaptableStyle);
467
+ if (Object.values(sanitizedAdaptableStyle).some((style) => style != null)) {
468
+ excelStyles.push(this.convertCSSToExcelStyle(sanitizedAdaptableStyle));
469
+ }
470
+ const excelDataType = this.adaptableApi.exportApi.internalApi.getExcelDataType(colDef === null || colDef === void 0 ? void 0 : colDef.type);
471
+ const rawValue = this.adaptableApi.gridApi.getRawValueFromRowNode(node, column.getId());
472
+ // don't add the cell style if it has no adaptable custom styles
473
+ if (!excelStyles.length &&
474
+ // if this is a formatted Date value, we still need to add the AG GRID specific type & numberFormat below
475
+ !(excelDataType === 'DateTime' && isDateCellExportedAsFormattedValue)) {
476
+ return;
477
+ }
478
+ const cellClassId = this.adaptableApi.internalApi
479
+ .getAdaptableInstance()
480
+ .agGridColumnAdapter.getExcelClassNameForCell(column.getId(), this.adaptableApi.internalApi
481
+ .getAdaptableInstance()
482
+ .getPrimaryKeyValueFromRowNode(node), userDefinedCellClass);
483
+ const finalCellExcelStyle = Object.assign({}, ...excelStyles);
484
+ if (excelDataType === 'DateTime' && isDateCellExportedAsFormattedValue) {
485
+ let dateFormatPattern = this.adaptableApi.optionsApi.getExportOptions().exportDateFormat;
486
+ const abColumn = getAdaptableColumnWithColumnId(column.getColId());
487
+ if (!dateFormatPattern) {
488
+ const mostRelevantFormatColumn = this.adaptableApi.formatColumnApi.internalApi.getMostRelevantFormatColumnForColumn(getFormatColumnsWithDisplayFormatForColumn(column.getColId()), abColumn, { node, value: rawValue });
489
+ dateFormatPattern =
490
+ ((_a = mostRelevantFormatColumn === null || mostRelevantFormatColumn === void 0 ? void 0 : mostRelevantFormatColumn.DisplayFormat) === null || _a === void 0 ? void 0 : _a.Formatter) === 'DateFormatter' &&
491
+ ((_c = (_b = mostRelevantFormatColumn === null || mostRelevantFormatColumn === void 0 ? void 0 : mostRelevantFormatColumn.DisplayFormat) === null || _b === void 0 ? void 0 : _b.Options) === null || _c === void 0 ? void 0 : _c.Pattern);
492
+ }
493
+ if (dateFormatPattern) {
494
+ const normalisedValue = this.adaptableApi.internalApi
495
+ .getAdaptableInstance()
496
+ .getNormalisedValueFromRawValue(rawValue, abColumn);
497
+ if (normalisedValue) {
498
+ // we have to pass the date in the ISO format to Excel
499
+ // see https://www.ag-grid.com/javascript-data-grid/excel-export-data-types/#dates
500
+ // we can NOT use Date.toISOString() because we don't want the timezone corrections to kick in
501
+ const isoFormattedValue = DateFormatter(normalisedValue, {
502
+ Pattern: `yyyy-MM-dd'T'HH:mm:ss.SSS`,
503
+ });
504
+ if (isoFormattedValue) {
505
+ finalCellExcelStyle.dataType = 'DateTime';
506
+ finalCellExcelStyle.numberFormat = { format: dateFormatPattern };
507
+ // create a new cell key to ensure any user provided className does not interfere
508
+ const cellKey = this.adaptableApi.internalApi
509
+ .getAdaptableInstance()
510
+ .agGridColumnAdapter.getExcelClassNameForCell(column.getColId(), this.adaptableApi.internalApi
511
+ .getAdaptableInstance()
512
+ .getPrimaryKeyValueFromRowNode(node));
513
+ // we need to register so that later the cellProcessor will put the isoFormattedValue through (thus giving the formatting responsability to Excel)
514
+ this.registerExcelStyleWithFormattedDate(cellKey, isoFormattedValue);
515
+ }
516
+ }
517
+ }
518
+ }
519
+ this.registerExcelStyle(finalCellExcelStyle, cellClassId);
520
+ });
521
+ }, forAllVisibleRowNodesDoConfig);
522
+ }
523
+ convertCSSToExcelStyle(style) {
524
+ const getHexColor = (color) => {
525
+ const preparedColor = getVariableColor(color);
526
+ const t = tinycolor(preparedColor);
527
+ const a = t.getAlpha();
528
+ return tinycolor.mix(tinycolor('white'), t, a * 100).toHexString();
529
+ };
530
+ let result = {};
531
+ if (style.backgroundColor != null) {
532
+ result.interior = {
533
+ color: getHexColor(style.backgroundColor),
534
+ pattern: 'Solid',
535
+ };
536
+ }
537
+ if (style.borderColor != null) {
538
+ const excelBorder = {
539
+ color: style.borderColor,
540
+ lineStyle: 'Continuous',
541
+ weight: 1,
542
+ };
543
+ result.borders = {
544
+ borderBottom: excelBorder,
545
+ borderLeft: excelBorder,
546
+ borderRight: excelBorder,
547
+ borderTop: excelBorder,
548
+ };
549
+ }
550
+ if (style.textAlign) {
551
+ result.alignment = {
552
+ horizontal: StringExtensions.CapitaliseFirstLetter(style.textAlign),
553
+ };
554
+ }
555
+ if (style.color != null) {
556
+ if (!result.font) {
557
+ result.font = {};
558
+ }
559
+ result.font = {
560
+ color: getHexColor(style.color),
561
+ };
562
+ }
563
+ if (style.fontStyle === 'italic') {
564
+ if (!result.font) {
565
+ result.font = {};
566
+ }
567
+ result.font.italic = true;
568
+ }
569
+ if (style.fontWeight != null &&
570
+ (style.fontWeight === 'bold' || Number(style.fontWeight) >= 600)) {
571
+ if (!result.font) {
572
+ result.font = {};
573
+ }
574
+ result.font.bold = true;
575
+ }
576
+ if (style.fontSize != null) {
577
+ if (!result.font) {
578
+ result.font = {};
579
+ }
580
+ result.font.size = convertCSSAbsoluteFontSizeToPt(style.fontSize);
581
+ }
582
+ return result;
583
+ }
584
+ resetExcelStyleMemoization() {
585
+ this.excelStylesCache = {};
586
+ this.cellClassKey2excelStyleIdMap = {};
587
+ this.excelStylesWithFormattedDate = {};
588
+ }
589
+ registerExcelStyle(excelStyle, cellClassKey) {
590
+ const excelStyleKey = JSON.stringify(excelStyle);
591
+ if (!this.excelStylesCache[excelStyleKey]) {
592
+ const excelStyleId = createUuid();
593
+ const excelStyleWithId = Object.assign(Object.assign({}, excelStyle), { id: excelStyleId });
594
+ this.excelStylesCache[excelStyleKey] = excelStyleWithId;
595
+ }
596
+ this.cellClassKey2excelStyleIdMap[cellClassKey] = this.excelStylesCache[excelStyleKey].id;
597
+ }
598
+ registerExcelStyleWithFormattedDate(cellClassId, isoFormattedValue) {
599
+ this.excelStylesWithFormattedDate[cellClassId] = isoFormattedValue;
600
+ }
382
601
  }
@@ -0,0 +1,26 @@
1
+ import { AdaptableApi, Layout } from '../../types';
2
+ import { AggregatedScalarLiveValue } from './AggregatedScalarLiveValue';
3
+ /**
4
+ * The logic is extracted here to make it easier to follow
5
+ */
6
+ export declare class RowSummaryService {
7
+ private api;
8
+ cachedCellSummary: Map<string, AggregatedScalarLiveValue>;
9
+ previousRowSummaries: any;
10
+ previousLayout: Layout | null;
11
+ constructor(api: AdaptableApi);
12
+ onAdapterReady(): void;
13
+ rowSummariesSubscriptions(): void;
14
+ _throttleAcumulatedColumnsThatChanged: Set<string>;
15
+ throttledEvaluateRowSummary(reason?: {
16
+ columnIds: string[];
17
+ }): void;
18
+ /**
19
+ *
20
+ * @param colId optional to evaluate only one column
21
+ */
22
+ _throttledEvaluateRowSummary: import("lodash").DebouncedFunc<(reason?: {
23
+ columnIds: string[];
24
+ }) => void>;
25
+ private evaluateRowSummary;
26
+ }
@@ -0,0 +1,155 @@
1
+ import { isEqual } from 'lodash';
2
+ import { ROW_SUMMARY_ROW_ID, WEIGHTED_AVERAGE_AGGREATED_FUNCTION, } from '../../PredefinedConfig/Common/RowSummary';
3
+ import { SystemRowSummarySet } from '../../Redux/ActionsReducers/SystemRedux';
4
+ import * as ModuleConstants from '../../Utilities/Constants/ModuleConstants';
5
+ import Helper from '../Helpers/Helper';
6
+ import { AggregatedScalarLiveValue } from './AggregatedScalarLiveValue';
7
+ import { isObjectEmpty } from '../Extensions/ObjectExtensions';
8
+ import throttle from 'lodash/throttle';
9
+ /**
10
+ * The logic is extracted here to make it easier to follow
11
+ */
12
+ export class RowSummaryService {
13
+ constructor(api) {
14
+ this.api = api;
15
+ this.cachedCellSummary = new Map();
16
+ this._throttleAcumulatedColumnsThatChanged = new Set();
17
+ /**
18
+ *
19
+ * @param colId optional to evaluate only one column
20
+ */
21
+ this._throttledEvaluateRowSummary = throttle(this.evaluateRowSummary, 300);
22
+ }
23
+ onAdapterReady() {
24
+ this.rowSummariesSubscriptions();
25
+ }
26
+ rowSummariesSubscriptions() {
27
+ // return;
28
+ if (this.api.isDestroyed()) {
29
+ return;
30
+ }
31
+ // Currently not available for serverside model
32
+ if (!this.api.layoutApi.internalApi.getLayoutSupportedFeatures().RowSummaries) {
33
+ return;
34
+ }
35
+ this.throttledEvaluateRowSummary();
36
+ this.api.eventApi.on('AdaptableStateReloaded', () => {
37
+ this.throttledEvaluateRowSummary();
38
+ });
39
+ this.api.eventApi.on('GridDataChanged', (event) => {
40
+ this.throttledEvaluateRowSummary();
41
+ });
42
+ this.api.eventApi.on('CellChanged', (event) => {
43
+ const columnId = event.cellChange.column.columnId;
44
+ this.throttledEvaluateRowSummary({
45
+ columnIds: [columnId],
46
+ });
47
+ });
48
+ this.api.eventApi.on('LayoutChanged', (event) => {
49
+ // exclude filter events, those are handled in another event
50
+ if (event.actionName.includes('FILTER')) {
51
+ return;
52
+ }
53
+ setTimeout(() => {
54
+ // the timeout is added so the grid has time to repond to the layout changed
55
+ this.throttledEvaluateRowSummary();
56
+ }, 16);
57
+ });
58
+ const adaptable = this.api.internalApi.getAdaptableInstance();
59
+ adaptable._on('AdapTableFiltersApplied', () => {
60
+ // we need to use this instead of layout changed
61
+ // so the rows have time to update
62
+ this.throttledEvaluateRowSummary();
63
+ });
64
+ adaptable._on('FirstDataRendered', () => {
65
+ this.throttledEvaluateRowSummary();
66
+ });
67
+ }
68
+ throttledEvaluateRowSummary(reason) {
69
+ if (reason) {
70
+ reason.columnIds.forEach((col) => this._throttleAcumulatedColumnsThatChanged.add(col));
71
+ }
72
+ this._throttledEvaluateRowSummary(reason);
73
+ }
74
+ evaluateRowSummary(reason) {
75
+ var _a;
76
+ if (this._throttleAcumulatedColumnsThatChanged.size > 0) {
77
+ const columnIds = Array.from(this._throttleAcumulatedColumnsThatChanged.values());
78
+ reason = {
79
+ columnIds,
80
+ };
81
+ this._throttleAcumulatedColumnsThatChanged.clear();
82
+ }
83
+ if (this.api.isDestroyed()) {
84
+ return;
85
+ }
86
+ const currentLayout = this.api.layoutApi.getCurrentLayout();
87
+ let previousLayout = this.previousLayout;
88
+ // it is added here to be sure it is saved
89
+ this.previousLayout = currentLayout;
90
+ /**
91
+ * If the previous & current layout does not have row summaries, it is safe to exit
92
+ */
93
+ if (isObjectEmpty(currentLayout === null || currentLayout === void 0 ? void 0 : currentLayout.RowSummaries) && isObjectEmpty(previousLayout === null || previousLayout === void 0 ? void 0 : previousLayout.RowSummaries)) {
94
+ return;
95
+ }
96
+ const rowSummaries = (_a = this.api.layoutApi.getCurrentLayout().RowSummaries) !== null && _a !== void 0 ? _a : [];
97
+ const rowSummariesResults = rowSummaries.map(({ ColumnsMap, Position }) => {
98
+ return {
99
+ Position,
100
+ RowData: Object.entries(ColumnsMap !== null && ColumnsMap !== void 0 ? ColumnsMap : {}).reduce((acc, [columnId, expression]) => {
101
+ const key = `${columnId}-${expression}`;
102
+ let expressionLiveValue = this.cachedCellSummary.get(key);
103
+ if (expressionLiveValue) {
104
+ if (!reason) {
105
+ // refresh all of them
106
+ expressionLiveValue.refresh();
107
+ }
108
+ else if ('columnIds' in reason && reason.columnIds.includes(columnId)) {
109
+ expressionLiveValue.refresh();
110
+ }
111
+ }
112
+ if (!expressionLiveValue) {
113
+ try {
114
+ let aggregatedScalarExpression = `${expression}([${columnId}])`;
115
+ if (aggregatedScalarExpression.includes(WEIGHTED_AVERAGE_AGGREATED_FUNCTION) &&
116
+ currentLayout.AggregationColumns[columnId] &&
117
+ typeof currentLayout.AggregationColumns[columnId] === 'object') {
118
+ const weight = currentLayout.AggregationColumns[columnId]
119
+ .weightedColumnId;
120
+ if (weight) {
121
+ aggregatedScalarExpression = `AVG([${columnId}], WEIGHT([${weight}]))`;
122
+ }
123
+ }
124
+ expressionLiveValue = new AggregatedScalarLiveValue({
125
+ aggregatedScalarExpression,
126
+ }, ModuleConstants.LayoutModuleId, this.api, () => {
127
+ return this.api.gridApi.getVisibleRowNodes();
128
+ });
129
+ }
130
+ catch (e) {
131
+ this.api.logError('Error evaluating row summary', e);
132
+ }
133
+ this.cachedCellSummary.set(key, expressionLiveValue);
134
+ }
135
+ let value = null;
136
+ if (expressionLiveValue) {
137
+ value = expressionLiveValue.getGlobalAggregatedValue();
138
+ if (typeof value === 'number' && !isNaN(value)) {
139
+ value = Helper.roundNumber(value, 2);
140
+ }
141
+ }
142
+ acc[columnId] = value;
143
+ return acc;
144
+ }, {
145
+ [ROW_SUMMARY_ROW_ID]: true,
146
+ }),
147
+ };
148
+ });
149
+ if (this.previousRowSummaries && isEqual(rowSummariesResults, this.previousRowSummaries)) {
150
+ return;
151
+ }
152
+ this.api.internalApi.dispatchReduxAction(SystemRowSummarySet(rowSummariesResults));
153
+ this.previousRowSummaries = rowSummariesResults;
154
+ }
155
+ }
@@ -15,7 +15,7 @@ export class ValidationService {
15
15
  }
16
16
  let editingRules = this.adaptableApi.alertApi.internalApi
17
17
  .getAlertDefinitionsWithPreventEdit()
18
- .filter((v) => this.adaptableApi.scopeApi.isColumnInScope(cellDataChangedInfo.column, v.Scope));
18
+ .filter((v) => this.adaptableApi.columnScopeApi.isColumnInScope(cellDataChangedInfo.column, v.Scope));
19
19
  let failedValidations = [];
20
20
  if (ArrayExtensions.IsNotEmpty(editingRules)) {
21
21
  editingRules.forEach((alertDefinition) => {
@@ -127,7 +127,7 @@ export class ValidationService {
127
127
  }
128
128
  createValidationDescription(alertDefinition) {
129
129
  var _a, _b;
130
- return (this.adaptableApi.scopeApi.getScopeDescription(alertDefinition.Scope) +
130
+ return (this.adaptableApi.columnScopeApi.getScopeDescription(alertDefinition.Scope) +
131
131
  ' ' +
132
132
  ((_b = (_a = alertDefinition.Rule) === null || _a === void 0 ? void 0 : _a.Predicates) === null || _b === void 0 ? void 0 : _b.map((predicate) => this.adaptableApi.predicateApi.predicateToString(predicate)).join(' AND ')));
133
133
  }
@@ -0,0 +1,2 @@
1
+ import { AdaptableColumnDataType, ExpressionFunctionInputType } from '../types';
2
+ export declare const mapColumnDataTypeToExpressionFunctionType: (dataType: AdaptableColumnDataType) => ExpressionFunctionInputType;
@@ -0,0 +1,14 @@
1
+ export const mapColumnDataTypeToExpressionFunctionType = (dataType) => {
2
+ if (dataType === 'Number') {
3
+ return 'number';
4
+ }
5
+ if (dataType === 'Boolean') {
6
+ return 'boolean';
7
+ }
8
+ if (dataType === 'String') {
9
+ return 'text';
10
+ }
11
+ if (dataType === 'Date') {
12
+ return 'date';
13
+ }
14
+ };