@visactor/vtable-gantt 1.9.2-alpha.4 → 1.10.1

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 (95) hide show
  1. package/cjs/Gantt.d.ts +27 -10
  2. package/cjs/Gantt.js +31 -13
  3. package/cjs/Gantt.js.map +1 -1
  4. package/cjs/event/event-manager.d.ts +1 -0
  5. package/cjs/event/event-manager.js +120 -24
  6. package/cjs/event/event-manager.js.map +1 -1
  7. package/cjs/gantt-helper.d.ts +5 -0
  8. package/cjs/gantt-helper.js +99 -38
  9. package/cjs/gantt-helper.js.map +1 -1
  10. package/cjs/index.d.ts +1 -1
  11. package/cjs/index.js +1 -1
  12. package/cjs/index.js.map +1 -1
  13. package/cjs/scenegraph/dependency-link.d.ts +47 -0
  14. package/cjs/scenegraph/dependency-link.js +399 -0
  15. package/cjs/scenegraph/dependency-link.js.map +1 -0
  16. package/cjs/scenegraph/frame-border.js +1 -2
  17. package/cjs/scenegraph/{ganttNode.js → gantt-node.js} +2 -1
  18. package/cjs/scenegraph/gantt-node.js.map +1 -0
  19. package/cjs/scenegraph/grid.js +1 -1
  20. package/cjs/scenegraph/grid.js.map +1 -1
  21. package/cjs/scenegraph/scenegraph.d.ts +6 -0
  22. package/cjs/scenegraph/scenegraph.js +18 -8
  23. package/cjs/scenegraph/scenegraph.js.map +1 -1
  24. package/cjs/scenegraph/task-bar.d.ts +9 -2
  25. package/cjs/scenegraph/task-bar.js +99 -6
  26. package/cjs/scenegraph/task-bar.js.map +1 -1
  27. package/cjs/scenegraph/task-creation-button.d.ts +13 -0
  28. package/cjs/scenegraph/task-creation-button.js +86 -0
  29. package/cjs/scenegraph/task-creation-button.js.map +1 -0
  30. package/cjs/state/gantt-table-sync.d.ts +1 -0
  31. package/cjs/state/gantt-table-sync.js +11 -2
  32. package/cjs/state/gantt-table-sync.js.map +1 -1
  33. package/cjs/state/state-manager.d.ts +42 -4
  34. package/cjs/state/state-manager.js +129 -40
  35. package/cjs/state/state-manager.js.map +1 -1
  36. package/cjs/tools/pixel-ratio.js +1 -2
  37. package/cjs/ts-types/EVENT_TYPE.d.ts +2 -0
  38. package/cjs/ts-types/EVENT_TYPE.js +5 -2
  39. package/cjs/ts-types/EVENT_TYPE.js.map +1 -1
  40. package/cjs/ts-types/events.d.ts +14 -0
  41. package/cjs/ts-types/events.js.map +1 -1
  42. package/cjs/ts-types/gantt-engine.d.ts +69 -10
  43. package/cjs/ts-types/gantt-engine.js +6 -1
  44. package/cjs/ts-types/gantt-engine.js.map +1 -1
  45. package/dist/vtable-gantt.js +25454 -25737
  46. package/dist/vtable-gantt.min.js +2 -2
  47. package/es/Gantt.d.ts +27 -10
  48. package/es/Gantt.js +29 -11
  49. package/es/Gantt.js.map +1 -1
  50. package/es/event/event-manager.d.ts +1 -0
  51. package/es/event/event-manager.js +121 -24
  52. package/es/event/event-manager.js.map +1 -1
  53. package/es/gantt-helper.d.ts +5 -0
  54. package/es/gantt-helper.js +92 -31
  55. package/es/gantt-helper.js.map +1 -1
  56. package/es/index.d.ts +1 -1
  57. package/es/index.js +1 -1
  58. package/es/index.js.map +1 -1
  59. package/es/scenegraph/dependency-link.d.ts +47 -0
  60. package/es/scenegraph/dependency-link.js +394 -0
  61. package/es/scenegraph/dependency-link.js.map +1 -0
  62. package/es/scenegraph/frame-border.js +1 -2
  63. package/es/scenegraph/{ganttNode.js → gantt-node.js} +2 -1
  64. package/es/scenegraph/gantt-node.js.map +1 -0
  65. package/es/scenegraph/grid.js +1 -1
  66. package/es/scenegraph/grid.js.map +1 -1
  67. package/es/scenegraph/scenegraph.d.ts +6 -0
  68. package/es/scenegraph/scenegraph.js +21 -7
  69. package/es/scenegraph/scenegraph.js.map +1 -1
  70. package/es/scenegraph/task-bar.d.ts +9 -2
  71. package/es/scenegraph/task-bar.js +99 -6
  72. package/es/scenegraph/task-bar.js.map +1 -1
  73. package/es/scenegraph/task-creation-button.d.ts +13 -0
  74. package/es/scenegraph/task-creation-button.js +78 -0
  75. package/es/scenegraph/task-creation-button.js.map +1 -0
  76. package/es/state/gantt-table-sync.d.ts +1 -0
  77. package/es/state/gantt-table-sync.js +9 -0
  78. package/es/state/gantt-table-sync.js.map +1 -1
  79. package/es/state/state-manager.d.ts +42 -4
  80. package/es/state/state-manager.js +124 -42
  81. package/es/state/state-manager.js.map +1 -1
  82. package/es/tools/pixel-ratio.js +1 -2
  83. package/es/ts-types/EVENT_TYPE.d.ts +2 -0
  84. package/es/ts-types/EVENT_TYPE.js +5 -2
  85. package/es/ts-types/EVENT_TYPE.js.map +1 -1
  86. package/es/ts-types/events.d.ts +14 -0
  87. package/es/ts-types/events.js.map +1 -1
  88. package/es/ts-types/gantt-engine.d.ts +69 -10
  89. package/es/ts-types/gantt-engine.js +6 -1
  90. package/es/ts-types/gantt-engine.js.map +1 -1
  91. package/package.json +4 -4
  92. package/cjs/scenegraph/ganttNode.js.map +0 -1
  93. package/es/scenegraph/ganttNode.js.map +0 -1
  94. /package/cjs/scenegraph/{ganttNode.d.ts → gantt-node.d.ts} +0 -0
  95. /package/es/scenegraph/{ganttNode.d.ts → gantt-node.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ts-types/EVENT_TYPE.ts"],"names":[],"mappings":";;;AAyBa,QAAA,gBAAgB,GAAgB;IAC3C,MAAM,EAAE,QAAQ;IAChB,iBAAiB,EAAE,mBAAmB;IACtC,cAAc,EAAE,gBAAgB;IAChC,mBAAmB,EAAE,qBAAqB;IAC1C,mBAAmB,EAAE,qBAAqB;CAC5B,CAAC","file":"EVENT_TYPE.js","sourcesContent":["export interface EVENT_TYPES {\n /**\n * 滚动表格事件\n */\n SCROLL: 'scroll';\n /**\n * 改变日期范围事件\n */\n CHANGE_DATE_RANGE: 'change_date_range';\n /**\n * 点击任务条事件\n */\n CLICK_TASK_BAR: 'click_task_bar';\n /**\n * 鼠标移入任务条事件\n */\n MOUSEENTER_TASK_BAR: 'mouseenter_task_bar';\n /**\n * 鼠标移出任务条事件\n */\n MOUSELEAVE_TASK_BAR: 'mouseleave_task_bar';\n}\n/**\n * Table event types\n */\nexport const GANTT_EVENT_TYPE: EVENT_TYPES = {\n SCROLL: 'scroll',\n CHANGE_DATE_RANGE: 'change_date_range',\n CLICK_TASK_BAR: 'click_task_bar',\n MOUSEENTER_TASK_BAR: 'mouseenter_task_bar',\n MOUSELEAVE_TASK_BAR: 'mouseleave_task_bar'\n} as EVENT_TYPES;\n"]}
1
+ {"version":3,"sources":["../src/ts-types/EVENT_TYPE.ts"],"names":[],"mappings":";;;AAkCa,QAAA,gBAAgB,GAAgB;IAC3C,MAAM,EAAE,QAAQ;IAChB,iBAAiB,EAAE,mBAAmB;IACtC,cAAc,EAAE,gBAAgB;IAChC,mBAAmB,EAAE,qBAAqB;IAC1C,mBAAmB,EAAE,qBAAqB;IAC1C,oBAAoB,EAAE,sBAAsB;IAC5C,sBAAsB,EAAE,wBAAwB;CAClC,CAAC","file":"EVENT_TYPE.js","sourcesContent":["export interface EVENT_TYPES {\n /**\n * 滚动表格事件\n */\n SCROLL: 'scroll';\n /**\n * 改变日期范围事件\n */\n CHANGE_DATE_RANGE: 'change_date_range';\n /**\n * 点击任务条事件\n */\n CLICK_TASK_BAR: 'click_task_bar';\n /**\n * 鼠标移入任务条事件\n */\n MOUSEENTER_TASK_BAR: 'mouseenter_task_bar';\n /**\n * 鼠标移出任务条事件\n */\n MOUSELEAVE_TASK_BAR: 'mouseleave_task_bar';\n /**\n * 创建任务排期事件\n */\n CREATE_TASK_SCHEDULE: 'create_task_schedule';\n\n /**\n * 创建任务依赖关系\n */\n CREATE_DEPENDENCY_LINK: 'create_dependency_link';\n}\n/**\n * Table event types\n */\nexport const GANTT_EVENT_TYPE: EVENT_TYPES = {\n SCROLL: 'scroll',\n CHANGE_DATE_RANGE: 'change_date_range',\n CLICK_TASK_BAR: 'click_task_bar',\n MOUSEENTER_TASK_BAR: 'mouseenter_task_bar',\n MOUSELEAVE_TASK_BAR: 'mouseleave_task_bar',\n CREATE_TASK_SCHEDULE: 'create_task_schedule',\n CREATE_DEPENDENCY_LINK: 'create_dependency_link'\n} as EVENT_TYPES;\n"]}
@@ -1,3 +1,4 @@
1
+ import type { ITaskLink } from './gantt-engine';
1
2
  export type TableEventListener<TYPE extends keyof TableEventHandlersEventArgumentMap> = (args: TableEventHandlersEventArgumentMap[TYPE]) => TableEventHandlersReturnMap[TYPE];
2
3
  export type EventListenerId = number;
3
4
  export interface TableEventHandlersEventArgumentMap {
@@ -31,6 +32,17 @@ export interface TableEventHandlersEventArgumentMap {
31
32
  oldEndDate: Date;
32
33
  record: any;
33
34
  };
35
+ create_task_schedule: {
36
+ event: Event;
37
+ index: number;
38
+ startDate: Date;
39
+ endDate: Date;
40
+ record: any;
41
+ };
42
+ create_dependency_link: {
43
+ event: Event;
44
+ link: ITaskLink;
45
+ };
34
46
  }
35
47
  export interface TableEventHandlersReturnMap {
36
48
  scroll: void;
@@ -38,4 +50,6 @@ export interface TableEventHandlersReturnMap {
38
50
  mouseleave_task_bar: void;
39
51
  click_task_bar: void;
40
52
  change_date_range: void;
53
+ create_task_schedule: void;
54
+ create_dependency_link: void;
41
55
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ts-types/events.ts"],"names":[],"mappings":"","file":"events.js","sourcesContent":["export type TableEventListener<TYPE extends keyof TableEventHandlersEventArgumentMap> = (\n args: TableEventHandlersEventArgumentMap[TYPE]\n) => TableEventHandlersReturnMap[TYPE]; //AnyFunction;\nexport type EventListenerId = number;\n\nexport interface TableEventHandlersEventArgumentMap {\n scroll: {\n scrollLeft: number;\n scrollTop: number;\n scrollDirection: 'horizontal' | 'vertical';\n scrollRatioX?: number;\n scrollRatioY?: number;\n };\n mouseenter_task_bar: {\n /** 第几条数据 */\n index: number;\n record: any;\n event: Event;\n };\n mouseleave_task_bar: {\n /** 第几条数据 */\n index: number;\n record: any;\n event: Event;\n };\n click_task_bar: {\n /** 第几条数据 */\n index: number;\n record: any;\n event: Event;\n };\n change_date_range: {\n /** 第几条数据 */\n index: number;\n /** 改变后的起始日期 */\n startDate: Date;\n /** 改变后的结束日期 */\n endDate: Date;\n /** 改变前的起始日期 */\n oldStartDate: Date;\n /** 改变前的结束日期 */\n oldEndDate: Date;\n /** 改变后的数据条目 */\n record: any;\n };\n}\n\nexport interface TableEventHandlersReturnMap {\n scroll: void;\n mouseenter_task_bar: void;\n mouseleave_task_bar: void;\n click_task_bar: void;\n change_date_range: void;\n}\n"]}
1
+ {"version":3,"sources":["../src/ts-types/events.ts"],"names":[],"mappings":"","file":"events.js","sourcesContent":["import type { ITaskLink } from './gantt-engine';\n\nexport type TableEventListener<TYPE extends keyof TableEventHandlersEventArgumentMap> = (\n args: TableEventHandlersEventArgumentMap[TYPE]\n) => TableEventHandlersReturnMap[TYPE]; //AnyFunction;\nexport type EventListenerId = number;\n\nexport interface TableEventHandlersEventArgumentMap {\n scroll: {\n scrollLeft: number;\n scrollTop: number;\n scrollDirection: 'horizontal' | 'vertical';\n scrollRatioX?: number;\n scrollRatioY?: number;\n };\n mouseenter_task_bar: {\n /** 第几条数据 */\n index: number;\n record: any;\n event: Event;\n };\n mouseleave_task_bar: {\n /** 第几条数据 */\n index: number;\n record: any;\n event: Event;\n };\n click_task_bar: {\n /** 第几条数据 */\n index: number;\n record: any;\n event: Event;\n };\n change_date_range: {\n /** 第几条数据 */\n index: number;\n /** 改变后的起始日期 */\n startDate: Date;\n /** 改变后的结束日期 */\n endDate: Date;\n /** 改变前的起始日期 */\n oldStartDate: Date;\n /** 改变前的结束日期 */\n oldEndDate: Date;\n /** 改变后的数据条目 */\n record: any;\n };\n create_task_schedule: {\n event: Event;\n /** 第几条数据 */\n index: number;\n /** 改变后的起始日期 */\n startDate: Date;\n /** 改变后的结束日期 */\n endDate: Date;\n /** 改变后的数据条目 */\n record: any;\n };\n create_dependency_link: {\n event: Event;\n /** 依赖信息 */\n link: ITaskLink;\n };\n}\n\nexport interface TableEventHandlersReturnMap {\n scroll: void;\n mouseenter_task_bar: void;\n mouseleave_task_bar: void;\n click_task_bar: void;\n change_date_range: void;\n create_task_schedule: void;\n create_dependency_link: void;\n}\n"]}
@@ -49,17 +49,31 @@ export interface GanttConstructorOptions {
49
49
  customLayout?: ITaskBarCustomLayout;
50
50
  resizable?: boolean;
51
51
  moveable?: boolean;
52
- hoverBarStyle?: {
53
- cornerRadius?: number;
54
- barOverlayColor?: string;
55
- };
56
- selectionBarStyle?: {
57
- cornerRadius?: number;
58
- barOverlayColor?: string;
59
- };
52
+ hoverBarStyle?: ITaskBarHoverStyle;
53
+ selectedBarStyle?: ITaskBarSelectedStyle;
54
+ selectable?: boolean;
60
55
  menu?: {
61
56
  contextMenuItems?: TYPES.MenuListItem[] | ((record: string, index: number, dateIndex: number, startDate: Date, endDate: Date) => TYPES.MenuListItem[]);
62
57
  };
58
+ scheduleCreatable?: boolean;
59
+ scheduleCreation?: {
60
+ buttonStyle: ILineStyle & {
61
+ cornerRadius?: number;
62
+ backgroundColor?: string;
63
+ };
64
+ customLayout?: ITaskCreationCustomLayout;
65
+ };
66
+ };
67
+ taskKeyField?: string;
68
+ dependency?: {
69
+ links: ITaskLink[];
70
+ linkLineStyle?: ILineStyle;
71
+ linkCreatable?: boolean;
72
+ linkSelectable?: boolean;
73
+ linkSelectedLineStyle?: ITaskLinkSelectedStyle;
74
+ linkCreatePointStyle?: IPointStyle;
75
+ linkCreatingPointStyle?: IPointStyle;
76
+ linkCreatingLineStyle?: ILineStyle;
63
77
  };
64
78
  grid?: IGrid;
65
79
  frame?: {
@@ -78,6 +92,8 @@ export interface GanttConstructorOptions {
78
92
  overscrollBehavior?: 'auto' | 'none';
79
93
  scrollStyle?: IScrollStyle;
80
94
  pixelRatio?: number;
95
+ dateFormat?: 'yyyy-mm-dd' | 'dd-mm-yyyy' | 'mm/dd/yyyy' | 'yyyy/mm/dd' | 'dd/mm/yyyy' | 'yyyy.mm.dd' | 'dd.mm.yyyy' | 'mm.dd.yyyy';
96
+ underlayBackgroundColor?: string;
81
97
  }
82
98
  export type ITaskBarLabelText = string;
83
99
  export interface ITimelineScale {
@@ -109,6 +125,12 @@ export type ILineStyle = {
109
125
  lineWidth?: number;
110
126
  lineDash?: number[];
111
127
  };
128
+ export type IPointStyle = {
129
+ strokeColor?: string;
130
+ strokeWidth?: number;
131
+ fillColor?: string;
132
+ radius?: number;
133
+ };
112
134
  export interface IMarkLine {
113
135
  date: string;
114
136
  style?: ILineStyle;
@@ -141,13 +163,13 @@ export type TaskBarCustomLayoutArgumentType = {
141
163
  taskRecord: any;
142
164
  ganttInstance: Gantt;
143
165
  };
144
- export type ITaskBarCustomLayout = (args: TaskBarCustomLayoutArgumentType) => ITaskBarCustomLayoutObj;
145
166
  export type ITaskBarCustomLayoutObj = {
146
167
  rootContainer: Group;
147
168
  renderDefaultBar?: boolean;
148
169
  renderDefaultResizeIcon?: boolean;
149
170
  renderDefaultText?: boolean;
150
171
  };
172
+ export type ITaskBarCustomLayout = (args: TaskBarCustomLayoutArgumentType) => ITaskBarCustomLayoutObj;
151
173
  export type DateCustomLayoutArgumentType = {
152
174
  width: number;
153
175
  height: number;
@@ -159,8 +181,45 @@ export type DateCustomLayoutArgumentType = {
159
181
  days: number;
160
182
  ganttInstance: Gantt;
161
183
  };
162
- export type IDateCustomLayout = (args: DateCustomLayoutArgumentType) => IDateCustomLayoutObj;
163
184
  export type IDateCustomLayoutObj = {
164
185
  rootContainer: Group;
165
186
  renderDefaultText?: boolean;
166
187
  };
188
+ export type IDateCustomLayout = (args: DateCustomLayoutArgumentType) => IDateCustomLayoutObj;
189
+ export type TaskCreationCustomLayoutArgumentType = {
190
+ width: number;
191
+ height: number;
192
+ ganttInstance: Gantt;
193
+ };
194
+ export type ITaskCreationCustomLayoutObj = {
195
+ rootContainer: Group;
196
+ };
197
+ export type ITaskCreationCustomLayout = (args: TaskCreationCustomLayoutArgumentType) => ITaskCreationCustomLayoutObj;
198
+ export type ITaskLink = {
199
+ type: DependencyType;
200
+ linkedFromTaskKey?: string | number;
201
+ linkedToTaskKey?: string | number;
202
+ };
203
+ export type ITaskLinkSelectedStyle = ILineStyle & {
204
+ shadowBlur?: number;
205
+ shadowOffset?: number;
206
+ shadowColor?: string;
207
+ };
208
+ export declare enum DependencyType {
209
+ FinishToStart = "finish_to_start",
210
+ StartToStart = "start_to_start",
211
+ FinishToFinish = "finish_to_finish",
212
+ StartToFinish = "start_to_finish"
213
+ }
214
+ export type ITaskBarSelectedStyle = {
215
+ shadowBlur?: number;
216
+ shadowOffsetX?: number;
217
+ shadowOffsetY?: number;
218
+ shadowColor?: string;
219
+ borderColor?: string;
220
+ borderLineWidth?: number;
221
+ };
222
+ export type ITaskBarHoverStyle = {
223
+ cornerRadius?: number;
224
+ barOverlayColor?: string;
225
+ };
@@ -1,6 +1,11 @@
1
1
  "use strict";
2
2
 
3
+ var DependencyType;
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: !0
5
- });
7
+ }), exports.DependencyType = void 0, function(DependencyType) {
8
+ DependencyType.FinishToStart = "finish_to_start", DependencyType.StartToStart = "start_to_start",
9
+ DependencyType.FinishToFinish = "finish_to_finish", DependencyType.StartToFinish = "start_to_finish";
10
+ }(DependencyType = exports.DependencyType || (exports.DependencyType = {}));
6
11
  //# sourceMappingURL=gantt-engine.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ts-types/gantt-engine.ts"],"names":[],"mappings":"","file":"gantt-engine.js","sourcesContent":["import type { ColumnsDefine, TYPES, ListTableConstructorOptions } from '@visactor/vtable';\nimport type { Group } from '@visactor/vtable/es/vrender';\nimport type { Gantt } from '../Gantt';\nexport type LayoutObjectId = number | string;\n\nexport interface ITimelineDateInfo {\n days: number;\n endDate: Date;\n startDate: Date;\n title: string;\n /** 当期日期属于该日期刻度的第几位。如季度日期中第四季度 返回4。 */\n dateIndex: number;\n}\n\nexport interface ITimelineHeaderStyle {\n padding?: number | number[];\n fontSize?: number;\n fontWeight?: string;\n color?: string;\n strokeColor?: string;\n // backgroundColor?: string;\n textAlign?: 'center' | 'end' | 'left' | 'right' | 'start'; // 设置单元格内文字的水平对齐方式\n textOverflow?: string;\n textBaseline?: 'alphabetic' | 'bottom' | 'middle' | 'top'; // 设置单元格内文字的垂直对齐方式\n textStick?: boolean;\n}\nexport interface IGrid {\n backgroundColor?: string;\n verticalLine?: ILineStyle;\n horizontalLine?: ILineStyle;\n}\n//#region gantt\nexport interface GanttConstructorOptions {\n /**\n * 数据集合\n */\n records?: any[];\n\n /** 左侧任务信息表格相关配置 */\n taskListTable?: {\n /** 左侧任务列表信息占用的宽度。如果设置为'auto'表示将所有列完全展示 */\n tableWidth?: 'auto' | number;\n /** 左侧任务列表 最小宽度 */\n minTableWidth?: number;\n /** 左侧任务列表 最大宽度 */\n maxTableWidth?: number;\n } & Omit<\n //ListTable表格可配置的属性\n ListTableConstructorOptions,\n | 'container'\n | 'records'\n | 'defaultHeaderRowHeight'\n | 'defaultRowHeight'\n | 'overscrollBehavior'\n | 'rowSeriesNumber'\n | 'scrollStyle'\n | 'pixelRatio'\n | 'title'\n >;\n /** 时间刻度 */\n timelineHeader: {\n backgroundColor?: string;\n colWidth?: number;\n /** 垂直间隔线样式 */\n verticalLine?: ILineStyle;\n /** 水平间隔线样式 */\n horizontalLine?: ILineStyle;\n scales: ITimelineScale[];\n };\n\n /** 任务条相关配置及样式 */\n taskBar?: {\n /** 任务开始日期对应的数据字段名 默认按'startDate' */\n startDateField?: string;\n /** 任务结束日期对应的数据字段名 默认按'endDate' */\n endDateField?: string;\n /** 任务进度对应的数据字段名 */\n progressField?: string;\n /** 任务条展示文字。可以配置固定文本 或者 字符串模版`${fieldName}` */\n labelText?: ITaskBarLabelText;\n /** 任务条文字样式 */\n labelTextStyle?: ITaskBarLabelTextStyle;\n /** 任务条样式 */\n barStyle?: ITaskBarStyle;\n /** 自定义布局渲染 */\n customLayout?: ITaskBarCustomLayout;\n /** 任务条是否可调整大小 */\n resizable?: boolean;\n /** 任务条是否可移动 */\n moveable?: boolean;\n /** 任务条hover时的样式 */\n hoverBarStyle?: {\n /** 任务条的圆角 */\n cornerRadius?: number;\n barOverlayColor?: string;\n };\n /** 任务条选择时的样式 TODO */\n selectionBarStyle?: {\n /** 任务条的圆角 */\n cornerRadius?: number;\n barOverlayColor?: string;\n };\n /** 任务条右键菜单 */\n menu?: {\n /** 右键菜单。代替原来的option.contextmenu */\n contextMenuItems?:\n | TYPES.MenuListItem[]\n | ((\n record: string,\n index: number,\n /** 当期日期属于该日期刻度的第几位。如季度日期中第四季度 返回4。 */\n dateIndex: number,\n startDate: Date,\n endDate: Date\n ) => TYPES.MenuListItem[]);\n };\n };\n /** 网格线配置 */\n grid?: IGrid;\n\n /** 整个外边框及横纵分割线配置。 */\n frame?: {\n outerFrameStyle: IFrameStyle;\n verticalSplitLine?: ILineStyle;\n horizontalSplitLine?: ILineStyle;\n verticalSplitLineMoveable?: boolean;\n //列调整宽度的直线\n verticalSplitLineHighlight?: ILineStyle;\n };\n\n /** 标记线配置 如果配置为true 会自动给今天做标记 */\n markLine?: boolean | IMarkLine | IMarkLine[];\n /** 指定整个甘特图的最小日期 */\n minDate?: string;\n /** 指定整个甘特图的最大日期 不设置的话用默认规则*/\n maxDate?: string;\n\n /** 顶部表头部分默认行高。如果想按表头层级依次配置,请配置到timelineHeader.scale中 */\n headerRowHeight?: number;\n\n /** 数据默认行高 */\n rowHeight?: number;\n\n /** 行号配置 */\n rowSeriesNumber?: IRowSeriesNumber;\n\n /**\n * 'auto':和浏览器滚动行为一致 表格滚动到顶部/底部时 触发浏览器默认行为;\n * 设置为 'none' 时, 表格滚动到顶部/底部时, 不再触发父容器滚动\n * */\n overscrollBehavior?: 'auto' | 'none';\n\n scrollStyle?: IScrollStyle;\n\n pixelRatio?: number;\n}\n/**\n * IBarLabelText\n * 可以配置固定文本 或者 ${fieldName} 或者自定义函数\n */\nexport type ITaskBarLabelText = string; //| string[] | ((args: any) => string | string[]);\nexport interface ITimelineScale {\n rowHeight?: number;\n unit: 'day' | 'week' | 'month' | 'quarter' | 'year';\n step: number;\n startOfWeek?: 'sunday' | 'monday';\n customLayout?: IDateCustomLayout;\n style?: ITimelineHeaderStyle;\n format?: (date: DateFormatArgumentType) => string;\n}\nexport interface ITaskBarLabelTextStyle {\n fontFamily?: string;\n fontSize?: number;\n color?: string;\n textAlign?: 'center' | 'end' | 'left' | 'right' | 'start'; // 设置单元格内文字的水平对齐方式\n textOverflow?: string;\n textBaseline?: 'alphabetic' | 'bottom' | 'middle' | 'top'; // 设置单元格内文字的垂直对齐方式\n padding?: number | number[];\n}\nexport interface ITaskBarStyle {\n /** 任务条的颜色 */\n barColor?: string;\n /** 已完成部分任务条的颜色 */\n completedBarColor?: string;\n /** 任务条的宽度 */\n width?: number;\n /** 任务条的圆角 */\n cornerRadius?: number;\n // /** 任务条的边框 */\n // borderWidth?: number;\n // /** 边框颜色 */\n // borderColor?: string;\n}\nexport type ILineStyle = {\n lineColor?: string;\n lineWidth?: number;\n lineDash?: number[];\n};\nexport interface IMarkLine {\n date: string;\n style?: ILineStyle;\n /** 标记线显示在日期列下的位置 默认为'left' */\n position?: 'left' | 'right' | 'middle';\n /** 自动将日期范围内 包括改标记线 */\n scrollToMarkLine?: boolean;\n}\nexport type ITableColumnsDefine = ColumnsDefine;\nexport type IFrameStyle = {\n borderColor?: string;\n borderLineWidth?: number;\n borderLineDash?: number[];\n cornerRadius?: number;\n};\n\nexport type ITableStyle = TYPES.ThemeStyle;\nexport type IRowSeriesNumber = TYPES.IRowSeriesNumber;\nexport type IScrollStyle = TYPES.ScrollStyle;\nexport type DateFormatArgumentType = {\n /** 当期日期属于该日期刻度的第几位。如季度日期中第四季度 返回4。 */\n dateIndex: number;\n startDate: Date;\n endDate: Date;\n};\nexport type TaskBarCustomLayoutArgumentType = {\n width: number;\n height: number;\n index: number;\n startDate: Date;\n endDate: Date;\n taskDays: number;\n progress: number;\n taskRecord: any;\n ganttInstance: Gantt;\n};\nexport type ITaskBarCustomLayout = (args: TaskBarCustomLayoutArgumentType) => ITaskBarCustomLayoutObj; //CustomLayout\nexport type ITaskBarCustomLayoutObj = {\n rootContainer: Group;\n renderDefaultBar?: boolean; // 默认false\n renderDefaultResizeIcon?: boolean; // 默认false\n renderDefaultText?: boolean; // 默认false\n};\n\nexport type DateCustomLayoutArgumentType = {\n width: number;\n height: number;\n index: number;\n /** 当期日期属于该日期刻度的第几位。如季度日期中第四季度 返回4。 */\n dateIndex: number;\n title: string;\n startDate: Date;\n endDate: Date;\n days: number;\n ganttInstance: Gantt;\n};\nexport type IDateCustomLayout = (args: DateCustomLayoutArgumentType) => IDateCustomLayoutObj;\nexport type IDateCustomLayoutObj = {\n rootContainer: Group;\n renderDefaultText?: boolean; // 默认false\n};\n\n//#endregion\n"]}
1
+ {"version":3,"sources":["../src/ts-types/gantt-engine.ts"],"names":[],"mappings":";;;AAmUA,IAAY,cAKX;AALD,WAAY,cAAc;IACxB,mDAAiC,CAAA;IACjC,iDAA+B,CAAA;IAC/B,qDAAmC,CAAA;IACnC,mDAAiC,CAAA;AACnC,CAAC,EALW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAKzB","file":"gantt-engine.js","sourcesContent":["import type { ColumnsDefine, TYPES, ListTableConstructorOptions } from '@visactor/vtable';\nimport type { Group } from '@visactor/vtable/es/vrender';\nimport type { Gantt } from '../Gantt';\nexport type LayoutObjectId = number | string;\n\nexport interface ITimelineDateInfo {\n days: number;\n endDate: Date;\n startDate: Date;\n title: string;\n /** 当期日期属于该日期刻度的第几位。如季度日期中第四季度 返回4。 */\n dateIndex: number;\n}\n\nexport interface ITimelineHeaderStyle {\n padding?: number | number[];\n fontSize?: number;\n fontWeight?: string;\n color?: string;\n strokeColor?: string;\n // backgroundColor?: string;\n textAlign?: 'center' | 'end' | 'left' | 'right' | 'start'; // 设置单元格内文字的水平对齐方式\n textOverflow?: string;\n textBaseline?: 'alphabetic' | 'bottom' | 'middle' | 'top'; // 设置单元格内文字的垂直对齐方式\n textStick?: boolean;\n}\nexport interface IGrid {\n backgroundColor?: string;\n verticalLine?: ILineStyle;\n horizontalLine?: ILineStyle;\n}\n//#region gantt\nexport interface GanttConstructorOptions {\n /**\n * 数据集合\n */\n records?: any[];\n\n /** 左侧任务信息表格相关配置 */\n taskListTable?: {\n /** 左侧任务列表信息占用的宽度。如果设置为'auto'表示将所有列完全展示 */\n tableWidth?: 'auto' | number;\n /** 左侧任务列表 最小宽度 */\n minTableWidth?: number;\n /** 左侧任务列表 最大宽度 */\n maxTableWidth?: number;\n } & Omit<\n //ListTable表格可配置的属性\n ListTableConstructorOptions,\n | 'container'\n | 'records'\n | 'defaultHeaderRowHeight'\n | 'defaultRowHeight'\n | 'overscrollBehavior'\n | 'rowSeriesNumber'\n | 'scrollStyle'\n | 'pixelRatio'\n | 'title'\n >;\n /** 时间刻度 */\n timelineHeader: {\n backgroundColor?: string;\n colWidth?: number;\n /** 垂直间隔线样式 */\n verticalLine?: ILineStyle;\n /** 水平间隔线样式 */\n horizontalLine?: ILineStyle;\n scales: ITimelineScale[];\n };\n\n /** 任务条相关配置及样式 */\n taskBar?: {\n /** 任务开始日期对应的数据字段名 默认按'startDate' */\n startDateField?: string;\n /** 任务结束日期对应的数据字段名 默认按'endDate' */\n endDateField?: string;\n /** 任务进度对应的数据字段名 */\n progressField?: string;\n /** 任务条展示文字。可以配置固定文本 或者 字符串模版`${fieldName}` */\n labelText?: ITaskBarLabelText;\n /** 任务条文字样式 */\n labelTextStyle?: ITaskBarLabelTextStyle;\n /** 任务条样式 */\n barStyle?: ITaskBarStyle;\n /** 自定义布局渲染 */\n customLayout?: ITaskBarCustomLayout;\n /** 任务条是否可调整大小 */\n resizable?: boolean;\n /** 任务条是否可移动 */\n moveable?: boolean;\n /** 任务条hover时的样式 */\n hoverBarStyle?: ITaskBarHoverStyle;\n /** 任务条选择时的样式 TODO */\n selectedBarStyle?: ITaskBarSelectedStyle;\n /** 任务条是否可选择,默认为true */\n selectable?: boolean;\n /** 任务条右键菜单 */\n menu?: {\n /** 右键菜单。代替原来的option.contextmenu */\n contextMenuItems?:\n | TYPES.MenuListItem[]\n | ((\n record: string,\n index: number,\n /** 当期日期属于该日期刻度的第几位。如季度日期中第四季度 返回4。 */\n dateIndex: number,\n startDate: Date,\n endDate: Date\n ) => TYPES.MenuListItem[]);\n };\n /** 数据没有排期时,可通过创建任务条排期。默认为true */\n scheduleCreatable?: boolean;\n /** 针对没有分配日期的任务,可以显示出创建按钮 */\n scheduleCreation?: {\n buttonStyle: ILineStyle & {\n cornerRadius?: number;\n backgroundColor?: string;\n };\n /** 任务条创建按钮的自定义渲染 */\n customLayout?: ITaskCreationCustomLayout;\n };\n };\n /** 数据条目可唯一标识的字段名,默认为'id' */\n taskKeyField?: string;\n /** 任务之间的依赖关系 */\n dependency?: {\n links: ITaskLink[];\n linkLineStyle?: ILineStyle;\n linkCreatable?: boolean;\n linkSelectable?: boolean;\n linkSelectedLineStyle?: ITaskLinkSelectedStyle;\n /** 创建关联线的操作点 */\n linkCreatePointStyle?: IPointStyle;\n /** 创建关联线的操作点响应状态效果 */\n linkCreatingPointStyle?: IPointStyle;\n /** 创建关联线的操作线样式 */\n linkCreatingLineStyle?: ILineStyle;\n };\n /** 网格线配置 */\n grid?: IGrid;\n\n /** 整个外边框及横纵分割线配置。 */\n frame?: {\n outerFrameStyle: IFrameStyle;\n verticalSplitLine?: ILineStyle;\n horizontalSplitLine?: ILineStyle;\n verticalSplitLineMoveable?: boolean;\n //列调整宽度的直线\n verticalSplitLineHighlight?: ILineStyle;\n };\n\n /** 标记线配置 如果配置为true 会自动给今天做标记 */\n markLine?: boolean | IMarkLine | IMarkLine[];\n\n /** 指定整个甘特图的最小日期 */\n minDate?: string;\n /** 指定整个甘特图的最大日期 不设置的话用默认规则*/\n maxDate?: string;\n\n /** 顶部表头部分默认行高。如果想按表头层级依次配置,请配置到timelineHeader.scale中 */\n headerRowHeight?: number;\n\n /** 数据默认行高 */\n rowHeight?: number;\n\n /** 行号配置 */\n rowSeriesNumber?: IRowSeriesNumber;\n\n /**\n * 'auto':和浏览器滚动行为一致 表格滚动到顶部/底部时 触发浏览器默认行为;\n * 设置为 'none' 时, 表格滚动到顶部/底部时, 不再触发父容器滚动\n * */\n overscrollBehavior?: 'auto' | 'none';\n\n scrollStyle?: IScrollStyle;\n\n pixelRatio?: number;\n dateFormat?:\n | 'yyyy-mm-dd'\n | 'dd-mm-yyyy'\n | 'mm/dd/yyyy'\n | 'yyyy/mm/dd'\n | 'dd/mm/yyyy'\n | 'yyyy.mm.dd'\n | 'dd.mm.yyyy'\n | 'mm.dd.yyyy';\n\n /** 表格绘制范围外的canvas上填充的颜色 */\n underlayBackgroundColor?: string;\n}\n/**\n * IBarLabelText\n * 可以配置固定文本 或者 ${fieldName} 或者自定义函数\n */\nexport type ITaskBarLabelText = string; //| string[] | ((args: any) => string | string[]);\nexport interface ITimelineScale {\n rowHeight?: number;\n unit: 'day' | 'week' | 'month' | 'quarter' | 'year';\n step: number;\n startOfWeek?: 'sunday' | 'monday';\n customLayout?: IDateCustomLayout;\n style?: ITimelineHeaderStyle;\n format?: (date: DateFormatArgumentType) => string;\n}\nexport interface ITaskBarLabelTextStyle {\n fontFamily?: string;\n fontSize?: number;\n color?: string;\n textAlign?: 'center' | 'end' | 'left' | 'right' | 'start'; // 设置单元格内文字的水平对齐方式\n textOverflow?: string;\n textBaseline?: 'alphabetic' | 'bottom' | 'middle' | 'top'; // 设置单元格内文字的垂直对齐方式\n padding?: number | number[];\n}\nexport interface ITaskBarStyle {\n /** 任务条的颜色 */\n barColor?: string;\n /** 已完成部分任务条的颜色 */\n completedBarColor?: string;\n /** 任务条的宽度 */\n width?: number;\n /** 任务条的圆角 */\n cornerRadius?: number;\n // /** 任务条的边框 */\n // borderWidth?: number;\n // /** 边框颜色 */\n // borderColor?: string;\n}\nexport type ILineStyle = {\n lineColor?: string;\n lineWidth?: number;\n lineDash?: number[];\n};\nexport type IPointStyle = {\n strokeColor?: string;\n strokeWidth?: number;\n fillColor?: string;\n radius?: number;\n};\nexport interface IMarkLine {\n date: string;\n style?: ILineStyle;\n /** 标记线显示在日期列下的位置 默认为'left' */\n position?: 'left' | 'right' | 'middle';\n /** 自动将日期范围内 包括改标记线 */\n scrollToMarkLine?: boolean;\n}\nexport type ITableColumnsDefine = ColumnsDefine;\nexport type IFrameStyle = {\n borderColor?: string;\n borderLineWidth?: number;\n borderLineDash?: number[];\n cornerRadius?: number;\n};\n\nexport type ITableStyle = TYPES.ThemeStyle;\nexport type IRowSeriesNumber = TYPES.IRowSeriesNumber;\nexport type IScrollStyle = TYPES.ScrollStyle;\nexport type DateFormatArgumentType = {\n /** 当期日期属于该日期刻度的第几位。如季度日期中第四季度 返回4。 */\n dateIndex: number;\n startDate: Date;\n endDate: Date;\n};\nexport type TaskBarCustomLayoutArgumentType = {\n width: number;\n height: number;\n index: number;\n startDate: Date;\n endDate: Date;\n taskDays: number;\n progress: number;\n taskRecord: any;\n ganttInstance: Gantt;\n};\nexport type ITaskBarCustomLayoutObj = {\n rootContainer: Group;\n renderDefaultBar?: boolean; // 默认false\n renderDefaultResizeIcon?: boolean; // 默认false\n renderDefaultText?: boolean; // 默认false\n};\nexport type ITaskBarCustomLayout = (args: TaskBarCustomLayoutArgumentType) => ITaskBarCustomLayoutObj; //CustomLayout\n\nexport type DateCustomLayoutArgumentType = {\n width: number;\n height: number;\n index: number;\n /** 当期日期属于该日期刻度的第几位。如季度日期中第四季度 返回4。 */\n dateIndex: number;\n title: string;\n startDate: Date;\n endDate: Date;\n days: number;\n ganttInstance: Gantt;\n};\nexport type IDateCustomLayoutObj = {\n rootContainer: Group;\n renderDefaultText?: boolean; // 默认false\n};\nexport type IDateCustomLayout = (args: DateCustomLayoutArgumentType) => IDateCustomLayoutObj;\n\nexport type TaskCreationCustomLayoutArgumentType = {\n width: number;\n height: number;\n // index: number;\n ganttInstance: Gantt;\n};\nexport type ITaskCreationCustomLayoutObj = {\n rootContainer: Group;\n};\nexport type ITaskCreationCustomLayout = (args: TaskCreationCustomLayoutArgumentType) => ITaskCreationCustomLayoutObj;\n\nexport type ITaskLink = {\n /** 依赖的类型 */\n type: DependencyType;\n linkedFromTaskKey?: string | number;\n linkedToTaskKey?: string | number;\n};\n\nexport type ITaskLinkSelectedStyle = ILineStyle & {\n shadowBlur?: number; //阴影宽度\n shadowOffset?: number; //偏移\n shadowColor?: string; //阴影颜色\n};\nexport enum DependencyType {\n FinishToStart = 'finish_to_start',\n StartToStart = 'start_to_start',\n FinishToFinish = 'finish_to_finish',\n StartToFinish = 'start_to_finish'\n}\nexport type ITaskBarSelectedStyle = {\n shadowBlur?: number; //阴影宽度\n shadowOffsetX?: number; //x方向偏移\n shadowOffsetY?: number; //Y方向偏移\n shadowColor?: string; //阴影颜色\n borderColor?: string; //边框颜色\n borderLineWidth?: number;\n};\nexport type ITaskBarHoverStyle = {\n /** 任务条的圆角 */\n cornerRadius?: number;\n barOverlayColor?: string;\n};\n//#endregion\n"]}