@amcharts/amcharts5
Version:
amCharts 5
131 lines • 6.88 kB
JavaScript
import { LineSeries } from "./LineSeries";
import { p100 } from "../../../core/util/Percent";
import { curveStepAfter } from "d3-shape";
export class StepLineSeries extends LineSeries {
_afterNew() {
this._setDefault("curveFactory", curveStepAfter);
super._afterNew();
}
_getPoints(dataItem, o) {
let points = o.points;
let width = this.get("stepWidth", p100).value / 2;
let itemLocationX0 = dataItem.get("locationX", o.locationX);
let itemLocationY0 = dataItem.get("locationY", o.locationY);
let itemLocationX1 = itemLocationX0;
let itemLocationY1 = itemLocationY0;
if (o.baseAxis === o.xAxis) {
itemLocationX0 -= width;
itemLocationX1 += width;
}
else if (o.baseAxis === o.yAxis) {
itemLocationY0 -= width;
itemLocationY1 += width;
}
let xPos0 = o.xAxis.getDataItemPositionX(dataItem, o.xField, itemLocationX0, o.vcx);
let yPos0 = o.yAxis.getDataItemPositionY(dataItem, o.yField, itemLocationY0, o.vcy);
let xPos1 = o.xAxis.getDataItemPositionX(dataItem, o.xField, itemLocationX1, o.vcx);
let yPos1 = o.yAxis.getDataItemPositionY(dataItem, o.yField, itemLocationY1, o.vcy);
if (this._shouldInclude(xPos0)) {
const iPoint0 = this.getPoint(xPos0, yPos0);
const point0 = [iPoint0.x, iPoint0.y];
const iPoint1 = this.getPoint(xPos1, yPos1);
const point1 = [iPoint1.x, iPoint1.y];
if (o.fillVisible) {
let xOpenPos0 = xPos0;
let yOpenPos0 = yPos0;
let xOpenPos1 = xPos1;
let yOpenPos1 = yPos1;
if (o.baseAxis === o.xAxis) {
yOpenPos0 = o.basePosY;
yOpenPos1 = o.basePosY;
}
else if (o.baseAxis === o.yAxis) {
xOpenPos0 = o.basePosX;
xOpenPos1 = o.basePosX;
}
if (o.getOpen) {
let valueX = dataItem.get(o.xOpenField);
let valueY = dataItem.get(o.yOpenField);
if (valueX != null && valueY != null) {
itemLocationX0 = dataItem.get("openLocationX", o.openLocationX);
itemLocationY0 = dataItem.get("openLocationY", o.openLocationY);
itemLocationX1 = itemLocationX0;
itemLocationY1 = itemLocationY0;
if (o.baseAxis === o.xAxis) {
itemLocationX0 -= width;
itemLocationX1 += width;
}
else if (o.baseAxis === o.yAxis) {
itemLocationY0 -= width;
itemLocationY1 += width;
}
if (o.stacked) {
let stackToItemX = dataItem.get("stackToItemX");
let stackToItemY = dataItem.get("stackToItemY");
if (stackToItemX) {
xOpenPos0 = o.xAxis.getDataItemPositionX(stackToItemX, o.xField, itemLocationX0, stackToItemX.component.get("vcx"));
xOpenPos1 = o.xAxis.getDataItemPositionX(stackToItemX, o.xField, itemLocationX1, stackToItemX.component.get("vcx"));
}
else {
if (o.yAxis === o.baseAxis) {
xOpenPos0 = o.basePosX;
xOpenPos1 = o.basePosX;
}
else if (o.baseAxis === o.yAxis) {
xOpenPos0 = o.xAxis.getDataItemPositionX(dataItem, o.xOpenField, itemLocationX0, o.vcx);
xOpenPos1 = o.xAxis.getDataItemPositionX(dataItem, o.xOpenField, itemLocationX1, o.vcx);
}
}
if (stackToItemY) {
yOpenPos0 = o.yAxis.getDataItemPositionY(stackToItemY, o.yField, itemLocationY0, stackToItemY.component.get("vcy"));
yOpenPos1 = o.yAxis.getDataItemPositionY(stackToItemY, o.yField, itemLocationY1, stackToItemY.component.get("vcy"));
}
else {
if (o.xAxis === o.baseAxis) {
yOpenPos0 = o.basePosY;
yOpenPos1 = o.basePosY;
}
else if (o.baseAxis === o.yAxis) {
yOpenPos0 = o.yAxis.getDataItemPositionY(dataItem, o.yOpenField, itemLocationY0, o.vcy);
yOpenPos1 = o.yAxis.getDataItemPositionY(dataItem, o.yOpenField, itemLocationY1, o.vcy);
}
}
}
else {
xOpenPos0 = o.xAxis.getDataItemPositionX(dataItem, o.xOpenField, itemLocationX0, o.vcx);
yOpenPos0 = o.yAxis.getDataItemPositionY(dataItem, o.yOpenField, itemLocationY0, o.vcy);
xOpenPos1 = o.xAxis.getDataItemPositionX(dataItem, o.xOpenField, itemLocationX1, o.vcx);
yOpenPos1 = o.yAxis.getDataItemPositionY(dataItem, o.yOpenField, itemLocationY1, o.vcy);
}
}
}
let closeIPoint0 = this.getPoint(xOpenPos0, yOpenPos0);
let closeIPoint1 = this.getPoint(xOpenPos1, yOpenPos1);
point0[2] = closeIPoint0.x;
point0[3] = closeIPoint0.y;
point1[2] = closeIPoint1.x;
point1[3] = closeIPoint1.y;
}
points.push(point0);
points.push(point1);
dataItem.set("point", { x: point0[0] + (point1[0] - point0[0]) / 2, y: point0[1] + (point1[1] - point0[1]) / 2 });
}
if (this.get("noRisers")) {
o.points = [];
o.segments.push(points);
}
}
}
Object.defineProperty(StepLineSeries, "className", {
enumerable: true,
configurable: true,
writable: true,
value: "StepLineSeries"
});
Object.defineProperty(StepLineSeries, "classNames", {
enumerable: true,
configurable: true,
writable: true,
value: LineSeries.classNames.concat([StepLineSeries.className])
});
//# sourceMappingURL=StepLineSeries.js.map