Skip to content

@lumal/datav

面向驾驶舱的 Vue 3 DataV 组件包。以 DataV 2.10.0(MIT)为基准重构,支持 DataV config 与现代 props 双套 API。

包名@lumal/datav
本地路径packages/datav
在线文档https://lumal-docs-cf.pages.dev/packages/datav
正式地址(上线后)https://www.npmjs.com/package/@lumal/datav
示例DataV 示例apps/lumal-datav-guide

安装

bash
pnpm add @lumal/datav vue echarts

公开入口

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

入口组件
@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 模式生效。

组件映射(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:vueecharts
  • 依赖 @lumal/core / charts / cockpit
  • 不得引入业务接口、状态码或字段映射
  • 版权说明见包内 THIRD_PARTY_NOTICES.md

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