@adaptabletools/adaptable-cjs 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 +17 -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 +48 -12
  49. package/src/View/Alert/Wizard/AlertWizard.js +12 -8
  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 +39 -13
  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 +36 -15
  58. package/src/View/FlashingCell/Wizard/FlashingCellWizard.js +13 -9
  59. package/src/View/FormatColumn/Wizard/FormatColumnSettingsWizardSection.js +47 -29
  60. package/src/View/FormatColumn/Wizard/FormatColumnWizard.js +22 -11
  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.cjs.tsbuildinfo +1 -1
  84. package/src/AdaptableState/Common/SuspendableObject.d.ts +0 -10
  85. package/src/AdaptableState/Common/SuspendableObject.js +0 -2
@@ -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;
@@ -74,8 +74,8 @@ class CustomSortApiImpl extends ApiBase_1.ApiBase {
74
74
  this.dispatchAction(CustomSortRedux.CustomSortAdd(customSort));
75
75
  return this.getCustomSortById(customSort.Uuid);
76
76
  }
77
- createCustomSort(columnId, values) {
78
- let customSort = { ColumnId: columnId, SortedValues: values };
77
+ createCustomSort(params) {
78
+ let customSort = { Name: params.name, ColumnId: params.columnId, SortedValues: params.values };
79
79
  return this.addCustomSort(customSort);
80
80
  }
81
81
  editCustomSortValues(columnId, values) {
@@ -290,6 +290,7 @@ const pivotLayoutToPivotLayoutModel = (pivotLayout) => {
290
290
  GrandTotalRow: pivotLayout.GrandTotalRow,
291
291
  PivotGrandTotal: pivotLayout.PivotGrandTotal,
292
292
  PivotColumnTotal: pivotLayout.PivotColumnTotal,
293
+ PivotResultColumns: pivotLayout.PivotResultColumns,
293
294
  RowGroupValues: (0, exports.toRowGroupValuesForLayoutModel)(pivotLayout.RowGroupValues),
294
295
  ColumnGroupValues: pivotLayout.ColumnGroupValues
295
296
  ? pivotLayout.ColumnGroupValues.ColumnGroupDefaultBehavior === 'always-expanded' ||
@@ -525,6 +526,12 @@ const pivotLayoutModelToPivotLayout = (layoutModel) => {
525
526
  else {
526
527
  delete pivotLayout.PivotColumnTotal;
527
528
  }
529
+ if (layoutModel.PivotResultColumns != null) {
530
+ pivotLayout.PivotResultColumns = layoutModel.PivotResultColumns;
531
+ }
532
+ else {
533
+ delete pivotLayout.PivotResultColumns;
534
+ }
528
535
  if (layoutModel.PivotAggregationColumns) {
529
536
  pivotLayout.PivotAggregationColumns = (layoutModel.PivotAggregationColumns || []).map(({ ColumnId, AggFunc, Total }) => ({
530
537
  ColumnId,
@@ -158,6 +158,7 @@ class ScheduleApiImpl extends ApiBase_1.ApiBase {
158
158
  header: reminderSchedule.Header,
159
159
  message: reminderSchedule.Message,
160
160
  alertDefinition: {
161
+ Name: reminderSchedule.Header,
161
162
  MessageType: reminderSchedule.MessageType,
162
163
  AlertProperties: {
163
164
  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>;
@@ -187,6 +187,10 @@ class AlertModule extends AdaptableModuleBase_1.AdaptableModuleBase {
187
187
  const alertType = (0, getAlertType_1.getAlertType)(alert);
188
188
  return {
189
189
  items: [
190
+ {
191
+ name: 'Name',
192
+ values: [alert.Name],
193
+ },
190
194
  (0, getAlertTypeViewItems_1.getAlertTypeViewItems)(alert),
191
195
  alertType === 'DataChange' && {
192
196
  ...(0, getScopeViewItems_1.getScopeViewItems)(alert.Scope, this.api),
@@ -51,6 +51,10 @@ class CustomSortModule extends AdaptableModuleBase_1.AdaptableModuleBase {
51
51
  toView(customSort) {
52
52
  return {
53
53
  items: [
54
+ {
55
+ name: 'Name',
56
+ values: [customSort.Name],
57
+ },
54
58
  (0, getCustomSortColumnViewItems_1.getCustomSortColumnViewItems)(customSort, this.api),
55
59
  (0, getCustomSortSortOrderViewItems_1.getCustomSortSortOrderViewItems)(customSort),
56
60
  (0, getObjectTagsViewItems_1.getObjectTagsViewItems)(customSort, this.api),
@@ -186,6 +186,7 @@ class FlashingCellModule extends AdaptableModuleBase_1.AdaptableModuleBase {
186
186
  }
187
187
  return [
188
188
  this.createMenuItemReduxAction('flashing-cell-add', 'Add Flashing Cell', this.moduleInfo.Glyph, FlashingCellRedux.FlashingCellDefinitionAdd({
189
+ Name: `Any Change [${column.columnId}]`,
189
190
  Scope: {
190
191
  ColumnIds: [column.columnId],
191
192
  },
@@ -251,6 +252,10 @@ class FlashingCellModule extends AdaptableModuleBase_1.AdaptableModuleBase {
251
252
  toView(flashingCell) {
252
253
  return {
253
254
  items: [
255
+ {
256
+ name: 'Name',
257
+ values: [flashingCell.Name],
258
+ },
254
259
  { ...(0, getScopeViewItems_1.getScopeViewItems)(flashingCell.Scope, this.api), label: 'Trigger' },
255
260
  {
256
261
  ...(0, getRuleViewItems_1.getRuleViewItems)(flashingCell.Rule, this.api),
@@ -86,6 +86,10 @@ class FormatColumnModule extends AdaptableModuleBase_1.AdaptableModuleBase {
86
86
  return {
87
87
  abObject: formatColumn,
88
88
  items: [
89
+ {
90
+ name: 'Name',
91
+ values: [formatColumn.Name],
92
+ },
89
93
  (0, getScopeViewItems_1.getScopeViewItems)(formatColumn.Scope, this.api),
90
94
  (0, getFormatColumnSettingsTargetItems_1.getFormatColumnSettingsTargetItems)(formatColumn),
91
95
  formatColumn.Rule && (0, getRuleViewItems_1.getRuleViewItems)(formatColumn.Rule, this.api),
@@ -303,14 +303,14 @@ class LayoutModule extends AdaptableModuleBase_1.AdaptableModuleBase {
303
303
  }
304
304
  return {
305
305
  items: [
306
- {
307
- name: 'Grid Type',
308
- values: [(0, LayoutHelpers_1.isPivotLayout)(layout) ? 'Pivot' : 'Table'],
309
- },
310
306
  {
311
307
  name: 'Name',
312
308
  values: [layout.Name],
313
309
  },
310
+ {
311
+ name: 'Grid Type',
312
+ values: [(0, LayoutHelpers_1.isPivotLayout)(layout) ? 'Pivot' : 'Table'],
313
+ },
314
314
  /**
315
315
  * Hide pivot columns.
316
316
  *
@@ -204,6 +204,10 @@ class PlusMinusModule extends AdaptableModuleBase_1.AdaptableModuleBase {
204
204
  return {
205
205
  abObject: plusMinus,
206
206
  items: [
207
+ {
208
+ name: 'Name',
209
+ values: [plusMinus.Name],
210
+ },
207
211
  {
208
212
  name: 'Target',
209
213
  ...(0, getScopeViewItems_1.getScopeViewItems)(plusMinus.Scope, this.api),
@@ -136,6 +136,10 @@ class ScheduleModule extends AdaptableModuleBase_1.AdaptableModuleBase {
136
136
  return {
137
137
  abObject: schedule,
138
138
  items: [
139
+ {
140
+ name: 'Name',
141
+ values: [schedule.Name],
142
+ },
139
143
  {
140
144
  name: 'Settings',
141
145
  values: (0, ScheduleSettingsSummary_1.getScheduleSettingsValues)(schedule).map((description) => `${description.label}: ${description.value}`),
@@ -86,6 +86,10 @@ class ShortcutModule extends AdaptableModuleBase_1.AdaptableModuleBase {
86
86
  return {
87
87
  abObject: shortcut,
88
88
  items: [
89
+ {
90
+ name: 'Name',
91
+ values: [shortcut.Name],
92
+ },
89
93
  (0, getScopeViewItems_1.getScopeViewItems)(shortcut.Scope, this.api),
90
94
  (0, getShortcutSettingsViewItems_1.getShortcutSettingsViewItems)(shortcut),
91
95
  (0, getObjectTagsViewItems_1.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;
@@ -20,6 +20,7 @@ exports.Humanize = Humanize;
20
20
  exports.ReplaceEmptySpacesWithUnderscore = ReplaceEmptySpacesWithUnderscore;
21
21
  exports.IsNumeric = IsNumeric;
22
22
  exports.UnescapeHtmlEntities = UnescapeHtmlEntities;
23
+ exports.ReplaceAllOccurencesExceptLastOne = ReplaceAllOccurencesExceptLastOne;
23
24
  const tslib_1 = require("tslib");
24
25
  const startCase_1 = tslib_1.__importDefault(require("lodash/startCase"));
25
26
  function IsNull(stringToCheck) {
@@ -115,6 +116,21 @@ function UnescapeHtmlEntities(str) {
115
116
  }
116
117
  return preparedStr;
117
118
  }
119
+ function ReplaceAllOccurencesExceptLastOne(str, searchTerm, replacement) {
120
+ // Find the index of the last occurrence of the search string
121
+ const lastIndex = str.lastIndexOf(searchTerm);
122
+ // If the string is not found, return the original string
123
+ if (lastIndex === -1) {
124
+ return str;
125
+ }
126
+ // Slice the string into two parts: before and after the last occurrence
127
+ const partBeforeLast = str.slice(0, lastIndex);
128
+ const partAfterLast = str.slice(lastIndex);
129
+ // Replace all occurrences in the first part
130
+ const replacedPart = partBeforeLast.replaceAll(searchTerm, replacement);
131
+ // Recombine the modified first part with the untouched second part
132
+ return replacedPart + partAfterLast;
133
+ }
118
134
  exports.StringExtensions = {
119
135
  IsNull,
120
136
  IsNotNull,
@@ -135,5 +151,6 @@ exports.StringExtensions = {
135
151
  ReplaceEmptySpacesWithUnderscore,
136
152
  IsNumeric,
137
153
  UnescapeHtmlEntities,
154
+ ReplaceAllOccurencesExceptLastOne,
138
155
  };
139
156
  exports.default = exports.StringExtensions;
@@ -34,7 +34,6 @@ function NumberFormatter(input, options = {}, rowNode, column, api) {
34
34
  if (isNaN(n)) {
35
35
  return preparedInput.toString();
36
36
  }
37
- const fractionsSepatator = options.FractionSeparator ? options.FractionSeparator : '.';
38
37
  let multiplier = options.Multiplier ? options.Multiplier : 1;
39
38
  if (options.Multiplier !== undefined) {
40
39
  n *= multiplier;
@@ -71,6 +70,7 @@ function NumberFormatter(input, options = {}, rowNode, column, api) {
71
70
  }
72
71
  let s;
73
72
  let digitsToUse;
73
+ const fractionsSepatator = options.FractionSeparator ?? '.';
74
74
  if (options.Truncate || options.Ceiling || options.Round || options.Floor) {
75
75
  digitsToUse = 0;
76
76
  }
@@ -90,7 +90,14 @@ function NumberFormatter(input, options = {}, rowNode, column, api) {
90
90
  s = s.replace(/\./g, options.FractionSeparator);
91
91
  }
92
92
  if (options.IntegerSeparator !== undefined) {
93
- s = s.replace(/\,/g, options.IntegerSeparator);
93
+ // if fraction separator is not a comma then simply replace all instances
94
+ if (options.FractionSeparator !== ',') {
95
+ s = s.replace(/\,/g, options.IntegerSeparator);
96
+ }
97
+ else {
98
+ // otherwise don't replace the last instance
99
+ s = StringExtensions_1.default.ReplaceAllOccurencesExceptLastOne(s, ',', options.IntegerSeparator);
100
+ }
94
101
  }
95
102
  s = (options.Prefix || '') + s + (options.Suffix || '');
96
103
  if (options.Parentheses === true && preparedInput < 0) {
@@ -48,7 +48,7 @@ const Toastify_1 = require("../components/Toastify");
48
48
  const UIHelper_1 = require("../View/UIHelper");
49
49
  const LayoutHelpers_1 = require("../Api/Implementation/LayoutHelpers");
50
50
  function CreateEmptyCustomSort() {
51
- return { Uuid: (0, Uuid_1.createUuid)(), ColumnId: GeneralConstants_1.EMPTY_STRING, SortedValues: [] };
51
+ return { Uuid: (0, Uuid_1.createUuid)(), Name: GeneralConstants_1.EMPTY_STRING, ColumnId: GeneralConstants_1.EMPTY_STRING, SortedValues: [] };
52
52
  }
53
53
  function CreateAdaptableComment(text, api) {
54
54
  const comment = {
@@ -86,6 +86,7 @@ function CreateEmptyNamedQuery(expression) {
86
86
  function CreateEmptyPlusMinusNudge() {
87
87
  return {
88
88
  Uuid: (0, Uuid_1.createUuid)(),
89
+ Name: GeneralConstants_1.EMPTY_STRING,
89
90
  Scope: undefined,
90
91
  Rule: undefined,
91
92
  NudgeValue: ObjectDefaultConstants_1.PLUS_MINUS_DEFAULT_NUDGE_VALUE,
@@ -123,6 +124,7 @@ function CreateRowChangedAlert(alertHeader, alertMessage, alertDefinition, rowDa
123
124
  function CreateEmptyAlertDefinition() {
124
125
  return {
125
126
  Uuid: (0, Uuid_1.createUuid)(),
127
+ Name: GeneralConstants_1.EMPTY_STRING,
126
128
  Scope: { All: true },
127
129
  Rule: {
128
130
  Predicates: [],
@@ -134,6 +136,7 @@ function CreateEmptyAlertDefinition() {
134
136
  function CreateEmptyFlashingCellDefinition() {
135
137
  return {
136
138
  Uuid: (0, Uuid_1.createUuid)(),
139
+ Name: GeneralConstants_1.EMPTY_STRING,
137
140
  Scope: { ColumnIds: [] },
138
141
  Rule: {
139
142
  Predicates: [
@@ -150,6 +153,7 @@ function CreateInternalAlertDefinitionForMessages(messageType, alertProperties)
150
153
  };
151
154
  return {
152
155
  Uuid: (0, Uuid_1.createUuid)(),
156
+ Name: GeneralConstants_1.EMPTY_STRING,
153
157
  Scope: undefined,
154
158
  Rule: {
155
159
  Predicates: [],
@@ -171,6 +175,7 @@ function CreateEmptyReport() {
171
175
  function CreateEmptyBaseSchedule(scheduleType) {
172
176
  return {
173
177
  Uuid: (0, Uuid_1.createUuid)(),
178
+ Name: GeneralConstants_1.EMPTY_STRING,
174
179
  ScheduleType: scheduleType,
175
180
  Schedule: CreateEmptySchedule(),
176
181
  };
@@ -178,6 +183,7 @@ function CreateEmptyBaseSchedule(scheduleType) {
178
183
  function CreateEmptyReminderSchedule() {
179
184
  return {
180
185
  Uuid: (0, Uuid_1.createUuid)(),
186
+ Name: GeneralConstants_1.EMPTY_STRING,
181
187
  ScheduleType: Enums_1.ScheduleType.Reminder,
182
188
  Schedule: CreateEmptySchedule(),
183
189
  Header: GeneralConstants_1.EMPTY_STRING,
@@ -190,6 +196,7 @@ function CreateEmptyReminderSchedule() {
190
196
  function CreateEmptyReportSchedule() {
191
197
  return {
192
198
  Uuid: (0, Uuid_1.createUuid)(),
199
+ Name: GeneralConstants_1.EMPTY_STRING,
193
200
  ScheduleType: Enums_1.ScheduleType.Report,
194
201
  Schedule: CreateEmptySchedule(),
195
202
  ReportName: GeneralConstants_1.EMPTY_STRING,
@@ -214,6 +221,7 @@ function CreateEmptyOpenFinReport() {
214
221
  function CreateEmptyIPushPullSchedule() {
215
222
  return {
216
223
  Uuid: (0, Uuid_1.createUuid)(),
224
+ Name: GeneralConstants_1.EMPTY_STRING,
217
225
  ScheduleType: Enums_1.ScheduleType.ipushpull,
218
226
  Schedule: CreateEmptySchedule(),
219
227
  IPushPullReport: CreateEmptyIPushPullReport(),
@@ -223,6 +231,7 @@ function CreateEmptyIPushPullSchedule() {
223
231
  function CreateEmptyOpenFinSchedule() {
224
232
  return {
225
233
  Uuid: (0, Uuid_1.createUuid)(),
234
+ Name: GeneralConstants_1.EMPTY_STRING,
226
235
  ScheduleType: Enums_1.ScheduleType.OpenFin,
227
236
  Schedule: CreateEmptySchedule(),
228
237
  OpenFinReport: CreateEmptyOpenFinReport(),
@@ -232,6 +241,7 @@ function CreateEmptyOpenFinSchedule() {
232
241
  function CreateIPushPullSchedule(iPushPullReport) {
233
242
  return {
234
243
  Uuid: (0, Uuid_1.createUuid)(),
244
+ Name: GeneralConstants_1.EMPTY_STRING,
235
245
  ScheduleType: Enums_1.ScheduleType.ipushpull,
236
246
  Schedule: CreateEmptySchedule(),
237
247
  IPushPullReport: iPushPullReport,
@@ -241,6 +251,7 @@ function CreateIPushPullSchedule(iPushPullReport) {
241
251
  function CreateReportSchedule(reportName, reportFormat) {
242
252
  return {
243
253
  Uuid: (0, Uuid_1.createUuid)(),
254
+ Name: GeneralConstants_1.EMPTY_STRING,
244
255
  ScheduleType: Enums_1.ScheduleType.Report,
245
256
  Schedule: CreateEmptySchedule(),
246
257
  ReportName: reportName,
@@ -249,7 +260,6 @@ function CreateReportSchedule(reportName, reportFormat) {
249
260
  }
250
261
  function CreateEmptySchedule() {
251
262
  return {
252
- Uuid: (0, Uuid_1.createUuid)(),
253
263
  OneOffDate: undefined,
254
264
  DaysOfWeek: [],
255
265
  Hour: 0,
@@ -259,6 +269,7 @@ function CreateEmptySchedule() {
259
269
  function CreateEmptyShortcut() {
260
270
  return {
261
271
  Uuid: (0, Uuid_1.createUuid)(),
272
+ Name: GeneralConstants_1.EMPTY_STRING,
262
273
  Scope: undefined,
263
274
  ShortcutKey: GeneralConstants_1.EMPTY_STRING,
264
275
  ShortcutValue: undefined,
@@ -267,6 +278,8 @@ function CreateEmptyShortcut() {
267
278
  }
268
279
  function CreateEmptyFormatColumn() {
269
280
  return {
281
+ Uuid: (0, Uuid_1.createUuid)(),
282
+ Name: GeneralConstants_1.EMPTY_STRING,
270
283
  Scope: undefined,
271
284
  Style: CreateEmptyStyle(),
272
285
  DisplayFormat: undefined,