@antv/t8
Version:
T8 is a text visualization solution for unstructured data within the AntV technology stack, and it is a declarative T8 markdown syntax that can be used to describe the content of data interpretation reports.
53 lines (49 loc) • 2.26 kB
JavaScript
;
var getElementFontSize = require('../../utils/getElementFontSize.js');
require('../utils/selection.js');
var scales = require('../utils/scales.js');
var paths = require('../utils/paths.js');
var createSvg = require('../utils/createSvg.js');
var getSafeDomain = require('../utils/getSafeDomain.js');
var _const = require('../utils/const.js');
var renderSeasonalityChart = function (container, config, paragraphType, themeSeedToken) {
var _a = config.data, data = _a === void 0 ? [] : _a, _b = config.range, range = _b === void 0 ? [] : _b;
if (!data.length)
return;
var isRangeValid = range.every(function (el) {
return Array.isArray(el) && el.length === 2 && typeof el[0] === 'number' && typeof el[1] === 'number' && el[0] < el[1];
});
if (!isRangeValid) {
console.warn('Invalid range input:', range);
return;
}
var chartSize = getElementFontSize.getElementFontSize(paragraphType, themeSeedToken);
var height = chartSize;
var width = Math.max(chartSize * 2, data.length * 2);
var svg = createSvg.createSvg(container, width, height);
var xScale = scales.scaleLinear([0, (data === null || data === void 0 ? void 0 : data.length) - 1], [0, width]);
var yDomain = getSafeDomain.getSafeDomain(data);
var yScale = scales.scaleLinear(yDomain, [_const.SCALE_ADJUST, height - _const.SCALE_ADJUST]);
range.forEach(function (el) {
var dataLastIndex = data.length - 1;
var start = Math.max(0, el[0]);
var end = Math.min(dataLastIndex, el[1]);
if (start >= end) {
return;
}
svg
.append('rect')
.attr('x', xScale(el[0]))
.attr('y', _const.SCALE_ADJUST)
.attr('width', xScale(el[1]) - xScale(el[0]) - _const.WIDTH_MARGIN)
.attr('height', height)
.attr('fill', _const.HIGHLIGHT_COLOR)
.attr('fill-opacity', _const.OPACITY);
});
var linePath = paths.line(xScale, yScale, height)(data);
if (linePath) {
svg.append('path').attr('d', linePath).attr('stroke', _const.LINE_STROKE_COLOR).attr('fill', 'transparent');
}
};
exports.renderSeasonalityChart = renderSeasonalityChart;
//# sourceMappingURL=index.js.map