angular-calendar-timeline
Version:
A timeline for angular that shows events on a timeline board in different modes: days, weeks, and months.
56 lines (55 loc) • 1.71 kB
TypeScript
import { IItemsIterator } from "./items-iterator";
export interface IScaleColumn {
id: string;
date: Date;
index: number;
groups?: IScaleGroup[];
}
export interface IScaleGroup {
id: string;
date: Date;
coverageInPercents: number;
}
export interface IScale {
startDate: Date;
endDate: Date;
columns: IScaleColumn[];
}
export interface IScaleGeneratorConfig {
/**
* Text formatter for dates in the header.
*/
formatter: IScaleFormatter;
/**
* Sets the first date when the scale is starting.
*/
getStartDate?: (iterator: IItemsIterator) => Date;
/**
* Sets the last date in the scale.
*/
getEndDate?: (iterator: IItemsIterator) => Date;
}
export interface IScaleFormatter {
formatColumn(column: IScaleColumn, columnWidth: number, locale: string): string;
formatGroup?(group: IScaleGroup, locale: string): string;
}
export interface IScaleGenerator {
/**
* Formatter transforms date object into text in the header of timeline
*/
formatter: IScaleFormatter;
/**
* Generate the scale with start date, end date, and columns. Groups are not required.
*/
generateScale(startDate: Date, endDate: Date): IScale;
/**
* Returns the date when the scale starts depending on the items list.
* By default, it takes the date of the first item and subtracts some time for free space.
*/
getStartDate(itemsBuilder: IItemsIterator): Date;
/**
* Returns the date when the scale ends depending on the items list.
* By default, it takes the date of the last item and adds some time for free space.
*/
getEndDate(itemsBuilder: IItemsIterator): Date;
}