@jzg223/design-runtime 0.0.1 → 0.1.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +52 -0
  3. package/dist/board/api.js +57 -0
  4. package/dist/board/board-chart.vue.js +7 -0
  5. package/dist/board/board-chart2.vue.js +93 -0
  6. package/dist/board/context.js +15 -0
  7. package/dist/board/datav-map.js +66 -0
  8. package/dist/board/design-board.vue.js +172 -0
  9. package/dist/board/design-board2.vue.js +331 -0
  10. package/dist/board/echarts.js +40 -0
  11. package/dist/board/part-node.vue.js +63 -0
  12. package/dist/board/part-node2.vue.js +125 -0
  13. package/dist/board/part-renderer.vue.js +561 -0
  14. package/dist/board/part-renderer2.vue.js +884 -0
  15. package/dist/board/theme-host.js +129 -0
  16. package/dist/board-engine/asset.js +32 -0
  17. package/dist/board-engine/chart-option.js +377 -0
  18. package/dist/board-engine/data-hub.js +67 -0
  19. package/dist/board-engine/datav-meta.js +51 -0
  20. package/dist/board-engine/i18n.js +130 -0
  21. package/dist/board-engine/param-catalog.js +137 -0
  22. package/dist/board-engine/params.js +61 -0
  23. package/dist/board-engine/render-model.js +65 -0
  24. package/dist/board-engine/schema.js +856 -0
  25. package/dist/board-engine/theme-manifest.js +19 -0
  26. package/dist/board-engine/version.js +4 -0
  27. package/dist/host.js +6 -1
  28. package/dist/index.js +172 -24
  29. package/dist/style.css +1067 -0
  30. package/dist/types/board/api.d.ts +45 -0
  31. package/dist/types/board/board-chart.vue.d.ts +15 -0
  32. package/dist/types/board/context.d.ts +29 -0
  33. package/dist/types/board/datav-map.d.ts +24 -0
  34. package/dist/types/board/design-board.vue.d.ts +1409 -0
  35. package/dist/types/board/echarts.d.ts +25 -0
  36. package/dist/types/board/part-node.vue.d.ts +1237 -0
  37. package/dist/types/board/part-renderer.vue.d.ts +1205 -0
  38. package/dist/types/board/theme-host.d.ts +41 -0
  39. package/dist/types/board-engine/asset.d.ts +37 -0
  40. package/dist/types/board-engine/chart-option.d.ts +737 -0
  41. package/dist/types/board-engine/data-hub.d.ts +48 -0
  42. package/dist/types/board-engine/datav-meta.d.ts +37 -0
  43. package/dist/types/board-engine/i18n.d.ts +43 -0
  44. package/dist/types/board-engine/index.d.ts +25 -0
  45. package/dist/types/board-engine/param-catalog.d.ts +82 -0
  46. package/dist/types/board-engine/params.d.ts +37 -0
  47. package/dist/types/board-engine/render-model.d.ts +87 -0
  48. package/dist/types/board-engine/schema.d.ts +513 -0
  49. package/dist/types/board-engine/theme-manifest.d.ts +23 -0
  50. package/dist/types/board-engine/types.d.ts +147 -0
  51. package/dist/types/board-engine/version.d.ts +10 -0
  52. package/dist/types/host.d.ts +21 -0
  53. package/dist/types/index.d.ts +21 -2
  54. package/package.json +21 -4
@@ -0,0 +1,147 @@
1
+ /**
2
+ * 看板引擎的配置契约(设计端与运行端**共用同一份**)。
3
+ *
4
+ * 设计原则:这里只描述「配置长什么样」,不描述「怎么渲染」。
5
+ * 渲染细节(样式、模板)由两端各自的视图层负责 —— 但样式值必须由引擎算出来,
6
+ * 不许视图层自己再算一套(否则就是漂移)。
7
+ *
8
+ * 类型刻意保持"宽":看板配置是自由 JSON(`config_json`),历史上有大量可选字段,
9
+ * 收紧类型只会逼着写一堆断言。**边界宽、内部严**是这里的取舍。
10
+ */
11
+ /** 部件的盒模型(自由布局:像素;栅格布局:跨列数) */
12
+ export interface BoardBox {
13
+ x: number;
14
+ y: number;
15
+ w: number;
16
+ h: number;
17
+ }
18
+ /** 度量(聚合列) */
19
+ export interface BoardMeasure {
20
+ field: string;
21
+ /** sum / avg / count / max / min / countDistinct(后端白名单) */
22
+ agg?: string;
23
+ alias?: string;
24
+ [key: string]: any;
25
+ }
26
+ /** 筛选条件 */
27
+ export interface BoardFilter {
28
+ field: string;
29
+ /** eq / ne / gt / ge / lt / le / like / in / between …(后端 BoardQueryBuilder 认) */
30
+ op?: string;
31
+ value?: any;
32
+ values?: any[];
33
+ [key: string]: any;
34
+ }
35
+ /** 部件的数据绑定(指向平台数据集 + 维度/度量/筛选/参数) */
36
+ export interface BoardPartData {
37
+ setId?: string | number;
38
+ dims?: string[];
39
+ measures?: BoardMeasure[];
40
+ filters?: BoardFilter[];
41
+ /** 部件级参数(优先级高于看板级参数) */
42
+ params?: Record<string, string>;
43
+ orderField?: string;
44
+ orderDesc?: boolean;
45
+ limit?: number;
46
+ [key: string]: any;
47
+ }
48
+ /** 一个部件(看板配置里最小的可视单元) */
49
+ export interface BoardPart {
50
+ id: string;
51
+ /** chart / kpi / table / crossTable / text / image / border / container / tabContainer /
52
+ * iframe / video / carousel / marquee / decoration / progress / button / nav / filter */
53
+ type: string;
54
+ name?: string;
55
+ hidden?: boolean;
56
+ /** 容器 / 页签容器里的子部件 */
57
+ parentId?: string;
58
+ tabIndex?: number;
59
+ box?: BoardBox;
60
+ /** 类型相关的展示配置(chart 图型、表格列宽、文本内容、边框编号…) */
61
+ view?: Record<string, any>;
62
+ data?: BoardPartData;
63
+ /** 多语覆盖:{ 'en-US': { 'view.content': 'Hello' } } */
64
+ i18n?: Record<string, Record<string, any>>;
65
+ [key: string]: any;
66
+ }
67
+ /** 页面级配置 */
68
+ export interface BoardPage {
69
+ width: number;
70
+ height: number;
71
+ /** auto / ratio / none */
72
+ scaleMode?: string;
73
+ /** free / grid */
74
+ layoutMode?: string;
75
+ gridCols?: number;
76
+ gridGap?: number;
77
+ rowHeight?: number;
78
+ /** 视觉主题 code([data-board-theme]) */
79
+ theme?: string;
80
+ /** 图表主题 code(与 theme 通常一起切) */
81
+ chartTheme?: string;
82
+ bgColor?: string;
83
+ bgImage?: string;
84
+ opacity?: number;
85
+ watermark?: string;
86
+ locale?: string;
87
+ /** scale / stack / auto */
88
+ mobileMode?: string;
89
+ [key: string]: any;
90
+ }
91
+ /** 整页看板配置(= 后端 `design_board_info.config_json` 解析结果) */
92
+ export interface BoardConfig {
93
+ page: BoardPage;
94
+ parts: BoardPart[];
95
+ [key: string]: any;
96
+ }
97
+ /** 取数请求体(后端 `BoardDataQuery`,契约勿随意加字段) */
98
+ export interface BoardDataQuery {
99
+ setId: string | number;
100
+ dims: string[];
101
+ measures: BoardMeasure[];
102
+ filters: BoardFilter[];
103
+ params: Record<string, string>;
104
+ orderField: string;
105
+ orderDesc: boolean;
106
+ limit: number;
107
+ }
108
+ /** 取数响应的列元数据 */
109
+ export interface BoardDataColumn {
110
+ name: string;
111
+ alias?: string;
112
+ type?: string;
113
+ isDimension?: boolean;
114
+ numFormat?: any;
115
+ [key: string]: any;
116
+ }
117
+ /** 取数响应 */
118
+ export interface BoardDataResult {
119
+ columns: BoardDataColumn[];
120
+ rows: Record<string, any>[];
121
+ total?: number;
122
+ limited?: boolean;
123
+ cached?: boolean;
124
+ [key: string]: any;
125
+ }
126
+ /** 数据集声明的参数(看板级参数目录的原料) */
127
+ export interface BoardParamDecl {
128
+ paramCode: string;
129
+ paramName?: string;
130
+ /** input / select / date / year / period / org … */
131
+ paramType?: string;
132
+ defaultValue?: string;
133
+ /** 逗号/换行分隔的可选值,或单个"字典编码/机构类型"引用 */
134
+ valueSource?: string;
135
+ setId?: string | number;
136
+ [key: string]: any;
137
+ }
138
+ /** 参数目录里汇总后的一条(多个数据集声明同一参数时合并) */
139
+ export interface BoardParamDeclEntry extends BoardParamDecl {
140
+ sets: (string | number)[];
141
+ }
142
+ /** 看板参数状态(框架中立:普通对象 + version 计数 + 订阅) */
143
+ export interface BoardParamState {
144
+ values: Record<string, string>;
145
+ /** 任何变化 +1:视图层用它触发重算(Vue 里包一层 computed/ref 即可) */
146
+ version: number;
147
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * 看板配置的 **schema 版本**(引擎产出,两端必须一致)
3
+ *
4
+ * 用途:设计端(design-ui)与运行端(本库)各自跑一遍引擎时,先比这个号 ——
5
+ * 不同就**直接报错**,避免「设计端已经用了新字段、运行端还是旧引擎」这种最难查的错
6
+ * (症状是某个配置项"存了但不生效",两边代码看起来都对)。
7
+ *
8
+ * 什么时候升:改语义 / 删字段 / 改默认值 → 升;纯加字段(旧配置仍然正确)→ 不升。
9
+ */
10
+ export declare const BOARD_SCHEMA_VERSION = 1;
@@ -113,6 +113,23 @@ export interface DesignUploadOptions {
113
113
  * 未注入时:`file` / `image` 字段显示「上传不可用」提示并 warn 一次。
114
114
  */
115
115
  export type DesignHostUpload = (file: File, options?: DesignUploadOptions) => Promise<DesignUploadResult>;
116
+ /**
117
+ * 看板(数据看板运行端)的宿主能力。
118
+ *
119
+ * 全部可缺省:缺省即"用主 http + 同源地址",这是平台后端与宿主同域时的最常见情形。
120
+ * 需要单独指的时候(看板后端在另一个服务/域名)才注入 —— 这三个键就是为了不逼着库去猜。
121
+ */
122
+ export interface DesignHostBoard {
123
+ /**
124
+ * 看板取数专用 http(`/design/board/**`)。
125
+ * 缺省用主 `http`:多数部署里看板接口与设计配置接口在同一个后端。
126
+ */
127
+ http?: DesignHttp;
128
+ /** 素材直链前缀(`asset:` 引用 → `${assetBaseUrl}/design/board/asset/file?path=`);缺省 `''`(同源) */
129
+ assetBaseUrl?: string;
130
+ /** 主题 CSS 目录(`<code>.css` 与 `index.json` 在这里);缺省 `/board/theme/` */
131
+ themeBaseUrl?: string;
132
+ }
116
133
  export interface DesignHost {
117
134
  /**
118
135
  * 网络层。**必须**注入宿主自己的请求实例适配(见 http.ts 顶部说明),
@@ -133,6 +150,8 @@ export interface DesignHost {
133
150
  dict?: DesignHostDict;
134
151
  /** 业务后端能力(流程等) */
135
152
  workflow?: DesignHostWorkflow;
153
+ /** 数据看板运行端能力(看板取数 http / 素材前缀 / 主题目录),见 DesignHostBoard */
154
+ board?: DesignHostBoard;
136
155
  /**
137
156
  * 严格版本自检:为 true 时,若宿主的 vue / antdv-next 不在支持区间,**启动即抛错**。
138
157
  * 默认 false(只 console.error),避免一个版本提示把整个应用打挂;
@@ -163,6 +182,8 @@ export declare function getHostUi(): DesignHostUi;
163
182
  export declare function getHostDict(): DesignHostDict;
164
183
  /** 业务后端能力(可能为空对象;缺字段的功能直接不显示) */
165
184
  export declare function getHostWorkflow(): DesignHostWorkflow;
185
+ /** 看板能力(可能为空对象;缺字段回落「主 http + 同源 + /board/theme/」) */
186
+ export declare function getHostBoard(): DesignHostBoard;
166
187
  /**
167
188
  * 取 http:没注入就直接报错(这是**唯一**必须注入的能力,静默降级只会让问题更难查)
168
189
  */
@@ -5,12 +5,13 @@
5
5
  * 免得宿主依赖上不该依赖的细节,把库的版本升级空间锁死。
6
6
  */
7
7
  import './styles/index.css';
8
+ import './board/theme-fallback.css';
8
9
  export { ApiSwitch, buildHostApi, DESIGN_POPUP_HOST_KEY, DesignTable, DesignTree, DesignTableFlowStatusCell, DesignTableInner, DesignComb, DesignDevModeToggle, DesignSearch, DesignDevStateButton, DesignForm, DesignFormInner, evalExpression, executeCommand, hostRequest, openComponent, pendingRowActionTypes, pendingToolTypes, platformMessage, resolveRowActionComponent, resolveToolComponent, rowActionComponentMap, rowActionTypes, setDevMode, useDevMode, toolComponentMap, toolTypes, usePopupHost, } from './components';
9
10
  export type { CommandContext, CommandHelpers, CommandNav, DesignHostApi, DesignHostSlot, DesignPopupHost, OpenComponentOptions, } from './components';
10
11
  export { checkDesignRuntimeCompat, satisfiesRange, SUPPORTED_VERSIONS, } from './compat';
11
12
  export type { CompatCheckItem, CompatReport } from './compat';
12
- export { getDesignHost, getHostDict, getHostPopup, getHostUi, getHostWorkflow, hostT, installDesignPlatform, requireHttp, requireVxeGrid, resetDesignHost, } from './host';
13
- export type { DesignAuthSnapshot, DesignHost, DesignHostUpload, DesignUploadOptions, DesignUploadResult, DesignHostDict, DesignHostMessage, DesignHostModal, DesignHostUi, DesignHostWorkflow, } from './host';
13
+ export { getDesignHost, getHostBoard, getHostDict, getHostPopup, getHostUi, getHostWorkflow, hostT, installDesignPlatform, requireHttp, requireVxeGrid, resetDesignHost, } from './host';
14
+ export type { DesignAuthSnapshot, DesignHost, DesignHostBoard, DesignHostUpload, DesignUploadOptions, DesignUploadResult, DesignHostDict, DesignHostMessage, DesignHostModal, DesignHostUi, DesignHostWorkflow, } from './host';
14
15
  export { createMemoryHttp } from './http';
15
16
  export type { DesignHttp, DesignRequestOptions, DesignRequestRecord, } from './http';
16
17
  export { buildComponentsManifest, clearDesignComponents, hasDesignComponent, listDesignComponents, registerComponents, requireDesignComponent, resolveDesignComponent, } from './registry';
@@ -39,3 +40,21 @@ export { createDeptTreeSource, normalizeDeptNode } from './org/dept-tree-source'
39
40
  export { buildSearchFormOptions, normalizeSearchCells } from './search/transformer';
40
41
  export type { DesignFormOptions, DesignFormSchema, } from './search/transformer';
41
42
  export { formatNow, resolveDefaultValue } from './utils/default-value';
43
+ export { assetName, assetPath, ASSET_PREFIX, assetUrl, BOARD_SCHEMA_VERSION, buildPartQuery, catalogList, createBoardDataHub, createBoardParams, createParamCatalog, DATAV_BORDER_DEFAULT, DATAV_BORDER_META, DATAV_DECORATION_DEFAULT, DATAV_DECORATION_META, datavBorderLabel, datavDecorationLabel, datavDecorationSizeOf, declaredParam, DEFAULT_LOCALE, defaultBoardParams, defaultParamCatalog, effectiveFilter, effectiveFilterFor, fieldText, allParams, getParam, isAssetRef, loadParamCatalog, LOCALES, localizePart, parseOptions, resetParamCatalog, resetParams, setFieldText, setParam, toAssetRef, TRANSLATABLE, translatableFields, translatedCount, valueSourceReference, } from './board-engine';
44
+ export type { BoardBox, BoardConfig, BoardDataColumn, BoardDataHub, BoardDataHubOptions, BoardDataHubStats, BoardDataQuery, BoardDataResult, BoardFilter, BoardLocale, BoardMeasure, BoardPage, BoardParamCatalog, BoardParamCatalogOptions, BoardParamCatalogState, BoardParamDecl, BoardParamDeclEntry, BoardParamSource, BoardParamState, BoardParams, BoardPart, BoardPartData, BoardTranslatableField, EffectiveFilter, } from './board-engine';
45
+ export { AGG_LABELS, BORDER_PRESETS, CARD_TYPES, CHART_TYPES, childLayoutOf, childParts, CONTAINER_PAD, CONTAINER_TYPES, containerGrid, DEFAULT_THEME, defaultConfig, decorOf, borderPresetOf, descendantIds, fillPartDefaults, freeToGrid, gridAutoRows, gridPartStyle, gridSpanToSize, gridToFreeParts, GRID_DEFAULTS, createPart, isContainer, isMobileStack, layoutAuthority, measureLabel, mobileModeOf, newPartId, normalizeParts, paddingOf, parseConfig, PART_TYPES, partStyle, partTypeBadge, partVisible, partVisualStyle, reorderDepthFirst, resetThemeOverrides, setThemeTokens, sortedParts, sortSiblingsByVisual, stackMinHeight, stackPartStyle, STAGE_BG, stripConfigDefaults, stripPartDefaults, textStyle, THEMES, themeOf, TITLE_BAR_HEIGHT, titleInsetOf, titleOffsetOf, titleReserveOf, titleStyleOf, visualOrder, canHostChildren, basePartShape, deepMerge, } from './board-engine';
46
+ export { buildChartOption, fmtNum } from './board-engine';
47
+ export { containerChildrenStyle, partRenderModel, resolveLayout, } from './board-engine';
48
+ export type { BoardPartDecorModel, BoardPartRenderModel, BoardPartRenderOptions, BoardPartTitleModel, BoardRenderLayout, } from './board-engine';
49
+ export { parseManifest } from './board-engine';
50
+ export type { BoardThemeEntry } from './board-engine';
51
+ export { boardAssetBaseUrl, boardAssetUrl, boardHttp, fetchBoardData, fetchBoardInfo, fetchBoardParams, } from './board/api';
52
+ export type { BoardInfo } from './board/api';
53
+ export { datavBorderComponent, datavDecorationComponent, preloadDatav, resetDatavCache, } from './board/datav-map';
54
+ export { DEFAULT_THEME_BASE, ensureTheme, ensureThemeCss, loadManifest, readThemeTokens, resetThemeFileCache, themeBaseUrl, } from './board/theme-host';
55
+ export { default as BoardChart } from './board/board-chart.vue';
56
+ export { default as DesignBoard } from './board/design-board.vue';
57
+ export { default as PartNode } from './board/part-node.vue';
58
+ export { default as PartRenderer } from './board/part-renderer.vue';
59
+ export { DESIGN_BOARD_CTX, useBoardContext } from './board/context';
60
+ export type { BoardContext } from './board/context';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@jzg223/design-runtime",
3
- "version": "0.0.1",
4
- "description": "低代码设计平台运行端组件库:把设计端(design-ui)产出的配置,在 vben 基座上渲染成表格 / 表单 / 树 / 组合视图。位于「基座」与「业务项目」之间,版本化、可复用、不拷贝。",
3
+ "version": "0.1.0-rc.2",
4
+ "description": "低代码设计平台运行端组件库:把设计端(design-ui)产出的配置,在 vben 基座上渲染成表格 / 表单 / 树 / 组合视图 / 数据看板。位于「基座」与「业务项目」之间,版本化、可复用、不拷贝。",
5
5
  "keywords": [
6
6
  "lowcode",
7
7
  "design",
@@ -33,8 +33,12 @@
33
33
  "build": "npm run build:js && npm run build:types && npm run verify",
34
34
  "build:js": "vite build",
35
35
  "build:types": "vue-tsc -p tsconfig.build.json --emitDeclarationOnly",
36
- "verify": "node scripts/assert-bundle.mjs",
37
- "test": "npm run test:table && npm run test:host && npm run test:shared && npm run test:search && npm run test:form && npm run test:component",
36
+ "verify": "node scripts/assert-bundle.mjs && node scripts/assert-board-engine.mjs",
37
+ "test": "npm run test:table && npm run test:host && npm run test:shared && npm run test:search && npm run test:form && npm run test:component && npm run test:board && npm run test:board-render && npm run test:board-fingerprint && npm run test:board-chart",
38
+ "test:board": "node scripts/test-board-engine.mjs",
39
+ "test:board-chart": "node scripts/test-board-chart-registry.mjs",
40
+ "test:board-render": "node scripts/test-board-render.mjs",
41
+ "test:board-fingerprint": "node scripts/test-board-fingerprint.mjs",
38
42
  "test:component": "node scripts/test-components.mjs",
39
43
  "test:form": "node scripts/test-form.mjs",
40
44
  "test:host": "node scripts/test-host-api.mjs",
@@ -52,16 +56,29 @@
52
56
  "homepage": "https://gitee.com/honglian-delivery-center/design-runtime#readme",
53
57
  "peerDependencies": {
54
58
  "@antdv-next/icons": "^1.1.2",
59
+ "@kjgl77/datav-vue3": "^1.7.4",
55
60
  "antdv-next": "^1.5.2",
56
61
  "dayjs": "^1.11.0",
62
+ "echarts": "^6.1.0",
57
63
  "vue": "^3.5.0",
58
64
  "vue-router": "^5.0.4"
59
65
  },
66
+ "peerDependenciesMeta": {
67
+ "@kjgl77/datav-vue3": {
68
+ "optional": true
69
+ },
70
+ "echarts": {
71
+ "optional": true
72
+ }
73
+ },
60
74
  "devDependencies": {
61
75
  "@antdv-next/icons": "^1.1.2",
76
+ "@kjgl77/datav-vue3": "^1.7.4",
62
77
  "@vitejs/plugin-vue": "^5.2.1",
63
78
  "antdv-next": "^1.5.2",
64
79
  "dayjs": "^1.11.0",
80
+ "echarts": "^6.1.0",
81
+ "less": "^4.9.1",
65
82
  "typescript": "^5.6.3",
66
83
  "vite": "^5.4.11",
67
84
  "vue": "^3.5.22",