@ued_fpi/data-visual
Version:
<br /> <br /> <div style="text-align:center"> <b style="font-size:30px">@ued_fpi/data-visual</b> <p>基于Vite4+TypeScript的Vue3大屏组件库开发框架</p> <img style="display:inline" src="https://img.shields.io/npm/v/@ued_fpi/data-visual" />
91 lines (86 loc) • 2.48 kB
JavaScript
;
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
const vue = require('vue');
const index = require('../../../../wgms/utils/echarts/index.js');
const utils = require('../../../../utils.js');
const _sfc_main = /* @__PURE__ */ vue.defineComponent({
__name: "index",
props: {
className: {
type: String,
default: ""
},
width: {
type: String,
default: "100%"
},
height: {
type: String,
default: "300px"
},
loading: {
type: Boolean,
default: true
},
fullOptions: {
type: Object,
default: () => ({}),
required: true
}
},
setup(__props) {
const props = __props;
let myChart;
const echartsDomRef = vue.ref(null);
const { isDark } = utils.useThemeHook();
const resizeHandler = () => {
myChart.resize();
};
const debounce = (fun, delay) => {
let timer;
return function() {
if (timer)
clearTimeout(timer);
timer = setTimeout(() => {
fun();
}, delay);
};
};
const cancalDebounce = debounce(resizeHandler, 50);
vue.onMounted(() => {
myChart = index.default.init(echartsDomRef.value, { renderer: "svg" });
myChart.showLoading({
text: "",
color: "#409eff",
textColor: "#000",
maskColor: "rgba(255, 255, 255, .95)",
zlevel: 0,
lineWidth: 2
});
if (!props.loading) {
myChart.hideLoading();
props.fullOptions.options && myChart.setOption(utils.replaceVarStrings(props.fullOptions.options), true);
}
window.addEventListener("resize", cancalDebounce);
});
vue.onBeforeUnmount(() => {
window.removeEventListener("resize", cancalDebounce);
myChart.dispose();
});
vue.watch(() => [props.fullOptions.options, props.loading, isDark.value], () => {
if (!props.loading) {
myChart.hideLoading();
myChart.setOption(utils.replaceVarStrings(props.fullOptions.options), false);
}
}, { deep: true });
return (_ctx, _cache) => {
return vue.openBlock(), vue.createElementBlock("div", {
ref_key: "echartsDomRef",
ref: echartsDomRef,
class: vue.normalizeClass(__props.className),
style: vue.normalizeStyle({ height: __props.height, width: __props.width })
}, null, 6);
};
}
});
exports.default = _sfc_main;