UNPKG

igniteui-angular-charts

Version:

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

319 lines (316 loc) 10.7 kB
/* THIS INFRAGISTICS ULTIMATE SOFTWARE LICENSE AGREEMENT ("AGREEMENT") LOCATED HERE: https://www.infragistics.com/legal/license/igultimate-la https://www.infragistics.com/legal/license/igultimate-eula GOVERNS THE LICENSING, INSTALLATION AND USE OF INFRAGISTICS SOFTWARE. BY DOWNLOADING AND/OR INSTALLING AND USING INFRAGISTICS SOFTWARE: you are indicating that you have read and understand this Agreement, and agree to be legally bound by it on behalf of the yourself and your company. */ import { Component, Input } from '@angular/core'; import { IgxAxisComponent } from './igx-axis-component'; import { toPoint, fromRect, ensureBool, NamePatcher } from "igniteui-angular-core"; import * as i0 from "@angular/core"; /** * Represents the base class for all IgxDataChartComponent category-based axes. * * ```html * <igx-data-chart * [dataSource]="data"> * * <igx-category-x-axis * label="label" * #xAxis> * </igx-category-x-axis> * <igx-numeric-y-axis * #yAxis> * </igx-numeric-y-axis> * * <igx-column-series * [xAxis]="xAxis" * [yAxis]="yAxis" * valueMemberPath="value"> * </igx-column-series> * <igx-column-series * [xAxis]="xAxis" * [yAxis]="yAxis" * valueMemberPath="value"> * </igx-column-series> * </igx-data-chart> * ``` * * ```ts * let series = new IgxColumnSeriesComponent(); * series.xAxis = this.xAxis; * series.yAxis = this.yAxis; * series.valueMemberPath="value"; * this.chart.series.add(series); * ``` */ export class IgxCategoryAxisBaseComponent extends IgxAxisComponent { constructor() { super(); this._chartLevelData = null; this._dataSource = null; if (this._styling) { NamePatcher.ensureStylablePatched(Object.getPrototypeOf(this)); } } provideData(data) { this._chartLevelData = data; this.updateDataSource(); } updateDataSource() { if (this._dataSource == null) { this.i.itemsSource = this._chartLevelData; } else { this.i.itemsSource = this._dataSource; } } set dataSource(value) { this._dataSource = value; this.updateDataSource(); //console.log("setting axis data source: " + value) } get dataSource() { if (this._dataSource != null) { return this._dataSource; } return this.i.itemsSource; } /** * @hidden */ get i() { return this._implementation; } /** * Gets if the current axis is a continuous rather than a discrete scale */ get isContinuous() { return this.i.dl; } /** * Checks if the axis is of category axis type */ get isCategory() { return this.i.di; } /** * Gets the number of items in the current category axis items source. */ get itemsCount() { return this.i.qq; } set itemsCount(v) { this.i.qq = +v; } /** * Gets or sets the amount of space between adjacent categories for the current axis object. * The gap is silently clamped to the range [0, 1] when used. * * Use the `Gap` property to configure the spacing between items on a category axis with item spacing. * * A `Gap` of 0 allocates no space between items. A `Gap` of 1 allocates a space between items equal to the width of one item. * * To set the item spacing to 75% the width of one item, set the `Gap` to 0.75, as in this code: * * ```html * <igx-data-chart * [dataSource]="data"> * <igx-category-x-axis * label="label" * gap="0.75" * #xAxis> * </igx-category-x-axis> * <igx-numeric-y-axis * #yAxis> * </igx-numeric-y-axis> * <igx-column-series * [xAxis]="xAxis" * [yAxis]="yAxis" * valueMemberPath="value"> * </igx-column-series> * </igx-data-chart> * ``` */ get gap() { return this.i.qb; } set gap(v) { this.i.qb = +v; } /** * Gets or sets the maximum gap value to allow. This defaults to 1.0. */ get maximumGap() { return this.i.qi; } set maximumGap(v) { this.i.qi = +v; } /** * Gets or sets the minimum amount of pixels to use for the gap between categories, if possible. */ get minimumGapSize() { return this.i.qj; } set minimumGapSize(v) { this.i.qj = +v; } /** * Gets or sets the amount of overlap between adjacent categories for the current axis object. * The overlap is silently clamped to the range [-1, 1] when used. * * Use the `Overlap` property to configure the spacing between items on a category axis with item spacing and more than one series. * * An `Overlap` of 0 places grouped items adjacent to each other. An `Overlap` of 1 places grouped items in the same axis space, completely overlapping. An `Overlap` of -1 places a space between grouped items equal to the width of one item. * * To place grouped items with 75% overlap, set the `Overlap` to 0.75, as in this code: * * ```html * <igx-data-chart * [dataSource]="data"> * * <igx-category-x-axis * label="label" * overlap="0.75" * #xAxis> * </igx-category-x-axis> * <igx-numeric-y-axis * #yAxis> * </igx-numeric-y-axis> * * <igx-column-series * [xAxis]="xAxis" * [yAxis]="yAxis" * valueMemberPath="value"> * </igx-column-series> * <igx-column-series * [xAxis]="xAxis" * [yAxis]="yAxis" * valueMemberPath="value"> * </igx-column-series> * </igx-data-chart> * ``` */ get overlap() { return this.i.qk; } set overlap(v) { this.i.qk = +v; } /** * Gets or sets whether the category axis should use clustering display mode even if no series are present that would force clustering mode. * * `UseClusteringMode` applies grouping and spacing to a category axis equivalent to the grouping that occurs when grouping series, such as ColumnSeries, are used. * * Try setting it on an axis displaying financial series to adjust the spacing on the left and right sides of the axis: * * ```html * <igx-data-chart * [dataSource]="financialData"> * <igx-category-x-axis * label="time" * useClusteringMode="true" * #xAxis> * </igx-category-x-axis> * <igx-numeric-y-axis * #yAxis> * </igx-numeric-y-axis> * * <igx-column-series * [xAxis]="xAxis" * [yAxis]="yAxis" * valueMemberPath="value"> * </igx-column-series> * <igx-financial-price-series * [xAxis]="xAxis" * [yAxis]="yAxis" * openMemberPath="open" * highMemberPath="high" * lowMemberPath="low" * closeMemberPath="close" * volumeMemberPath="volume"> * </igx-financial-price-series> * </igx-data-chart> * ``` */ get useClusteringMode() { return this.i.p5; } set useClusteringMode(v) { this.i.p5 = ensureBool(v); } /** * Gets or sets whether the last label on the axis is mandatory. When true, the axis will ensure the last data item's label is always displayed, * even if it does not fall on a regular interval step. This may cause labels to be unevenly spaced, triggering the more expensive anti-collision path. */ get isLastLabelMandatory() { return this.i.p3; } set isLastLabelMandatory(v) { this.i.p3 = ensureBool(v); } getFullRange() { let iv = this.i.ag(); return (iv); } getMemberPathValue(memberPathName) { let iv = this.i.jf(memberPathName); return (iv); } getCategoryBoundingBox(point, useInterpolation, singularWidth) { let iv = this.i.rr(toPoint(point), useInterpolation, singularWidth); return fromRect(iv); } getCategoryBoundingBoxHelper(point, useInterpolation, singularWidth, isVertical) { let iv = this.i.rs(toPoint(point), useInterpolation, singularWidth, isVertical); return fromRect(iv); } /** * Unscales a value from screen space into axis space. * @param unscaledValue * The scaled value in screen coordinates to unscale into axis space. */ unscaleValue(unscaledValue) { let iv = this.i.qm(unscaledValue); return (iv); } notifySetItem(index, oldItem, newItem) { this.i.rb(index, oldItem, newItem); } /** * Used to manually notify the axis that the data source has reset or cleared its items. */ notifyClearItems() { this.i.q8(); } notifyInsertItem(index, newItem) { this.i.q9(index, newItem); } notifyRemoveItem(index, oldItem) { this.i.ra(index, oldItem); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0-rc.1", ngImport: i0, type: IgxCategoryAxisBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.0-rc.1", type: IgxCategoryAxisBaseComponent, isStandalone: true, selector: "ng-component", inputs: { dataSource: "dataSource", itemsCount: "itemsCount", gap: "gap", maximumGap: "maximumGap", minimumGapSize: "minimumGapSize", overlap: "overlap", useClusteringMode: "useClusteringMode", isLastLabelMandatory: "isLastLabelMandatory" }, usesInheritance: true, ngImport: i0, template: ``, isInline: true }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0-rc.1", ngImport: i0, type: IgxCategoryAxisBaseComponent, decorators: [{ type: Component, args: [{ template: ``, }] }], ctorParameters: () => [], propDecorators: { dataSource: [{ type: Input }], itemsCount: [{ type: Input }], gap: [{ type: Input }], maximumGap: [{ type: Input }], minimumGapSize: [{ type: Input }], overlap: [{ type: Input }], useClusteringMode: [{ type: Input }], isLastLabelMandatory: [{ type: Input }] } });