@adaptabletools/adaptable-cjs 18.0.0-canary.2 → 18.0.0-canary.20

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 (367) hide show
  1. package/agGrid.d.ts +4 -21
  2. package/agGrid.js +5 -21
  3. package/base.css +22 -8
  4. package/base.css.map +1 -1
  5. package/index.css +101 -75
  6. package/index.css.map +1 -1
  7. package/package.json +4 -5
  8. package/src/AdaptableInterfaces/IAdaptable.d.ts +58 -108
  9. package/src/AdaptableOptions/AdaptableOptions.d.ts +13 -7
  10. package/src/AdaptableOptions/ColumnFilterOptions.d.ts +11 -4
  11. package/src/AdaptableOptions/ColumnOptions.d.ts +9 -4
  12. package/src/AdaptableOptions/CommentOptions.d.ts +33 -0
  13. package/src/AdaptableOptions/GroupingOptions.d.ts +0 -7
  14. package/src/AdaptableOptions/MenuOptions.d.ts +6 -54
  15. package/src/AdaptableOptions/MenuOptions.js +72 -75
  16. package/src/AdaptableOptions/{NotesOptions.d.ts → NoteOptions.d.ts} +7 -4
  17. package/src/AdaptableOptions/UserInterfaceOptions.d.ts +17 -0
  18. package/src/Api/AdaptableApi.d.ts +9 -4
  19. package/src/Api/BulkUpdateApi.d.ts +0 -5
  20. package/src/Api/ColumnApi.d.ts +4 -0
  21. package/src/Api/CommentApi.d.ts +11 -12
  22. package/src/Api/ConfigApi.d.ts +4 -5
  23. package/src/Api/EventApi.d.ts +7 -9
  24. package/src/Api/Events/AdaptableReady.d.ts +3 -3
  25. package/src/Api/Events/CommentChanged.d.ts +11 -0
  26. package/src/Api/Events/GridDataChanged.d.ts +4 -4
  27. package/src/Api/GridApi.d.ts +23 -13
  28. package/src/Api/Implementation/ActionColumnApiImpl.d.ts +2 -0
  29. package/src/Api/Implementation/ActionColumnApiImpl.js +30 -0
  30. package/src/Api/Implementation/AdaptableApiImpl.d.ts +3 -2
  31. package/src/Api/Implementation/AdaptableApiImpl.js +5 -2
  32. package/src/Api/Implementation/ApiBase.d.ts +5 -3
  33. package/src/Api/Implementation/ApiBase.js +8 -2
  34. package/src/Api/Implementation/BulkUpdateApiImpl.d.ts +0 -1
  35. package/src/Api/Implementation/BulkUpdateApiImpl.js +0 -4
  36. package/src/Api/Implementation/CellSummaryApiImpl.d.ts +0 -5
  37. package/src/Api/Implementation/CellSummaryApiImpl.js +2 -23
  38. package/src/Api/Implementation/ColumnApiImpl.d.ts +1 -0
  39. package/src/Api/Implementation/ColumnApiImpl.js +10 -0
  40. package/src/Api/Implementation/CommentsApiImpl.d.ts +5 -2
  41. package/src/Api/Implementation/CommentsApiImpl.js +7 -1
  42. package/src/Api/Implementation/ConfigApiImpl.d.ts +2 -2
  43. package/src/Api/Implementation/ConfigApiImpl.js +21 -13
  44. package/src/Api/Implementation/GridApiImpl.d.ts +6 -3
  45. package/src/Api/Implementation/GridApiImpl.js +49 -14
  46. package/src/Api/Implementation/LayoutApiImpl.d.ts +3 -0
  47. package/src/Api/Implementation/LayoutApiImpl.js +18 -0
  48. package/src/Api/Implementation/NoteApiImpl.d.ts +18 -0
  49. package/src/Api/Implementation/NoteApiImpl.js +45 -0
  50. package/src/Api/Implementation/OptionsApiImpl.d.ts +4 -4
  51. package/src/Api/Implementation/OptionsApiImpl.js +4 -4
  52. package/src/Api/Implementation/ScopeApiImpl.d.ts +2 -0
  53. package/src/Api/Implementation/ScopeApiImpl.js +20 -7
  54. package/src/Api/Implementation/StatusBarApiImpl.d.ts +0 -1
  55. package/src/Api/Implementation/StatusBarApiImpl.js +0 -3
  56. package/src/Api/Implementation/ToolPanelApiImpl.js +6 -6
  57. package/src/Api/Implementation/UserInterfaceApiImpl.d.ts +0 -3
  58. package/src/Api/Implementation/UserInterfaceApiImpl.js +0 -8
  59. package/src/Api/Internal/ActionRowInternalApi.d.ts +5 -1
  60. package/src/Api/Internal/ActionRowInternalApi.js +107 -0
  61. package/src/Api/Internal/AdaptableInternalApi.d.ts +6 -7
  62. package/src/Api/Internal/AdaptableInternalApi.js +21 -19
  63. package/src/Api/Internal/CalculatedColumnInternalApi.d.ts +2 -0
  64. package/src/Api/Internal/CalculatedColumnInternalApi.js +72 -0
  65. package/src/Api/Internal/ColumnFilterInternalApi.d.ts +2 -0
  66. package/src/Api/Internal/ColumnFilterInternalApi.js +23 -1
  67. package/src/Api/Internal/ColumnInternalApi.d.ts +4 -1
  68. package/src/Api/Internal/ColumnInternalApi.js +12 -0
  69. package/src/Api/Internal/CommentsInternalApi.d.ts +4 -0
  70. package/src/Api/Internal/CommentsInternalApi.js +18 -0
  71. package/src/Api/Internal/CustomSortInternalApi.d.ts +3 -2
  72. package/src/Api/Internal/CustomSortInternalApi.js +32 -1
  73. package/src/Api/Internal/DataSetInternalApi.js +1 -1
  74. package/src/Api/Internal/ExportInternalApi.d.ts +2 -1
  75. package/src/Api/Internal/ExportInternalApi.js +4 -1
  76. package/src/Api/Internal/Fdc3InternalApi.js +2 -2
  77. package/src/Api/Internal/FormatColumnInternalApi.js +3 -2
  78. package/src/Api/Internal/FreeTextColumnInternalApi.d.ts +2 -0
  79. package/src/Api/Internal/FreeTextColumnInternalApi.js +61 -0
  80. package/src/Api/Internal/GridFilterInternalApi.d.ts +5 -0
  81. package/src/Api/Internal/GridFilterInternalApi.js +7 -1
  82. package/src/Api/Internal/GridInternalApi.d.ts +23 -3
  83. package/src/Api/Internal/GridInternalApi.js +141 -7
  84. package/src/Api/Internal/LayoutInternalApi.d.ts +1 -0
  85. package/src/Api/Internal/LayoutInternalApi.js +16 -0
  86. package/src/Api/Internal/NoteInternalApi.d.ts +4 -0
  87. package/src/Api/Internal/NoteInternalApi.js +18 -0
  88. package/src/Api/Internal/TeamSharingInternalApi.js +1 -1
  89. package/src/Api/InteropioPluginApi.d.ts +2 -2
  90. package/src/Api/LayoutApi.d.ts +15 -0
  91. package/src/Api/NoteApi.d.ts +48 -0
  92. package/src/Api/OptionsApi.d.ts +8 -8
  93. package/src/Api/ScopeApi.d.ts +10 -0
  94. package/src/Api/UserInterfaceApi.d.ts +0 -11
  95. package/src/EnvVars.d.ts +3 -0
  96. package/src/EnvVars.js +8 -0
  97. package/src/PredefinedConfig/AdaptableState.d.ts +2 -2
  98. package/src/PredefinedConfig/CommentState.d.ts +27 -23
  99. package/src/PredefinedConfig/Common/AdaptableColumn.d.ts +4 -0
  100. package/src/PredefinedConfig/Common/AdaptableIcon.d.ts +1 -1
  101. package/src/PredefinedConfig/Common/AdaptableScope.d.ts +4 -1
  102. package/src/PredefinedConfig/Common/AggregationColumns.d.ts +1 -0
  103. package/src/PredefinedConfig/Common/AggregationColumns.js +5 -1
  104. package/src/PredefinedConfig/Common/DataUpdateConfig.d.ts +4 -0
  105. package/src/PredefinedConfig/Common/Enums.d.ts +2 -1
  106. package/src/PredefinedConfig/Common/Enums.js +1 -0
  107. package/src/PredefinedConfig/Common/Menu.d.ts +15 -1
  108. package/src/PredefinedConfig/Common/Menu.js +98 -0
  109. package/src/PredefinedConfig/Common/RowSummary.d.ts +21 -0
  110. package/src/PredefinedConfig/Common/RowSummary.js +20 -0
  111. package/src/PredefinedConfig/Common/TransposeConfig.d.ts +25 -0
  112. package/src/PredefinedConfig/Common/Types.d.ts +4 -4
  113. package/src/PredefinedConfig/Common/Types.js +4 -1
  114. package/src/PredefinedConfig/LayoutState.d.ts +5 -0
  115. package/src/PredefinedConfig/{NotesState.d.ts → NoteState.d.ts} +12 -22
  116. package/src/PredefinedConfig/PredefinedConfig.d.ts +3 -3
  117. package/src/PredefinedConfig/Selection/GridCell.d.ts +13 -0
  118. package/src/PredefinedConfig/SystemState.d.ts +9 -3
  119. package/src/Redux/ActionsReducers/LayoutRedux.d.ts +9 -0
  120. package/src/Redux/ActionsReducers/LayoutRedux.js +34 -11
  121. package/src/Redux/ActionsReducers/NoteRedux.d.ts +38 -0
  122. package/src/Redux/ActionsReducers/NoteRedux.js +89 -0
  123. package/src/Redux/ActionsReducers/SystemRedux.d.ts +6 -1
  124. package/src/Redux/ActionsReducers/SystemRedux.js +19 -6
  125. package/src/Redux/Store/AdaptableStore.d.ts +4 -6
  126. package/src/Redux/Store/AdaptableStore.js +66 -76
  127. package/src/Redux/Store/Interface/IAdaptableStore.d.ts +8 -2
  128. package/src/Strategy/AdaptableModuleBase.d.ts +8 -8
  129. package/src/Strategy/AdaptableModuleBase.js +13 -15
  130. package/src/Strategy/AlertModule.d.ts +1 -2
  131. package/src/Strategy/AlertModule.js +3 -56
  132. package/src/Strategy/BulkUpdateModule.js +1 -1
  133. package/src/Strategy/CalculatedColumnModule.d.ts +2 -3
  134. package/src/Strategy/CalculatedColumnModule.js +6 -26
  135. package/src/Strategy/CellSummaryModule.d.ts +8 -6
  136. package/src/Strategy/CellSummaryModule.js +78 -23
  137. package/src/Strategy/ChartingModule.d.ts +0 -1
  138. package/src/Strategy/ChartingModule.js +2 -22
  139. package/src/Strategy/ColumnFilterModule.d.ts +2 -3
  140. package/src/Strategy/ColumnFilterModule.js +44 -103
  141. package/src/Strategy/ColumnInfoModule.js +2 -0
  142. package/src/Strategy/{CommentsModule.d.ts → CommentModule.d.ts} +2 -5
  143. package/src/Strategy/{CommentsModule.js → CommentModule.js} +19 -25
  144. package/src/Strategy/CustomSortModule.js +3 -2
  145. package/src/Strategy/DashboardModule.d.ts +1 -2
  146. package/src/Strategy/DashboardModule.js +9 -15
  147. package/src/Strategy/DataChangeHistoryModule.d.ts +1 -0
  148. package/src/Strategy/DataChangeHistoryModule.js +3 -1
  149. package/src/Strategy/DataImportModule.d.ts +1 -1
  150. package/src/Strategy/DataImportModule.js +5 -5
  151. package/src/Strategy/DataSetModule.d.ts +1 -1
  152. package/src/Strategy/DataSetModule.js +1 -1
  153. package/src/Strategy/ExportModule.d.ts +1 -0
  154. package/src/Strategy/ExportModule.js +17 -2
  155. package/src/Strategy/Fdc3Module.js +3 -0
  156. package/src/Strategy/FlashingCellModule.d.ts +1 -2
  157. package/src/Strategy/FlashingCellModule.js +6 -19
  158. package/src/Strategy/FormatColumnModule.d.ts +0 -2
  159. package/src/Strategy/FormatColumnModule.js +6 -51
  160. package/src/Strategy/FreeTextColumnModule.d.ts +0 -1
  161. package/src/Strategy/FreeTextColumnModule.js +1 -31
  162. package/src/Strategy/GridFilterModule.d.ts +0 -1
  163. package/src/Strategy/GridFilterModule.js +0 -37
  164. package/src/Strategy/GridInfoModule.js +2 -0
  165. package/src/Strategy/Interface/IModule.d.ts +0 -1
  166. package/src/Strategy/LayoutModule.d.ts +9 -3
  167. package/src/Strategy/LayoutModule.js +143 -63
  168. package/src/Strategy/NamedQueryModule.d.ts +0 -1
  169. package/src/Strategy/NamedQueryModule.js +0 -19
  170. package/src/Strategy/{NotesModule.d.ts → NoteModule.d.ts} +2 -1
  171. package/src/Strategy/NoteModule.js +62 -0
  172. package/src/Strategy/PlusMinusModule.d.ts +1 -1
  173. package/src/Strategy/PlusMinusModule.js +2 -2
  174. package/src/Strategy/ScheduleModule.d.ts +1 -1
  175. package/src/Strategy/ScheduleModule.js +1 -1
  176. package/src/Strategy/SettingsPanelModule.js +3 -3
  177. package/src/Strategy/ShortcutModule.d.ts +1 -1
  178. package/src/Strategy/ShortcutModule.js +1 -1
  179. package/src/Strategy/SmartEditModule.js +1 -1
  180. package/src/Strategy/StyledColumnModule.d.ts +1 -1
  181. package/src/Strategy/StyledColumnModule.js +26 -26
  182. package/src/Strategy/SystemStatusModule.js +2 -2
  183. package/src/Strategy/TeamSharingModule.d.ts +1 -0
  184. package/src/Strategy/TeamSharingModule.js +5 -5
  185. package/src/Strategy/ToolPanelModule.d.ts +0 -1
  186. package/src/Strategy/ToolPanelModule.js +0 -23
  187. package/src/Strategy/Utilities/getScopeViewItems.js +3 -0
  188. package/src/Utilities/Constants/DocumentationLinkConstants.js +1 -1
  189. package/src/Utilities/Constants/GeneralConstants.d.ts +1 -0
  190. package/src/Utilities/Constants/GeneralConstants.js +3 -2
  191. package/src/Utilities/Constants/ModuleConstants.d.ts +6 -6
  192. package/src/Utilities/Constants/ModuleConstants.js +7 -7
  193. package/src/Utilities/Defaults/DefaultSettingsPanel.js +7 -6
  194. package/src/Utilities/ExpressionFunctions/aggregatedScalarExpressionFunctions.d.ts +3 -2
  195. package/src/Utilities/ExpressionFunctions/aggregatedScalarExpressionFunctions.js +430 -1
  196. package/src/Utilities/ExpressionFunctions/observableExpressionFunctions.js +3 -3
  197. package/src/Utilities/ExpressionFunctions/scalarAggregationHelper.js +1 -1
  198. package/src/Utilities/ExpressionFunctions/scalarExpressionFunctions.d.ts +1 -1
  199. package/src/Utilities/ExpressionFunctions/scalarExpressionFunctions.js +15 -0
  200. package/src/Utilities/Extensions/ArrayExtensions.d.ts +2 -0
  201. package/src/Utilities/Extensions/ArrayExtensions.js +6 -1
  202. package/src/Utilities/Helpers/AdaptableHelper.d.ts +3 -4
  203. package/src/Utilities/Helpers/AdaptableHelper.js +20 -60
  204. package/src/Utilities/Helpers/Helper.d.ts +2 -0
  205. package/src/Utilities/Helpers/Helper.js +6 -1
  206. package/src/Utilities/MenuItem.d.ts +7 -4
  207. package/src/Utilities/MenuItem.js +6 -3
  208. package/src/Utilities/ObjectFactory.d.ts +3 -3
  209. package/src/Utilities/ObjectFactory.js +4 -24
  210. package/src/Utilities/Services/AggregatedScalarLiveValue.d.ts +4 -2
  211. package/src/Utilities/Services/AggregatedScalarLiveValue.js +26 -19
  212. package/src/Utilities/Services/CellPopupService.js +2 -3
  213. package/src/Utilities/Services/Interface/IQueryLanguageService.d.ts +1 -1
  214. package/src/Utilities/Services/Interface/IReportService.d.ts +1 -4
  215. package/src/Utilities/Services/LicenseService/index.d.ts +3 -0
  216. package/src/Utilities/Services/LicenseService/index.js +1 -186
  217. package/src/Utilities/Services/MetamodelService.d.ts +1 -1
  218. package/src/Utilities/Services/MetamodelService.js +6 -3
  219. package/src/Utilities/Services/ModuleService.js +4 -0
  220. package/src/Utilities/Services/QueryLanguageService.d.ts +1 -1
  221. package/src/Utilities/Services/QueryLanguageService.js +4 -3
  222. package/src/Utilities/Services/ReportService.d.ts +7 -5
  223. package/src/Utilities/Services/ReportService.js +238 -22
  224. package/src/Utilities/Services/RowEditService.d.ts +3 -2
  225. package/src/Utilities/Services/RowEditService.js +3 -1
  226. package/src/Utilities/adaptableQlUtils.d.ts +2 -0
  227. package/src/Utilities/adaptableQlUtils.js +18 -0
  228. package/src/Utilities/license/decode.js +1 -70
  229. package/src/Utilities/license/hashing.js +1 -47
  230. package/src/View/AdaptableView.js +1 -3
  231. package/src/View/AdaptableViewFactory.js +2 -2
  232. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/ConfigurationWizard.js +2 -2
  233. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/UIOptions/UIOptionsStatusbarForm.js +1 -1
  234. package/src/View/BulkUpdate/BulkUpdatePopup.js +1 -1
  235. package/src/View/CalculatedColumn/Wizard/CalculatedColumnWizard.js +3 -3
  236. package/src/View/CalculatedColumn/utils.d.ts +1 -1
  237. package/src/View/CellSummary/CellSummaryPopup.js +1 -1
  238. package/src/View/Comments/CommentsEditor.js +24 -11
  239. package/src/View/Comments/CommentsPopup.js +20 -11
  240. package/src/View/Components/AdaptableDateInput/index.d.ts +1 -1
  241. package/src/View/Components/AdaptableInput/AdaptableDateInlineInput.d.ts +5 -0
  242. package/src/View/Components/AdaptableInput/AdaptableDateInlineInput.js +46 -0
  243. package/src/View/Components/AdaptableObjectList/AdaptableObjectList.js +5 -2
  244. package/src/View/Components/CellPopup/index.d.ts +1 -0
  245. package/src/View/Components/CellPopup/index.js +5 -2
  246. package/src/View/Components/FilterForm/FilterForm.js +20 -12
  247. package/src/View/Components/FilterForm/QuickFilterForm.js +15 -8
  248. package/src/View/Components/NewScopeComponent.js +34 -1
  249. package/src/View/Components/Popups/AdaptableLoadingScreen.d.ts +6 -5
  250. package/src/View/Components/Popups/AdaptableLoadingScreen.js +19 -9
  251. package/src/View/Components/Popups/AdaptableToaster.js +1 -1
  252. package/src/View/Components/Popups/GridCellPopup/GridCellPopup.js +7 -7
  253. package/src/View/Components/Popups/WindowPopups/windowFactory.d.ts +1 -0
  254. package/src/View/Components/Popups/WindowPopups/windowFactory.js +4 -1
  255. package/src/View/Components/Selectors/PermittedValuesSelector.js +2 -2
  256. package/src/View/Components/ValueSelector/index.d.ts +1 -0
  257. package/src/View/Components/ValueSelector/index.js +2 -2
  258. package/src/View/CustomSort/CustomSortSummary.js +1 -1
  259. package/src/View/DataChangeHistory/DataChangeHistoryGrid.js +8 -9
  260. package/src/View/FreeTextColumn/FreeTextColumnSummary.js +1 -1
  261. package/src/View/FreeTextColumn/Wizard/FreeTextColumnWizard.js +3 -1
  262. package/src/View/GridFilter/GridFilterViewPanel.js +9 -5
  263. package/src/View/GridFilter/useGridFilterExpressionEditor.js +1 -1
  264. package/src/View/GridInfo/GridInfoPopup/GridInfoPopup.js +2 -3
  265. package/src/View/Layout/LayoutViewPanel.js +2 -1
  266. package/src/View/Layout/TransposedPopup.d.ts +3 -0
  267. package/src/View/Layout/TransposedPopup.js +200 -0
  268. package/src/View/Layout/Wizard/LayoutWizard.js +36 -3
  269. package/src/View/Layout/Wizard/sections/ColumnsSection.js +1 -1
  270. package/src/View/Layout/Wizard/sections/RowSummarySection.d.ts +9 -0
  271. package/src/View/Layout/Wizard/sections/RowSummarySection.js +181 -0
  272. package/src/View/License/LicenseWatermark.js +1 -66
  273. package/src/View/Note/NotePopup.d.ts +2 -0
  274. package/src/View/{Notes/NotesPopup.js → Note/NotePopup.js} +19 -19
  275. package/src/View/SpecialColumnSettingsWizardStep.js +4 -4
  276. package/src/View/Theme/ThemeSelector.js +2 -2
  277. package/src/agGrid/ActionColumnRenderer.js +7 -6
  278. package/src/agGrid/Adaptable.d.ts +3 -455
  279. package/src/agGrid/Adaptable.js +7 -5291
  280. package/src/agGrid/AdaptableAgGrid.d.ts +352 -0
  281. package/src/agGrid/AdaptableAgGrid.js +3968 -0
  282. package/src/agGrid/AdaptableLogger.js +78 -13
  283. package/src/agGrid/AgGridAdapter.d.ts +64 -0
  284. package/src/agGrid/AgGridAdapter.js +590 -0
  285. package/src/agGrid/AgGridColumnAdapter.d.ts +56 -0
  286. package/src/agGrid/AgGridColumnAdapter.js +836 -0
  287. package/src/agGrid/AgGridMenuAdapter.d.ts +28 -0
  288. package/src/agGrid/AgGridMenuAdapter.js +282 -0
  289. package/src/agGrid/AgGridOptionsService.d.ts +15 -0
  290. package/src/agGrid/AgGridOptionsService.js +80 -0
  291. package/src/agGrid/BadgeRenderer.js +1 -1
  292. package/src/agGrid/CheckboxRenderer.js +1 -1
  293. package/src/agGrid/FilterWrapper.d.ts +2 -2
  294. package/src/agGrid/FilterWrapper.js +1 -1
  295. package/src/agGrid/attachAddaptableColumnTypes.d.ts +12 -12
  296. package/src/agGrid/defaultAdaptableOptions.d.ts +3 -0
  297. package/src/{Utilities/Defaults/DefaultAdaptableOptions.js → agGrid/defaultAdaptableOptions.js} +74 -18
  298. package/src/agGrid/editors/AdaptableDateEditor/index.d.ts +1 -1
  299. package/src/agGrid/editors/AdaptableDateEditor/index.js +3 -3
  300. package/src/agGrid/editors/AdaptableNumberEditor/index.d.ts +2 -2
  301. package/src/agGrid/editors/AdaptableNumberEditor/index.js +2 -2
  302. package/src/agGrid/weightedAverage.d.ts +0 -2
  303. package/src/agGrid/weightedAverage.js +1 -56
  304. package/src/components/ColorPicker/ColorPicker.d.ts +1 -1
  305. package/src/components/Datepicker/index.d.ts +1 -1
  306. package/src/components/Datepicker/index.js +10 -2
  307. package/src/components/ExpressionEditor/QueryBuilder/QueryPredicateBuilder.js +2 -1
  308. package/src/components/ExpressionEditor/QueryBuilder/utils.d.ts +0 -1
  309. package/src/components/ExpressionEditor/QueryBuilder/utils.js +3 -17
  310. package/src/components/InfiniteTable/index.js +2 -2
  311. package/src/components/Input/index.d.ts +1 -2
  312. package/src/components/List/ListGroupItem/index.d.ts +1 -1
  313. package/src/components/Modal/index.d.ts +1 -0
  314. package/src/components/Modal/index.js +6 -4
  315. package/src/components/Select/Select.d.ts +3 -1
  316. package/src/components/Select/Select.js +4 -2
  317. package/src/components/Textarea/index.d.ts +2 -2
  318. package/src/components/icons/index.js +2 -0
  319. package/src/components/icons/note.js +2 -2
  320. package/src/components/icons/rows.d.ts +3 -0
  321. package/src/components/icons/rows.js +7 -0
  322. package/src/env.js +2 -2
  323. package/src/metamodel/adaptable.metamodel.d.ts +186 -32
  324. package/src/metamodel/adaptable.metamodel.js +1 -9316
  325. package/src/migration/AdaptableUpgradeHelper.d.ts +38 -0
  326. package/src/migration/AdaptableUpgradeHelper.js +52 -0
  327. package/src/migration/VersionUpgrade.d.ts +8 -0
  328. package/src/migration/VersionUpgrade.js +15 -0
  329. package/src/migration/VersionUpgrade17.d.ts +18 -0
  330. package/src/migration/VersionUpgrade17.js +347 -0
  331. package/src/migration/VersionUpgrade18.d.ts +5 -0
  332. package/src/migration/VersionUpgrade18.js +10 -0
  333. package/src/parser/src/parser.js +117 -1257
  334. package/src/parser/src/predicate/mapExpressionToQlPredicate.js +1 -1
  335. package/src/parser/src/predicate/mapQlPredicateToExpression.js +2 -1
  336. package/src/parser/src/types.d.ts +7 -2
  337. package/src/types.d.ts +26 -19
  338. package/tsconfig.cjs.tsbuildinfo +1 -1
  339. package/src/AdaptableOptions/CommentsOptions.d.ts +0 -28
  340. package/src/Api/Events/CommentsChangedInfo.d.ts +0 -5
  341. package/src/Api/Implementation/NotesApiImpl.d.ts +0 -16
  342. package/src/Api/Implementation/NotesApiImpl.js +0 -44
  343. package/src/Api/NotesApi.d.ts +0 -48
  344. package/src/PredefinedConfig/CellAddress.d.ts +0 -13
  345. package/src/PredefinedConfig/CellAddress.js +0 -5
  346. package/src/Redux/ActionsReducers/NotesRedux.d.ts +0 -39
  347. package/src/Redux/ActionsReducers/NotesRedux.js +0 -87
  348. package/src/Strategy/NotesModule.js +0 -62
  349. package/src/Utilities/Defaults/DefaultAdaptableOptions.d.ts +0 -2
  350. package/src/Utilities/Services/Interface/IRowEditService.d.ts +0 -3
  351. package/src/View/Components/ScopeComponent.d.ts +0 -24
  352. package/src/View/Components/ScopeComponent.js +0 -138
  353. package/src/View/Export/Wizard/ReportScopeWizard.d.ts +0 -17
  354. package/src/View/Export/Wizard/ReportScopeWizard.js +0 -52
  355. package/src/View/Notes/NotesPopup.d.ts +0 -2
  356. package/src/agGrid/agGridHelper.d.ts +0 -57
  357. package/src/agGrid/agGridHelper.js +0 -691
  358. package/src/agGrid/agGridMenuHelper.d.ts +0 -46
  359. package/src/agGrid/agGridMenuHelper.js +0 -673
  360. /package/src/AdaptableOptions/{CommentsOptions.js → CommentOptions.js} +0 -0
  361. /package/src/AdaptableOptions/{NotesOptions.js → NoteOptions.js} +0 -0
  362. /package/src/Api/Events/{CommentsChangedInfo.js → CommentChanged.js} +0 -0
  363. /package/src/Api/{NotesApi.js → NoteApi.js} +0 -0
  364. /package/src/PredefinedConfig/{NotesState.js → Common/TransposeConfig.js} +0 -0
  365. /package/src/{Utilities/Services/Interface/IRowEditService.js → PredefinedConfig/NoteState.js} +0 -0
  366. /package/src/View/{Notes → Note}/NoteEditor.d.ts +0 -0
  367. /package/src/View/{Notes → Note}/NoteEditor.js +0 -0
@@ -14,8 +14,6 @@ const getFormatColumnStyleViewItems_1 = require("./Utilities/FormatColumn/getFor
14
14
  const getObjectTagsViewItems_1 = require("./Utilities/getObjectTagsViewItems");
15
15
  const getRuleViewItems_1 = require("./Utilities/getRuleViewItems");
16
16
  const MoveFormatColumn_1 = require("../View/FormatColumn/MoveFormatColumn");
17
- const Helper_1 = require("../Utilities/Helpers/Helper");
18
- const updateSingleToMultiplePredicates_1 = require("./Utilities/updateSingleToMultiplePredicates");
19
17
  const ArrayExtensions_1 = tslib_1.__importDefault(require("../Utilities/Extensions/ArrayExtensions"));
20
18
  class FormatColumnModule extends AdaptableModuleBase_1.AdaptableModuleBase {
21
19
  constructor(api) {
@@ -43,51 +41,6 @@ class FormatColumnModule extends AdaptableModuleBase_1.AdaptableModuleBase {
43
41
  }
44
42
  return this.api.namedQueryApi.internalApi.getReferencedNamedQueryNames(queryExpression);
45
43
  }
46
- updateOldConfig() {
47
- this.updateFormatColumnSingleToMultiplePredicates();
48
- // update ConditionalStyle StatusBarPanel
49
- const oldStatusBars = this.api.internalApi.getState().StatusBar.StatusBars;
50
- let replaceConditionalStyleStatusBar = false;
51
- const newStatusBars = oldStatusBars.map((statusBar) => (Object.assign(Object.assign({}, statusBar), { StatusBarPanels: [
52
- ...new Set(statusBar.StatusBarPanels.map((statusBarPanel) => {
53
- if (statusBarPanel === 'ConditionalStyle') {
54
- replaceConditionalStyleStatusBar = true;
55
- return 'FormatColumn';
56
- }
57
- return statusBarPanel;
58
- })),
59
- ] })));
60
- if (replaceConditionalStyleStatusBar) {
61
- this.api.statusBarApi.setStatusBarPanels(newStatusBars);
62
- }
63
- // update ConditionalStyle dashboard buttons
64
- const dashboardModuleButtons = this.api.internalApi.getState().Dashboard.ModuleButtons;
65
- if (dashboardModuleButtons.includes('ConditionalStyle')) {
66
- dashboardModuleButtons[dashboardModuleButtons.indexOf('ConditionalStyle')] = 'FormatColumn';
67
- const test2 = dashboardModuleButtons;
68
- this.api.dashboardApi.setModuleButtons([
69
- ...new Set(dashboardModuleButtons),
70
- ]);
71
- }
72
- // update ConditionalStyle toolPanel buttons
73
- const toolPanelModuleButtons = this.api.internalApi.getState().ToolPanel.ModuleButtons;
74
- if (toolPanelModuleButtons.includes('ConditionalStyle')) {
75
- toolPanelModuleButtons[toolPanelModuleButtons.indexOf('ConditionalStyle')] = 'FormatColumn';
76
- this.api.toolPanelApi.setModuleButtons([
77
- ...new Set(dashboardModuleButtons),
78
- ]);
79
- }
80
- }
81
- updateFormatColumnSingleToMultiplePredicates() {
82
- const formatColumns = this.api.formatColumnApi.getFormatColumns();
83
- formatColumns.forEach((formatColumn) => {
84
- if (formatColumn.Rule && 'Predicate' in formatColumn.Rule) {
85
- const preparedFormatColumn = (0, Helper_1.cloneObject)(formatColumn);
86
- (0, updateSingleToMultiplePredicates_1.updateSingleToMultiplePredicates)(preparedFormatColumn.Rule);
87
- this.api.formatColumnApi.editFormatColumn(preparedFormatColumn);
88
- }
89
- });
90
- }
91
44
  addColumnMenuItems(column) {
92
45
  let returnColumnMenuItems = [];
93
46
  if (column && this.isModuleEditable() && !column.isSparkline) {
@@ -96,12 +49,12 @@ class FormatColumnModule extends AdaptableModuleBase_1.AdaptableModuleBase {
96
49
  action: 'New',
97
50
  source: 'ColumnMenu',
98
51
  };
99
- const createFormatColumnMenuItem = this.createColumnMenuItemShowPopup('Create', this.moduleInfo.Popup, 'plus', createPopupParam);
52
+ const createFormatColumnMenuItem = this.createMenuItemShowPopup('format-column-add', 'Create', this.moduleInfo.Popup, 'plus', createPopupParam);
100
53
  const formatColumnsForColumn = this.api.formatColumnApi.getFormatColumnsForColumnId(column.columnId);
101
54
  // .filter((fc) => this.api.scopeApi.isSingleColumnScope(fc.Scope));
102
55
  // if no formats then just show Create
103
56
  if (ArrayExtensions_1.default.IsNullOrEmpty(formatColumnsForColumn)) {
104
- returnColumnMenuItems.push(this.createColumnMenuItemShowPopup('Create Format Column', this.moduleInfo.Popup, this.moduleInfo.Glyph, createPopupParam));
57
+ returnColumnMenuItems.push(this.createMenuItemShowPopup('format-column-add', 'Create Format Column', this.moduleInfo.Popup, this.moduleInfo.Glyph, createPopupParam));
105
58
  // if 1 format then show a Create and an Edit
106
59
  }
107
60
  else if (formatColumnsForColumn.length == 1) {
@@ -111,8 +64,9 @@ class FormatColumnModule extends AdaptableModuleBase_1.AdaptableModuleBase {
111
64
  value: formatColumnsForColumn[0],
112
65
  source: 'ColumnMenu',
113
66
  };
114
- const editFormatColumnMenuItem = this.createColumnMenuItemShowPopup('Edit', this.moduleInfo.Popup, 'edit', editPopupParam);
67
+ const editFormatColumnMenuItem = this.createMenuItemShowPopup('format-column-edit', 'Edit', this.moduleInfo.Popup, 'edit', editPopupParam);
115
68
  returnColumnMenuItems.push({
69
+ name: 'parent',
116
70
  label: 'Format Column',
117
71
  module: this.moduleInfo.ModuleName,
118
72
  isVisible: true,
@@ -127,8 +81,9 @@ class FormatColumnModule extends AdaptableModuleBase_1.AdaptableModuleBase {
127
81
  const moduleInfo = this.api.internalApi
128
82
  .getModuleService()
129
83
  .getModuleInfoByModule('FormatColumn');
130
- const editFormatColumnMenuItem = this.createColumnMenuItemReduxAction('Show Current', this.moduleInfo.Glyph, PopupRedux.PopupShowScreen('FormatColumn', moduleInfo.Popup));
84
+ const editFormatColumnMenuItem = this.createMenuItemReduxAction('format-column-edit', 'Show Current', this.moduleInfo.Glyph, PopupRedux.PopupShowScreen('FormatColumn', moduleInfo.Popup));
131
85
  returnColumnMenuItems.push({
86
+ name: 'parent',
132
87
  label: 'Format Column',
133
88
  module: this.moduleInfo.ModuleName,
134
89
  isVisible: true,
@@ -12,7 +12,6 @@ export declare class FreeTextColumnModule extends AdaptableModuleBase implements
12
12
  isModuleAvailable(): boolean;
13
13
  getModuleAdaptableObjects(): FreeTextColumn[];
14
14
  hasNamedQueryReferences(): boolean;
15
- updateOldConfig(): void;
16
15
  addColumnMenuItems(column: AdaptableColumn): AdaptableMenuItem[] | undefined;
17
16
  getTeamSharingAction(): TeamSharingImportInfo<FreeTextColumn>;
18
17
  toView(freeTextColumn: FreeTextColumn): AdaptableObjectView;
@@ -21,36 +21,6 @@ class FreeTextColumnModule extends AdaptableModuleBase_1.AdaptableModuleBase {
21
21
  hasNamedQueryReferences() {
22
22
  return false;
23
23
  }
24
- updateOldConfig() {
25
- // make sure all default to type string
26
- const allFreeTextColumns = this.getModuleAdaptableObjects();
27
- for (const freeTextColumn of allFreeTextColumns) {
28
- const unTypedCol = freeTextColumn;
29
- if (unTypedCol.DataType) {
30
- const dataType = unTypedCol.DataType;
31
- delete unTypedCol['DataType'];
32
- if (!freeTextColumn.FreeTextColumnSettings) {
33
- freeTextColumn.FreeTextColumnSettings = {
34
- DataType: dataType,
35
- };
36
- }
37
- else {
38
- freeTextColumn.FreeTextColumnSettings.DataType = dataType;
39
- }
40
- this.api.freeTextColumnApi.editFreeTextColumn(freeTextColumn);
41
- }
42
- if (!freeTextColumn.FreeTextColumnSettings) {
43
- freeTextColumn.FreeTextColumnSettings = {
44
- DataType: 'String',
45
- };
46
- this.api.freeTextColumnApi.editFreeTextColumn(freeTextColumn);
47
- }
48
- if (!freeTextColumn.FreeTextColumnSettings.DataType) {
49
- freeTextColumn.FreeTextColumnSettings.DataType = 'String';
50
- this.api.freeTextColumnApi.editFreeTextColumn(freeTextColumn);
51
- }
52
- }
53
- }
54
24
  addColumnMenuItems(column) {
55
25
  if (column && this.isModuleEditable()) {
56
26
  if (this.api.freeTextColumnApi
@@ -62,7 +32,7 @@ class FreeTextColumnModule extends AdaptableModuleBase_1.AdaptableModuleBase {
62
32
  source: 'ColumnMenu',
63
33
  };
64
34
  return [
65
- this.createColumnMenuItemShowPopup('Edit Free Text Column', this.moduleInfo.Popup, this.moduleInfo.Glyph, popupParam),
35
+ this.createMenuItemShowPopup('free-text-column-edit', 'Edit Free Text Column', this.moduleInfo.Popup, this.moduleInfo.Glyph, popupParam),
66
36
  ];
67
37
  }
68
38
  }
@@ -3,6 +3,5 @@ import { AdaptableModuleView, IModule } from './Interface/IModule';
3
3
  import { AdaptableModuleBase } from './AdaptableModuleBase';
4
4
  export declare class GridFilterModule extends AdaptableModuleBase implements IModule {
5
5
  constructor(api: AdaptableApi);
6
- updateOldConfig(): void;
7
6
  getViewProperties(): AdaptableModuleView;
8
7
  }
@@ -6,47 +6,10 @@ const AdaptableModuleBase_1 = require("./AdaptableModuleBase");
6
6
  const ModuleConstants = tslib_1.__importStar(require("../Utilities/Constants/ModuleConstants"));
7
7
  const EditCurrentQueryButton_1 = require("../View/NamedQuery/EditCurrentQueryButton");
8
8
  const GridFilterStatusbar_1 = require("../View/GridFilter/GridFilterStatusbar");
9
- const StringExtensions_1 = tslib_1.__importDefault(require("../Utilities/Extensions/StringExtensions"));
10
9
  class GridFilterModule extends AdaptableModuleBase_1.AdaptableModuleBase {
11
10
  constructor(api) {
12
11
  super(ModuleConstants.GridFilterModuleId, ModuleConstants.GridFilterFriendlyName, 'filter-list', 'GridFilterPopup', 'Controls the Grid Filter funtionality', api);
13
12
  }
14
- updateOldConfig() {
15
- var _a, _b;
16
- const oldQueryState = this.api.internalApi.getAdaptableState().Query;
17
- // - move query to current layout
18
- const expression = oldQueryState.CurrentQuery;
19
- if (expression &&
20
- StringExtensions_1.default.IsNullOrEmpty(this.api.gridFilterApi.getCurrentGridFilterExpression())) {
21
- this.api.gridFilterApi.setGridFilterExpression(expression);
22
- }
23
- // - move dashboard/toolbar
24
- let updateTabs = false;
25
- const tabs = this.api.dashboardApi.getTabs().map((tab) => {
26
- if (tab.Toolbars.includes('Query')) {
27
- updateTabs = true;
28
- return Object.assign(Object.assign({}, tab), {
29
- // replace with 'GridFilter'
30
- Toolbars: tab.Toolbars.map((t) => (t == 'Query' ? 'GridFilter' : t)) });
31
- }
32
- return tab;
33
- });
34
- if (updateTabs) {
35
- this.api.dashboardApi.setTabs(tabs);
36
- }
37
- // - move pinned toolbars
38
- let updatePinnedToolbars = false;
39
- const pinnedToolbars = (_b = (_a = this.api.dashboardApi.getPinnedToolbars()) === null || _a === void 0 ? void 0 : _a.map) === null || _b === void 0 ? void 0 : _b.call(_a, (pinnedToolbar) => {
40
- if (pinnedToolbar == 'Query') {
41
- updatePinnedToolbars = true;
42
- return 'GridFilter';
43
- }
44
- return pinnedToolbar;
45
- });
46
- if (updatePinnedToolbars) {
47
- this.api.dashboardApi.setPinnedToolbars(pinnedToolbars);
48
- }
49
- }
50
13
  getViewProperties() {
51
14
  return {
52
15
  getStatusBarPanelProps: () => {
@@ -15,6 +15,7 @@ class GridInfoModule extends AdaptableModuleBase_1.AdaptableModuleBase {
15
15
  if (this.isModuleAvailable()) {
16
16
  return [
17
17
  this.createMainMenuItemShowPopup({
18
+ Name: 'grid-info-show',
18
19
  Label: 'Grid Info',
19
20
  ComponentName: this.moduleInfo.Popup,
20
21
  Icon: this.moduleInfo.Glyph,
@@ -26,6 +27,7 @@ class GridInfoModule extends AdaptableModuleBase_1.AdaptableModuleBase {
26
27
  if (this.isModuleAvailable()) {
27
28
  return [
28
29
  this.createMainMenuItemShowPopup({
30
+ Name: 'grid-info-show',
29
31
  Label: 'Grid Info',
30
32
  ComponentName: this.moduleInfo.Popup,
31
33
  Icon: this.moduleInfo.Glyph,
@@ -156,7 +156,6 @@ export interface IModule {
156
156
  getModuleFreeTextColumnReferences(): FreeTextColumn[];
157
157
  getPopupMaxWidth(): number | undefined;
158
158
  canBeAssociatedWithLayouts(): boolean;
159
- updateOldConfig(): void;
160
159
  /**
161
160
  * The following view options are used to render adaptable objects and
162
161
  * module general views.
@@ -7,16 +7,17 @@ import { AdaptableColumn } from '../PredefinedConfig/Common/AdaptableColumn';
7
7
  import { AdaptableApi } from '../Api/AdaptableApi';
8
8
  import { AdaptableModuleView, IModule, TeamSharingReferences } from './Interface/IModule';
9
9
  import { AdaptableObject } from '../PredefinedConfig/Common/AdaptableObject';
10
+ import { AggregatedScalarLiveValue } from '../Utilities/Services/AggregatedScalarLiveValue';
10
11
  export declare class LayoutModule extends AdaptableModuleBase implements IModule {
12
+ cachedCellSummary: Map<string, AggregatedScalarLiveValue>;
11
13
  protected LayoutState: LayoutState;
12
14
  constructor(api: AdaptableApi);
13
- updateOldConfig(): void;
14
- private clearUnsuportedFeaturesFromLayout;
15
+ onAdaptableReady(): void;
16
+ rowSummariesSubscribtions(): void;
15
17
  getModuleAdaptableObjects(): AdaptableObject[];
16
18
  getExplicitlyReferencedColumnIds(layout: Layout): string[];
17
19
  getTeamSharingReferences(adaptableObject: AdaptableObject): TeamSharingReferences;
18
20
  hasNamedQueryReferences(): boolean;
19
- handleAdaptableReady(): void;
20
21
  addColumnMenuItems(column: AdaptableColumn): AdaptableMenuItem[] | undefined;
21
22
  addContextMenuItems(menuContext: ContextMenuContext): AdaptableMenuItem[] | undefined;
22
23
  private createViewPivotItemsMenuItem;
@@ -44,4 +45,9 @@ export declare class LayoutModule extends AdaptableModuleBase implements IModule
44
45
  getViewProperties(): AdaptableModuleView;
45
46
  handleLayoutChange(): void;
46
47
  getReferencedNamedQueryNames(layout: Layout): string[];
48
+ /**
49
+ *
50
+ * @param colId optional to evaluate only one column
51
+ */
52
+ private evaluateRowSummary;
47
53
  }
@@ -19,42 +19,16 @@ const windowFactory_1 = require("../View/Components/Popups/WindowPopups/windowFa
19
19
  const flattenDeep_1 = tslib_1.__importDefault(require("lodash/flattenDeep"));
20
20
  const StringExtensions_1 = tslib_1.__importDefault(require("../Utilities/Extensions/StringExtensions"));
21
21
  const getGridFilterPreview_1 = require("../View/Layout/Wizard/getGridFilterPreview");
22
+ const AggregatedScalarLiveValue_1 = require("../Utilities/Services/AggregatedScalarLiveValue");
23
+ const SystemRedux_1 = require("../Redux/ActionsReducers/SystemRedux");
24
+ const RowSummary_1 = require("../PredefinedConfig/Common/RowSummary");
25
+ const Helper_1 = tslib_1.__importDefault(require("../Utilities/Helpers/Helper"));
22
26
  class LayoutModule extends AdaptableModuleBase_1.AdaptableModuleBase {
23
27
  constructor(api) {
24
28
  super(ModuleConstants.LayoutModuleId, ModuleConstants.LayoutFriendlyName, 'grid', 'LayoutPopup', 'Named sets of column visibility, order, groupings, aggregation, pivots etc.', api);
25
- this.clearUnsuportedFeaturesFromLayout = (layout) => {
26
- const layoutSupportedFeatures = this.api.layoutApi.internalApi.getLayoutSupportedFeatures();
27
- let needsUpdate = false;
28
- const layoutToSave = Object.assign({}, layout);
29
- if (!layoutSupportedFeatures.RowGroupedColumns && layout.RowGroupedColumns) {
30
- delete layoutToSave.RowGroupedColumns;
31
- needsUpdate = true;
32
- }
33
- if (!layoutSupportedFeatures.AggregationColumns && layout.AggregationColumns) {
34
- delete layoutToSave.AggregationColumns;
35
- needsUpdate = true;
36
- }
37
- if (!layoutSupportedFeatures.PivotColumns && layout.PivotColumns) {
38
- delete layoutToSave.PivotColumns;
39
- delete layoutToSave.EnablePivot;
40
- needsUpdate = true;
41
- }
42
- if (!layoutSupportedFeatures.ColumnFilters && layout.ColumnFilters) {
43
- delete layoutToSave.ColumnFilters;
44
- needsUpdate = true;
45
- }
46
- if (!layoutSupportedFeatures.GridFilter && layout.GridFilter) {
47
- delete layoutToSave.GridFilter;
48
- needsUpdate = true;
49
- }
50
- if (!layoutSupportedFeatures.ColumnSorts && layout.ColumnSorts) {
51
- delete layoutToSave.ColumnSorts;
52
- needsUpdate = true;
53
- }
54
- if (needsUpdate) {
55
- this.api.layoutApi.createOrUpdateLayout(layoutToSave);
56
- }
57
- };
29
+ this.cachedCellSummary = new Map();
30
+ }
31
+ onAdaptableReady() {
58
32
  this.api.eventApi.on('LayoutChanged', (layoutChangedInfo) => {
59
33
  var _a;
60
34
  if (layoutChangedInfo.newLayoutState.CurrentLayout !==
@@ -63,17 +37,45 @@ class LayoutModule extends AdaptableModuleBase_1.AdaptableModuleBase {
63
37
  this.handleLayoutChange();
64
38
  }
65
39
  });
40
+ requestAnimationFrame(() => {
41
+ this.api.layoutApi.internalApi.fireLayoutChangedEvent('ADAPTABLE_READY', null, this.api.layoutApi.getLayoutState());
42
+ });
43
+ this.rowSummariesSubscribtions();
66
44
  }
67
- updateOldConfig() {
68
- /**
69
- * Viewport mode does not support a few
70
- * features instead of complicating the
71
- * logic where layout is applied, it is easier and
72
- * less error prone to just remove it.
73
- */
74
- if (this.api.gridApi.getAgGridRowModelType() === 'viewport') {
75
- this.api.layoutApi.getLayouts().forEach(this.clearUnsuportedFeaturesFromLayout);
76
- }
45
+ rowSummariesSubscribtions() {
46
+ // ROW SUMMARY
47
+ this.evaluateRowSummary();
48
+ this.api.eventApi.on('AdaptableStateReloaded', () => {
49
+ this.evaluateRowSummary();
50
+ });
51
+ this.api.eventApi.on('GridDataChanged', (event) => {
52
+ this.evaluateRowSummary();
53
+ });
54
+ this.api.eventApi.on('CellChanged', (event) => {
55
+ const columnId = event.cellChange.column.columnId;
56
+ this.evaluateRowSummary({
57
+ columnId,
58
+ });
59
+ });
60
+ this.api.eventApi.on('LayoutChanged', (event) => {
61
+ // exclude filter events, those are handled in another event
62
+ if (event.actionName.includes('FILTER')) {
63
+ return;
64
+ }
65
+ setTimeout(() => {
66
+ // the timeout is added so the grid has time to repond to the layout changed
67
+ this.evaluateRowSummary();
68
+ }, 16);
69
+ });
70
+ const adaptable = this.api.internalApi.getAdaptableInstance();
71
+ adaptable._on('AdapTableFiltersApplied', () => {
72
+ // we need to use this instead of layout changed
73
+ // so the rows have time to update
74
+ this.evaluateRowSummary();
75
+ });
76
+ adaptable._on('FirstDataRendered', () => {
77
+ this.evaluateRowSummary();
78
+ });
77
79
  }
78
80
  getModuleAdaptableObjects() {
79
81
  return this.api.layoutApi.getLayouts();
@@ -141,18 +143,13 @@ class LayoutModule extends AdaptableModuleBase_1.AdaptableModuleBase {
141
143
  hasNamedQueryReferences() {
142
144
  return true;
143
145
  }
144
- handleAdaptableReady() {
145
- requestAnimationFrame(() => {
146
- this.api.layoutApi.internalApi.fireLayoutChangedEvent('ADAPTABLE_READY', null, this.api.layoutApi.getLayoutState());
147
- });
148
- }
149
146
  addColumnMenuItems(column) {
150
147
  var _a, _b;
151
148
  let returnColumnMenuItems = [];
152
149
  if (this.isModuleEditable()) {
153
150
  const isReadOnlyLayout = this.api.layoutApi.isCurrentLayoutReadOnly();
154
151
  if (!isReadOnlyLayout) {
155
- returnColumnMenuItems.push(this.createColumnMenuItemShowPopup('Edit Layout', this.moduleInfo.Popup, this.moduleInfo.Glyph, {
152
+ returnColumnMenuItems.push(this.createMenuItemShowPopup('layout-edit', 'Edit Layout', this.moduleInfo.Popup, this.moduleInfo.Glyph, {
156
153
  action: 'Edit',
157
154
  source: 'ColumnMenu',
158
155
  value: this.api.layoutApi.getCurrentLayout(),
@@ -160,10 +157,10 @@ class LayoutModule extends AdaptableModuleBase_1.AdaptableModuleBase {
160
157
  }
161
158
  if (column) {
162
159
  if (!isReadOnlyLayout) {
163
- returnColumnMenuItems.push(this.createColumnMenuItemClickFunction('Change Caption', 'edit', () => this.api.layoutApi.showChangeColumnCaption(column)));
160
+ returnColumnMenuItems.push(this.createMenuItemClickFunction('layout-column-caption-change', 'Change Caption', 'edit', () => this.api.layoutApi.showChangeColumnCaption(column)));
164
161
  }
165
162
  if (column.hideable) {
166
- returnColumnMenuItems.push(this.createColumnMenuItemClickFunction('Hide Column', 'visibility-off-bold', () => {
163
+ returnColumnMenuItems.push(this.createMenuItemClickFunction('layout-column-hide', 'Hide Column', 'visibility-off-bold', () => {
167
164
  this.api.columnApi.hideColumn(column.columnId);
168
165
  }));
169
166
  }
@@ -172,23 +169,24 @@ class LayoutModule extends AdaptableModuleBase_1.AdaptableModuleBase {
172
169
  if (column) {
173
170
  const hasExistingSelection = (_b = (_a = this.api.gridApi.getSelectedCellInfo()) === null || _a === void 0 ? void 0 : _a.gridCells) === null || _b === void 0 ? void 0 : _b.length;
174
171
  if (hasExistingSelection) {
175
- selectMenuItems.push(this.createColumnMenuItemClickFunction('Column (Preserve Selection)', 'column-add', () => {
172
+ selectMenuItems.push(this.createMenuItemClickFunction('layout-column-select-preserve', 'Column (Preserve Selection)', 'column-add', () => {
176
173
  this.api.columnApi.addColumnToSelection(column.columnId);
177
174
  }));
178
- selectMenuItems.push(this.createColumnMenuItemClickFunction('Column (Reset Selection)', 'columns', () => {
175
+ selectMenuItems.push(this.createMenuItemClickFunction('layout-column-select-reset', 'Column (Reset Selection)', 'columns', () => {
179
176
  this.api.columnApi.selectColumn(column.columnId);
180
177
  }));
181
178
  }
182
179
  else {
183
- selectMenuItems.push(this.createColumnMenuItemClickFunction('Column', 'columns', () => {
180
+ selectMenuItems.push(this.createMenuItemClickFunction('layout-column-select', 'Column', 'columns', () => {
184
181
  this.api.columnApi.selectColumn(column.columnId);
185
182
  }));
186
183
  }
187
184
  }
188
- selectMenuItems.push(this.createColumnMenuItemClickFunction('Whole Grid', this.moduleInfo.Glyph, () => {
185
+ selectMenuItems.push(this.createMenuItemClickFunction('layout-select-all', 'Whole Grid', this.moduleInfo.Glyph, () => {
189
186
  this.api.gridApi.selectAll();
190
187
  }));
191
188
  returnColumnMenuItems.push({
189
+ name: 'layout-select-parent',
192
190
  label: 'Select',
193
191
  isVisible: true,
194
192
  module: this.moduleInfo.ModuleName,
@@ -203,7 +201,7 @@ class LayoutModule extends AdaptableModuleBase_1.AdaptableModuleBase {
203
201
  addContextMenuItems(menuContext) {
204
202
  let returnColumnMenuItems = [];
205
203
  if (this.isModuleEditable() && !this.api.layoutApi.isCurrentLayoutReadOnly()) {
206
- returnColumnMenuItems.push(this.createColumnMenuItemShowPopup('Edit Layout', this.moduleInfo.Popup, this.moduleInfo.Glyph, {
204
+ returnColumnMenuItems.push(this.createMenuItemShowPopup('layout-edit', 'Edit Layout', this.moduleInfo.Popup, this.moduleInfo.Glyph, {
207
205
  action: 'Edit',
208
206
  source: 'ColumnMenu',
209
207
  }));
@@ -215,18 +213,19 @@ class LayoutModule extends AdaptableModuleBase_1.AdaptableModuleBase {
215
213
  let clickFunction = () => {
216
214
  this.api.gridApi.deselectAll();
217
215
  };
218
- returnColumnMenuItems.push(this.createColumnMenuItemClickFunction('Clear Selected Cells', 'undo', clickFunction));
216
+ returnColumnMenuItems.push(this.createMenuItemClickFunction('layout-clear-selection', 'Clear Selected Cells', 'undo', clickFunction));
219
217
  if (this.isModuleAvailable()) {
220
218
  let gridMenuItems = [];
221
219
  let autoSizeFunction = () => {
222
220
  this.api.columnApi.autosizeAllColumns();
223
221
  };
224
- gridMenuItems.push(this.createColumnMenuItemClickFunction('Auto Size', 'arrow-expand', autoSizeFunction));
222
+ gridMenuItems.push(this.createMenuItemClickFunction('layout-auto-size', 'Auto Size', 'arrow-expand', autoSizeFunction));
225
223
  let clickFunction = () => {
226
224
  this.api.gridApi.selectAll();
227
225
  };
228
- gridMenuItems.push(this.createColumnMenuItemClickFunction('Select', 'tab-unselected', clickFunction));
226
+ gridMenuItems.push(this.createMenuItemClickFunction('layout-select-all', 'Select', 'tab-unselected', clickFunction));
229
227
  returnColumnMenuItems.push({
228
+ name: 'layout-grid-parent',
230
229
  label: 'Grid',
231
230
  module: this.moduleInfo.ModuleName,
232
231
  isVisible: true,
@@ -243,7 +242,7 @@ class LayoutModule extends AdaptableModuleBase_1.AdaptableModuleBase {
243
242
  }
244
243
  createViewPivotItemsMenuItem(menuContext) {
245
244
  // current group => menuContext.rowNode.field;
246
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
245
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
247
246
  const selectedCellInfo = (_a = menuContext.selectedCellInfo) !== null && _a !== void 0 ? _a : this.api.gridApi.getSelectedCellInfo();
248
247
  if (((_b = selectedCellInfo === null || selectedCellInfo === void 0 ? void 0 : selectedCellInfo.gridCells) === null || _b === void 0 ? void 0 : _b.length) !== 1) {
249
248
  return;
@@ -284,7 +283,9 @@ class LayoutModule extends AdaptableModuleBase_1.AdaptableModuleBase {
284
283
  }
285
284
  const data = (0, flattenDeep_1.default)(getData(menuContext.rowNode.childrenAfterFilter));
286
285
  const rowGroups = currentLayout.RowGroupedColumns;
287
- const cellValue = isPivotColumn ? menuContext.rowNode.aggData[columnId] : gridCell.displayValue;
286
+ const cellValue = isPivotColumn
287
+ ? (_o = (_m = menuContext.rowNode) === null || _m === void 0 ? void 0 : _m.aggData) === null || _o === void 0 ? void 0 : _o[columnId]
288
+ : gridCell.displayValue;
288
289
  const popupProps = {
289
290
  hasPivotValue: isPivotColumn,
290
291
  columnId,
@@ -296,6 +297,7 @@ class LayoutModule extends AdaptableModuleBase_1.AdaptableModuleBase {
296
297
  pivotColumnId,
297
298
  };
298
299
  return {
300
+ name: 'layout-aggregated-view',
299
301
  module: this.moduleInfo.ModuleName,
300
302
  isVisible: true,
301
303
  label: 'Expand Aggregated Value',
@@ -325,7 +327,7 @@ class LayoutModule extends AdaptableModuleBase_1.AdaptableModuleBase {
325
327
  return this.getModuleAdaptableObjects().map((layout) => this.toView(layout));
326
328
  }
327
329
  toView(layout) {
328
- var _a, _b, _c, _d, _e, _f;
330
+ var _a, _b, _c, _d, _e, _f, _g;
329
331
  const maxColumnsToDisplay = (_b = (_a = this.api.optionsApi.getLayoutOptions().layoutViewOptions) === null || _a === void 0 ? void 0 : _a.maxColumnsToDisplay) !== null && _b !== void 0 ? _b : 10;
330
332
  const columnIdToFriendlyName = (columnId) => {
331
333
  return this.api.columnApi.getFriendlyNameForColumnId(columnId);
@@ -394,6 +396,22 @@ class LayoutModule extends AdaptableModuleBase_1.AdaptableModuleBase {
394
396
  (layout === null || layout === void 0 ? void 0 : layout.GridFilter) &&
395
397
  StringExtensions_1.default.IsNotNullOrEmpty(layout.GridFilter.Expression) &&
396
398
  (0, getGridFilterPreview_1.getGridFilterViewItems)(layout),
399
+ ((_g = layout === null || layout === void 0 ? void 0 : layout.RowSummaries) === null || _g === void 0 ? void 0 : _g.length) && {
400
+ name: 'Row Summaries',
401
+ values: layout === null || layout === void 0 ? void 0 : layout.RowSummaries.map((rowSummary) => {
402
+ var _a;
403
+ const columns = Object.entries((_a = rowSummary.ColumnsMap) !== null && _a !== void 0 ? _a : {})
404
+ .map(([columnId, expression]) => {
405
+ if (columnId === 'Source' || columnId === 'Uuid') {
406
+ return '';
407
+ }
408
+ return `${expression}(${columnIdToFriendlyName(columnId)})`;
409
+ })
410
+ .filter(Boolean)
411
+ .join(', ');
412
+ return `${rowSummary.Position}: ${columns}`;
413
+ }),
414
+ },
397
415
  ].filter(Boolean),
398
416
  abObject: layout,
399
417
  };
@@ -439,7 +457,7 @@ class LayoutModule extends AdaptableModuleBase_1.AdaptableModuleBase {
439
457
  .setUpScheduleJobs();
440
458
  // CustomSort, FlashingCell, FormatColumn
441
459
  // we need to refresh the column defs, as some configs may have changed
442
- this.api.internalApi.getAdaptableInstance().setupColumns();
460
+ this.api.internalApi.getAdaptableInstance().updateColumnModelAndRefreshGrid();
443
461
  }
444
462
  getReferencedNamedQueryNames(layout) {
445
463
  var _a;
@@ -448,5 +466,67 @@ class LayoutModule extends AdaptableModuleBase_1.AdaptableModuleBase {
448
466
  }
449
467
  return this.api.namedQueryApi.internalApi.getReferencedNamedQueryNames(layout.GridFilter.Expression);
450
468
  }
469
+ /**
470
+ *
471
+ * @param colId optional to evaluate only one column
472
+ */
473
+ evaluateRowSummary(reason) {
474
+ var _a;
475
+ const currentLayout = this.api.layoutApi.getCurrentLayout();
476
+ const rowSummaries = (_a = this.api.layoutApi.getCurrentLayout().RowSummaries) !== null && _a !== void 0 ? _a : [];
477
+ const rowSummariesResults = rowSummaries.map(({ ColumnsMap, Position }) => {
478
+ return {
479
+ Position,
480
+ RowData: Object.entries(ColumnsMap !== null && ColumnsMap !== void 0 ? ColumnsMap : {}).reduce((acc, [columnId, expression]) => {
481
+ const key = `${columnId}-${expression}`;
482
+ let expressionLiveValue = this.cachedCellSummary.get(key);
483
+ if (expressionLiveValue) {
484
+ if (!reason) {
485
+ // refresh all of them
486
+ expressionLiveValue.refresh();
487
+ }
488
+ else if ('columnId' in reason && reason.columnId === columnId) {
489
+ expressionLiveValue.refresh();
490
+ }
491
+ }
492
+ if (!expressionLiveValue) {
493
+ try {
494
+ let aggregatedScalarExpression = `${expression}([${columnId}])`;
495
+ if (aggregatedScalarExpression.includes(RowSummary_1.WEIGHTED_AVERAGE_AGGREATED_FUNCTION) &&
496
+ currentLayout.AggregationColumns[columnId] &&
497
+ typeof currentLayout.AggregationColumns[columnId] === 'object') {
498
+ const weight = currentLayout.AggregationColumns[columnId]
499
+ .weightedColumnId;
500
+ if (weight) {
501
+ aggregatedScalarExpression = `AVG([${columnId}], WEIGHT([${weight}]))`;
502
+ }
503
+ }
504
+ expressionLiveValue = new AggregatedScalarLiveValue_1.AggregatedScalarLiveValue({
505
+ aggregatedScalarExpression,
506
+ }, ModuleConstants.LayoutModuleId, this.api, () => {
507
+ return this.api.gridApi.getVisibleRowNodes();
508
+ });
509
+ }
510
+ catch (e) {
511
+ this.api.logError('Error evaluating row summary', e);
512
+ }
513
+ this.cachedCellSummary.set(key, expressionLiveValue);
514
+ }
515
+ let value = null;
516
+ if (expressionLiveValue) {
517
+ value = expressionLiveValue.getGlobalAggregatedValue();
518
+ if (typeof value === 'number' && !isNaN(value)) {
519
+ value = Helper_1.default.roundNumber(value, 2);
520
+ }
521
+ }
522
+ acc[columnId] = value;
523
+ return acc;
524
+ }, {
525
+ [RowSummary_1.ROW_SUMMARY_ROW_ID]: true,
526
+ }),
527
+ };
528
+ });
529
+ this.api.internalApi.dispatchReduxAction((0, SystemRedux_1.SystemRowSummarySet)(rowSummariesResults));
530
+ }
451
531
  }
452
532
  exports.LayoutModule = LayoutModule;
@@ -8,7 +8,6 @@ import { IModule } from './Interface/IModule';
8
8
  export declare class NamedQueryModule extends AdaptableModuleBase implements IModule {
9
9
  constructor(api: AdaptableApi);
10
10
  getModuleAdaptableObjects(): AdaptableObject[];
11
- updateOldConfig(): void;
12
11
  getTeamSharingAction(): TeamSharingImportInfo<NamedQuery>;
13
12
  getExplicitlyReferencedColumnIds(namedQuery: NamedQuery): string[];
14
13
  getReferencedNamedQueryNames(namedQuery: NamedQuery): string[];
@@ -4,7 +4,6 @@ exports.NamedQueryModule = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const NamedQueryRedux = tslib_1.__importStar(require("../Redux/ActionsReducers/NamedQueryRedux"));
6
6
  const ModuleConstants = tslib_1.__importStar(require("../Utilities/Constants/ModuleConstants"));
7
- const ArrayExtensions_1 = tslib_1.__importDefault(require("../Utilities/Extensions/ArrayExtensions"));
8
7
  const EditCurrentQueryButton_1 = require("../View/NamedQuery/EditCurrentQueryButton");
9
8
  const NamedQueryWizard_1 = require("../View/NamedQuery/Wizard/NamedQueryWizard");
10
9
  const AdaptableModuleBase_1 = require("./AdaptableModuleBase");
@@ -16,24 +15,6 @@ class NamedQueryModule extends AdaptableModuleBase_1.AdaptableModuleBase {
16
15
  getModuleAdaptableObjects() {
17
16
  return this.api.namedQueryApi.getNamedQueries();
18
17
  }
19
- updateOldConfig() {
20
- // - move named queries from old Query State to this Module
21
- // Note: GridFilter Module moves the "old" CurrentQuery into Layout
22
- const oldQueryState = this.api.internalApi.getAdaptableState().Query;
23
- const oldNamedQueries = oldQueryState.NamedQueries;
24
- if (ArrayExtensions_1.default.IsNotNullOrEmpty(oldNamedQueries)) {
25
- const currentNamedQueries = this.api.namedQueryApi.getNamedQueries();
26
- oldNamedQueries.forEach((oldNamedQuery) => {
27
- const currentQuery = currentNamedQueries.find((q) => q.Name === oldNamedQuery.Name);
28
- if (!currentQuery) {
29
- this.api.namedQueryApi.addNamedQuery(oldNamedQuery);
30
- }
31
- });
32
- }
33
- if (oldQueryState) {
34
- this.api.namedQueryApi.internalApi.cleanupQueryRedux();
35
- }
36
- }
37
18
  getTeamSharingAction() {
38
19
  return {
39
20
  ModuleEntities: this.api.namedQueryApi.getNamedQueries(),