UNPKG

@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
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 };