UNPKG

@true-directive/grid

Version:

Angular Data Grid from Yopsilon.

99 lines 14.2 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'; let GridFooterCellComponent = class GridFooterCellComponent { constructor(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 ]; } displayedValue(a) { if (a.type != SummaryType.COUNT && this.column.format != '') { return this.state.dataSource.displayedValue(this.column, a.value, null); } return a.value; } canApply(t) { if (t === SummaryType.SUM || t === SummaryType.AVERAGE) { return this.column.type === ColumnType.NUMBER; } return true; } hasAggr(t) { return this._currentSummary != null && this._currentSummary.type === t; } get menuVisible() { return this.menu.visible; } menuClosed(e) { this.elementRef.nativeElement.classList.remove('true-grid-btn-visible'); } menuShow(e) { this.elementRef.nativeElement.classList.add('true-grid-btn-visible'); } setAggr(t) { this.state.setSummary(this.column, t, this._currentSummary); } addAggr(e, t) { this.state.addSummary(this.column, t); } toggleMenu(e, a = null) { let 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); export { GridFooterCellComponent }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1mb290ZXItY2VsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdHJ1ZS1kaXJlY3RpdmUvZ3JpZC8iLCJzb3VyY2VzIjpbInNyYy9ncmlkLWZvb3Rlci1jZWxsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7RUFJRTtBQUNGLE9BQU8sRUFBWSxTQUFTLEVBQUUsS0FBSyxFQUFVLFVBQVUsRUFBRSxTQUFTLEVBQ3pELGlCQUFpQixFQUFFLE1BQU0sRUFDWCxNQUFNLGVBQWUsQ0FBQztBQUU3QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBVyxNQUFNLHNCQUFzQixDQUFDO0FBQzVELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQVc5QyxJQUFhLHVCQUF1QixHQUFwQyxNQUFhLHVCQUF1QjtJQXdFbEMsWUFDOEIsS0FBdUIsRUFDNUMsSUFBaUMsRUFDaEMsVUFBc0IsRUFDdEIsY0FBaUM7UUFIYixVQUFLLEdBQUwsS0FBSyxDQUFrQjtRQUM1QyxTQUFJLEdBQUosSUFBSSxDQUE2QjtRQUNoQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQTFFM0Msb0JBQWUsR0FBWSxJQUFJLENBQUM7UUFFdkIsaUJBQVksR0FBRztZQUN0QixXQUFXLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLEdBQUc7WUFDakQsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsT0FBTztTQUN2QyxDQUFDO0lBcUU2QyxDQUFDO0lBbkV6QyxjQUFjLENBQUMsQ0FBVTtRQUM5QixJQUFJLENBQUMsQ0FB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dUI7SUFUbkMsU0FBUyxDQUFDO1FBQ1QsUUFBUSxFQUFFLHVCQUF1QjtRQUNqQyw4akRBQWdEO1FBRWhELElBQUksRUFBRTtZQUNKLGFBQWEsRUFBRSxrQkFBa0I7WUFDakMsY0FBYyxFQUFFLDRCQUE0QjtTQUM3Qzs7S0FDRixDQUFDO0lBMEVHLG1CQUFBLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQTs2Q0FBZSxnQkFBZ0I7UUFDdEMsMkJBQTJCO1FBQ3BCLFVBQVU7UUFDTixpQkFBaUI7R0E1RWhDLHVCQUF1QixDQTZFbkM7U0E3RVksdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDE5IEFsZWtzZXkgTWVsbmlrb3YsIFRydWUgRGlyZWN0aXZlIENvbXBhbnkuXHJcbiAqIEBsaW5rIGh0dHBzOi8vdHJ1ZWRpcmVjdGl2ZS5jb20vXHJcbiAqIEBsaWNlbnNlIE1JVFxyXG4qL1xyXG5pbXBvcnQgeyBOZ01vZHVsZSwgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsXHJcbiAgICAgICAgIENoYW5nZURldGVjdG9yUmVmLCBJbmplY3QsXHJcbiAgICAgICAgIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgR3JpZFN0YXRlU2VydmljZSB9IGZyb20gJy4vZ3JpZC1zdGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW50ZXJuYXRpb25hbGl6YXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9pbnRlcm5hdGlvbmFsaXphdGlvbi9pbnRlcm5hdGlvbmFsaXphdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29sdW1uVHlwZSB9IGZyb20gJ0B0cnVlLWRpcmVjdGl2ZS9iYXNlJztcclxuaW1wb3J0IHsgU3VtbWFyeVR5cGUsIFN1bW1hcnkgfSBmcm9tICdAdHJ1ZS1kaXJlY3RpdmUvYmFzZSc7XHJcbmltcG9ydCB7IENvbHVtbiB9IGZyb20gJ0B0cnVlLWRpcmVjdGl2ZS9iYXNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHJ1ZS1ncmlkLWZvb3Rlci1jZWxsJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ3JpZC1mb290ZXItY2VsbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc3R5bGVzL2dyaWQtZm9vdGVyLWNlbGwuYmVoYXZpb3Iuc2NzcyddLFxyXG4gIGhvc3Q6IHtcclxuICAgICdbY2xhc3MubnVtXSc6ICdjb2x1bW4uaXNOdW1lcmljJyxcclxuICAgICdbY2xhc3MuaDEwMF0nOiAnY29sdW1uLnN1bW1hcmllcy5sZW5ndGg8PTEnXHJcbiAgfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgR3JpZEZvb3RlckNlbGxDb21wb25lbnQge1xyXG5cclxuICBfY3VycmVudFN1bW1hcnk6IFN1bW1hcnkgPSBudWxsO1xyXG5cclxuICByZWFkb25seSBzdW1tYXJ5VHlwZXMgPSBbXHJcbiAgICBTdW1tYXJ5VHlwZS5TVU0sIFN1bW1hcnlUeXBlLk1JTiwgU3VtbWFyeVR5cGUuTUFYLFxyXG4gICAgU3VtbWFyeVR5cGUuQ09VTlQsIFN1bW1hcnlUeXBlLkFWRVJBR0VcclxuICBdO1xyXG5cclxuICBwdWJsaWMgZGlzcGxheWVkVmFsdWUoYTogU3VtbWFyeSk6IHN0cmluZyB7XHJcbiAgICBpZiAoYS50eXBlICE9IFN1bW1hcnlUeXBlLkNPVU5UICYmIHRoaXMuY29sdW1uLmZvcm1hdCAhPSAnJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5zdGF0ZS5kYXRhU291cmNlLmRpc3BsYXllZFZhbHVlKHRoaXMuY29sdW1uLCBhLnZhbHVlLCBudWxsKTtcclxuICAgIH1cclxuICAgIHJldHVybiBhLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhbkFwcGx5KHQ6IFN1bW1hcnlUeXBlKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodCA9PT0gU3VtbWFyeVR5cGUuU1VNIHx8IHQgPT09IFN1bW1hcnlUeXBlLkFWRVJBR0UpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY29sdW1uLnR5cGUgPT09IENvbHVtblR5cGUuTlVNQkVSO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFzQWdncih0OiBTdW1tYXJ5VHlwZSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRTdW1tYXJ5ICE9IG51bGwgJiYgdGhpcy5fY3VycmVudFN1bW1hcnkudHlwZSA9PT0gdDtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgnY29sdW1uJylcclxuICBwdWJsaWMgY29sdW1uOiBDb2x1bW47XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2J0bicsIHtzdGF0aWM6IGZhbHNlfSlcclxuICBidG46IGFueTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnbWVudScsIHtzdGF0aWM6IGZhbHNlfSlcclxuICBtZW51OiBhbnk7XHJcblxyXG4gIGdldCBtZW51VmlzaWJsZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm1lbnUudmlzaWJsZTtcclxuICB9XHJcblxyXG4gIG1lbnVDbG9zZWQoZTogYW55KSB7XHJcbiAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCd0cnVlLWdyaWQtYnRuLXZpc2libGUnKTtcclxuICB9XHJcblxyXG4gIG1lbnVTaG93KGU6IGFueSkge1xyXG4gICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgndHJ1ZS1ncmlkLWJ0bi12aXNpYmxlJyk7XHJcbiAgfVxyXG5cclxuICBzZXRBZ2dyKHQ6IFN1bW1hcnlUeXBlKSB7XHJcbiAgICB0aGlzLnN0YXRlLnNldFN1bW1hcnkodGhpcy5jb2x1bW4sIHQsIHRoaXMuX2N1cnJlbnRTdW1tYXJ5KTtcclxuICB9XHJcblxyXG4gIGFkZEFnZ3IoZTogYW55LCB0OiBTdW1tYXJ5VHlwZSkge1xyXG4gICAgdGhpcy5zdGF0ZS5hZGRTdW1tYXJ5KHRoaXMuY29sdW1uLCB0KTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZU1lbnUoZTogYW55LCBhOiBTdW1tYXJ5ID0gbnVsbCkge1xyXG5cclxuICAgIGxldCBsID0gZS50YXJnZXQudGFnTmFtZSA9PT0gJ1NQQU4nID8gZS50YXJnZXQucGFyZW50RWxlbWVudCA6IGUudGFyZ2V0O1xyXG4gICAgaWYgKGwucGFyZW50RWxlbWVudCAhPT0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgbCA9IGwucGFyZW50RWxlbWVudDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5tZW51VmlzaWJsZSkge1xyXG4gICAgICB0aGlzLm1lbnUuY2xvc2VQb3B1cCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fY3VycmVudFN1bW1hcnkgPSBhO1xyXG4gICAgICB0aGlzLm1lbnUuc2hvd0J5VGFyZ2V0KGwsIHRoaXMuY29sdW1uLmlzTnVtZXJpYyA/ICdBYm92ZUxlZnQnIDogJ0Fib3ZlUmlnaHQnKTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoJ2dyaWRTdGF0ZScpIHB1YmxpYyBzdGF0ZTogR3JpZFN0YXRlU2VydmljZSxcclxuICAgIHB1YmxpYyBpbnRsOiBJbnRlcm5hdGlvbmFsaXphdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZikgeyB9XHJcbn1cclxuIl19