@ansible/react-json-chart-builder
Version:
A chart builder component in react, which uses JSON for schema.
85 lines • 3.54 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 __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
var react_1 = __importDefault(require("react"));
var victory_1 = require("@patternfly/react-charts/victory");
var types_1 = require("../types");
var createChart_1 = __importDefault(require("./createChart"));
var createStack_1 = __importDefault(require("./createStack"));
var helpers_1 = require("../Common/helpers");
var components = (_a = {},
_a[types_1.ChartKind.simple] = createChart_1.default,
_a[types_1.ChartKind.stack] = createStack_1.default,
_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 === types_1.ChartType.bar && {
barWidth: (0, helpers_1.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_1.default.createElement(victory_1.ChartGroup, __assign({ key: id }, (templateChart &&
templateChart.type === types_1.ChartType.bar && {
offset: (0, helpers_1.getBarWidthFromData)(resolvedApi.series, width)
}), group === null || group === void 0 ? void 0 : group.props), renderedChildren));
};
exports.default = createGroup;
//# sourceMappingURL=createGroup.js.map