@visactor/vbi 0.4.12 → 0.4.14

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 (32) hide show
  1. package/dist/builder/index.d.ts +1 -0
  2. package/dist/builder/sub-builders/havingFilters/having-builder.d.ts +33 -20
  3. package/dist/builder/sub-builders/havingFilters/having-group-builder.d.ts +48 -0
  4. package/dist/builder/sub-builders/havingFilters/having-node-builder.d.ts +8 -0
  5. package/dist/builder/sub-builders/havingFilters/index.d.ts +1 -0
  6. package/dist/builder/sub-builders/index.d.ts +1 -1
  7. package/dist/builder/sub-builders/whereFilters/index.d.ts +1 -0
  8. package/dist/builder/sub-builders/whereFilters/where-builder.d.ts +30 -17
  9. package/dist/builder/sub-builders/whereFilters/where-group-builder.d.ts +48 -0
  10. package/dist/builder/sub-builders/whereFilters/where-node-builder.d.ts +8 -0
  11. package/dist/builder/undo-manager.d.ts +37 -0
  12. package/dist/builder/vbi-builder.d.ts +2 -1
  13. package/dist/index.cjs +446 -130
  14. package/dist/index.js +428 -121
  15. package/dist/pipeline/index.d.ts +1 -1
  16. package/dist/pipeline/vqueryDSL/buildGroupBy.d.ts +2 -0
  17. package/dist/pipeline/vqueryDSL/buildHaving.d.ts +2 -0
  18. package/dist/pipeline/vqueryDSL/buildLimit.d.ts +2 -0
  19. package/dist/pipeline/vqueryDSL/buildSelect.d.ts +2 -0
  20. package/dist/pipeline/vqueryDSL/buildWhere.d.ts +2 -0
  21. package/dist/pipeline/vqueryDSL/index.d.ts +4 -1
  22. package/dist/pipeline/vqueryDSL/types.d.ts +7 -0
  23. package/dist/types/builder/VBIInterface.d.ts +2 -1
  24. package/dist/types/dsl/havingFilters/having.d.ts +12 -7
  25. package/dist/types/dsl/index.d.ts +4 -2
  26. package/dist/types/dsl/vbi/vbi.d.ts +2 -10
  27. package/dist/types/dsl/whereFilters/filters.d.ts +12 -1
  28. package/dist/types/index.d.ts +0 -1
  29. package/dist/utils/id.d.ts +3 -0
  30. package/dist/utils/index.d.ts +1 -0
  31. package/package.json +12 -10
  32. package/dist/pipeline/vqueryDSL/buildVQuery.d.ts +0 -4
@@ -1,3 +1,4 @@
1
1
  export { VBIBuilder } from './vbi-builder';
2
2
  export { VBI } from './vbi';
3
3
  export { MeasuresBuilder, DimensionsBuilder, ChartTypeBuilder, HavingFiltersBuilder } from './sub-builders';
4
+ export { UndoManager } from './undo-manager';
@@ -1,13 +1,14 @@
1
1
  import * as Y from 'yjs';
2
- import type { VBIHavingFilter } from '../../../types';
2
+ import type { VBIHavingClause, ObserveCallback } from '../../../types';
3
3
  import { HavingFiltersNodeBuilder } from './having-node-builder';
4
- import type { YArrayEvent, Transaction } from 'yjs';
4
+ import { HavingGroupBuilder } from './having-group-builder';
5
5
  /**
6
6
  * @description Having 过滤构建器,用于添加、修改、删除分组后过滤条件。Having 过滤在数据聚合后生效,用于筛选分组结果
7
7
  */
8
8
  export declare class HavingFiltersBuilder {
9
9
  private dsl;
10
- constructor(_doc: Y.Doc, dsl: Y.Map<any>);
10
+ private doc;
11
+ constructor(doc: Y.Doc, dsl: Y.Map<any>);
11
12
  /**
12
13
  * @description 添加一个 Having 过滤条件
13
14
  * @param field - 字段名
@@ -15,25 +16,33 @@ export declare class HavingFiltersBuilder {
15
16
  */
16
17
  add(field: string, callback: (node: HavingFiltersNodeBuilder) => void): HavingFiltersBuilder;
17
18
  /**
18
- * @description 更新指定字段的过滤条件
19
- * @param field - 字段名
19
+ * @description 添加一个 Having 分组
20
+ * @param op - 逻辑操作符
20
21
  * @param callback - 回调函数
21
22
  */
22
- update(field: string, callback: (node: HavingFiltersNodeBuilder) => void): HavingFiltersBuilder;
23
+ addGroup(op: 'and' | 'or', callback: (group: HavingGroupBuilder) => void): HavingFiltersBuilder;
23
24
  /**
24
- * @description 根据字段名删除 Having 过滤条件
25
- * @param field - 字段名
25
+ * @description 更新指定 ID 的过滤条件
26
+ * @param id - 过滤条件 ID
27
+ * @param callback - 回调函数
26
28
  */
27
- remove(field: string): HavingFiltersBuilder;
29
+ update(id: string, callback: (node: HavingFiltersNodeBuilder) => void): HavingFiltersBuilder;
28
30
  /**
29
- * @description 根据字段名查找 Having 过滤条件
30
- * @param field - 字段名
31
+ * @description 更新指定 ID 的分组
32
+ * @param id - 分组 ID
33
+ * @param callback - 回调函数
34
+ */
35
+ updateGroup(id: string, callback: (group: HavingGroupBuilder) => void): HavingFiltersBuilder;
36
+ /**
37
+ * @description 删除指定 ID 的条件或指定索引的项
38
+ * @param idOrIndex - ID 或索引
31
39
  */
32
- find(field: string): HavingFiltersNodeBuilder | undefined;
40
+ remove(idOrIndex: string | number): HavingFiltersBuilder;
33
41
  /**
34
- * @description 获取所有 Having 过滤条件
42
+ * @description 根据 ID 查找条件(过滤或分组)
43
+ * @param id - ID
35
44
  */
36
- findAll(): HavingFiltersNodeBuilder[];
45
+ find(id: string): HavingFiltersNodeBuilder | HavingGroupBuilder | undefined;
37
46
  /**
38
47
  * @description 清空所有 Having 过滤条件
39
48
  */
@@ -41,15 +50,19 @@ export declare class HavingFiltersBuilder {
41
50
  /**
42
51
  * @description 导出所有 Having 过滤条件为 JSON 数组
43
52
  */
44
- toJson(): VBIHavingFilter[];
45
- /**
46
- * @description 监听过滤条件变化
47
- * @param callback - 回调函数
48
- */
53
+ toJson(): VBIHavingClause[];
49
54
  /**
50
55
  * @description 监听过滤条件变化,返回取消监听的函数
51
56
  * @param callback - 回调函数
52
57
  * @returns 取消监听的函数
53
58
  */
54
- observe(callback: (e: YArrayEvent<any>, trans: Transaction | null) => void): () => void;
59
+ observe(callback: ObserveCallback): () => void;
60
+ /**
61
+ * @description 判断是否为分组节点
62
+ */
63
+ static isGroup(yMap: Y.Map<any>): boolean;
64
+ /**
65
+ * @description 判断是否为叶子节点
66
+ */
67
+ static isNode(yMap: Y.Map<any>): boolean;
55
68
  }
@@ -0,0 +1,48 @@
1
+ import * as Y from 'yjs';
2
+ import type { VBIHavingGroup } from '../../../types';
3
+ import { HavingFiltersNodeBuilder } from './having-node-builder';
4
+ /**
5
+ * @description Having 分组构建器,用于配置一组条件的逻辑关系(AND/OR)
6
+ */
7
+ export declare class HavingGroupBuilder {
8
+ private yMap;
9
+ constructor(yMap: Y.Map<any>);
10
+ /**
11
+ * @description 获取分组 ID
12
+ */
13
+ getId(): string;
14
+ /**
15
+ * @description 获取逻辑操作符
16
+ */
17
+ getOperator(): 'and' | 'or';
18
+ /**
19
+ * @description 设置逻辑操作符
20
+ * @param op - 逻辑操作符
21
+ */
22
+ setOperator(op: 'and' | 'or'): this;
23
+ /**
24
+ * @description 添加一个 Having 过滤条件到分组
25
+ * @param field - 字段名
26
+ * @param callback - 回调函数
27
+ */
28
+ add(field: string, callback: (node: HavingFiltersNodeBuilder) => void): this;
29
+ /**
30
+ * @description 添加一个嵌套分组到当前分组
31
+ * @param op - 逻辑操作符
32
+ * @param callback - 回调函数
33
+ */
34
+ addGroup(op: 'and' | 'or', callback: (group: HavingGroupBuilder) => void): this;
35
+ /**
36
+ * @description 删除指定 ID 的条件或指定索引的项
37
+ * @param idOrIndex - ID 或索引
38
+ */
39
+ remove(idOrIndex: string | number): this;
40
+ /**
41
+ * @description 清空分组内所有条件
42
+ */
43
+ clear(): this;
44
+ /**
45
+ * @description 导出为 JSON
46
+ */
47
+ toJson(): VBIHavingGroup;
48
+ }
@@ -6,10 +6,18 @@ import { VBIHavingFilter } from '../../../types';
6
6
  export declare class HavingFiltersNodeBuilder {
7
7
  private yMap;
8
8
  constructor(yMap: Y.Map<any>);
9
+ /**
10
+ * @description 获取节点 ID
11
+ */
12
+ getId(): string;
9
13
  /**
10
14
  * @description 获取字段名
11
15
  */
12
16
  getField(): string;
17
+ /**
18
+ * @description 获取过滤操作符
19
+ */
20
+ getOperator(): string | undefined;
13
21
  /**
14
22
  * @description 设置过滤条件的值
15
23
  * @param value - 过滤值
@@ -1,2 +1,3 @@
1
1
  export { HavingFiltersBuilder } from './having-builder';
2
2
  export { HavingFiltersNodeBuilder } from './having-node-builder';
3
+ export { HavingGroupBuilder } from './having-group-builder';
@@ -1,5 +1,5 @@
1
1
  export { MeasuresBuilder } from './measures';
2
2
  export { DimensionsBuilder } from './dimensions';
3
3
  export { ChartTypeBuilder } from './chart-type';
4
- export { WhereFiltersBuilder } from './whereFilters';
4
+ export { WhereFiltersBuilder, WhereGroupBuilder } from './whereFilters';
5
5
  export { HavingFiltersBuilder } from './havingFilters';
@@ -1 +1,2 @@
1
1
  export { WhereFiltersBuilder } from './where-builder';
2
+ export { WhereGroupBuilder } from './where-group-builder';
@@ -1,6 +1,7 @@
1
1
  import * as Y from 'yjs';
2
- import type { VBIFilter, ObserveCallback } from '../../../types';
2
+ import type { VBIWhereClause, ObserveCallback } from '../../../types';
3
3
  import { WhereFilterNodeBuilder } from './where-node-builder';
4
+ import { WhereGroupBuilder } from './where-group-builder';
4
5
  /**
5
6
  * @description Where 过滤构建器,用于添加、修改、删除行级过滤条件。Where 过滤在数据查询前生效,用于筛选原始数据
6
7
  */
@@ -15,25 +16,33 @@ export declare class WhereFiltersBuilder {
15
16
  */
16
17
  add(field: string, callback: (node: WhereFilterNodeBuilder) => void): WhereFiltersBuilder;
17
18
  /**
18
- * @description 更新指定字段的过滤条件
19
- * @param field - 字段名
19
+ * @description 添加一个 Where 分组
20
+ * @param op - 逻辑操作符
20
21
  * @param callback - 回调函数
21
22
  */
22
- update(field: string, callback: (node: WhereFilterNodeBuilder) => void): WhereFiltersBuilder;
23
+ addGroup(op: 'and' | 'or', callback: (group: WhereGroupBuilder) => void): WhereFiltersBuilder;
23
24
  /**
24
- * @description 删除指定字段的过滤条件
25
- * @param field - 字段名
25
+ * @description 更新指定 ID 的过滤条件
26
+ * @param id - 过滤条件 ID
27
+ * @param callback - 回调函数
26
28
  */
27
- remove(field: string): WhereFiltersBuilder;
29
+ update(id: string, callback: (node: WhereFilterNodeBuilder) => void): WhereFiltersBuilder;
28
30
  /**
29
- * @description 根据字段名查找过滤条件
30
- * @param field - 字段名
31
+ * @description 更新指定 ID 的分组
32
+ * @param id - 分组 ID
33
+ * @param callback - 回调函数
34
+ */
35
+ updateGroup(id: string, callback: (group: WhereGroupBuilder) => void): WhereFiltersBuilder;
36
+ /**
37
+ * @description 删除指定 ID 的条件或指定索引的项
38
+ * @param idOrIndex - ID 或索引
31
39
  */
32
- find(field: string): WhereFilterNodeBuilder | undefined;
40
+ remove(idOrIndex: string | number): WhereFiltersBuilder;
33
41
  /**
34
- * @description 获取所有 Where 过滤条件
42
+ * @description 根据 ID 查找条件(过滤或分组)
43
+ * @param id - ID
35
44
  */
36
- findAll(): WhereFilterNodeBuilder[];
45
+ find(id: string): WhereFilterNodeBuilder | WhereGroupBuilder | undefined;
37
46
  /**
38
47
  * @description 清空所有 Where 过滤条件
39
48
  */
@@ -41,15 +50,19 @@ export declare class WhereFiltersBuilder {
41
50
  /**
42
51
  * @description 导出所有 Where 过滤条件为 JSON 数组
43
52
  */
44
- toJson(): VBIFilter[];
45
- /**
46
- * @description 监听过滤条件变化
47
- * @param callback - 回调函数
48
- */
53
+ toJson(): VBIWhereClause[];
49
54
  /**
50
55
  * @description 监听过滤条件变化,返回取消监听的函数
51
56
  * @param callback - 回调函数
52
57
  * @returns 取消监听的函数
53
58
  */
54
59
  observe(callback: ObserveCallback): () => void;
60
+ /**
61
+ * @description 判断是否为分组节点
62
+ */
63
+ static isGroup(yMap: Y.Map<any>): boolean;
64
+ /**
65
+ * @description 判断是否为叶子节点
66
+ */
67
+ static isNode(yMap: Y.Map<any>): boolean;
55
68
  }
@@ -0,0 +1,48 @@
1
+ import * as Y from 'yjs';
2
+ import type { VBIWhereGroup } from '../../../types';
3
+ import { WhereFilterNodeBuilder } from './where-node-builder';
4
+ /**
5
+ * @description Where 分组构建器,用于配置一组条件的逻辑关系(AND/OR)
6
+ */
7
+ export declare class WhereGroupBuilder {
8
+ private yMap;
9
+ constructor(yMap: Y.Map<any>);
10
+ /**
11
+ * @description 获取分组 ID
12
+ */
13
+ getId(): string;
14
+ /**
15
+ * @description 获取逻辑操作符
16
+ */
17
+ getOperator(): 'and' | 'or';
18
+ /**
19
+ * @description 设置逻辑操作符
20
+ * @param op - 逻辑操作符
21
+ */
22
+ setOperator(op: 'and' | 'or'): this;
23
+ /**
24
+ * @description 添加一个 Where 过滤条件到分组
25
+ * @param field - 字段名
26
+ * @param callback - 回调函数
27
+ */
28
+ add(field: string, callback: (node: WhereFilterNodeBuilder) => void): this;
29
+ /**
30
+ * @description 添加一个嵌套分组到当前分组
31
+ * @param op - 逻辑操作符
32
+ * @param callback - 回调函数
33
+ */
34
+ addGroup(op: 'and' | 'or', callback: (group: WhereGroupBuilder) => void): this;
35
+ /**
36
+ * @description 删除指定 ID 的条件或指定索引的项
37
+ * @param idOrIndex - ID 或索引
38
+ */
39
+ remove(idOrIndex: string | number): this;
40
+ /**
41
+ * @description 清空分组内所有条件
42
+ */
43
+ clear(): this;
44
+ /**
45
+ * @description 导出为 JSON
46
+ */
47
+ toJson(): VBIWhereGroup;
48
+ }
@@ -6,10 +6,18 @@ import { VBIFilter } from '../../../types';
6
6
  export declare class WhereFilterNodeBuilder {
7
7
  private yMap;
8
8
  constructor(yMap: Y.Map<any>);
9
+ /**
10
+ * @description 获取节点 ID
11
+ */
12
+ getId(): string;
9
13
  /**
10
14
  * @description 获取字段名
11
15
  */
12
16
  getField(): string;
17
+ /**
18
+ * @description 获取过滤操作符
19
+ */
20
+ getOperator(): string | undefined;
13
21
  /**
14
22
  * @description 设置过滤操作符
15
23
  * @param operator - 操作符
@@ -0,0 +1,37 @@
1
+ /**
2
+ * @description 撤销/重做管理器,提供基于 YJS 的撤销和重做功能,支持栈管理和历史清除操作
3
+ */
4
+ export declare class UndoManager {
5
+ private manager;
6
+ /**
7
+ * @description 构造函数
8
+ * @param scope - YJS 文档或类型作用域,用于定义撤销/重做的追踪范围
9
+ */
10
+ constructor(scope: any);
11
+ /**
12
+ * @description 撤销上一次修改
13
+ * @returns 是否成功撤销
14
+ */
15
+ undo(): boolean;
16
+ /**
17
+ * @description 重做被撤销的修改
18
+ * @returns 是否成功重做
19
+ */
20
+ redo(): boolean;
21
+ /**
22
+ * @description 检查是否有可撤销的操作
23
+ * @returns 是否可以撤销
24
+ */
25
+ canUndo(): boolean;
26
+ /**
27
+ * @description 检查是否有可重做的操作
28
+ * @returns 是否可以重做
29
+ */
30
+ canRedo(): boolean;
31
+ /**
32
+ * @description 清除历史记录
33
+ * @param clearUndoStack - 是否清除撤销栈,默认 true
34
+ * @param clearRedoStack - 是否清除重做栈,默认 true
35
+ */
36
+ clear(clearUndoStack?: boolean, clearRedoStack?: boolean): void;
37
+ }
@@ -6,11 +6,12 @@ import { MeasuresBuilder } from './sub-builders/measures';
6
6
  import { HavingFiltersBuilder } from './sub-builders/havingFilters';
7
7
  import { WhereFiltersBuilder } from './sub-builders';
8
8
  import { ChartTypeBuilder } from './sub-builders';
9
+ import { UndoManager } from './undo-manager';
9
10
  import { VBIDSL, VBIBuilderInterface } from '../types';
10
11
  export declare class VBIBuilder implements VBIBuilderInterface {
11
12
  doc: Y.Doc;
12
13
  dsl: Y.Map<any>;
13
- undoManager: Y.UndoManager;
14
+ undoManager: UndoManager;
14
15
  chartType: ChartTypeBuilder;
15
16
  measures: MeasuresBuilder;
16
17
  dimensions: DimensionsBuilder;