@adaptabletools/adaptable 22.0.0-canary.6 → 22.0.0-canary.8

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 (150) hide show
  1. package/index.css +63 -74
  2. package/index.css.map +1 -1
  3. package/package.json +1 -1
  4. package/src/AdaptableInterfaces/IAdaptable.d.ts +6 -6
  5. package/src/AdaptableOptions/ContainerOptions.d.ts +55 -15
  6. package/src/AdaptableState/AdaptableState.d.ts +2 -0
  7. package/src/AdaptableState/AlertState.d.ts +1 -2
  8. package/src/AdaptableState/Common/AdaptableColumnContext.d.ts +9 -0
  9. package/src/AdaptableState/Common/AdaptableObject.d.ts +4 -0
  10. package/src/AdaptableState/Common/AdaptableRowContext.d.ts +11 -0
  11. package/src/AdaptableState/Common/AdaptableRowContext.js +1 -0
  12. package/src/AdaptableState/Common/BaseContext.d.ts +2 -0
  13. package/src/AdaptableState/Common/DataUpdateConfig.d.ts +7 -0
  14. package/src/AdaptableState/Common/NamedObject.d.ts +10 -0
  15. package/src/AdaptableState/Common/NamedObject.js +1 -0
  16. package/src/AdaptableState/Common/RowSummary.d.ts +1 -1
  17. package/src/AdaptableState/Common/Schedule.d.ts +2 -2
  18. package/src/AdaptableState/Common/SuspendableObject.d.ts +10 -0
  19. package/src/AdaptableState/Common/SuspendableObject.js +1 -0
  20. package/src/AdaptableState/Common/TransposeConfig.d.ts +11 -9
  21. package/src/AdaptableState/CustomSortState.d.ts +1 -1
  22. package/src/AdaptableState/FormatColumnState.d.ts +1 -1
  23. package/src/AdaptableState/InitialState.d.ts +9 -0
  24. package/src/AdaptableState/LayoutState.d.ts +2 -3
  25. package/src/AdaptableState/PlusMinusState.d.ts +1 -1
  26. package/src/AdaptableState/ShortcutState.d.ts +1 -1
  27. package/src/AdaptableState/StyledColumnState.d.ts +1 -1
  28. package/src/AdaptableState/UserInterfaceState.d.ts +14 -0
  29. package/src/AdaptableState/UserInterfaceState.js +1 -0
  30. package/src/Api/AlertApi.d.ts +6 -0
  31. package/src/Api/CustomSortApi.d.ts +6 -0
  32. package/src/Api/FlashingCellApi.d.ts +6 -0
  33. package/src/Api/FormatColumnApi.d.ts +10 -4
  34. package/src/Api/GridApi.d.ts +5 -9
  35. package/src/Api/Implementation/AlertApiImpl.d.ts +1 -0
  36. package/src/Api/Implementation/AlertApiImpl.js +5 -6
  37. package/src/Api/Implementation/ChartingApiImpl.js +2 -2
  38. package/src/Api/Implementation/CustomSortApiImpl.d.ts +1 -0
  39. package/src/Api/Implementation/CustomSortApiImpl.js +3 -0
  40. package/src/Api/Implementation/FlashingCellApiImpl.d.ts +1 -0
  41. package/src/Api/Implementation/FlashingCellApiImpl.js +3 -0
  42. package/src/Api/Implementation/FormatColumnApiImpl.d.ts +6 -5
  43. package/src/Api/Implementation/FormatColumnApiImpl.js +6 -5
  44. package/src/Api/Implementation/GridApiImpl.d.ts +2 -6
  45. package/src/Api/Implementation/GridApiImpl.js +9 -9
  46. package/src/Api/Implementation/LayoutApiImpl.d.ts +1 -0
  47. package/src/Api/Implementation/LayoutApiImpl.js +4 -1
  48. package/src/Api/Implementation/NamedQueryApiImpl.js +2 -2
  49. package/src/Api/Implementation/PlusMinusApiImpl.d.ts +1 -0
  50. package/src/Api/Implementation/PlusMinusApiImpl.js +3 -0
  51. package/src/Api/Implementation/ScheduleApiImpl.d.ts +1 -0
  52. package/src/Api/Implementation/ScheduleApiImpl.js +3 -0
  53. package/src/Api/Implementation/ShortcutApiImpl.d.ts +1 -0
  54. package/src/Api/Implementation/ShortcutApiImpl.js +3 -0
  55. package/src/Api/Implementation/SystemStatusApiImpl.js +6 -9
  56. package/src/Api/Implementation/UserInterfaceApiImpl.d.ts +5 -0
  57. package/src/Api/Implementation/UserInterfaceApiImpl.js +13 -0
  58. package/src/Api/Internal/CalculatedColumnInternalApi.js +2 -2
  59. package/src/Api/Internal/FreeTextColumnInternalApi.js +2 -2
  60. package/src/Api/Internal/LayoutInternalApi.js +1 -1
  61. package/src/Api/Internal/NamedQueryInternalApi.js +4 -4
  62. package/src/Api/LayoutApi.d.ts +6 -0
  63. package/src/Api/PlusMinusApi.d.ts +6 -0
  64. package/src/Api/ScheduleApi.d.ts +6 -0
  65. package/src/Api/ShortcutApi.d.ts +6 -0
  66. package/src/Api/UserInterfaceApi.d.ts +17 -0
  67. package/src/Redux/ActionsReducers/FormatColumnRedux.d.ts +8 -0
  68. package/src/Redux/ActionsReducers/FormatColumnRedux.js +15 -0
  69. package/src/Redux/ActionsReducers/UserInterfaceRedux.d.ts +11 -0
  70. package/src/Redux/ActionsReducers/UserInterfaceRedux.js +21 -0
  71. package/src/Redux/Store/AdaptableStore.js +45 -16
  72. package/src/Strategy/BulkUpdateModule.js +8 -8
  73. package/src/Strategy/PlusMinusModule.js +1 -1
  74. package/src/Strategy/QuickSearchModule.js +1 -1
  75. package/src/Strategy/SettingsPanelModule.js +11 -7
  76. package/src/Strategy/SmartEditModule.js +10 -10
  77. package/src/Utilities/Services/DataService.js +1 -1
  78. package/src/Utilities/Services/Fdc3Service.js +4 -4
  79. package/src/Utilities/Services/ModuleService.js +1 -3
  80. package/src/Utilities/Services/ThemeService.js +2 -6
  81. package/src/Utilities/Services/ValidationService.js +1 -1
  82. package/src/Utilities/logDeprecation.js +3 -4
  83. package/src/Utilities/resolveContainerElement.d.ts +23 -0
  84. package/src/Utilities/resolveContainerElement.js +44 -0
  85. package/src/View/Alert/Wizard/isValidAlertRules.js +1 -1
  86. package/src/View/CalculatedColumn/Wizard/CalculatedColumnDefinitionWizardSection.js +2 -2
  87. package/src/View/CalculatedColumn/Wizard/CalculatedColumnExpressionWizardSection.js +2 -2
  88. package/src/View/CalculatedColumn/Wizard/CalculatedColumnSettingsWizardSection.js +1 -1
  89. package/src/View/Charting/ChartingWizard/AgChargingWizard/SettingsSection.js +2 -2
  90. package/src/View/Charting/ChartingWizard/ExternalChartingWizard/SettingsSection.js +2 -2
  91. package/src/View/Components/CellPopup/index.js +1 -1
  92. package/src/View/Components/ColumnFilter/components/ColumnFilterInput.js +1 -1
  93. package/src/View/Components/EntityRulesEditor/Utilities.js +5 -5
  94. package/src/View/Components/NewScopeComponent.js +3 -3
  95. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopup.js +2 -1
  96. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupBody.js +1 -1
  97. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupDialog.d.ts +1 -1
  98. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupDialog.js +1 -8
  99. package/src/View/Components/Popups/AdaptablePopupConfirmation.js +1 -1
  100. package/src/View/Components/Popups/WindowPopups/WindowPopups.js +36 -1
  101. package/src/View/Components/WizardSummaryPage.js +1 -1
  102. package/src/View/CustomSort/Wizard/CustomSortColumnWizardSection.js +3 -3
  103. package/src/View/CustomSort/Wizard/CustomSortValuesWizardSection.js +1 -1
  104. package/src/View/Dashboard/CustomToolbar.js +1 -1
  105. package/src/View/DataChangeHistory/DataChangeHistoryViewPanel.js +1 -1
  106. package/src/View/FlashingCell/Wizard/isValidFlashingCellRules.js +1 -1
  107. package/src/View/FreeTextColumn/Wizard/FreeTextColumnSettingsWizardSection.d.ts +1 -1
  108. package/src/View/FreeTextColumn/Wizard/FreeTextColumnSettingsWizardSection.js +3 -3
  109. package/src/View/Layout/LayoutViewPanel.js +1 -1
  110. package/src/View/Layout/TransposedPopup.js +144 -138
  111. package/src/View/Layout/Wizard/sections/AggregationsSection.js +1 -1
  112. package/src/View/Layout/Wizard/sections/FilterSection.js +1 -1
  113. package/src/View/Layout/Wizard/sections/GridFilterSection.js +1 -1
  114. package/src/View/Layout/Wizard/sections/PivotAggregationsSection.js +3 -3
  115. package/src/View/Layout/Wizard/sections/RowSummarySection.js +1 -1
  116. package/src/View/NamedQuery/Wizard/NamedQueryExpressionWizardSection.js +2 -2
  117. package/src/View/PlusMinus/Wizard/PlusMinusSettingsWizardSection.js +5 -5
  118. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsReminder.js +1 -1
  119. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/isSettingsValid.d.ts +1 -1
  120. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/isSettingsValid.js +11 -11
  121. package/src/View/StateManagement/handleExportState.js +1 -1
  122. package/src/View/StyledColumn/Wizard/StyledColumnWizardColumnSection.js +1 -1
  123. package/src/View/UIHelper.d.ts +2 -1
  124. package/src/View/UIHelper.js +8 -14
  125. package/src/agGrid/Adaptable.js +11 -11
  126. package/src/agGrid/AdaptableAgGrid.d.ts +12 -8
  127. package/src/agGrid/AdaptableAgGrid.js +150 -82
  128. package/src/agGrid/AgGridAdapter.js +8 -8
  129. package/src/agGrid/AgGridColumnAdapter.js +1 -1
  130. package/src/agGrid/AgGridExportAdapter.js +5 -5
  131. package/src/agGrid/AgGridFloatingFilterAdapter.js +1 -1
  132. package/src/agGrid/AgGridMenuAdapter.js +9 -1
  133. package/src/agGrid/AgGridThemeAdapter.js +2 -2
  134. package/src/components/CheckBox/index.js +1 -1
  135. package/src/components/Dropdown/Arrows.js +1 -1
  136. package/src/components/ExpressionEditor/DataTableEditor.js +3 -3
  137. package/src/components/FormLayout/index.js +1 -1
  138. package/src/components/OverlayTrigger/index.js +1 -1
  139. package/src/components/Select/Select.js +1 -1
  140. package/src/components/Tree/TreeDropdown/index.js +1 -1
  141. package/src/env.js +2 -2
  142. package/src/metamodel/adaptable.metamodel.d.ts +62 -0
  143. package/src/metamodel/adaptable.metamodel.js +1 -1
  144. package/src/migration/AdaptableUpgradeHelper.js +2 -2
  145. package/src/migration/VersionUpgrade17.js +4 -4
  146. package/src/migration/VersionUpgrade20.js +4 -4
  147. package/src/types.d.ts +5 -2
  148. package/themes/dark.css +30 -29
  149. package/themes/light.css +4 -2
  150. package/tsconfig.esm.tsbuildinfo +1 -1
@@ -7,6 +7,7 @@ import { createElement } from 'react';
7
7
  import UIHelper from '../../View/UIHelper';
8
8
  import StringExtensions from '../../Utilities/Extensions/StringExtensions';
9
9
  import { SystemStatusInternalApi } from '../Internal/SystemStatusInternalApi';
10
+ import { resolveContainerElement } from '../../Utilities/resolveContainerElement';
10
11
  export class SystemStatusApiImpl extends ApiBase {
11
12
  systemStatusDiv;
12
13
  internalApi;
@@ -27,16 +28,16 @@ export class SystemStatusApiImpl extends ApiBase {
27
28
  }
28
29
  switch (messageType) {
29
30
  case 'Success':
30
- alertApi.showAlertSuccess('System Status Success', fullMessage);
31
+ alertApi.showAlertSuccess('System Status', fullMessage);
31
32
  return;
32
33
  case 'Info':
33
- alertApi.showAlertInfo('System Status Info', fullMessage);
34
+ alertApi.showAlertInfo('System Status', fullMessage);
34
35
  return;
35
36
  case 'Warning':
36
- alertApi.showAlertWarning('System Status Warning', fullMessage);
37
+ alertApi.showAlertWarning('System Status', fullMessage);
37
38
  return;
38
39
  case 'Error':
39
- alertApi.showAlertError('System Status Error', fullMessage);
40
+ alertApi.showAlertError('System Status', fullMessage);
40
41
  return;
41
42
  }
42
43
  }
@@ -48,11 +49,7 @@ export class SystemStatusApiImpl extends ApiBase {
48
49
  }
49
50
  displayMessageInDiv(statusMessage, statusFurtherInformation, messageType) {
50
51
  if (!this.systemStatusDiv) {
51
- let optionsDiv = this.getContainerOptions().systemStatusContainer;
52
- if (optionsDiv) {
53
- this.systemStatusDiv =
54
- typeof optionsDiv === 'string' ? document.getElementById(optionsDiv) : optionsDiv;
55
- }
52
+ this.systemStatusDiv = resolveContainerElement(this.getContainerOptions().systemStatusContainer, this.getAdaptableInternalApi().buildBaseContext());
56
53
  }
57
54
  if (this.systemStatusDiv) {
58
55
  if (StringExtensions.IsNotNullOrEmpty(statusFurtherInformation)) {
@@ -6,6 +6,7 @@ import { UserInterfaceInternalApi } from '../Internal/UserInterfaceInternalApi';
6
6
  import { UserInterfaceApi } from '../UserInterfaceApi';
7
7
  import { ProgressIndicatorConfig } from '../../AdaptableState/Common/ProgressIndicatorConfig';
8
8
  import { ApiBase } from './ApiBase';
9
+ import { UserInterfaceState } from '../../AdaptableState/UserInterfaceState';
9
10
  export declare class UserInterfaceApiImpl extends ApiBase implements UserInterfaceApi {
10
11
  internalApi: UserInterfaceInternalApi;
11
12
  private showProgressIndicatorTimeout;
@@ -26,4 +27,8 @@ export declare class UserInterfaceApiImpl extends ApiBase implements UserInterfa
26
27
  close: () => void;
27
28
  };
28
29
  closeCustomWindowPopup(windowId: string): void;
30
+ getUserInterfaceState(): UserInterfaceState;
31
+ isAdaptableUIVisible(): boolean;
32
+ hideAdaptableUI(): void;
33
+ showAdaptableUI(): void;
29
34
  }
@@ -4,6 +4,7 @@ import { CUSTOM_WINDOW_FACTORY_ID } from '../../View/Components/Popups/WindowPop
4
4
  import { UserInterfaceInternalApi } from '../Internal/UserInterfaceInternalApi';
5
5
  import { ApiBase } from './ApiBase';
6
6
  import { ProgressIndicatorHide, ProgressIndicatorShow, } from '../../Redux/ActionsReducers/PopupRedux';
7
+ import * as UserInterfaceRedux from '../../Redux/ActionsReducers/UserInterfaceRedux';
7
8
  export class UserInterfaceApiImpl extends ApiBase {
8
9
  internalApi;
9
10
  showProgressIndicatorTimeout = null;
@@ -128,4 +129,16 @@ export class UserInterfaceApiImpl extends ApiBase {
128
129
  closeCustomWindowPopup(windowId) {
129
130
  this.dispatchAction(PopupRedux.PopupHideWindow(windowId));
130
131
  }
132
+ getUserInterfaceState() {
133
+ return this.getAdaptableState().UserInterface;
134
+ }
135
+ isAdaptableUIVisible() {
136
+ return !(this.getUserInterfaceState().HideAdaptableUI ?? false);
137
+ }
138
+ hideAdaptableUI() {
139
+ this.dispatchAction(UserInterfaceRedux.UserInterfaceSetHideAdaptableUI(true));
140
+ }
141
+ showAdaptableUI() {
142
+ this.dispatchAction(UserInterfaceRedux.UserInterfaceSetHideAdaptableUI(false));
143
+ }
131
144
  }
@@ -150,8 +150,8 @@ export class CalculatedColumnInternalApi extends ApiBase {
150
150
  if (calculatedColumnReferences.length) {
151
151
  const alert = {
152
152
  alertType: 'generic',
153
- header: 'CalculatedColumn could not be deleted',
154
- message: `It is still referenced in the following modules: ${calculatedColumnReferences.join(', ')}`,
153
+ header: 'Calculated Column',
154
+ message: `This Calculated Column cannot be deleted. It is still referenced by: ${calculatedColumnReferences.join(', ')}.`,
155
155
  alertDefinition: CreateInternalAlertDefinitionForMessages('Error'),
156
156
  };
157
157
  this.getAlertApi().displayAdaptableAlertNotification(alert);
@@ -95,8 +95,8 @@ export class FreeTextColumnInternalApi extends ApiBase {
95
95
  if (freeTextColumnReferences.length) {
96
96
  const alert = {
97
97
  alertType: 'generic',
98
- header: 'FreeTextColumn could not be deleted',
99
- message: `It is still referenced in the following modules: ${freeTextColumnReferences.join(', ')}`,
98
+ header: 'Free Text Column',
99
+ message: `This Free Text Column cannot be deleted. It is still referenced by: ${freeTextColumnReferences.join(', ')}.`,
100
100
  alertDefinition: ObjectFactory.CreateInternalAlertDefinitionForMessages('Error'),
101
101
  };
102
102
  this.getAlertApi().displayAdaptableAlertNotification(alert);
@@ -92,7 +92,7 @@ export class LayoutInternalApi extends ApiBase {
92
92
  }
93
93
  setupRowSummaries() {
94
94
  if (!this._adaptable.agGridModulesAdapter.isAgGridModuleRegistered('PinnedRowModule')) {
95
- this.getAdaptableApi().consoleError(`Can NOT set Layout Row Summaries - missing required AG Grid module 'PinnedRowModule'`);
95
+ this.getAdaptableApi().consoleError('Layout Row Summaries require the AG Grid "PinnedRowModule". Please register this module.');
96
96
  return;
97
97
  }
98
98
  const rowSummaries = this.getAdaptableState().Internal?.RowSummary?.rowSummaries ?? [];
@@ -40,8 +40,8 @@ export class NamedQueryInternalApi extends ApiBase {
40
40
  if (namedQueryReferences.length) {
41
41
  const alert = {
42
42
  alertType: 'generic',
43
- header: 'Named Query could not be deleted',
44
- message: `It is still referenced in the following modules: ${namedQueryReferences.join(', ')}`,
43
+ header: 'Named Query',
44
+ message: `This Named Query cannot be deleted. It is still referenced by: ${namedQueryReferences.join(', ')}.`,
45
45
  alertDefinition: ObjectFactory.CreateInternalAlertDefinitionForMessages('Error'),
46
46
  };
47
47
  this.getAlertApi().displayAdaptableAlertNotification(alert);
@@ -56,8 +56,8 @@ export class NamedQueryInternalApi extends ApiBase {
56
56
  if (namedQueryReferences.length) {
57
57
  const alert = {
58
58
  alertType: 'generic',
59
- header: 'Named Query could not be renamed',
60
- message: `It is currently referenced in the following modules: ${namedQueryReferences.join(', ')}`,
59
+ header: 'Named Query',
60
+ message: `This Named Query cannot be renamed. It is currently referenced by: ${namedQueryReferences.join(', ')}.`,
61
61
  alertDefinition: ObjectFactory.CreateInternalAlertDefinitionForMessages('Error'),
62
62
  };
63
63
  this.getAlertApi().displayAdaptableAlertNotification(alert);
@@ -57,6 +57,12 @@ export interface LayoutApi {
57
57
  */
58
58
  getLayoutByName(layoutName: string): Layout | null;
59
59
  /**
60
+ * Sets (i.e. selects) the Extended Layout
61
+ * @param extendedLayout Extended Layout to set
62
+ */
63
+ setExtendedLayout(extendedLayout: ExtendedLayout): void;
64
+ /**
65
+ *
60
66
  * Retrieves Layout with the given name
61
67
  * @param layoutName Layout to retrieve
62
68
  * @returns layout
@@ -20,6 +20,12 @@ export interface PlusMinusApi {
20
20
  * @returns plus minus rule
21
21
  */
22
22
  getPlusMinusById(id: PlusMinusNudge['Uuid'], config?: LayoutExtendedConfig): PlusMinusNudge;
23
+ /**
24
+ * Retrieves a Plus Minus Nudge by its Name
25
+ * @param name Name of the Plus Minus Nudge
26
+ * @returns Plus Minus Nudge or undefined if not found
27
+ */
28
+ getPlusMinusNudgeByName(name: string): PlusMinusNudge | undefined;
23
29
  /**
24
30
  * Retrieves all active (not-suspended) Plus Minus Rules in Adaptable State with those with expressions first
25
31
  * @returns plus minus rules
@@ -23,6 +23,12 @@ export interface ScheduleApi {
23
23
  * @returns schedule
24
24
  */
25
25
  getScheduleById(id: BaseSchedule['Uuid'], config?: LayoutExtendedConfig): BaseSchedule;
26
+ /**
27
+ * Retrieves a Schedule by its Name
28
+ * @param name Name of the Schedule
29
+ * @returns Schedule or undefined if not found
30
+ */
31
+ getScheduleByName(name: string): BaseSchedule | undefined;
26
32
  /**
27
33
  * Retrieves all Reminder-based Schedules from Schedule State
28
34
  * @returns reminder schedules
@@ -19,6 +19,12 @@ export interface ShortcutApi {
19
19
  * @returns shortcut
20
20
  */
21
21
  getShortcutById(id: Shortcut['Uuid'], config?: LayoutExtendedConfig): Shortcut;
22
+ /**
23
+ * Retrieves a Shortcut by its Name
24
+ * @param name Name of the Shortcut
25
+ * @returns Shortcut or undefined if not found
26
+ */
27
+ getShortcutByName(name: string): Shortcut | undefined;
22
28
  /**
23
29
  * Gets all active (not-suspended) Shortcuts in Adaptable State
24
30
  * @returns shortcuts
@@ -3,6 +3,7 @@ import { AdaptableObject, AdaptableObjectTag } from '../AdaptableState/Common/Ad
3
3
  import { AdaptableModule, CustomIcon } from '../types';
4
4
  import { CustomWindowConfig } from '../AdaptableState/Common/CustomWindowConfig';
5
5
  import { ProgressIndicatorConfig } from '../AdaptableState/Common/ProgressIndicatorConfig';
6
+ import { UserInterfaceState } from '../AdaptableState/UserInterfaceState';
6
7
  /**
7
8
  * Functions relating to User Interface section of Adaptable State
8
9
  */
@@ -78,4 +79,20 @@ export interface UserInterfaceApi {
78
79
  * @param windowId window popup id
79
80
  */
80
81
  closeCustomWindowPopup(windowId: string): void;
82
+ /**
83
+ * Retrieves the current User Interface State
84
+ */
85
+ getUserInterfaceState(): UserInterfaceState;
86
+ /**
87
+ * Returns whether the AdapTable UI is currently visible
88
+ */
89
+ isAdaptableUIVisible(): boolean;
90
+ /**
91
+ * Hides all AdapTable UI elements (Dashboard, Tool Panel, Status Bar, Column and Context Menus etc.)
92
+ */
93
+ hideAdaptableUI(): void;
94
+ /**
95
+ * Shows all AdapTable UI elements (Dashboard, Tool Panel, Status Bar, Column and Context Menus etc.)
96
+ */
97
+ showAdaptableUI(): void;
81
98
  }
@@ -1,5 +1,9 @@
1
1
  import { FormatColumnState, FormatColumn } from '../../AdaptableState/FormatColumnState';
2
2
  import * as Redux from 'redux';
3
+ /**
4
+ * @ReduxAction Many Format Columns have been added
5
+ */
6
+ export declare const FORMAT_COLUMN_ADD_BATCH = "FORMAT_COLUMN_ADD_BATCH";
3
7
  /**
4
8
  * @ReduxAction A Format Column has been added
5
9
  */
@@ -44,6 +48,9 @@ export declare const FORMAT_COLUMN_UNSUSPEND = "FORMAT_COLUMN_UNSUSPEND";
44
48
  * @ReduxAction FormatColumn Module is unsuspended, or activated
45
49
  */
46
50
  export declare const FORMAT_COLUMN_UNSUSPEND_ALL = "FORMAT_COLUMN_UNSUSPEND_ALL";
51
+ export interface FormatColumnAddBatchAction extends Redux.Action {
52
+ formatColumns: FormatColumn[];
53
+ }
47
54
  export interface FormatColumnAction extends Redux.Action {
48
55
  formatColumn: FormatColumn;
49
56
  }
@@ -70,6 +77,7 @@ export interface FormatColumnUnSuspendAllAction extends Redux.Action {
70
77
  export interface FormatColumnReadyAction extends Redux.Action {
71
78
  formatColumnState: FormatColumnState;
72
79
  }
80
+ export declare const FormatColumnsAdd: (formatColumns: FormatColumn[]) => FormatColumnAddBatchAction;
73
81
  export declare const FormatColumnAdd: (formatColumn: FormatColumn) => FormatColumnAddAction;
74
82
  export declare const FormatColumnEdit: (formatColumn: FormatColumn) => FormatColumnEditAction;
75
83
  export declare const FormatColumnDelete: (formatColumn: FormatColumn) => FormatColumnDeleteAction;
@@ -1,6 +1,10 @@
1
1
  import { EMPTY_ARRAY } from '../../Utilities/Constants/GeneralConstants';
2
2
  import AdaptableHelper from '../../Utilities/Helpers/AdaptableHelper';
3
3
  import { changeIsSuspendInList, suspendAllInList, unsuspendAllInList } from './utils';
4
+ /**
5
+ * @ReduxAction Many Format Columns have been added
6
+ */
7
+ export const FORMAT_COLUMN_ADD_BATCH = 'FORMAT_COLUMN_ADD_BATCH';
4
8
  /**
5
9
  * @ReduxAction A Format Column has been added
6
10
  */
@@ -45,6 +49,10 @@ export const FORMAT_COLUMN_UNSUSPEND = 'FORMAT_COLUMN_UNSUSPEND';
45
49
  * @ReduxAction FormatColumn Module is unsuspended, or activated
46
50
  */
47
51
  export const FORMAT_COLUMN_UNSUSPEND_ALL = 'FORMAT_COLUMN_UNSUSPEND_ALL';
52
+ export const FormatColumnsAdd = (formatColumns) => ({
53
+ type: FORMAT_COLUMN_ADD_BATCH,
54
+ formatColumns,
55
+ });
48
56
  export const FormatColumnAdd = (formatColumn) => ({
49
57
  type: FORMAT_COLUMN_ADD,
50
58
  formatColumn,
@@ -92,6 +100,13 @@ const initialState = {
92
100
  export const FormatColumnReducer = (state = initialState, action) => {
93
101
  let formatColumns;
94
102
  switch (action.type) {
103
+ case FORMAT_COLUMN_ADD_BATCH: {
104
+ const actionFormatColumns = action.formatColumns;
105
+ actionFormatColumns.forEach(AdaptableHelper.addAdaptableObjectPrimitives);
106
+ formatColumns = [].concat(state.FormatColumns);
107
+ formatColumns.push(...actionFormatColumns);
108
+ return { ...state, FormatColumns: formatColumns };
109
+ }
95
110
  case FORMAT_COLUMN_ADD: {
96
111
  const actionFormatColumn = action.formatColumn;
97
112
  AdaptableHelper.addAdaptableObjectPrimitives(actionFormatColumn);
@@ -0,0 +1,11 @@
1
+ import * as Redux from 'redux';
2
+ import { UserInterfaceState } from '../../AdaptableState/UserInterfaceState';
3
+ /**
4
+ * @ReduxAction Sets whether all AdapTable UI elements are hidden
5
+ */
6
+ export declare const USER_INTERFACE_SET_HIDE_ADAPTABLE_UI = "USER_INTERFACE_SET_HIDE_ADAPTABLE_UI";
7
+ export interface UserInterfaceSetHideAdaptableUIAction extends Redux.Action {
8
+ hideAdaptableUI: boolean;
9
+ }
10
+ export declare const UserInterfaceSetHideAdaptableUI: (hideAdaptableUI: boolean) => UserInterfaceSetHideAdaptableUIAction;
11
+ export declare const UserInterfaceReducer: Redux.Reducer<UserInterfaceState>;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @ReduxAction Sets whether all AdapTable UI elements are hidden
3
+ */
4
+ export const USER_INTERFACE_SET_HIDE_ADAPTABLE_UI = 'USER_INTERFACE_SET_HIDE_ADAPTABLE_UI';
5
+ export const UserInterfaceSetHideAdaptableUI = (hideAdaptableUI) => ({
6
+ type: USER_INTERFACE_SET_HIDE_ADAPTABLE_UI,
7
+ hideAdaptableUI,
8
+ });
9
+ const initialState = {
10
+ HideAdaptableUI: false,
11
+ };
12
+ export const UserInterfaceReducer = (state = initialState, action) => {
13
+ switch (action.type) {
14
+ case USER_INTERFACE_SET_HIDE_ADAPTABLE_UI:
15
+ return Object.assign({}, state, {
16
+ HideAdaptableUI: action.hideAdaptableUI,
17
+ });
18
+ default:
19
+ return state;
20
+ }
21
+ };
@@ -38,6 +38,7 @@ import * as InternalRedux from '../ActionsReducers/InternalRedux';
38
38
  import * as TeamSharingRedux from '../ActionsReducers/TeamSharingRedux';
39
39
  import * as ThemeRedux from '../ActionsReducers/ThemeRedux';
40
40
  import * as ToolPanelRedux from '../ActionsReducers/ToolPanelRedux';
41
+ import * as UserInterfaceRedux from '../ActionsReducers/UserInterfaceRedux';
41
42
  import { areAdaptableProfileTracksEnabled, getMarker } from '../../devTools';
42
43
  import { isAdaptableSharedEntity, isCustomSharedEntity, } from '../../AdaptableState/TeamSharingState';
43
44
  import { buildAdaptableStateFunctionConfig } from './buildAdaptableStateFunctionConfig';
@@ -121,6 +122,7 @@ export class AdaptableStore {
121
122
  TeamSharing: TeamSharingRedux.TeamSharingReducer,
122
123
  Theme: ThemeRedux.ThemeReducer,
123
124
  ToolPanel: ToolPanelRedux.ToolPanelReducer,
125
+ UserInterface: UserInterfaceRedux.UserInterfaceReducer,
124
126
  };
125
127
  // allow plugins to participate in the root reducer
126
128
  adaptable.forPlugins((plugin) => {
@@ -254,7 +256,7 @@ export class AdaptableStore {
254
256
  // END STATE LOAD
255
257
  this.loadStorageInProgress = false;
256
258
  }, (e) => {
257
- adaptable.api.consoleError('Failed to load previous Adaptable State : ', e);
259
+ adaptable.api.consoleError('Failed to load saved Adaptable state.', e);
258
260
  //for now i'm still initializing Adaptable even if loading state has failed....
259
261
  //we may revisit that later
260
262
  this.TheStore.dispatch(InitState());
@@ -263,7 +265,7 @@ export class AdaptableStore {
263
265
  this.TheStore.dispatch(PopupRedux.PopupShowAlert({
264
266
  alertType: 'generic',
265
267
  header: 'Configuration',
266
- message: 'Error loading your configuration:' + e,
268
+ message: 'Failed to load your configuration: ' + e,
267
269
  alertDefinition: ObjectFactory.CreateInternalAlertDefinitionForMessages('Error'),
268
270
  }));
269
271
  }));
@@ -581,6 +583,7 @@ const adaptableMiddleware = (adaptable) => (function(middlewareAPI) {
581
583
  * Action: We set up all columns again
582
584
  */
583
585
  case QuickSearchRedux.QUICK_SEARCH_SET_CELL_MATCHING_STYLE:
586
+ case FormatColumnRedux.FORMAT_COLUMN_ADD_BATCH:
584
587
  case FormatColumnRedux.FORMAT_COLUMN_ADD:
585
588
  case FormatColumnRedux.FORMAT_COLUMN_EDIT:
586
589
  case FormatColumnRedux.FORMAT_COLUMN_DELETE:
@@ -991,6 +994,31 @@ const adaptableMiddleware = (adaptable) => (function(middlewareAPI) {
991
994
  module.setUpScheduleJobs();
992
995
  return returnAction;
993
996
  }
997
+ /*******************
998
+ * USER INTERFACE ACTIONS
999
+ *******************/
1000
+ case UserInterfaceRedux.USER_INTERFACE_SET_HIDE_ADAPTABLE_UI: {
1001
+ const returnAction = next(action);
1002
+ const { hideAdaptableUI } = action;
1003
+ // Hide or show Dashboard
1004
+ middlewareAPI.dispatch(DashboardRedux.DashboardSetIsHidden(hideAdaptableUI));
1005
+ // Hide or show Adaptable ToolPanel in the AG Grid sidebar
1006
+ if (hideAdaptableUI) {
1007
+ adaptable.hideAdaptableToolPanel();
1008
+ }
1009
+ else {
1010
+ adaptable.showAdaptableToolPanel();
1011
+ }
1012
+ // Hide or show Adaptable StatusBar panels
1013
+ if (hideAdaptableUI) {
1014
+ adaptable.hideAdaptableStatusBar();
1015
+ }
1016
+ else {
1017
+ adaptable.showAdaptableStatusBar();
1018
+ }
1019
+ // Column and Context Menus are handled in the AgGridMenuAdapter
1020
+ return returnAction;
1021
+ }
994
1022
  /*******************
995
1023
  * DASHBOARD ACTIONS
996
1024
  *******************/
@@ -1313,7 +1341,7 @@ const adaptableMiddleware = (adaptable) => (function(middlewareAPI) {
1313
1341
  const alert = {
1314
1342
  alertType: 'generic',
1315
1343
  header: 'Team Sharing',
1316
- message: "Couldn't get shared items: " + error.message,
1344
+ message: 'Failed to retrieve shared items: ' + error.message,
1317
1345
  alertDefinition: ObjectFactory.CreateInternalAlertDefinitionForMessages('Error'),
1318
1346
  };
1319
1347
  adaptable.api.alertApi.displayAdaptableAlertNotification(alert);
@@ -1383,7 +1411,7 @@ const adaptableMiddleware = (adaptable) => (function(middlewareAPI) {
1383
1411
  const alert = {
1384
1412
  alertType: 'generic',
1385
1413
  header: 'Team Sharing',
1386
- message: `Couldn't share ${adaptable.ModuleService.getModuleFriendlyName(Module)}, there is already an existing active share for it: ${existingActiveSharedEntity.Description}`,
1414
+ message: `Cannot share ${adaptable.ModuleService.getModuleFriendlyName(Module)} an active share already exists: ${existingActiveSharedEntity.Description}.`,
1387
1415
  alertDefinition: ObjectFactory.CreateInternalAlertDefinitionForMessages('Error'),
1388
1416
  };
1389
1417
  adaptable.api.alertApi.displayAdaptableAlertNotification(alert);
@@ -1407,7 +1435,7 @@ const adaptableMiddleware = (adaptable) => (function(middlewareAPI) {
1407
1435
  const alert = {
1408
1436
  alertType: 'generic',
1409
1437
  header: 'Team Sharing',
1410
- message: `${adaptable.ModuleService.getModuleFriendlyName(Module)} Shared Successfully`,
1438
+ message: `${adaptable.ModuleService.getModuleFriendlyName(Module)} shared successfully.`,
1411
1439
  alertDefinition: ObjectFactory.CreateInternalAlertDefinitionForMessages('Success'),
1412
1440
  };
1413
1441
  adaptable.api.alertApi.displayAdaptableAlertNotification(alert);
@@ -1418,7 +1446,7 @@ const adaptableMiddleware = (adaptable) => (function(middlewareAPI) {
1418
1446
  const alert = {
1419
1447
  alertType: 'generic',
1420
1448
  header: 'Team Sharing',
1421
- message: "Couldn't share item: " + error.message,
1449
+ message: 'Failed to share item: ' + error.message,
1422
1450
  alertDefinition: ObjectFactory.CreateInternalAlertDefinitionForMessages('Error'),
1423
1451
  };
1424
1452
  adaptable.api.alertApi.displayAdaptableAlertNotification(alert);
@@ -1443,10 +1471,11 @@ const adaptableMiddleware = (adaptable) => (function(middlewareAPI) {
1443
1471
  if (sharedEntityDependants.length) {
1444
1472
  const alert = {
1445
1473
  alertType: 'generic',
1446
- header: `Cannot remove the shared item as it is referenced in:`,
1447
- message: sharedEntityDependants
1448
- .map((sharedEntity) => `${adaptable.ModuleService.getModuleFriendlyName(sharedEntity.Module)} ${sharedEntity.Description}`)
1449
- .join('\n'),
1474
+ header: 'Team Sharing',
1475
+ message: 'Cannot remove this shared item. It is referenced by: ' +
1476
+ sharedEntityDependants
1477
+ .map((sharedEntity) => `${adaptable.ModuleService.getModuleFriendlyName(sharedEntity.Module)} ${sharedEntity.Description}`)
1478
+ .join(', '),
1450
1479
  alertDefinition: ObjectFactory.CreateInternalAlertDefinitionForMessages('Warning'),
1451
1480
  };
1452
1481
  adaptable.api.alertApi.displayAdaptableAlertNotification(alert);
@@ -1463,7 +1492,7 @@ const adaptableMiddleware = (adaptable) => (function(middlewareAPI) {
1463
1492
  const alert = {
1464
1493
  alertType: 'generic',
1465
1494
  header: 'Team Sharing',
1466
- message: "Couldn't remove item: " + error.message,
1495
+ message: 'Failed to remove shared item: ' + error.message,
1467
1496
  alertDefinition: ObjectFactory.CreateInternalAlertDefinitionForMessages('Error'),
1468
1497
  };
1469
1498
  adaptable.api.alertApi.displayAdaptableAlertNotification(alert);
@@ -1485,8 +1514,8 @@ const adaptableMiddleware = (adaptable) => (function(middlewareAPI) {
1485
1514
  !adaptable.api.optionsApi.getTeamSharingOptions().suppressOverrideConfigWarning) {
1486
1515
  let confirmation = {
1487
1516
  CancelButtonText: 'Cancel Import',
1488
- Header: 'Overwriting Existing Object',
1489
- Msg: 'This import will overwrite an existing object in your State. Do you wish to continue?',
1517
+ Header: 'Overwrite Existing Item',
1518
+ Msg: 'This import will overwrite an existing item in your configuration. Do you wish to continue?',
1490
1519
  ConfirmButtonText: 'Import',
1491
1520
  CancelAction: null,
1492
1521
  ConfirmAction: processImportAction,
@@ -1532,7 +1561,7 @@ const adaptableMiddleware = (adaptable) => (function(middlewareAPI) {
1532
1561
  const alert = {
1533
1562
  alertType: 'generic',
1534
1563
  header: 'Team Sharing',
1535
- message: `Item Successfully Imported`,
1564
+ message: 'Item imported successfully.',
1536
1565
  alertDefinition: ObjectFactory.CreateInternalAlertDefinitionForMessages('Success'),
1537
1566
  };
1538
1567
  adaptable.api.alertApi.displayAdaptableAlertNotification(alert);
@@ -1572,7 +1601,7 @@ const adaptableMiddleware = (adaptable) => (function(middlewareAPI) {
1572
1601
  const alert = {
1573
1602
  alertType: 'generic',
1574
1603
  header: 'Team Sharing',
1575
- message: "Couldn't update active item: " + error.message,
1604
+ message: 'Failed to update shared item: ' + error.message,
1576
1605
  alertDefinition: ObjectFactory.CreateInternalAlertDefinitionForMessages('Error'),
1577
1606
  };
1578
1607
  adaptable.api.alertApi.displayAdaptableAlertNotification(alert);
@@ -1593,7 +1622,7 @@ const adaptableMiddleware = (adaptable) => (function(middlewareAPI) {
1593
1622
  const alert = {
1594
1623
  alertType: 'generic',
1595
1624
  header: 'Team Sharing',
1596
- message: "Couldn't check for updates: " + error.message,
1625
+ message: 'Failed to check for updates: ' + error.message,
1597
1626
  alertDefinition: ObjectFactory.CreateInternalAlertDefinitionForMessages('Error'),
1598
1627
  };
1599
1628
  adaptable.api.alertApi.displayAdaptableAlertNotification(alert);
@@ -39,8 +39,8 @@ export class BulkUpdateModule extends AdaptableModuleBase {
39
39
  IsValid: false,
40
40
  Alert: {
41
41
  alertType: 'generic',
42
- header: 'Bulk Update Error',
43
- message: 'Cannot edit while Grid is in Pivot Mode.',
42
+ header: 'Bulk Update',
43
+ message: 'Editing is not available in Pivot Mode.',
44
44
  alertDefinition: ObjectFactory.CreateInternalAlertDefinitionForMessages('Error'),
45
45
  },
46
46
  };
@@ -50,8 +50,8 @@ export class BulkUpdateModule extends AdaptableModuleBase {
50
50
  IsValid: false,
51
51
  Alert: {
52
52
  alertType: 'generic',
53
- header: 'Bulk Update Error',
54
- message: 'No cells are selected.\nPlease select some cells.',
53
+ header: 'Bulk Update',
54
+ message: 'No cells selected. Please select one or more cells to continue.',
55
55
  alertDefinition: ObjectFactory.CreateInternalAlertDefinitionForMessages('Error'),
56
56
  },
57
57
  };
@@ -61,8 +61,8 @@ export class BulkUpdateModule extends AdaptableModuleBase {
61
61
  IsValid: false,
62
62
  Alert: {
63
63
  alertType: 'generic',
64
- header: 'Bulk Update Error',
65
- message: 'Bulk Update only supports single column edit.\nPlease adjust cell selection.',
64
+ header: 'Bulk Update',
65
+ message: 'Bulk Update supports editing a single column at a time. Please adjust your selection.',
66
66
  alertDefinition: ObjectFactory.CreateInternalAlertDefinitionForMessages('Error'),
67
67
  },
68
68
  };
@@ -74,8 +74,8 @@ export class BulkUpdateModule extends AdaptableModuleBase {
74
74
  IsValid: false,
75
75
  Alert: {
76
76
  alertType: 'generic',
77
- header: 'Bulk Update Error',
78
- message: 'Bulk Update is not permitted on readonly cells.\nPlease adjust the cell selection.',
77
+ header: 'Bulk Update',
78
+ message: 'Bulk Update is not available for read-only cells. Please adjust your selection.',
79
79
  alertDefinition: ObjectFactory.CreateInternalAlertDefinitionForMessages('Error'),
80
80
  },
81
81
  };
@@ -186,7 +186,7 @@ export class PlusMinusModule extends AdaptableModuleBase {
186
186
  failedMessages.push(failedMessage);
187
187
  }
188
188
  });
189
- this.api.alertApi.showAlertError('Nudge(s) failed rule', failedMessages.toString());
189
+ this.api.alertApi.showAlertError('Plus/Minus', 'One or more nudge values were rejected by validation rules: ' + failedMessages.toString());
190
190
  }
191
191
  }
192
192
  getTeamSharingAction() {
@@ -24,7 +24,7 @@ export class QuickSearchModule extends AdaptableModuleBase {
24
24
  // Check for AG Grid QuickFilterModule if running Filter After Quick Search
25
25
  if (api.optionsApi.getQuickSearchOptions().filterGridAfterQuickSearch) {
26
26
  if (!api.internalApi.getAgGridModulesAdapter().isAgGridModuleRegistered('QuickFilterModule')) {
27
- api.consoleError('The AG Grid "GridFilter" Module is required if running Quick Search as Filter; Quick Search will run but no Filters will be applied');
27
+ api.consoleError('Quick Search with filterGridAfterQuickSearch requires the AG Grid "QuickFilterModule". Quick Search will run but grid filters will not be applied.');
28
28
  }
29
29
  }
30
30
  const isServerSideRowModel = agGridApi.getGridOption('rowModelType') === 'serverSide';
@@ -7,15 +7,19 @@ export class SettingsPanelModule extends AdaptableModuleBase {
7
7
  super(ModuleConstants.SettingsPanelModuleId, friendlyName, 'settings', null, 'Manage all Adaptable Settings', api);
8
8
  }
9
9
  createColumnMenuItems(column) {
10
- return [
11
- // To do : get the icon and name from settings in case they have changed?
12
- this.createMenuItemReduxAction('settings-panel-open', 'Open ' + this.moduleInfo.FriendlyName, this.moduleInfo.Glyph, PopupRedux.PopupShowScreen()),
13
- ];
10
+ if (this.isModuleVisible()) {
11
+ return [
12
+ // To do : get the icon and name from settings in case they have changed?
13
+ this.createMenuItemReduxAction('settings-panel-open', 'Open ' + this.moduleInfo.FriendlyName, this.moduleInfo.Glyph, PopupRedux.PopupShowScreen()),
14
+ ];
15
+ }
14
16
  }
15
17
  createContextMenuItems(menuContext) {
16
- return [
17
- this.createMenuItemReduxAction('settings-panel-open', 'Open ' + this.moduleInfo.FriendlyName, this.moduleInfo.Glyph, PopupRedux.PopupShowScreen()),
18
- ];
18
+ if (this.isModuleVisible()) {
19
+ return [
20
+ this.createMenuItemReduxAction('settings-panel-open', 'Open ' + this.moduleInfo.FriendlyName, this.moduleInfo.Glyph, PopupRedux.PopupShowScreen()),
21
+ ];
22
+ }
19
23
  }
20
24
  createModuleMenuItem(source) {
21
25
  if (this.isModuleVisible()) {