@refinitiv-ui/efx-grid 6.0.43 → 6.0.45

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. package/lib/column-selection-dialog/lib/column-selection-dialog.d.ts +3 -1
  2. package/lib/column-selection-dialog/lib/column-selection-dialog.js +24 -3
  3. package/lib/column-selection-dialog/themes/base.less +23 -12
  4. package/lib/column-selection-dialog/themes/elemental/dark/column-selection-dialog.js +1 -1
  5. package/lib/column-selection-dialog/themes/elemental/dark/es5/all-elements.js +1 -1
  6. package/lib/column-selection-dialog/themes/elemental/light/column-selection-dialog.js +1 -1
  7. package/lib/column-selection-dialog/themes/elemental/light/es5/all-elements.js +1 -1
  8. package/lib/column-selection-dialog/themes/halo/dark/column-selection-dialog.js +1 -1
  9. package/lib/column-selection-dialog/themes/halo/dark/es5/all-elements.js +1 -1
  10. package/lib/column-selection-dialog/themes/halo/light/column-selection-dialog.js +1 -1
  11. package/lib/column-selection-dialog/themes/halo/light/es5/all-elements.js +1 -1
  12. package/lib/column-selection-dialog/themes/solar/charcoal/column-selection-dialog.js +1 -1
  13. package/lib/column-selection-dialog/themes/solar/charcoal/es5/all-elements.js +1 -1
  14. package/lib/column-selection-dialog/themes/solar/pearl/column-selection-dialog.js +1 -1
  15. package/lib/column-selection-dialog/themes/solar/pearl/es5/all-elements.js +1 -1
  16. package/lib/core/dist/core.js +204 -186
  17. package/lib/core/dist/core.min.js +1 -1
  18. package/lib/core/es6/data/DataView.d.ts +2 -0
  19. package/lib/core/es6/data/DataView.js +170 -81
  20. package/lib/core/es6/data/Segment.d.ts +2 -0
  21. package/lib/core/es6/data/Segment.js +6 -0
  22. package/lib/core/es6/grid/Core.d.ts +0 -4
  23. package/lib/core/es6/grid/Core.js +28 -105
  24. package/lib/grid/index.js +1 -1
  25. package/lib/index.d.ts +0 -4
  26. package/lib/index.js +0 -4
  27. package/lib/tr-grid-row-filtering/es6/RowFiltering.d.ts +5 -0
  28. package/lib/tr-grid-row-filtering/es6/RowFiltering.js +30 -1
  29. package/lib/tr-grid-util/es6/CoralItems.js +2 -2
  30. package/lib/tr-grid-util/es6/ElfDate.js +1 -1
  31. package/lib/tr-grid-util/es6/ElfUtil.js +2 -2
  32. package/lib/tr-grid-util/es6/ExpanderIcon.js +1 -1
  33. package/lib/tr-grid-util/es6/GridPlugin.js +1 -1
  34. package/lib/tr-grid-util/es6/Icon.js +3 -3
  35. package/lib/tr-grid-util/es6/MultiTableManager.js +3 -3
  36. package/lib/tr-grid-util/es6/RowPainter.js +6 -2
  37. package/lib/tr-grid-util/es6/jet/Adc.d.ts +9 -0
  38. package/lib/tr-grid-util/es6/jet/Adc.js +268 -0
  39. package/lib/tr-grid-util/es6/jet/MockQuotes2.js +96 -7
  40. package/lib/tr-grid-util/es6/jet/MockUtil.d.ts +7 -0
  41. package/lib/tr-grid-util/es6/jet/MockUtil.js +25 -0
  42. package/lib/tr-grid-util/es6/jet/mockDataAPI.d.ts +2 -3
  43. package/lib/tr-grid-util/es6/jet/mockDataAPI.js +3 -288
  44. package/lib/types/es6/Core/data/DataView.d.ts +2 -0
  45. package/lib/types/es6/Core/data/Segment.d.ts +2 -0
  46. package/lib/types/es6/Core/grid/Core.d.ts +0 -4
  47. package/lib/types/es6/RealtimeGrid/Grid.d.ts +2 -1
  48. package/lib/utils/index.d.ts +5 -3
  49. package/lib/utils/index.js +5 -3
  50. package/lib/versions.json +3 -5
  51. package/lib/window-exporter.js +5 -0
  52. package/package.json +1 -1
  53. package/lib/tr-grid-printer/es6/CellWriter.d.ts +0 -49
  54. package/lib/tr-grid-printer/es6/CellWriter.js +0 -226
  55. package/lib/tr-grid-printer/es6/ColumnWriter.d.ts +0 -12
  56. package/lib/tr-grid-printer/es6/ColumnWriter.js +0 -21
  57. package/lib/tr-grid-printer/es6/GridPrinter.d.ts +0 -32
  58. package/lib/tr-grid-printer/es6/GridPrinter.js +0 -774
  59. package/lib/tr-grid-printer/es6/PrintTrait.d.ts +0 -38
  60. package/lib/tr-grid-printer/es6/PrintTrait.js +0 -481
  61. package/lib/tr-grid-printer/es6/SectionWriter.d.ts +0 -54
  62. package/lib/tr-grid-printer/es6/SectionWriter.js +0 -213
  63. package/lib/tr-grid-printer/es6/index.d.ts +0 -1
  64. package/lib/tr-grid-printer/es6/index.js +0 -1
@@ -1,774 +0,0 @@
1
- import { Dom } from "../../tr-grid-util/es6/Dom.js";
2
- import { injectCss, prettifyCss } from "../../tr-grid-util/es6/Util.js";
3
- import { Table } from "../../tr-grid-util/es6/Table.js";
4
-
5
- import { PrintTrait } from "./PrintTrait.js";
6
- import { SectionWriter } from "./SectionWriter.js";
7
-
8
-
9
- /** @private
10
- * @type {Node}
11
- */
12
- var _dummyNode = null;
13
-
14
-
15
- /** TODO: Move this logic to PrintTrait
16
- * @private
17
- * @param {Object=} options
18
- * @return {!Object}
19
- */
20
- var _getPageSize = function (options) {
21
- var pageWidth = 0;
22
- var pageHeight = 0;
23
-
24
- if (options) {
25
- if (options["pageWidth"]) {
26
- pageWidth = options["pageWidth"];
27
- }
28
- if (options["pageHeight"]) {
29
- pageHeight = options["pageHeight"];
30
- }
31
- }
32
- if (!pageWidth) {
33
- pageWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
34
- }
35
- if (!pageHeight) {
36
- pageHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);
37
- }
38
-
39
- // TODO: Subtract page margins
40
- pageWidth -= 2; // HACK: Prevent chrome from populating table incorrectly
41
- pageHeight -= 10; // HACK: Prevent chrome from populating table incorrectly
42
-
43
- return {
44
- "pageWidth": pageWidth,
45
- "pageHeight": pageHeight
46
- };
47
- };
48
-
49
- /** @private
50
- * @param {Node} nodeA
51
- * @param {Node} nodeB
52
- */
53
- var swapNode = function (nodeA, nodeB) {
54
- if (!nodeA || !nodeB || !nodeA.parentNode || !nodeB.parentNode) {
55
- Dom.removeParent(nodeA);
56
- Dom.removeParent(nodeB);
57
- return;
58
- }
59
-
60
- if (!_dummyNode) {
61
- _dummyNode = document.createElement("span");
62
- }
63
-
64
- nodeA.parentNode.replaceChild(_dummyNode, nodeA);
65
- nodeB.parentNode.replaceChild(nodeA, nodeB);
66
- _dummyNode.parentNode.replaceChild(nodeB, _dummyNode);
67
- };
68
- /** @private
69
- * @param {Node} fromNode
70
- * @param {Node} toNode
71
- */
72
- var copyNode = function (fromNode, toNode) {
73
- if (fromNode && toNode) {
74
- var i, attrs;
75
- if (toNode.hasAttributes()) {
76
- attrs = toNode.attributes;
77
- for (i = attrs.length; --i >= 0;) {
78
- toNode.removeAttribute(attrs[i].name);
79
- }
80
- }
81
-
82
- if (fromNode.hasAttributes()) {
83
- attrs = fromNode.attributes;
84
- for (i = attrs.length; --i >= 0;) {
85
- toNode.setAttribute(attrs[i].name, attrs[i].value);
86
- }
87
- }
88
-
89
- Dom.removeChildren(toNode);
90
-
91
- var chdr = fromNode.childNodes;
92
- var childCount = chdr.length;
93
- for (i = 0; i < childCount; ++i) {
94
- toNode.appendChild(chdr[i].cloneNode(true));
95
- }
96
- }
97
- };
98
-
99
- /** @private
100
- * @param {Table|SubTable} tbl
101
- * @param {number} colIndex
102
- * @param {string} alignment
103
- */
104
- var _setColumnAlignment = function (tbl, colIndex, alignment) {
105
- if (!alignment || alignment === "default") {
106
- return;
107
- }
108
- var cells = tbl.getCellsInColumn(colIndex);
109
- if (!cells) return;
110
- for (var i = cells.length; --i >= 0;) {
111
- var cell = cells[i];
112
- cell.classList.add("tr-align-" + alignment);
113
- }
114
- };
115
-
116
- /** @private
117
- * @param {*} grid grid element, currently supports atlas-blotter, ef-grid, tr.CompositeGrid, rt.Grid and Core
118
- * @return {Object} core grid
119
- */
120
- var _getCoreGrid = function (grid) {
121
- var core = null;
122
- try {
123
- if (grid.api) { // ef-grid or atlas-blotter
124
- core = grid.api.getCoreGrid();
125
- } else if (grid.getCoreGrid) { // tr.CompositeGrid or rt.Grid
126
- core = grid.getCoreGrid();
127
- } else if (grid.getPlugin) { // coreGrid
128
- core = grid;
129
- }
130
- // TODO: support react/angular wrapper
131
- } catch (err) {
132
- console.log("Cannot print the given object");
133
- }
134
- return core;
135
- };
136
-
137
- /** @namespaces
138
- */
139
- var GridPrinter = {};
140
- /** @private
141
- * @type {string}
142
- */
143
- GridPrinter._styles = ""; // Static variable
144
- /** @type {PrintTrait}
145
- * @private
146
- */
147
- GridPrinter._printTrait = null;
148
- /** @type {Element}
149
- * @private
150
- */
151
- GridPrinter._blankPage = null;
152
- /** @type {tr.Grid}
153
- * @private
154
- */
155
- GridPrinter._grid = null;
156
- /** @type {boolean}
157
- * @private
158
- */
159
- GridPrinter._isObserving = false;
160
- /** @type {!Object}
161
- * @private
162
- */
163
- GridPrinter._options = {};
164
-
165
- /** @public
166
- * @param {GridPrinter.Options} options
167
- */
168
- GridPrinter.setPrintOptions = function (options) {
169
- if (options) {
170
- GridPrinter._options = options;
171
- } else {
172
- GridPrinter._options = {};
173
- }
174
- };
175
-
176
- /** @public
177
- * @param {HTMLIFrameElement=} iFrameElement If not specified, current window is used instead. Specify null to un-observe existing window object.
178
- */
179
- GridPrinter.observe = function (iFrameElement) {
180
- var pt = GridPrinter._getPrintTrait();
181
- pt.observe(iFrameElement);
182
- GridPrinter._isObserving = pt.isObserving();
183
- };
184
- /** @public
185
- */
186
- GridPrinter.unobserve = function () {
187
- GridPrinter._getPrintTrait().unobserve();
188
- };
189
- /** @public
190
- * @param {boolean=} bool
191
- */
192
- GridPrinter.enableDebugMode = function (bool) {
193
- PrintTrait.DEBUG = bool !== false;
194
- };
195
-
196
- /** @public
197
- * @param {tr.Grid} grid
198
- * @param {Object=} options
199
- * @return {!Object}
200
- */
201
- GridPrinter.getPreFlightInfo = function (grid, options) {
202
- var pfInfo = options || {};
203
- if (!pfInfo.pageCount) {
204
- pfInfo.pageCount = 0;
205
- }
206
- if (!grid) {
207
- return pfInfo;
208
- }
209
-
210
- var colCount = grid.getColumnCount();
211
- if (!colCount) {
212
- return pfInfo;
213
- }
214
- pfInfo._calculated = false;
215
- if (GridPrinter._options["pageWidth"]) {
216
- options.pageWidth = GridPrinter._options["pageWidth"];
217
- }
218
- if (GridPrinter._options["pageHeight"]) {
219
- options.pageHeight = GridPrinter._options["pageHeight"];
220
- }
221
-
222
- var pageSize = _getPageSize(options);
223
- var pageWidth = pfInfo.pageWidth = pageSize.pageWidth;
224
- var pageHeight = pfInfo.pageHeight = pageSize.pageHeight;
225
-
226
- // Find primary column that will exist in every page
227
- var c;
228
- var primaryColIndex = 0;
229
- var identifierCol = GridPrinter._options["identifierField"] || GridPrinter._options["primaryColumn"];
230
- // if(typeof identifierCol === "string") {
231
- // for(c = 0; c < colCount; ++c) {
232
- // if() {
233
- // }
234
- // }
235
- // } else
236
- if (typeof identifierCol === "number") {
237
- primaryColIndex = identifierCol;
238
- }
239
-
240
- var primaryCol = pfInfo.primaryColumn = GridPrinter._newColInfo(grid, primaryColIndex);
241
-
242
- // Collect properties from all visible columns
243
- // Create a column set that fit the page width
244
- // Create multiple column sets for single grid
245
- var colSets = []; // Each set will fit a single page
246
- var colSet, colInfo;
247
- // var defaultMinWidth = 50; // WARNING: Hardcoded value
248
- var availSpace = 0;
249
- for (c = 0; c < colCount; ++c) {
250
- if (c == primaryCol.index) {
251
- continue;
252
- }
253
-
254
- var colVisible = grid.isColumnVisible(c);
255
- if (!colVisible) {
256
- continue;
257
- }
258
- colInfo = GridPrinter._newColInfo(grid, c);
259
-
260
- availSpace -= colInfo.width;
261
- if (availSpace <= 0 || !colSets.length) {
262
- colSet = {
263
- columns: []
264
- };
265
- colSet.columns.push(primaryCol); // Primary column must exist as the first column on each page
266
- availSpace = pageWidth - primaryCol.width;
267
- availSpace -= colInfo.width;
268
-
269
- colSets.push(colSet);
270
- }
271
- colSet.columns.push(colInfo);
272
- }
273
-
274
-
275
- var colSetCount = colSets.length;
276
- if (!colSetCount) {
277
- colSetCount = 1;
278
- colSets.push([primaryCol]);
279
- }
280
- pfInfo.columnSets = colSets;
281
-
282
- // Resolve scalable columns and width
283
- for (var i = 0; i < colSetCount; ++i) {
284
- colSet = colSets[i];
285
- colCount = colSet.columns.length;
286
- var scalableColumns = [];
287
- availSpace = pageWidth;
288
- for (c = 0; c < colCount; ++c) {
289
- colInfo = colSet.columns[c];
290
- if (colInfo.scalability) {
291
- scalableColumns.push(colInfo);
292
- } else {
293
- availSpace -= colInfo.width;
294
- }
295
- }
296
- var scalableColCount = scalableColumns.length;
297
- if (scalableColCount) {
298
- var avgWidth = (availSpace / scalableColCount); // TODO: Take min width into account
299
- for (c = 0; c < scalableColCount; ++c) {
300
- scalableColumns[c].width = (avgWidth * (c + 1) | 0) - (avgWidth * c | 0);
301
- }
302
- }
303
-
304
- var totalWidth = 0;
305
- var widths = colSet.widths = new Array(colCount);
306
- for (c = 0; c < colCount; ++c) {
307
- colInfo = colSet.columns[c];
308
- widths[c] = colInfo.width;
309
- totalWidth += colInfo.width;
310
- }
311
- colSet.width = totalWidth;
312
- }
313
-
314
- // Find total row count per table. Remove all empty rows after the last occupied row.
315
- var dv = grid.getDataSource();
316
- var totalRowCount = pfInfo.totalRowcount = dv.getVisibleRowCount();
317
-
318
- // Find cutoff point for each page
319
- var titleSect = grid.getSection("title");
320
- var headerHeight = pfInfo.headerHeight = (titleSect.isVisible()) ? titleSect.getDefaultRowHeight() : 0;
321
- var rowHeight = pfInfo.rowHeight = grid.getSection("content").getDefaultRowHeight();
322
- var maxRowPerPage = (pageHeight - headerHeight) / rowHeight | 0;
323
- if (!(maxRowPerPage > 0)) { // NaN, negative number, or zero is not allowed.
324
- maxRowPerPage = 1; // number of content rows
325
- }
326
- pfInfo.maxRowPerPage = maxRowPerPage;
327
-
328
- var gridCount = pfInfo.gridCount = Math.ceil(totalRowCount / maxRowPerPage); // Number of grid require to render all of the rows. Grid must fit a single page
329
- // var lastPageRowCount = totalRowCount - (totalRowCount / maxRowPerPage | 0);
330
- pfInfo.pageCount = gridCount * colSetCount;
331
-
332
-
333
- // TODO: Stack the table horizontally, if there is enough space
334
- // if(colSetCount == 1 && pageCount > 1) {
335
- // availSpace = pageWidth;
336
- // tableWidth = tables[0]._width;
337
- // var numGridPerPage = Math.floor(pageWidth / tableWidth);
338
-
339
- // var margin = 4;
340
- // var takenSpace = numTablePerPage * tableWidth + (numTablePerPage - 1) * margin;
341
- // if(takenSpace > pageWidth) {
342
- // numGridPerPage--; // There is not enough space for margin
343
- // }
344
- // if(numGridPerPage > 1) {
345
-
346
- // }
347
- // }
348
-
349
- pfInfo._calculated = true; // Internal flag
350
-
351
- return pfInfo;
352
- };
353
-
354
- /** @public
355
- * @param {*} grid grid element, currently supports atlas-blotter, ef-grid, tr.CompositeGrid, rt.Grid and Core
356
- * @param {Object=} options
357
- * @return {Element}
358
- */
359
- GridPrinter.createPrintElement = function (grid, options) {
360
- if (!grid) {
361
- grid = GridPrinter._grid;
362
- } else {
363
- grid = _getCoreGrid(grid);
364
- }
365
-
366
- if (!grid) {
367
- return null;
368
- }
369
-
370
- var pfInfo = options || GridPrinter._printInfo;
371
- if (!pfInfo || !pfInfo._calculated) {
372
- pfInfo = GridPrinter.getPreFlightInfo(grid, pfInfo);
373
- }
374
-
375
- // TODO: Check if we need to recalculate everything again
376
- var maxRowPerPage = pfInfo.maxRowPerPage;
377
- var totalRowCount = pfInfo.totalRowcount;
378
- var rowHeight = pfInfo.rowHeight;
379
- var headerHeight = pfInfo.headerHeight;
380
- var colSets = pfInfo.columnSets;
381
- var colSetCount = pfInfo.columnSets.length;
382
- var primaryColumn = pfInfo.primaryColumn;
383
- var gridCount = pfInfo.gridCount;
384
- var contentWriter = new SectionWriter(); // content section
385
- var headerWriter = new SectionWriter();
386
-
387
- var gridContentSection = grid.getSectionSettings("content");
388
- gridContentSection.snapshot(contentWriter);
389
-
390
- var gridHeaderSection = grid.getSectionSettings("title");
391
- if (gridHeaderSection) {
392
- gridHeaderSection.snapshot(headerWriter);
393
- }
394
-
395
- // Begin element construction
396
- var tables = [];
397
- for (var t = 0; t < gridCount; ++t) { // For each table
398
- var rowStart = t * maxRowPerPage;
399
- var rowEnd = rowStart + maxRowPerPage;
400
- if (rowEnd > totalRowCount) {
401
- rowEnd = totalRowCount;
402
- }
403
- var rowCount = rowEnd - rowStart;
404
-
405
- for (var s = 0; s < colSetCount; ++s) { // For each column set
406
- var colSet = colSets[s];
407
- var colCount = colSet.columns.length;
408
- var c, col, colIndex;
409
- var tbl = new Table(null, {
410
- colCount: colCount,
411
- rowCount: rowCount,
412
- rowHeight: rowHeight
413
- });
414
-
415
- tbl.setColumnWidths(colSet.widths);
416
-
417
- if (headerHeight) {
418
- tbl.addHeaderRows(); // TODO: support multiple rows
419
- var thead = tbl.getHeader();
420
- thead.setDefaultRowHeight(headerHeight);
421
-
422
- // Render header columns
423
- for (c = 0; c < colCount; ++c) { // Create header and columns
424
- col = colSet.columns[c];
425
- colIndex = col.index;
426
- copyNode(headerWriter.getCellElement(colIndex, 0), thead.getCell(c, 0));
427
- _setColumnAlignment(thead, c, col.alignment);
428
- }
429
-
430
- // TODO: Span the header rows
431
- }
432
-
433
- // Render content section
434
- for (c = 0; c < colCount; ++c) { // Populate each cell
435
- col = colSet.columns[c];
436
- colIndex = col.index;
437
- var isPrimary = colIndex === primaryColumn.index;
438
-
439
- for (var r = 0; r < rowCount; ++r) {
440
- var rowIndex = rowStart + r;
441
- var masterCell = contentWriter.getCellElement(colIndex, rowIndex);
442
- var cell = tbl.getCell(c, r);
443
- if (isPrimary) {
444
- copyNode(masterCell, cell);
445
- } else {
446
- swapNode(masterCell, cell);
447
- }
448
- }
449
-
450
- _setColumnAlignment(tbl, c, col.alignment);
451
- }
452
-
453
- tbl._tableNum = t;
454
- tables.push(tbl);
455
- }
456
- }
457
-
458
- // Produce the root element to be appended to the page
459
- var pageCount = pfInfo.pageCount;
460
- var rootElem = document.createElement("div");
461
- rootElem.className = "tr-printing-root";
462
- rootElem.style.display = "block"; // This will beat any CSS selector
463
- for (t = 0; t < pageCount; ++t) {
464
- rootElem.appendChild(tables[t].getElement());
465
- }
466
- // rootElem.appendChild(headerWriter.getElement());
467
- // rootElem.appendChild(contentWriter.getElement());
468
-
469
- return rootElem;
470
- };
471
-
472
- GridPrinter._applyCss = function () {
473
- if (GridPrinter._styles) {
474
- return;
475
- }
476
- GridPrinter._styles = prettifyCss([
477
- ".tr-printing-mode, .tr-printing-mode body", [
478
- "width: 100%;",
479
- "height: unset;",
480
- "padding: 0;",
481
- "margin: 0;",
482
- "background-color: white;",
483
- "overflow: hidden; /* No scrollbar for printing */"
484
- ],
485
- ".tr-printing-mode body > *", [
486
- "display: none;"
487
- ],
488
- ".tr-printing-root", [
489
- "width: 100%;",
490
- "background-color: white;"
491
- ],
492
- ".tr-printing-root > *", [
493
- "page-break-after: always;"
494
- ],
495
- ".tr-printing-root table", [
496
- "border-collapse: collapse;",
497
- "table-layout:fixed; /* To force clipping text */"
498
- ],
499
- ".tr-printing-root tr", [
500
- "height: 21px;",
501
- "color: unset;",
502
- "background-color: unset;"
503
- ],
504
- ".tr-printing-root td", [
505
- "border: 1px solid black;",
506
- "padding: 0 5px;",
507
- "height: unset;",
508
- "font-size: 12px;",
509
- "text-overflow: ellipsis;",
510
- "white-space: nowrap;",
511
- "overflow: hidden;"
512
- ],
513
- ".tr-printing-root td, .tr-printing-root tr:hover td, .tr-printing-root tr td:hover", [
514
- "color: black;",
515
- "background-color: white;"
516
- ],
517
- ".tr-printing-root .tr-align-left", [
518
- "text-align: left;"
519
- ],
520
- ".tr-printing-root .tr-align-right", [
521
- "text-align: right;"
522
- ],
523
- ".tr-printing-root .tr-align-center", [
524
- "text-align: center;"
525
- ],
526
- ".tr-printing-root .cell ef-icon", [
527
- "margin-top: 3px;"
528
- ],
529
- ".tr-printing-root .cell .sort-symbol", [
530
- "margin-left: 4px;",
531
- "display: inline-block;"
532
- ],
533
- ".tr-printing-root .cell .sort-symbol", [
534
- "margin-left: 4px;",
535
- "display: inline-block;"
536
- ],
537
- // eslint-disable-next-line no-multi-str
538
- ".tr-printing-root .priority-symbol:last-child,\
539
- .tr-printing-root .sortable-indicator:last-child,\
540
- .tr-printing-root .sort-symbol:last-child", [
541
- "margin-right: 0px;"
542
- ],
543
- ".tr-printing-root .sortable-indicator:last-child", [
544
- "opacity: 0.5;"
545
- ],
546
- ".tr-printing-root .folder .expander", [
547
- "margin-right: 7px;",
548
- "margin-left: 3px;"
549
- ],
550
- ".tr-printing-root .folder .fallback-arrow", [
551
- "vertical-align: middle;",
552
- "font-size: 7px;",
553
- "line-height: 1;",
554
- "display: inline-block;", // For transformation
555
- "transform: scaleX(1.5);",
556
- "font-family: Arial;"
557
- ],
558
- ".tr-printing-root .folder.closed .expander", [
559
- "transform: translate(0px, 1px) rotate(-90deg);"
560
- ],
561
- ".tr-printing-root .folder.closed .expander .fallback-arrow", [
562
- "transform: translate(0px, -1px) rotate(-90deg) scaleX(1.5);"
563
- ],
564
- ".tr-printing-root .print-inline", [
565
- "display:inline-block;"
566
- ],
567
- ".tr-printing-root .text", [
568
- "vertical-align: middle;",
569
- "overflow: hidden;",
570
- "text-overflow: ellipsis;"
571
- ],
572
- ".tr-printing-root .group-header, .tr-printing-root .ric-arrow", [
573
- "color: black !important;"
574
- ],
575
- ".tr-printing-root .group-header-box", [
576
- "display: inline-block;",
577
- "width: 180px;"
578
- ],
579
- ".tr-printing-root .group-header-box *", [
580
- "display: inline-block;"
581
- ],
582
- ".tr-printing-root .tr-percent-bar", [
583
- "position:relative;",
584
- "text-align: left;",
585
- "overflow: hidden;",
586
- "white-space: nowrap;"
587
- ],
588
- ".tr-printing-root .tr-percent-bar>div", [
589
- "position:relative;",
590
- "display: inline-block;",
591
- "height: 8px;",
592
- "vertical-align: middle;"
593
- ],
594
- ".tr-printing-root .tr-percent-bar>div>div", [
595
- "position:absolute;",
596
- "height: 100%;"
597
- ],
598
- ".tr-printing-root .tr-percent-bar>span", [
599
- "display: inline-block;",
600
- "vertical-align: middle;",
601
- "box-sizing: border-box;",
602
- "padding-left: 4px;",
603
- "padding-right: 4px;",
604
- "overflow: hidden;",
605
- "max-width: 100%;"
606
- ],
607
- ".tr-printing-wrapper", [
608
- "white-space: nowrap;",
609
- "overflow: hidden;"
610
- ],
611
- "/* For safety */",
612
- ".tr-printing-wrapper > *", [
613
- "display: inline-block;",
614
- "vertical-align: top;"
615
- ],
616
- ".tr-printing-wrapper > * + *", [
617
- "margin-left: 4px;"
618
- ],
619
- ".tr-blank-page", [
620
- "page-break-after: always;",
621
- "height: 1px;",
622
- "visibility: hidden;"
623
- ],
624
- ".tr-printing-flex-row", [
625
- "display: flex;",
626
- "width: 100%;",
627
- "min-width: 0;",
628
- "align-items: center;"
629
- ],
630
- ".tr-printing-flex-row>*:not(.tr-printing-float-right)", [
631
- "flex: 1 1 0;"
632
- ],
633
- "@media screen", [
634
- prettifyCss([
635
- "/* For debugging */",
636
- ".tr-printing-mode", [
637
- "overflow: auto;",
638
- "background-color: lightgrey;"
639
- ],
640
- ".tr-printing-root > * + *", [
641
- "margin-top: 4px;"
642
- ]
643
- ])
644
- ]
645
- ]);
646
- injectCss(GridPrinter._styles, document.body);
647
- };
648
-
649
- /** @public
650
- * @param {*} grid grid element, currently supports atlas-blotter, ef-grid, tr.CompositeGrid, rt.Grid and Core
651
- */
652
- GridPrinter.print = function (grid) {
653
- var core = null;
654
- if (grid) {
655
- GridPrinter._applyCss();
656
- core = _getCoreGrid(grid);
657
- }
658
-
659
- if (core) {
660
- GridPrinter._grid = core;
661
-
662
- var pt = GridPrinter._getPrintTrait(); // initialize
663
- if (!GridPrinter._isObserving) {
664
- pt.observe(); // Observe current window
665
- }
666
-
667
- pt.print();
668
- } else {
669
- GridPrinter._grid = null;
670
- }
671
- };
672
-
673
-
674
- /** @private
675
- * @return {!PrintTrait}
676
- */
677
- GridPrinter._getPrintTrait = function () {
678
- var pt = GridPrinter._printTrait;
679
- if (!pt) {
680
- pt = GridPrinter._printTrait = new PrintTrait();
681
- // TODO: this._printTrait.fixPaperSize(); // WORKAROUND: We cannot detect the change in paper size during the browser's preview dialog.
682
-
683
- pt.addEventListener('pageCounting', GridPrinter._onPageCounting);
684
- pt.addEventListener('beforeprint', GridPrinter._onBeforePrint);
685
- pt.addEventListener('afterprint', GridPrinter._onAfterPrint);
686
- }
687
- return pt;
688
- };
689
- /** @private
690
- * @param {tr.Grid} grid
691
- * @param {number} idx
692
- * @return {!Object}
693
- */
694
- GridPrinter._newColInfo = function (grid, idx) {
695
- var minWidth = grid.getMinimumColumnWidth(idx);
696
- if (minWidth <= 0) {
697
- minWidth = 50; // WARNING: Hard-coded value
698
- }
699
- var scalability = grid.getColumnScalability(idx);
700
- var width = scalability ? minWidth : grid.getColumnWidth(idx);
701
-
702
- return {
703
- "index": idx,
704
- "width": width,
705
- "data": grid.getColumnData(idx),
706
- "scalability": scalability,
707
- "minWidth": minWidth,
708
- "alignment": grid.getColumnAlignment(idx)
709
- };
710
- };
711
- /** @private
712
- */
713
- GridPrinter._removePrintElements = function () {
714
- Dom.removeParent(GridPrinter._blankPage);
715
- GridPrinter._blankPage = null;
716
-
717
- Dom.removeParent(GridPrinter._printElem);
718
- GridPrinter._printElem = null;
719
- };
720
-
721
-
722
- /** @private
723
- * @param {Object} e Event argument created from PrintTrait
724
- */
725
- GridPrinter._onPageCounting = function (e) {
726
- GridPrinter._removePrintElements();
727
-
728
- GridPrinter._printInfo = GridPrinter.getPreFlightInfo(GridPrinter._grid, e);
729
- if (GridPrinter._printInfo.pageCount) {
730
- // There is no need to render anything at this phase
731
- GridPrinter._blankPage = PrintTrait.createBlankPages(GridPrinter._printInfo.pageCount);
732
- e.bodyElement.appendChild(GridPrinter._blankPage);
733
- }
734
- };
735
- /** @private
736
- * @param {Object} e
737
- */
738
- GridPrinter._onBeforePrint = function (e) {
739
- GridPrinter._removePrintElements();
740
-
741
- if (GridPrinter._printInfo && GridPrinter._printInfo.pageCount) {
742
- GridPrinter._printElem = GridPrinter.createPrintElement(GridPrinter._grid, GridPrinter._printInfo); // TODO: Use new sizes given from PrintTrait
743
-
744
- // var elem = GridPrinter._printTrait.createClientBox(e.pageWidth, e.pageHeight);
745
- e.bodyElement.appendChild(GridPrinter._printElem);
746
- }
747
- };
748
- /** @private
749
- * @param {Object} e
750
- */
751
- GridPrinter._onAfterPrint = function (e) {
752
- GridPrinter._removePrintElements();
753
-
754
- if (!GridPrinter._isObserving) {
755
- GridPrinter._getPrintTrait().unobserve();
756
- }
757
-
758
- GridPrinter._printInfo = null;
759
- if (GridPrinter._grid) {
760
- GridPrinter._grid.updateLayout();
761
- GridPrinter._grid = null;
762
- }
763
- };
764
-
765
- /** @typedef {Object} GridPrinter~Options
766
- * @description Configuration object for customizing priting behavior can be passed through `GridPrinter.setPrintOptions` method
767
- * @property {number=} pageWidth Paper width in pixel. This limits number of columns to be shown on a single page
768
- * @property {number=} pageHeight Paper height in pixel. This limits number of rows to be shown on a single page
769
- * @property {number=} primaryColumn Column index that will be placed as the first column on each page.
770
- */
771
- GridPrinter.Options;
772
-
773
-
774
- export { GridPrinter };