@veltra/sheet 2.3.4 → 2.5.0

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 (129) hide show
  1. package/dist/index.d.ts +2 -17
  2. package/dist/index.js +2 -13
  3. package/dist/types/index.d.ts +1 -3
  4. package/package.json +5 -6
  5. package/src/index.ts +1 -27
  6. package/src/types/index.ts +0 -2
  7. package/dist/components/report/binding-badge.js +0 -112
  8. package/dist/components/report/designer/cell-coords.js +0 -46
  9. package/dist/components/report/designer/col-widths.js +0 -29
  10. package/dist/components/report/designer/conditional-rules/helpers.js +0 -139
  11. package/dist/components/report/designer/drop-highlight-overlay.js +0 -76
  12. package/dist/components/report/designer/float-panel.js +0 -422
  13. package/dist/components/report/designer/role.js +0 -17
  14. package/dist/components/report/designer/rule-preview.js +0 -33
  15. package/dist/components/report/designer/rule-row.js +0 -253
  16. package/dist/components/report/designer/rules-dialog.js +0 -118
  17. package/dist/components/report/designer/topology-overlay.js +0 -122
  18. package/dist/components/report/designer/topology.js +0 -64
  19. package/dist/components/report/designer/use-grid-overlay.js +0 -75
  20. package/dist/components/report/designer-hub.js +0 -177
  21. package/dist/components/report/field-panel-helpers.js +0 -33
  22. package/dist/components/report/field-panel.js +0 -132
  23. package/dist/components/report/filter-bar.js +0 -74
  24. package/dist/components/report/hub-connection-form.js +0 -145
  25. package/dist/components/report/hub-dataset-editor.js +0 -409
  26. package/dist/components/report/preview-grid-size.js +0 -32
  27. package/dist/components/report/report-designer.js +0 -393
  28. package/dist/components/report/report-viewer.js +0 -124
  29. package/dist/components/report/style.d.ts +0 -17
  30. package/dist/components/report/style.js +0 -18
  31. package/dist/components/report/style2.css +0 -874
  32. package/dist/components/report/use-report-designer.js +0 -386
  33. package/dist/components/report/use-report-viewer.js +0 -55
  34. package/dist/report/binding.d.ts +0 -83
  35. package/dist/report/binding.js +0 -334
  36. package/dist/report/connector.d.ts +0 -66
  37. package/dist/report/connector.js +0 -159
  38. package/dist/report/export-xlsx.d.ts +0 -13
  39. package/dist/report/export-xlsx.js +0 -13
  40. package/dist/report/filter-bar.d.ts +0 -10
  41. package/dist/report/filter-bar.js +0 -31
  42. package/dist/report/index.d.ts +0 -12
  43. package/dist/report/params.d.ts +0 -13
  44. package/dist/report/params.js +0 -61
  45. package/dist/report/render/aggregate.js +0 -169
  46. package/dist/report/render/builder.d.ts +0 -12
  47. package/dist/report/render/builder.js +0 -139
  48. package/dist/report/render/coordinate.d.ts +0 -25
  49. package/dist/report/render/coordinate.js +0 -733
  50. package/dist/report/render/index.d.ts +0 -14
  51. package/dist/report/render/index.js +0 -21
  52. package/dist/report/render/style-resolver.js +0 -50
  53. package/dist/report/render/template-index.d.ts +0 -24
  54. package/dist/report/render/template-index.js +0 -137
  55. package/dist/report/rules/evaluate.d.ts +0 -25
  56. package/dist/report/rules/evaluate.js +0 -82
  57. package/dist/report/rules/index.d.ts +0 -2
  58. package/dist/report/template.d.ts +0 -63
  59. package/dist/report/template.js +0 -83
  60. package/dist/report/types.d.ts +0 -85
  61. package/dist/types/report-designer.d.ts +0 -38
  62. package/dist/types/report-viewer.d.ts +0 -38
  63. package/src/components/report/__test__/binding-badge.test.ts +0 -92
  64. package/src/components/report/__test__/conditional-rules-helpers.test.ts +0 -88
  65. package/src/components/report/__test__/field-panel-helpers.test.ts +0 -65
  66. package/src/components/report/__test__/float-panel-position.test.ts +0 -45
  67. package/src/components/report/__test__/preview-grid-size.test.ts +0 -63
  68. package/src/components/report/__test__/report-designer.test.ts +0 -464
  69. package/src/components/report/__test__/report-viewer.test.ts +0 -357
  70. package/src/components/report/__test__/topology.test.ts +0 -143
  71. package/src/components/report/__test__/use-report-designer.test.ts +0 -697
  72. package/src/components/report/binding-badge.ts +0 -117
  73. package/src/components/report/designer/cell-coords.ts +0 -95
  74. package/src/components/report/designer/col-widths.ts +0 -56
  75. package/src/components/report/designer/conditional-rules/helpers.ts +0 -189
  76. package/src/components/report/designer/drop-highlight-overlay.vue +0 -75
  77. package/src/components/report/designer/float-panel.vue +0 -432
  78. package/src/components/report/designer/role.ts +0 -32
  79. package/src/components/report/designer/rule-preview.vue +0 -40
  80. package/src/components/report/designer/rule-row.vue +0 -252
  81. package/src/components/report/designer/rules-dialog.vue +0 -110
  82. package/src/components/report/designer/topology-overlay.vue +0 -128
  83. package/src/components/report/designer/topology.ts +0 -124
  84. package/src/components/report/designer/use-grid-overlay.ts +0 -114
  85. package/src/components/report/designer-hub.vue +0 -198
  86. package/src/components/report/field-panel-helpers.ts +0 -44
  87. package/src/components/report/field-panel.vue +0 -136
  88. package/src/components/report/filter-bar.vue +0 -77
  89. package/src/components/report/hub-connection-form.vue +0 -124
  90. package/src/components/report/hub-dataset-editor.vue +0 -387
  91. package/src/components/report/index.ts +0 -2
  92. package/src/components/report/preview-grid-size.ts +0 -33
  93. package/src/components/report/report-designer.vue +0 -421
  94. package/src/components/report/report-viewer.vue +0 -136
  95. package/src/components/report/style-designer.scss +0 -587
  96. package/src/components/report/style-hub.scss +0 -292
  97. package/src/components/report/style-viewer.scss +0 -104
  98. package/src/components/report/style.scss +0 -3
  99. package/src/components/report/style.ts +0 -20
  100. package/src/components/report/use-report-designer.ts +0 -602
  101. package/src/components/report/use-report-viewer.ts +0 -88
  102. package/src/report/__test__/binding.test.ts +0 -320
  103. package/src/report/__test__/connector.test.ts +0 -239
  104. package/src/report/__test__/export-xlsx.test.ts +0 -96
  105. package/src/report/__test__/filter-bar.test.ts +0 -58
  106. package/src/report/__test__/params.test.ts +0 -156
  107. package/src/report/__test__/render.test.ts +0 -856
  108. package/src/report/__test__/rules.test.ts +0 -131
  109. package/src/report/__test__/template.test.ts +0 -366
  110. package/src/report/binding.ts +0 -474
  111. package/src/report/connector.ts +0 -206
  112. package/src/report/export-xlsx.ts +0 -15
  113. package/src/report/filter-bar.ts +0 -36
  114. package/src/report/index.ts +0 -13
  115. package/src/report/params.ts +0 -96
  116. package/src/report/render/__test__/aggregate.test.ts +0 -16
  117. package/src/report/render/__test__/coordinate.test.ts +0 -405
  118. package/src/report/render/aggregate.ts +0 -261
  119. package/src/report/render/builder.ts +0 -211
  120. package/src/report/render/coordinate.ts +0 -1239
  121. package/src/report/render/index.ts +0 -30
  122. package/src/report/render/style-resolver.ts +0 -68
  123. package/src/report/render/template-index.ts +0 -200
  124. package/src/report/rules/evaluate.ts +0 -113
  125. package/src/report/rules/index.ts +0 -7
  126. package/src/report/template.ts +0 -145
  127. package/src/report/types.ts +0 -96
  128. package/src/types/report-designer.ts +0 -38
  129. package/src/types/report-viewer.ts +0 -37
@@ -1,58 +0,0 @@
1
- import { describe, expect, it } from 'vitest'
2
-
3
- import { parseDateRangeValue, patchParamValues, resolveNumberParamValue } from '../filter-bar'
4
-
5
- describe('parseDateRangeValue', () => {
6
- it('解析数组形式的日期范围', () => {
7
- expect(parseDateRangeValue(['2024-01-01', '2024-12-31'])).toEqual(['2024-01-01', '2024-12-31'])
8
- })
9
-
10
- it('解析 from/to 对象形式', () => {
11
- expect(parseDateRangeValue({ from: '2024-03-01', to: '2024-03-31' })).toEqual([
12
- '2024-03-01',
13
- '2024-03-31'
14
- ])
15
- })
16
-
17
- it('解析 start/end 对象形式', () => {
18
- expect(parseDateRangeValue({ start: '2024-06-01', end: '2024-06-30' })).toEqual([
19
- '2024-06-01',
20
- '2024-06-30'
21
- ])
22
- })
23
-
24
- it('空值回退为空字符串元组', () => {
25
- expect(parseDateRangeValue(undefined)).toEqual(['', ''])
26
- expect(parseDateRangeValue(null)).toEqual(['', ''])
27
- expect(parseDateRangeValue('')).toEqual(['', ''])
28
- })
29
- })
30
-
31
- describe('resolveNumberParamValue', () => {
32
- it('保留有限数字', () => {
33
- expect(resolveNumberParamValue(42)).toBe(42)
34
- expect(resolveNumberParamValue('12.5')).toBe(12.5)
35
- })
36
-
37
- it('空值与非法值返回 undefined', () => {
38
- expect(resolveNumberParamValue('')).toBeUndefined()
39
- expect(resolveNumberParamValue(null)).toBeUndefined()
40
- expect(resolveNumberParamValue(undefined)).toBeUndefined()
41
- expect(resolveNumberParamValue('abc')).toBeUndefined()
42
- })
43
- })
44
-
45
- describe('patchParamValues', () => {
46
- it('合并单参数变更且保留其余值', () => {
47
- const next = patchParamValues({ region: '华东', qty: 10 }, 'region', '华南')
48
- expect(next).toEqual({ region: '华南', qty: 10 })
49
- })
50
-
51
- it('支持 date-range 元组写入', () => {
52
- const next = patchParamValues({ dateRange: ['2024-01-01', '2024-01-31'] }, 'dateRange', [
53
- '2024-02-01',
54
- '2024-02-28'
55
- ])
56
- expect(next.dateRange).toEqual(['2024-02-01', '2024-02-28'])
57
- })
58
- })
@@ -1,156 +0,0 @@
1
- import { describe, expect, it } from 'vitest'
2
-
3
- import { buildParamDefs, extractParamIds, resolveBoundDatasetParams } from '../params'
4
- import type { QueryParamDef } from '../types'
5
-
6
- describe('report params', () => {
7
- describe('extractParamIds', () => {
8
- it('从 SQL 提取 ${param} 占位符并去重', () => {
9
- expect(
10
- extractParamIds(
11
- 'SELECT * FROM orders WHERE order_date >= ${dateFrom} AND order_date <= ${dateTo}'
12
- )
13
- ).toEqual(['dateFrom', 'dateTo'])
14
-
15
- expect(
16
- extractParamIds("SELECT * FROM orders WHERE region = ${region} AND ${region} != ''")
17
- ).toEqual(['region'])
18
- expect(extractParamIds('SELECT * FROM orders')).toEqual([])
19
- })
20
-
21
- it('忽略空白占位符与未闭合占位符', () => {
22
- expect(extractParamIds('WHERE a = ${ } AND b = ${ x }')).toEqual(['x'])
23
- expect(extractParamIds('WHERE a = ${unclosed')).toEqual([])
24
- })
25
- })
26
-
27
- describe('buildParamDefs', () => {
28
- it('等值比较推断 number 类型(旧行为;编辑器通常覆盖为 select/text)', () => {
29
- expect(buildParamDefs('SELECT customer FROM orders WHERE region = ${region}')).toEqual([
30
- { id: 'region', label: 'region', type: 'number', defaultValue: 0 }
31
- ])
32
- })
33
-
34
- it('BETWEEN 单参数推断 date-range 类型', () => {
35
- const params = buildParamDefs(
36
- 'SELECT customer FROM orders WHERE order_date BETWEEN ${dateRange}'
37
- )
38
- expect(params).toHaveLength(1)
39
- expect(params[0]?.id).toBe('dateRange')
40
- expect(params[0]?.type).toBe('date-range')
41
- expect(params[0]?.defaultValue).toEqual(['', ''])
42
- })
43
-
44
- it('BETWEEN 双参数:首参推断 date,次参无 AND 后续回落 text(旧行为)', () => {
45
- const sql = 'SELECT customer FROM orders WHERE order_date BETWEEN ${dateFrom} AND ${dateTo}'
46
- const params = buildParamDefs(sql)
47
- const types = Object.fromEntries(params.map((p) => [p.id, p.type]))
48
- expect(types).toEqual({ dateFrom: 'date', dateTo: 'text' })
49
- })
50
-
51
- it('LIKE 推断 text、数值比较推断 number', () => {
52
- expect(
53
- buildParamDefs('SELECT customer FROM orders WHERE customer LIKE ${keyword}')[0]?.type
54
- ).toBe('text')
55
- expect(
56
- buildParamDefs('SELECT customer FROM orders WHERE amount > ${minAmount}')[0]?.type
57
- ).toBe('number')
58
- })
59
-
60
- it('元数据覆盖 label / 类型 / 默认值 / 选项', () => {
61
- const params = buildParamDefs('SELECT customer FROM orders WHERE region = ${region}', {
62
- region: {
63
- label: '地区',
64
- type: 'select',
65
- defaultValue: '',
66
- options: [
67
- { label: '华东', value: '华东' },
68
- { label: '华南', value: '华南' }
69
- ]
70
- }
71
- })
72
- expect(params[0]).toEqual({
73
- id: 'region',
74
- label: '地区',
75
- type: 'select',
76
- defaultValue: '',
77
- options: [
78
- { label: '华东', value: '华东' },
79
- { label: '华南', value: '华南' }
80
- ]
81
- })
82
- })
83
- })
84
-
85
- describe('resolveBoundDatasetParams', () => {
86
- const DATE_FROM: QueryParamDef = {
87
- id: 'dateFrom',
88
- label: '开始日期',
89
- type: 'date',
90
- defaultValue: '2024-01-01'
91
- }
92
- const DATE_TO: QueryParamDef = {
93
- id: 'dateTo',
94
- label: '结束日期',
95
- type: 'date',
96
- defaultValue: '2024-12-31'
97
- }
98
- const REGION: QueryParamDef = {
99
- id: 'region',
100
- label: '地区',
101
- type: 'select',
102
- defaultValue: '',
103
- options: [{ label: '华东', value: '华东' }]
104
- }
105
- const ALERT_THRESHOLD: QueryParamDef = {
106
- id: 'alertThreshold',
107
- label: '库存预警阈值',
108
- type: 'number',
109
- defaultValue: 80
110
- }
111
-
112
- const datasetParams: Record<string, QueryParamDef[]> = {
113
- orders: [DATE_FROM, DATE_TO, REGION],
114
- customers: [REGION],
115
- 'sales-matrix': [REGION],
116
- 'inventory-alerts': [ALERT_THRESHOLD]
117
- }
118
-
119
- it('按绑定数据集合并查询参数并去重', () => {
120
- const merged = resolveBoundDatasetParams(
121
- [],
122
- ['orders', 'customers'],
123
- (id) => datasetParams[id] ?? []
124
- )
125
- expect(merged.map((item) => item.id).sort()).toEqual(['dateFrom', 'dateTo', 'region'])
126
-
127
- const matrix = resolveBoundDatasetParams(
128
- [],
129
- ['sales-matrix'],
130
- (id) => datasetParams[id] ?? []
131
- )
132
- expect(matrix.map((item) => item.id)).toEqual(['region'])
133
-
134
- const inventory = resolveBoundDatasetParams(
135
- [],
136
- ['inventory-alerts'],
137
- (id) => datasetParams[id] ?? []
138
- )
139
- expect(inventory.map((item) => item.id)).toEqual(['alertThreshold'])
140
- })
141
-
142
- it('无绑定数据集时回退全局参数', () => {
143
- const fallback = resolveBoundDatasetParams([REGION], [], () => [])
144
- expect(fallback.map((item) => item.id)).toEqual(['region'])
145
- })
146
-
147
- it('同名参数先见为准', () => {
148
- const overridden: QueryParamDef = { ...REGION, label: '覆盖地区' }
149
- const merged = resolveBoundDatasetParams([], ['orders', 'customers'], (id) =>
150
- id === 'orders' ? [REGION] : [overridden]
151
- )
152
- expect(merged).toHaveLength(1)
153
- expect(merged[0]?.label).toBe('地区')
154
- })
155
- })
156
- })