180 lines
4.9 KiB
JavaScript
180 lines
4.9 KiB
JavaScript
/* *
|
|
*
|
|
* X-range series module
|
|
*
|
|
* (c) 2010-2021 Torstein Honsi, Lars A. V. Cabrera
|
|
*
|
|
* License: www.highcharts.com/license
|
|
*
|
|
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
*
|
|
* */
|
|
'use strict';
|
|
var __extends = (this && this.__extends) || (function () {
|
|
var extendStatics = function (d, b) {
|
|
extendStatics = Object.setPrototypeOf ||
|
|
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
return extendStatics(d, b);
|
|
};
|
|
return function (d, b) {
|
|
if (typeof b !== "function" && b !== null)
|
|
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
extendStatics(d, b);
|
|
function __() { this.constructor = d; }
|
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
};
|
|
})();
|
|
import SeriesRegistry from '../../Core/Series/SeriesRegistry.js';
|
|
var pointProto = SeriesRegistry.series.prototype.pointClass.prototype, ColumnPoint = SeriesRegistry.seriesTypes.column.prototype.pointClass;
|
|
import U from '../../Core/Utilities.js';
|
|
var extend = U.extend;
|
|
/* *
|
|
*
|
|
* Class
|
|
*
|
|
* */
|
|
var XRangePoint = /** @class */ (function (_super) {
|
|
__extends(XRangePoint, _super);
|
|
function XRangePoint() {
|
|
/* *
|
|
*
|
|
* Static Functions
|
|
*
|
|
* */
|
|
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
/* *
|
|
*
|
|
* Properties
|
|
*
|
|
* */
|
|
_this.options = void 0;
|
|
_this.series = void 0;
|
|
return _this;
|
|
}
|
|
/**
|
|
* Return color of a point based on its category.
|
|
*
|
|
* @private
|
|
* @function getColorByCategory
|
|
*
|
|
* @param {object} series
|
|
* The series which the point belongs to.
|
|
*
|
|
* @param {object} point
|
|
* The point to calculate its color for.
|
|
*
|
|
* @return {object}
|
|
* Returns an object containing the properties color and colorIndex.
|
|
*/
|
|
XRangePoint.getColorByCategory = function (series, point) {
|
|
var colors = series.options.colors || series.chart.options.colors, colorCount = colors ?
|
|
colors.length :
|
|
series.chart.options.chart.colorCount, colorIndex = point.y % colorCount, color = colors && colors[colorIndex];
|
|
return {
|
|
colorIndex: colorIndex,
|
|
color: color
|
|
};
|
|
};
|
|
/* *
|
|
*
|
|
* Functions
|
|
*
|
|
* */
|
|
/**
|
|
* @private
|
|
*/
|
|
XRangePoint.prototype.resolveColor = function () {
|
|
var series = this.series;
|
|
if (series.options.colorByPoint && !this.options.color) {
|
|
var colorByPoint = XRangePoint.getColorByCategory(series, this);
|
|
if (!series.chart.styledMode) {
|
|
this.color = colorByPoint.color;
|
|
}
|
|
if (!this.options.colorIndex) {
|
|
this.colorIndex = colorByPoint.colorIndex;
|
|
}
|
|
}
|
|
else if (!this.color) {
|
|
this.color = series.color;
|
|
}
|
|
};
|
|
/**
|
|
* Extend init to have y default to 0.
|
|
*
|
|
* @private
|
|
*/
|
|
XRangePoint.prototype.init = function () {
|
|
pointProto.init.apply(this, arguments);
|
|
if (!this.y) {
|
|
this.y = 0;
|
|
}
|
|
return this;
|
|
};
|
|
/**
|
|
* @private
|
|
*/
|
|
XRangePoint.prototype.setState = function () {
|
|
pointProto.setState.apply(this, arguments);
|
|
this.series.drawPoint(this, this.series.getAnimationVerb());
|
|
};
|
|
/**
|
|
* Add x2 and yCategory to the available properties for tooltip formats.
|
|
*
|
|
* @private
|
|
*/
|
|
XRangePoint.prototype.getLabelConfig = function () {
|
|
var cfg = pointProto.getLabelConfig.call(this), yCats = this.series.yAxis.categories;
|
|
cfg.x2 = this.x2;
|
|
cfg.yCategory = this.yCategory = yCats && yCats[this.y];
|
|
return cfg;
|
|
};
|
|
/**
|
|
* @private
|
|
*/
|
|
XRangePoint.prototype.isValid = function () {
|
|
return typeof this.x === 'number' &&
|
|
typeof this.x2 === 'number';
|
|
};
|
|
return XRangePoint;
|
|
}(ColumnPoint));
|
|
extend(XRangePoint.prototype, {
|
|
ttBelow: false,
|
|
tooltipDateKeys: ['x', 'x2']
|
|
});
|
|
/* *
|
|
*
|
|
* Default Export
|
|
*
|
|
* */
|
|
export default XRangePoint;
|
|
/* *
|
|
*
|
|
* API Declarations
|
|
*
|
|
* */
|
|
/**
|
|
* The ending X value of the range point.
|
|
* @name Highcharts.Point#x2
|
|
* @type {number|undefined}
|
|
* @requires modules/xrange
|
|
*/
|
|
/**
|
|
* Extend applyOptions so that `colorByPoint` for x-range means that one
|
|
* color is applied per Y axis category.
|
|
*
|
|
* @private
|
|
* @function Highcharts.Point#applyOptions
|
|
*
|
|
* @return {Highcharts.Series}
|
|
*/
|
|
/**
|
|
* @interface Highcharts.PointOptionsObject in parts/Point.ts
|
|
*/ /**
|
|
* The ending X value of the range point.
|
|
* @name Highcharts.PointOptionsObject#x2
|
|
* @type {number|undefined}
|
|
* @requires modules/xrange
|
|
*/
|
|
(''); // keeps doclets above in JS file
|