import G, { defineComponent as S, ref as q, h as e, getCurrentInstance as z } from "vue"; import { useNamespace as H } from "@ibiz-template/vue-util"; import { ChartModel as B } from "@ibiz-template/model"; import { mergeDeepRight as N } from "ramda"; import { u as J } from "./use-chart-controller-d5d0d5a1.js"; import "@ibiz-template/controller"; import "qx-util"; import "echarts"; import "@ibiz-template/service"; const V = S({ name: "ChartTooltip", props: { params: { type: [Object, Array], required: !0 }, c: { type: Object, required: !0 }, codeListMap: { type: Array, required: !0 } }, setup(t) { var r; const k = H("chart-tooltip"), g = q([]), l = q(""), c = q(), u = ((r = t.c.model.source.getPSControlParam()) == null ? void 0 : r.ctrlParams) || {}, x = u.LABEL, T = u.TEXT, F = u.LEFT, I = u.CENTER, E = u.RIGHT, n = u.PERCENTAGE, $ = u.RATE, o = JSON.parse(u.LIST || "[]"), b = (s) => { if (s == null) return ""; try { return ibiz.util.text.format(`${s}`, "#,##0.##"); } catch (a) { return ibiz.log.error(`${s} 值格式化错误`), `${s}`; } }; return (() => { var a, m, p, L, C, M, w, R; const s = t.params; if (Array.isArray(s)) g.value = s.map((i) => { var v, d; if (!c.value && Array.isArray(t.c.items) && t.c.items.length) { const f = i.seriesIndex || 0, D = t.c.service.seriesList[f], y = (v = D == null ? void 0 : D.catalogField) == null ? void 0 : v.toLowerCase(), A = i.name || "", h = (d = t.codeListMap[f]) == null ? void 0 : d.catalog; y && A && (c.value = t.c.items.find((j) => h && h.get(j[y]) ? h.get(j[y]) === A : j[y] === A)); } l.value = i.name || ""; const P = Array.isArray(i.value) ? i.value[1] : i.value; return { text: i.seriesName, value: b(P), color: i.color }; }), Array.isArray(o) && o.length && (g.value = o.map((i) => { var v, d; const P = (v = c.value) == null ? void 0 : v[i.value]; return { color: i.color, text: i.text, value: b(P), rate: (d = c.value) == null ? void 0 : d[i.rate] }; })); else if (s) { const i = s; if (Array.isArray(t.c.items) && t.c.items.length) { const v = i.seriesIndex || 0, d = t.c.service.seriesList[v], f = (a = d == null ? void 0 : d.catalogField) == null ? void 0 : a.toLowerCase(), D = (m = d == null ? void 0 : d.valueField) == null ? void 0 : m.toLowerCase(); if (i.seriesType === "radar") { g.value = t.c.items.map((h) => ({ text: h[f], value: b(h[D]), color: i.color, left: F, center: h[I], right: E })), c.value = {}; return; } const y = i.name || "", A = (p = t.codeListMap[v]) == null ? void 0 : p.catalog; f && y && (c.value = t.c.items.find((h) => A && A.get(h[f]) ? A.get(h[f]) === y : h[f] === y)); } const P = Array.isArray(i.value) ? (L = i.value) == null ? void 0 : L[1] : i.value; g.value = [{ text: ((C = c.value) == null ? void 0 : C[T]) || s.name, value: b(P), color: i.color, left: F, center: (M = c.value) == null ? void 0 : M[I], right: E, percentage: (w = c.value) == null ? void 0 : w[n], rate: (R = c.value) == null ? void 0 : R[$] }]; } })(), { ns: k, title: l, items: g, curData: c, label: x }; }, render() { if (this.curData) return e("div", { class: this.ns.b() }, [this.label && this.curData[this.label] && e("div", { class: this.ns.b("header") }, [this.curData[this.label]]), !(this.label && this.curData[this.label]) && this.title && e("div", { class: this.ns.b("header") }, [this.title]), e("div", { class: this.ns.b("content") }, [e("div", { class: this.ns.b("item-icon") }, [this.items.map((t) => e("div", { class: this.ns.b("item") }, [t.color && e("div", { class: this.ns.be("item", "icon"), style: { background: t.color } })]))]), e("div", { class: this.ns.b("item-text") }, [this.items.map((t) => e("div", { class: this.ns.b("item") }, [t.text && e("div", { class: this.ns.be("item", "text") }, [t.text])]))]), e("div", { class: this.ns.b("item-value") }, [this.items.map((t) => e("div", { class: this.ns.b("item") }, [t.value != null && e("div", { class: this.ns.be("item", "value") }, [t.value])]))]), e("div", { class: this.ns.b("item-center") }, [this.items.map((t) => e("div", { class: this.ns.b("item") }, [t.left && e("div", { class: this.ns.be("item", "left") }, [t.left]), t.center != null && e("div", { class: this.ns.be("item", "center") }, [t.center]), t.right && e("div", { class: this.ns.be("item", "right") }, [t.right])]))]), e("div", { class: this.ns.b("item-percentage") }, [this.items.map((t) => e("div", { class: this.ns.b("item") }, [t.percentage && e("div", { class: this.ns.be("item", "percentage") }, [t.percentage])]))]), e("div", { class: this.ns.b("item-rate") }, [this.items.map((t) => e("div", { class: this.ns.b("item") }, [t.rate && e("div", { class: this.ns.be("item", "rate") }, [e("rate-span", { attrs: { value: t.rate } })])]))])])]); } }), et = S({ name: "GwxnChartControl", props: { modelData: { type: B, required: !0 }, context: { type: Object, required: !0 }, params: { type: Object, default: () => ({}) } }, setup(t) { var E; const { proxy: k } = z(), g = H("chart"), l = J(k, t.modelData, t.context, t.params), c = ((E = l.model.source.getPSControlParam()) == null ? void 0 : E.ctrlParams) || {}, u = c.TYPE, x = c.TOTAL; let T = !0; const F = (n) => (Array.isArray(n) && x && n.length === 0 && (n.push({ [x]: 100 }), T = !1), n); l.registerLoadHook(F); const I = async (n) => { var b, O; const $ = n.tooltip; if ($) { const r = await l.service.getAllCodeListMap(l.context, l.params); $.formatter = (s) => { const a = document.createElement("div"); return new G({ el: a, render: (p) => p(V, { props: { params: s, ctrlParams: c, c: l, codeListMap: r } }) }).$el; }; } if (u === "line") { const r = n.xAxis; Array.isArray(r) && r.length && r.forEach((s) => { const a = s; a.max = (m) => m.max + 1; }); } const o = n.series; if (!Array.isArray(o)) return n; if (u === "custom") { const r = o.findIndex((a) => a.type === "pie"); if (r !== -1) { let a = !0; const p = (O = (b = l.service.seriesList[r]) == null ? void 0 : b.valueField) == null ? void 0 : O.toLowerCase(); p && l.items.every((C) => !C[p]) && (o.splice(r, 1), a = !1), a && (o[r] = N(o[r], { emphasis: { label: { formatter: (L) => { var w; const C = (w = L.value[0]) == null ? void 0 : w.replace("~", "-"); return `{value|${L.value[1]}} {key|${C}}`; } } } })); } const s = o.findIndex((a) => a.type === "gauge"); s !== -1 && (o[s] = N(o[s], { axisLabel: { formatter: (a) => a === 24 || a % 2 === 1 ? "" : `${a}` } })); } if (u === "radar") { const r = n.radar, s = o.find((a) => a.type === "radar"); r && !Array.isArray(r) && Array.isArray(r.indicator) && s && Array.isArray(s.data) && s.data.length && (r.indicator = [...r.indicator.slice(0, 1), ...r.indicator.slice(1).reverse()], s.data[0] = [...s.data[0].slice(0, 1), ...s.data[0].slice(1).reverse()]); } if (x) { const r = n.graphic; if (Array.isArray(r) && r.length && T) { const s = l.items.reduce((a, m) => a + m[x], 0); r[0] = N(r[0], { style: { text: s } }); } T || n.tooltip && Object.assign(n.tooltip, { show: !1 }); } return n; }; return l.registerHook(I), { c: l, ns: g }; }, render() { if (this.c.complete) return e("control-layout", { attrs: { modelData: this.c.model } }, [e("div", { class: this.ns.b(), style: { width: this.c.width, height: this.c.height } }, [e("div", { attrs: { id: this.c.chartId }, class: this.ns.b("content") }), this.c.items.length ? null : e("div", { class: this.ns.b("empty-content") }, ["暂无数据"])])]); } }); export { et as default };