1 import {Component, Input, OnInit, Host, TemplateRef} from '@angular/core';
2 import {GridColumn, GridColumnSet} from './grid';
3 import {GridComponent} from './grid.component';
6 selector: 'eg-grid-column',
7 template: '<ng-template></ng-template>'
10 export class GridColumnComponent implements OnInit {
12 // Note most input fields should match class fields for GridColumn
13 @Input() name: string;
14 @Input() path: string;
15 @Input() label: string;
16 @Input() flex: number;
17 // is this the index field?
18 @Input() index: boolean;
20 // Columns are assumed to be visible unless hidden=true.
21 @Input() hidden: boolean;
23 @Input() sortable: boolean;
24 @Input() datatype: string;
25 @Input() multiSortable: boolean;
27 // Display date and time when datatype = timestamp
28 @Input() datePlusTime: boolean;
30 // Used in conjunction with cellTemplate
31 @Input() cellContext: any;
32 @Input() cellTemplate: TemplateRef<any>;
34 @Input() disableTooltip: boolean;
36 // get a reference to our container grid.
37 constructor(@Host() private grid: GridComponent) {}
42 console.warn('GridColumnComponent needs an <eg-grid>');
46 const col = new GridColumn();
49 col.label = this.label;
51 col.hidden = this.hidden === true;
52 col.isIndex = this.index === true;
53 col.cellTemplate = this.cellTemplate;
54 col.cellContext = this.cellContext;
55 col.disableTooltip = this.disableTooltip;
56 col.isSortable = this.sortable;
57 col.isMultiSortable = this.multiSortable;
58 col.datatype = this.datatype;
59 col.datePlusTime = this.datePlusTime;
61 this.grid.context.columnSet.add(col);