/** @jsx h */ /** @jsxFrag Fragment */ /** * VP-TSX 示例 —— 能源监控 mini 大屏(科技蓝)。 * * 演示三个核心红利: * 1. 类型即时纠错:属性名/枚举来自 types.generated.ts(schema 同源),臆造即编译报错; * 2. 循环消重复:4 张 KPI 卡是一个 map(),不是 4 段复制粘贴的 JSON; * 3. 常量复用:配色 token 一处声明。 * * 产出链(在 vjvp/ 所在目录执行): * pnpm exec tsc -p vjvp/scripts/vptsx/tsconfig.json * pnpm exec tsx vjvp/scripts/vptsx/compile.mts \ * vjvp/scripts/vptsx/examples/energy-mini.vp.tsx */ import { bind, defineProject, h, jsonConnection } from '../runtime' // —— 配色 token(科技蓝套系,见 SKILL.md 科技感视觉规范) —— const GLOW = '#00E5FF' const ACCENT = '#38BDF8' const TEXT_DIM = '#7FA8D9' const PANEL_BG = 'linear-gradient(160deg,rgba(10,28,56,0.72),rgba(5,16,36,0.78))' const PANEL_BORDER = '#14335F' // —— 数据:内联 json 连接(字段 uid = 列名) —— const CONN = 'conn_energy' const TBL = 'tbl_month' const energy = jsonConnection({ uid: CONN, name: '能耗数据', table: { uid: TBL, name: '月度能耗', fields: [ { uid: '月份', alias: '月份', type: 'string' }, { uid: '能耗', alias: '能耗', type: 'number' }, ], }, rows: [ { 月份: '一月', 能耗: 320 }, { 月份: '二月', 能耗: 286 }, { 月份: '三月', 能耗: 341 }, { 月份: '四月', 能耗: 305 }, { 月份: '五月', 能耗: 372 }, { 月份: '六月', 能耗: 398 }, ], }) const KPIS = [ { name: '总能耗', value: 12680, unit: 'kWh', color: GLOW }, { name: '光伏出力', value: 4210, unit: 'kW', color: ACCENT }, { name: '负载率', value: 76.4, unit: '%', color: '#2E8BFF' }, { name: '告警数', value: 3, unit: '条', color: '#FBBF24' }, ] export default defineProject({ name: '能源监控 mini(VP-TSX 示例)', connections: [energy.connection], connectionData: { ...energy.connectionData }, screen: ( {/* 页面顶部辉光(纯装饰一律 no-events) */} {/* 顶栏:渐变发光标题 + 光带 + 实时时间 */} {/* KPI 行:一个 map() 而非 4 段重复 JSON */} {KPIS.map((k, i) => ( ))} {/* 左面板:柱状图绑定 json 连接(bind 产出 [[conn,tbl,field]] 三元组) */} {/* 右面板:折线走内置演示数据(无绑定) */} ), })