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 rowRenderer_1 = require("./rowRenderer");
|
19 | var context_1 = require("../context/context");
|
20 | var gridOptionsWrapper_1 = require("../gridOptionsWrapper");
|
21 | var headerWrapperComp_1 = require("../headerRendering/header/headerWrapperComp");
|
22 | var AutoWidthCalculator = (function () {
|
23 | function AutoWidthCalculator() {
|
24 | }
|
25 | AutoWidthCalculator.prototype.registerGridComp = function (gridPanel) {
|
26 | this.gridPanel = gridPanel;
|
27 | };
|
28 | AutoWidthCalculator.prototype.registerHeaderRootComp = function (headerRootComp) {
|
29 | this.headerRootComp = headerRootComp;
|
30 | };
|
31 |
|
32 |
|
33 |
|
34 |
|
35 | AutoWidthCalculator.prototype.getPreferredWidthForColumn = function (column) {
|
36 | var eHeaderCell = this.getHeaderCellForColumn(column);
|
37 |
|
38 | if (!eHeaderCell) {
|
39 | return -1;
|
40 | }
|
41 | var eDummyContainer = document.createElement('span');
|
42 |
|
43 | eDummyContainer.style.position = 'fixed';
|
44 |
|
45 |
|
46 | var eBodyContainer = this.gridPanel.getBodyContainer();
|
47 | eBodyContainer.appendChild(eDummyContainer);
|
48 |
|
49 |
|
50 | this.putRowCellsIntoDummyContainer(column, eDummyContainer);
|
51 |
|
52 |
|
53 |
|
54 |
|
55 | this.cloneItemIntoDummy(eHeaderCell, eDummyContainer);
|
56 |
|
57 |
|
58 | var dummyContainerWidth = eDummyContainer.offsetWidth;
|
59 |
|
60 | eBodyContainer.removeChild(eDummyContainer);
|
61 |
|
62 |
|
63 | var autoSizePadding = this.gridOptionsWrapper.getAutoSizePadding();
|
64 | return dummyContainerWidth + autoSizePadding;
|
65 | };
|
66 | AutoWidthCalculator.prototype.getHeaderCellForColumn = function (column) {
|
67 | var comp = null;
|
68 |
|
69 | this.headerRootComp.forEachHeaderElement(function (headerElement) {
|
70 | if (headerElement instanceof headerWrapperComp_1.HeaderWrapperComp) {
|
71 | var headerWrapperComp = headerElement;
|
72 | if (headerWrapperComp.getColumn() === column) {
|
73 | comp = headerWrapperComp;
|
74 | }
|
75 | }
|
76 | });
|
77 | return comp ? comp.getGui() : null;
|
78 | };
|
79 | AutoWidthCalculator.prototype.putRowCellsIntoDummyContainer = function (column, eDummyContainer) {
|
80 | var _this = this;
|
81 | var eCells = this.rowRenderer.getAllCellsForColumn(column);
|
82 | eCells.forEach(function (eCell) { return _this.cloneItemIntoDummy(eCell, eDummyContainer); });
|
83 | };
|
84 | AutoWidthCalculator.prototype.cloneItemIntoDummy = function (eCell, eDummyContainer) {
|
85 |
|
86 | var eCellClone = eCell.cloneNode(true);
|
87 |
|
88 | eCellClone.style.width = '';
|
89 |
|
90 | eCellClone.style.position = 'static';
|
91 | eCellClone.style.left = '';
|
92 |
|
93 |
|
94 |
|
95 | var eCloneParent = document.createElement('div');
|
96 |
|
97 |
|
98 | eCloneParent.style.display = 'table-row';
|
99 |
|
100 |
|
101 |
|
102 | eCloneParent.appendChild(eCellClone);
|
103 | eDummyContainer.appendChild(eCloneParent);
|
104 | };
|
105 | __decorate([
|
106 | context_1.Autowired('rowRenderer'),
|
107 | __metadata("design:type", rowRenderer_1.RowRenderer)
|
108 | ], AutoWidthCalculator.prototype, "rowRenderer", void 0);
|
109 | __decorate([
|
110 | context_1.Autowired('gridOptionsWrapper'),
|
111 | __metadata("design:type", gridOptionsWrapper_1.GridOptionsWrapper)
|
112 | ], AutoWidthCalculator.prototype, "gridOptionsWrapper", void 0);
|
113 | AutoWidthCalculator = __decorate([
|
114 | context_1.Bean('autoWidthCalculator')
|
115 | ], AutoWidthCalculator);
|
116 | return AutoWidthCalculator;
|
117 | }());
|
118 | exports.AutoWidthCalculator = AutoWidthCalculator;
|