UNPKG

@true-directive/grid

Version:

Angular Data Grid from Yopsilon.

105 lines 15 kB
import * as tslib_1 from "tslib"; /** * Copyright (c) 2018-2019 Aleksey Melnikov, True Directive Company. * @link https://truedirective.com/ * @license MIT */ import { Component, Input, ElementRef, ViewChild, ChangeDetectorRef, Inject } from '@angular/core'; import { GridStateService } from './grid-state.service'; import { InternationalizationService } from './internationalization/internationalization.service'; import { ColumnType } from '@true-directive/base'; import { SummaryType } from '@true-directive/base'; import { Column } from '@true-directive/base'; var GridFooterCellComponent = /** @class */ (function () { function GridFooterCellComponent(state, intl, elementRef, changeDetector) { this.state = state; this.intl = intl; this.elementRef = elementRef; this.changeDetector = changeDetector; this._currentSummary = null; this.summaryTypes = [ SummaryType.SUM, SummaryType.MIN, SummaryType.MAX, SummaryType.COUNT, SummaryType.AVERAGE ]; } GridFooterCellComponent.prototype.displayedValue = function (a) { if (a.type != SummaryType.COUNT && this.column.format != '') { return this.state.dataSource.displayedValue(this.column, a.value, null); } return a.value; }; GridFooterCellComponent.prototype.canApply = function (t) { if (t === SummaryType.SUM || t === SummaryType.AVERAGE) { return this.column.type === ColumnType.NUMBER; } return true; }; GridFooterCellComponent.prototype.hasAggr = function (t) { return this._currentSummary != null && this._currentSummary.type === t; }; Object.defineProperty(GridFooterCellComponent.prototype, "menuVisible", { get: function () { return this.menu.visible; }, enumerable: true, configurable: true }); GridFooterCellComponent.prototype.menuClosed = function (e) { this.elementRef.nativeElement.classList.remove('true-grid-btn-visible'); }; GridFooterCellComponent.prototype.menuShow = function (e) { this.elementRef.nativeElement.classList.add('true-grid-btn-visible'); }; GridFooterCellComponent.prototype.setAggr = function (t) { this.state.setSummary(this.column, t, this._currentSummary); }; GridFooterCellComponent.prototype.addAggr = function (e, t) { this.state.addSummary(this.column, t); }; GridFooterCellComponent.prototype.toggleMenu = function (e, a) { if (a === void 0) { a = null; } var l = e.target.tagName === 'SPAN' ? e.target.parentElement : e.target; if (l.parentElement !== this.elementRef.nativeElement) { l = l.parentElement; } if (this.menuVisible) { this.menu.closePopup(); } else { this._currentSummary = a; this.menu.showByTarget(l, this.column.isNumeric ? 'AboveLeft' : 'AboveRight'); this.changeDetector.detectChanges(); } }; tslib_1.__decorate([ Input('column'), tslib_1.__metadata("design:type", Column) ], GridFooterCellComponent.prototype, "column", void 0); tslib_1.__decorate([ ViewChild('btn', { static: false }), tslib_1.__metadata("design:type", Object) ], GridFooterCellComponent.prototype, "btn", void 0); tslib_1.__decorate([ ViewChild('menu', { static: false }), tslib_1.__metadata("design:type", Object) ], GridFooterCellComponent.prototype, "menu", void 0); GridFooterCellComponent = tslib_1.__decorate([ Component({ selector: 'true-grid-footer-cell', template: "<div *ngFor=\"let a of column.summaries\"\r\n class=\"true-aggr\"\r\n [style.height.px]=\"state.st.rowHeight\"\r\n (click)=\"toggleMenu($event, a)\">\r\n <div>\r\n <span class=\"true-aggr-caption\">{{a.type.footerText | trueTranslate}}&nbsp;</span>{{displayedValue(a)}}\r\n </div>\r\n</div>\r\n<div\r\n class=\"true-footer-btn-container\"\r\n *ngIf=\"!column.isCheckbox && column.summaries.length === 0\">\r\n <div #btn class=\"true-grid-btn\" (click)=\"toggleMenu($event)\"><span class=\"true-icon-sigma\"></span></div>\r\n</div>\r\n\r\n<true-menu #menu\r\n (show)=\"menuShow($event)\"\r\n (closed)=\"menuClosed($event)\">\r\n <true-menu-item\r\n [hidden]=\"column.summaries.length === 0\"\r\n [true-menu-show]=\"submenu\"\r\n true-divide=\"true\"><span></span>{{'Add' | trueTranslate}}</true-menu-item>\r\n <true-menu-item\r\n *ngFor=\"let t of summaryTypes; let i=index\"\r\n [true-divide]=\"i == 0 && column.summaries.length > 0\"\r\n (itemClick)=\"setAggr(t)\"\r\n [disabled]=\"!canApply(t)\"><span [class.true-icon-ok]=\"hasAggr(t)\"></span>{{t.name | trueTranslate}}</true-menu-item>\r\n <true-menu-item (itemClick)=\"setAggr(null)\" true-divide=\"true\">\r\n <span [class.true-icon-ok]=\"column.summaries.length === 0\"></span>{{'None' | trueTranslate}}</true-menu-item>\r\n</true-menu>\r\n\r\n<true-menu #submenu>\r\n <true-menu-item\r\n *ngFor=\"let t of summaryTypes\"\r\n (itemClick)=\"addAggr($event, t)\"\r\n [disabled]=\"!canApply(t)\"><span></span>{{t.name | trueTranslate}}</true-menu-item>\r\n</true-menu>\r\n", host: { '[class.num]': 'column.isNumeric', '[class.h100]': 'column.summaries.length<=1' }, styles: [":host{display:block;overflow-x:hidden}.true-aggr{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-box-pack:start;justify-content:flex-start;-webkit-box-align:center;align-items:center}.true-aggr div{white-space:nowrap;overflow-x:hidden;text-overflow:ellipsis}:host.num .true-aggr{-webkit-box-pack:end;justify-content:flex-end}:host.h100{height:100%}:host.h100 .true-aggr{height:100%}.true-footer-btn-container{box-sizing:border-box;height:100%;width:100%;display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row}:host:hover .true-footer-btn-container .true-grid-btn{visibility:visible}:host.num .true-footer-btn-container{-webkit-box-pack:end;justify-content:flex-end}"] }), tslib_1.__param(0, Inject('gridState')), tslib_1.__metadata("design:paramtypes", [GridStateService, InternationalizationService, ElementRef, ChangeDetectorRef]) ], GridFooterCellComponent); return GridFooterCellComponent; }()); export { GridFooterCellComponent }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1mb290ZXItY2VsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdHJ1ZS1kaXJlY3RpdmUvZ3JpZC8iLCJzb3VyY2VzIjpbInNyYy9ncmlkLWZvb3Rlci1jZWxsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7RUFJRTtBQUNGLE9BQU8sRUFBWSxTQUFTLEVBQUUsS0FBSyxFQUFVLFVBQVUsRUFBRSxTQUFTLEVBQ3pELGlCQUFpQixFQUFFLE1BQU0sRUFDWCxNQUFNLGVBQWUsQ0FBQztBQUU3QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBVyxNQUFNLHNCQUFzQixDQUFDO0FBQzVELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQVc5QztJQXdFRSxpQ0FDOEIsS0FBdUIsRUFDNUMsSUFBaUMsRUFDaEMsVUFBc0IsRUFDdEIsY0FBaUM7UUFIYixVQUFLLEdBQUwsS0FBSyxDQUFrQjtRQUM1QyxTQUFJLEdBQUosSUFBSSxDQUE2QjtRQUNoQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQTFFM0Msb0JBQWUsR0FBWSxJQUFJLENBQUM7UUFFdkIsaUJBQVksR0FBRztZQUN0QixXQUFXLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLEdBQUc7WUFDakQsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsT0FBTztTQUN2QyxDQUFDO0lBcUU2QyxDQUFDO0lBbkV6QyxnREFBYyxHQUFyQixVQUFzQixDQUFVO1FBQzlCLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxXQUFXLENBQUMs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LE1BQU0sRUFBRSxLQUFLLEVBQUMsQ0FBQzs7eURBQ3pCO0lBbENDLHVCQUF1QjtRQVRuQyxTQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsdUJBQXVCO1lBQ2pDLDhqREFBZ0Q7WUFFaEQsSUFBSSxFQUFFO2dCQUNKLGFBQWEsRUFBRSxrQkFBa0I7Z0JBQ2pDLGNBQWMsRUFBRSw0QkFBNEI7YUFDN0M7O1NBQ0YsQ0FBQztRQTBFRyxtQkFBQSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUE7aURBQWUsZ0JBQWdCO1lBQ3RDLDJCQUEyQjtZQUNwQixVQUFVO1lBQ04saUJBQWlCO09BNUVoQyx1QkFBdUIsQ0E2RW5DO0lBQUQsOEJBQUM7Q0FBQSxBQTdFRCxJQTZFQztTQTdFWSx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMTkgQWxla3NleSBNZWxuaWtvdiwgVHJ1ZSBEaXJlY3RpdmUgQ29tcGFueS5cclxuICogQGxpbmsgaHR0cHM6Ly90cnVlZGlyZWN0aXZlLmNvbS9cclxuICogQGxpY2Vuc2UgTUlUXHJcbiovXHJcbmltcG9ydCB7IE5nTW9kdWxlLCBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCxcclxuICAgICAgICAgQ2hhbmdlRGV0ZWN0b3JSZWYsIEluamVjdCxcclxuICAgICAgICAgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBHcmlkU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi9ncmlkLXN0YXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJbnRlcm5hdGlvbmFsaXphdGlvblNlcnZpY2UgfSBmcm9tICcuL2ludGVybmF0aW9uYWxpemF0aW9uL2ludGVybmF0aW9uYWxpemF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb2x1bW5UeXBlIH0gZnJvbSAnQHRydWUtZGlyZWN0aXZlL2Jhc2UnO1xyXG5pbXBvcnQgeyBTdW1tYXJ5VHlwZSwgU3VtbWFyeSB9IGZyb20gJ0B0cnVlLWRpcmVjdGl2ZS9iYXNlJztcclxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSAnQHRydWUtZGlyZWN0aXZlL2Jhc2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0cnVlLWdyaWQtZm9vdGVyLWNlbGwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ncmlkLWZvb3Rlci1jZWxsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zdHlsZXMvZ3JpZC1mb290ZXItY2VsbC5iZWhhdmlvci5zY3NzJ10sXHJcbiAgaG9zdDoge1xyXG4gICAgJ1tjbGFzcy5udW1dJzogJ2NvbHVtbi5pc051bWVyaWMnLFxyXG4gICAgJ1tjbGFzcy5oMTAwXSc6ICdjb2x1bW4uc3VtbWFyaWVzLmxlbmd0aDw9MSdcclxuICB9XHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHcmlkRm9vdGVyQ2VsbENvbXBvbmVudCB7XHJcblxyXG4gIF9jdXJyZW50U3VtbWFyeTogU3VtbWFyeSA9IG51bGw7XHJcblxyXG4gIHJlYWRvbmx5IHN1bW1hcnlUeXBlcyA9IFtcclxuICAgIFN1bW1hcnlUeXBlLlNVTSwgU3VtbWFyeVR5cGUuTUlOLCBTdW1tYXJ5VHlwZS5NQVgsXHJcbiAgICBTdW1tYXJ5VHlwZS5DT1VOVCwgU3VtbWFyeVR5cGUuQVZFUkFHRVxyXG4gIF07XHJcblxyXG4gIHB1YmxpYyBkaXNwbGF5ZWRWYWx1ZShhOiBTdW1tYXJ5KTogc3RyaW5nIHtcclxuICAgIGlmIChhLnR5cGUgIT0gU3VtbWFyeVR5cGUuQ09VTlQgJiYgdGhpcy5jb2x1bW4uZm9ybWF0ICE9ICcnKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnN0YXRlLmRhdGFTb3VyY2UuZGlzcGxheWVkVmFsdWUodGhpcy5jb2x1bW4sIGEudmFsdWUsIG51bGwpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGEudmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FuQXBwbHkodDogU3VtbWFyeVR5cGUpOiBib29sZWFuIHtcclxuICAgIGlmICh0ID09PSBTdW1tYXJ5VHlwZS5TVU0gfHwgdCA9PT0gU3VtbWFyeVR5cGUuQVZFUkFHRSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb2x1bW4udHlwZSA9PT0gQ29sdW1uVHlwZS5OVU1CRVI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYXNBZ2dyKHQ6IFN1bW1hcnlUeXBlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFN1bW1hcnkgIT0gbnVsbCAmJiB0aGlzLl9jdXJyZW50U3VtbWFyeS50eXBlID09PSB0O1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCdjb2x1bW4nKVxyXG4gIHB1YmxpYyBjb2x1bW46IENvbHVtbjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnYnRuJywge3N0YXRpYzogZmFsc2V9KVxyXG4gIGJ0bjogYW55O1xyXG5cclxuICBAVmlld0NoaWxkKCdtZW51Jywge3N0YXRpYzogZmFsc2V9KVxyXG4gIG1lbnU6IGFueTtcclxuXHJcbiAgZ2V0IG1lbnVWaXNpYmxlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubWVudS52aXNpYmxlO1xyXG4gIH1cclxuXHJcbiAgbWVudUNsb3NlZChlOiBhbnkpIHtcclxuICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ3RydWUtZ3JpZC1idG4tdmlzaWJsZScpO1xyXG4gIH1cclxuXHJcbiAgbWVudVNob3coZTogYW55KSB7XHJcbiAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCd0cnVlLWdyaWQtYnRuLXZpc2libGUnKTtcclxuICB9XHJcblxyXG4gIHNldEFnZ3IodDogU3VtbWFyeVR5cGUpIHtcclxuICAgIHRoaXMuc3RhdGUuc2V0U3VtbWFyeSh0aGlzLmNvbHVtbiwgdCwgdGhpcy5fY3VycmVudFN1bW1hcnkpO1xyXG4gIH1cclxuXHJcbiAgYWRkQWdncihlOiBhbnksIHQ6IFN1bW1hcnlUeXBlKSB7XHJcbiAgICB0aGlzLnN0YXRlLmFkZFN1bW1hcnkodGhpcy5jb2x1bW4sIHQpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlTWVudShlOiBhbnksIGE6IFN1bW1hcnkgPSBudWxsKSB7XHJcblxyXG4gICAgbGV0IGwgPSBlLnRhcmdldC50YWdOYW1lID09PSAnU1BBTicgPyBlLnRhcmdldC5wYXJlbnRFbGVtZW50IDogZS50YXJnZXQ7XHJcbiAgICBpZiAobC5wYXJlbnRFbGVtZW50ICE9PSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICBsID0gbC5wYXJlbnRFbGVtZW50O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm1lbnVWaXNpYmxlKSB7XHJcbiAgICAgIHRoaXMubWVudS5jbG9zZVBvcHVwKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9jdXJyZW50U3VtbWFyeSA9IGE7XHJcbiAgICAgIHRoaXMubWVudS5zaG93QnlUYXJnZXQobCwgdGhpcy5jb2x1bW4uaXNOdW1lcmljID8gJ0Fib3ZlTGVmdCcgOiAnQWJvdmVSaWdodCcpO1xyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnZ3JpZFN0YXRlJykgcHVibGljIHN0YXRlOiBHcmlkU3RhdGVTZXJ2aWNlLFxyXG4gICAgcHVibGljIGludGw6IEludGVybmF0aW9uYWxpemF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmKSB7IH1cclxufVxyXG4iXX0=