Skip to content

@lumal/datav ​

面向驾驶舱的 Vue 3 DataV 组件包。以 DataV 2.10.0(MIT)为基准重构,提供 15 个导出组件,含变体共 38 种形态,支持 DataV config 与现代 props 双套 API。

项值
包名@lumal/datav
本地路径packages/datav
在线文档https://lumal.cuteyuchen.top/packages/datav
npm 地址https://www.npmjs.com/package/@lumal/datav
示例DataV 示例、apps/lumal-datav-guide

安装 ​

bash
pnpm add @lumal/datav@0.0.4-beta vue@^3.5 echarts@^6

公开入口 ​

根入口与按需子入口(节选):

入口组件
@lumal/datav全量 + 插件式 use
@lumal/datav/border-boxLumalBorderBox
@lumal/datav/decorationLumalDecoration
@lumal/datav/digital-flopLumalDigitalFlop
@lumal/datav/scroll-boardLumalScrollBoard
@lumal/datav/flyline-chartLumalFlylineChart
@lumal/datav/chartsLumalCharts
…见 package.json exports
@lumal/datav/style.css样式

全量注册 ​

ts
import { createApp } from 'vue'
import LumalDatav from '@lumal/datav'
import '@lumal/datav/style.css'

createApp(App).use(LumalDatav).mount('#app')

按需导入 ​

ts
import LumalBorderBox from '@lumal/datav/border-box'
import LumalFlylineChart from '@lumal/datav/flyline-chart'
import '@lumal/datav/style.css'

两套 API ​

DataV 原生配置:

vue
<LumalDigitalFlop :config="{ number: [1286], content: '{nt} 台', toFixed: 0 }" />
<LumalScrollBoard :config="{ header: ['区域', '数量'], data: [['甲区', 20]], rowNum: 5 }" />

现代 props(优先级:显式 props > config > 上游默认):

vue
<LumalBorderBox :variant="8" :duration="3000">
  <LumalDigitalFlop :value="1286" suffix=" 台" />
</LumalBorderBox>

滚动表中的 HTML 字符串按普通文本渲染,不恢复上游 v-html。

DataV 原生 Charts(LumalCharts) ​

vue
<LumalCharts
  :config="{
    xAxis: { data: ['一', '二', '三'] },
    yAxis: { data: 'value' },
    series: [{ type: 'line', data: [120, 200, 150] }],
  }"
/>

config 由 DataV 使用的 @jiaminghi/charts 直接解释。既有 ECharts 调用继续通过 option 扩展兼容:

vue
<LumalCharts
  :option="option"
  theme="dark"
  :init-options="{ renderer: 'canvas', devicePixelRatio: 2 }"
  :set-option-options="{ notMerge: false, lazyUpdate: true }"
  :events="{ legendselectchanged: handleLegendChange }"
  @click="handleChartClick"
/>

autoResize 对两种模式生效;theme、事件、loading 和 ECharts 实例方法只在 option 模式生效。

引擎按当前模式异步加载,不再同时静态加载两套引擎。LumalActiveRingChart 使用 ECharts 模式;其他纯 SVG、数字和列表子入口不加载图表引擎。实例在异步加载后可用,卸载或模式切换会使旧加载失效。

组件映射(DataV → Lumal) ​

DataVLumal
borderBox1–13LumalBorderBox variant=1..13
decoration1–12LumalDecoration variant=1..12
fullScreenContainerLumalFullScreenContainer
loadingLumalLoading
chartsLumalCharts
activeRingChartLumalActiveRingChart
capsuleChartLumalCapsuleChart
waterLevelPondLumalWaterLevelPond
percentPondLumalPercentPond
digitalFlopLumalDigitalFlop
flylineChart / EnhancedLumalFlylineChart / LumalFlylineChartEnhanced
conicalColumnChartLumalConicalColumnChart
scrollBoardLumalScrollBoard
scrollRankingBoardLumalScrollRankingBoard

主题 ​

现代 API 可通过 --lumal-datav-* 语义变量调整。与 @lumal/cockpit 联用时,在应用层映射到 --lumal-cockpit-*。

边界 ​

  • 仅 peer:vue、echarts
  • 不依赖 @lumal/core / charts / cockpit
  • 不得引入业务接口、状态码或字段映射
  • 版权说明见包内 THIRD_PARTY_NOTICES.md

基于 MIT 许可发布 · Vue 3 · TypeScript · Vite · Element Plus