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.

129 lines (128 loc) 6.03 kB
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 };