import { Component, OnInit, OnChanges, SimpleChanges, Input, Output, EventEmitter, ViewChild } from '@angular/core'; import { Router, ActivatedRoute } from '@angular/router'; import {HotkeyModule, HotkeysService, Hotkey} from 'angular2-hotkeys'; import { Column, Menu, Button, Options, Row, Cell, DataTable } from "../models"; import { Filter } from "../models/filter"; import { Export } from "../models/export"; import { isNumber, isArray } from "util"; import { JDate } from 'sigma-ts/jdate'; @Component({ selector: 'datatable', templateUrl: './datatable.component.html', styleUrls: ['./datatable.component.css'] }) export class DataTableComponent implements OnInit { @Input() datatable: DataTable = new DataTable; @Output() onrowClick: EventEmitter = new EventEmitter; @Output() onrowDoubleClick: EventEmitter = new EventEmitter; @Output() onsearch: EventEmitter = new EventEmitter; @Output() onpageChange: EventEmitter = new EventEmitter; @Output() onsortChange: EventEmitter = new EventEmitter; @Output() onlimitChange: EventEmitter = new EventEmitter; @Output() onrefresh: EventEmitter = new EventEmitter; public constructor(private router: Router, private route: ActivatedRoute,private hotkeysService: HotkeysService) { } ngOnInit(): void { this.datatable.loadOptions(); this.route.queryParams.subscribe(params => { if(+params['page']) this.datatable.page = +params['page']; if(+params['sort']) this.datatable.sort = +params['sort']; }); this.hotkeysService.add(new Hotkey('left', (event: KeyboardEvent): boolean => { this.datatable.nextPage(); return false; })); this.hotkeysService.add(new Hotkey('right', (event: KeyboardEvent): boolean => { this.datatable.prevPage(); return false; })); } excel() { let rows = this.datatable.rowsSelected; if(rows.length == 0) rows = this.datatable.rowsResult; Export.excel(this.datatable.name + JDate.format(new Date(), 'yyyy/MM/dd hh:mm:ss') + '.xlsx', rows, this.datatable.columns); } }