UNPKG

igniteui-angular-charts

Version:

Ignite UI Angular charting components for building rich data visualizations for modern web apps.

236 lines (234 loc) 10.4 kB
import { Component, forwardRef, Input, ChangeDetectionStrategy } from '@angular/core'; import { IgxTimeAxisBreakCollection } from "./igx-time-axis-break-collection"; import { TimeAxisLabellingMode_$type } from "./TimeAxisLabellingMode"; import { IgxTimeAxisLabelFormatCollection } from "./igx-time-axis-label-format-collection"; import { IgxTimeAxisIntervalCollection } from "./igx-time-axis-interval-collection"; import { IgxTimeAxisBaseComponent } from "./igx-time-axis-base-component"; import { IgxCategoryAxisBaseComponent } from "./igx-category-axis-base-component"; import { IgxAxisComponent } from "./igx-axis-component"; import { TimeXAxis } from "./TimeXAxis"; import { ensureEnum } from "igniteui-angular-core"; import { TimeAxisBreakCollection as TimeAxisBreakCollection_internal } from "./TimeAxisBreakCollection"; import { TimeAxisBreak } from "./TimeAxisBreak"; import { SyncableObservableCollection$1 } from "igniteui-angular-core"; import { TimeAxisLabelFormatCollection as TimeAxisLabelFormatCollection_internal } from "./TimeAxisLabelFormatCollection"; import { TimeAxisLabelFormat } from "./TimeAxisLabelFormat"; import { TimeAxisIntervalCollection as TimeAxisIntervalCollection_internal } from "./TimeAxisIntervalCollection"; import { TimeAxisInterval } from "./TimeAxisInterval"; import * as i0 from "@angular/core"; /** * A horizontal axis that uses a DateTime scale. * * The `TimeXAxis` is a horizontal axis that uses a DateTime scale. * * ```html * <igx-data-chart * [dataSource]="data"> * <igx-time-x-axis * dateTimeMemberPath="date" * #xAxis> * </igx-time-x-axis> * </igx-data-chart> * ``` * * ```ts * let xAxis = new IgxTimeXAxisComponent(); * xAxis.dataTimeMemberPath="date"; * this.chart.axes.add(xAxis); * ``` */ export let IgxTimeXAxisComponent = /*@__PURE__*/ (() => { class IgxTimeXAxisComponent extends IgxTimeAxisBaseComponent { constructor() { super(); this._breaks = null; this._labelFormats = null; this._intervals = null; } createImplementation() { return new TimeXAxis(); } /** * @hidden */ get i() { return this._implementation; } get isPiecewise() { return this.i.ds; } /** * TimeAxisBreaks to apply to this axis, representing spans of time to omit, such as weekends. * * The `Breaks` to apply to this axis, representing spans of time to omit, such as weekends. * * ```html * <igx-data-chart * [dataSource]="data"> * <igx-time-x-axis * dateTimeMemberPath="date" * #xAxis> * </igx-time-x-axis> * </igx-data-chart> * ``` * * ```ts * let xAxis = new IgxTimeXAxisComponent(); * xAxis.dataTimeMemberPath="date"; * this.chart.axes.add(xAxis); * ``` */ get breaks() { if (this._breaks === null) { let coll = new IgxTimeAxisBreakCollection(); let innerColl = this.i.breaks; if (!innerColl) { innerColl = new TimeAxisBreakCollection_internal(); } this._breaks = coll._fromInner(innerColl); } return this._breaks; } set breaks(v) { if (this._breaks !== null) { this._breaks._setSyncTarget(null); this._breaks = null; } let coll = new IgxTimeAxisBreakCollection(); this._breaks = coll._fromOuter(v); let syncColl = new SyncableObservableCollection$1(TimeAxisBreak.$type); let innerColl = this.i.breaks; if (!innerColl) { innerColl = new TimeAxisBreakCollection_internal(); } syncColl._inner = innerColl; syncColl.clear(); this._breaks._setSyncTarget(syncColl); } /** * Gets or sets the labelling mode to use when the automatic label formats are applied. */ get labellingMode() { return this.i.st; } set labellingMode(v) { this.i.st = ensureEnum(TimeAxisLabellingMode_$type, v); } /** * A list of axis label formats to apply, which are selected according to the visible axis range. * The label format selected will be the one with the largest range smaller than the visible range of the axis. */ get labelFormats() { if (this._labelFormats === null) { let coll = new IgxTimeAxisLabelFormatCollection(); let innerColl = this.i.labelFormats; if (!innerColl) { innerColl = new TimeAxisLabelFormatCollection_internal(); } this._labelFormats = coll._fromInner(innerColl); } return this._labelFormats; } set labelFormats(v) { if (this._labelFormats !== null) { this._labelFormats._setSyncTarget(null); this._labelFormats = null; } let coll = new IgxTimeAxisLabelFormatCollection(); this._labelFormats = coll._fromOuter(v); let syncColl = new SyncableObservableCollection$1(TimeAxisLabelFormat.$type); let innerColl = this.i.labelFormats; if (!innerColl) { innerColl = new TimeAxisLabelFormatCollection_internal(); } syncColl._inner = innerColl; syncColl.clear(); this._labelFormats._setSyncTarget(syncColl); } /** * A list of axis label intervals to apply, which are selected according to the visible axis range. * The interval selected will be the one with the largest range smaller than the visible range of the axis. */ get intervals() { if (this._intervals === null) { let coll = new IgxTimeAxisIntervalCollection(); let innerColl = this.i.intervals; if (!innerColl) { innerColl = new TimeAxisIntervalCollection_internal(); } this._intervals = coll._fromInner(innerColl); } return this._intervals; } set intervals(v) { if (this._intervals !== null) { this._intervals._setSyncTarget(null); this._intervals = null; } let coll = new IgxTimeAxisIntervalCollection(); this._intervals = coll._fromOuter(v); let syncColl = new SyncableObservableCollection$1(TimeAxisInterval.$type); let innerColl = this.i.intervals; if (!innerColl) { innerColl = new TimeAxisIntervalCollection_internal(); } syncColl._inner = innerColl; syncColl.clear(); this._intervals._setSyncTarget(syncColl); } /** * Gets if the current axis is of category date time axis type */ get isCategoryDateTime() { return this.i.dg; } findByName(name) { var baseResult = super.findByName(name); if (baseResult) { return baseResult; } if (this.breaks != null && this.breaks.findByName && this.breaks.findByName(name)) { return this.breaks.findByName(name); } if (this.labelFormats != null && this.labelFormats.findByName && this.labelFormats.findByName(name)) { return this.labelFormats.findByName(name); } if (this.intervals != null && this.intervals.findByName && this.intervals.findByName(name)) { return this.intervals.findByName(name); } return null; } getValueLabel(value) { let iv = this.i.i6(value); return (iv); } /** * Gets the index of the data item with the value nearest the given value. * @param unscaledValue * The value to find a value close to. */ getIndexClosestToUnscaledValue(unscaledValue) { let iv = this.i.i$f(unscaledValue); return (iv); } } IgxTimeXAxisComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxTimeXAxisComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); IgxTimeXAxisComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: IgxTimeXAxisComponent, selector: "igx-time-x-axis", inputs: { breaks: "breaks", labellingMode: "labellingMode", labelFormats: "labelFormats", intervals: "intervals" }, providers: [{ provide: IgxTimeAxisBaseComponent, useExisting: forwardRef(() => IgxTimeXAxisComponent) }, { provide: IgxCategoryAxisBaseComponent, useExisting: forwardRef(() => IgxTimeXAxisComponent) }, { provide: IgxAxisComponent, useExisting: forwardRef(() => IgxTimeXAxisComponent) }], usesInheritance: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); return IgxTimeXAxisComponent; })(); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: IgxTimeXAxisComponent, decorators: [{ type: Component, args: [{ selector: 'igx-time-x-axis', template: ``, providers: [{ provide: IgxTimeAxisBaseComponent, useExisting: forwardRef(() => IgxTimeXAxisComponent) }, { provide: IgxCategoryAxisBaseComponent, useExisting: forwardRef(() => IgxTimeXAxisComponent) }, { provide: IgxAxisComponent, useExisting: forwardRef(() => IgxTimeXAxisComponent) }], changeDetection: ChangeDetectionStrategy.OnPush }] }], ctorParameters: function () { return []; }, propDecorators: { breaks: [{ type: Input }], labellingMode: [{ type: Input }], labelFormats: [{ type: Input }], intervals: [{ type: Input }] } });