@adaptabletools/adaptable 22.0.0-canary.3 → 22.0.0-canary.4

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 (85) hide show
  1. package/index.css +12 -3
  2. package/index.css.map +1 -1
  3. package/package.json +1 -1
  4. package/src/AdaptableOptions/ActionColumnOptions.d.ts +2 -2
  5. package/src/AdaptableOptions/CustomSortOptions.d.ts +5 -0
  6. package/src/AdaptableOptions/DashboardOptions.d.ts +1 -2
  7. package/src/AdaptableOptions/ToolPanelOptions.d.ts +1 -2
  8. package/src/AdaptableState/AlertState.d.ts +2 -2
  9. package/src/AdaptableState/ChartingState.d.ts +3 -3
  10. package/src/AdaptableState/Common/AdaptableAlert.d.ts +2 -2
  11. package/src/AdaptableState/Common/AdaptableButton.d.ts +2 -2
  12. package/src/AdaptableState/Common/AdaptableFlashingCell.d.ts +2 -2
  13. package/src/AdaptableState/Common/AdaptableObject.d.ts +25 -2
  14. package/src/AdaptableState/Common/RowSummary.d.ts +1 -1
  15. package/src/AdaptableState/Common/Schedule.d.ts +3 -4
  16. package/src/AdaptableState/Common/SystemStatusMessageInfo.d.ts +2 -2
  17. package/src/AdaptableState/CustomSortState.d.ts +2 -2
  18. package/src/AdaptableState/DashboardState.d.ts +2 -2
  19. package/src/AdaptableState/ExportState.d.ts +2 -2
  20. package/src/AdaptableState/FlashingCellState.d.ts +2 -2
  21. package/src/AdaptableState/FormatColumnState.d.ts +2 -2
  22. package/src/AdaptableState/LayoutState.d.ts +8 -3
  23. package/src/AdaptableState/NamedQueryState.d.ts +2 -2
  24. package/src/AdaptableState/PlusMinusState.d.ts +2 -2
  25. package/src/AdaptableState/ShortcutState.d.ts +2 -2
  26. package/src/AdaptableState/StyledColumnState.d.ts +1 -1
  27. package/src/AdaptableState/ThemeState.d.ts +2 -2
  28. package/src/Api/CustomSortApi.d.ts +6 -3
  29. package/src/Api/Implementation/CustomSortApiImpl.d.ts +5 -1
  30. package/src/Api/Implementation/CustomSortApiImpl.js +2 -2
  31. package/src/Api/Implementation/LayoutHelpers.js +7 -0
  32. package/src/Api/Implementation/ScheduleApiImpl.js +1 -0
  33. package/src/Redux/ActionsReducers/LayoutRedux.d.ts +1 -1
  34. package/src/Strategy/AlertModule.js +4 -0
  35. package/src/Strategy/CustomSortModule.js +4 -0
  36. package/src/Strategy/FlashingCellModule.js +5 -0
  37. package/src/Strategy/FormatColumnModule.js +4 -0
  38. package/src/Strategy/LayoutModule.js +4 -4
  39. package/src/Strategy/PlusMinusModule.js +4 -0
  40. package/src/Strategy/ScheduleModule.js +4 -0
  41. package/src/Strategy/ShortcutModule.js +4 -0
  42. package/src/Utilities/Extensions/StringExtensions.d.ts +2 -0
  43. package/src/Utilities/Extensions/StringExtensions.js +16 -0
  44. package/src/Utilities/Helpers/FormatHelper.js +9 -2
  45. package/src/Utilities/ObjectFactory.js +15 -2
  46. package/src/View/Alert/Utilities/getDefaultAlertDefinition.d.ts +2 -1
  47. package/src/View/Alert/Wizard/AlertTypeWizardSection.d.ts +5 -2
  48. package/src/View/Alert/Wizard/AlertTypeWizardSection.js +47 -12
  49. package/src/View/Alert/Wizard/AlertWizard.js +14 -10
  50. package/src/View/Components/Buttons/EntityListActionButtons.d.ts +1 -2
  51. package/src/View/Components/Buttons/SuspendToggleButton/SuspendToggleButton.d.ts +1 -2
  52. package/src/View/CustomSort/Wizard/CustomSortColumnWizardSection.d.ts +2 -1
  53. package/src/View/CustomSort/Wizard/CustomSortColumnWizardSection.js +40 -14
  54. package/src/View/CustomSort/Wizard/CustomSortWizard.js +4 -4
  55. package/src/View/DataChangeHistory/DataChangeHistoryGrid.js +1 -0
  56. package/src/View/FlashingCell/Wizard/FlashingCellSettingsWizardSection.d.ts +2 -1
  57. package/src/View/FlashingCell/Wizard/FlashingCellSettingsWizardSection.js +34 -14
  58. package/src/View/FlashingCell/Wizard/FlashingCellWizard.js +14 -10
  59. package/src/View/FormatColumn/Wizard/FormatColumnSettingsWizardSection.js +47 -29
  60. package/src/View/FormatColumn/Wizard/FormatColumnWizard.js +20 -9
  61. package/src/View/Layout/Wizard/sections/PivotColumnsSection.js +8 -0
  62. package/src/View/PlusMinus/Wizard/PlusMinusSettingsWizardSection.js +32 -9
  63. package/src/View/PlusMinus/Wizard/PlusMinusWizard.js +20 -15
  64. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsIPushPull.js +12 -1
  65. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsOpenFin.js +12 -1
  66. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsReminder.js +12 -2
  67. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsReport.js +12 -1
  68. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/isSettingsValid.d.ts +2 -1
  69. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/isSettingsValid.js +10 -1
  70. package/src/View/Shortcut/Wizard/ShortcutSettingsWizard.d.ts +2 -1
  71. package/src/View/Shortcut/Wizard/ShortcutSettingsWizard.js +25 -4
  72. package/src/View/Shortcut/Wizard/ShortcutWizard.js +18 -14
  73. package/src/env.js +2 -2
  74. package/src/layout-manager/src/LayoutManagerModel.d.ts +1 -0
  75. package/src/layout-manager/src/index.js +25 -7
  76. package/src/layout-manager/src/normalizeLayoutModel.js +3 -0
  77. package/src/metamodel/adaptable.metamodel.d.ts +30 -0
  78. package/src/metamodel/adaptable.metamodel.js +1 -1
  79. package/src/migration/AdaptableUpgradeHelper.js +1 -1
  80. package/src/migration/VersionUpgrade22.d.ts +15 -0
  81. package/src/migration/VersionUpgrade22.js +160 -0
  82. package/src/types.d.ts +1 -2
  83. package/tsconfig.esm.tsbuildinfo +1 -1
  84. package/src/AdaptableState/Common/SuspendableObject.d.ts +0 -10
  85. package/src/AdaptableState/Common/SuspendableObject.js +0 -1
@@ -1,9 +1,8 @@
1
- import { AdaptableObject } from './AdaptableObject';
2
- import { SuspendableObject } from './SuspendableObject';
1
+ import { NamedObject, SuspendableObject } from './AdaptableObject';
3
2
  /**
4
3
  * Defines when an action will be run - either one-off or recurring
5
4
  */
6
- export interface Schedule extends AdaptableObject {
5
+ export interface Schedule {
7
6
  /**
8
7
  * Hour the Schedule will run
9
8
  */
@@ -24,7 +23,7 @@ export interface Schedule extends AdaptableObject {
24
23
  /**
25
24
  * Base Schedule object - typically overriden by Functions
26
25
  */
27
- export interface BaseSchedule extends SuspendableObject {
26
+ export interface BaseSchedule extends NamedObject, SuspendableObject {
28
27
  /**
29
28
  * The Schedule to run
30
29
  */
@@ -1,9 +1,9 @@
1
1
  import { AdaptableMessageType } from './AdaptableMessageType';
2
- import { AdaptableObject } from '../../types';
2
+ import { Identifiable } from '../../types';
3
3
  /**
4
4
  * Wraps a System Status Message
5
5
  */
6
- export interface SystemStatusMessageInfo extends AdaptableObject {
6
+ export interface SystemStatusMessageInfo extends Identifiable {
7
7
  /**
8
8
  * The Message to be displayed
9
9
  */
@@ -1,5 +1,5 @@
1
1
  import { BaseState } from './BaseState';
2
- import { SuspendableObject } from './Common/SuspendableObject';
2
+ import { NamedObject, SuspendableObject } from './Common/AdaptableObject';
3
3
  /**
4
4
  * Adaptable State Section for Custom Sort Module
5
5
  */
@@ -12,7 +12,7 @@ export interface CustomSortState extends BaseState {
12
12
  /**
13
13
  * Custom Sort object used in Custom Sort function.
14
14
  */
15
- export interface CustomSort extends SuspendableObject {
15
+ export interface CustomSort extends SuspendableObject, NamedObject {
16
16
  /**
17
17
  * Id of Column on which Custom Sort will be applied
18
18
  */
@@ -1,6 +1,6 @@
1
1
  import { BaseState } from './BaseState';
2
2
  import { AdaptableDashboardToolbars, AdaptableModuleButtons } from './Common/Types';
3
- import { AdaptableObject } from './Common/AdaptableObject';
3
+ import { AdaptableObject, NamedObject } from './Common/AdaptableObject';
4
4
  /**
5
5
  * Adaptable State Section for the AdapTable Dashboard
6
6
  */
@@ -56,7 +56,7 @@ export interface DashboardState extends BaseState {
56
56
  /**
57
57
  * Defines a named set of Toolbars in the AdapTable Dashboard
58
58
  */
59
- export interface DashboardTab extends AdaptableObject {
59
+ export interface DashboardTab extends NamedObject {
60
60
  /**
61
61
  * Name of the tab - as appears in the Dashboard
62
62
  */
@@ -2,7 +2,7 @@ import { BaseState } from './BaseState';
2
2
  import { BaseSchedule } from './Common/Schedule';
3
3
  import { ColumnScope } from './Common/ColumnScope';
4
4
  import { AdaptableColumnBase } from './Common/AdaptableColumn';
5
- import { AdaptableObject } from './Common/AdaptableObject';
5
+ import { NamedObject } from './Common/AdaptableObject';
6
6
  import { AdaptableBooleanQuery } from './Common/AdaptableQuery';
7
7
  import { TypeHint } from './Common/Types';
8
8
  import { ExportDestinationType } from '../AdaptableOptions/ExportOptions';
@@ -26,7 +26,7 @@ export interface ExportState extends BaseState {
26
26
  /**
27
27
  * A Report which can export data from AdapTable
28
28
  */
29
- export interface Report extends AdaptableObject {
29
+ export interface Report extends NamedObject {
30
30
  /**
31
31
  * Name of Report
32
32
  */
@@ -4,7 +4,7 @@ import { AdaptableColumnPredicate, ColumnScope } from '../types';
4
4
  import { XOR } from '../Utilities/Extensions/TypeExtensions';
5
5
  import { AdaptableBooleanQuery } from './Common/AdaptableQuery';
6
6
  import { TypeHint } from './Common/Types';
7
- import { SuspendableObject } from '../../types';
7
+ import { NamedObject, SuspendableObject } from '../../types';
8
8
  /**
9
9
  * Adaptable State Section for Flashing Cell module
10
10
  */
@@ -33,7 +33,7 @@ export type FlashTargetTypes = 'row' | 'cell' | 'aggFuncCell';
33
33
  /**
34
34
  * The Flashing Cell Definition
35
35
  */
36
- export interface FlashingCellDefinition extends SuspendableObject {
36
+ export interface FlashingCellDefinition extends NamedObject, SuspendableObject {
37
37
  /**
38
38
  * Which Columns, DataTypes or Column Types can Flash
39
39
  */
@@ -3,11 +3,11 @@ import { AdaptableStyle } from './Common/AdaptableStyle';
3
3
  import { AdaptableFormat } from './Common/AdaptableFormat';
4
4
  import { ColumnScope } from './Common/ColumnScope';
5
5
  import { RowScope } from './Common/RowScope';
6
- import { SuspendableObject } from './Common/SuspendableObject';
7
6
  import { XOR } from '../Utilities/Extensions/TypeExtensions';
8
7
  import { TypeHint } from './Common/Types';
9
8
  import { AdaptableBooleanQuery, LayoutExtendedConfig } from '../types';
10
9
  import { AdaptableColumnPredicate } from './Common/AdaptablePredicate';
10
+ import { NamedObject, SuspendableObject } from './Common/AdaptableObject';
11
11
  /**
12
12
  * Adaptable State Section for Format Column Module
13
13
  */
@@ -20,7 +20,7 @@ export interface FormatColumnState extends BaseState {
20
20
  /**
21
21
  * Object used in Format Column function
22
22
  */
23
- export interface FormatColumn extends SuspendableObject {
23
+ export interface FormatColumn extends SuspendableObject, NamedObject {
24
24
  /**
25
25
  * Where Format will be applied: whole Row, some Columns, or Columns of DataType
26
26
  */
@@ -1,8 +1,8 @@
1
1
  import { BaseState } from './BaseState';
2
- import { AdaptableObject } from './Common/AdaptableObject';
2
+ import { AdaptableObject, NamedObject } from './Common/AdaptableObject';
3
3
  import { ColumnSort } from './Common/ColumnSort';
4
4
  import { ColumnFilter, GridFilter } from '../types';
5
- import { TableAggregationColumns, PivotAggregationColumns } from './Common/AggregationColumns';
5
+ import { PivotAggregationColumns, TableAggregationColumns } from './Common/AggregationColumns';
6
6
  import { RowSummary } from './Common/RowSummary';
7
7
  import { NonEmptyArray } from '../Utilities/Extensions/ArrayExtensions';
8
8
  import { XOR } from '../Utilities/Extensions/TypeExtensions';
@@ -30,7 +30,7 @@ export interface LayoutState extends BaseState {
30
30
  /**
31
31
  * Base object for both Table and Pivot Layouts
32
32
  */
33
- export interface LayoutBase extends AdaptableObject {
33
+ export interface LayoutBase extends NamedObject {
34
34
  /**
35
35
  * Name of Layout as will appear in Layout toolbar and tool panel
36
36
  */
@@ -165,6 +165,11 @@ export interface PivotLayout extends LayoutBase {
165
165
  * Display automatically calculated Totals within EACH Pivot Column Group, in the position specified
166
166
  */
167
167
  PivotColumnTotal?: PivotTotalPosition;
168
+ /**
169
+ * Ordered list of Pivot Result Column Ids to control their display order.
170
+ * Set to `true` to enable tracking the current display order (will be populated automatically).
171
+ */
172
+ PivotResultColumns?: string[] | boolean;
168
173
  }
169
174
  /**
170
175
  * Defines the position of Pivot Total position - 'before' or 'after' the Value Column(s)
@@ -1,6 +1,6 @@
1
1
  import { BaseState } from './BaseState';
2
2
  import { AdaptableBooleanQuery } from './Common/AdaptableQuery';
3
- import { AdaptableObject } from './Common/AdaptableObject';
3
+ import { NamedObject } from './Common/AdaptableObject';
4
4
  /**
5
5
  * Adaptable State Section for Named Query Module
6
6
  */
@@ -13,7 +13,7 @@ export interface NamedQueryState extends BaseState {
13
13
  /**
14
14
  * Defines a Query which can be referenced in AdaptableQL Expressions
15
15
  */
16
- export interface NamedQuery extends AdaptableBooleanQuery, AdaptableObject {
16
+ export interface NamedQuery extends AdaptableBooleanQuery, NamedObject {
17
17
  /**
18
18
  * Name of the Query - how it will appear in the Expression
19
19
  */
@@ -1,7 +1,7 @@
1
1
  import { BaseState } from './BaseState';
2
2
  import { ColumnScope } from './Common/ColumnScope';
3
3
  import { AdaptableBooleanQuery } from './Common/AdaptableQuery';
4
- import { SuspendableObject } from './Common/SuspendableObject';
4
+ import { NamedObject, SuspendableObject } from './Common/AdaptableObject';
5
5
  /**
6
6
  * Adaptable State Section for Plus Minus Module
7
7
  */
@@ -14,7 +14,7 @@ export interface PlusMinusState extends BaseState {
14
14
  /**
15
15
  * Defines a Plus Minus Rule - used in the Plus Minus Module
16
16
  */
17
- export interface PlusMinusNudge extends SuspendableObject {
17
+ export interface PlusMinusNudge extends NamedObject, SuspendableObject {
18
18
  /**
19
19
  * Where Rule is applied
20
20
  */
@@ -1,6 +1,6 @@
1
1
  import { BaseState } from './BaseState';
2
2
  import { ColumnScope } from './Common/ColumnScope';
3
- import { SuspendableObject } from './Common/SuspendableObject';
3
+ import { NamedObject, SuspendableObject } from './Common/AdaptableObject';
4
4
  /**
5
5
  * Adaptable State Section for Shortcut Module
6
6
  */
@@ -17,7 +17,7 @@ export type ShortcutScopeDataType = 'number';
17
17
  /**
18
18
  * Used to define a Shortcut as used in Shortcut State
19
19
  */
20
- export interface Shortcut extends SuspendableObject {
20
+ export interface Shortcut extends NamedObject, SuspendableObject {
21
21
  /**
22
22
  * Numeric Columns where Shortcut is applied
23
23
  */
@@ -1,9 +1,9 @@
1
1
  import { BaseState } from './BaseState';
2
- import { SuspendableObject } from './Common/SuspendableObject';
3
2
  import { AdaptablePredicate, AdaptableStyle, AdaptableBooleanQuery, AdaptableIcon } from '../types';
4
3
  import { TypeHint } from './Common/Types';
5
4
  import { RowScope } from './Common/RowScope';
6
5
  import { AgSparklineOptions } from 'ag-charts-types';
6
+ import { SuspendableObject } from './Common/AdaptableObject';
7
7
  /**
8
8
  * Adaptable State Section for Styled Column Module
9
9
  */
@@ -1,5 +1,5 @@
1
1
  import { BaseState } from './BaseState';
2
- import { AdaptableObject } from './Common/AdaptableObject';
2
+ import { NamedObject } from './Common/AdaptableObject';
3
3
  import { TypeHint } from './Common/Types';
4
4
  /**
5
5
  * Theme section of Adaptable State
@@ -21,7 +21,7 @@ export interface ThemeState extends BaseState {
21
21
  /**
22
22
  * Used for creating User (i.e. Custom) Themes
23
23
  */
24
- export interface AdaptableTheme extends AdaptableObject {
24
+ export interface AdaptableTheme extends NamedObject {
25
25
  /**
26
26
  * Name of the Theme
27
27
  */
@@ -52,11 +52,14 @@ export interface CustomSortApi {
52
52
  addCustomSort(customSort: CustomSort): CustomSort;
53
53
  /**
54
54
  * Creates new Custom Sort based on given values
55
- * @param columnId Id of Column to which to apply Custom Sort
56
- * @param values Custom Sort values to apply
55
+ * @param params Parameters for creating a Custom Sort
57
56
  * @returns Custom Sort
58
57
  */
59
- createCustomSort(columnId: string, values: string[]): CustomSort;
58
+ createCustomSort(params: {
59
+ name: string;
60
+ columnId: string;
61
+ values: string[];
62
+ }): CustomSort;
60
63
  /**
61
64
  * Updates existing Custom Sort with new set of Sorted Values
62
65
  * @param columnId Id of Column on which to edit the Custom Sort
@@ -18,7 +18,11 @@ export declare class CustomSortApiImpl extends ApiBase implements CustomSortApi
18
18
  getCustomSortByColumn(column: string): CustomSort;
19
19
  getCustomSortForColumn(columnId: string): CustomSort | undefined;
20
20
  addCustomSort(customSort: CustomSort): CustomSort;
21
- createCustomSort(columnId: string, values: string[]): CustomSort;
21
+ createCustomSort(params: {
22
+ name: string;
23
+ columnId: string;
24
+ values: string[];
25
+ }): CustomSort;
22
26
  editCustomSortValues(columnId: string, values: string[]): CustomSort;
23
27
  editCustomSort(customSort: CustomSort): CustomSort;
24
28
  deleteCustomSort(column: string): void;
@@ -70,8 +70,8 @@ export class CustomSortApiImpl extends ApiBase {
70
70
  this.dispatchAction(CustomSortRedux.CustomSortAdd(customSort));
71
71
  return this.getCustomSortById(customSort.Uuid);
72
72
  }
73
- createCustomSort(columnId, values) {
74
- let customSort = { ColumnId: columnId, SortedValues: values };
73
+ createCustomSort(params) {
74
+ let customSort = { Name: params.name, ColumnId: params.columnId, SortedValues: params.values };
75
75
  return this.addCustomSort(customSort);
76
76
  }
77
77
  editCustomSortValues(columnId, values) {
@@ -274,6 +274,7 @@ export const pivotLayoutToPivotLayoutModel = (pivotLayout) => {
274
274
  GrandTotalRow: pivotLayout.GrandTotalRow,
275
275
  PivotGrandTotal: pivotLayout.PivotGrandTotal,
276
276
  PivotColumnTotal: pivotLayout.PivotColumnTotal,
277
+ PivotResultColumns: pivotLayout.PivotResultColumns,
277
278
  RowGroupValues: toRowGroupValuesForLayoutModel(pivotLayout.RowGroupValues),
278
279
  ColumnGroupValues: pivotLayout.ColumnGroupValues
279
280
  ? pivotLayout.ColumnGroupValues.ColumnGroupDefaultBehavior === 'always-expanded' ||
@@ -507,6 +508,12 @@ export const pivotLayoutModelToPivotLayout = (layoutModel) => {
507
508
  else {
508
509
  delete pivotLayout.PivotColumnTotal;
509
510
  }
511
+ if (layoutModel.PivotResultColumns != null) {
512
+ pivotLayout.PivotResultColumns = layoutModel.PivotResultColumns;
513
+ }
514
+ else {
515
+ delete pivotLayout.PivotResultColumns;
516
+ }
510
517
  if (layoutModel.PivotAggregationColumns) {
511
518
  pivotLayout.PivotAggregationColumns = (layoutModel.PivotAggregationColumns || []).map(({ ColumnId, AggFunc, Total }) => ({
512
519
  ColumnId,
@@ -154,6 +154,7 @@ export class ScheduleApiImpl extends ApiBase {
154
154
  header: reminderSchedule.Header,
155
155
  message: reminderSchedule.Message,
156
156
  alertDefinition: {
157
+ Name: reminderSchedule.Header,
157
158
  MessageType: reminderSchedule.MessageType,
158
159
  AlertProperties: {
159
160
  DisplayNotification: reminderSchedule.DisplayNotification,
@@ -168,11 +168,11 @@ export declare const getColumnFilterSelector: (state: AdaptableState, columnId:
168
168
  Predicates: import("../../types").ColumnFilterPredicate[];
169
169
  PredicatesOperator?: import("../../types").PredicatesOperator;
170
170
  IsSuspended?: boolean;
171
- Uuid?: import("../../AdaptableState/Uuid").TypeUuid;
172
171
  Source?: "InitialState" | "User";
173
172
  AdaptableVersion?: import("../../types").AdaptableVersion;
174
173
  IsReadOnly?: boolean;
175
174
  Tags?: import("../../types").AdaptableObjectTag[];
176
175
  Metadata?: any;
176
+ Uuid?: import("../../AdaptableState/Uuid").TypeUuid;
177
177
  };
178
178
  export declare const LayoutReducer: Redux.Reducer<LayoutState>;
@@ -183,6 +183,10 @@ export class AlertModule extends AdaptableModuleBase {
183
183
  const alertType = getAlertType(alert);
184
184
  return {
185
185
  items: [
186
+ {
187
+ name: 'Name',
188
+ values: [alert.Name],
189
+ },
186
190
  getAlertTypeViewItems(alert),
187
191
  alertType === 'DataChange' && {
188
192
  ...getScopeViewItems(alert.Scope, this.api),
@@ -47,6 +47,10 @@ export class CustomSortModule extends AdaptableModuleBase {
47
47
  toView(customSort) {
48
48
  return {
49
49
  items: [
50
+ {
51
+ name: 'Name',
52
+ values: [customSort.Name],
53
+ },
50
54
  getCustomSortColumnViewItems(customSort, this.api),
51
55
  getCustomSortSortOrderViewItems(customSort),
52
56
  getObjectTagsViewItems(customSort, this.api),
@@ -182,6 +182,7 @@ export class FlashingCellModule extends AdaptableModuleBase {
182
182
  }
183
183
  return [
184
184
  this.createMenuItemReduxAction('flashing-cell-add', 'Add Flashing Cell', this.moduleInfo.Glyph, FlashingCellRedux.FlashingCellDefinitionAdd({
185
+ Name: `Any Change [${column.columnId}]`,
185
186
  Scope: {
186
187
  ColumnIds: [column.columnId],
187
188
  },
@@ -247,6 +248,10 @@ export class FlashingCellModule extends AdaptableModuleBase {
247
248
  toView(flashingCell) {
248
249
  return {
249
250
  items: [
251
+ {
252
+ name: 'Name',
253
+ values: [flashingCell.Name],
254
+ },
250
255
  { ...getScopeViewItems(flashingCell.Scope, this.api), label: 'Trigger' },
251
256
  {
252
257
  ...getRuleViewItems(flashingCell.Rule, this.api),
@@ -82,6 +82,10 @@ export class FormatColumnModule extends AdaptableModuleBase {
82
82
  return {
83
83
  abObject: formatColumn,
84
84
  items: [
85
+ {
86
+ name: 'Name',
87
+ values: [formatColumn.Name],
88
+ },
85
89
  getScopeViewItems(formatColumn.Scope, this.api),
86
90
  getFormatColumnSettingsTargetItems(formatColumn),
87
91
  formatColumn.Rule && getRuleViewItems(formatColumn.Rule, this.api),
@@ -299,14 +299,14 @@ export class LayoutModule extends AdaptableModuleBase {
299
299
  }
300
300
  return {
301
301
  items: [
302
- {
303
- name: 'Grid Type',
304
- values: [isPivotLayout(layout) ? 'Pivot' : 'Table'],
305
- },
306
302
  {
307
303
  name: 'Name',
308
304
  values: [layout.Name],
309
305
  },
306
+ {
307
+ name: 'Grid Type',
308
+ values: [isPivotLayout(layout) ? 'Pivot' : 'Table'],
309
+ },
310
310
  /**
311
311
  * Hide pivot columns.
312
312
  *
@@ -200,6 +200,10 @@ export class PlusMinusModule extends AdaptableModuleBase {
200
200
  return {
201
201
  abObject: plusMinus,
202
202
  items: [
203
+ {
204
+ name: 'Name',
205
+ values: [plusMinus.Name],
206
+ },
203
207
  {
204
208
  name: 'Target',
205
209
  ...getScopeViewItems(plusMinus.Scope, this.api),
@@ -132,6 +132,10 @@ export class ScheduleModule extends AdaptableModuleBase {
132
132
  return {
133
133
  abObject: schedule,
134
134
  items: [
135
+ {
136
+ name: 'Name',
137
+ values: [schedule.Name],
138
+ },
135
139
  {
136
140
  name: 'Settings',
137
141
  values: getScheduleSettingsValues(schedule).map((description) => `${description.label}: ${description.value}`),
@@ -82,6 +82,10 @@ export class ShortcutModule extends AdaptableModuleBase {
82
82
  return {
83
83
  abObject: shortcut,
84
84
  items: [
85
+ {
86
+ name: 'Name',
87
+ values: [shortcut.Name],
88
+ },
85
89
  getScopeViewItems(shortcut.Scope, this.api),
86
90
  getShortcutSettingsViewItems(shortcut),
87
91
  getObjectTagsViewItems(shortcut, this.api),
@@ -17,6 +17,7 @@ export declare function Humanize(str: string): string;
17
17
  export declare function ReplaceEmptySpacesWithUnderscore(str?: string): string;
18
18
  export declare function IsNumeric(str: string): boolean;
19
19
  export declare function UnescapeHtmlEntities(str: string): string;
20
+ export declare function ReplaceAllOccurencesExceptLastOne(str: string, searchTerm: string, replacement: string): string;
20
21
  export declare const StringExtensions: {
21
22
  IsNull: typeof IsNull;
22
23
  IsNotNull: typeof IsNotNull;
@@ -37,5 +38,6 @@ export declare const StringExtensions: {
37
38
  ReplaceEmptySpacesWithUnderscore: typeof ReplaceEmptySpacesWithUnderscore;
38
39
  IsNumeric: typeof IsNumeric;
39
40
  UnescapeHtmlEntities: typeof UnescapeHtmlEntities;
41
+ ReplaceAllOccurencesExceptLastOne: typeof ReplaceAllOccurencesExceptLastOne;
40
42
  };
41
43
  export default StringExtensions;
@@ -92,6 +92,21 @@ export function UnescapeHtmlEntities(str) {
92
92
  }
93
93
  return preparedStr;
94
94
  }
95
+ export function ReplaceAllOccurencesExceptLastOne(str, searchTerm, replacement) {
96
+ // Find the index of the last occurrence of the search string
97
+ const lastIndex = str.lastIndexOf(searchTerm);
98
+ // If the string is not found, return the original string
99
+ if (lastIndex === -1) {
100
+ return str;
101
+ }
102
+ // Slice the string into two parts: before and after the last occurrence
103
+ const partBeforeLast = str.slice(0, lastIndex);
104
+ const partAfterLast = str.slice(lastIndex);
105
+ // Replace all occurrences in the first part
106
+ const replacedPart = partBeforeLast.replaceAll(searchTerm, replacement);
107
+ // Recombine the modified first part with the untouched second part
108
+ return replacedPart + partAfterLast;
109
+ }
95
110
  export const StringExtensions = {
96
111
  IsNull,
97
112
  IsNotNull,
@@ -112,5 +127,6 @@ export const StringExtensions = {
112
127
  ReplaceEmptySpacesWithUnderscore,
113
128
  IsNumeric,
114
129
  UnescapeHtmlEntities,
130
+ ReplaceAllOccurencesExceptLastOne,
115
131
  };
116
132
  export default StringExtensions;
@@ -28,7 +28,6 @@ export function NumberFormatter(input, options = {}, rowNode, column, api) {
28
28
  if (isNaN(n)) {
29
29
  return preparedInput.toString();
30
30
  }
31
- const fractionsSepatator = options.FractionSeparator ? options.FractionSeparator : '.';
32
31
  let multiplier = options.Multiplier ? options.Multiplier : 1;
33
32
  if (options.Multiplier !== undefined) {
34
33
  n *= multiplier;
@@ -65,6 +64,7 @@ export function NumberFormatter(input, options = {}, rowNode, column, api) {
65
64
  }
66
65
  let s;
67
66
  let digitsToUse;
67
+ const fractionsSepatator = options.FractionSeparator ?? '.';
68
68
  if (options.Truncate || options.Ceiling || options.Round || options.Floor) {
69
69
  digitsToUse = 0;
70
70
  }
@@ -84,7 +84,14 @@ export function NumberFormatter(input, options = {}, rowNode, column, api) {
84
84
  s = s.replace(/\./g, options.FractionSeparator);
85
85
  }
86
86
  if (options.IntegerSeparator !== undefined) {
87
- s = s.replace(/\,/g, options.IntegerSeparator);
87
+ // if fraction separator is not a comma then simply replace all instances
88
+ if (options.FractionSeparator !== ',') {
89
+ s = s.replace(/\,/g, options.IntegerSeparator);
90
+ }
91
+ else {
92
+ // otherwise don't replace the last instance
93
+ s = StringExtensions.ReplaceAllOccurencesExceptLastOne(s, ',', options.IntegerSeparator);
94
+ }
88
95
  }
89
96
  s = (options.Prefix || '') + s + (options.Suffix || '');
90
97
  if (options.Parentheses === true && preparedInput < 0) {
@@ -6,7 +6,7 @@ import { Bounce, Flip, Slide, Zoom } from '../components/Toastify';
6
6
  import { BLACK, getHexForName, LIGHT_GRAY } from '../View/UIHelper';
7
7
  import { isPivotLayout } from '../Api/Implementation/LayoutHelpers';
8
8
  export function CreateEmptyCustomSort() {
9
- return { Uuid: createUuid(), ColumnId: EMPTY_STRING, SortedValues: [] };
9
+ return { Uuid: createUuid(), Name: EMPTY_STRING, ColumnId: EMPTY_STRING, SortedValues: [] };
10
10
  }
11
11
  export function CreateAdaptableComment(text, api) {
12
12
  const comment = {
@@ -44,6 +44,7 @@ export function CreateEmptyNamedQuery(expression) {
44
44
  export function CreateEmptyPlusMinusNudge() {
45
45
  return {
46
46
  Uuid: createUuid(),
47
+ Name: EMPTY_STRING,
47
48
  Scope: undefined,
48
49
  Rule: undefined,
49
50
  NudgeValue: PLUS_MINUS_DEFAULT_NUDGE_VALUE,
@@ -81,6 +82,7 @@ export function CreateRowChangedAlert(alertHeader, alertMessage, alertDefinition
81
82
  export function CreateEmptyAlertDefinition() {
82
83
  return {
83
84
  Uuid: createUuid(),
85
+ Name: EMPTY_STRING,
84
86
  Scope: { All: true },
85
87
  Rule: {
86
88
  Predicates: [],
@@ -92,6 +94,7 @@ export function CreateEmptyAlertDefinition() {
92
94
  export function CreateEmptyFlashingCellDefinition() {
93
95
  return {
94
96
  Uuid: createUuid(),
97
+ Name: EMPTY_STRING,
95
98
  Scope: { ColumnIds: [] },
96
99
  Rule: {
97
100
  Predicates: [
@@ -108,6 +111,7 @@ export function CreateInternalAlertDefinitionForMessages(messageType, alertPrope
108
111
  };
109
112
  return {
110
113
  Uuid: createUuid(),
114
+ Name: EMPTY_STRING,
111
115
  Scope: undefined,
112
116
  Rule: {
113
117
  Predicates: [],
@@ -129,6 +133,7 @@ export function CreateEmptyReport() {
129
133
  export function CreateEmptyBaseSchedule(scheduleType) {
130
134
  return {
131
135
  Uuid: createUuid(),
136
+ Name: EMPTY_STRING,
132
137
  ScheduleType: scheduleType,
133
138
  Schedule: CreateEmptySchedule(),
134
139
  };
@@ -136,6 +141,7 @@ export function CreateEmptyBaseSchedule(scheduleType) {
136
141
  export function CreateEmptyReminderSchedule() {
137
142
  return {
138
143
  Uuid: createUuid(),
144
+ Name: EMPTY_STRING,
139
145
  ScheduleType: ScheduleType.Reminder,
140
146
  Schedule: CreateEmptySchedule(),
141
147
  Header: EMPTY_STRING,
@@ -148,6 +154,7 @@ export function CreateEmptyReminderSchedule() {
148
154
  export function CreateEmptyReportSchedule() {
149
155
  return {
150
156
  Uuid: createUuid(),
157
+ Name: EMPTY_STRING,
151
158
  ScheduleType: ScheduleType.Report,
152
159
  Schedule: CreateEmptySchedule(),
153
160
  ReportName: EMPTY_STRING,
@@ -172,6 +179,7 @@ export function CreateEmptyOpenFinReport() {
172
179
  export function CreateEmptyIPushPullSchedule() {
173
180
  return {
174
181
  Uuid: createUuid(),
182
+ Name: EMPTY_STRING,
175
183
  ScheduleType: ScheduleType.ipushpull,
176
184
  Schedule: CreateEmptySchedule(),
177
185
  IPushPullReport: CreateEmptyIPushPullReport(),
@@ -181,6 +189,7 @@ export function CreateEmptyIPushPullSchedule() {
181
189
  export function CreateEmptyOpenFinSchedule() {
182
190
  return {
183
191
  Uuid: createUuid(),
192
+ Name: EMPTY_STRING,
184
193
  ScheduleType: ScheduleType.OpenFin,
185
194
  Schedule: CreateEmptySchedule(),
186
195
  OpenFinReport: CreateEmptyOpenFinReport(),
@@ -190,6 +199,7 @@ export function CreateEmptyOpenFinSchedule() {
190
199
  export function CreateIPushPullSchedule(iPushPullReport) {
191
200
  return {
192
201
  Uuid: createUuid(),
202
+ Name: EMPTY_STRING,
193
203
  ScheduleType: ScheduleType.ipushpull,
194
204
  Schedule: CreateEmptySchedule(),
195
205
  IPushPullReport: iPushPullReport,
@@ -199,6 +209,7 @@ export function CreateIPushPullSchedule(iPushPullReport) {
199
209
  export function CreateReportSchedule(reportName, reportFormat) {
200
210
  return {
201
211
  Uuid: createUuid(),
212
+ Name: EMPTY_STRING,
202
213
  ScheduleType: ScheduleType.Report,
203
214
  Schedule: CreateEmptySchedule(),
204
215
  ReportName: reportName,
@@ -207,7 +218,6 @@ export function CreateReportSchedule(reportName, reportFormat) {
207
218
  }
208
219
  export function CreateEmptySchedule() {
209
220
  return {
210
- Uuid: createUuid(),
211
221
  OneOffDate: undefined,
212
222
  DaysOfWeek: [],
213
223
  Hour: 0,
@@ -217,6 +227,7 @@ export function CreateEmptySchedule() {
217
227
  export function CreateEmptyShortcut() {
218
228
  return {
219
229
  Uuid: createUuid(),
230
+ Name: EMPTY_STRING,
220
231
  Scope: undefined,
221
232
  ShortcutKey: EMPTY_STRING,
222
233
  ShortcutValue: undefined,
@@ -225,6 +236,8 @@ export function CreateEmptyShortcut() {
225
236
  }
226
237
  export function CreateEmptyFormatColumn() {
227
238
  return {
239
+ Uuid: createUuid(),
240
+ Name: EMPTY_STRING,
228
241
  Scope: undefined,
229
242
  Style: CreateEmptyStyle(),
230
243
  DisplayFormat: undefined,
@@ -13,10 +13,11 @@ export declare const getDefaultAlertDefinition: (alertDefinition: AlertDefinitio
13
13
  MessageText?: string;
14
14
  AlertProperties?: import("../../../types").AlertProperties;
15
15
  AlertForm?: string | import("../../../types").AlertButtonForm;
16
- IsSuspended?: boolean;
16
+ Name: string;
17
17
  Source?: "InitialState" | "User";
18
18
  AdaptableVersion?: import("../../../types").AdaptableVersion;
19
19
  IsReadOnly?: boolean;
20
20
  Tags?: import("../../../types").AdaptableObjectTag[];
21
21
  Metadata?: any;
22
+ IsSuspended?: boolean;
22
23
  };