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

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 (99) hide show
  1. package/index.css +0 -3
  2. package/index.css.map +1 -1
  3. package/package.json +1 -1
  4. package/src/AdaptableState/AlertState.d.ts +1 -2
  5. package/src/AdaptableState/Common/AdaptableObject.d.ts +4 -0
  6. package/src/AdaptableState/Common/BaseContext.d.ts +2 -0
  7. package/src/AdaptableState/Common/NamedObject.d.ts +10 -0
  8. package/src/AdaptableState/Common/NamedObject.js +1 -0
  9. package/src/AdaptableState/Common/RowSummary.d.ts +1 -1
  10. package/src/AdaptableState/Common/Schedule.d.ts +2 -2
  11. package/src/AdaptableState/Common/SuspendableObject.d.ts +10 -0
  12. package/src/AdaptableState/Common/SuspendableObject.js +1 -0
  13. package/src/AdaptableState/CustomSortState.d.ts +1 -1
  14. package/src/AdaptableState/FormatColumnState.d.ts +1 -1
  15. package/src/AdaptableState/LayoutState.d.ts +1 -1
  16. package/src/AdaptableState/PlusMinusState.d.ts +1 -1
  17. package/src/AdaptableState/ShortcutState.d.ts +1 -1
  18. package/src/AdaptableState/StyledColumnState.d.ts +1 -1
  19. package/src/Api/AlertApi.d.ts +6 -0
  20. package/src/Api/CustomSortApi.d.ts +6 -0
  21. package/src/Api/FlashingCellApi.d.ts +6 -0
  22. package/src/Api/FormatColumnApi.d.ts +10 -4
  23. package/src/Api/Implementation/AlertApiImpl.d.ts +1 -0
  24. package/src/Api/Implementation/AlertApiImpl.js +3 -0
  25. package/src/Api/Implementation/ChartingApiImpl.js +2 -2
  26. package/src/Api/Implementation/CustomSortApiImpl.d.ts +1 -0
  27. package/src/Api/Implementation/CustomSortApiImpl.js +3 -0
  28. package/src/Api/Implementation/FlashingCellApiImpl.d.ts +1 -0
  29. package/src/Api/Implementation/FlashingCellApiImpl.js +3 -0
  30. package/src/Api/Implementation/FormatColumnApiImpl.d.ts +6 -5
  31. package/src/Api/Implementation/FormatColumnApiImpl.js +6 -5
  32. package/src/Api/Implementation/LayoutApiImpl.js +1 -1
  33. package/src/Api/Implementation/NamedQueryApiImpl.js +2 -2
  34. package/src/Api/Implementation/PlusMinusApiImpl.d.ts +1 -0
  35. package/src/Api/Implementation/PlusMinusApiImpl.js +3 -0
  36. package/src/Api/Implementation/ScheduleApiImpl.d.ts +1 -0
  37. package/src/Api/Implementation/ScheduleApiImpl.js +3 -0
  38. package/src/Api/Implementation/ShortcutApiImpl.d.ts +1 -0
  39. package/src/Api/Implementation/ShortcutApiImpl.js +3 -0
  40. package/src/Api/Implementation/SystemStatusApiImpl.js +4 -4
  41. package/src/Api/Internal/CalculatedColumnInternalApi.js +2 -2
  42. package/src/Api/Internal/FreeTextColumnInternalApi.js +2 -2
  43. package/src/Api/Internal/LayoutInternalApi.js +1 -1
  44. package/src/Api/Internal/NamedQueryInternalApi.js +4 -4
  45. package/src/Api/PlusMinusApi.d.ts +6 -0
  46. package/src/Api/ScheduleApi.d.ts +6 -0
  47. package/src/Api/ShortcutApi.d.ts +6 -0
  48. package/src/Redux/ActionsReducers/FormatColumnRedux.d.ts +8 -0
  49. package/src/Redux/ActionsReducers/FormatColumnRedux.js +15 -0
  50. package/src/Redux/Store/AdaptableStore.js +18 -16
  51. package/src/Strategy/BulkUpdateModule.js +8 -8
  52. package/src/Strategy/PlusMinusModule.js +1 -1
  53. package/src/Strategy/QuickSearchModule.js +1 -1
  54. package/src/Strategy/SettingsPanelModule.js +11 -7
  55. package/src/Strategy/SmartEditModule.js +10 -10
  56. package/src/Utilities/Services/DataService.js +1 -1
  57. package/src/Utilities/Services/Fdc3Service.js +4 -4
  58. package/src/Utilities/Services/ModuleService.js +1 -3
  59. package/src/Utilities/Services/ThemeService.js +2 -6
  60. package/src/Utilities/Services/ValidationService.js +1 -1
  61. package/src/Utilities/logDeprecation.js +3 -4
  62. package/src/View/Alert/Wizard/isValidAlertRules.js +1 -1
  63. package/src/View/CalculatedColumn/Wizard/CalculatedColumnDefinitionWizardSection.js +2 -2
  64. package/src/View/CalculatedColumn/Wizard/CalculatedColumnExpressionWizardSection.js +2 -2
  65. package/src/View/CalculatedColumn/Wizard/CalculatedColumnSettingsWizardSection.js +1 -1
  66. package/src/View/Charting/ChartingWizard/AgChargingWizard/SettingsSection.js +2 -2
  67. package/src/View/Charting/ChartingWizard/ExternalChartingWizard/SettingsSection.js +2 -2
  68. package/src/View/Components/CellPopup/index.js +1 -1
  69. package/src/View/Components/EntityRulesEditor/Utilities.js +5 -5
  70. package/src/View/Components/NewScopeComponent.js +3 -3
  71. package/src/View/Components/Popups/AdaptablePopupConfirmation.js +1 -1
  72. package/src/View/CustomSort/Wizard/CustomSortColumnWizardSection.js +3 -3
  73. package/src/View/CustomSort/Wizard/CustomSortValuesWizardSection.js +1 -1
  74. package/src/View/FlashingCell/Wizard/isValidFlashingCellRules.js +1 -1
  75. package/src/View/FreeTextColumn/Wizard/FreeTextColumnSettingsWizardSection.d.ts +1 -1
  76. package/src/View/FreeTextColumn/Wizard/FreeTextColumnSettingsWizardSection.js +3 -3
  77. package/src/View/Layout/LayoutViewPanel.js +1 -1
  78. package/src/View/Layout/Wizard/sections/AggregationsSection.js +1 -1
  79. package/src/View/Layout/Wizard/sections/FilterSection.js +1 -1
  80. package/src/View/Layout/Wizard/sections/GridFilterSection.js +1 -1
  81. package/src/View/Layout/Wizard/sections/PivotAggregationsSection.js +3 -3
  82. package/src/View/Layout/Wizard/sections/RowSummarySection.js +1 -1
  83. package/src/View/NamedQuery/Wizard/NamedQueryExpressionWizardSection.js +2 -2
  84. package/src/View/PlusMinus/Wizard/PlusMinusSettingsWizardSection.js +5 -5
  85. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/isSettingsValid.d.ts +1 -1
  86. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/isSettingsValid.js +11 -11
  87. package/src/View/StateManagement/handleExportState.js +1 -1
  88. package/src/View/StyledColumn/Wizard/StyledColumnWizardColumnSection.js +1 -1
  89. package/src/agGrid/AdaptableAgGrid.js +38 -51
  90. package/src/agGrid/AgGridAdapter.js +8 -8
  91. package/src/agGrid/AgGridColumnAdapter.js +1 -1
  92. package/src/agGrid/AgGridExportAdapter.js +5 -5
  93. package/src/agGrid/AgGridThemeAdapter.js +2 -2
  94. package/src/components/OverlayTrigger/index.js +1 -1
  95. package/src/env.js +2 -2
  96. package/src/migration/AdaptableUpgradeHelper.js +2 -2
  97. package/src/migration/VersionUpgrade17.js +4 -4
  98. package/src/migration/VersionUpgrade20.js +4 -4
  99. package/tsconfig.esm.tsbuildinfo +1 -1
@@ -122,8 +122,8 @@ export class ChartingApiImpl extends ApiBase {
122
122
  else {
123
123
  const alert = {
124
124
  alertType: 'generic',
125
- header: 'Save chart',
126
- message: 'Do you want to save this Chart?',
125
+ header: 'Save Chart',
126
+ message: 'Would you like to save this chart?',
127
127
  alertDefinition: {
128
128
  ...ObjectFactory.CreateEmptyAlertDefinition(),
129
129
  MessageType: 'Info',
@@ -11,6 +11,7 @@ export declare class CustomSortApiImpl extends ApiBase implements CustomSortApi
11
11
  getCustomSortState(): CustomSortState;
12
12
  getCustomSorts(config?: LayoutExtendedConfig): CustomSort[];
13
13
  getCustomSortById(id: CustomSort['Uuid'], config?: LayoutExtendedConfig): CustomSort;
14
+ getCustomSortByName(name: string): CustomSort | undefined;
14
15
  getLiveCustomSorts(): CustomSort[];
15
16
  getLiveCustomSortComparers(): ColumnValuesComparer[];
16
17
  getActiveCustomSorts(config?: LayoutExtendedConfig): CustomSort[];
@@ -17,6 +17,9 @@ export class CustomSortApiImpl extends ApiBase {
17
17
  getCustomSortById(id, config) {
18
18
  return this.getCustomSorts(config).find((customSort) => customSort.Uuid === id);
19
19
  }
20
+ getCustomSortByName(name) {
21
+ return this.getCustomSorts().find((customSort) => customSort.Name === name);
22
+ }
20
23
  getLiveCustomSorts() {
21
24
  let returnVals = [];
22
25
  const sortedColIds = this.getGridApi()
@@ -13,6 +13,7 @@ export declare class FlashingCellApiImpl extends ApiBase implements FlashingCell
13
13
  getFlashingCellState(): FlashingCellState;
14
14
  getFlashingCellDefinitions(config?: LayoutExtendedConfig): FlashingCellDefinition[];
15
15
  getFlashingCellDefinitionById(id: FlashingCellDefinition['Uuid'], config?: LayoutExtendedConfig): FlashingCellDefinition;
16
+ getFlashingCellDefinitionByName(name: string): FlashingCellDefinition | undefined;
16
17
  getActiveFlashingCellDefinitions(config?: LayoutExtendedConfig): FlashingCellDefinition[];
17
18
  getSuspendedFlashingCellDefinitions(config?: LayoutExtendedConfig): FlashingCellDefinition[];
18
19
  getFlashingCellFlashTarget(flashingCellDefinition: FlashingCellDefinition): FlashingCellDefinition['FlashTarget'];
@@ -19,6 +19,9 @@ export class FlashingCellApiImpl extends ApiBase {
19
19
  getFlashingCellDefinitionById(id, config) {
20
20
  return this.getFlashingCellDefinitions(config)?.find((fc) => fc?.Uuid === id);
21
21
  }
22
+ getFlashingCellDefinitionByName(name) {
23
+ return this.getFlashingCellDefinitions().find((fc) => fc.Name === name);
24
+ }
22
25
  getActiveFlashingCellDefinitions(config) {
23
26
  return this.getFlashingCellDefinitions(config).filter((fc) => !fc.IsSuspended);
24
27
  }
@@ -1,18 +1,19 @@
1
+ import { AdaptableObjectLookupCriteria, FormatColumnConfig } from '../../../types';
2
+ import { IAdaptable } from '../../AdaptableInterfaces/IAdaptable';
3
+ import { AdaptableColumn } from '../../AdaptableState/Common/AdaptableColumn';
1
4
  import { AdaptableStyle } from '../../AdaptableState/Common/AdaptableStyle';
2
- import { ApiBase } from './ApiBase';
3
- import { FormatColumnApi } from '../FormatColumnApi';
4
5
  import { FormatColumn, FormatColumnState } from '../../AdaptableState/FormatColumnState';
5
- import { AdaptableColumn } from '../../AdaptableState/Common/AdaptableColumn';
6
6
  import { AdaptableFormat } from '../../types';
7
- import { AdaptableObjectLookupCriteria, FormatColumnConfig } from '../../../types';
7
+ import { FormatColumnApi } from '../FormatColumnApi';
8
8
  import { FormatColumnInternalApi } from '../Internal/FormatColumnInternalApi';
9
- import { IAdaptable } from '../../AdaptableInterfaces/IAdaptable';
9
+ import { ApiBase } from './ApiBase';
10
10
  export declare class FormatColumnApiImpl extends ApiBase implements FormatColumnApi {
11
11
  internalApi: FormatColumnInternalApi;
12
12
  constructor(_adaptable: IAdaptable);
13
13
  getFormatColumnState(): FormatColumnState;
14
14
  getFormatColumns(config?: FormatColumnConfig): FormatColumn[];
15
15
  getFormatColumnByUuId(id: FormatColumn['Uuid'], config?: FormatColumnConfig): FormatColumn;
16
+ getFormatColumnByName(name: string): FormatColumn | undefined;
16
17
  getActiveFormatColumns(config?: FormatColumnConfig): FormatColumn[];
17
18
  getDisplayFormatForColumn(column: AdaptableColumn, config?: FormatColumnConfig): AdaptableFormat | undefined;
18
19
  getSuspendedFormatColumns(config?: FormatColumnConfig): FormatColumn[];
@@ -1,8 +1,8 @@
1
1
  import * as FormatColumnRedux from '../../Redux/ActionsReducers/FormatColumnRedux';
2
- import { ApiBase } from './ApiBase';
3
2
  import * as ModuleConstants from '../../Utilities/Constants/ModuleConstants';
4
- import { FormatColumnInternalApi } from '../Internal/FormatColumnInternalApi';
5
3
  import ArrayExtensions from '../../Utilities/Extensions/ArrayExtensions';
4
+ import { FormatColumnInternalApi } from '../Internal/FormatColumnInternalApi';
5
+ import { ApiBase } from './ApiBase';
6
6
  export class FormatColumnApiImpl extends ApiBase {
7
7
  internalApi;
8
8
  constructor(_adaptable) {
@@ -18,6 +18,9 @@ export class FormatColumnApiImpl extends ApiBase {
18
18
  getFormatColumnByUuId(id, config) {
19
19
  return this.getFormatColumns(config).find((formatColumn) => formatColumn.Uuid === id);
20
20
  }
21
+ getFormatColumnByName(name) {
22
+ return this.getFormatColumns().find((formatColumn) => formatColumn.Name === name);
23
+ }
21
24
  getActiveFormatColumns(config) {
22
25
  return this.getFormatColumns(config).filter((formatColumn) => !formatColumn.IsSuspended);
23
26
  }
@@ -38,9 +41,7 @@ export class FormatColumnApiImpl extends ApiBase {
38
41
  return this.getFormatColumnByUuId(formatColumn.Uuid);
39
42
  }
40
43
  addFormatColumns(formatColumns) {
41
- formatColumns.forEach((fc) => {
42
- this.addFormatColumn(fc);
43
- });
44
+ this.dispatchAction(FormatColumnRedux.FormatColumnsAdd(formatColumns));
44
45
  return formatColumns?.map((formatColumn) => this.getFormatColumnByUuId(formatColumn.Uuid));
45
46
  }
46
47
  editFormatColumn(formatColumn) {
@@ -403,7 +403,7 @@ export class LayoutApiImpl extends ApiBase {
403
403
  const currentLayout = this.getCurrentLayout();
404
404
  const customHeader = currentLayout.ColumnHeaders?.[column.columnId] ?? column.friendlyName;
405
405
  this.dispatchAction(PopupShowPrompt({
406
- Header: `Change caption for '${column.friendlyName}'`,
406
+ Header: `Change Caption for "${column.friendlyName}"`,
407
407
  Msg: '',
408
408
  DefaultValue: customHeader,
409
409
  ConfirmActionCreator: (inputText) => {
@@ -26,14 +26,14 @@ export class NamedQueryApiImpl extends ApiBase {
26
26
  }
27
27
  isValidNamedQuery(namedQuery) {
28
28
  if (IsNullOrEmptyOrWhiteSpace(namedQuery?.Name)) {
29
- return { valid: false, message: 'Named Query name cannot be blank' };
29
+ return { valid: false, message: 'A name is required for the Named Query.' };
30
30
  }
31
31
  // check that there is no other existing named query with the same name
32
32
  const duplicate = this.getNamedQueries().find((q) => q.Name === namedQuery.Name && q.Uuid !== namedQuery.Uuid);
33
33
  if (duplicate) {
34
34
  return {
35
35
  valid: false,
36
- message: 'A Named Query already exists with that name',
36
+ message: 'A Named Query with this name already exists.',
37
37
  };
38
38
  }
39
39
  return { valid: true, message: '' };
@@ -7,6 +7,7 @@ export declare class PlusMinusApiImpl extends ApiBase implements PlusMinusApi {
7
7
  getPlusMinusState(): PlusMinusState;
8
8
  getAllPlusMinus(config?: LayoutExtendedConfig): PlusMinusNudge[];
9
9
  getPlusMinusById(id: PlusMinusNudge['Uuid'], config?: LayoutExtendedConfig): PlusMinusNudge;
10
+ getPlusMinusNudgeByName(name: string): PlusMinusNudge | undefined;
10
11
  getAllActivePlusMinus(config?: LayoutExtendedConfig): PlusMinusNudge[];
11
12
  getAllSuspendedPlusMinus(config?: LayoutExtendedConfig): PlusMinusNudge[];
12
13
  runPlusMinusNudge(plusMinusNudge: PlusMinusNudge, cellsToUpdate: GridCell[], direction: 'up' | 'down'): void;
@@ -12,6 +12,9 @@ export class PlusMinusApiImpl extends ApiBase {
12
12
  getPlusMinusById(id, config) {
13
13
  return this.getAllPlusMinus(config).find((plusMinus) => plusMinus?.Uuid === id);
14
14
  }
15
+ getPlusMinusNudgeByName(name) {
16
+ return this.getAllPlusMinus().find((plusMinus) => plusMinus.Name === name);
17
+ }
15
18
  getAllActivePlusMinus(config) {
16
19
  return this.getAllPlusMinus(config).filter((plusMinusNudge) => !plusMinusNudge.IsSuspended);
17
20
  }
@@ -11,6 +11,7 @@ export declare class ScheduleApiImpl extends ApiBase implements ScheduleApi {
11
11
  constructor(_adaptable: IAdaptable);
12
12
  getScheduleState(): ScheduleState;
13
13
  getSchedules(config?: LayoutExtendedConfig): BaseSchedule[];
14
+ getScheduleByName(name: string): BaseSchedule | undefined;
14
15
  getReminderSchedules(config?: LayoutExtendedConfig): ReminderSchedule[];
15
16
  getScheduleById(id: BaseSchedule['Uuid'], config?: LayoutExtendedConfig): BaseSchedule;
16
17
  getActiveReminderSchedules(config?: LayoutExtendedConfig): ReminderSchedule[];
@@ -16,6 +16,9 @@ export class ScheduleApiImpl extends ApiBase {
16
16
  allSchedules.push(...this.getOpenFinSchedules(config));
17
17
  return allSchedules;
18
18
  }
19
+ getScheduleByName(name) {
20
+ return this.getSchedules().find((schedule) => schedule.Name === name);
21
+ }
19
22
  getReminderSchedules(config) {
20
23
  return (this.handleLayoutExtensionObjects(this.getScheduleState().Reminders, 'Schedule', config) ?? []);
21
24
  }
@@ -6,6 +6,7 @@ export declare class ShortcutApiImpl extends ApiBase implements ShortcutApi {
6
6
  getShortcutState(): ShortcutState;
7
7
  getShortcuts(config?: LayoutExtendedConfig): Shortcut[];
8
8
  getShortcutById(id: Shortcut['Uuid'], config?: LayoutExtendedConfig): Shortcut;
9
+ getShortcutByName(name: string): Shortcut | undefined;
9
10
  getActiveShortcuts(config?: LayoutExtendedConfig): Shortcut[];
10
11
  getSuspendedShortcuts(config?: LayoutExtendedConfig): Shortcut[];
11
12
  addShortcut(shortcut: Shortcut): Shortcut;
@@ -11,6 +11,9 @@ export class ShortcutApiImpl extends ApiBase {
11
11
  getShortcutById(id, config) {
12
12
  return this.getShortcuts(config).find((shortcut) => shortcut?.Uuid === id);
13
13
  }
14
+ getShortcutByName(name) {
15
+ return this.getShortcuts().find((shortcut) => shortcut.Name === name);
16
+ }
14
17
  getActiveShortcuts(config) {
15
18
  return this.getShortcuts(config).filter((shortcut) => !shortcut.IsSuspended);
16
19
  }
@@ -27,16 +27,16 @@ export class SystemStatusApiImpl extends ApiBase {
27
27
  }
28
28
  switch (messageType) {
29
29
  case 'Success':
30
- alertApi.showAlertSuccess('System Status Success', fullMessage);
30
+ alertApi.showAlertSuccess('System Status', fullMessage);
31
31
  return;
32
32
  case 'Info':
33
- alertApi.showAlertInfo('System Status Info', fullMessage);
33
+ alertApi.showAlertInfo('System Status', fullMessage);
34
34
  return;
35
35
  case 'Warning':
36
- alertApi.showAlertWarning('System Status Warning', fullMessage);
36
+ alertApi.showAlertWarning('System Status', fullMessage);
37
37
  return;
38
38
  case 'Error':
39
- alertApi.showAlertError('System Status Error', fullMessage);
39
+ alertApi.showAlertError('System Status', fullMessage);
40
40
  return;
41
41
  }
42
42
  }
@@ -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);
@@ -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
@@ -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);
@@ -254,7 +254,7 @@ export class AdaptableStore {
254
254
  // END STATE LOAD
255
255
  this.loadStorageInProgress = false;
256
256
  }, (e) => {
257
- adaptable.api.consoleError('Failed to load previous Adaptable State : ', e);
257
+ adaptable.api.consoleError('Failed to load saved Adaptable state.', e);
258
258
  //for now i'm still initializing Adaptable even if loading state has failed....
259
259
  //we may revisit that later
260
260
  this.TheStore.dispatch(InitState());
@@ -263,7 +263,7 @@ export class AdaptableStore {
263
263
  this.TheStore.dispatch(PopupRedux.PopupShowAlert({
264
264
  alertType: 'generic',
265
265
  header: 'Configuration',
266
- message: 'Error loading your configuration:' + e,
266
+ message: 'Failed to load your configuration: ' + e,
267
267
  alertDefinition: ObjectFactory.CreateInternalAlertDefinitionForMessages('Error'),
268
268
  }));
269
269
  }));
@@ -581,6 +581,7 @@ const adaptableMiddleware = (adaptable) => (function(middlewareAPI) {
581
581
  * Action: We set up all columns again
582
582
  */
583
583
  case QuickSearchRedux.QUICK_SEARCH_SET_CELL_MATCHING_STYLE:
584
+ case FormatColumnRedux.FORMAT_COLUMN_ADD_BATCH:
584
585
  case FormatColumnRedux.FORMAT_COLUMN_ADD:
585
586
  case FormatColumnRedux.FORMAT_COLUMN_EDIT:
586
587
  case FormatColumnRedux.FORMAT_COLUMN_DELETE:
@@ -1313,7 +1314,7 @@ const adaptableMiddleware = (adaptable) => (function(middlewareAPI) {
1313
1314
  const alert = {
1314
1315
  alertType: 'generic',
1315
1316
  header: 'Team Sharing',
1316
- message: "Couldn't get shared items: " + error.message,
1317
+ message: 'Failed to retrieve shared items: ' + error.message,
1317
1318
  alertDefinition: ObjectFactory.CreateInternalAlertDefinitionForMessages('Error'),
1318
1319
  };
1319
1320
  adaptable.api.alertApi.displayAdaptableAlertNotification(alert);
@@ -1383,7 +1384,7 @@ const adaptableMiddleware = (adaptable) => (function(middlewareAPI) {
1383
1384
  const alert = {
1384
1385
  alertType: 'generic',
1385
1386
  header: 'Team Sharing',
1386
- message: `Couldn't share ${adaptable.ModuleService.getModuleFriendlyName(Module)}, there is already an existing active share for it: ${existingActiveSharedEntity.Description}`,
1387
+ message: `Cannot share ${adaptable.ModuleService.getModuleFriendlyName(Module)} an active share already exists: ${existingActiveSharedEntity.Description}.`,
1387
1388
  alertDefinition: ObjectFactory.CreateInternalAlertDefinitionForMessages('Error'),
1388
1389
  };
1389
1390
  adaptable.api.alertApi.displayAdaptableAlertNotification(alert);
@@ -1407,7 +1408,7 @@ const adaptableMiddleware = (adaptable) => (function(middlewareAPI) {
1407
1408
  const alert = {
1408
1409
  alertType: 'generic',
1409
1410
  header: 'Team Sharing',
1410
- message: `${adaptable.ModuleService.getModuleFriendlyName(Module)} Shared Successfully`,
1411
+ message: `${adaptable.ModuleService.getModuleFriendlyName(Module)} shared successfully.`,
1411
1412
  alertDefinition: ObjectFactory.CreateInternalAlertDefinitionForMessages('Success'),
1412
1413
  };
1413
1414
  adaptable.api.alertApi.displayAdaptableAlertNotification(alert);
@@ -1418,7 +1419,7 @@ const adaptableMiddleware = (adaptable) => (function(middlewareAPI) {
1418
1419
  const alert = {
1419
1420
  alertType: 'generic',
1420
1421
  header: 'Team Sharing',
1421
- message: "Couldn't share item: " + error.message,
1422
+ message: 'Failed to share item: ' + error.message,
1422
1423
  alertDefinition: ObjectFactory.CreateInternalAlertDefinitionForMessages('Error'),
1423
1424
  };
1424
1425
  adaptable.api.alertApi.displayAdaptableAlertNotification(alert);
@@ -1443,10 +1444,11 @@ const adaptableMiddleware = (adaptable) => (function(middlewareAPI) {
1443
1444
  if (sharedEntityDependants.length) {
1444
1445
  const alert = {
1445
1446
  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'),
1447
+ header: 'Team Sharing',
1448
+ message: 'Cannot remove this shared item. It is referenced by: ' +
1449
+ sharedEntityDependants
1450
+ .map((sharedEntity) => `${adaptable.ModuleService.getModuleFriendlyName(sharedEntity.Module)} ${sharedEntity.Description}`)
1451
+ .join(', '),
1450
1452
  alertDefinition: ObjectFactory.CreateInternalAlertDefinitionForMessages('Warning'),
1451
1453
  };
1452
1454
  adaptable.api.alertApi.displayAdaptableAlertNotification(alert);
@@ -1463,7 +1465,7 @@ const adaptableMiddleware = (adaptable) => (function(middlewareAPI) {
1463
1465
  const alert = {
1464
1466
  alertType: 'generic',
1465
1467
  header: 'Team Sharing',
1466
- message: "Couldn't remove item: " + error.message,
1468
+ message: 'Failed to remove shared item: ' + error.message,
1467
1469
  alertDefinition: ObjectFactory.CreateInternalAlertDefinitionForMessages('Error'),
1468
1470
  };
1469
1471
  adaptable.api.alertApi.displayAdaptableAlertNotification(alert);
@@ -1485,8 +1487,8 @@ const adaptableMiddleware = (adaptable) => (function(middlewareAPI) {
1485
1487
  !adaptable.api.optionsApi.getTeamSharingOptions().suppressOverrideConfigWarning) {
1486
1488
  let confirmation = {
1487
1489
  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?',
1490
+ Header: 'Overwrite Existing Item',
1491
+ Msg: 'This import will overwrite an existing item in your configuration. Do you wish to continue?',
1490
1492
  ConfirmButtonText: 'Import',
1491
1493
  CancelAction: null,
1492
1494
  ConfirmAction: processImportAction,
@@ -1532,7 +1534,7 @@ const adaptableMiddleware = (adaptable) => (function(middlewareAPI) {
1532
1534
  const alert = {
1533
1535
  alertType: 'generic',
1534
1536
  header: 'Team Sharing',
1535
- message: `Item Successfully Imported`,
1537
+ message: 'Item imported successfully.',
1536
1538
  alertDefinition: ObjectFactory.CreateInternalAlertDefinitionForMessages('Success'),
1537
1539
  };
1538
1540
  adaptable.api.alertApi.displayAdaptableAlertNotification(alert);
@@ -1572,7 +1574,7 @@ const adaptableMiddleware = (adaptable) => (function(middlewareAPI) {
1572
1574
  const alert = {
1573
1575
  alertType: 'generic',
1574
1576
  header: 'Team Sharing',
1575
- message: "Couldn't update active item: " + error.message,
1577
+ message: 'Failed to update shared item: ' + error.message,
1576
1578
  alertDefinition: ObjectFactory.CreateInternalAlertDefinitionForMessages('Error'),
1577
1579
  };
1578
1580
  adaptable.api.alertApi.displayAdaptableAlertNotification(alert);
@@ -1593,7 +1595,7 @@ const adaptableMiddleware = (adaptable) => (function(middlewareAPI) {
1593
1595
  const alert = {
1594
1596
  alertType: 'generic',
1595
1597
  header: 'Team Sharing',
1596
- message: "Couldn't check for updates: " + error.message,
1598
+ message: 'Failed to check for updates: ' + error.message,
1597
1599
  alertDefinition: ObjectFactory.CreateInternalAlertDefinitionForMessages('Error'),
1598
1600
  };
1599
1601
  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()) {