devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
76 lines (74 loc) • 2.98 kB
JavaScript
/**
* DevExtreme (esm/viz/range_selector/range_view.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/
*/
function drawSeriesView(root, seriesDataSource, canvas, isAnimationEnabled) {
const seriesList = seriesDataSource.getSeries();
if (!seriesList.length) {
return
}
const valueAxis = seriesList[0].getValueAxis();
valueAxis.updateCanvas({
top: canvas.top,
bottom: 0,
height: canvas.height + canvas.top
});
seriesDataSource.adjustSeriesDimensions();
const valueRange = seriesDataSource.getBoundRange().val;
valueRange.sortCategories(valueAxis.getCategoriesSorter());
valueAxis.setBusinessRange(valueRange);
seriesList.forEach((series => {
series._extGroups.seriesGroup = series._extGroups.labelsGroup = root;
series.draw(isAnimationEnabled)
}))
}
function merge(a, b) {
return void 0 !== a ? a : b
}
export function RangeView(params) {
this._params = params;
this._clipRect = params.renderer.clipRect();
params.root.attr({
"clip-path": this._clipRect.id
})
}
RangeView.prototype = {
constructor: RangeView,
update: function(backgroundOption, backgroundTheme, canvas, isCompactMode, isAnimationEnabled, seriesDataSource) {
const renderer = this._params.renderer;
const root = this._params.root;
const canvasWidth = canvas.width - canvas.left;
let seriesGroup;
backgroundOption = backgroundOption || {};
root.clear();
this._clipRect.attr({
x: canvas.left,
y: canvas.top,
width: canvasWidth,
height: canvas.height
});
if (!isCompactMode) {
if (merge(backgroundOption.visible, backgroundTheme.visible)) {
if (backgroundOption.color) {
renderer.rect(canvas.left, canvas.top, canvasWidth + 1, canvas.height).attr({
fill: merge(backgroundOption.color, backgroundTheme.color),
class: "dx-range-selector-background"
}).append(root)
}
if (backgroundOption.image && backgroundOption.image.url) {
renderer.image(canvas.left, canvas.top, canvasWidth + 1, canvas.height, backgroundOption.image.url, merge(backgroundOption.image.location, backgroundTheme.image.location)).append(root)
}
}
if (seriesDataSource && seriesDataSource.isShowChart()) {
seriesGroup = renderer.g().attr({
class: "dxrs-series-group"
}).append(root);
drawSeriesView(seriesGroup, seriesDataSource, canvas, isAnimationEnabled)
}
}
}
};