-
Notifications
You must be signed in to change notification settings - Fork 35
/
IDateColumn.ts
68 lines (55 loc) · 1.92 KB
/
IDateColumn.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import {IForEachAble} from '../internal';
import Column from './Column';
import {IColumnDesc, IDataRow} from './interfaces';
import {INumberFilter} from './INumberColumn';
import {IArrayColumn} from './IArrayColumn';
export interface IDateColumn extends Column {
getFormatter(): (v: Date | null) => string;
getDate(row: IDataRow): Date | null;
iterDate(row: IDataRow): IForEachAble<Date | null>;
getFilter(): IDateFilter;
setFilter(value: IDateFilter | null): void;
}
export interface IDatesColumn extends IDateColumn, IArrayColumn<Date | null> {
getDates(row: IDataRow): (Date | null)[];
}
export interface IDateDesc {
/**
* d3 formatting option
* @default %x
*/
dateFormat?: string;
/**
* d3 formation option
* @dfeault dateFormat
*/
dateParse?: string;
}
/**
* checks whether the given column or description is a date column, i.e. the value is a date
* @param col
* @returns {boolean}
*/
export function isDateColumn(col: Column): col is IDateColumn;
export function isDateColumn(col: IColumnDesc): col is IDateDesc & IColumnDesc;
export function isDateColumn(col: Column | IColumnDesc) {
return (col instanceof Column && typeof (<IDateColumn>col).getDate === 'function' || (!(col instanceof Column) && (<IColumnDesc>col).type.startsWith('date')));
}
export function isDatesColumn(col: Column): col is IDatesColumn {
return typeof (<IDatesColumn>col).getDates === 'function';
}
export declare type IDateFilter = INumberFilter;
export declare type IDateGranularity = 'century' | 'decade' | 'year' | 'month' | 'week' | 'day_of_week' | 'day_of_month' | 'day_of_year' | 'hour' | 'minute' | 'second';
export interface IDateGrouper {
/**
* granuality level for the grouping
*/
granularity: IDateGranularity;
/**
* whether circular occurrences should be in the same bin
* e.g. granularity = month
* circular: 01.2018 == 01.2017
* not circular: 01.2018 != 01.2017
*/
circular: boolean;
}