devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
98 lines (97 loc) • 3.44 kB
JavaScript
/**
* DevExtreme (cjs/viz/core/center_template.js)
* Version: 24.2.6
* Build date: Mon Mar 17 2025
*
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
"use strict";
exports.plugins = void 0;
var _utils = require("../core/utils");
var _common = require("../../core/utils/common");
const pieChartPlugin = {
name: "center_template_pie_chart",
init: _common.noop,
dispose: function() {
this._centerTemplateGroup.linkOff().dispose()
},
extenders: {
_createHtmlStructure() {
const patchedFontOptions = (0, _utils.patchFontOptions)(this._themeManager._font);
this._centerTemplateGroup = this._renderer.g().attr({
class: "dxc-hole-template"
}).linkOn(this._renderer.root, "center-template").css(patchedFontOptions).linkAppend()
},
_renderExtraElements() {
this._requestChange(["CENTER_TEMPLATE"])
}
},
members: {
_renderCenterTemplate() {
const template = this.option("centerTemplate");
const centerTemplateGroup = this._centerTemplateGroup.clear();
if (!template) {
return
}
centerTemplateGroup.attr({
visibility: "hidden"
});
const center = this._getCenter();
this._getTemplate(template).render({
model: this,
container: centerTemplateGroup.element,
onRendered: () => {
const group = centerTemplateGroup;
const bBox = group.getBBox();
const bBoxCenterX = bBox.x + bBox.width / 2;
const bBoxCenterY = bBox.y + bBox.height / 2;
group.move(center.x - bBoxCenterX, center.y - bBoxCenterY);
group.attr({
visibility: "visible"
})
}
})
}
},
customize(constructor) {
constructor.addChange({
code: "CENTER_TEMPLATE",
handler: function() {
this._renderCenterTemplate()
},
option: "centerTemplate"
})
}
};
const gaugePlugin = {
name: "center_template_gauge",
init: _common.noop,
dispose: pieChartPlugin.dispose,
extenders: {
_initCore() {
this._createCenterTemplateGroup()
},
_renderContent() {
const patchedFontOptions = (0, _utils.patchFontOptions)(this._themeManager._font);
this._centerTemplateGroup.css(patchedFontOptions);
this._requestChange(["CENTER_TEMPLATE"])
},
_updateExtraElements() {
this._requestChange(["CENTER_TEMPLATE"])
}
},
members: {
_renderCenterTemplate: pieChartPlugin.members._renderCenterTemplate,
_createCenterTemplateGroup() {
this._centerTemplateGroup = this._renderer.g().attr({
class: "dxg-hole-template"
}).linkOn(this._renderer.root, "center-template").linkAppend()
}
},
customize: pieChartPlugin.customize
};
const plugins = exports.plugins = {
pieChart: pieChartPlugin,
gauge: gaugePlugin
};