@adaptabletools/adaptable 20.0.0-canary.1 → 20.0.0-canary.10

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 (93) hide show
  1. package/base.css +317 -866
  2. package/base.css.map +1 -1
  3. package/index.css +317 -866
  4. package/index.css.map +1 -1
  5. package/package.json +3 -3
  6. package/src/AdaptableInterfaces/IAdaptable.d.ts +2 -1
  7. package/src/AdaptableOptions/ActionColumnOptions.d.ts +2 -2
  8. package/src/AdaptableOptions/CellSummaryOptions.d.ts +1 -1
  9. package/src/AdaptableOptions/ContainerOptions.d.ts +0 -7
  10. package/src/AdaptableOptions/DefaultAdaptableOptions.js +2 -2
  11. package/src/AdaptableOptions/EditOptions.d.ts +14 -3
  12. package/src/AdaptableOptions/ExportOptions.d.ts +11 -20
  13. package/src/AdaptableOptions/FilterOptions.d.ts +2 -2
  14. package/src/AdaptableOptions/PredicateOptions.d.ts +4 -4
  15. package/src/AdaptableOptions/UserInterfaceOptions.d.ts +7 -0
  16. package/src/Api/ColumnScopeApi.d.ts +2 -2
  17. package/src/Api/ExportApi.d.ts +1 -6
  18. package/src/Api/Fdc3Api.d.ts +5 -3
  19. package/src/Api/Implementation/AdaptableApiImpl.js +1 -0
  20. package/src/Api/Implementation/ColumnScopeApiImpl.d.ts +1 -1
  21. package/src/Api/Implementation/ColumnScopeApiImpl.js +1 -1
  22. package/src/Api/Implementation/ExportApiImpl.d.ts +1 -2
  23. package/src/Api/Implementation/ExportApiImpl.js +17 -10
  24. package/src/Api/Implementation/Fdc3ApiImpl.d.ts +3 -3
  25. package/src/Api/Implementation/Fdc3ApiImpl.js +4 -4
  26. package/src/Api/Implementation/LayoutHelpers.js +8 -27
  27. package/src/Api/Implementation/ScheduleApiImpl.js +1 -1
  28. package/src/Api/Implementation/StyledColumnApiImpl.js +1 -1
  29. package/src/Api/Implementation/ThemeApiImpl.js +3 -1
  30. package/src/Api/Internal/ActionColumnInternalApi.js +16 -19
  31. package/src/Api/Internal/AdaptableInternalApi.js +1 -1
  32. package/src/Api/Internal/EventInternalApi.js +6 -1
  33. package/src/Api/Internal/ExportInternalApi.d.ts +10 -6
  34. package/src/Api/Internal/ExportInternalApi.js +105 -136
  35. package/src/Api/Internal/RowFormInternalApi.js +1 -1
  36. package/src/Api/ThemeApi.d.ts +2 -0
  37. package/src/PredefinedConfig/AlertState.d.ts +1 -1
  38. package/src/PredefinedConfig/Common/AdaptableColumn.d.ts +5 -5
  39. package/src/PredefinedConfig/Common/AdaptableColumnContext.d.ts +1 -1
  40. package/src/PredefinedConfig/Common/AdaptablePredicate.js +0 -16
  41. package/src/PredefinedConfig/Common/RowSummary.d.ts +1 -1
  42. package/src/PredefinedConfig/Common/RowSummary.js +2 -2
  43. package/src/PredefinedConfig/ExportState.d.ts +10 -17
  44. package/src/PredefinedConfig/FlashingCellState.d.ts +1 -1
  45. package/src/PredefinedConfig/LayoutState.d.ts +20 -16
  46. package/src/PredefinedConfig/StyledColumnState.d.ts +1 -1
  47. package/src/Redux/Store/AdaptableStore.js +1 -1
  48. package/src/Strategy/StyledColumnModule.js +6 -6
  49. package/src/Utilities/Helpers/AdaptableHelper.d.ts +2 -0
  50. package/src/Utilities/Helpers/AdaptableHelper.js +10 -0
  51. package/src/Utilities/ObjectFactory.js +1 -0
  52. package/src/Utilities/Services/Fdc3Service.d.ts +2 -2
  53. package/src/Utilities/Services/Fdc3Service.js +7 -2
  54. package/src/Utilities/Services/RowSummaryService.js +2 -2
  55. package/src/Utilities/Services/ThemeService.d.ts +1 -1
  56. package/src/Utilities/Services/ThemeService.js +5 -5
  57. package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/ConfigurationWizard.js +41 -0
  58. package/src/View/Components/ColumnFilter/utils.js +2 -2
  59. package/src/View/Components/FilterForm/ListBoxFilterForm.js +1 -1
  60. package/src/View/DataChangeHistory/DataChangeHistoryPopup.js +4 -1
  61. package/src/View/GridInfo/GridInfoPopup/GridInfoPopup.js +7 -2
  62. package/src/View/Layout/Wizard/LayoutWizard.js +2 -2
  63. package/src/View/Layout/Wizard/sections/RowSummarySection.js +2 -2
  64. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsReport.d.ts +2 -0
  65. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsReport.js +18 -2
  66. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsSummary.js +4 -0
  67. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsWizard.js +2 -1
  68. package/src/View/StyledColumn/Wizard/StyledColumnSparklineSettingsSection.d.ts +3 -4
  69. package/src/View/StyledColumn/Wizard/StyledColumnSparklineSettingsSection.js +348 -191
  70. package/src/View/StyledColumn/Wizard/StyledColumnWizard.js +2 -2
  71. package/src/View/StyledColumn/Wizard/StyledColumnWizardColumnSection.js +1 -1
  72. package/src/View/StyledColumn/Wizard/StyledColumnWizardTypeSection.js +4 -4
  73. package/src/agGrid/AdaptableAgGrid.d.ts +3 -8
  74. package/src/agGrid/AdaptableAgGrid.js +41 -118
  75. package/src/agGrid/AgGridAdapter.d.ts +1 -1
  76. package/src/agGrid/AgGridAdapter.js +7 -8
  77. package/src/agGrid/AgGridColumnAdapter.js +6 -11
  78. package/src/agGrid/AgGridExportAdapter.d.ts +24 -1
  79. package/src/agGrid/AgGridExportAdapter.js +24 -25
  80. package/src/agGrid/AgGridThemeAdapter.d.ts +19 -0
  81. package/src/agGrid/AgGridThemeAdapter.js +122 -0
  82. package/src/agGrid/cellRenderers/BadgeRenderer.js +2 -1
  83. package/src/components/ColorPicker/ColorPicker.js +2 -2
  84. package/src/components/OverlayTrigger/useAgGridClassName.js +1 -1
  85. package/src/components/Select/Select.d.ts +1 -0
  86. package/src/components/Select/Select.js +29 -6
  87. package/src/env.js +2 -2
  88. package/src/metamodel/adaptable.metamodel.d.ts +26 -20
  89. package/src/metamodel/adaptable.metamodel.js +1 -1
  90. package/src/migration/VersionUpgrade20.d.ts +1 -0
  91. package/src/migration/VersionUpgrade20.js +103 -3
  92. package/src/types.d.ts +3 -3
  93. package/tsconfig.esm.tsbuildinfo +1 -1
@@ -43,6 +43,15 @@ export function addAdaptableObjectPrimitives(adaptableObject) {
43
43
  adaptableObject.AdaptableVersion = GET_CURRENT_VERSION();
44
44
  return adaptableObject;
45
45
  }
46
+ export function removeAdaptableObjectPrimitivesInline(target) {
47
+ if (!target || typeof target !== 'object') {
48
+ return target;
49
+ }
50
+ delete target.Source;
51
+ delete target.Uuid;
52
+ delete target.AdaptableVersion;
53
+ return target;
54
+ }
46
55
  export function removeAdaptableObjectPrimitives(adaptableObject) {
47
56
  const clonedObject = structuredClone(adaptableObject);
48
57
  const sanitiseObject = (object) => {
@@ -70,6 +79,7 @@ export const AdaptableHelper = {
70
79
  getAccessLevelForObject,
71
80
  addAdaptableObjectPrimitives,
72
81
  removeAdaptableObjectPrimitives,
82
+ removeAdaptableObjectPrimitivesInline,
73
83
  isAdaptableObject,
74
84
  };
75
85
  export default AdaptableHelper;
@@ -162,6 +162,7 @@ export function CreateEmptyReportSchedule() {
162
162
  Schedule: CreateEmptySchedule(),
163
163
  ReportName: EMPTY_STRING,
164
164
  ReportFormat: EMPTY_STRING,
165
+ ExportDestination: 'Download',
165
166
  };
166
167
  }
167
168
  export function CreateEmptyIPushPullReport() {
@@ -1,7 +1,7 @@
1
1
  import { IAdaptableService } from './Interface/IAdaptableService';
2
2
  import { AdaptableApi } from '../../Api/AdaptableApi';
3
3
  import { Fdc3Options } from '../../AdaptableOptions/Fdc3Options';
4
- import { AppIdentifier, DesktopAgent, IntentResolution } from '@finos/fdc3';
4
+ import { AppIdentifier, Channel, DesktopAgent, IntentResolution } from '@finos/fdc3';
5
5
  import { Context } from '@finos/fdc3/dist/context/ContextTypes';
6
6
  export declare class Fdc3Service implements IAdaptableService {
7
7
  private adaptableApi;
@@ -15,7 +15,7 @@ export declare class Fdc3Service implements IAdaptableService {
15
15
  destroy(): void;
16
16
  raiseIntent(intent: string, context: Context, app?: AppIdentifier): Promise<IntentResolution>;
17
17
  raiseIntentForContext(context: Context, app?: AppIdentifier): Promise<IntentResolution>;
18
- broadcast(context: Context): Promise<void>;
18
+ broadcast(context: Context, channel?: Channel): Promise<void>;
19
19
  private logFdc3Event;
20
20
  private logFdc3Error;
21
21
  private getFdc3Api;
@@ -131,7 +131,7 @@ export class Fdc3Service {
131
131
  this.logFdc3Error(error);
132
132
  }
133
133
  }
134
- broadcast(context) {
134
+ broadcast(context, channel) {
135
135
  if (!this.getDesktopAgent()) {
136
136
  return;
137
137
  }
@@ -144,7 +144,12 @@ export class Fdc3Service {
144
144
  context,
145
145
  };
146
146
  this.adaptableApi.eventApi.emit('Fdc3Message', payload);
147
- return this.getDesktopAgent().broadcast(context);
147
+ if (channel) {
148
+ return channel.broadcast(context);
149
+ }
150
+ else {
151
+ return this.getDesktopAgent().broadcast(context);
152
+ }
148
153
  }
149
154
  catch (error) {
150
155
  this.logFdc3Error(error);
@@ -1,4 +1,4 @@
1
- import { ROW_SUMMARY_ROW_ID, WEIGHTED_AVERAGE_AGGREATED_FUNCTION, } from '../../PredefinedConfig/Common/RowSummary';
1
+ import { ROW_SUMMARY_ROW_ID, WEIGHTED_AVERAGE_AGGREGATED_FUNCTION, } from '../../PredefinedConfig/Common/RowSummary';
2
2
  import { RowSummarySet } from '../../Redux/ActionsReducers/InternalRedux';
3
3
  import * as ModuleConstants from '../../Utilities/Constants/ModuleConstants';
4
4
  import Helper from '../Helpers/Helper';
@@ -124,7 +124,7 @@ export class RowSummaryService {
124
124
  if (!expressionLiveValue) {
125
125
  try {
126
126
  let aggregatedScalarExpression = `${expression}([${columnId}])`;
127
- if (aggregatedScalarExpression.includes(WEIGHTED_AVERAGE_AGGREATED_FUNCTION) &&
127
+ if (aggregatedScalarExpression.includes(WEIGHTED_AVERAGE_AGGREGATED_FUNCTION) &&
128
128
  aggColsMap[columnId] &&
129
129
  typeof aggColsMap[columnId] === 'object') {
130
130
  const weight = aggColsMap[columnId].weightedColumnId;
@@ -5,10 +5,10 @@ export declare class ThemeService implements IThemeService {
5
5
  private unsubscribe;
6
6
  private styleSheetObject;
7
7
  constructor(api: AdaptableApi);
8
+ destroy(): void;
8
9
  subscribe(): void;
9
10
  onThemeChanged: () => void;
10
11
  applyNewThemeVariables(theme: AdaptableTheme): void;
11
- destroy(): void;
12
12
  showMissingThemeFiles(theme: AdaptableTheme): void;
13
13
  getDOMPrefferedColorScheme(): 'dark' | 'light';
14
14
  mapOsTheme(theme: AdaptableTheme | string): AdaptableTheme;
@@ -20,6 +20,11 @@ export class ThemeService {
20
20
  ];
21
21
  }
22
22
  }
23
+ destroy() {
24
+ this.api = null;
25
+ this.unsubscribe();
26
+ document.adoptedStyleSheets = [...document.adoptedStyleSheets].filter((sheet) => sheet !== this.styleSheetObject);
27
+ }
23
28
  subscribe() {
24
29
  const themeChangedUnsubscribe = this.api.eventApi.on('ThemeChanged', this.onThemeChanged);
25
30
  const prefferedColorSchemeUnsubscribe = this.attachPrefferedColorSchemeListener();
@@ -44,11 +49,6 @@ export class ThemeService {
44
49
  str += '}';
45
50
  this.styleSheetObject.replaceSync(str);
46
51
  }
47
- destroy() {
48
- this.api = null;
49
- this.unsubscribe();
50
- document.adoptedStyleSheets = [...document.adoptedStyleSheets].filter((sheet) => sheet !== this.styleSheetObject);
51
- }
52
52
  showMissingThemeFiles(theme) {
53
53
  // run time defined theme
54
54
  // because it may be an empty theme
@@ -42,6 +42,47 @@ export const ConfigurationWizard = (props) => {
42
42
  delete newColumn.caption;
43
43
  return newColumn;
44
44
  });
45
+ const columnDefs = adaptableConfig.gridOptions.columnDefs;
46
+ // handle the layout creation
47
+ let Layouts = newAdaptableOptions.predefinedConfig?.Layout?.Layouts || [];
48
+ const NewLayout = {
49
+ TableColumns: columnDefs.map((col) => col.colId ?? col.field),
50
+ Name: 'Default Layout',
51
+ };
52
+ let currentLayoutName = NewLayout.Name;
53
+ let found = false;
54
+ if (!Layouts.length) {
55
+ // no layouts, make this the only one
56
+ Layouts = [NewLayout];
57
+ }
58
+ else {
59
+ Layouts = Layouts.map((layout) => {
60
+ if (found) {
61
+ return layout;
62
+ }
63
+ if (layout.TableColumns?.length === 0) {
64
+ // when finding the first empty layout
65
+ // set its column to be those of the new layout
66
+ found = true;
67
+ // and grab the name so we can put it in the Layout.CurrentLayout state
68
+ currentLayoutName = layout.Name;
69
+ layout = { ...layout };
70
+ layout.TableColumns = NewLayout.TableColumns;
71
+ }
72
+ return layout;
73
+ });
74
+ if (!found) {
75
+ Layouts.push(NewLayout);
76
+ }
77
+ }
78
+ newAdaptableOptions.predefinedConfig = {
79
+ ...newAdaptableOptions.predefinedConfig,
80
+ Layout: {
81
+ ...newAdaptableOptions.predefinedConfig.Layout,
82
+ Layouts: Layouts,
83
+ CurrentLayout: currentLayoutName,
84
+ },
85
+ };
45
86
  newAdaptableOptions.primaryKey = columnsHandle.current.getPrimaryKey();
46
87
  }
47
88
  const newAdaptableConfig = {
@@ -91,8 +91,8 @@ export const mapColumnFilterToQlPredicate = (columnFilter, abColumn, qlPredicate
91
91
  : { operator: 'Equals', args: [] };
92
92
  break;
93
93
  case 'text':
94
- defaultQlPredicate = columnFilterOptions.defaultStringColumnFilter
95
- ? { operator: columnFilterOptions.defaultStringColumnFilter, args: [] }
94
+ defaultQlPredicate = columnFilterOptions.defaultTextColumnFilter
95
+ ? { operator: columnFilterOptions.defaultTextColumnFilter, args: [] }
96
96
  : { operator: 'Contains', args: [] };
97
97
  break;
98
98
  case 'date':
@@ -24,7 +24,7 @@ export const ColumnValuesSelect = (props) => {
24
24
  }
25
25
  return true;
26
26
  });
27
- const component = (React.createElement(Select, { isMulti: true, searchable: true, closeMenuOnSelect: false, size: "small", menuStyle: {
27
+ const component = (React.createElement(Select, { isMulti: true, showHeaderSelectionCheckbox: true, searchable: true, closeMenuOnSelect: false, size: "small", menuStyle: {
28
28
  minWidth: `var(--ab-cmp-select-column-menu-${column.columnId}__min-width, var(--ab-cmp-select-column-menu__min-width, 260px))`,
29
29
  }, ...props.selectProps, options: options, value: value, isLoading: props.isLoading, onChange: props.onChange }));
30
30
  return (React.createElement("div", { className: join(baseClassName, props.isLoading && `${baseClassName}--loading`), onKeyDownCapture: (e) => {
@@ -54,7 +54,10 @@ class DataChangeHistoryPopupComponent extends React.Component {
54
54
  this.props.api.dataChangeHistoryApi.clearDataChangeHistoryEntry(changeToBeUndone);
55
55
  }
56
56
  };
57
- const currentAgGridTheme = this.props.api.themeApi.getAgGridCurrentThemeName();
57
+ const agGridThemeMode = this.props.api.internalApi
58
+ .getAdaptableInstance()
59
+ .agGridThemeAdapter.getAgGridThemeMode();
60
+ const currentAgGridTheme = agGridThemeMode === 'legacy' ? this.props.api.themeApi.getAgGridCurrentThemeName() : '';
58
61
  return (React.createElement(PopupPanel, { headerText: this.props.moduleInfo.FriendlyName, glyphicon: this.props.moduleInfo.Glyph, infoLink: this.props.moduleInfo.HelpPage, infoLinkDisabled: !this.props.api.internalApi.isDocumentationLinksDisplayed() },
59
62
  React.createElement(Flex, { className: "ab-DataChangeHistoryPopup", flexDirection: "column", style: { height: '100%' } },
60
63
  React.createElement(Flex, { style: {
@@ -10,7 +10,9 @@ import { AdaptableObjectRow } from '../../Components/AdaptableObjectRow';
10
10
  import { PopupPanel } from '../../Components/Popups/AdaptablePopup/PopupPanel';
11
11
  import { AdaptableObjectsSummary } from './AdaptableObjectsSummary';
12
12
  import { ADAPTABLE_VERSION } from '../../../EnvVars';
13
- const version = ADAPTABLE_VERSION;
13
+ import { AG_GRID_VERSION } from '../../../agGrid/agGridModules';
14
+ const adaptableVersion = ADAPTABLE_VERSION;
15
+ const agGridVersion = AG_GRID_VERSION;
14
16
  export const GridInfoPopup = (props) => {
15
17
  const api = props.api;
16
18
  const CreateGridSummaries = (colItems) => {
@@ -33,7 +35,10 @@ export const GridInfoPopup = (props) => {
33
35
  : null;
34
36
  const selectedRowInfo = api.gridApi.getSelectedRowInfo();
35
37
  if (api.optionsApi.getUserInterfaceOptions()?.showAdapTableVersion) {
36
- returnRows.push(createReadOnlyColItem(colItems, 'AdapTable Version', version));
38
+ returnRows.push(createReadOnlyColItem(colItems, 'AdapTable Version', adaptableVersion));
39
+ }
40
+ if (api.optionsApi.getUserInterfaceOptions()?.showAgGridVersion) {
41
+ returnRows.push(createReadOnlyColItem(colItems, 'AG Grid Version', agGridVersion));
37
42
  }
38
43
  returnRows.push(createReadOnlyColItem(colItems, 'Sorted Columns', ArrayExtensions.IsNotNullOrEmpty(sorts) ? sorts.join('; ') : 'None'));
39
44
  returnRows.push(createReadOnlyColItem(colItems, 'Column Filters', columnFilterDescription));
@@ -15,7 +15,7 @@ import { SortSection, SortSectionSummary } from './sections/SortSection';
15
15
  import { FilterSection, FilterSectionSummary, isColumnFiltersValid, } from './sections/FilterSection';
16
16
  import { GridFilterSection, GridFilterSectionSummary, isGridFiltersValid, } from './sections/GridFilterSection';
17
17
  import { areSummaryRowsValid, RowSummarySection, RowSummarySectionSummary, } from './sections/RowSummarySection';
18
- import { WEIGHTED_AVERAGE_AGGREATED_FUNCTION } from '../../../PredefinedConfig/Common/RowSummary';
18
+ import { WEIGHTED_AVERAGE_AGGREGATED_FUNCTION } from '../../../PredefinedConfig/Common/RowSummary';
19
19
  import { isPivotLayout } from '../../../Utilities/isPivotLayout';
20
20
  import { PivotRowGroupingSection, PivotRowGroupingSectionSummary, } from './sections/PivotRowGroupingSection';
21
21
  import { PivotAggregationsSection, PivotAggregationsSectionSummary, } from './sections/PivotAggregationsSection';
@@ -208,7 +208,7 @@ export const LayoutWizard = (props) => {
208
208
  ColumnsMap: Object.entries(rowSummary.ColumnsMap).reduce((acc, [columnId, aggFunc]) => {
209
209
  if (
210
210
  // see if it is weighted avg
211
- aggFunc === WEIGHTED_AVERAGE_AGGREATED_FUNCTION &&
211
+ aggFunc === WEIGHTED_AVERAGE_AGGREGATED_FUNCTION &&
212
212
  // see if we have a weight in the agg columns
213
213
  aggColsMap[columnId] &&
214
214
  (typeof aggColsMap[columnId] !== 'object' ||
@@ -7,7 +7,7 @@ import { Select } from '../../../../components/Select';
7
7
  import SimpleButton from '../../../../components/SimpleButton';
8
8
  import { Tabs } from '../../../../components/Tabs';
9
9
  import { Tag } from '../../../../components/Tag';
10
- import { summarySupportedExpressions, WEIGHTED_AVERAGE_AGGREATED_FUNCTION, } from '../../../../PredefinedConfig/Common/RowSummary';
10
+ import { summarySupportedExpressions, WEIGHTED_AVERAGE_AGGREGATED_FUNCTION, } from '../../../../PredefinedConfig/Common/RowSummary';
11
11
  import { mapColumnDataTypeToExpressionFunctionType } from '../../../../Utilities/adaptableQlUtils';
12
12
  import { LayoutModuleId } from '../../../../Utilities/Constants/ModuleConstants';
13
13
  import { aggregatedExpressionFunctions } from '../../../../Utilities/ExpressionFunctions/aggregatedScalarExpressionFunctions';
@@ -169,7 +169,7 @@ const RowSummaryEditor = React.memo(({ rowSummary, onChange, availableScalarExpr
169
169
  aggregation.weightedColumnId) {
170
170
  expressionOptions.push({
171
171
  label: 'WEIGHTERD_AVG',
172
- value: WEIGHTED_AVERAGE_AGGREATED_FUNCTION,
172
+ value: WEIGHTED_AVERAGE_AGGREGATED_FUNCTION,
173
173
  });
174
174
  }
175
175
  const expression = rowSummary.ColumnsMap[column.columnId];
@@ -1,10 +1,12 @@
1
1
  import * as React from 'react';
2
+ import { ExportDestinationType } from '../../../../AdaptableOptions/ExportOptions';
2
3
  import { Report, ReportFormatType, ReportSchedule } from '../../../../PredefinedConfig/ExportState';
3
4
  interface ReportScheduleProps {
4
5
  report: ReportSchedule;
5
6
  onChange: (reminder: ReportSchedule) => void;
6
7
  allReports: Report[];
7
8
  allFormats: ReportFormatType[];
9
+ allDestinations: ExportDestinationType[];
8
10
  }
9
11
  export declare const ScheduleSettingsReport: React.FunctionComponent<ReportScheduleProps>;
10
12
  export {};
@@ -18,14 +18,24 @@ export const ScheduleSettingsReport = (props) => {
18
18
  });
19
19
  },
20
20
  }));
21
+ const destinationOptions = props.allDestinations.map((destination) => ({
22
+ label: destination,
23
+ value: destination,
24
+ onClick: () => {
25
+ props.onChange({
26
+ ...props.report,
27
+ ExportDestination: destination,
28
+ });
29
+ },
30
+ }));
21
31
  return (React.createElement(Box, { "data-name": "schedule-settings-report" },
22
32
  React.createElement(Tabs, { autoFocus: false, mb: 3 },
23
- React.createElement(Tabs.Tab, null, "Report Schedule Settings"),
33
+ React.createElement(Tabs.Tab, null, "Report Settings"),
24
34
  React.createElement(Tabs.Content, null,
25
35
  React.createElement(FormLayout, null,
26
36
  React.createElement(FormRow, { label: "Export" },
27
37
  React.createElement(Box, { maxWidth: 300 },
28
- React.createElement(Select, { "data-name": "select-export", options: reportOptions, value: props?.report?.ReportName, placeholder: "Select Export", onChange: (value) => props.onChange({
38
+ React.createElement(Select, { "data-name": "select-report", options: reportOptions, value: props?.report?.ReportName, placeholder: "Select Export", onChange: (value) => props.onChange({
29
39
  ...props.report,
30
40
  ReportName: value,
31
41
  }) }))),
@@ -34,5 +44,11 @@ export const ScheduleSettingsReport = (props) => {
34
44
  React.createElement(Select, { "data-name": "select-format", options: formatOptions, value: props?.report?.ReportFormat, placeholder: "Select Format", onChange: (value) => props.onChange({
35
45
  ...props.report,
36
46
  ReportFormat: value,
47
+ }) }))),
48
+ React.createElement(FormRow, { label: "Destination" },
49
+ React.createElement(Box, { maxWidth: 300 },
50
+ React.createElement(Select, { "data-name": "select-destination", options: destinationOptions, value: props?.report?.ExportDestination, placeholder: "Select Format", onChange: (value) => props.onChange({
51
+ ...props.report,
52
+ ExportDestination: value,
37
53
  }) }))))))));
38
54
  };
@@ -39,6 +39,10 @@ export const getScheduleSettingsValues = (data) => {
39
39
  label: 'Report Format',
40
40
  value: report?.ReportFormat || 'Not Specified',
41
41
  },
42
+ {
43
+ label: 'Export Destination',
44
+ value: report?.ExportDestination || 'Download',
45
+ },
42
46
  ];
43
47
  }
44
48
  if (data.ScheduleType === ScheduleType.ipushpull) {
@@ -13,7 +13,8 @@ export const ScheduleSettingsWizard = (props) => {
13
13
  }
14
14
  if (data?.ScheduleType === ScheduleType.Report) {
15
15
  const allFormats = api.exportApi.getAvailableSystemFormats();
16
- return (React.createElement(ScheduleSettingsReport, { allReports: allReports ?? [], allFormats: allFormats ?? [], report: data, onChange: props.onChange }));
16
+ const allDestinations = api.exportApi.getAllExportDestinations();
17
+ return (React.createElement(ScheduleSettingsReport, { allReports: allReports ?? [], allFormats: allFormats ?? [], allDestinations: allDestinations ?? [], report: data, onChange: props.onChange }));
17
18
  }
18
19
  if (data?.ScheduleType === ScheduleType.ipushpull) {
19
20
  const ippApi = api.pluginsApi.getipushpullPluginApi();
@@ -1,6 +1,5 @@
1
1
  import * as React from 'react';
2
- import { StyledColumn } from '../../../types';
3
- export interface StyledColumnSparklineSettingsSectionProps {
2
+ import type { StyledColumn } from '../../../types';
3
+ export declare const StyledColumnSparklineSettingsSection: React.FC<{
4
4
  onChange: (data: StyledColumn) => void;
5
- }
6
- export declare const StyledColumnSparklineSettingsSection: React.FunctionComponent<StyledColumnSparklineSettingsSectionProps>;
5
+ }>;