@devgateway/dvz-ui-react
Version:
A modular, embeddable React component library for data visualization and UI, built with TypeScript. Provides reusable components for charts, maps, dashboards, and more, with built-in support for internationalization and Redux integration.
79 lines (78 loc) • 3.29 kB
JavaScript
import h from "react";
const M = (f) => {
const { mapType: u } = f;
return u == "POINTS_MAP" ? v(f) : D(f);
}, v = (f) => {
const { children: u, data: e, multipleMeasures: o, aggregationFormula: i } = f, s = {
locationsData: [],
nationalData: {},
measures: [],
measureLabelMap: {}
}, l = e.meta.fields.findIndex((m, a) => a > 2 && !m.startsWith("_")), n = [];
if (e && e.data && e.meta.fields && e.meta.fields.length >= 2) {
e.data.forEach((a) => {
const t = {
label: a[e.meta.fields[0]],
lat: a[e.meta.fields[1]],
lng: a[e.meta.fields[2]],
value: a[e.meta.fields[l]] || 1,
measure: e.meta.fields[l]
}, d = {};
if (o && !s.measures.includes(e.meta.fields[l]) && s.measures.push(e.meta.fields[l]), e.meta.fields.length > l) {
t.children = [];
for (let r = l + 1; r <= e.meta.fields.length; r++) {
const p = e.meta.fields[r], c = a[e.meta.fields[r]];
if (p) {
if (p.trim().startsWith("_"))
d[p] = c;
else if (c != null)
if (o) {
const b = { label: a[e.meta.fields[0]], value: c, measure: e.meta.fields[r] };
b.variables = d, n.push(b), s.measures.includes(e.meta.fields[r]) || s.measures.push(e.meta.fields[r]);
} else
t.children.push({ label: e.meta.fields[r], value: c });
}
}
}
t.variables = d, n.push(t);
});
const m = [];
n.forEach((a) => {
let t = m.find((d) => d.label == a.label);
t ? i == "COUNT" ? ++t.value : i == "SUM" && (t.value += a.value) : (t = { label: a.label, value: i == "COUNT" ? 1 : a.value ? a.value : 0 }, m.push(t));
}), s.pointsData = n, s.locationsData = m, s.nationalData.value = 0;
}
return h.Children.map(u, (m) => h.cloneElement(m, { transformedData: s, appliedFilters: e.appliedFilters }));
}, D = (f) => {
const { children: u, data: e, multipleMeasures: o } = f, i = {
locationsData: [],
nationalData: {},
measures: [],
measureLabelMap: {}
}, s = e.meta.fields.findIndex((l, n) => n != 0 && !l.startsWith("_"));
return e && e.data && e.meta.fields && e.meta.fields.length >= 2 && (e.data.forEach((l) => {
const n = {
label: l[e.meta.fields[0]],
value: l[e.meta.fields[s]],
measure: e.meta.fields[s]
}, m = {};
if (o && !i.measures.includes(e.meta.fields[s]) && i.measures.push(e.meta.fields[s]), e.meta.fields.length > s) {
n.children = [];
for (let a = s + 1; a <= e.meta.fields.length; a++) {
const t = e.meta.fields[a], d = l[e.meta.fields[a]];
if (t)
if (t.trim().startsWith("_"))
m[t] = d;
else if (o) {
const r = { label: l[e.meta.fields[0]], value: d, measure: e.meta.fields[a] };
r.variables = m, i.locationsData.push(r), i.measures.includes(e.meta.fields[a]) || i.measures.push(e.meta.fields[a]);
} else
n.children.push({ label: e.meta.fields[a], value: d });
}
}
n.variables = m, i.locationsData.push(n);
}), i.nationalData.value = 0), h.Children.map(u, (l) => h.cloneElement(l, { transformedData: i, appliedFilters: e.appliedFilters }));
};
export {
M as default
};