@xpyjs/gantt-core 0.0.1-alpha.2 → 0.0.1-alpha.3

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/dist/style.css +1 -0
  2. package/dist/x-gantt.js +5853 -0
  3. package/dist/x-gantt.umd.cjs +18 -0
  4. package/package.json +1 -1
  5. package/types/GanttContext.d.ts +33 -0
  6. package/types/XGantt.d.ts +248 -0
  7. package/types/event/index.d.ts +67 -0
  8. package/types/index.d.ts +13 -0
  9. package/types/logo.d.ts +2 -0
  10. package/types/models/Task.d.ts +67 -0
  11. package/types/rendering/RenderScheduler.d.ts +93 -0
  12. package/types/rendering/Renderer.d.ts +52 -0
  13. package/types/rendering/chart/ChartBody.d.ts +102 -0
  14. package/types/rendering/chart/ChartGrid.d.ts +37 -0
  15. package/types/rendering/chart/ChartHeader.d.ts +54 -0
  16. package/types/rendering/chart/ChartHoliday.d.ts +38 -0
  17. package/types/rendering/chart/ChartLink.d.ts +87 -0
  18. package/types/rendering/chart/ChartRow.d.ts +17 -0
  19. package/types/rendering/chart/ChartSlider.d.ts +54 -0
  20. package/types/rendering/chart/ChartToday.d.ts +31 -0
  21. package/types/rendering/chart/ChartWeekend.d.ts +43 -0
  22. package/types/rendering/chart/Pattern.d.ts +19 -0
  23. package/types/rendering/chart/index.d.ts +33 -0
  24. package/types/rendering/other/GuideLine.d.ts +50 -0
  25. package/types/rendering/other/MiddleResizeLine.d.ts +14 -0
  26. package/types/rendering/scrollbar/index.d.ts +131 -0
  27. package/types/rendering/table/Checkbox.d.ts +39 -0
  28. package/types/rendering/table/TableBody.d.ts +25 -0
  29. package/types/rendering/table/TableCell.d.ts +43 -0
  30. package/types/rendering/table/TableHeader.d.ts +13 -0
  31. package/types/rendering/table/TableHeaderCell.d.ts +20 -0
  32. package/types/rendering/table/TableHeaderGroup.d.ts +15 -0
  33. package/types/rendering/table/TableRow.d.ts +57 -0
  34. package/types/rendering/table/index.d.ts +15 -0
  35. package/types/store/ColumnManager.d.ts +75 -0
  36. package/types/store/DataManager.d.ts +119 -0
  37. package/types/store/OptionManager.d.ts +11 -0
  38. package/types/store/TimeAxis.d.ts +88 -0
  39. package/types/store/index.d.ts +21 -0
  40. package/types/types/chart.d.ts +59 -0
  41. package/types/types/event.d.ts +22 -0
  42. package/types/types/global.d.ts +9 -0
  43. package/types/types/index.d.ts +21 -0
  44. package/types/types/link.d.ts +23 -0
  45. package/types/types/options.d.ts +559 -0
  46. package/types/types/render.d.ts +26 -0
  47. package/types/types/styles.d.ts +37 -0
  48. package/types/types/table.d.ts +134 -0
  49. package/types/utils/color.d.ts +148 -0
  50. package/types/utils/helpers.d.ts +43 -0
  51. package/types/utils/id.d.ts +1 -0
  52. package/types/utils/logger.d.ts +88 -0
  53. package/types/utils/size.d.ts +7 -0
  54. package/types/utils/time.d.ts +9 -0
@@ -0,0 +1,559 @@
1
+ import { EmitData } from ".";
2
+ import { IChartOptions } from "./chart";
3
+ import { ILink } from "./link";
4
+ import { IPattern } from "./styles";
5
+ import { ITableOptions } from "./table";
6
+
7
+ export type XGanttUnit = "hour" | "day" | "week" | "month" | "quarter";
8
+
9
+ export interface IGanttOptions {
10
+ /** 日志 level。 默认 info */
11
+ logLevel?: "debug" | "info" | "warn" | "error" | "none";
12
+
13
+ /** 源数据 */
14
+ data: any[];
15
+
16
+ /** 关联配置 */
17
+ links: {
18
+ /**
19
+ * 关联数据集合
20
+ *
21
+ * - 每一条数据都需要指定自己的 key 作为唯一 id,默认 'id'。 XGantt 内部不会修改它,仅用于修改数据与本地数据对比更新使用,否则无法更新。字段名称除指定字段外,任意使用,可以通过 key 来配置
22
+ * - 每条数据应当具有正确的 `from`、`to` 属性,这样就可以保证关连线的位置。每一个 `from`、`to` 属性都应当绑定正确的数据 `id`,如果绑定不正确,关连线无法渲染
23
+ * - 支持单独设置每一条连线。除明确标明不支持单独配置的属性外,大部分属性均支持在 data 中单独配置。
24
+ *
25
+ * @notice 使用 links 功能之前,确保对应源数据中有 `id`(id 字段可以自定义) 字段
26
+ * @notice 当 `from` 和 `to` 一样时,不会连线。
27
+ *
28
+ * @example
29
+ * const data = [
30
+ * {
31
+ * from: 1, // id 为 1 的数据
32
+ * to: 2 // id 为 2 的数据
33
+ * }
34
+ * ]
35
+ */
36
+ data: ILink[];
37
+ /** 指定唯一 id 的字段。 默认 'id'。 如果没有找到对应字段,可能会导致关联线无法查找/更新/删除 */
38
+ key: string;
39
+ /** 是否展示关联线。不支持单独配置 */
40
+ show: boolean;
41
+ /** 创建相关设置 */
42
+ create: {
43
+ /**
44
+ * 是否允许创建连线。
45
+ *
46
+ * @default false
47
+ *
48
+ * @description 开启时,所有节点将按照 from 与 to 属性规则允许创建连线
49
+ */
50
+ enabled: boolean;
51
+ /**
52
+ * 创建点的展示方式
53
+ *
54
+ * @default 'hover'
55
+ *
56
+ * - `always` - 始终展示
57
+ * - `hover` - 鼠标悬停在任务条时展示
58
+ */
59
+ mode: "always" | "hover";
60
+ /** 创建点的颜色 */
61
+ color?: string;
62
+ /** 透明度 */
63
+ opacity?: number;
64
+ /** 内圈空心半径。 默认 3 */
65
+ radius: number;
66
+ /** 线条宽度。 默认 2 */
67
+ width: number;
68
+ /**
69
+ * 是否允许节点作为起始点创建连线。允许开启后,将可以通过创建按钮去链接被允许的任务节点
70
+ *
71
+ * @default true
72
+ *
73
+ * @argument {true} - 允许创建连线
74
+ * @argument {false} - 不允许创建连线
75
+ * @argument {"S"} - 允许以 S,也就是左侧起始点作为起点创建连线
76
+ * @argument {"F"} - 允许以 F,也就是右侧结束点作为起点创建连线
77
+ */
78
+ from: boolean | "S" | "F" | ((row: EmitData) => boolean | "S" | "F");
79
+ /**
80
+ * 是否允许节点被链接。如果允许,可以将当前任务节点作为被连接点
81
+ *
82
+ * @default true
83
+ *
84
+ * @argument {true} - 允许创建连线
85
+ * @argument {false} - 不允许创建连线
86
+ * @argument {"S"} - 允许以 S,也就是左侧起始点作为终点创建连线
87
+ * @argument {"F"} - 允许以 F,也就是右侧结束点作为终点创建连线
88
+ */
89
+ to:
90
+ | boolean
91
+ | "S"
92
+ | "F"
93
+ | ((row: EmitData, from: EmitData) => boolean | "S" | "F");
94
+ };
95
+ /** 默认关连线的颜色。每一条线可以单独配置后覆盖当前颜色。默认主色 */
96
+ color?: string;
97
+ /**
98
+ * 转角到起始或结束点的距离。它指起始点或结束点到转向点的距离,防止出现连线初始就转向,目视不好定位的情况。
99
+ *
100
+ * @default 20
101
+ */
102
+ distance: number;
103
+ /** 线条的起点/终点位置与任务条的距离。 默认 5 */
104
+ gap: number;
105
+ /** 线条的虚线设定。 默认 [6, 3] */
106
+ dash: number[];
107
+ /** 线条的宽度。 默认 1 */
108
+ width: number;
109
+ /** 箭头设置 */
110
+ arrow: {
111
+ /** 箭头颜色。 可单独配置,默认继承 link 的颜色 */
112
+ color?: string;
113
+ /** 箭头宽度 */
114
+ width: number;
115
+ /** 箭头高度 */
116
+ height: number;
117
+ };
118
+ /** 原点大小。 默认 3 */
119
+ radius: number;
120
+ };
121
+
122
+ /** 主色调。默认 #eca710 */
123
+ primaryColor: string;
124
+
125
+ /** 甘特图宽度 */
126
+ width?: number;
127
+
128
+ /** 甘特图高度 */
129
+ height?: number;
130
+
131
+ /**
132
+ * 日期格式化格式。所有展示日期的地方都使用该格式化格式
133
+ *
134
+ * @default 'YYYY-MM-DD HH:mm:ss'
135
+ *
136
+ * @description 该格式将用于所有日期字段的格式化。至少需要格式化到指定单位的粒度,否则会丢失精度,导致出现渲染异常。
137
+ *
138
+ * @see 参考 dayjs 的 {@link https://day.js.org/docs/en/display/format|format} 文档
139
+ */
140
+ dateFormat: string;
141
+
142
+ /** 展开配置 */
143
+ expand: {
144
+ /**
145
+ * 是否展示展开
146
+ *
147
+ * @default true
148
+ *
149
+ * @description 如果不展示展开按钮,则所有数据都将展开,不会被收起
150
+ */
151
+ show: boolean;
152
+ /**
153
+ * 是否默认展开
154
+ *
155
+ * @default true
156
+ */
157
+ enabled: boolean;
158
+ };
159
+
160
+ /** 选择配置 */
161
+ selection: {
162
+ /** 是否启用选择功能 */
163
+ enabled: boolean;
164
+ /**
165
+ * 右键点击时是否包含自身
166
+ *
167
+ * @default true
168
+ *
169
+ * @description 如果禁用,则右键点击选择框时,不会影响自身的选择,有时候这会反直觉。
170
+ */
171
+ includeSelf: boolean;
172
+ };
173
+
174
+ /**
175
+ * 时间刻度
176
+ *
177
+ * @default 'day'
178
+ */
179
+ unit: XGanttUnit;
180
+
181
+ /**
182
+ * 显示语言。配置参考 {@link https://day.js.org/docs/en/i18n/i18n|dayjs i18n}
183
+ *
184
+ * @default 'en'
185
+ */
186
+ locale: string;
187
+
188
+ /**
189
+ * 当鼠标选停在具有起止时间的任务行上时,是否高亮对应的表头时间。
190
+ *
191
+ * @description 仅针对单位为 `day` 时生效
192
+ */
193
+ highlight?: boolean;
194
+
195
+ /** 字段映射配置 */
196
+ fields: {
197
+ /** ID字段 */
198
+ id: string;
199
+
200
+ /** 开始时间字段 */
201
+ startTime: string;
202
+
203
+ /** 结束时间字段 */
204
+ endTime: string;
205
+
206
+ /** 名称字段 */
207
+ name: string;
208
+
209
+ /** 进度字段 */
210
+ progress: string;
211
+
212
+ /** 子项字段 */
213
+ children: string;
214
+ };
215
+
216
+ /** 表格配置 */
217
+ table: ITableOptions;
218
+
219
+ /** 图表配置 */
220
+ chart: IChartOptions;
221
+
222
+ /** 整体的边框,以及纵向网格线 */
223
+ border: {
224
+ /** 是否展示边框 */
225
+ show?: boolean;
226
+ /** 边框颜色。默认 #e5e5e5 */
227
+ color: string;
228
+ };
229
+
230
+ /** 头部配置 */
231
+ header: {
232
+ /**
233
+ * 表头高度。 >= 30
234
+ *
235
+ * @default 80
236
+ */
237
+ height: number;
238
+ /** 背景颜色。默认使用主色调 */
239
+ backgroundColor?: string;
240
+ /** 文字颜色 */
241
+ color: string;
242
+ /**
243
+ * 文字大小
244
+ *
245
+ * @default 14
246
+ */
247
+ fontSize: number;
248
+ /**
249
+ * 文字粗细
250
+ *
251
+ * @default 600
252
+ */
253
+ fontWeight: number | string;
254
+ /**
255
+ * 文字字体
256
+ *
257
+ * @default 'Arial'
258
+ */
259
+ fontFamily: string;
260
+ };
261
+
262
+ /** 行属性配置 */
263
+ row: {
264
+ /**
265
+ * 行高。 [20, 70]
266
+ *
267
+ * @default 30
268
+ */
269
+ height: number;
270
+ /**
271
+ * 不同层级行的缩进宽度
272
+ *
273
+ * @default 16
274
+ */
275
+ indent: number;
276
+ /** 背景颜色。数组可以根据行层级选择指定样式 */
277
+ backgroundColor?: string | string[] | ((row: EmitData) => string);
278
+ /** 悬停行样式 */
279
+ hover: {
280
+ /**
281
+ * 悬停的背景颜色
282
+ *
283
+ * @default #000
284
+ */
285
+ backgroundColor: string;
286
+ /**
287
+ * 透明度
288
+ *
289
+ * @default 0.05
290
+ */
291
+ opacity: number;
292
+ };
293
+ /** 选择行样式 */
294
+ select: {
295
+ /**
296
+ * 背景颜色
297
+ *
298
+ * @default #000
299
+ */
300
+ backgroundColor: string;
301
+ /**
302
+ * 透明度
303
+ *
304
+ * @default 0.1
305
+ */
306
+ opacity: number;
307
+ };
308
+ };
309
+
310
+ /** 任务条配置 */
311
+ bar: {
312
+ /**
313
+ * 任务条高度。支持百分比,将按 row 的 height 计算
314
+ *
315
+ * @default 20
316
+ */
317
+ height: number | string;
318
+
319
+ /**
320
+ * 显示在任务条上的字段内容。如果配置了 label,则会显示 label 的内容。支持点语法对嵌套字段进行访问
321
+ */
322
+ field?: string;
323
+ /**
324
+ * 显示在任务条上的文本内容。它的优先级比 field 高
325
+ */
326
+ label?: string | ((row: EmitData) => string);
327
+ /** 任务条移动规则 */
328
+ move: {
329
+ /** 允许移动移动/缩放 */
330
+ enabled?: boolean | ((row: EmitData) => boolean);
331
+ /**
332
+ * 是否锁定时间范围。如果锁定,拖动将无法超出范围
333
+ */
334
+ lock?: boolean;
335
+ /**
336
+ * 是否允许左右分别单独移动。移动规则同整体效果
337
+ */
338
+ single?: {
339
+ /** 是否允许左移 */
340
+ left?: boolean | ((row: EmitData) => boolean);
341
+ /** 是否允许右移 */
342
+ right?: boolean | ((row: EmitData) => boolean);
343
+ };
344
+ /**
345
+ * 是否按单位移动
346
+ * @description 启用后,移动每次最小为一格,也就是一格最小单位宽度
347
+ */
348
+ byUnit: boolean;
349
+ /** 配置联动 */
350
+ link: {
351
+ /**
352
+ * 子级联动配置
353
+ *
354
+ * - none: 不联动
355
+ * - scale: 按比例缩放。按照伸缩比例进行联动
356
+ * - fixed: 按固定值缩放。仅针对两边超出进行缩放
357
+ */
358
+ child: "none" | "scale" | "fixed";
359
+ /**
360
+ * 父级联动配置
361
+ *
362
+ * - none: 不联动
363
+ * - strict: 严格在父级范围内
364
+ * - expand: 父级跟随极值扩展
365
+ */
366
+ parent: "none" | "strict" | "expand";
367
+ };
368
+ };
369
+ /** 背景颜色 */
370
+ backgroundColor?: string;
371
+ /** 圆角 */
372
+ radius?: number | number[];
373
+ /** 阴影颜色 */
374
+ shadowColor?: string;
375
+ /** 阴影模糊度 */
376
+ shadowBlur?: number;
377
+ /** 阴影偏移量 */
378
+ shadowOffsetX?: number;
379
+ /** 阴影偏移量 */
380
+ shadowOffsetY?: number;
381
+ /** 文字颜色 */
382
+ color?: string;
383
+ /** 任务条的字体大小 */
384
+ fontSize?: number;
385
+ /** 任务条的字体 */
386
+ fontFamily?: string;
387
+ /** 任务条的文本对齐方式 */
388
+ align?: "left" | "center" | "right";
389
+ /** 任务条的文本垂直对齐方式 */
390
+ verticalAlign?: "top" | "middle" | "bottom";
391
+ /** 进度样式 */
392
+ progress?: {
393
+ /** 是否显示进度 */
394
+ show?: boolean;
395
+ /**
396
+ * 进度百分比的基准值。数据中的进度值将会以这个值作为 100% 的基准值
397
+ *
398
+ * @default 100
399
+ *
400
+ * @description 一般来说,这个值是百分比的满分值,通常是 1 或者 100。 所有进度值将按照它进行换算
401
+ */
402
+ targetVal?: number;
403
+ /** 颜色 */
404
+ backgroundColor?: string;
405
+ /** 文本颜色 */
406
+ color?: string;
407
+ /**
408
+ * 基于任务条颜色的高亮百分比 0-100
409
+ *
410
+ * @description 优先级比 backgroundColor 低。默认 30
411
+ *
412
+ * @default 30
413
+ */
414
+ amount?: number;
415
+ /** 透明度 */
416
+ opacity?: number;
417
+ /** 圆角 */
418
+ radius?: number | number[];
419
+ /** 进度小数位 0-10 */
420
+ decimal?: number;
421
+ /**
422
+ * 文本显示位置
423
+ *
424
+ * - top 在进度条上方
425
+ * - right 在进度条右侧外部
426
+ * - inside 在进度条右侧内部
427
+ */
428
+ textAlign?: "top" | "right" | "inside";
429
+ /** 字体大小。默认 10 */
430
+ fontSize?: number;
431
+ /** 字体样式。默认斜体 */
432
+ fontStyle?: string;
433
+ };
434
+ };
435
+
436
+ /** 今日时间线配置 */
437
+ today: {
438
+ /**
439
+ * 是否展示今日线
440
+ *
441
+ * @default true
442
+ */
443
+ show: boolean;
444
+ /**
445
+ * 如何展示今日时间线
446
+ *
447
+ * @param line 展示一条竖线,以当前时间为准
448
+ * @param block 会将今天的整个区域进行填充
449
+ *
450
+ * @default 'line'
451
+ */
452
+ type: "line" | "block";
453
+ /**
454
+ * 线条的颜色
455
+ *
456
+ * @default lightblue
457
+ */
458
+ backgroundColor: string;
459
+ /**
460
+ * 线条的透明度
461
+ *
462
+ * @default 1
463
+ */
464
+ opacity: number;
465
+ /**
466
+ * 线条的宽度。 当 type 为 line 时有效。
467
+ *
468
+ * @default 1
469
+ */
470
+ width: number;
471
+ };
472
+
473
+ /** 周末配置 */
474
+ weekend: {
475
+ /**
476
+ * 是否展示周
477
+ * @default true
478
+ */
479
+ show: boolean;
480
+ /**
481
+ * 周末的背景颜色
482
+ *
483
+ * @default #c9c9c9
484
+ */
485
+ backgroundColor: string;
486
+ /**
487
+ * 透明度
488
+ *
489
+ * @default 0.1
490
+ */
491
+ opacity: number;
492
+ } & IPattern;
493
+
494
+ /** 节假日期配置 */
495
+ holiday: {
496
+ /**
497
+ * 是否展示节假日。
498
+ */
499
+ show?: boolean;
500
+ /**
501
+ * 背景颜色。默认使用主色
502
+ */
503
+ backgroundColor?: string;
504
+ /**
505
+ * 透明度
506
+ *
507
+ * @default 0.1
508
+ */
509
+ opacity: number;
510
+ /**
511
+ * 配置节假日期。可以针对不同节假日配置不同的背景颜色。默认使用统一配置颜色
512
+ */
513
+ holidays?: Array<
514
+ {
515
+ date: Date | number | string | Array<Date | number | string>;
516
+ backgroundColor?: string;
517
+ opacity?: number;
518
+ } & IPattern
519
+ >;
520
+ } & IPattern;
521
+
522
+ /** 滚动条配置 */
523
+ scrollbar?: {
524
+ /** 是否显示水平滚动条 */
525
+ showHorizontal?: boolean;
526
+ /** 是否显示垂直滚动条 */
527
+ showVertical?: boolean;
528
+ track?: {
529
+ /** 滚动条轨道尺寸 (px) */
530
+ size?: number;
531
+ /** 滚动条轨道圆角 (px),默认 4px */
532
+ radius?: number;
533
+ /** 滚动条轨道颜色,默认 transparent */
534
+ color?: string;
535
+ };
536
+ thumb?: {
537
+ /** 滚动条滑块最小尺寸 (px),默认 30px */
538
+ size?: number;
539
+ /** 滚动条滑块圆角 (px),默认 4px */
540
+ radius?: number;
541
+ /** 滚动条滑块颜色,默认 rgba(0, 0, 0, 0.4) */
542
+ color?: string;
543
+ };
544
+ /** 鼠标悬停时显示滚动条的延迟时间 (ms),默认 0 */
545
+ showDelay?: number;
546
+ /** 鼠标离开后隐藏滚动条的延迟时间 (ms),默认 500 */
547
+ hideDelay?: number;
548
+ /** 滚动条显示动画时长 (ms),默认 200 */
549
+ showDuration?: number;
550
+ /** 滚动条隐藏动画时长 (ms),默认 200 */
551
+ hideDuration?: number;
552
+ /**
553
+ * 滚动动画持续时间 (ms), 默认 100
554
+ *
555
+ * @description 它用于控制滚动条跳转时长,而非滚轮的滚动
556
+ */
557
+ animationDuration?: number;
558
+ };
559
+ }
@@ -0,0 +1,26 @@
1
+ import { Store } from "@/store";
2
+ import { EventBus } from "../event";
3
+ import { Scrollbar } from "../rendering/scrollbar";
4
+ import { IGanttOptions } from "./options";
5
+
6
+ export interface IContext {
7
+ /**
8
+ * 获取 Store 实例
9
+ */
10
+ store: Store;
11
+
12
+ /**
13
+ * 获取事件总线实例
14
+ */
15
+ event: EventBus;
16
+
17
+ /**
18
+ * 获取滚动条实例
19
+ */
20
+ getScrollbar: () => Scrollbar;
21
+
22
+ /**
23
+ * 获取选项
24
+ */
25
+ getOptions: () => IGanttOptions;
26
+ }
@@ -0,0 +1,37 @@
1
+ export interface IPattern {
2
+ /**
3
+ * 填充样式
4
+ *
5
+ * @param stripe 斜条纹填充
6
+ * @param dot 圆点填充
7
+ * @param grid 网格填充
8
+ * @param custom 自定义图片填充。使用自定义需要配置 patternOptions 中的 image 属性
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * // 使用斜条纹
13
+ * pattern: "stripe"
14
+ *
15
+ * // 使用自定义图片
16
+ * pattern: "custom"
17
+ * customImage: "data:image/png;base64,..."
18
+ * ```
19
+ */
20
+ pattern?: "stripe" | "dot" | "grid" | "custom";
21
+
22
+ /**
23
+ * 条纹样式配置,仅在 pattern 为 "stripe" 时生效
24
+ */
25
+ patternOptions?: {
26
+ /** 条纹颜色,默认使用 backgroundColor */
27
+ color?: string;
28
+ /** 线条宽度。对 dot 就是圆点的大小 */
29
+ width?: number;
30
+ /** 图片旋转角度。对 stripe 有效 */
31
+ angle?: number;
32
+ /** 间距 */
33
+ spacing?: number;
34
+ /** 自定义图片。支持 base64 或图片 URL。对 custom 有效 */
35
+ image?: string;
36
+ };
37
+ }