@amcharts/amcharts5
Version:
amCharts 5
99 lines • 3.79 kB
JavaScript
import { LabelSeries } from "./LabelSeries";
import { PointedRectangle } from "../../../core/render/PointedRectangle";
import { Template } from "../../../core/util/Template";
import * as $ease from "../../../core/util/Ease";
export class CalloutSeries extends LabelSeries {
constructor() {
super(...arguments);
Object.defineProperty(this, "_tag", {
enumerable: true,
configurable: true,
writable: true,
value: "callout"
});
}
_tweakBullet2(label, dataItem) {
const dataContext = dataItem.dataContext;
label.set("background", PointedRectangle.new(this._root, { themeTags: ["callout"] }, dataContext.bgSettings));
}
_tweakBullet(container, dataItem) {
super._tweakBullet(container, dataItem);
container.events.off("click");
const dataContext = dataItem.dataContext;
const template = dataContext.settings;
if (template) {
const label = this.getPrivate("label");
if (label) {
label.events.on("positionchanged", () => {
this._updatePointer(label);
});
label.events.on("click", () => {
const spriteResizer = this.spriteResizer;
if (spriteResizer.get("sprite") == label) {
spriteResizer.set("sprite", undefined);
}
else {
spriteResizer.set("sprite", label);
}
if (this._erasingEnabled) {
this._disposeIndex(dataContext.index);
}
});
label.on("scale", () => {
this._updatePointer(label);
});
label.on("rotation", () => {
this._updatePointer(label);
});
label.setAll({ draggable: true });
label.on("x", (x) => {
template.set("x", x);
});
label.on("y", (y) => {
template.set("y", y);
});
const defaultState = label.states.lookup("default");
setTimeout(() => {
label.animate({ key: "y", to: -label.height() / 2 - 10, from: 0, duration: defaultState.get("stateAnimationDuration", 500), easing: defaultState.get("stateAnimationEasing", $ease.out($ease.cubic)) });
}, 50);
}
}
}
_updatePointer(label) {
const background = label.get("background");
if (background instanceof PointedRectangle) {
const parent = label.parent;
if (parent) {
let point = parent.toGlobal({ x: 0, y: 0 });
point = background.toLocal(point);
background.setAll({ pointerX: point.x, pointerY: point.y });
}
}
}
_afterTextSave(dataContext) {
dataContext.bgSettings = this._getBgTemplate();
}
_hideAllBullets() {
}
_getBgTemplate() {
const template = {};
const fill = this.get("fillColor");
if (fill != null) {
template.fill = fill;
}
return Template.new(template);
}
}
Object.defineProperty(CalloutSeries, "className", {
enumerable: true,
configurable: true,
writable: true,
value: "CalloutSeries"
});
Object.defineProperty(CalloutSeries, "classNames", {
enumerable: true,
configurable: true,
writable: true,
value: LabelSeries.classNames.concat([CalloutSeries.className])
});
//# sourceMappingURL=CalloutSeries.js.map