UNPKG

14 kBJavaScriptView Raw
1/**
2 * ag-grid - Advanced Data Grid / Data Table supporting Javascript / React / AngularJS / Web Components
3 * @version v18.1.2
4 * @link http://www.ag-grid.com/
5 * @license MIT
6 */
7"use strict";
8var __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};
14var __metadata = (this && this.__metadata) || function (k, v) {
15 if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
16};
17Object.defineProperty(exports, "__esModule", { value: true });
18var context_1 = require("./context/context");
19var columnController_1 = require("./columnController/columnController");
20var constants_1 = require("./constants");
21var utils_1 = require("./utils");
22var selectionController_1 = require("./selectionController");
23var gridOptionsWrapper_1 = require("./gridOptionsWrapper");
24var displayedGroupCreator_1 = require("./columnController/displayedGroupCreator");
25var balancedColumnTreeBuilder_1 = require("./columnController/balancedColumnTreeBuilder");
26var groupInstanceIdCreator_1 = require("./columnController/groupInstanceIdCreator");
27var columnGroup_1 = require("./entities/columnGroup");
28var pinnedRowModel_1 = require("./rowModels/pinnedRowModel");
29var 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}());
99exports.BaseGridSerializingSession = BaseGridSerializingSession;
100var 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 // when in pivot mode, we always render cols on screen, never 'all columns'
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 // first pass, put in the header names of the cols
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 //Must be enterprise, so we can just loop through all the nodes
160 this.rowModel.forEachNode(processRow);
161 }
162 }
163 else {
164 // onlySelectedAllPages: user doing pagination and wants selected items from
165 // other pages, so cannot use the standard row model as it won't have rows from
166 // other pages.
167 // onlySelectedNonStandardModel: if user wants selected in non standard row model
168 // (eg viewport) then again rowmodel cannot be used, so need to use selected instead.
169 if (onlySelectedAllPages || onlySelectedNonStandardModel) {
170 var selectedNodes = this.selectionController.getSelectedNodes();
171 selectedNodes.forEach(function (node) {
172 processRow(node);
173 });
174 }
175 else {
176 // here is everything else - including standard row model and selected. we don't use
177 // the selection model even when just using selected, so that the result is the order
178 // of the rows appearing on the screen.
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 // if we are in pivotMode, then the grid will show the root node only
208 // if it's not a leaf group
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}());
286exports.GridSerializer = GridSerializer;
287var 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 = {}));