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