@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.
117 lines (116 loc) • 5.47 kB
JavaScript
import { getData as F, getCategories as C } from "./data-api.js";
import { Map as M, fromJS as v } from "immutable";
import x from "papaparse";
const d = "LOAD_DATA", I = "LOAD_DATA_DONE", A = "LOAD_DATA_ERROR", _ = "LOAD_CATEGORIES", S = "LOAD_CATEGORIES_DONE", f = "LOAD_CATEGORIES_ERROR", D = "SET_PAGE_MODULE_PROPS", y = "SET_FILTER", T = "SET_INITIAL_FILTER", R = "SET_APPLY", O = "CLEAN_FILTER", z = M({ mode: "info" }), L = "SET_MEASURES", P = "CLEAN_MEASURES", b = ({ app: r, group: a }) => (e, t) => {
e({ type: P, app: r, group: a });
}, J = ({ app: r, group: a, mGroup: e }) => (t, s) => {
const n = Object.keys(e.measures).filter((l) => e.measures[l].selected), o = { ...e };
o[r] = { measures: {} }, n.forEach((l) => {
o[r].measures[l] = { ...e.measures[l] };
}), o[r].format = e.format, t({ type: L, app: r, group: a, measure: o });
}, j = ({ app: r, group: a, param: e, value: t, autoApply: s }) => (n, o) => {
n({ type: y, app: r, group: a, param: e, value: t, autoApply: s });
}, Y = ({ app: r, group: a }) => (e, t) => {
e({ type: O, app: r, group: a });
}, $ = ({ app: r, group: a }) => (e, t) => {
e({ type: R, app: r, group: a });
}, V = ({ app: r, group: a, param: e, value: t }) => (s, n) => {
s({ type: T, app: r, group: a, param: e, value: t });
}, k = (r) => (a, e) => {
const { app: t, params: s } = r;
a({ type: _, params: s, app: t, dvzProxyDatasetId: s.dvzProxyDatasetId }), C({ app: t, params: s }).then((n) => (n.appliedFilters = s, a({ type: S, app: t, data: n, dvzProxyDatasetId: s.dvzProxyDatasetId }))).catch((n) => a({
type: f,
app: t,
error: n,
dvzProxyDatasetId: s.dvzProxyDatasetId
}));
}, q = ({ app: r, group: a, csv: e, store: t, params: s }) => (n, o) => {
const l = o().get("data").getIn(["filters", r, a]);
l && (s = { ...s, ...l.toJS() });
const i = x.parse(e, { header: !0, dynamicTyping: !0 }), m = i.data.filter((u) => {
let p = !1;
return Object.keys(s).forEach((E) => {
const N = s[E];
if (u[E]) {
const h = u[E].toString().trim().toLowerCase();
p = N.filter((g) => g && g.toString().trim().toLowerCase() == h).length == 0;
}
}), !p;
}), c = { ...i, data: m, appliedFilters: s };
n({ type: I, app: r, group: a, store: t, data: { count: c.data.length, itemsSize: c.data.length, ...c } });
}, B = ({ app: r, group: a, source: e, store: t, params: s }) => (n, o) => {
const l = o().get("data").getIn(["filters", r, a]);
l && (s = { ...s, ...l.toJS() }), n({ type: d, app: r, group: a, params: s, store: t }), F({ app: r, source: e, params: s }).then((i) => (i.appliedFilters = s, n({ type: I, app: r, group: a, store: t, data: i }))).catch((i) => n({ type: A, app: r, group: a, store: t, error: i }));
}, H = ({ data: r }) => (a, e) => {
a({ type: D, data: r });
}, K = (r = z, a) => {
switch (a.type) {
case d: {
const { store: e, app: t, group: s } = a, n = Date.now();
return r.deleteIn([...e, "error"]).setIn([...e, "loading"], !0).setIn([...e, "time"], n);
}
case A: {
const { error: e, store: t, app: s, group: n } = a;
return r.setIn([...t, "loading"], !1).setIn([...t, "error"], e).setIn(["filters-settings", s, n, "apply"], null);
}
case I: {
const { data: e, app: t, group: s, store: n } = a;
return r.setIn([...n, "loading"], !1).deleteIn([...n, "error"]).setIn([...n, "data"], e).setIn(["filters-settings", t, s, "apply"], null);
}
case D: {
const { data: e } = a;
return r.setIn(["pageModuleProps"], e);
}
case _: {
const { data: e, app: t, dvzProxyDatasetId: s } = a, n = ["categories", t];
return s && n.push(s), r.setIn([...n, "loading"], !0).deleteIn([...n, "error"]);
}
case S: {
const { data: e, app: t, dvzProxyDatasetId: s } = a, n = ["categories", t];
return s && n.push(s), r.setIn([...n, "loading"], !1).setIn([...n, "items"], v(e));
}
case f: {
const { data: e, app: t, dvzProxyDatasetId: s } = a, n = ["categories", t];
return s && n.push(s), r.setIn([...n, "loading"], !1).setIn([...n, "error"], e);
}
case R: {
const { app: e, group: t } = a;
return r.setIn(["filters-settings", e, t, "apply"], (/* @__PURE__ */ new Date()).getTime());
}
case y: {
const { app: e, group: t, param: s, value: n, autoApply: o } = a;
return r.setIn(["filters-settings", e, t, "autoApply"], o).setIn(["filters", e, t, s], n.length === 0 ? [Number.MIN_SAFE_INTEGER] : n).setIn(["filters-settings", e, t, "apply"], null);
}
case T: {
const { app: e, group: t, param: s, value: n } = a;
return r.setIn(["filters", "initial", e, t, s], n.length === 0 ? [Number.MIN_SAFE_INTEGER] : n).setIn(["filters", e, t, s], n.length === 0 ? [Number.MIN_SAFE_INTEGER] : n);
}
case O: {
const { app: e, group: t } = a, s = r.getIn(["filters", "initial", e, t]);
return r.setIn(["filters", e, t], s);
}
case L: {
const { app: e, group: t, measure: s } = a;
return r.setIn(["measures", e, t], s);
}
case P: {
const { app: e, group: t, measure: s } = a;
return r.deleteIn(["measures", e, t]);
}
default:
return r;
}
};
export {
$ as applyFilter,
Y as cleanFilter,
b as cleanMeasures,
K as default,
k as getCategories,
B as getData,
q as setData,
j as setFilter,
V as setInitialFilters,
J as setMeasures,
H as setPageModuleProps
};