1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 | "use strict";
|
8 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
9 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
10 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
11 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
12 | return c > 3 && r && Object.defineProperty(target, key, r), r;
|
13 | };
|
14 | var __metadata = (this && this.__metadata) || function (k, v) {
|
15 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
16 | };
|
17 | Object.defineProperty(exports, "__esModule", { value: true });
|
18 | var context_1 = require("./context/context");
|
19 | var columnController_1 = require("./columnController/columnController");
|
20 | var constants_1 = require("./constants");
|
21 | var utils_1 = require("./utils");
|
22 | var selectionController_1 = require("./selectionController");
|
23 | var gridOptionsWrapper_1 = require("./gridOptionsWrapper");
|
24 | var displayedGroupCreator_1 = require("./columnController/displayedGroupCreator");
|
25 | var balancedColumnTreeBuilder_1 = require("./columnController/balancedColumnTreeBuilder");
|
26 | var groupInstanceIdCreator_1 = require("./columnController/groupInstanceIdCreator");
|
27 | var columnGroup_1 = require("./entities/columnGroup");
|
28 | var pinnedRowModel_1 = require("./rowModels/pinnedRowModel");
|
29 | var BaseGridSerializingSession = (function () {
|
30 | function BaseGridSerializingSession(columnController, valueService, gridOptionsWrapper, processCellCallback, processHeaderCallback, cellAndHeaderEscaper) {
|
31 | this.columnController = columnController;
|
32 | this.valueService = valueService;
|
33 | this.gridOptionsWrapper = gridOptionsWrapper;
|
34 | this.processCellCallback = processCellCallback;
|
35 | this.processHeaderCallback = processHeaderCallback;
|
36 | this.cellAndHeaderEscaper = cellAndHeaderEscaper;
|
37 | }
|
38 | BaseGridSerializingSession.prototype.extractHeaderValue = function (column) {
|
39 | var nameForCol = this.getHeaderName(this.processHeaderCallback, column);
|
40 | if (nameForCol === null || nameForCol === undefined) {
|
41 | nameForCol = '';
|
42 | }
|
43 | return this.cellAndHeaderEscaper ? this.cellAndHeaderEscaper(nameForCol) : nameForCol;
|
44 | };
|
45 | BaseGridSerializingSession.prototype.extractRowCellValue = function (column, index, type, node) {
|
46 | var isRowGrouping = this.columnController.getRowGroupColumns().length > 0;
|
47 | var valueForCell;
|
48 | if (node.group && isRowGrouping && index === 0) {
|
49 | valueForCell = this.createValueForGroupNode(node);
|
50 | }
|
51 | else {
|
52 | valueForCell = this.valueService.getValue(column, node);
|
53 | }
|
54 | valueForCell = this.processCell(node, column, valueForCell, this.processCellCallback, type);
|
55 | if (valueForCell === null || valueForCell === undefined) {
|
56 | valueForCell = '';
|
57 | }
|
58 | return this.cellAndHeaderEscaper ? this.cellAndHeaderEscaper(valueForCell) : valueForCell;
|
59 | };
|
60 | BaseGridSerializingSession.prototype.getHeaderName = function (callback, column) {
|
61 | if (callback) {
|
62 | return callback({
|
63 | column: column,
|
64 | api: this.gridOptionsWrapper.getApi(),
|
65 | columnApi: this.gridOptionsWrapper.getColumnApi(),
|
66 | context: this.gridOptionsWrapper.getContext()
|
67 | });
|
68 | }
|
69 | else {
|
70 | return this.columnController.getDisplayNameForColumn(column, 'csv', true);
|
71 | }
|
72 | };
|
73 | BaseGridSerializingSession.prototype.createValueForGroupNode = function (node) {
|
74 | var keys = [node.key];
|
75 | while (node.parent) {
|
76 | node = node.parent;
|
77 | keys.push(node.key);
|
78 | }
|
79 | return keys.reverse().join(' -> ');
|
80 | };
|
81 | BaseGridSerializingSession.prototype.processCell = function (rowNode, column, value, processCellCallback, type) {
|
82 | if (processCellCallback) {
|
83 | return processCellCallback({
|
84 | column: column,
|
85 | node: rowNode,
|
86 | value: value,
|
87 | api: this.gridOptionsWrapper.getApi(),
|
88 | columnApi: this.gridOptionsWrapper.getColumnApi(),
|
89 | context: this.gridOptionsWrapper.getContext(),
|
90 | type: type
|
91 | });
|
92 | }
|
93 | else {
|
94 | return value;
|
95 | }
|
96 | };
|
97 | return BaseGridSerializingSession;
|
98 | }());
|
99 | exports.BaseGridSerializingSession = BaseGridSerializingSession;
|
100 | var GridSerializer = (function () {
|
101 | function GridSerializer() {
|
102 | }
|
103 | GridSerializer.prototype.serialize = function (gridSerializingSession, params) {
|
104 | var dontSkipRows = function () { return false; };
|
105 | var skipGroups = params && params.skipGroups;
|
106 | var skipHeader = params && params.skipHeader;
|
107 | var columnGroups = params && params.columnGroups;
|
108 | var skipFooters = params && params.skipFooters;
|
109 | var skipPinnedTop = params && params.skipPinnedTop;
|
110 | var skipPinnedBottom = params && params.skipPinnedBottom;
|
111 | var includeCustomHeader = params && params.customHeader;
|
112 | var includeCustomFooter = params && params.customFooter;
|
113 | var allColumns = params && params.allColumns;
|
114 | var onlySelected = params && params.onlySelected;
|
115 | var columnKeys = params && params.columnKeys;
|
116 | var onlySelectedAllPages = params && params.onlySelectedAllPages;
|
117 | var rowSkipper = (params && params.shouldRowBeSkipped) || dontSkipRows;
|
118 | var api = this.gridOptionsWrapper.getApi();
|
119 | var context = this.gridOptionsWrapper.getContext();
|
120 |
|
121 | var isPivotMode = this.columnController.isPivotMode();
|
122 | var rowModelNormal = this.rowModel.getType() === constants_1.Constants.ROW_MODEL_TYPE_CLIENT_SIDE;
|
123 | var onlySelectedNonStandardModel = !rowModelNormal && onlySelected;
|
124 | var columnsToExport;
|
125 | if (utils_1.Utils.existsAndNotEmpty(columnKeys)) {
|
126 | columnsToExport = this.columnController.getGridColumns(columnKeys);
|
127 | }
|
128 | else if (allColumns && !isPivotMode) {
|
129 | columnsToExport = this.columnController.getAllPrimaryColumns();
|
130 | }
|
131 | else {
|
132 | columnsToExport = this.columnController.getAllDisplayedColumns();
|
133 | }
|
134 | if (!columnsToExport || columnsToExport.length === 0) {
|
135 | return '';
|
136 | }
|
137 | gridSerializingSession.prepare(columnsToExport);
|
138 | if (includeCustomHeader) {
|
139 | gridSerializingSession.addCustomHeader(params.customHeader);
|
140 | }
|
141 |
|
142 | if (columnGroups) {
|
143 | var groupInstanceIdCreator = new groupInstanceIdCreator_1.GroupInstanceIdCreator();
|
144 | var displayedGroups = this.displayedGroupCreator.createDisplayedGroups(columnsToExport, this.columnController.getGridBalancedTree(), groupInstanceIdCreator);
|
145 | this.recursivelyAddHeaderGroups(displayedGroups, gridSerializingSession);
|
146 | }
|
147 | if (!skipHeader) {
|
148 | var gridRowIterator_1 = gridSerializingSession.onNewHeaderRow();
|
149 | columnsToExport.forEach(function (column, index) {
|
150 | gridRowIterator_1.onColumn(column, index, null);
|
151 | });
|
152 | }
|
153 | this.pinnedRowModel.forEachPinnedTopRow(processRow);
|
154 | if (isPivotMode) {
|
155 | if (this.rowModel.forEachPivotNode) {
|
156 | this.rowModel.forEachPivotNode(processRow);
|
157 | }
|
158 | else {
|
159 |
|
160 | this.rowModel.forEachNode(processRow);
|
161 | }
|
162 | }
|
163 | else {
|
164 |
|
165 |
|
166 |
|
167 |
|
168 |
|
169 | if (onlySelectedAllPages || onlySelectedNonStandardModel) {
|
170 | var selectedNodes = this.selectionController.getSelectedNodes();
|
171 | selectedNodes.forEach(function (node) {
|
172 | processRow(node);
|
173 | });
|
174 | }
|
175 | else {
|
176 |
|
177 |
|
178 |
|
179 | if (rowModelNormal) {
|
180 | this.rowModel.forEachNodeAfterFilterAndSort(processRow);
|
181 | }
|
182 | else {
|
183 | this.rowModel.forEachNode(processRow);
|
184 | }
|
185 | }
|
186 | }
|
187 | this.pinnedRowModel.forEachPinnedBottomRow(processRow);
|
188 | if (includeCustomFooter) {
|
189 | gridSerializingSession.addCustomFooter(params.customFooter);
|
190 | }
|
191 | function processRow(node) {
|
192 | if (skipGroups && node.group) {
|
193 | return;
|
194 | }
|
195 | if (skipFooters && node.footer) {
|
196 | return;
|
197 | }
|
198 | if (onlySelected && !node.isSelected()) {
|
199 | return;
|
200 | }
|
201 | if (skipPinnedTop && node.rowPinned === 'top') {
|
202 | return;
|
203 | }
|
204 | if (skipPinnedBottom && node.rowPinned === 'bottom') {
|
205 | return;
|
206 | }
|
207 |
|
208 |
|
209 | var nodeIsRootNode = node.level === -1;
|
210 | if (nodeIsRootNode && !node.leafGroup) {
|
211 | return;
|
212 | }
|
213 | var shouldRowBeSkipped = rowSkipper({
|
214 | node: node,
|
215 | api: api,
|
216 | context: context
|
217 | });
|
218 | if (shouldRowBeSkipped)
|
219 | return;
|
220 | var rowAccumulator = gridSerializingSession.onNewBodyRow();
|
221 | columnsToExport.forEach(function (column, index) {
|
222 | rowAccumulator.onColumn(column, index, node);
|
223 | });
|
224 | }
|
225 | return gridSerializingSession.parse();
|
226 | };
|
227 | GridSerializer.prototype.recursivelyAddHeaderGroups = function (displayedGroups, gridSerializingSession) {
|
228 | var directChildrenHeaderGroups = [];
|
229 | displayedGroups.forEach(function (columnGroupChild) {
|
230 | var columnGroup = columnGroupChild;
|
231 | if (!columnGroup.getChildren)
|
232 | return;
|
233 | columnGroup.getChildren().forEach(function (it) { return directChildrenHeaderGroups.push(it); });
|
234 | });
|
235 | if (displayedGroups.length > 0 && displayedGroups[0] instanceof columnGroup_1.ColumnGroup) {
|
236 | this.doAddHeaderHeader(gridSerializingSession, displayedGroups);
|
237 | }
|
238 | if (directChildrenHeaderGroups && directChildrenHeaderGroups.length > 0) {
|
239 | this.recursivelyAddHeaderGroups(directChildrenHeaderGroups, gridSerializingSession);
|
240 | }
|
241 | };
|
242 | GridSerializer.prototype.doAddHeaderHeader = function (gridSerializingSession, displayedGroups) {
|
243 | var _this = this;
|
244 | var gridRowIterator = gridSerializingSession.onNewHeaderGroupingRow();
|
245 | var columnIndex = 0;
|
246 | displayedGroups.forEach(function (columnGroupChild) {
|
247 | var columnGroup = columnGroupChild;
|
248 | var colDef = columnGroup.getDefinition();
|
249 | var columnName = _this.columnController.getDisplayNameForColumnGroup(columnGroup, 'header');
|
250 | gridRowIterator.onColumn(columnName, columnIndex++, columnGroup.getLeafColumns().length - 1);
|
251 | });
|
252 | };
|
253 | __decorate([
|
254 | context_1.Autowired('displayedGroupCreator'),
|
255 | __metadata("design:type", displayedGroupCreator_1.DisplayedGroupCreator)
|
256 | ], GridSerializer.prototype, "displayedGroupCreator", void 0);
|
257 | __decorate([
|
258 | context_1.Autowired('columnController'),
|
259 | __metadata("design:type", columnController_1.ColumnController)
|
260 | ], GridSerializer.prototype, "columnController", void 0);
|
261 | __decorate([
|
262 | context_1.Autowired('rowModel'),
|
263 | __metadata("design:type", Object)
|
264 | ], GridSerializer.prototype, "rowModel", void 0);
|
265 | __decorate([
|
266 | context_1.Autowired('pinnedRowModel'),
|
267 | __metadata("design:type", pinnedRowModel_1.PinnedRowModel)
|
268 | ], GridSerializer.prototype, "pinnedRowModel", void 0);
|
269 | __decorate([
|
270 | context_1.Autowired('selectionController'),
|
271 | __metadata("design:type", selectionController_1.SelectionController)
|
272 | ], GridSerializer.prototype, "selectionController", void 0);
|
273 | __decorate([
|
274 | context_1.Autowired('balancedColumnTreeBuilder'),
|
275 | __metadata("design:type", balancedColumnTreeBuilder_1.BalancedColumnTreeBuilder)
|
276 | ], GridSerializer.prototype, "balancedColumnTreeBuilder", void 0);
|
277 | __decorate([
|
278 | context_1.Autowired('gridOptionsWrapper'),
|
279 | __metadata("design:type", gridOptionsWrapper_1.GridOptionsWrapper)
|
280 | ], GridSerializer.prototype, "gridOptionsWrapper", void 0);
|
281 | GridSerializer = __decorate([
|
282 | context_1.Bean("gridSerializer")
|
283 | ], GridSerializer);
|
284 | return GridSerializer;
|
285 | }());
|
286 | exports.GridSerializer = GridSerializer;
|
287 | var RowType;
|
288 | (function (RowType) {
|
289 | RowType[RowType["HEADER_GROUPING"] = 0] = "HEADER_GROUPING";
|
290 | RowType[RowType["HEADER"] = 1] = "HEADER";
|
291 | RowType[RowType["BODY"] = 2] = "BODY";
|
292 | })(RowType = exports.RowType || (exports.RowType = {}));
|