@adaptabletools/adaptable 20.0.0-canary.20 → 20.0.0-canary.22
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.
- package/package.json +1 -1
- package/src/AdaptableOptions/DefaultAdaptableOptions.js +1 -1
- package/src/AdaptableOptions/ExportOptions.d.ts +24 -48
- package/src/Api/ExportApi.d.ts +3 -12
- package/src/Api/Implementation/ExportApiImpl.d.ts +3 -4
- package/src/Api/Implementation/ExportApiImpl.js +52 -48
- package/src/Api/Internal/ExportInternalApi.d.ts +2 -3
- package/src/Api/Internal/ExportInternalApi.js +23 -31
- package/src/Api/LayoutApi.d.ts +1 -1
- package/src/Utilities/Constants/GeneralConstants.d.ts +1 -0
- package/src/Utilities/Constants/GeneralConstants.js +1 -0
- package/src/View/Export/ExportViewPanel.js +1 -1
- package/src/agGrid/AgGridExportAdapter.js +4 -2
- package/src/env.js +2 -2
- package/src/metamodel/adaptable.metamodel.d.ts +0 -26
- package/src/metamodel/adaptable.metamodel.js +1 -1
- package/src/types.d.ts +1 -1
- package/tsconfig.esm.tsbuildinfo +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adaptabletools/adaptable",
|
|
3
|
-
"version": "20.0.0-canary.
|
|
3
|
+
"version": "20.0.0-canary.22",
|
|
4
4
|
"description": "Powerful data-agnostic HTML5 AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"web-components",
|
|
@@ -94,7 +94,7 @@ const DefaultAdaptableOptions = {
|
|
|
94
94
|
exportDataFormat: 'rawValue',
|
|
95
95
|
exportDateFormat: undefined,
|
|
96
96
|
customDestinations: undefined,
|
|
97
|
-
|
|
97
|
+
processExport: undefined,
|
|
98
98
|
appendFileTimestamp: false,
|
|
99
99
|
systemReportNames: SYSTEM_REPORT_NAMES,
|
|
100
100
|
systemReportFormats: SYSTEM_REPORT_FORMATS,
|
|
@@ -25,10 +25,6 @@ export interface ExportOptions<TData = any> {
|
|
|
25
25
|
* User-provided Report Destinations (in addition to those shipped in AdapTable)
|
|
26
26
|
*/
|
|
27
27
|
customDestinations?: CustomDestination[];
|
|
28
|
-
/**
|
|
29
|
-
* Reports generated entirely by users (and not evaluated AdapTable)
|
|
30
|
-
*/
|
|
31
|
-
externalReports?: ExternalReport[];
|
|
32
28
|
/**
|
|
33
29
|
* System Reports to use; leave blank for all, empty array for none
|
|
34
30
|
*
|
|
@@ -67,10 +63,6 @@ export interface ExportOptions<TData = any> {
|
|
|
67
63
|
* @defaultValue true
|
|
68
64
|
*/
|
|
69
65
|
isColumnExportable?: (context: AdaptableColumnContext) => boolean;
|
|
70
|
-
/**
|
|
71
|
-
* Function invoked before a Report is run, enabling users to preload the data before it is exported
|
|
72
|
-
*/
|
|
73
|
-
preProcessExport?: (preProcessExportContext: PreProcessExportContext) => boolean | Promise<ReportData | boolean>;
|
|
74
66
|
/**
|
|
75
67
|
* Separator for CSV exports
|
|
76
68
|
*
|
|
@@ -87,6 +79,15 @@ export interface ExportOptions<TData = any> {
|
|
|
87
79
|
* Function to provide the Detail Rows when exporting in Master-Detail grids. This function will be invoked for each master row node.
|
|
88
80
|
*/
|
|
89
81
|
getDetailRows?: (context: GetDetailRowsContext<TData>) => CsvDetailRow[] | ExcelDetailRow[] | undefined;
|
|
82
|
+
/**
|
|
83
|
+
* Provides custom handling of the Export process before the default export is executed.
|
|
84
|
+
*
|
|
85
|
+
* @returns A Promise resolving to one of:
|
|
86
|
+
* - `true` - Continue with the default export process
|
|
87
|
+
* - `false` - Cancel the export process
|
|
88
|
+
* - `ExportResultData` - Custom export data (useful for server-side data)
|
|
89
|
+
*/
|
|
90
|
+
processExport?: (processExportContext: ProcessExportContext) => Promise<ExportResultData | boolean>;
|
|
90
91
|
}
|
|
91
92
|
/**
|
|
92
93
|
* Detail Row Data in a CSV format; technically an array of AG Grid {@link https://www.ag-grid.com/javascript-data-grid/csv-export/#csvcell | CsvCell}s
|
|
@@ -129,43 +130,10 @@ export interface GetDetailRowsContext<TData = any> extends BaseExportContext {
|
|
|
129
130
|
*/
|
|
130
131
|
createCellExcel: (cellContent: any, cellType: ExcelDataType) => ExcelCell;
|
|
131
132
|
}
|
|
132
|
-
/**
|
|
133
|
-
* Context provided to `ExportOptions.processExport()` callback used when pre-processing Export
|
|
134
|
-
*/
|
|
135
|
-
export interface PreProcessExportContext extends BaseContext {
|
|
136
|
-
/**
|
|
137
|
-
* Report being exported
|
|
138
|
-
*/
|
|
139
|
-
report: Report;
|
|
140
|
-
/**
|
|
141
|
-
* Returns Columns to export based on Report's `ReportColumnScope`
|
|
142
|
-
* @param includePrimaryKey - whether to include the primary key column (defaults to `false`)
|
|
143
|
-
*/
|
|
144
|
-
getReportColumns: (includePrimaryKey?: boolean) => AdaptableColumn[];
|
|
145
|
-
/**
|
|
146
|
-
* Returns row data which would typically be exported based on the Report's `ReportRowScope`
|
|
147
|
-
* @param reportColumns - the columns to include in the report
|
|
148
|
-
* @param includePrimaryKey - whether to include the primary key column (defaults to `false`)
|
|
149
|
-
*/
|
|
150
|
-
getReportRowData: (reportColumns: AdaptableColumn[], includePrimaryKey?: boolean) => Record<string, any>[];
|
|
151
|
-
}
|
|
152
133
|
/**
|
|
153
134
|
* Format of exported Data - 'rawValue' or 'formattedValue'
|
|
154
135
|
*/
|
|
155
136
|
export type DataFormatType = 'rawValue' | 'formattedValue';
|
|
156
|
-
/**
|
|
157
|
-
* Defines a Report where all the data is provided entirely by the user
|
|
158
|
-
*/
|
|
159
|
-
export interface ExternalReport {
|
|
160
|
-
/**
|
|
161
|
-
* Name of the Report
|
|
162
|
-
*/
|
|
163
|
-
name: string;
|
|
164
|
-
/**
|
|
165
|
-
* Function invoked to return the data (in the form of a `ExportResultData` object)
|
|
166
|
-
*/
|
|
167
|
-
onExport: (context: ExternalReportContext) => Promise<ExportResultData>;
|
|
168
|
-
}
|
|
169
137
|
/**
|
|
170
138
|
* Defines a custom Export destination
|
|
171
139
|
*/
|
|
@@ -226,7 +194,6 @@ export type SystemExportDestination =
|
|
|
226
194
|
*/
|
|
227
195
|
| 'Clipboard';
|
|
228
196
|
export type ExportDestinationType = TypeHint<string, SystemExportDestination>;
|
|
229
|
-
export type ExportDestination = SystemExportDestination | CustomDestination;
|
|
230
197
|
/**
|
|
231
198
|
* Context information available in all Export-related functions
|
|
232
199
|
*/
|
|
@@ -235,6 +202,10 @@ export interface BaseExportContext extends BaseContext {
|
|
|
235
202
|
* Name of the Report being run
|
|
236
203
|
*/
|
|
237
204
|
reportName: ReportNameType;
|
|
205
|
+
/**
|
|
206
|
+
* The Report Configuration being run
|
|
207
|
+
*/
|
|
208
|
+
report: Report;
|
|
238
209
|
/**
|
|
239
210
|
* Format of the Report being run
|
|
240
211
|
*/
|
|
@@ -248,18 +219,23 @@ export interface BaseExportContext extends BaseContext {
|
|
|
248
219
|
* Report Context sent when using Custom Export Destinations
|
|
249
220
|
*/
|
|
250
221
|
export interface ReportContext extends BaseExportContext {
|
|
251
|
-
/**
|
|
252
|
-
* Definition of Report being Run
|
|
253
|
-
*/
|
|
254
|
-
report: Report;
|
|
255
222
|
/**
|
|
256
223
|
* Export Data for the Report
|
|
257
224
|
*/
|
|
258
225
|
reportData: ExportResultData;
|
|
259
226
|
}
|
|
260
|
-
export interface
|
|
261
|
-
|
|
227
|
+
export interface ProcessExportContext extends BaseExportContext {
|
|
228
|
+
/**
|
|
229
|
+
* Returns Columns to export based on Report's `ReportColumnScope`
|
|
230
|
+
*/
|
|
231
|
+
getReportColumns: () => ReportColumn[];
|
|
232
|
+
/**
|
|
233
|
+
* Converts the Report Data to Excel format
|
|
234
|
+
*/
|
|
262
235
|
convertToExcel: (reportData: ReportData) => Blob;
|
|
236
|
+
/**
|
|
237
|
+
* Converts the Report Data to CSV format
|
|
238
|
+
*/
|
|
263
239
|
convertToCsv: (reportData: ReportData) => string;
|
|
264
240
|
}
|
|
265
241
|
/**
|
package/src/Api/ExportApi.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AdaptableForm } from '../PredefinedConfig/Common/AdaptableForm';
|
|
2
2
|
import { ExportState, Report, ReportFormatType, ReportNameType, SystemReportFormat, SystemReportName } from '../PredefinedConfig/ExportState';
|
|
3
|
-
import { CustomDestination, ExportDestinationType, ExportFormContext, ExportResultData,
|
|
3
|
+
import { CustomDestination, ExportDestinationType, ExportFormContext, ExportResultData, SystemExportDestination } from '../AdaptableOptions/ExportOptions';
|
|
4
4
|
import { AdaptableColumn } from '../types';
|
|
5
5
|
/**
|
|
6
6
|
* Provides run-time access to the Export Module and Report state
|
|
@@ -44,7 +44,7 @@ export interface ExportApi {
|
|
|
44
44
|
*/
|
|
45
45
|
getReportById(id: Report['Uuid']): Report;
|
|
46
46
|
/**
|
|
47
|
-
* Retrieves all available Reports - System
|
|
47
|
+
* Retrieves all available Reports - System and User-created Reports
|
|
48
48
|
* @returns reports
|
|
49
49
|
*/
|
|
50
50
|
getAllReports(): Report[];
|
|
@@ -52,10 +52,6 @@ export interface ExportApi {
|
|
|
52
52
|
* Retrieves all Custom Reports that have been created by the User
|
|
53
53
|
*/
|
|
54
54
|
getCustomReports(): Report[];
|
|
55
|
-
/**
|
|
56
|
-
* Returns all External Reports that have been provided to Export Options
|
|
57
|
-
*/
|
|
58
|
-
getExternalReports(): ExternalReport[];
|
|
59
55
|
/**
|
|
60
56
|
* Retrieves all Report Formats that are available
|
|
61
57
|
*/
|
|
@@ -134,11 +130,6 @@ export interface ExportApi {
|
|
|
134
130
|
* @param destination Custom Destination for which to get Form Def
|
|
135
131
|
*/
|
|
136
132
|
getExportDestinationForm(destinationName: ExportDestinationType): AdaptableForm<ExportFormContext> | undefined;
|
|
137
|
-
/**
|
|
138
|
-
* Is given Report user-generated
|
|
139
|
-
* @param report Report to Check
|
|
140
|
-
*/
|
|
141
|
-
isExternalReport(report: Report): boolean;
|
|
142
133
|
/**
|
|
143
134
|
* Returns whether the given column is exportable
|
|
144
135
|
*/
|
|
@@ -149,7 +140,7 @@ export interface ExportApi {
|
|
|
149
140
|
* @param format - format of the report
|
|
150
141
|
* @param destination - destination to export to
|
|
151
142
|
*/
|
|
152
|
-
exportReport(reportName: ReportNameType, format: ReportFormatType, destination?: ExportDestinationType): void
|
|
143
|
+
exportReport(reportName: ReportNameType, format: ReportFormatType, destination?: ExportDestinationType): Promise<void>;
|
|
153
144
|
/**
|
|
154
145
|
* Gets the data for the Report with the given Name in the given Format
|
|
155
146
|
* @param reportName - name of the report
|
|
@@ -2,7 +2,7 @@ import { ExportApi } from '../ExportApi';
|
|
|
2
2
|
import { ExportState, Report, ReportFormatType, ReportNameType, SystemReportFormat, SystemReportName } from '../../PredefinedConfig/ExportState';
|
|
3
3
|
import { ApiBase } from './ApiBase';
|
|
4
4
|
import { AdaptableForm } from '../../PredefinedConfig/Common/AdaptableForm';
|
|
5
|
-
import { CustomDestination, ExportDestinationType, ExportFormContext, ExportResultData,
|
|
5
|
+
import { CustomDestination, ExportDestinationType, ExportFormContext, ExportResultData, SystemExportDestination } from '../../AdaptableOptions/ExportOptions';
|
|
6
6
|
import { IAdaptable } from '../../AdaptableInterfaces/IAdaptable';
|
|
7
7
|
import { ExportInternalApi } from '../Internal/ExportInternalApi';
|
|
8
8
|
import { AdaptableColumn } from '../../types';
|
|
@@ -34,10 +34,9 @@ export declare class ExportApiImpl extends ApiBase implements ExportApi {
|
|
|
34
34
|
updateReport(report: Report): Report;
|
|
35
35
|
updateReports(reports: Report[]): Report[];
|
|
36
36
|
getCustomReports(): Report[];
|
|
37
|
-
getExternalReports(): ExternalReport[];
|
|
38
|
-
isExternalReport(report: Report): boolean;
|
|
39
37
|
isColumnExportable(adaptableColumn: AdaptableColumn): boolean;
|
|
40
38
|
getSupportedExportDestinations(reportFormat: ReportFormatType): ExportDestinationType[];
|
|
41
|
-
exportReport(reportName: ReportNameType, format: ReportFormatType, destination?: ExportDestinationType): void
|
|
39
|
+
exportReport(reportName: ReportNameType, format: ReportFormatType, destination?: ExportDestinationType): Promise<void>;
|
|
42
40
|
getReportData(reportName: ReportNameType, format: ReportFormatType): Promise<ExportResultData>;
|
|
41
|
+
private processExport;
|
|
43
42
|
}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import * as ExportRedux from '../../Redux/ActionsReducers/ExportRedux';
|
|
2
2
|
import { ApiBase } from './ApiBase';
|
|
3
3
|
import * as ModuleConstants from '../../Utilities/Constants/ModuleConstants';
|
|
4
|
-
import ObjectFactory from '../../Utilities/ObjectFactory';
|
|
5
|
-
import ArrayExtensions from '../../Utilities/Extensions/ArrayExtensions';
|
|
6
4
|
import { ExportInternalApi } from '../Internal/ExportInternalApi';
|
|
7
5
|
import { EMPTY_STRING } from '../../Utilities/Constants/GeneralConstants';
|
|
8
6
|
export class ExportApiImpl extends ApiBase {
|
|
@@ -29,10 +27,6 @@ export class ExportApiImpl extends ApiBase {
|
|
|
29
27
|
if (customReport) {
|
|
30
28
|
return customReport;
|
|
31
29
|
}
|
|
32
|
-
const externalReport = this.getExternalReports()?.find((r) => r.name == reportName);
|
|
33
|
-
if (externalReport) {
|
|
34
|
-
return ObjectFactory.CreateExternalReport(externalReport.name);
|
|
35
|
-
}
|
|
36
30
|
}
|
|
37
31
|
getReportById(id) {
|
|
38
32
|
return this.getAllReports()?.find((report) => report.Uuid === id);
|
|
@@ -74,12 +68,6 @@ export class ExportApiImpl extends ApiBase {
|
|
|
74
68
|
const reports = this.getAvailableSystemReports()
|
|
75
69
|
.map((s) => this.getReportByName(s))
|
|
76
70
|
.concat(this.getExportState().Reports);
|
|
77
|
-
const externalReports = this.getExternalReports();
|
|
78
|
-
if (ArrayExtensions.IsNotNullOrEmpty(externalReports)) {
|
|
79
|
-
reports.push(...externalReports.map((c) => {
|
|
80
|
-
return ObjectFactory.CreateExternalReport(c.name);
|
|
81
|
-
}));
|
|
82
|
-
}
|
|
83
71
|
return reports;
|
|
84
72
|
}
|
|
85
73
|
selectReport(reportName) {
|
|
@@ -126,12 +114,6 @@ export class ExportApiImpl extends ApiBase {
|
|
|
126
114
|
getCustomReports() {
|
|
127
115
|
return this.getExportState().Reports ?? [];
|
|
128
116
|
}
|
|
129
|
-
getExternalReports() {
|
|
130
|
-
return this.getExportOptions().externalReports ?? [];
|
|
131
|
-
}
|
|
132
|
-
isExternalReport(report) {
|
|
133
|
-
return this.getExternalReports()?.find((cr) => cr.name == report.Name) != null;
|
|
134
|
-
}
|
|
135
117
|
isColumnExportable(adaptableColumn) {
|
|
136
118
|
const isExportableFn = this.getExportOptions().isColumnExportable;
|
|
137
119
|
if (typeof isExportableFn === 'function') {
|
|
@@ -157,51 +139,73 @@ export class ExportApiImpl extends ApiBase {
|
|
|
157
139
|
return true;
|
|
158
140
|
});
|
|
159
141
|
}
|
|
160
|
-
exportReport(reportName, format, destination = 'Download') {
|
|
142
|
+
async exportReport(reportName, format, destination = 'Download') {
|
|
161
143
|
let report = this.getReportByName(reportName);
|
|
162
|
-
if (this.checkItemExists(report, reportName, 'Report')) {
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
return;
|
|
176
|
-
}
|
|
177
|
-
this._adaptable.agGridExportAdapter
|
|
178
|
-
.exportData({
|
|
144
|
+
if (!this.checkItemExists(report, reportName, 'Report')) {
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
this.logInfo(`Start Export of ${reportName} in format ${format} to ${destination}`);
|
|
148
|
+
const processExportResult = await this.processExport(report, format, destination);
|
|
149
|
+
// if FALSE, cancel export
|
|
150
|
+
if (!processExportResult) {
|
|
151
|
+
this.logInfo(`Cancel Export of ${reportName}`);
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
// if TRUE, continue with standard export
|
|
155
|
+
if (processExportResult === true) {
|
|
156
|
+
const exportedReport = await this._adaptable.agGridExportAdapter.exportData({
|
|
179
157
|
report,
|
|
180
158
|
format,
|
|
181
159
|
destination,
|
|
182
160
|
showProgressIndicator: true,
|
|
183
|
-
})
|
|
184
|
-
.then((reportResult) => {
|
|
185
|
-
if (destination === 'Download' &&
|
|
186
|
-
(format === 'Excel' || format === 'VisualExcel' || format === 'Csv')) {
|
|
187
|
-
return;
|
|
188
|
-
}
|
|
189
|
-
this.internalApi.sendReportToDestination(reportResult, report, format, destination);
|
|
190
161
|
});
|
|
162
|
+
if (destination === 'Download' &&
|
|
163
|
+
(format === 'Excel' || format === 'VisualExcel' || format === 'Csv')) {
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
this.internalApi.sendReportToDestination(exportedReport, report, format, destination);
|
|
191
167
|
}
|
|
168
|
+
else {
|
|
169
|
+
// in this case the user has returned a custom ExportResultData object
|
|
170
|
+
const userProcessedExportResult = processExportResult;
|
|
171
|
+
if (!userProcessedExportResult) {
|
|
172
|
+
this.logWarn(`Processing of Export ${reportName} to ${destination} returned null or undefined`);
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
this.internalApi.sendReportToDestination(userProcessedExportResult, report, format, destination);
|
|
176
|
+
}
|
|
177
|
+
this.logInfo(`Finished Export of ${reportName} in format ${format} to ${destination}`);
|
|
192
178
|
}
|
|
193
179
|
async getReportData(reportName, format) {
|
|
194
180
|
let report = this.getReportByName(reportName);
|
|
195
|
-
if (this.checkItemExists(report, reportName, 'Report')) {
|
|
196
|
-
|
|
197
|
-
|
|
181
|
+
if (!this.checkItemExists(report, reportName, 'Report')) {
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
this.logInfo(`Start getting Report Data for ${reportName} in format ${format}`);
|
|
185
|
+
const processExportResult = await this.processExport(report, format, 'Clipboard');
|
|
186
|
+
let reportData;
|
|
187
|
+
// handle Export processing
|
|
188
|
+
if (typeof processExportResult?.type === 'string') {
|
|
189
|
+
reportData = processExportResult;
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
reportData = await this._adaptable.agGridExportAdapter.exportData({
|
|
198
193
|
report,
|
|
199
194
|
format,
|
|
200
195
|
destination: 'Clipboard',
|
|
201
196
|
showProgressIndicator: false,
|
|
202
197
|
});
|
|
203
|
-
this.logInfo(`Finished getting Report Data for ${reportName} in format ${format}`);
|
|
204
|
-
return reportData;
|
|
205
198
|
}
|
|
199
|
+
this.logInfo(`Finished getting Report Data for ${reportName} in format ${format}`);
|
|
200
|
+
return reportData;
|
|
201
|
+
}
|
|
202
|
+
async processExport(report, format, destination) {
|
|
203
|
+
const processExportFn = this.getExportOptions().processExport;
|
|
204
|
+
if (!processExportFn) {
|
|
205
|
+
return true;
|
|
206
|
+
}
|
|
207
|
+
this.logInfo(`Process Export of ${report.Name} in format ${format} to ${destination}`);
|
|
208
|
+
const processExportContext = this.internalApi.buildProcessExportContext(report, format, destination);
|
|
209
|
+
return processExportFn(processExportContext);
|
|
206
210
|
}
|
|
207
211
|
}
|
|
@@ -3,7 +3,7 @@ import { CellDataChangedInfo } from '../../PredefinedConfig/Common/CellDataChang
|
|
|
3
3
|
import { Report, ReportData, ReportFormatType, ReportNameType, SystemReportName } from '../../PredefinedConfig/ExportState';
|
|
4
4
|
import { CsvCell, ExcelCell, ExcelDataType, IRowNode } from 'ag-grid-enterprise';
|
|
5
5
|
import { AdaptableColumn, AdaptableColumnDataType } from '../../PredefinedConfig/Common/AdaptableColumn';
|
|
6
|
-
import { BaseExportContext, DataFormatType, ExportDestinationType, ExportResultData } from '../../AdaptableOptions/ExportOptions';
|
|
6
|
+
import { BaseExportContext, DataFormatType, ExportDestinationType, ExportResultData, ProcessExportContext } from '../../AdaptableOptions/ExportOptions';
|
|
7
7
|
export declare class ExportInternalApi extends ApiBase {
|
|
8
8
|
/**
|
|
9
9
|
* Value Items for Report Name Selection
|
|
@@ -34,8 +34,7 @@ export declare class ExportInternalApi extends ApiBase {
|
|
|
34
34
|
createCellCsv(cellContent: any): CsvCell;
|
|
35
35
|
createCellExcel(cellContent: any, cellType: ExcelDataType): ExcelCell;
|
|
36
36
|
createCellHeader(cellContent: any): ExcelCell;
|
|
37
|
-
|
|
38
|
-
private buildGridReportColumns;
|
|
37
|
+
buildProcessExportContext(report: Report, format: ReportFormatType, destination: ExportDestinationType): ProcessExportContext;
|
|
39
38
|
private buildExcelConverter;
|
|
40
39
|
private buildCsvConverter;
|
|
41
40
|
private executeGridExport;
|
|
@@ -21,10 +21,6 @@ export class ExportInternalApi extends ApiBase {
|
|
|
21
21
|
if (report.Name == 'All Data') {
|
|
22
22
|
return true;
|
|
23
23
|
}
|
|
24
|
-
// if its a Custom Report then the User has to run it so we just ignore completely
|
|
25
|
-
if (this.getExportApi().isExternalReport(report)) {
|
|
26
|
-
return false;
|
|
27
|
-
}
|
|
28
24
|
// Start with the DataChanged Column and go through all possibilities
|
|
29
25
|
switch (report.ReportColumnScope) {
|
|
30
26
|
case 'AllColumns':
|
|
@@ -168,9 +164,6 @@ export class ExportInternalApi extends ApiBase {
|
|
|
168
164
|
return true;
|
|
169
165
|
}
|
|
170
166
|
getReportColumnScopeShortDescription(report) {
|
|
171
|
-
if (this.getAdaptableApi().exportApi.isExternalReport(report)) {
|
|
172
|
-
return ['[Custom Columns]'];
|
|
173
|
-
}
|
|
174
167
|
switch (report.ReportColumnScope) {
|
|
175
168
|
case 'AllColumns':
|
|
176
169
|
return ['[All Columns]'];
|
|
@@ -186,9 +179,6 @@ export class ExportInternalApi extends ApiBase {
|
|
|
186
179
|
}
|
|
187
180
|
}
|
|
188
181
|
getReportColumnScopeLongDescription(report) {
|
|
189
|
-
if (this.getAdaptableApi().exportApi.isExternalReport(report)) {
|
|
190
|
-
return '[Custom Columns]';
|
|
191
|
-
}
|
|
192
182
|
switch (report.ReportColumnScope) {
|
|
193
183
|
case 'AllColumns':
|
|
194
184
|
return '[All Columns]';
|
|
@@ -201,9 +191,6 @@ export class ExportInternalApi extends ApiBase {
|
|
|
201
191
|
}
|
|
202
192
|
}
|
|
203
193
|
getReportExpressionDescription(report, cols) {
|
|
204
|
-
if (this.getAdaptableApi().exportApi.isExternalReport(report)) {
|
|
205
|
-
return '[Custom Data]';
|
|
206
|
-
}
|
|
207
194
|
if (this.isSystemReport(report.Name)) {
|
|
208
195
|
return `[${report.Name}]`;
|
|
209
196
|
}
|
|
@@ -352,8 +339,10 @@ export class ExportInternalApi extends ApiBase {
|
|
|
352
339
|
}
|
|
353
340
|
}
|
|
354
341
|
buildBaseExportContext(reportName, reportFormat, exportDestination) {
|
|
342
|
+
const report = this.getExportApi().getReportByName(reportName);
|
|
355
343
|
return {
|
|
356
344
|
...this.getAdaptableInternalApi().buildBaseContext(),
|
|
345
|
+
report,
|
|
357
346
|
reportName,
|
|
358
347
|
reportFormat,
|
|
359
348
|
exportDestination,
|
|
@@ -382,23 +371,21 @@ export class ExportInternalApi extends ApiBase {
|
|
|
382
371
|
},
|
|
383
372
|
};
|
|
384
373
|
}
|
|
385
|
-
|
|
386
|
-
const
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
return undefined;
|
|
392
|
-
}
|
|
393
|
-
return externalReport.onExport({
|
|
394
|
-
...this.buildBaseExportContext(externalReportName, reportFormat, exportDestination),
|
|
395
|
-
convertToExcel: this.buildExcelConverter(externalReportName, reportFormat, exportDestination),
|
|
396
|
-
convertToCsv: this.buildCsvConverter(externalReportName, reportFormat, exportDestination),
|
|
397
|
-
getGridReportColumns: this.buildGridReportColumns(),
|
|
374
|
+
buildProcessExportContext(report, format, destination) {
|
|
375
|
+
const { exportContext } = this._adaptable.agGridExportAdapter.buildExportProcessData({
|
|
376
|
+
report,
|
|
377
|
+
format,
|
|
378
|
+
destination,
|
|
379
|
+
showProgressIndicator: false,
|
|
398
380
|
});
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
381
|
+
return {
|
|
382
|
+
...this.buildBaseExportContext(report.Name, format, destination),
|
|
383
|
+
convertToExcel: this.buildExcelConverter(report.Name, format, destination),
|
|
384
|
+
convertToCsv: this.buildCsvConverter(report.Name, format, destination),
|
|
385
|
+
getReportColumns: () => exportContext.exportedColumnIds
|
|
386
|
+
.map((colId) => this.getAdaptableApi().columnApi.getColumnWithColumnId(colId, false))
|
|
387
|
+
.filter(Boolean),
|
|
388
|
+
};
|
|
402
389
|
}
|
|
403
390
|
buildExcelConverter(externalReportName, reportFormat, exportDestination) {
|
|
404
391
|
return (reportData) => {
|
|
@@ -419,9 +406,14 @@ export class ExportInternalApi extends ApiBase {
|
|
|
419
406
|
colId: col.columnId,
|
|
420
407
|
field: col.field ?? col.columnId,
|
|
421
408
|
headerName: col.friendlyName ?? col.columnId,
|
|
422
|
-
|
|
409
|
+
cellDataType: col.dataType ?? 'text',
|
|
423
410
|
}));
|
|
424
|
-
const gridOptions = {
|
|
411
|
+
const gridOptions = {
|
|
412
|
+
columnDefs,
|
|
413
|
+
rowData: reportData.rows,
|
|
414
|
+
theme: this.getAgGridApi().getGridOption('theme'),
|
|
415
|
+
dataTypeDefinitions: this.getAgGridApi().getGridOption('dataTypeDefinitions'),
|
|
416
|
+
};
|
|
425
417
|
const gridParams = {
|
|
426
418
|
modules: this.getAdaptableApi()
|
|
427
419
|
.internalApi.getAdaptableInstance()
|
package/src/Api/LayoutApi.d.ts
CHANGED
|
@@ -176,7 +176,7 @@ export interface LayoutApi {
|
|
|
176
176
|
*/
|
|
177
177
|
addColumnToTableLayout(columnId: string, layoutName: string): void;
|
|
178
178
|
/**
|
|
179
|
-
* Adds a Column to Current Layout
|
|
179
|
+
* Adds a Column to Current (Table) Layout
|
|
180
180
|
* @param columnId Column to add
|
|
181
181
|
*/
|
|
182
182
|
addColumnToCurrentTableLayout(columnId: string): void;
|
|
@@ -22,6 +22,7 @@ export declare const HALF_SECOND: number;
|
|
|
22
22
|
export declare const QUARTER_SECOND: number;
|
|
23
23
|
export declare const GROUP_PATH_SEPARATOR: string;
|
|
24
24
|
export declare const AG_GRID_GROUPED_COLUMN: string;
|
|
25
|
+
export declare const AG_GRID_SELECTION_COLUMN: string;
|
|
25
26
|
export declare const AG_GRID_PIVOT_COLUMN: string;
|
|
26
27
|
export declare const AG_GRID_CHART_WINDOW = "AG Grid Window";
|
|
27
28
|
export declare const ADAPTABLE_FDC3_ACTION_COLUMN_FRIENDLY_NAME = "(FDC3ActionColumn)";
|
|
@@ -21,6 +21,7 @@ export const HALF_SECOND = 500;
|
|
|
21
21
|
export const QUARTER_SECOND = 250;
|
|
22
22
|
export const GROUP_PATH_SEPARATOR = '/';
|
|
23
23
|
export const AG_GRID_GROUPED_COLUMN = 'ag-Grid-AutoColumn';
|
|
24
|
+
export const AG_GRID_SELECTION_COLUMN = 'ag-Grid-SelectionColumn';
|
|
24
25
|
export const AG_GRID_PIVOT_COLUMN = 'pivot_';
|
|
25
26
|
export const AG_GRID_CHART_WINDOW = 'AG Grid Window';
|
|
26
27
|
export const ADAPTABLE_FDC3_ACTION_COLUMN_FRIENDLY_NAME = '(FDC3ActionColumn)';
|
|
@@ -35,7 +35,7 @@ export const ExportViewPanel = (props) => {
|
|
|
35
35
|
React.createElement(ButtonEdit, { onClick: () => dispatch(PopupRedux.PopupShowScreen(ModuleConstants.ExportModuleId, props.moduleInfo.Popup, {
|
|
36
36
|
action: 'Edit',
|
|
37
37
|
source: 'Toolbar',
|
|
38
|
-
})), tooltip: "Edit Report", className: `ab-${elementType}__Export__edit`, disabled: currentReport == null
|
|
38
|
+
})), tooltip: "Edit Report", className: `ab-${elementType}__Export__edit`, disabled: currentReport == null, accessLevel: accessLevel }),
|
|
39
39
|
React.createElement(ButtonNew, { variant: "text", className: `ab-${elementType}__Export__new`, tone: "neutral", children: null, onClick: () => dispatch(PopupRedux.PopupShowScreen(ModuleConstants.ExportModuleId, props.moduleInfo.Popup, {
|
|
40
40
|
action: 'New',
|
|
41
41
|
source: 'Toolbar',
|
|
@@ -6,7 +6,7 @@ import tinycolor from 'tinycolor2';
|
|
|
6
6
|
import StringExtensions from '../Utilities/Extensions/StringExtensions';
|
|
7
7
|
import { createUuid } from '../PredefinedConfig/Uuid';
|
|
8
8
|
import { inferSchema, initParser } from 'udsv';
|
|
9
|
-
import { AG_GRID_GROUPED_COLUMN } from '../Utilities/Constants/GeneralConstants';
|
|
9
|
+
import { AG_GRID_GROUPED_COLUMN, AG_GRID_SELECTION_COLUMN, } from '../Utilities/Constants/GeneralConstants';
|
|
10
10
|
export class AgGridExportAdapter {
|
|
11
11
|
constructor(_adaptableInstance) {
|
|
12
12
|
this._adaptableInstance = _adaptableInstance;
|
|
@@ -452,7 +452,9 @@ export class AgGridExportAdapter {
|
|
|
452
452
|
formatColumnsWithDisplayFormatMemo[columnId] = formatColumns;
|
|
453
453
|
return formatColumns;
|
|
454
454
|
};
|
|
455
|
-
const agGridDisplayedColumns = this.agGridApi
|
|
455
|
+
const agGridDisplayedColumns = this.agGridApi
|
|
456
|
+
.getAllDisplayedColumns()
|
|
457
|
+
.filter((agCol) => agCol.getId() !== AG_GRID_SELECTION_COLUMN);
|
|
456
458
|
const colDefs = agGridDisplayedColumns.map((column) => {
|
|
457
459
|
return column.getColDef();
|
|
458
460
|
});
|
package/src/env.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export default {
|
|
2
2
|
NEXT_PUBLIC_INFINITE_TABLE_LICENSE_KEY: "StartDate=2021-06-29|EndDate=2030-01-01|Owner=Adaptable|Type=distribution|TS=1624971462479|C=137829811,1004007071,2756196225,1839832928,3994409405,636616862" || '',
|
|
3
|
-
PUBLISH_TIMESTAMP:
|
|
4
|
-
VERSION: "20.0.0-canary.
|
|
3
|
+
PUBLISH_TIMESTAMP: 1742409282792 || Date.now(),
|
|
4
|
+
VERSION: "20.0.0-canary.22" || '--current-version--',
|
|
5
5
|
};
|
|
@@ -3206,16 +3206,6 @@ export declare const ADAPTABLE_METAMODEL: {
|
|
|
3206
3206
|
isOpt: boolean;
|
|
3207
3207
|
}[];
|
|
3208
3208
|
};
|
|
3209
|
-
ExternalReport: {
|
|
3210
|
-
name: string;
|
|
3211
|
-
kind: string;
|
|
3212
|
-
desc: string;
|
|
3213
|
-
props: {
|
|
3214
|
-
name: string;
|
|
3215
|
-
kind: string;
|
|
3216
|
-
desc: string;
|
|
3217
|
-
}[];
|
|
3218
|
-
};
|
|
3219
3209
|
FDC3ActionColumn: {
|
|
3220
3210
|
name: string;
|
|
3221
3211
|
kind: string;
|
|
@@ -4473,22 +4463,6 @@ export declare const ADAPTABLE_METAMODEL: {
|
|
|
4473
4463
|
kind: string;
|
|
4474
4464
|
desc: string;
|
|
4475
4465
|
};
|
|
4476
|
-
PreProcessExportContext: {
|
|
4477
|
-
name: string;
|
|
4478
|
-
kind: string;
|
|
4479
|
-
desc: string;
|
|
4480
|
-
props: ({
|
|
4481
|
-
name: string;
|
|
4482
|
-
kind: string;
|
|
4483
|
-
desc: string;
|
|
4484
|
-
ref?: undefined;
|
|
4485
|
-
} | {
|
|
4486
|
-
name: string;
|
|
4487
|
-
kind: string;
|
|
4488
|
-
desc: string;
|
|
4489
|
-
ref: string;
|
|
4490
|
-
})[];
|
|
4491
|
-
};
|
|
4492
4466
|
PreprocessRowDataContext: {
|
|
4493
4467
|
name: string;
|
|
4494
4468
|
kind: string;
|