@ansible/react-json-chart-builder
Version:
A chart builder component in react, which uses JSON for schema.
80 lines • 3.19 kB
JavaScript
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
var _a;
import React from 'react';
import { ChartGroup as PFChartGroup } from '@patternfly/react-charts/victory';
import { ChartKind, ChartType } from '../types';
import createChart from './createChart';
import createStack from './createStack';
import { getBarWidthFromData } from '../Common/helpers';
var components = (_a = {},
_a[ChartKind.simple] = createChart,
_a[ChartKind.stack] = createStack,
_a);
var createDynamicChildren = function (_a) {
var template = _a.template, parent = _a.parent, data = _a.data, width = _a.width;
return __spreadArray([], data.map(function (_d, idx) { return (__assign(__assign({}, template), { id: idx, parent: parent, props: __assign(__assign({}, (template.type === ChartType.bar && {
barWidth: getBarWidthFromData(data, width)
})), template.props) })); }), true);
};
var getTemplateChart = function (_a) {
var templateId = _a.templateId, charts = _a.charts;
return charts.find(function (_a) {
var id = _a.id;
return id === templateId;
});
};
var createGroup = function (id, data, resolvedApi, width) {
var charts = data.schema;
var group = charts.find(function (_a) {
var i = _a.id;
return i === id;
});
var children = charts.filter(function (_a) {
var parent = _a.parent;
return parent === id;
});
var renderedChildren = [];
var templateChart = getTemplateChart({
templateId: group.template,
charts: charts
});
if (templateChart) {
children = createDynamicChildren({
template: templateChart,
parent: group.id,
data: resolvedApi.series,
width: width
});
renderedChildren = children.map(function (child, idx) {
return components[child.kind](child.id, __assign(__assign({}, data), { schema: [child] }), { series: [resolvedApi.series[idx]] });
});
}
else {
renderedChildren = children.map(function (child) { return components[child.kind](child.id, data, resolvedApi); });
}
return (React.createElement(PFChartGroup, __assign({ key: id }, (templateChart &&
templateChart.type === ChartType.bar && {
offset: getBarWidthFromData(resolvedApi.series, width)
}), group === null || group === void 0 ? void 0 : group.props), renderedChildren));
};
export default createGroup;
//# sourceMappingURL=createGroup.js.map