import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy, TemplateRef } from '@angular/core'; import { ResizeEvent } from 'angular-resizable-element'; import { IViewModeAdaptor, IIdObject, IItemsIterator, IScale, IScaleGenerator, ITimelineItem, ITimelineZoom, IZoomsHandler, IScaleColumn, IItemTimeChangedEvent, IItemRowChangedEvent, TimelineViewMode } from './models'; import { DragEndEvent } from "angular-draggable-droppable/lib/draggable.directive"; import { StrategyManager } from "./strategy-manager"; import * as i0 from "@angular/core"; export declare class TimelineComponent implements AfterViewInit, OnDestroy { private _cdr; private _strategyManager; private _elementRef; private _platformId; /** * Indicates the current shown date in the middle of user`s screen. */ currentDate: Date; /** * Scale generator changes depending on current view type. */ scaleGenerator: IScaleGenerator; /** * View mode adaptor changes depending on current view type. */ viewModeAdaptor: IViewModeAdaptor; dateMarkerLeftPosition: number; scale: IScale | undefined; itemsIterator: IItemsIterator; zoomsHandler: IZoomsHandler; private _ignoreNextScrollEvent; private _destroy$; /** * Emits event when startDate and endDate of some item was changed by resizing/moving it. */ itemTimeChanged: EventEmitter; /** * Emits event when item was moved by Y axis. */ itemRowChanged: EventEmitter; /** * Emits event when current zoom was changed. */ zoomChanged: EventEmitter>; /** * Emits event when user clicked somewhere on time grid. */ timeGridClicked: EventEmitter<{ originalEvent: Event; row: ITimelineItem; column: IScaleColumn; }>; /** * The locale used to format dates. By default is 'en' */ locale: string; /** * Height of the each row in pixels. By default is 40. */ rowHeight: number; /** * Height of the each timeline item in pixels. Can't be bigger then 'rowHeight' property. By default is 30. */ itemHeight: number; /** * Height of top dates panel in pixels. By default is 60. */ headerHeight: number; /** * The label of left panel. By default is empty. */ panelLabel: string; /** * Width of left panel in pixels. By default is 160. */ panelWidth: number; /** * Minimal width of left panel in pixels. By default is 50. */ minPanelWidth: number; /** * Maximal width of left panel in pixels. By default is 400. */ maxPanelWidth: number; /** * Sets the left displacement in pixels between parent and child groups in left panel. By default is 15. */ offsetForChildPanelItem: number; /** * Can resize panel. By default is true. */ isPanelResizable: boolean; /** * If false then date marker will be not visible. */ showDateMarket: boolean; /** * Custom template for item in left panel. */ panelItemTemplate: TemplateRef<{ item: ITimelineItem; index: number; depth: number; locale: string; }>; /** * Custom template for item in timeline. */ itemContentTemplate: TemplateRef<{ $implicit: ITimelineItem; locale: string; }> | undefined; /** * Custom template for separators between columns. */ columnSeparatorTemplate: TemplateRef<{ column: IScaleColumn; index: number; columnWidth: number; headerHeight: number; }> | undefined; /** * Custom template for marker that indicates current time. */ dateMarkerTemplate: TemplateRef<{ leftPosition: number; }> | undefined; /** * Register array of custom zooms. * Current zoom can be changed to any existed in this array by calling method "changeZoom()" */ set zooms(value: ITimelineZoom[]); /** * The items of timeline. */ set items(items: ITimelineItem[]); /** * Visible timeline width (container visible width - panel width = timeline visible width). */ get visibleScaleWidth(): number; /** * Active zoom. */ get zoom(): ITimelineZoom; /** * Registered zooms list. */ get zooms(): ITimelineZoom[]; constructor(_cdr: ChangeDetectorRef, _strategyManager: StrategyManager, _elementRef: ElementRef, _platformId: object); ngAfterViewInit(): void; /** * Recalculate and update view. */ redraw(): void; /** * Set horizontal scroll in the middle of the date */ attachCameraToDate(date: Date): void; /** * Automatically chooses the most optimal zoom and sets horizontal scroll to the center of the items. * Padding sets minimal spacing from left and right to the first and last items. */ fitToContent(paddings: number): void; /** * Change zoom to one of the existed */ changeZoom(zoom: ITimelineZoom): void; /** * Find zoom by its index and change */ changeZoomByIndex(index: number): void; /** * Changes zoom to the max value */ zoomFullIn(): void; /** * Changes zoom to the min value */ zoomFullOut(): void; /** * Changes zoom for 1 step back */ zoomIn(): void; /** * Changes zoom for 1 step forward */ zoomOut(): void; /** * Accepts the relative coordinates to the timeline container and returns the row and column. */ getCellByCoordinates(x: number, y: number): { row: ITimelineItem | undefined; column: IScaleColumn; }; _getCurrentDate(): Date; _onItemMoved(event: DragEndEvent, item: ITimelineItem): void; private _onItemMovedHorizontally; private _onItemMovedVertically; private _calculateOptimalZoom; _trackById(index: number, item: IIdObject): number | string; _handleContentClick(event: MouseEvent): void; _onItemResized(event: ResizeEvent, item: ITimelineItem): void; private _onScroll; private _generateScale; private _updateItemsPosition; private _updateItemPosition; private _calculateItemLeftPosition; private _calculateItemWidth; private _recalculateDateMarkerPosition; private _setStrategies; ngOnDestroy(): void; static ɵfac: i0.ɵɵFactoryDeclaration, never>; static ɵcmp: i0.ɵɵComponentDeclaration, "timeline-calendar", never, { "locale": { "alias": "locale"; "required": false; }; "rowHeight": { "alias": "rowHeight"; "required": false; }; "itemHeight": { "alias": "itemHeight"; "required": false; }; "headerHeight": { "alias": "headerHeight"; "required": false; }; "panelLabel": { "alias": "panelLabel"; "required": false; }; "panelWidth": { "alias": "panelWidth"; "required": false; }; "minPanelWidth": { "alias": "minPanelWidth"; "required": false; }; "maxPanelWidth": { "alias": "maxPanelWidth"; "required": false; }; "offsetForChildPanelItem": { "alias": "offsetForChildPanelItem"; "required": false; }; "isPanelResizable": { "alias": "isPanelResizable"; "required": false; }; "showDateMarket": { "alias": "showDateMarket"; "required": false; }; "panelItemTemplate": { "alias": "panelItemTemplate"; "required": false; }; "itemContentTemplate": { "alias": "itemContentTemplate"; "required": false; }; "columnSeparatorTemplate": { "alias": "columnSeparatorTemplate"; "required": false; }; "dateMarkerTemplate": { "alias": "dateMarkerTemplate"; "required": false; }; "zooms": { "alias": "zooms"; "required": false; }; "items": { "alias": "items"; "required": false; }; }, { "itemTimeChanged": "itemTimeChanged"; "itemRowChanged": "itemRowChanged"; "zoomChanged": "zoomChanged"; "timeGridClicked": "timeGridClicked"; }, never, never, false, never>; }