@adaptabletools/adaptable 12.1.7 → 12.2.0-canary.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. package/base.css +127 -71
  2. package/bundle.cjs.js +108 -108
  3. package/index.css +145 -83
  4. package/package.json +1 -1
  5. package/publishTimestamp.d.ts +1 -1
  6. package/publishTimestamp.js +1 -1
  7. package/src/AdaptableInterfaces/IAdaptable.d.ts +1 -0
  8. package/src/AdaptableOptions/AdaptableQLOptions.d.ts +44 -10
  9. package/src/AdaptableOptions/FilterOptions.d.ts +12 -0
  10. package/src/AdaptableOptions/FinancePluginOptions.d.ts +22 -1
  11. package/src/AdaptableOptions/LayoutOptions.d.ts +10 -1
  12. package/src/AdaptableOptions/StateOptions.d.ts +25 -12
  13. package/src/Api/ColumnApi.d.ts +5 -0
  14. package/src/Api/ExportApi.d.ts +5 -0
  15. package/src/Api/FilterApi.d.ts +23 -0
  16. package/src/Api/GridApi.d.ts +1 -0
  17. package/src/Api/Implementation/AlertApiImpl.js +1 -2
  18. package/src/Api/Implementation/ColumnApiImpl.d.ts +1 -0
  19. package/src/Api/Implementation/ColumnApiImpl.js +5 -0
  20. package/src/Api/Implementation/ExportApiImpl.d.ts +3 -1
  21. package/src/Api/Implementation/ExportApiImpl.js +19 -3
  22. package/src/Api/Implementation/FilterApiImpl.d.ts +5 -0
  23. package/src/Api/Implementation/FilterApiImpl.js +25 -2
  24. package/src/Api/Implementation/GridApiImpl.d.ts +1 -0
  25. package/src/Api/Implementation/InternalApiImpl.d.ts +3 -2
  26. package/src/Api/Implementation/InternalApiImpl.js +34 -3
  27. package/src/Api/Implementation/PredicateApiImpl.js +4 -0
  28. package/src/Api/Implementation/QueryLanguageApiImpl.d.ts +1 -0
  29. package/src/Api/Implementation/QueryLanguageApiImpl.js +14 -1
  30. package/src/Api/InternalApi.d.ts +6 -2
  31. package/src/Api/QueryLanguageApi.d.ts +5 -0
  32. package/src/PredefinedConfig/CalculatedColumnState.d.ts +2 -2
  33. package/src/PredefinedConfig/Common/AdaptablePredicate.js +16 -4
  34. package/src/PredefinedConfig/Common/AdaptableQuery.js +1 -1
  35. package/src/PredefinedConfig/Common/AggregationColumns.d.ts +6 -0
  36. package/src/PredefinedConfig/Common/AggregationColumns.js +4 -0
  37. package/src/PredefinedConfig/Common/ColumnFilter.d.ts +2 -2
  38. package/src/PredefinedConfig/Common/Enums.d.ts +0 -15
  39. package/src/PredefinedConfig/Common/Enums.js +1 -18
  40. package/src/PredefinedConfig/ExportState.d.ts +12 -4
  41. package/src/PredefinedConfig/LayoutState.d.ts +2 -1
  42. package/src/PredefinedConfig/PopupState.d.ts +1 -2
  43. package/src/Redux/ActionsReducers/AlertRedux.d.ts +1 -1
  44. package/src/Redux/ActionsReducers/AlertRedux.js +1 -1
  45. package/src/Redux/ActionsReducers/ConditionalStyleRedux.d.ts +1 -1
  46. package/src/Redux/ActionsReducers/ConditionalStyleRedux.js +1 -1
  47. package/src/Redux/ActionsReducers/CustomSortRedux.d.ts +1 -1
  48. package/src/Redux/ActionsReducers/CustomSortRedux.js +1 -1
  49. package/src/Redux/ActionsReducers/FlashingCellRedux.d.ts +1 -1
  50. package/src/Redux/ActionsReducers/FlashingCellRedux.js +1 -1
  51. package/src/Redux/ActionsReducers/FormatColumnRedux.d.ts +1 -1
  52. package/src/Redux/ActionsReducers/FormatColumnRedux.js +1 -1
  53. package/src/Redux/ActionsReducers/LayoutRedux.d.ts +28 -0
  54. package/src/Redux/ActionsReducers/LayoutRedux.js +80 -2
  55. package/src/Redux/ActionsReducers/PlusMinusRedux.d.ts +1 -1
  56. package/src/Redux/ActionsReducers/PlusMinusRedux.js +1 -1
  57. package/src/Redux/ActionsReducers/PopupRedux.d.ts +0 -2
  58. package/src/Redux/ActionsReducers/PopupRedux.js +1 -28
  59. package/src/Redux/ActionsReducers/ScheduleRedux.d.ts +5 -5
  60. package/src/Redux/ActionsReducers/ScheduleRedux.js +5 -5
  61. package/src/Redux/ActionsReducers/ShortcutRedux.d.ts +1 -1
  62. package/src/Redux/ActionsReducers/ShortcutRedux.js +1 -1
  63. package/src/Redux/Store/AdaptableStore.js +15 -6
  64. package/src/Strategy/AlertModule.d.ts +1 -0
  65. package/src/Strategy/AlertModule.js +20 -0
  66. package/src/Strategy/BulkUpdateModule.d.ts +1 -1
  67. package/src/Strategy/CalculatedColumnModule.js +3 -3
  68. package/src/Strategy/ExportModule.d.ts +0 -1
  69. package/src/Strategy/ExportModule.js +0 -16
  70. package/src/Strategy/FilterModule.js +6 -0
  71. package/src/Strategy/Interface/IModule.d.ts +4 -0
  72. package/src/Strategy/LayoutModule.js +20 -20
  73. package/src/Strategy/QueryModule.js +1 -1
  74. package/src/Strategy/Utilities/Export/getExportRowsViewItems.js +0 -13
  75. package/src/Strategy/Utilities/FormatColumn/getFormatColumnStyleViewItems.js +16 -1
  76. package/src/Strategy/Utilities/Layout/getLayoutFilterViewItems.js +15 -11
  77. package/src/Strategy/Utilities/getExpressionViewItems.d.ts +3 -4
  78. package/src/Strategy/Utilities/getExpressionViewItems.js +3 -3
  79. package/src/Strategy/Utilities/getRuleViewItems.js +1 -1
  80. package/src/Utilities/Constants/DocumentationLinkConstants.d.ts +1 -0
  81. package/src/Utilities/Constants/DocumentationLinkConstants.js +2 -1
  82. package/src/Utilities/Defaults/DefaultAdaptableOptions.js +3 -0
  83. package/src/Utilities/ExpressionFunctions/aggregatedBooleanExpressionFunctions.d.ts +12 -2
  84. package/src/Utilities/ExpressionFunctions/aggregatedBooleanExpressionFunctions.js +30 -66
  85. package/src/Utilities/ExpressionFunctions/aggregatedScalarExpressionFunctions.d.ts +22 -6
  86. package/src/Utilities/ExpressionFunctions/aggregatedScalarExpressionFunctions.js +423 -220
  87. package/src/Utilities/ExpressionFunctions/expressionFunctionUtils.d.ts +7 -1
  88. package/src/Utilities/ExpressionFunctions/expressionFunctionUtils.js +25 -7
  89. package/src/Utilities/ExpressionFunctions/scalarAggregationHelper.d.ts +0 -1
  90. package/src/Utilities/ExpressionFunctions/scalarAggregationHelper.js +6 -54
  91. package/src/Utilities/ExpressionFunctions/scalarExpressionFunctions.d.ts +1 -1
  92. package/src/Utilities/ExpressionFunctions/scalarExpressionFunctions.js +31 -5
  93. package/src/Utilities/Interface/MessagePopups.d.ts +0 -4
  94. package/src/Utilities/ObjectFactory.d.ts +4 -2
  95. package/src/Utilities/ObjectFactory.js +16 -3
  96. package/src/Utilities/Services/AggregatedScalarLiveValue.d.ts +25 -0
  97. package/src/Utilities/Services/AggregatedScalarLiveValue.js +103 -0
  98. package/src/Utilities/Services/AlertService.d.ts +0 -1
  99. package/src/Utilities/Services/AlertService.js +5 -17
  100. package/src/Utilities/Services/CalculatedColumnExpressionService.d.ts +4 -4
  101. package/src/Utilities/Services/CalculatedColumnExpressionService.js +29 -154
  102. package/src/Utilities/Services/Interface/ICalculatedColumnExpressionService.d.ts +2 -2
  103. package/src/Utilities/Services/Interface/IQueryLanguageService.d.ts +8 -3
  104. package/src/Utilities/Services/QueryLanguageService.d.ts +8 -4
  105. package/src/Utilities/Services/QueryLanguageService.js +68 -25
  106. package/src/Utilities/Services/ReportService.js +48 -48
  107. package/src/View/AdaptableView.js +1 -2
  108. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/AdaptableOptionsForm.d.ts +1 -1
  109. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/AdaptableOptionsForm.js +10 -10
  110. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/Components/FormBox.d.ts +3 -0
  111. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/Components/FormBox.js +9 -0
  112. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/ConfigurationWizard.js +14 -15
  113. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/EntitlementsForm.d.ts +1 -1
  114. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/EntitlementsForm.js +2 -2
  115. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/FinanceForm/FinanceForm.d.ts +7 -0
  116. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/FinanceForm/FinanceForm.js +280 -0
  117. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/FinanceForm/index.d.ts +1 -0
  118. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/FinanceForm/index.js +5 -0
  119. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/GridOptionsForm.d.ts +1 -1
  120. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/GridOptionsForm.js +4 -4
  121. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/UIOptions/UIOptionsStatusbarForm.js +2 -8
  122. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/UIOptions/UiOptionsForm.d.ts +1 -1
  123. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/UIOptions/UiOptionsForm.js +3 -3
  124. package/src/View/AdaptableWizardView/Wizard.js +2 -2
  125. package/src/View/CalculatedColumn/CalculatedColumnSummary.d.ts +0 -1
  126. package/src/View/CalculatedColumn/CalculatedColumnSummary.js +1 -8
  127. package/src/View/CalculatedColumn/Utilities/getCalculatedColumnSettingsTags.d.ts +2 -0
  128. package/src/View/CalculatedColumn/Utilities/{getCalculatedColumnSettingTags.js → getCalculatedColumnSettingsTags.js} +3 -3
  129. package/src/View/CalculatedColumn/Wizard/CalculatedColumnDefinitionWizardSection.d.ts +10 -0
  130. package/src/View/CalculatedColumn/Wizard/CalculatedColumnDefinitionWizardSection.js +80 -0
  131. package/src/View/CalculatedColumn/Wizard/CalculatedColumnExpressionWizardSection.js +24 -14
  132. package/src/View/CalculatedColumn/Wizard/CalculatedColumnSettingsWizardSection.d.ts +1 -2
  133. package/src/View/CalculatedColumn/Wizard/CalculatedColumnSettingsWizardSection.js +9 -52
  134. package/src/View/CalculatedColumn/Wizard/CalculatedColumnWizard.js +17 -6
  135. package/src/View/Components/AdaptableObjectCollection/index.d.ts +3 -4
  136. package/src/View/Components/AdaptableObjectCollection/index.js +7 -8
  137. package/src/View/Components/AdaptableObjectList/AdaptableObjectCompactList.js +42 -6
  138. package/src/View/Components/AdaptableObjectList/AdaptableObjectList.js +1 -1
  139. package/src/View/Components/AdaptableObjectRow/index.js +1 -4
  140. package/src/View/Components/EntityRulesEditor/index.js +28 -7
  141. package/src/View/Components/FilterForm/FilterForm.js +8 -4
  142. package/src/View/Components/FilterForm/ListBoxFilterForm.js +1 -0
  143. package/src/View/Components/FilterForm/QuickFilterForm.js +19 -7
  144. package/src/View/Components/PermittedValuesSelector/PermitedValuesSelector.d.ts +9 -0
  145. package/src/View/Components/PermittedValuesSelector/PermitedValuesSelector.js +28 -0
  146. package/src/View/Components/PermittedValuesSelector/index.d.ts +1 -0
  147. package/src/View/Components/PermittedValuesSelector/index.js +5 -0
  148. package/src/View/Components/Popups/AdaptablePopup/Navigation.js +2 -2
  149. package/src/View/Components/Popups/AdaptablePopup/PopupPanel.d.ts +1 -0
  150. package/src/View/Components/Popups/AdaptablePopup/PopupPanel.js +2 -1
  151. package/src/View/Components/Popups/AdaptableToaster.js +2 -7
  152. package/src/View/Components/Popups/WindowPopups/windowFactory.d.ts +0 -1
  153. package/src/View/Components/Popups/WindowPopups/windowFactory.js +1 -4
  154. package/src/View/Components/ValueSelector/index.js +8 -19
  155. package/src/View/CustomSort/CustomSortSummary.js +1 -1
  156. package/src/View/Dashboard/DashboardPopup.js +11 -10
  157. package/src/View/Export/ExportViewPanel.d.ts +1 -2
  158. package/src/View/Export/ExportViewPanel.js +4 -8
  159. package/src/View/Export/Wizard/ReportColumnTypeWizard.d.ts +1 -2
  160. package/src/View/Export/Wizard/ReportColumnTypeWizard.js +11 -12
  161. package/src/View/Export/Wizard/ReportRowTypeWizard.d.ts +1 -2
  162. package/src/View/Export/Wizard/ReportRowTypeWizard.js +12 -13
  163. package/src/View/Export/Wizard/ReportRowsWizardSection.js +4 -3
  164. package/src/View/Export/Wizard/ReportSettingsWizard.js +1 -2
  165. package/src/View/Filter/FilterViewPanel.js +21 -4
  166. package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.js +1 -1
  167. package/src/View/GridInfo/AdaptableObjectsSummary.js +5 -3
  168. package/src/View/GridInfo/AdaptableOptionsComponent.js +1 -1
  169. package/src/View/GridInfo/GridInfoPopup.js +6 -7
  170. package/src/View/Layout/Wizard/{LayoutEditor → Components}/ColumnLabels.d.ts +0 -0
  171. package/src/View/Layout/Wizard/{LayoutEditor → Components}/ColumnLabels.js +0 -0
  172. package/src/View/Layout/Wizard/LayoutWizard.js +1 -0
  173. package/src/View/Layout/Wizard/sections/AggregationsSection.d.ts +1 -0
  174. package/src/View/Layout/Wizard/sections/AggregationsSection.js +69 -8
  175. package/src/View/Layout/Wizard/sections/ColumnsSection.js +1 -1
  176. package/src/View/Query/QueryViewPanel.js +1 -1
  177. package/src/View/Query/Wizard/NamedQueryExpressionWizardSection.js +3 -4
  178. package/src/View/StateManagement/StateManagementPopup.js +18 -19
  179. package/src/agGrid/Adaptable.d.ts +12 -3
  180. package/src/agGrid/Adaptable.js +264 -148
  181. package/src/agGrid/agGridHelper.d.ts +1 -0
  182. package/src/agGrid/agGridHelper.js +5 -3
  183. package/src/agGrid/agGridMenuHelper.d.ts +1 -0
  184. package/src/agGrid/agGridMenuHelper.js +4 -2
  185. package/src/agGrid/weightedAverage.d.ts +6 -0
  186. package/src/agGrid/weightedAverage.js +66 -0
  187. package/src/bundle-dependencies/bundles/react-toastify/index.js +1 -1
  188. package/src/components/DragAndDropContext/ModuleManager.js +3 -4
  189. package/src/components/DragAndDropContext/TabList.js +9 -30
  190. package/src/components/DragAndDropContext/UnusedPanel.js +1 -7
  191. package/src/components/DropdownButton/index.js +2 -2
  192. package/src/components/EmptyContent/index.js +2 -2
  193. package/src/components/ExpressionEditor/BaseEditorInput.d.ts +1 -0
  194. package/src/components/ExpressionEditor/BaseEditorInput.js +3 -3
  195. package/src/components/ExpressionEditor/EditorInput.d.ts +1 -1
  196. package/src/components/ExpressionEditor/EditorInput.js +24 -4
  197. package/src/components/ExpressionEditor/{EditorInputReactive.d.ts → EditorInputWithWhereClause.d.ts} +3 -3
  198. package/src/components/ExpressionEditor/{EditorInputReactive.js → EditorInputWithWhereClause.js} +6 -5
  199. package/src/components/ExpressionEditor/editorButtonsAggregatedBoolean.d.ts +2 -0
  200. package/src/components/ExpressionEditor/{editorButtonsReactive.js → editorButtonsAggregatedBoolean.js} +22 -37
  201. package/src/components/ExpressionEditor/editorButtonsAggregatedScalar.js +5 -10
  202. package/src/components/ExpressionEditor/editorButtonsCumulativeAggregatedScalar.d.ts +2 -0
  203. package/src/components/ExpressionEditor/editorButtonsCumulativeAggregatedScalar.js +50 -0
  204. package/src/components/ExpressionEditor/editorButtonsObservable.d.ts +2 -0
  205. package/src/components/ExpressionEditor/editorButtonsObservable.js +40 -0
  206. package/src/components/ExpressionEditor/index.d.ts +1 -1
  207. package/src/components/ExpressionEditor/index.js +50 -19
  208. package/src/metamodel/adaptable.metamodel.d.ts +86 -5
  209. package/src/metamodel/adaptable.metamodel.js +1 -1
  210. package/src/parser/src/types.d.ts +14 -10
  211. package/src/types.d.ts +4 -4
  212. package/version.d.ts +1 -1
  213. package/version.js +1 -1
  214. package/src/View/CalculatedColumn/Utilities/getCalculatedColumnSettingTags.d.ts +0 -2
  215. package/src/View/Layout/LayoutEditorStandalonePopup.d.ts +0 -3
  216. package/src/View/Layout/LayoutEditorStandalonePopup.js +0 -78
  217. package/src/View/Layout/Wizard/LayoutEditor/ColumnList.d.ts +0 -27
  218. package/src/View/Layout/Wizard/LayoutEditor/ColumnList.js +0 -86
  219. package/src/View/Layout/Wizard/LayoutEditor/ColumnSortList.d.ts +0 -16
  220. package/src/View/Layout/Wizard/LayoutEditor/ColumnSortList.js +0 -89
  221. package/src/View/Layout/Wizard/LayoutEditor/PivotList.d.ts +0 -15
  222. package/src/View/Layout/Wizard/LayoutEditor/PivotList.js +0 -70
  223. package/src/View/Layout/Wizard/LayoutEditor/RowGroupsList.d.ts +0 -15
  224. package/src/View/Layout/Wizard/LayoutEditor/RowGroupsList.js +0 -70
  225. package/src/View/Layout/Wizard/LayoutEditor/droppableIds.d.ts +0 -7
  226. package/src/View/Layout/Wizard/LayoutEditor/droppableIds.js +0 -11
  227. package/src/View/Layout/Wizard/LayoutEditor/getItemStyle.d.ts +0 -6
  228. package/src/View/Layout/Wizard/LayoutEditor/getItemStyle.js +0 -26
  229. package/src/View/Layout/Wizard/LayoutEditor/index.d.ts +0 -9
  230. package/src/View/Layout/Wizard/LayoutEditor/index.js +0 -367
  231. package/src/View/Layout/Wizard/LayoutEditor/reducer.d.ts +0 -28
  232. package/src/View/Layout/Wizard/LayoutEditor/reducer.js +0 -46
  233. package/src/View/Layout/Wizard/LayoutEditor/utils.d.ts +0 -10
  234. package/src/View/Layout/Wizard/LayoutEditor/utils.js +0 -14
  235. package/src/View/Layout/Wizard/LayoutEditorWizard.d.ts +0 -30
  236. package/src/View/Layout/Wizard/LayoutEditorWizard.js +0 -132
  237. package/src/components/ExpressionEditor/editorButtonsReactive.d.ts +0 -2
@@ -0,0 +1,280 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FinanceForm = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const React = tslib_1.__importStar(require("react"));
6
+ const rebass_1 = require("rebass");
7
+ const CheckBox_1 = require("../../../../components/CheckBox");
8
+ const DropdownButton_1 = tslib_1.__importDefault(require("../../../../components/DropdownButton"));
9
+ const FormLayout_1 = tslib_1.__importStar(require("../../../../components/FormLayout"));
10
+ const HelpBlock_1 = tslib_1.__importDefault(require("../../../../components/HelpBlock"));
11
+ const Input_1 = tslib_1.__importDefault(require("../../../../components/Input"));
12
+ const SimpleButton_1 = tslib_1.__importDefault(require("../../../../components/SimpleButton"));
13
+ const StringExtensions_1 = tslib_1.__importDefault(require("../../../../Utilities/Extensions/StringExtensions"));
14
+ const FormBox_1 = require("../Components/FormBox");
15
+ const LocalDropdownButton = (props) => (React.createElement(DropdownButton_1.default, Object.assign({}, props, { width: "100%", columns: ['label'] })));
16
+ const AlertMessage = (props) => (React.createElement(rebass_1.Box, Object.assign({ color: "var(--ab-color-error)" }, props)));
17
+ const fdc3ColumnDefinitions = {
18
+ instrumentColumns: {
19
+ fields: [
20
+ { label: 'Ticker', id: 'tickerColumnId' },
21
+ { label: 'ISIN', id: 'isinColumnId' },
22
+ { label: 'CUSIP', id: 'cusipColumnId' },
23
+ { label: 'SEDOL', id: 'sedolColumnId' },
24
+ { label: 'RIC', id: 'ricColumnId' },
25
+ { label: 'BBG', id: 'bbgColumnId' },
26
+ { label: 'PERMID', id: 'permidColumnId' },
27
+ { label: 'FIGI', id: 'figiColumnId' },
28
+ ],
29
+ intents: ['ViewChart', 'ViewQuote', 'ViewNews', 'ViewAnalysis', 'ViewInstrument'],
30
+ },
31
+ positionColumns: {
32
+ fields: [{ label: 'Instrument', id: 'instrumentColumnId', required: true }],
33
+ intents: ['ViewChart', 'ViewNews', 'ViewAnalysis'],
34
+ },
35
+ contactColumns: {
36
+ fields: [
37
+ { label: 'Email', id: 'emailColumnId' },
38
+ { label: 'FDS_ID', id: 'fds_idColumnId' },
39
+ ],
40
+ intents: ['StartCall', 'StartChat', 'ViewContact'],
41
+ },
42
+ countryColumns: {
43
+ fields: [
44
+ { label: 'ISOALPHA2', id: 'isoalpha2ColumnId' },
45
+ { label: 'ISOALPHA3', id: 'isoalpha3ColumnId' },
46
+ ],
47
+ intents: ['ViewChart'],
48
+ },
49
+ organizationColumns: {
50
+ fields: [
51
+ { label: 'LEI', id: 'leiColumnId' },
52
+ { label: 'PERM ID', id: 'permidColumnId' },
53
+ { label: 'FDS ID', id: 'fds_idColumnId' },
54
+ ],
55
+ intents: ['ViewNews', 'ViewAnalysis'],
56
+ },
57
+ };
58
+ const FDC3ColumnSelector = (props) => {
59
+ const options = React.useMemo(() => {
60
+ return props.columnOptions.map((columnOption) => (Object.assign(Object.assign({}, columnOption), { onClick: () => props.onChange(columnOption.value) })));
61
+ }, [props.onChange]);
62
+ return (React.createElement(FormLayout_1.FormRow, { label: React.createElement(React.Fragment, null,
63
+ props.label,
64
+ " ",
65
+ props.required && React.createElement(AlertMessage, { as: "span" }, "*"),
66
+ ' ') },
67
+ React.createElement(LocalDropdownButton, { items: options }, StringExtensions_1.default.Humanize(props.value) || 'Select Column')));
68
+ };
69
+ const FDC3InstrumentColumnBuilder = (props) => {
70
+ const fields = fdc3ColumnDefinitions.instrumentColumns.fields;
71
+ return (React.createElement(rebass_1.Flex, null,
72
+ React.createElement(FormLayout_1.default, { mr: 2 }, fields.slice(0, 4).map((field) => {
73
+ var _a;
74
+ return (React.createElement(FDC3ColumnSelector, Object.assign({}, field, { value: (_a = props.column[field.id]) !== null && _a !== void 0 ? _a : 'Select Column', onChange: (columnId) => props.onColumnFieldChange(field.id, columnId), columnOptions: props.columnOptions })));
75
+ })),
76
+ React.createElement(FormLayout_1.default, null, fields.slice(4).map((field) => {
77
+ var _a;
78
+ return (React.createElement(FDC3ColumnSelector, Object.assign({}, field, { value: (_a = props.column[field.id]) !== null && _a !== void 0 ? _a : 'Select Column', onChange: (columnId) => props.onColumnFieldChange(field.id, columnId), columnOptions: props.columnOptions })));
79
+ })),
80
+ React.createElement(rebass_1.Flex, { ml: 3, flexDirection: "column" }, fdc3ColumnDefinitions.instrumentColumns.intents.map((intent) => {
81
+ var _a, _b;
82
+ return (React.createElement(CheckBox_1.CheckBox, { checked: (_b = (_a = props.column.intents) === null || _a === void 0 ? void 0 : _a.includes) === null || _b === void 0 ? void 0 : _b.call(_a, intent), onClick: () => props.onIntentToggle(intent), key: intent }, intent));
83
+ }))));
84
+ };
85
+ const FDC3BaseColumnBuilder = (props) => {
86
+ const fields = fdc3ColumnDefinitions[props.fdc3ColumnType].fields;
87
+ const intents = fdc3ColumnDefinitions[props.fdc3ColumnType].intents;
88
+ return (React.createElement(rebass_1.Flex, null,
89
+ React.createElement(FormLayout_1.default, null,
90
+ fields.map((field) => {
91
+ var _a, _b;
92
+ return (React.createElement(FDC3ColumnSelector, Object.assign({}, field, { columnOptions: props.columnOptions, onChange: (columnId) => props.onColumnFieldChange(field.id, columnId), value: (_b = (_a = props.column) === null || _a === void 0 ? void 0 : _a[field.id]) !== null && _b !== void 0 ? _b : '' })));
93
+ }),
94
+ React.createElement(FormLayout_1.FormRow, { label: "" },
95
+ React.createElement(rebass_1.Flex, { flexDirection: "column" }, intents.map((intent) => {
96
+ var _a, _b;
97
+ return (React.createElement(CheckBox_1.CheckBox, { checked: ((_b = (_a = props.column) === null || _a === void 0 ? void 0 : _a.intents) !== null && _b !== void 0 ? _b : []).includes(intent), onClick: () => props.onIntentToggle(intent), key: intent }, intent));
98
+ }))))));
99
+ };
100
+ const FDC3ColumnBuilder = (props) => {
101
+ var _a, _b, _c, _d, _e, _f, _g, _h;
102
+ const handleColumnFieldChange = React.useCallback((fieldId, columnId) => {
103
+ props.onChange(Object.assign(Object.assign({}, props.fdc3Column), { [fieldId]: columnId }));
104
+ }, [props.fdc3Column, props.onChange]);
105
+ const handleIntentToggle = React.useCallback((intent) => {
106
+ var _a;
107
+ const newFDC3Column = Object.assign({}, props.fdc3Column);
108
+ newFDC3Column.intents = (_a = newFDC3Column.intents) !== null && _a !== void 0 ? _a : [];
109
+ if (newFDC3Column.intents.includes(intent)) {
110
+ newFDC3Column.intents = newFDC3Column.intents.filter((i) => i !== intent);
111
+ }
112
+ else {
113
+ newFDC3Column.intents.push(intent);
114
+ }
115
+ props.onChange(newFDC3Column);
116
+ }, [props.fdc3Column]);
117
+ const columnOptions = React.useMemo(() => {
118
+ return props.columnOptions.map((columnOption) => (Object.assign(Object.assign({}, columnOption), { onClick: () => {
119
+ props.onChange(Object.assign(Object.assign({}, props.fdc3Column), { columnId: columnOption.value }));
120
+ } })));
121
+ }, [props.fdc3Column]);
122
+ const handleNameColumnIdChange = React.useCallback((event) => {
123
+ var _a;
124
+ props.onChange(Object.assign(Object.assign({}, props.fdc3Column), { nameColumnId: (_a = event.target.value) !== null && _a !== void 0 ? _a : '' }));
125
+ }, [props.fdc3Column]);
126
+ const handleShowBroadcastToggle = React.useCallback(() => {
127
+ var _a;
128
+ props.onChange(Object.assign(Object.assign({}, props.fdc3Column), { showBroadcastContextMenu: !((_a = props.fdc3Column) === null || _a === void 0 ? void 0 : _a.showBroadcastContextMenu) }));
129
+ }, [props.fdc3Column]);
130
+ const handleBroadcastLabelChange = React.useCallback((event) => {
131
+ var _a;
132
+ props.onChange(Object.assign(Object.assign({}, props.fdc3Column), { broadcastContextMenuLabel: (_a = event.target.value) !== null && _a !== void 0 ? _a : '' }));
133
+ }, [props.fdc3Column]);
134
+ return (React.createElement(FormBox_1.NocodeWizardFormBox, null,
135
+ React.createElement(rebass_1.Flex, null,
136
+ React.createElement(FormLayout_1.default, { mr: 3, mb: 3 },
137
+ props.beforeContent,
138
+ React.createElement(FormLayout_1.FormRow, { label: React.createElement(React.Fragment, null,
139
+ "Column ",
140
+ React.createElement(AlertMessage, { as: "span" }, "*"),
141
+ ' ') },
142
+ React.createElement(LocalDropdownButton, { disabled: props.disabled, items: columnOptions }, (_b = (_a = columnOptions.find((item) => { var _a; return item.value === ((_a = props.fdc3Column) === null || _a === void 0 ? void 0 : _a.columnId); })) === null || _a === void 0 ? void 0 : _a.label) !== null && _b !== void 0 ? _b : 'Select Column')),
143
+ React.createElement(FormLayout_1.FormRow, { label: "FDC3 Name" },
144
+ React.createElement(Input_1.default, { disabled: props.disabled, onChange: handleNameColumnIdChange, value: (_d = (_c = props.fdc3Column) === null || _c === void 0 ? void 0 : _c.nameColumnId) !== null && _d !== void 0 ? _d : '' })),
145
+ React.createElement(FormLayout_1.FormRow, { label: "" },
146
+ React.createElement(CheckBox_1.CheckBox, { disabled: props.disabled, checked: Boolean((_e = props.fdc3Column) === null || _e === void 0 ? void 0 : _e.showBroadcastContextMenu), onChange: handleShowBroadcastToggle },
147
+ "Show Broadcast ",
148
+ React.createElement("br", null),
149
+ " Context Menu")),
150
+ React.createElement(FormLayout_1.FormRow, { label: "Broadcast Label" },
151
+ React.createElement(Input_1.default, { disabled: props.disabled || !Boolean((_f = props.fdc3Column) === null || _f === void 0 ? void 0 : _f.showBroadcastContextMenu), onChange: handleBroadcastLabelChange, value: typeof ((_g = props.fdc3Column) === null || _g === void 0 ? void 0 : _g.broadcastContextMenuLabel) === 'string'
152
+ ? (_h = props.fdc3Column) === null || _h === void 0 ? void 0 : _h.broadcastContextMenuLabel
153
+ : '' }))),
154
+ React.createElement(rebass_1.Box, { flex: 1 }, props.fdc3ColumnType === 'instrumentColumns' ? (React.createElement(FDC3InstrumentColumnBuilder, { onIntentToggle: handleIntentToggle, onColumnFieldChange: (...args) => handleColumnFieldChange(...args), column: props.fdc3Column, columnOptions: props.columnOptions })) : (props.fdc3ColumnType && (React.createElement(FDC3BaseColumnBuilder, { onColumnFieldChange: (...args) => handleColumnFieldChange(...args), onIntentToggle: handleIntentToggle, column: props.fdc3Column, fdc3ColumnType: props.fdc3ColumnType, columnOptions: props.columnOptions }))))),
155
+ props.footer));
156
+ };
157
+ const FDC3ColumnEditor = (props) => {
158
+ return (React.createElement(FDC3ColumnBuilder, { columnOptions: props.columnOptions, fdc3Column: props.fdc3Column, fdc3ColumnType: props.fdc3ColumnType, onChange: props.onChange, footer: props.footer }));
159
+ };
160
+ const FDC3ColumnCreator = (props) => {
161
+ var _a, _b;
162
+ const [fdc3Column, setFDC3Column] = React.useState();
163
+ const [fdc3ColumnType, setFDC3ColumnType] = React.useState();
164
+ const handleOnNew = React.useCallback(() => {
165
+ props.onNew(fdc3ColumnType, fdc3Column);
166
+ setFDC3Column(null);
167
+ setFDC3ColumnType(null);
168
+ }, [fdc3Column]);
169
+ const fdc3ColumnOptions = React.useMemo(() => {
170
+ return [
171
+ {
172
+ label: 'Instrument',
173
+ columnField: 'instrumentColumns',
174
+ },
175
+ {
176
+ label: 'Position',
177
+ columnField: 'positionColumns',
178
+ },
179
+ {
180
+ label: 'Contact',
181
+ columnField: 'contactColumns',
182
+ },
183
+ {
184
+ label: 'Country',
185
+ columnField: 'countryColumns',
186
+ },
187
+ {
188
+ label: 'Organization',
189
+ columnField: 'organizationColumns',
190
+ },
191
+ ].map((item) => (Object.assign(Object.assign({}, item), { onClick: () => {
192
+ setFDC3ColumnType(item.columnField);
193
+ setFDC3Column({ columnId: '' });
194
+ } })));
195
+ }, []);
196
+ const typeSelector = (React.createElement(FormLayout_1.FormRow, { label: "FDC3 Type" },
197
+ React.createElement(LocalDropdownButton, { items: fdc3ColumnOptions }, (_b = (_a = fdc3ColumnOptions.find((item) => item.columnField === fdc3ColumnType)) === null || _a === void 0 ? void 0 : _a.label) !== null && _b !== void 0 ? _b : 'Select Column')));
198
+ const fieldsDisabled = !fdc3ColumnType;
199
+ const errors = [];
200
+ if (fdc3Column && !fdc3Column.columnId) {
201
+ errors.push('Column is required.');
202
+ }
203
+ if (fdc3Column) {
204
+ const fields = fdc3ColumnDefinitions[fdc3ColumnType].fields;
205
+ fields.forEach((field) => {
206
+ if (field.required && !fdc3Column[field.id]) {
207
+ errors.push(`${field.label} is required.`);
208
+ }
209
+ });
210
+ }
211
+ return (React.createElement(FDC3ColumnBuilder, { disabled: fieldsDisabled, columnOptions: props.columnOptions, fdc3Column: fdc3Column, fdc3ColumnType: fdc3ColumnType, onChange: (newFDC3Column) => setFDC3Column(newFDC3Column), beforeContent: typeSelector, footer: React.createElement(rebass_1.Flex, null,
212
+ React.createElement(rebass_1.Box, { flex: 1 }),
213
+ React.createElement(rebass_1.Flex, { alignItems: "center", mr: 3 }, errors.slice(0, 1).map((error) => (React.createElement(AlertMessage, { ml: 2 }, error)))),
214
+ React.createElement(SimpleButton_1.default, { disabled: fieldsDisabled || !fdc3Column.columnId, onClick: handleOnNew, icon: "plus", variant: "raised" }, "Add FDC3 Column")) }));
215
+ };
216
+ const FinanceFormSectionTitle = (props) => (React.createElement(rebass_1.Box, Object.assign({}, props, { mb: 2 }),
217
+ React.createElement(HelpBlock_1.default, null, props.children)));
218
+ const FinanceForm = (props) => {
219
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
220
+ const columnOptions = (_d = (_c = (_b = (_a = props.adaptableOptions) === null || _a === void 0 ? void 0 : _a.gridOptions) === null || _b === void 0 ? void 0 : _b.columnDefs) === null || _c === void 0 ? void 0 : _c.map) === null || _d === void 0 ? void 0 : _d.call(_c, (item) => {
221
+ var _a;
222
+ return ({
223
+ label: StringExtensions_1.default.Humanize((_a = item.headerName) !== null && _a !== void 0 ? _a : item.field),
224
+ value: item.field,
225
+ });
226
+ });
227
+ const financePlugin = (_f = (_e = props.adaptableOptions) === null || _e === void 0 ? void 0 : _e.plugins) === null || _f === void 0 ? void 0 : _f.find((item) => item.pluginId === 'finance');
228
+ const financePluginOptions = ((_g = financePlugin === null || financePlugin === void 0 ? void 0 : financePlugin.options) !== null && _g !== void 0 ? _g : {});
229
+ const fdc3Columns = (_h = financePluginOptions === null || financePluginOptions === void 0 ? void 0 : financePluginOptions.fdc3Columns) !== null && _h !== void 0 ? _h : {};
230
+ const handleSetFdc3Columns = (key, newFDC3Columns) => {
231
+ var _a;
232
+ // Unfurtunatly finance plugin options need to be mutated.
233
+ // It is the only was without instanciating the plugin again.
234
+ // But that would mean to inport the finance plugin inside the nocode plugin.
235
+ financePluginOptions.fdc3Columns = (_a = financePluginOptions.fdc3Columns) !== null && _a !== void 0 ? _a : {};
236
+ financePluginOptions.fdc3Columns[key] = newFDC3Columns;
237
+ // on change is called with a new array of plugins so the component refreshes.
238
+ props.onChangeadAptableOptions(Object.assign(Object.assign({}, props.adaptableOptions), { plugins: [...props.adaptableOptions.plugins] }));
239
+ };
240
+ const renderEditor = (fdc3ColumnType, fdc3ColumnsItems) => {
241
+ return fdc3ColumnsItems.map((fdc3Column, currentFDCColumnId) => (React.createElement(rebass_1.Box, { mb: 3 },
242
+ React.createElement(FDC3ColumnEditor, { key: currentFDCColumnId, columnOptions: columnOptions, fdc3Column: fdc3Column, fdc3ColumnType: fdc3ColumnType, onChange: (editedFDC3Column) => {
243
+ const newFDC3Columns = fdc3ColumnsItems.map((fdc3Column, index) => {
244
+ if (index === currentFDCColumnId) {
245
+ return editedFDC3Column;
246
+ }
247
+ return fdc3Column;
248
+ });
249
+ handleSetFdc3Columns(fdc3ColumnType, newFDC3Columns);
250
+ }, footer: React.createElement(rebass_1.Flex, null,
251
+ React.createElement(rebass_1.Box, { flex: 1 }),
252
+ React.createElement(SimpleButton_1.default, { onClick: () => {
253
+ const newFDC3Columns = fdc3ColumnsItems.filter((_, index) => index !== currentFDCColumnId);
254
+ handleSetFdc3Columns(fdc3ColumnType, newFDC3Columns);
255
+ }, tone: "error", variant: "raised", icon: "delete" }, "Delete")) }))));
256
+ };
257
+ return (React.createElement(rebass_1.Box, { p: 2, className: "ab-FinanceForm" },
258
+ React.createElement(rebass_1.Box, { mb: 3 },
259
+ React.createElement(HelpBlock_1.default, { mb: 3 }, "Create FDC3 Column"),
260
+ React.createElement(FDC3ColumnCreator, { columnOptions: columnOptions, onNew: (type, fdc3Column) => {
261
+ var _a;
262
+ handleSetFdc3Columns(type, [...((_a = fdc3Columns[type]) !== null && _a !== void 0 ? _a : []), fdc3Column]);
263
+ } })),
264
+ Boolean((_j = fdc3Columns.instrumentColumns) === null || _j === void 0 ? void 0 : _j.length) && (React.createElement(rebass_1.Box, null,
265
+ React.createElement(FinanceFormSectionTitle, null, "Instrument Columns"),
266
+ renderEditor('instrumentColumns', fdc3Columns.instrumentColumns))),
267
+ Boolean((_k = fdc3Columns.positionColumns) === null || _k === void 0 ? void 0 : _k.length) && (React.createElement(rebass_1.Box, null,
268
+ React.createElement(FinanceFormSectionTitle, null, "Position Columns"),
269
+ renderEditor('positionColumns', fdc3Columns.positionColumns))),
270
+ Boolean((_l = fdc3Columns.contactColumns) === null || _l === void 0 ? void 0 : _l.length) && (React.createElement(rebass_1.Box, null,
271
+ React.createElement(FinanceFormSectionTitle, null, "Contact Columns"),
272
+ renderEditor('contactColumns', fdc3Columns.contactColumns))),
273
+ Boolean((_m = fdc3Columns.countryColumns) === null || _m === void 0 ? void 0 : _m.length) && (React.createElement(rebass_1.Box, null,
274
+ React.createElement(FinanceFormSectionTitle, null, "Country Columns"),
275
+ renderEditor('countryColumns', fdc3Columns.countryColumns))),
276
+ Boolean((_o = fdc3Columns.organizationColumns) === null || _o === void 0 ? void 0 : _o.length) && (React.createElement(rebass_1.Box, null,
277
+ React.createElement(FinanceFormSectionTitle, null, "Organization Columns"),
278
+ renderEditor('organizationColumns', fdc3Columns.organizationColumns)))));
279
+ };
280
+ exports.FinanceForm = FinanceForm;
@@ -0,0 +1 @@
1
+ export { FinanceForm } from './FinanceForm';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FinanceForm = void 0;
4
+ var FinanceForm_1 = require("./FinanceForm");
5
+ Object.defineProperty(exports, "FinanceForm", { enumerable: true, get: function () { return FinanceForm_1.FinanceForm; } });
@@ -2,7 +2,7 @@
2
2
  import { AdaptableOptions } from '../../../types';
3
3
  interface GridOptionsFormOptions {
4
4
  adaptableOptions: AdaptableOptions;
5
- onChangeadaptableOptions: (adaptableOptions: AdaptableOptions) => void;
5
+ onChangeadAptableOptions: (adaptableOptions: AdaptableOptions) => void;
6
6
  }
7
7
  declare const GridOptionsForm: (props: GridOptionsFormOptions) => JSX.Element;
8
8
  export default GridOptionsForm;
@@ -18,7 +18,7 @@ const GridOptionsForm = (props) => {
18
18
  abOptions = Object.assign({}, abOptions);
19
19
  abOptions.gridOptions = Object.assign({}, abOptions.gridOptions);
20
20
  abOptions.gridOptions.enableRangeSelection = enableRangeSelection;
21
- props.onChangeadaptableOptions(abOptions);
21
+ props.onChangeadAptableOptions(abOptions);
22
22
  } })),
23
23
  React.createElement(FormLayout_1.FormRow, { label: "Show Quick Filter" },
24
24
  React.createElement(CheckBox_1.CheckBox, { checked: (_a = gridOptions.defaultColDef) === null || _a === void 0 ? void 0 : _a.floatingFilter, onChange: (floatingFilter) => {
@@ -27,21 +27,21 @@ const GridOptionsForm = (props) => {
27
27
  abOptions.gridOptions.defaultColDef = {
28
28
  floatingFilter,
29
29
  };
30
- props.onChangeadaptableOptions(abOptions);
30
+ props.onChangeadAptableOptions(abOptions);
31
31
  } })),
32
32
  React.createElement(FormLayout_1.FormRow, { label: "Suppress Column Virtualisation" },
33
33
  React.createElement(CheckBox_1.CheckBox, { checked: gridOptions.suppressColumnVirtualisation, onChange: (suppressColumnVirtualisation) => {
34
34
  abOptions = Object.assign({}, abOptions);
35
35
  abOptions.gridOptions = Object.assign({}, abOptions.gridOptions);
36
36
  abOptions.gridOptions.suppressColumnVirtualisation = suppressColumnVirtualisation;
37
- props.onChangeadaptableOptions(abOptions);
37
+ props.onChangeadAptableOptions(abOptions);
38
38
  } })),
39
39
  React.createElement(FormLayout_1.FormRow, { label: "Show Column Menu Button" },
40
40
  React.createElement(CheckBox_1.CheckBox, { checked: gridOptions.suppressMenuHide, onChange: (suppressMenuHide) => {
41
41
  abOptions = Object.assign({}, abOptions);
42
42
  abOptions.gridOptions = Object.assign({}, abOptions.gridOptions);
43
43
  abOptions.gridOptions.suppressMenuHide = suppressMenuHide;
44
- props.onChangeadaptableOptions(abOptions);
44
+ props.onChangeadAptableOptions(abOptions);
45
45
  } })))));
46
46
  };
47
47
  exports.default = GridOptionsForm;
@@ -10,6 +10,7 @@ const FormLayout_1 = tslib_1.__importStar(require("../../../../components/FormLa
10
10
  const Input_1 = tslib_1.__importDefault(require("../../../../components/Input"));
11
11
  const SimpleButton_1 = tslib_1.__importDefault(require("../../../../components/SimpleButton"));
12
12
  const DropdownButton_1 = tslib_1.__importDefault(require("../../../../components/DropdownButton"));
13
+ const FormBox_1 = require("../Components/FormBox");
13
14
  const UIOptionsStatusbarForm = (props) => {
14
15
  var _a, _b, _c, _d;
15
16
  const allPanels = (_c = (_b = (_a = props.abOptions.gridOptions) === null || _a === void 0 ? void 0 : _a.statusBar) === null || _b === void 0 ? void 0 : _b.statusPanels) !== null && _c !== void 0 ? _c : [];
@@ -82,14 +83,7 @@ const UIOptionsStatusbarForm = (props) => {
82
83
  return (React.createElement(rebass_1.Box, null,
83
84
  React.createElement(HelpBlock_1.default, null, "Status Bar"),
84
85
  React.createElement(rebass_1.Box, { p: 2 },
85
- React.createElement(rebass_1.Box, { style: {
86
- border: '1px solid var(--ab-color-primarydark)',
87
- borderRadius: 'var(--ab__border-radius)',
88
- marginBottom: 'var(--ab-space-2)',
89
- paddingBottom: 'var(--ab-space-1)',
90
- backgroundColor: 'var(--ab-color-defaultbackground)',
91
- padding: 'var(--ab-space-2)',
92
- } },
86
+ React.createElement(FormBox_1.NocodeWizardFormBox, null,
93
87
  React.createElement(rebass_1.Box, { as: "b" }, "Create Adaptable Statusbar Panel"),
94
88
  React.createElement(FormLayout_1.default, { mt: 2 },
95
89
  React.createElement(FormLayout_1.FormRow, { label: "Panel Name" },
@@ -2,7 +2,7 @@ import * as React from 'react';
2
2
  import { AdaptableOptions } from '../../../../types';
3
3
  interface UIElementsOptionsProps {
4
4
  adaptableOptions: AdaptableOptions;
5
- onChangeadaptableOptions: (adaptableOptions: AdaptableOptions) => void;
5
+ onChangeadAptableOptions: (adaptableOptions: AdaptableOptions) => void;
6
6
  }
7
7
  export declare const UIElementsForm: React.FunctionComponent<UIElementsOptionsProps>;
8
8
  export {};
@@ -9,8 +9,8 @@ const UIOptionsStatusbarForm_1 = require("./UIOptionsStatusbarForm");
9
9
  const UIElementsForm = (props) => {
10
10
  let abOptions = props.adaptableOptions;
11
11
  return (React.createElement(React.Fragment, null,
12
- React.createElement(UIOptionsActionColumnsForm_1.UIOptionsActionColumnsForm, { abOptions: abOptions, onChange: props.onChangeadaptableOptions }),
13
- React.createElement(UIOptionsSidebarForm_1.UIOptionsSidebarForm, { abOptions: abOptions, onChange: props.onChangeadaptableOptions }),
14
- React.createElement(UIOptionsStatusbarForm_1.UIOptionsStatusbarForm, { abOptions: abOptions, onChange: props.onChangeadaptableOptions })));
12
+ React.createElement(UIOptionsActionColumnsForm_1.UIOptionsActionColumnsForm, { abOptions: abOptions, onChange: props.onChangeadAptableOptions }),
13
+ React.createElement(UIOptionsSidebarForm_1.UIOptionsSidebarForm, { abOptions: abOptions, onChange: props.onChangeadAptableOptions }),
14
+ React.createElement(UIOptionsStatusbarForm_1.UIOptionsStatusbarForm, { abOptions: abOptions, onChange: props.onChangeadAptableOptions })));
15
15
  };
16
16
  exports.UIElementsForm = UIElementsForm;
@@ -94,8 +94,8 @@ const Wizard = (props) => {
94
94
  }, []);
95
95
  const ddEnabled = (_a = props.ddEnabled) !== null && _a !== void 0 ? _a : !props.fetchData;
96
96
  return (React.createElement(React.Fragment, null,
97
- ddEnabled && (React.createElement(FileDroppable_1.default, { key: droppableKey, className: 'ab-nocode-wizard', toJSON: props.fileContentsToJSON, readFile: props.readFile, fileAccept: props.fileAccept, helpText: props.helpText, message: state.error, defaultText: props.defaultActionMessage, dragOverText: props.dragOverActionMessage, loadingText: props.loadingMessage, onDropSuccess: handleDataSource })),
98
- isDataLoading && (React.createElement(rebass_1.Flex, { className: 'ab-nocode-wizard', alignItems: "center", justifyContent: "center", flexDirection: "column" }, props.loadingMessage || 'Loading ...')),
97
+ ddEnabled && (React.createElement(FileDroppable_1.default, { key: droppableKey, className: 'ab-NocodeWizard', toJSON: props.fileContentsToJSON, readFile: props.readFile, fileAccept: props.fileAccept, helpText: props.helpText, message: state.error, defaultText: props.defaultActionMessage, dragOverText: props.dragOverActionMessage, loadingText: props.loadingMessage, onDropSuccess: handleDataSource })),
98
+ isDataLoading && (React.createElement(rebass_1.Flex, { className: 'ab-NocodeWizard', alignItems: "center", justifyContent: "center", flexDirection: "column" }, props.loadingMessage || 'Loading ...')),
99
99
  wizard));
100
100
  };
101
101
  exports.Wizard = Wizard;
@@ -14,6 +14,5 @@ export declare class CalculatedColumnSummaryComponent extends React.Component<Ca
14
14
  onEdit(calculatedColumn: CalculatedColumn): void;
15
15
  onCloseWizard(): void;
16
16
  onFinishWizard: (calculatedColumn: CalculatedColumn) => void;
17
- canFinishWizard(): boolean;
18
17
  }
19
18
  export declare let CalculatedColumnSummary: import("react-redux").ConnectedComponent<typeof CalculatedColumnSummaryComponent, import("react-redux").Omit<React.ClassAttributes<CalculatedColumnSummaryComponent> & CalculatedColumnSummaryProps, "ref" | "key" | "api" | "onSuspend" | "accessLevel" | "popupParams" | "onClearPopupParams" | "teamSharingActivated" | "onClosePopup" | "moduleInfo" | "onUnSuspend" | "modalContainer" | "onShare" | "onEdit" | "summarisedColumn" | "CalculatedColumns" | "onDeleteConfirm">>;
@@ -9,7 +9,6 @@ const CalculatedColumnRedux = tslib_1.__importStar(require("../../Redux/ActionsR
9
9
  const EditableConfigEntityState_1 = require("../Components/SharedProps/EditableConfigEntityState");
10
10
  const UIHelper_1 = require("../UIHelper");
11
11
  const ModuleDetail_1 = require("../Components/ModuleSummary/ModuleDetail");
12
- const StringExtensions_1 = require("../../Utilities/Extensions/StringExtensions");
13
12
  const CalculatedColumnWizard_1 = require("./Wizard/CalculatedColumnWizard");
14
13
  class CalculatedColumnSummaryComponent extends React.Component {
15
14
  constructor(props) {
@@ -26,10 +25,9 @@ class CalculatedColumnSummaryComponent extends React.Component {
26
25
  }
27
26
  render() {
28
27
  let detailRow;
29
- let sharing = this.props.teamSharingActivated;
30
28
  this.props.CalculatedColumns.map((item, index) => {
31
29
  if (item.ColumnId == this.props.summarisedColumn.columnId) {
32
- detailRow = (React.createElement(ModuleDetail_1.ModuleDetail, { key: 'UF' + index, item1: this.props.moduleInfo.FriendlyName, item2: this.props.api.queryLanguageApi.getAdaptableQueryExpression(item.Query), configEnity: item, showShare: this.props.teamSharingActivated, moduleInfo: this.props.moduleInfo, onEdit: () => this.onEdit(item), onShare: (config) => this.props.onShare(item, config), onDelete: CalculatedColumnRedux.CalculatedColumnDelete(item), showBold: true, accessLevel: this.props.accessLevel }));
30
+ detailRow = (React.createElement(ModuleDetail_1.ModuleDetail, { key: 'UF' + index, item1: this.props.moduleInfo.FriendlyName, item2: this.props.api.internalApi.getAdaptableQueryExpressionText(item.Query), configEnity: item, showShare: this.props.teamSharingActivated, moduleInfo: this.props.moduleInfo, onEdit: () => this.onEdit(item), onShare: (config) => this.props.onShare(item, config), onDelete: CalculatedColumnRedux.CalculatedColumnDelete(item), showBold: true, accessLevel: this.props.accessLevel }));
33
31
  }
34
32
  });
35
33
  return (React.createElement("div", null,
@@ -50,11 +48,6 @@ class CalculatedColumnSummaryComponent extends React.Component {
50
48
  wizardStatus: EditableConfigEntityState_1.WizardStatus.None,
51
49
  });
52
50
  }
53
- canFinishWizard() {
54
- let calculatedColumn = this.state.editedAdaptableObject;
55
- return (StringExtensions_1.StringExtensions.IsNotNullOrEmpty(calculatedColumn.ColumnId) &&
56
- StringExtensions_1.StringExtensions.IsNotNullOrEmpty(this.props.api.queryLanguageApi.getAdaptableQueryExpression(calculatedColumn.Query)));
57
- }
58
51
  }
59
52
  exports.CalculatedColumnSummaryComponent = CalculatedColumnSummaryComponent;
60
53
  function mapStateToProps(state) {
@@ -0,0 +1,2 @@
1
+ import { CalculatedColumnSettings } from '../../../types';
2
+ export declare const getCalculatedColumnSettingsTags: (settings: CalculatedColumnSettings) => string[];
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getCalculatedColumnSettingTags = void 0;
4
- const getCalculatedColumnSettingTags = (settings) => {
3
+ exports.getCalculatedColumnSettingsTags = void 0;
4
+ const getCalculatedColumnSettingsTags = (settings) => {
5
5
  const { DataType, Width, Filterable, Resizable, Groupable, Sortable, Pivotable, Aggregatable } = settings !== null && settings !== void 0 ? settings : {};
6
6
  const colTypes = (settings === null || settings === void 0 ? void 0 : settings.ColumnTypes) ? settings.ColumnTypes.join(', ') : '';
7
7
  return [
@@ -16,4 +16,4 @@ const getCalculatedColumnSettingTags = (settings) => {
16
16
  colTypes ? `Column Types: ${colTypes}` : null,
17
17
  ].filter(Boolean);
18
18
  };
19
- exports.getCalculatedColumnSettingTags = getCalculatedColumnSettingTags;
19
+ exports.getCalculatedColumnSettingsTags = getCalculatedColumnSettingsTags;
@@ -0,0 +1,10 @@
1
+ /// <reference types="react" />
2
+ import { AdaptableApi } from '../../../Api/AdaptableApi';
3
+ import { CalculatedColumn } from '../../../PredefinedConfig/CalculatedColumnState';
4
+ export declare type CalculatedColumnDefinitionWizardSectionProps = {
5
+ onChange: (data: CalculatedColumn) => void;
6
+ isEdit: boolean;
7
+ };
8
+ export declare const renderCalculatedColumnDefinitionSummary: (data: CalculatedColumn) => JSX.Element;
9
+ export declare const isValidCalculatedColumnDefinition: (data: CalculatedColumn, api: AdaptableApi) => true | string;
10
+ export declare const CalculatedColumnDefinitionWizardSection: (props: CalculatedColumnDefinitionWizardSectionProps) => JSX.Element;
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CalculatedColumnDefinitionWizardSection = exports.isValidCalculatedColumnDefinition = exports.renderCalculatedColumnDefinitionSummary = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const React = tslib_1.__importStar(require("react"));
6
+ const react_1 = require("react");
7
+ const rebass_1 = require("rebass");
8
+ const OnePageAdaptableWizard_1 = require("../../Wizard/OnePageAdaptableWizard");
9
+ const FormLayout_1 = tslib_1.__importStar(require("../../../components/FormLayout"));
10
+ const Input_1 = tslib_1.__importDefault(require("../../../components/Input"));
11
+ const CheckBox_1 = require("../../../components/CheckBox");
12
+ const ErrorBox_1 = tslib_1.__importDefault(require("../../../components/ErrorBox"));
13
+ const Tabs_1 = require("../../../components/Tabs");
14
+ const Tag_1 = require("../../../components/Tag");
15
+ const renderCalculatedColumnDefinitionSummary = (data) => {
16
+ var _a;
17
+ return (React.createElement(rebass_1.Box, { fontSize: 2 },
18
+ React.createElement(rebass_1.Box, null,
19
+ "Column Identifier: ",
20
+ React.createElement(Tag_1.Tag, null, data.ColumnId)),
21
+ data.FriendlyName ? (React.createElement(rebass_1.Box, { mt: 3 },
22
+ "Column Name: ",
23
+ React.createElement(Tag_1.Tag, null, (_a = data.FriendlyName) !== null && _a !== void 0 ? _a : data.ColumnId))) : null));
24
+ };
25
+ exports.renderCalculatedColumnDefinitionSummary = renderCalculatedColumnDefinitionSummary;
26
+ const isValidCalculatedColumnDefinition = (data, api) => {
27
+ const columns = api.columnApi.getColumns();
28
+ if (!data.ColumnId) {
29
+ return 'Column Id cannot be empty';
30
+ }
31
+ const columnsWithSameIdCount = columns.filter((c) => c.columnId === data.ColumnId).length;
32
+ const hasAlreadyExistingId = data.Uuid ? columnsWithSameIdCount > 1 : columnsWithSameIdCount > 0;
33
+ return hasAlreadyExistingId ? 'A Column already exists with that id' : true;
34
+ };
35
+ exports.isValidCalculatedColumnDefinition = isValidCalculatedColumnDefinition;
36
+ const CalculatedColumnDefinitionWizardSection = (props) => {
37
+ var _a;
38
+ const { data, api } = OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext();
39
+ const handleColumnIdChange = (event) => {
40
+ let e = event.target;
41
+ props.onChange(Object.assign(Object.assign({}, data), { ColumnId: e.value }));
42
+ };
43
+ const handleColumnNameChange = (event) => {
44
+ let e = event.target;
45
+ props.onChange(Object.assign(Object.assign({}, data), { FriendlyName: e.value }));
46
+ };
47
+ const inEdit = props.isEdit;
48
+ const validCheck = exports.isValidCalculatedColumnDefinition(data, api);
49
+ const ErrorMessage = validCheck === true ? null : validCheck;
50
+ const [ColumnNameFocused, setColumnNameFocused] = react_1.useState(false);
51
+ const ColumnName = data.FriendlyName;
52
+ const ColumnId = data.ColumnId;
53
+ const { ShowToolTip, HeaderToolTip } = (_a = data.CalculatedColumnSettings) !== null && _a !== void 0 ? _a : {};
54
+ const handleSpecialColumnSettingsChange = (settings) => {
55
+ props.onChange(Object.assign(Object.assign({}, data), { CalculatedColumnSettings: Object.assign(Object.assign({}, data.CalculatedColumnSettings), settings) }));
56
+ };
57
+ return (React.createElement(rebass_1.Box, { "data-name": 'calculated-column-definition' },
58
+ React.createElement(Tabs_1.Tabs, { autoFocus: false },
59
+ React.createElement(Tabs_1.Tabs.Tab, null, "Column Details"),
60
+ React.createElement(Tabs_1.Tabs.Content, null,
61
+ React.createElement(rebass_1.Flex, { flexDirection: "row" },
62
+ React.createElement(FormLayout_1.default, null,
63
+ React.createElement(FormLayout_1.FormRow, { label: "Column Id" },
64
+ React.createElement(Input_1.default, { "data-name": "column-id", value: data.ColumnId || '', width: 300, autoFocus: !inEdit, disabled: inEdit, type: "text", placeholder: "Enter an Id for the column", onChange: handleColumnIdChange })),
65
+ React.createElement(FormLayout_1.FormRow, { label: "Name" },
66
+ React.createElement(Input_1.default, { "data-name": "column-name", autoFocus: inEdit, onFocus: () => {
67
+ setColumnNameFocused(true);
68
+ }, onBlur: () => {
69
+ setColumnNameFocused(false);
70
+ }, value: ColumnNameFocused ? ColumnName || '' : ColumnName || ColumnId || '', width: 300, type: "text", placeholder: "Enter column name", onChange: handleColumnNameChange })),
71
+ React.createElement(FormLayout_1.FormRow, { label: "Header Tooltip" },
72
+ React.createElement(Input_1.default, { "data-name": "header-tooltip", type: "text", width: 300, value: HeaderToolTip, onChange: (e) => handleSpecialColumnSettingsChange({
73
+ HeaderToolTip: e.target.value,
74
+ }) })),
75
+ ' ',
76
+ React.createElement(FormLayout_1.FormRow, { label: "" },
77
+ React.createElement(CheckBox_1.CheckBox, { "data-name": "column-show-tooltip", onChange: (checked) => handleSpecialColumnSettingsChange({ ShowToolTip: checked }), checked: ShowToolTip }, "Show Expression as Cell Tooltip")))))),
78
+ ErrorMessage ? React.createElement(ErrorBox_1.default, { marginTop: 2 }, ErrorMessage) : null));
79
+ };
80
+ exports.CalculatedColumnDefinitionWizardSection = CalculatedColumnDefinitionWizardSection;
@@ -11,10 +11,11 @@ const Tabs_1 = require("../../../components/Tabs");
11
11
  const CodeBlock_1 = require("../../../components/CodeBlock");
12
12
  const Radio_1 = tslib_1.__importDefault(require("../../../components/Radio"));
13
13
  const renderCalculatedColumnExpressionSummary = (data) => {
14
- var _a;
14
+ const { api } = OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext();
15
15
  return (React.createElement(rebass_1.Box, { fontSize: 2 },
16
- "Column scalar expression: ",
17
- React.createElement(CodeBlock_1.CodeBlock, null, (_a = data.Query) === null || _a === void 0 ? void 0 : _a.ScalarExpression)));
16
+ "Column scalar expression:",
17
+ ' ',
18
+ React.createElement(CodeBlock_1.CodeBlock, null, api.internalApi.getAdaptableQueryExpressionText(data.Query))));
18
19
  };
19
20
  exports.renderCalculatedColumnExpressionSummary = renderCalculatedColumnExpressionSummary;
20
21
  const isValidCalculatedColumnExpression = (data, api) => {
@@ -46,18 +47,24 @@ QueryTab.defaultProps = {
46
47
  const CalculatedColumnExpressionWizardSection = (props) => {
47
48
  const { api, data, moduleInfo } = OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext();
48
49
  const initialData = react_1.useMemo(() => api.internalApi.getQueryPreviewData(), []);
49
- const type = data.Query.AggregatedScalarExpression != undefined
50
- ? 'AggregatedScalarExpression'
51
- : 'ScalarExpression';
52
- const [selectedTab, setSelectedTab] = React.useState(type);
53
- const setType = (type) => {
54
- setSelectedTab(type);
55
- if (type === 'ScalarExpression') {
50
+ const [selectedTab, setSelectedTab] = React.useState(() => {
51
+ return data.Query.AggregatedScalarExpression == undefined
52
+ ? 'ScalarExpression'
53
+ : api.internalApi
54
+ .getQueryLanguageService()
55
+ .isCumulativeAggregate(data.Query.AggregatedScalarExpression)
56
+ ? 'CumulativeAggregateExpression'
57
+ : 'AggregatedScalarExpression';
58
+ });
59
+ const updateExpressionType = (expressionType) => {
60
+ setSelectedTab(expressionType);
61
+ if (expressionType === 'ScalarExpression') {
56
62
  props.onChange(Object.assign(Object.assign({}, data), { Query: {
57
63
  ScalarExpression: '',
58
64
  } }));
59
65
  }
60
66
  else {
67
+ // CumulativeAggregateExpression & AggregatedScalarExpression use the same property
61
68
  props.onChange(Object.assign(Object.assign({}, data), { Query: {
62
69
  AggregatedScalarExpression: '',
63
70
  } }));
@@ -68,12 +75,15 @@ const CalculatedColumnExpressionWizardSection = (props) => {
68
75
  const dataType = calculatedColumnExpressionService.getCalculatedColumnDataType(calculatedColumnQuery);
69
76
  props.onChange(Object.assign(Object.assign({}, data), { Query: calculatedColumnQuery, CalculatedColumnSettings: Object.assign(Object.assign({}, data.CalculatedColumnSettings), { DataType: dataType }) }));
70
77
  };
71
- return (React.createElement(Tabs_1.Tabs, { onValueChange: setType, value: selectedTab, p: 2, style: { height: '100%', flex: 1, overflow: 'auto' } },
72
- React.createElement(QueryTab, { value: "ScalarExpression", type: type, label: "Scalar" }),
78
+ return (React.createElement(Tabs_1.Tabs, { onValueChange: updateExpressionType, value: selectedTab, p: 2, style: { height: '100%', flex: 1, overflow: 'auto' } },
79
+ React.createElement(QueryTab, { value: "ScalarExpression", type: selectedTab, label: "Scalar" }),
73
80
  React.createElement(Tabs_1.Tabs.Content, { value: 'ScalarExpression' },
74
81
  React.createElement(ExpressionEditor_1.ExpressionEditor, { type: 'scalar', module: moduleInfo.ModuleName, style: { paddingLeft: 0 }, value: data.Query.ScalarExpression, onChange: (ScalarExpression) => setCalculatedColumnExpression({ ScalarExpression }), initialData: initialData, columns: api.columnApi.getQueryableColumns(), namedQueries: api.queryApi.getAllNamedQuery(), isFullExpression: true, api: api })),
75
- React.createElement(QueryTab, { value: "AggregatedScalarExpression", type: type, label: "AggregatedScalar" }),
82
+ React.createElement(QueryTab, { value: "AggregatedScalarExpression", type: selectedTab, label: "AggregatedScalar" }),
76
83
  React.createElement(Tabs_1.Tabs.Content, { value: 'AggregatedScalarExpression' },
77
- React.createElement(ExpressionEditor_1.ExpressionEditor, { type: 'aggregatedScalar', module: moduleInfo.ModuleName, style: { paddingLeft: 0 }, value: data.Query.AggregatedScalarExpression, onChange: (AggregatedScalarExpression) => setCalculatedColumnExpression({ AggregatedScalarExpression }), initialData: initialData, columns: api.columnApi.getQueryableColumns(), namedQueries: api.queryApi.getAllNamedQuery(), isFullExpression: true, api: api }))));
84
+ React.createElement(ExpressionEditor_1.ExpressionEditor, { type: 'aggregatedScalar', module: moduleInfo.ModuleName, style: { paddingLeft: 0 }, value: data.Query.AggregatedScalarExpression, onChange: (AggregatedScalarExpression) => setCalculatedColumnExpression({ AggregatedScalarExpression }), initialData: initialData, columns: api.columnApi.getQueryableColumns(), namedQueries: api.queryApi.getAllNamedQuery(), isFullExpression: true, api: api })),
85
+ React.createElement(QueryTab, { value: "CumulativeAggregateExpression", type: selectedTab, label: "CumulativeAggregatedScalar" }),
86
+ React.createElement(Tabs_1.Tabs.Content, { value: 'CumulativeAggregateExpression' },
87
+ React.createElement(ExpressionEditor_1.ExpressionEditor, { type: 'cumulativeAggregatedScalar', module: moduleInfo.ModuleName, style: { paddingLeft: 0 }, value: data.Query.AggregatedScalarExpression, onChange: (AggregatedScalarExpression) => setCalculatedColumnExpression({ AggregatedScalarExpression }), initialData: initialData, columns: api.columnApi.getQueryableColumns(), namedQueries: api.queryApi.getAllNamedQuery(), isFullExpression: true, api: api }))));
78
88
  };
79
89
  exports.CalculatedColumnExpressionWizardSection = CalculatedColumnExpressionWizardSection;