@dhtmlx/trial-vue-gantt 1.1.1 → 9.1.2-beta1
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.
- package/README.md +126 -262
- package/dist/dhtmlxgantt.vue.es.d.ts +289 -0
- package/dist/dhtmlxgantt.vue.es.js +17911 -0
- package/dist/dhtmlxgantt.vue.es.js.map +1 -0
- package/dist/vue-gantt.css +1 -0
- package/license.txt +43 -0
- package/package.json +56 -62
- package/whatsnew.md +1125 -0
- package/public/dist/gantt.js +0 -1
- package/src/components/Gantt.vue +0 -238
- package/src/components/TimeScale.vue +0 -57
- package/src/components/chart/Bars.vue +0 -470
- package/src/components/chart/CellGrid.vue +0 -22
- package/src/components/chart/Chart.vue +0 -236
- package/src/components/chart/Links.vue +0 -35
- package/src/components/chart/NewLink.vue +0 -39
- package/src/components/grid/Body.vue +0 -256
- package/src/components/grid/Grid.vue +0 -98
- package/src/components/grid/Header.vue +0 -104
- package/src/components/grid/actions/reorder.js +0 -193
- package/src/components/sidebar/Links.vue +0 -147
- package/src/components/sidebar/Sidebar.vue +0 -219
- package/src/locales/cn.js +0 -21
- package/src/locales/en.js +0 -21
- package/src/locales/ru.js +0 -21
- package/src/main.js +0 -46
- package/src/state/local.js +0 -48
- package/src/wx/Button.vue +0 -54
- package/src/wx/CNLocale.js +0 -15
- package/src/wx/Calendar.vue +0 -194
- package/src/wx/Counter.vue +0 -154
- package/src/wx/Datepicker.vue +0 -153
- package/src/wx/DefaultTheme.vue +0 -104
- package/src/wx/ENLocale.js +0 -15
- package/src/wx/IconButton.vue +0 -39
- package/src/wx/MaterialTheme.vue +0 -107
- package/src/wx/RULocale.js +0 -15
- package/src/wx/Select.vue +0 -75
- package/src/wx/Slider.vue +0 -150
- package/src/wx/Text.vue +0 -73
- package/src/wx/Textarea.vue +0 -63
- package/src/wx/Tooltip.vue +0 -110
- package/src/wx/index.js +0 -35
- package/src/wx/locale.js +0 -1
- package/src/wx/locales/cn.js +0 -39
- package/src/wx/locales/en.js +0 -39
- package/src/wx/locales/ru.js +0 -39
package/README.md
CHANGED
|
@@ -1,281 +1,145 @@
|
|
|
1
|
-
# Vue Gantt
|
|
1
|
+
# DHTMLX Vue Gantt
|
|
2
2
|
|
|
3
|
-
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
[](https://dhtmlx.com/)
|
|
4
|
+
[](https://www.npmjs.com/package/@dhtmlx/trial-vue-gantt)
|
|
5
|
+
[](https://dhtmlx.com/docs/products/license.shtml?eval)
|
|
6
6
|
|
|
7
|
-
## Supported functionality
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
[DHTMLX Vue Gantt](https://dhtmlx.com/docs/products/dhtmlxGantt-for-Vue/) is a Vue wrapper for the [DHTMLX Gantt](https://dhtmlx.com/docs/products/dhtmlxGantt/) library.
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
- tasks, projects and milestones
|
|
13
|
-
- configurable scales and grids
|
|
14
|
-
- configurable tooltips
|
|
15
|
-
- time markers
|
|
10
|
+
It provides a declarative way to integrate DHTMLX Gantt scheduling features into Vue apps. Use Vue components in templates, pass reactive props, and handle chart edits through wrapper callbacks.
|
|
16
11
|
|
|
17
|
-
|
|
12
|
+
> **Important:** this npm package is a *trial* build intended for evaluation only.
|
|
13
|
+
> For access to commercial licenses and technical support, please request an evaluation on our website:
|
|
14
|
+
> https://dhtmlx.com/docs/products/dhtmlxGantt-for-Vue/download.shtml
|
|
18
15
|
|
|
19
|
-
-
|
|
20
|
-
|
|
21
|
-
- full vue sources are provided
|
|
16
|
+
<a name="getting-started"></a>
|
|
17
|
+
## Getting started
|
|
22
18
|
|
|
23
|
-
|
|
19
|
+
**Install package**
|
|
24
20
|
|
|
25
|
-
|
|
21
|
+
Professional Evaluation version:
|
|
26
22
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
```js
|
|
23
|
+
~~~bash
|
|
30
24
|
npm install @dhtmlx/trial-vue-gantt
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
25
|
+
~~~
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
And initialize:
|
|
29
|
+
|
|
30
|
+
~~~vue
|
|
31
|
+
<!-- src/components/GanttChart.vue -->
|
|
32
|
+
<script setup lang="ts">
|
|
33
|
+
import { ref } from "vue";
|
|
34
|
+
import VueGantt, {
|
|
35
|
+
type Link,
|
|
36
|
+
type Task,
|
|
37
|
+
type VueGanttDataConfig
|
|
38
|
+
} from "@dhtmlx/trial-vue-gantt";
|
|
39
|
+
import "@dhtmlx/trial-vue-gantt/dist/vue-gantt.css";
|
|
40
|
+
|
|
41
|
+
import { links as initialLinks, tasks as initialTasks } from "../demoData";
|
|
42
|
+
|
|
43
|
+
const tasks = ref<Task[]>(initialTasks);
|
|
44
|
+
const links = ref<Link[]>(initialLinks);
|
|
45
|
+
|
|
46
|
+
const data: VueGanttDataConfig = {
|
|
47
|
+
save: (entity, action, item, id) => {
|
|
48
|
+
console.log("save", { entity, action, item, id });
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
</script>
|
|
52
|
+
|
|
53
|
+
<template>
|
|
54
|
+
<div style="height: 100%; width: 100%;">
|
|
55
|
+
<VueGantt :tasks="tasks" :links="links" :data="data" />
|
|
56
|
+
</div>
|
|
57
|
+
</template>
|
|
58
|
+
~~~
|
|
59
|
+
|
|
60
|
+
~~~vue
|
|
61
|
+
<!-- src/App.vue -->
|
|
62
|
+
<script setup lang="ts">
|
|
63
|
+
import GanttChart from "./components/GanttChart.vue";
|
|
64
|
+
</script>
|
|
65
|
+
|
|
66
|
+
<template>
|
|
67
|
+
<div style="height: 100vh; width: 100vw;">
|
|
68
|
+
<GanttChart />
|
|
69
|
+
</div>
|
|
70
|
+
</template>
|
|
71
|
+
~~~
|
|
72
|
+
|
|
73
|
+
`demoData.ts` is an example tasks/links dataset. Replace it with your own project data.
|
|
74
|
+
|
|
75
|
+
### Requirements
|
|
76
|
+
|
|
77
|
+
- Vue `3.x` or newer
|
|
78
|
+
|
|
79
|
+
### Complete guides
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
- https://docs.dhtmlx.com/gantt/integrations/vue/
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
<a name="features"></a>
|
|
87
|
+
## Features
|
|
88
|
+
|
|
89
|
+
- Vue components in templates of grid cells, headers, timelines
|
|
90
|
+
- easy customization with Vue components
|
|
91
|
+
- compatibility with Pinia-based state management
|
|
92
|
+
- TypeScript support
|
|
93
|
+
- 4 types of tasks linking: finish-to-start, start-to-start, finish-to-finish, start-to-finish
|
|
94
|
+
- dragging and dropping multiple tasks horizontally
|
|
95
|
+
- multi-task selection
|
|
96
|
+
- backward planning
|
|
97
|
+
- tasks filtering
|
|
98
|
+
- resources filtering
|
|
99
|
+
- inline editing
|
|
100
|
+
- managing editability/readonly modes of individual tasks
|
|
101
|
+
- undo/redo functionality
|
|
102
|
+
- configurable columns in the grid
|
|
103
|
+
- customizable time scale and task edit form
|
|
104
|
+
- progress percent coloring for tasks
|
|
105
|
+
- 7 different skins
|
|
106
|
+
- online export to PDF, PNG, Excel, iCal, and MS Project
|
|
107
|
+
- 32 locales
|
|
108
|
+
- keyboard navigation
|
|
109
|
+
- resource management
|
|
110
|
+
- critical path calculation
|
|
111
|
+
- auto scheduling
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
<a name="license"></a>
|
|
115
|
+
## License
|
|
116
|
+
|
|
117
|
+
DHTMLX Gantt for Vue v.9.1.2-beta1 Professional Evaluation
|
|
118
|
+
|
|
119
|
+
This software is covered by DHTMLX Evaluation License. Contact sales@dhtmlx.com to get a proprietary license. Usage without proper license is prohibited.
|
|
48
120
|
|
|
49
|
-
|
|
121
|
+
(c) XB Software
|
|
50
122
|
|
|
51
|
-
Source code of the gantt can be checked in node_modules/@dhtmlx/trial-vue-gantt/src
|
|
52
123
|
|
|
53
|
-
|
|
124
|
+
<a name="links"></a>
|
|
125
|
+
## Useful links
|
|
54
126
|
|
|
55
|
-
|
|
127
|
+
- [DHTMLX Vue Gantt product page](https://dhtmlx.com/docs/products/dhtmlxGantt-for-Vue/)
|
|
128
|
+
- [DHTMLX JS Gantt product page](https://dhtmlx.com/docs/products/dhtmlxGantt/)
|
|
129
|
+
- [Official documentation](https://docs.dhtmlx.com/gantt/)
|
|
130
|
+
- [Online samples](https://docs.dhtmlx.com/gantt/samples/)
|
|
131
|
+
- [Video tutorials](https://www.youtube.com/watch?v=cCvULTQxPfg&list=PLKS_XdyIGP4MEW6yvvQUZT8vJKHVOq2S0)
|
|
132
|
+
- [Export services](https://dhtmlx.com/docs/products/dhtmlxGantt/export.shtml)
|
|
133
|
+
- [List of available integrations](https://dhtmlx.com/docs/products/integrations/)
|
|
134
|
+
- [Support forum](https://forum.dhtmlx.com/c/gantt)
|
|
56
135
|
|
|
57
|
-
|
|
136
|
+
<a name="followus"></a>
|
|
137
|
+
## Follow us
|
|
58
138
|
|
|
59
|
-
|
|
60
|
-
<div>
|
|
61
|
-
<DefaultTheme>
|
|
62
|
-
<Gantt />
|
|
63
|
-
</DefaultTheme>
|
|
64
|
-
<MaterialTheme>
|
|
65
|
-
<Gantt />
|
|
66
|
-
</MaterialTheme>
|
|
67
|
-
</div>
|
|
68
|
-
```
|
|
139
|
+
- Read us on [Medium](https://medium.com/@dhtmlx)
|
|
69
140
|
|
|
70
|
-
|
|
141
|
+
- Follow us on [LinkedIn](https://www.linkedin.com/company/dhtmlx-ltd-/)
|
|
71
142
|
|
|
72
|
-
|
|
73
|
-
<div>
|
|
74
|
-
<DefaultTheme />
|
|
75
|
-
<MaterialTheme />
|
|
143
|
+
- Follow us on [X](https://x.com/dhtmlx)
|
|
76
144
|
|
|
77
|
-
|
|
78
|
-
<Gantt />
|
|
79
|
-
</div>
|
|
80
|
-
<div class="wx-material">
|
|
81
|
-
<Gantt />
|
|
82
|
-
</div>
|
|
83
|
-
</div>
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
### Initialization
|
|
87
|
-
|
|
88
|
-
You can define scales/columns/tasks/links during Gantt initialization
|
|
89
|
-
|
|
90
|
-
```vue
|
|
91
|
-
<Gantt :scales="scales" :columns="columns" :tasks="tasks" :links="links" />
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
where data may look like next
|
|
95
|
-
|
|
96
|
-
```js
|
|
97
|
-
const scales = [
|
|
98
|
-
{ unit: "month", step: 1, format: "MMMM yyy" },
|
|
99
|
-
{ unit: "day", step: 1, format: "d" },
|
|
100
|
-
];
|
|
101
|
-
|
|
102
|
-
const columns = [
|
|
103
|
-
{ name: "text", label: "Task name", width: "100%" },
|
|
104
|
-
{ name: "start", label: "Start time", align: "center" },
|
|
105
|
-
{ name: "duration", label: "Duration", width: "70px", align: "center" },
|
|
106
|
-
{ name: "add-task", label: "", width: "50px", align: "center" },
|
|
107
|
-
];
|
|
108
|
-
|
|
109
|
-
const tasks = [
|
|
110
|
-
{
|
|
111
|
-
id: 1,
|
|
112
|
-
open: true,
|
|
113
|
-
start_date: "2020-11-06",
|
|
114
|
-
duration: 8,
|
|
115
|
-
text: "vue Gantt Widget",
|
|
116
|
-
progress: 60,
|
|
117
|
-
type: "project",
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
id: 2,
|
|
121
|
-
parent: 1,
|
|
122
|
-
start_date: "2020-11-06",
|
|
123
|
-
duration: 4,
|
|
124
|
-
text: "Lib-Gantt",
|
|
125
|
-
progress: 80,
|
|
126
|
-
},
|
|
127
|
-
];
|
|
128
|
-
|
|
129
|
-
const links = [{ source: 2, target: 1, type: 0 }];
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
### Integration with backend
|
|
133
|
-
|
|
134
|
-
Check
|
|
135
|
-
https://github.com/web-widgets/vue-gantt-demos/blob/master/src/components/GanttBackend.vue
|
|
136
|
-
|
|
137
|
-
Code defines the action handler through **save** event. This event will be triggered on any update and may be used to save changes to the persistent storage.
|
|
138
|
-
|
|
139
|
-
In the above example, the RestDataProvider is used
|
|
140
|
-
https://github.com/web-widgets/gantt-data-provider/blob/master/src/providers/rest.ts You are not limited to this solution, though, and can extend the provided class or define a custom handler.
|
|
141
|
-
|
|
142
|
-
We provide 2 demo backends, with nodejs and go
|
|
143
|
-
|
|
144
|
-
- https://github.com/web-widgets/gantt-go
|
|
145
|
-
- https://github.com/web-widgets/gantt-node
|
|
146
|
-
|
|
147
|
-
again, you are not limited to this solution. The above RestDataProvider can work with any REST like service and you can implement a fully custom solution ( sockets, graphql, etc. ) through custom save event.
|
|
148
|
-
|
|
149
|
-
### Templates
|
|
150
|
-
|
|
151
|
-
The next elements can be customized through templates
|
|
152
|
-
|
|
153
|
-
- task text
|
|
154
|
-
- sidebar form
|
|
155
|
-
|
|
156
|
-
check https://github.com/web-widgets/vue-gantt-demos/blob/master/src/components/GanttText.vue
|
|
157
|
-
|
|
158
|
-
- tooltip content
|
|
159
|
-
|
|
160
|
-
check https://github.com/web-widgets/vue-gantt-demos/blob/master/src/components/GanttTooltips.vue
|
|
161
|
-
|
|
162
|
-
## API
|
|
163
|
-
|
|
164
|
-
### Properties
|
|
165
|
-
|
|
166
|
-
```js
|
|
167
|
-
// templates for different elements of gantt
|
|
168
|
-
let templates = {};
|
|
169
|
-
// array of markers
|
|
170
|
-
let markers = [];
|
|
171
|
-
// supported task types
|
|
172
|
-
let taskTypes = ["task", "project", "milestone"];
|
|
173
|
-
// tasks data
|
|
174
|
-
let tasks = [];
|
|
175
|
-
// links data
|
|
176
|
-
let links = [];
|
|
177
|
-
// time scales configuration
|
|
178
|
-
let scales = [
|
|
179
|
-
{ unit: "month", step: 1, format: "MMMM yyy" },
|
|
180
|
-
{ unit: "day", step: 1, format: "d" },
|
|
181
|
-
];
|
|
182
|
-
// grid configuration
|
|
183
|
-
let columns = [
|
|
184
|
-
{ name: "text", label: "Task name", width: "100%" },
|
|
185
|
-
{ name: "add-task", label: "", width: "50px", align: "center" },
|
|
186
|
-
];
|
|
187
|
-
// time scale start
|
|
188
|
-
let start = null;
|
|
189
|
-
// time scale end
|
|
190
|
-
let end = null;
|
|
191
|
-
// width of scale cell
|
|
192
|
-
let cellWidth = 100;
|
|
193
|
-
// height of chart bar
|
|
194
|
-
let cellHeight = 38;
|
|
195
|
-
// height of scale cell
|
|
196
|
-
let scaleHeight = 30;
|
|
197
|
-
// readonly mode flag
|
|
198
|
-
let readonly = false;
|
|
199
|
-
// show or hide grid
|
|
200
|
-
let grid = true;
|
|
201
|
-
// show or hide tooltips
|
|
202
|
-
let tooltip = null;
|
|
203
|
-
// show or hide borders in the chart area
|
|
204
|
-
let borders = "full";
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
### Events
|
|
208
|
-
|
|
209
|
-
```js
|
|
210
|
-
// will be called with DataStore value on Gantt initalization
|
|
211
|
-
let store = null;
|
|
212
|
-
// will be called on any action in the Gantt
|
|
213
|
-
let actions = null;
|
|
214
|
-
// will be called on any data modification in the Gantt
|
|
215
|
-
let save = null;
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
### Actions
|
|
219
|
-
|
|
220
|
-
**Data modifications** ( both _action_ and _save_ events )
|
|
221
|
-
|
|
222
|
-
- add-link
|
|
223
|
-
- update-link
|
|
224
|
-
- delete-link
|
|
225
|
-
- add-task
|
|
226
|
-
- update-task
|
|
227
|
-
- delete-task
|
|
228
|
-
|
|
229
|
-
**UI State** ( _action_ event )
|
|
230
|
-
|
|
231
|
-
- data-request
|
|
232
|
-
- hide-details
|
|
233
|
-
- move-task
|
|
234
|
-
- scroll-chart
|
|
235
|
-
- select-task
|
|
236
|
-
- show-details
|
|
237
|
-
- task-toggle
|
|
238
|
-
- update-task-time
|
|
239
|
-
|
|
240
|
-
#### Example of event usage
|
|
241
|
-
|
|
242
|
-
```jsx
|
|
243
|
-
function handler({ action, obj, id }){
|
|
244
|
-
if (action === "select-task")
|
|
245
|
-
console.log(`Task ${id} was selected`);
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
<Gantt @action="handler"/>
|
|
249
|
-
```
|
|
250
|
-
|
|
251
|
-
### Methods
|
|
252
|
-
|
|
253
|
-
```jsx
|
|
254
|
-
let store;
|
|
255
|
-
|
|
256
|
-
<Gantt @store="v => store = v" />
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
and now you can use store's API to get or modify data.
|
|
260
|
-
|
|
261
|
-
```ts
|
|
262
|
-
interface IStore {
|
|
263
|
-
getTask(id: number): GanttItemData;
|
|
264
|
-
updateTask(id: number, obj: any, noSave: boolean): void;
|
|
265
|
-
updateLink(id: number, obj: any, noSave: boolean): void;
|
|
266
|
-
action(
|
|
267
|
-
id: number,
|
|
268
|
-
action: string,
|
|
269
|
-
obj: StringHash<any>,
|
|
270
|
-
noSave?: boolean
|
|
271
|
-
): number;
|
|
272
|
-
}
|
|
273
|
-
```
|
|
274
|
-
|
|
275
|
-
action method can be used to trigger any of above actions
|
|
276
|
-
|
|
277
|
-
```js
|
|
278
|
-
store.action(taskId, "tasks-toggle");
|
|
279
|
-
store.action(linkId, "delete-link");
|
|
280
|
-
store.action(null, "add-link", { source: 1, target 2, type: 0 });
|
|
281
|
-
```
|
|
145
|
+
- Like our page on [Facebook](https://www.facebook.com/dhtmlx/)
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
import * as vue from 'vue';
|
|
2
|
+
import { VNode, Component, Ref, MaybeRef } from 'vue';
|
|
3
|
+
import { Task, Link, GanttStatic, RouterFunction, CalendarConfig, GanttConfigOptions, GanttPlugins, GanttTemplates } from '@dhx/gantt';
|
|
4
|
+
export * from '@dhx/gantt';
|
|
5
|
+
|
|
6
|
+
interface VueKnownGanttEvents {
|
|
7
|
+
onBeforeLightbox?: (taskId: string | number) => boolean | void;
|
|
8
|
+
onTaskCreated?: (task: Task) => boolean | void;
|
|
9
|
+
onAfterTaskAdd?: (id: string | number, task: Task) => void;
|
|
10
|
+
onAfterTaskUpdate?: (id: string | number, task: Task) => void;
|
|
11
|
+
onAfterTaskDelete?: (id: string | number, task: Task) => void;
|
|
12
|
+
onAfterLinkAdd?: (id: string | number, link: Link) => void;
|
|
13
|
+
onAfterLinkUpdate?: (id: string | number, link: Link) => void;
|
|
14
|
+
onAfterLinkDelete?: (id: string | number, link: Link) => void;
|
|
15
|
+
}
|
|
16
|
+
type VueGanttEvents = VueKnownGanttEvents & Record<string, (...args: any[]) => any>;
|
|
17
|
+
interface VueGanttExpose {
|
|
18
|
+
instance: GanttStatic | null;
|
|
19
|
+
}
|
|
20
|
+
interface VueGanttRef {
|
|
21
|
+
instance: GanttStatic | null;
|
|
22
|
+
}
|
|
23
|
+
interface VueGanttEmits {
|
|
24
|
+
ready: (instance: GanttStatic) => void;
|
|
25
|
+
}
|
|
26
|
+
interface DataCallbackChange {
|
|
27
|
+
entity: string;
|
|
28
|
+
action: string;
|
|
29
|
+
data: any;
|
|
30
|
+
id: number | string;
|
|
31
|
+
}
|
|
32
|
+
interface BatchChanges {
|
|
33
|
+
tasks?: DataCallbackChange[];
|
|
34
|
+
links?: DataCallbackChange[];
|
|
35
|
+
resources?: DataCallbackChange[];
|
|
36
|
+
resourceAssignments?: DataCallbackChange[];
|
|
37
|
+
}
|
|
38
|
+
interface DataSet {
|
|
39
|
+
tasks?: Task[];
|
|
40
|
+
links?: Link[];
|
|
41
|
+
resources?: any[];
|
|
42
|
+
resourceAssignments?: any[];
|
|
43
|
+
baselines?: any[];
|
|
44
|
+
}
|
|
45
|
+
interface VueGanttDataConfig {
|
|
46
|
+
load?: string | ((gantt: GanttStatic) => DataSet | Promise<DataSet>);
|
|
47
|
+
save?: string | RouterFunction;
|
|
48
|
+
batchSave?: (changes: BatchChanges) => void;
|
|
49
|
+
}
|
|
50
|
+
interface OnBeforeTaskDeleteConfirmArgs {
|
|
51
|
+
task: Task;
|
|
52
|
+
callback: () => void;
|
|
53
|
+
message: string;
|
|
54
|
+
title: string;
|
|
55
|
+
ganttInstance: GanttStatic;
|
|
56
|
+
}
|
|
57
|
+
interface OnBeforeLinkDeleteConfirmArgs {
|
|
58
|
+
link: Link;
|
|
59
|
+
callback: () => void;
|
|
60
|
+
message: string;
|
|
61
|
+
title: string;
|
|
62
|
+
ganttInstance: GanttStatic;
|
|
63
|
+
}
|
|
64
|
+
interface GanttModals {
|
|
65
|
+
onBeforeTaskDelete?: (args: OnBeforeTaskDeleteConfirmArgs) => void;
|
|
66
|
+
onBeforeLinkDelete?: (args: OnBeforeLinkDeleteConfirmArgs) => void;
|
|
67
|
+
}
|
|
68
|
+
interface Marker {
|
|
69
|
+
id?: string | number;
|
|
70
|
+
start_date: Date;
|
|
71
|
+
end_date?: Date;
|
|
72
|
+
css?: string;
|
|
73
|
+
text?: string | number | VNode | (() => VNode);
|
|
74
|
+
title?: string | number;
|
|
75
|
+
}
|
|
76
|
+
interface WrapperCalendar {
|
|
77
|
+
id: string;
|
|
78
|
+
hours?: string[];
|
|
79
|
+
days?: {
|
|
80
|
+
weekdays?: Partial<Record<0 | 1 | 2 | 3 | 4 | 5 | 6, string[] | boolean>>;
|
|
81
|
+
dates?: Record<string, string[] | boolean>;
|
|
82
|
+
};
|
|
83
|
+
customWeeks?: Record<string, {
|
|
84
|
+
from: Date;
|
|
85
|
+
to: Date;
|
|
86
|
+
hours?: string[];
|
|
87
|
+
days?: {
|
|
88
|
+
weekdays?: Partial<Record<0 | 1 | 2 | 3 | 4 | 5 | 6, string[] | boolean>>;
|
|
89
|
+
dates?: Record<string, string[] | boolean>;
|
|
90
|
+
};
|
|
91
|
+
}>;
|
|
92
|
+
}
|
|
93
|
+
type TaskFilter = ((task: Task) => boolean) | null;
|
|
94
|
+
type ResourceFilter = ((resource: any) => boolean) | null;
|
|
95
|
+
interface WrapperInlineEditorMethods {
|
|
96
|
+
focus?: () => void;
|
|
97
|
+
save?: () => void;
|
|
98
|
+
setValue?: (value: any) => void;
|
|
99
|
+
getValue?: () => any;
|
|
100
|
+
isChanged?: (value: any) => boolean;
|
|
101
|
+
isValid?: () => boolean;
|
|
102
|
+
}
|
|
103
|
+
interface InlineEditorComponentProps {
|
|
104
|
+
initialValue: any;
|
|
105
|
+
task: Task;
|
|
106
|
+
save: () => void;
|
|
107
|
+
cancel: () => void;
|
|
108
|
+
ganttInstance: GanttStatic;
|
|
109
|
+
}
|
|
110
|
+
interface ActiveInlineEditor {
|
|
111
|
+
id: string;
|
|
112
|
+
placeholder: HTMLElement;
|
|
113
|
+
editorType: string;
|
|
114
|
+
initialValue: any;
|
|
115
|
+
task: Task;
|
|
116
|
+
onMount?: () => void;
|
|
117
|
+
}
|
|
118
|
+
interface CustomLightboxProps {
|
|
119
|
+
data: any;
|
|
120
|
+
onSave: (updatedTask: any) => void;
|
|
121
|
+
onCancel: () => void;
|
|
122
|
+
onDelete: () => void;
|
|
123
|
+
ganttInstance: GanttStatic;
|
|
124
|
+
}
|
|
125
|
+
type TemplateWrapper = (node: VNode) => VNode;
|
|
126
|
+
type GroupTasks = any;
|
|
127
|
+
interface VueGanttProps {
|
|
128
|
+
tasks?: Task[];
|
|
129
|
+
links?: Link[];
|
|
130
|
+
resources?: any[] | null;
|
|
131
|
+
resourceAssignments?: any[] | null;
|
|
132
|
+
baselines?: any[] | null;
|
|
133
|
+
markers?: Marker[] | null;
|
|
134
|
+
calendars?: (WrapperCalendar | CalendarConfig)[] | null;
|
|
135
|
+
data?: VueGanttDataConfig | null;
|
|
136
|
+
config?: Partial<GanttConfigOptions>;
|
|
137
|
+
plugins?: GanttPlugins;
|
|
138
|
+
templates?: Partial<GanttTemplates>;
|
|
139
|
+
locale?: string | Record<string, any>;
|
|
140
|
+
theme?: string;
|
|
141
|
+
filter?: TaskFilter;
|
|
142
|
+
resourceFilter?: ResourceFilter;
|
|
143
|
+
modals?: GanttModals | null;
|
|
144
|
+
groupTasks?: GroupTasks;
|
|
145
|
+
inlineEditors?: Record<string, Component>;
|
|
146
|
+
customLightbox?: Component | null;
|
|
147
|
+
templateWrapper?: TemplateWrapper | null;
|
|
148
|
+
events?: VueGanttEvents;
|
|
149
|
+
[key: string]: any;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
declare const VueGantt: vue.DefineComponent<{
|
|
153
|
+
[x: string]: /*elided*/ any;
|
|
154
|
+
tasks?: Task[];
|
|
155
|
+
links?: Link[];
|
|
156
|
+
resources?: any[] | null;
|
|
157
|
+
resourceAssignments?: any[] | null;
|
|
158
|
+
baselines?: any[] | null;
|
|
159
|
+
markers?: Marker[] | null;
|
|
160
|
+
calendars?: (WrapperCalendar | CalendarConfig)[] | null;
|
|
161
|
+
data?: VueGanttDataConfig | null;
|
|
162
|
+
config?: Partial<GanttConfigOptions>;
|
|
163
|
+
plugins?: GanttPlugins;
|
|
164
|
+
templates?: Partial<GanttTemplates>;
|
|
165
|
+
locale?: string | Record<string, any>;
|
|
166
|
+
theme?: string;
|
|
167
|
+
filter?: TaskFilter;
|
|
168
|
+
resourceFilter?: ResourceFilter;
|
|
169
|
+
modals?: GanttModals | null;
|
|
170
|
+
groupTasks?: GroupTasks;
|
|
171
|
+
inlineEditors?: Record<string, Component>;
|
|
172
|
+
customLightbox?: Component | null;
|
|
173
|
+
templateWrapper?: TemplateWrapper | null;
|
|
174
|
+
events?: VueKnownGanttEvents & Record<string, (...args: any[]) => any>;
|
|
175
|
+
}, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
176
|
+
[key: string]: any;
|
|
177
|
+
}>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
|
178
|
+
ready: (instance: GanttStatic) => boolean;
|
|
179
|
+
}, string, vue.PublicProps, Readonly<{
|
|
180
|
+
[x: string]: /*elided*/ any;
|
|
181
|
+
tasks?: Task[];
|
|
182
|
+
links?: Link[];
|
|
183
|
+
resources?: any[] | null;
|
|
184
|
+
resourceAssignments?: any[] | null;
|
|
185
|
+
baselines?: any[] | null;
|
|
186
|
+
markers?: Marker[] | null;
|
|
187
|
+
calendars?: (WrapperCalendar | CalendarConfig)[] | null;
|
|
188
|
+
data?: VueGanttDataConfig | null;
|
|
189
|
+
config?: Partial<GanttConfigOptions>;
|
|
190
|
+
plugins?: GanttPlugins;
|
|
191
|
+
templates?: Partial<GanttTemplates>;
|
|
192
|
+
locale?: string | Record<string, any>;
|
|
193
|
+
theme?: string;
|
|
194
|
+
filter?: TaskFilter;
|
|
195
|
+
resourceFilter?: ResourceFilter;
|
|
196
|
+
modals?: GanttModals | null;
|
|
197
|
+
groupTasks?: GroupTasks;
|
|
198
|
+
inlineEditors?: Record<string, Component>;
|
|
199
|
+
customLightbox?: Component | null;
|
|
200
|
+
templateWrapper?: TemplateWrapper | null;
|
|
201
|
+
events?: VueKnownGanttEvents & Record<string, (...args: any[]) => any>;
|
|
202
|
+
}> & Readonly<{
|
|
203
|
+
onReady?: (instance: GanttStatic) => any;
|
|
204
|
+
}>, {
|
|
205
|
+
tasks: Task[];
|
|
206
|
+
links: Link[];
|
|
207
|
+
resources: any[];
|
|
208
|
+
resourceAssignments: any[];
|
|
209
|
+
baselines: any[];
|
|
210
|
+
markers: Marker[];
|
|
211
|
+
calendars: any[];
|
|
212
|
+
data: VueGanttDataConfig;
|
|
213
|
+
config: Partial<GanttConfigOptions>;
|
|
214
|
+
plugins: GanttPlugins;
|
|
215
|
+
templates: Partial<GanttTemplates>;
|
|
216
|
+
locale: string | Record<string, any>;
|
|
217
|
+
theme: string;
|
|
218
|
+
filter: (task: Task) => boolean;
|
|
219
|
+
resourceFilter: (resource: any) => boolean;
|
|
220
|
+
modals: GanttModals;
|
|
221
|
+
groupTasks: any;
|
|
222
|
+
inlineEditors: Record<string, Component>;
|
|
223
|
+
customLightbox: any;
|
|
224
|
+
templateWrapper: TemplateWrapper;
|
|
225
|
+
events: VueGanttEvents;
|
|
226
|
+
}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
|
|
227
|
+
|
|
228
|
+
declare function useWorkTime(ganttRef: Ref<VueGanttRef | null>): vue.ComputedRef<{
|
|
229
|
+
isWorkTime: ({ date, task, unit }: {
|
|
230
|
+
date: Date;
|
|
231
|
+
task?: Task | null;
|
|
232
|
+
unit?: string;
|
|
233
|
+
}) => boolean;
|
|
234
|
+
calculateEndDate: ({ start, duration, unit, task }: {
|
|
235
|
+
start: Date;
|
|
236
|
+
duration: number;
|
|
237
|
+
unit?: string;
|
|
238
|
+
task?: Task;
|
|
239
|
+
}) => Date;
|
|
240
|
+
calculateDuration: ({ start, end, task }: {
|
|
241
|
+
start: Date;
|
|
242
|
+
end: Date;
|
|
243
|
+
task?: Task;
|
|
244
|
+
}) => number;
|
|
245
|
+
getClosestWorkTime: ({ date, task, unit, dir }: {
|
|
246
|
+
date: Date;
|
|
247
|
+
task?: Task | null;
|
|
248
|
+
unit: string;
|
|
249
|
+
dir?: string;
|
|
250
|
+
}) => Date;
|
|
251
|
+
}>;
|
|
252
|
+
|
|
253
|
+
declare function useResourceAssignments(ganttRef: Ref<VueGanttRef | null>): vue.ComputedRef<{
|
|
254
|
+
getResourceAssignments(resourceId: string | number, taskId?: string | number): any;
|
|
255
|
+
getTaskResources(taskId: string | number): any;
|
|
256
|
+
}>;
|
|
257
|
+
|
|
258
|
+
declare function useGanttDatastore<T>(ganttRef: Ref<VueGanttRef | null>, storeName: string): vue.ComputedRef<{
|
|
259
|
+
getItem(id: string | number): T | null;
|
|
260
|
+
getItems(): T[];
|
|
261
|
+
hasChild(id: string | number): boolean;
|
|
262
|
+
getChildren(id: string | number): (string | number)[];
|
|
263
|
+
}>;
|
|
264
|
+
|
|
265
|
+
interface ExportToExcelConfig {
|
|
266
|
+
[key: string]: any;
|
|
267
|
+
}
|
|
268
|
+
declare function useGanttActions(ganttRef: Ref<VueGanttRef | null | undefined>): {
|
|
269
|
+
undo(): void;
|
|
270
|
+
redo(): void;
|
|
271
|
+
render(): void;
|
|
272
|
+
exportToPDF(): void;
|
|
273
|
+
exportToPNG(): void;
|
|
274
|
+
exportToExcel(config?: ExportToExcelConfig): void;
|
|
275
|
+
exportToMSProject(): void;
|
|
276
|
+
};
|
|
277
|
+
|
|
278
|
+
type EventHandler = (...args: any[]) => any;
|
|
279
|
+
declare function useGanttEvent(ganttRef: Ref<VueGanttRef | null | undefined>, eventName: MaybeRef<string>, handler: MaybeRef<EventHandler | null | undefined>): {
|
|
280
|
+
detach: () => void;
|
|
281
|
+
};
|
|
282
|
+
|
|
283
|
+
declare function defineGanttConfig<T extends Partial<GanttConfigOptions>>(config: T): T;
|
|
284
|
+
declare function defineGanttTemplates<T extends Partial<GanttTemplates>>(templates: T): T;
|
|
285
|
+
declare function defineGanttEvents<T extends VueGanttEvents>(events: T): T;
|
|
286
|
+
declare function defineInlineEditors<T extends Record<string, Component>>(inlineEditors: T): T;
|
|
287
|
+
|
|
288
|
+
export { VueGantt, VueGantt as default, defineGanttConfig, defineGanttEvents, defineGanttTemplates, defineInlineEditors, useGanttActions, useGanttDatastore, useGanttEvent, useResourceAssignments, useWorkTime };
|
|
289
|
+
export type { ActiveInlineEditor, BatchChanges, CustomLightboxProps, DataCallbackChange, DataSet, GanttModals, GroupTasks, InlineEditorComponentProps, Marker, OnBeforeLinkDeleteConfirmArgs, OnBeforeTaskDeleteConfirmArgs, ResourceFilter, TaskFilter, TemplateWrapper, VueGanttDataConfig, VueGanttEmits, VueGanttEvents, VueGanttExpose, VueGanttProps, VueGanttRef, VueKnownGanttEvents, WrapperCalendar, WrapperInlineEditorMethods };
|