@timelinekit/vue 1.0.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.
- package/README.md +163 -0
- package/dist/__tests__/eventcalendar.test.d.ts +1 -0
- package/dist/eventcalendar.component.d.ts +40 -0
- package/dist/ganttchart.component.d.ts +58 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +1 -0
- package/dist/resourcescheduler.component.d.ts +56 -0
- package/package.json +35 -0
package/README.md
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
# @timelinekit/vue
|
|
2
|
+
|
|
3
|
+
Vue 3 components for [TimelineKit](https://timelinekit.com) — high-performance, canvas-rendered scheduling components.
|
|
4
|
+
|
|
5
|
+
For a full feature overview, themes, localization, and export options, see the [`@timelinekit/core` README](https://www.npmjs.com/package/@timelinekit/core).
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install @timelinekit/vue @timelinekit/core
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Requires Vue 3.3 or later.
|
|
14
|
+
|
|
15
|
+
## Components
|
|
16
|
+
|
|
17
|
+
| Component | Import | Ref Type | Styles Import |
|
|
18
|
+
|-----------|--------|----------|---------------|
|
|
19
|
+
| Gantt Chart | `GanttChart` | `GanttChartRef` | `@timelinekit/core/styles` |
|
|
20
|
+
| Resource Scheduler | `ResourceScheduler` | `ResourceSchedulerRef` | `@timelinekit/core/styles/rs` |
|
|
21
|
+
| Event Calendar | `EventCalendar` | `EventCalendarRef` | `@timelinekit/core/styles/ec` |
|
|
22
|
+
|
|
23
|
+
All types from `@timelinekit/core` are re-exported from this package for convenience.
|
|
24
|
+
|
|
25
|
+
## Quick Start
|
|
26
|
+
|
|
27
|
+
### Gantt Chart
|
|
28
|
+
|
|
29
|
+
```vue
|
|
30
|
+
<script setup lang="ts">
|
|
31
|
+
import { ref, onMounted } from 'vue';
|
|
32
|
+
import { GanttChart, type GanttChartRef, Task, TaskLink } from '@timelinekit/vue';
|
|
33
|
+
import '@timelinekit/core/styles';
|
|
34
|
+
|
|
35
|
+
const ganttRef = ref<GanttChartRef>();
|
|
36
|
+
|
|
37
|
+
onMounted(() => {
|
|
38
|
+
const gantt = ganttRef.value!;
|
|
39
|
+
const taskA = gantt.list.addTask(new Task({ id: '1', name: 'Design', startTime: '2027-01-05', endTime: '2027-01-09' }));
|
|
40
|
+
const taskB = gantt.list.addTask(new Task({ id: '2', name: 'Development', startTime: '2027-01-12', endTime: '2027-01-23' }));
|
|
41
|
+
gantt.list.addLink(new TaskLink({ id: 'l1', from: taskA, to: taskB, type: 'finishToStart' }));
|
|
42
|
+
gantt.zoomToFit();
|
|
43
|
+
});
|
|
44
|
+
</script>
|
|
45
|
+
|
|
46
|
+
<template>
|
|
47
|
+
<GanttChart ref="ganttRef" style="height: 600px" />
|
|
48
|
+
</template>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Resource Scheduler
|
|
52
|
+
|
|
53
|
+
```vue
|
|
54
|
+
<script setup lang="ts">
|
|
55
|
+
import { ref, onMounted } from 'vue';
|
|
56
|
+
import { ResourceScheduler, type ResourceSchedulerRef, SchedulerResource, SchedulerEvent } from '@timelinekit/vue';
|
|
57
|
+
import '@timelinekit/core/styles/rs';
|
|
58
|
+
|
|
59
|
+
const schedulerRef = ref<ResourceSchedulerRef>();
|
|
60
|
+
|
|
61
|
+
onMounted(() => {
|
|
62
|
+
const scheduler = schedulerRef.value!;
|
|
63
|
+
const resource = scheduler.data.addResource(new SchedulerResource({ id: '1', name: 'Room A' }));
|
|
64
|
+
scheduler.data.addEvent(new SchedulerEvent({
|
|
65
|
+
id: 'e1',
|
|
66
|
+
resourceId: resource.id,
|
|
67
|
+
name: 'Meeting',
|
|
68
|
+
startTime: '2027-01-05T09:00',
|
|
69
|
+
endTime: '2027-01-05T10:30',
|
|
70
|
+
}));
|
|
71
|
+
});
|
|
72
|
+
</script>
|
|
73
|
+
|
|
74
|
+
<template>
|
|
75
|
+
<ResourceScheduler ref="schedulerRef" style="height: 600px" />
|
|
76
|
+
</template>
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Event Calendar
|
|
80
|
+
|
|
81
|
+
```vue
|
|
82
|
+
<script setup lang="ts">
|
|
83
|
+
import { ref, onMounted } from 'vue';
|
|
84
|
+
import { EventCalendar, type EventCalendarRef, CalendarItem } from '@timelinekit/vue';
|
|
85
|
+
import '@timelinekit/core/styles/ec';
|
|
86
|
+
|
|
87
|
+
const calendarRef = ref<EventCalendarRef>();
|
|
88
|
+
|
|
89
|
+
onMounted(() => {
|
|
90
|
+
const calendar = calendarRef.value!;
|
|
91
|
+
calendar.data.addItem(new CalendarItem({
|
|
92
|
+
id: '1',
|
|
93
|
+
name: 'Team Standup',
|
|
94
|
+
startTime: '2027-01-05T09:00',
|
|
95
|
+
endTime: '2027-01-05T09:30',
|
|
96
|
+
type: 'Meeting',
|
|
97
|
+
}));
|
|
98
|
+
});
|
|
99
|
+
</script>
|
|
100
|
+
|
|
101
|
+
<template>
|
|
102
|
+
<EventCalendar ref="calendarRef" style="height: 600px" />
|
|
103
|
+
</template>
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## API Access
|
|
107
|
+
|
|
108
|
+
Each component exposes its API through a template ref:
|
|
109
|
+
|
|
110
|
+
```vue
|
|
111
|
+
<script setup lang="ts">
|
|
112
|
+
import { ref } from 'vue';
|
|
113
|
+
import { GanttChart, type GanttChartRef } from '@timelinekit/vue';
|
|
114
|
+
|
|
115
|
+
const ganttRef = ref<GanttChartRef>();
|
|
116
|
+
|
|
117
|
+
function handleReady() {
|
|
118
|
+
ganttRef.value!.list.addTask(...);
|
|
119
|
+
ganttRef.value!.zoomIn();
|
|
120
|
+
ganttRef.value!.undo();
|
|
121
|
+
ganttRef.value!.exportToImage();
|
|
122
|
+
}
|
|
123
|
+
</script>
|
|
124
|
+
|
|
125
|
+
<template>
|
|
126
|
+
<GanttChart ref="ganttRef" @ready="handleReady" />
|
|
127
|
+
</template>
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Styling
|
|
131
|
+
|
|
132
|
+
Import the required CSS for each component you use:
|
|
133
|
+
|
|
134
|
+
```typescript
|
|
135
|
+
import '@timelinekit/core/styles'; // Gantt Chart
|
|
136
|
+
import '@timelinekit/core/styles/rs'; // Resource Scheduler
|
|
137
|
+
import '@timelinekit/core/styles/ec'; // Event Calendar
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
SCSS sources are also available (`@timelinekit/core/styles/scss`, `styles/rs/scss`, `styles/ec/scss`).
|
|
141
|
+
|
|
142
|
+
## Licensing
|
|
143
|
+
|
|
144
|
+
TimelineKit is free to use with a watermark. Purchase a license to remove it:
|
|
145
|
+
|
|
146
|
+
```typescript
|
|
147
|
+
import { setLicense } from '@timelinekit/vue';
|
|
148
|
+
|
|
149
|
+
setLicense('your-license-key');
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
See [pricing](https://timelinekit.com/pricing) for details.
|
|
153
|
+
|
|
154
|
+
## Resources
|
|
155
|
+
|
|
156
|
+
- [Documentation](https://timelinekit.com/docs)
|
|
157
|
+
- [Live Demos](https://timelinekit.com/gantt-chart/demo)
|
|
158
|
+
- [Examples](https://github.com/timelinekit/examples)
|
|
159
|
+
- [Support](mailto:support@timelinekit.com)
|
|
160
|
+
|
|
161
|
+
## License
|
|
162
|
+
|
|
163
|
+
See [LICENSE](./LICENSE) for details.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { EventCalendarEngine, CalendarData, CalendarEntry, EventCalendarEvents, EventCalendarSettings } from '@timelinekit/core';
|
|
2
|
+
import type { ViewMode, EntryRenderFn, EntryTooltipFn, CalendarImageExportOptions, CalendarPdfExportOptions, CalendarIcsExportOptions, CalendarIcsImportOptions, CalendarIcsImportResult, CalendarCsvExportOptions, CalendarExcelExportOptions } from '@timelinekit/core';
|
|
3
|
+
export interface EventCalendarRef {
|
|
4
|
+
readonly data: CalendarData;
|
|
5
|
+
readonly events: EventCalendarEvents;
|
|
6
|
+
readonly settings: EventCalendarSettings;
|
|
7
|
+
readonly canUndo$: EventCalendarEngine['canUndo$'];
|
|
8
|
+
readonly canRedo$: EventCalendarEngine['canRedo$'];
|
|
9
|
+
viewMode: ViewMode;
|
|
10
|
+
currentDate: Date;
|
|
11
|
+
selectedEntries: CalendarEntry[];
|
|
12
|
+
selectedEntry: CalendarEntry | null;
|
|
13
|
+
canEdit: boolean;
|
|
14
|
+
sidebarVisible: boolean;
|
|
15
|
+
entryRendering: EntryRenderFn | null;
|
|
16
|
+
entryTooltip: EntryTooltipFn | null;
|
|
17
|
+
today(): void;
|
|
18
|
+
next(): void;
|
|
19
|
+
previous(): void;
|
|
20
|
+
goToDate(date: Date): void;
|
|
21
|
+
undo(): void;
|
|
22
|
+
redo(): void;
|
|
23
|
+
save(): string;
|
|
24
|
+
load(text: string): void;
|
|
25
|
+
copyEntries(entries?: CalendarEntry[]): Promise<void>;
|
|
26
|
+
cutEntries(entries?: CalendarEntry[]): Promise<void>;
|
|
27
|
+
pasteEntries(): Promise<void>;
|
|
28
|
+
exportToImage(options?: CalendarImageExportOptions): Promise<Blob>;
|
|
29
|
+
exportToPdf(options?: CalendarPdfExportOptions): Promise<Blob>;
|
|
30
|
+
exportToIcs(options?: CalendarIcsExportOptions): Blob;
|
|
31
|
+
exportToIcsText(options?: CalendarIcsExportOptions): string;
|
|
32
|
+
importFromIcs(text: string, options?: CalendarIcsImportOptions): CalendarIcsImportResult;
|
|
33
|
+
exportToCsv(options?: CalendarCsvExportOptions): string;
|
|
34
|
+
exportToExcel(options?: CalendarExcelExportOptions): Promise<Blob>;
|
|
35
|
+
}
|
|
36
|
+
export declare const EventCalendar: import("vue").DefineComponent<{}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
37
|
+
[key: string]: any;
|
|
38
|
+
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "ready"[], "ready", import("vue").PublicProps, Readonly<{}> & Readonly<{
|
|
39
|
+
onReady?: ((...args: any[]) => any) | undefined;
|
|
40
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { GanttChartEngine, TaskList, ResourceList, WorkingCalendar, GanttSheet, DateRange, GanttChartEvents, GanttChartSettings, Task } from '@timelinekit/core';
|
|
2
|
+
import type { Marker, GanttCsvExportOptions, GanttPdfExportOptions, GanttExcelExportOptions, TaskFilterFn, TasksPastedEventArgs, ColumnState, TimelineKitLocale } from '@timelinekit/core';
|
|
3
|
+
export interface GanttChartRef {
|
|
4
|
+
readonly list: TaskList;
|
|
5
|
+
readonly resources: ResourceList;
|
|
6
|
+
workingCalendar: WorkingCalendar;
|
|
7
|
+
canEdit: boolean;
|
|
8
|
+
autoZoomToFit: boolean;
|
|
9
|
+
showGridLines: boolean;
|
|
10
|
+
showCriticalPath: boolean;
|
|
11
|
+
showBaseline: boolean;
|
|
12
|
+
showTodayLine: boolean;
|
|
13
|
+
markers: Marker[];
|
|
14
|
+
filter: TaskFilterFn | null;
|
|
15
|
+
readonly hasBaseline: boolean;
|
|
16
|
+
readonly selectedTasks: Task[];
|
|
17
|
+
projectTimeline: DateRange;
|
|
18
|
+
locale: TimelineKitLocale;
|
|
19
|
+
readonly settings: GanttChartSettings;
|
|
20
|
+
readonly sheet: GanttSheet;
|
|
21
|
+
readonly events: GanttChartEvents;
|
|
22
|
+
readonly canUndo$: GanttChartEngine['canUndo$'];
|
|
23
|
+
readonly canRedo$: GanttChartEngine['canRedo$'];
|
|
24
|
+
zoomIn(): boolean;
|
|
25
|
+
zoomOut(): boolean;
|
|
26
|
+
indent(): void;
|
|
27
|
+
outdent(): void;
|
|
28
|
+
moveUp(): void;
|
|
29
|
+
moveDown(): void;
|
|
30
|
+
goToProjectStart(): void;
|
|
31
|
+
scrollToDate(date: Date): void;
|
|
32
|
+
scrollToTask(task: Task): void;
|
|
33
|
+
zoomToFit(tasks?: Task[]): void;
|
|
34
|
+
addMarker(marker: Marker): void;
|
|
35
|
+
removeMarker(marker: Marker): void;
|
|
36
|
+
clearMarkers(): void;
|
|
37
|
+
clearFilter(): void;
|
|
38
|
+
saveColumns(): ColumnState[];
|
|
39
|
+
loadColumns(states: ColumnState[]): void;
|
|
40
|
+
undo(): void;
|
|
41
|
+
redo(): void;
|
|
42
|
+
saveBaseline(): void;
|
|
43
|
+
clearBaseline(): void;
|
|
44
|
+
save(): string;
|
|
45
|
+
load(text: string): void;
|
|
46
|
+
exportToImage(): Promise<Blob>;
|
|
47
|
+
exportToCsv(options?: GanttCsvExportOptions): string;
|
|
48
|
+
exportToPdf(options?: GanttPdfExportOptions): Promise<Blob>;
|
|
49
|
+
exportToExcel(options?: GanttExcelExportOptions): Promise<Blob>;
|
|
50
|
+
copy(): Promise<void>;
|
|
51
|
+
cut(): Promise<void>;
|
|
52
|
+
paste(): Promise<TasksPastedEventArgs | null>;
|
|
53
|
+
}
|
|
54
|
+
export declare const GanttChart: import("vue").DefineComponent<{}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
55
|
+
[key: string]: any;
|
|
56
|
+
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "ready"[], "ready", import("vue").PublicProps, Readonly<{}> & Readonly<{
|
|
57
|
+
onReady?: ((...args: any[]) => any) | undefined;
|
|
58
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { GanttChart } from './ganttchart.component';
|
|
2
|
+
export type { GanttChartRef } from './ganttchart.component';
|
|
3
|
+
export { ResourceScheduler } from './resourcescheduler.component';
|
|
4
|
+
export type { ResourceSchedulerRef } from './resourcescheduler.component';
|
|
5
|
+
export { EventCalendar } from './eventcalendar.component';
|
|
6
|
+
export type { EventCalendarRef } from './eventcalendar.component';
|
|
7
|
+
export * from '@timelinekit/core';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{defineComponent as e,ref as t,onMounted as r,onBeforeUnmount as o,h as n}from"vue";import{GanttChartEngine as s,ResourceSchedulerEngine as a,EventCalendarEngine as i}from"@timelinekit/core";export*from"@timelinekit/core";const l=e({name:"GanttChart",emits:["ready"],setup(e,{emit:a,expose:i}){const l=t();let d=null;return r(()=>{d=new s(l.value),a("ready")}),o(()=>{d?.destroy(),d=null}),i({get list(){return d.list},get resources(){return d.resources},get workingCalendar(){return d.calendar$.getValue()},set workingCalendar(e){d.calendar$.next(e)},get canEdit(){return d.canEdit},set canEdit(e){d.canEdit=e},get autoZoomToFit(){return d.autoZoomToFit},set autoZoomToFit(e){d.autoZoomToFit=e},get showGridLines(){return d.showGridLines},set showGridLines(e){d.showGridLines=e},get showCriticalPath(){return d.showCriticalPath},set showCriticalPath(e){d.showCriticalPath=e},get showBaseline(){return d.showBaseline},set showBaseline(e){d.showBaseline=e},get showTodayLine(){return d.showTodayLine},set showTodayLine(e){d.showTodayLine=e},get markers(){return d.markers},set markers(e){d.markers=e},get filter(){return d.filter},set filter(e){d.filter=e},get hasBaseline(){return d.hasBaseline},get selectedTasks(){return d.selectedTasks},get projectTimeline(){return d.projectTimeline},set projectTimeline(e){d.projectTimeline=e},get locale(){return d.settings.locale},set locale(e){d.settings.locale=e},get settings(){return d.settings},get sheet(){return d.sheet},get events(){return d.events},get canUndo$(){return d.canUndo$},get canRedo$(){return d.canRedo$},zoomIn:()=>d.zoomIn(),zoomOut:()=>d.zoomOut(),indent:()=>d.indent(),outdent:()=>d.outdent(),moveUp:()=>d.moveUp(),moveDown:()=>d.moveDown(),goToProjectStart:()=>d.goToProjectStart(),scrollToDate:e=>d.scrollToDate(e),scrollToTask:e=>d.scrollToTask(e),zoomToFit:e=>d.zoomToFit(e),addMarker:e=>d.addMarker(e),removeMarker:e=>d.removeMarker(e),clearMarkers:()=>d.clearMarkers(),clearFilter:()=>d.clearFilter(),saveColumns:()=>d.saveColumns(),loadColumns:e=>d.loadColumns(e),undo:()=>d.undo(),redo:()=>d.redo(),saveBaseline:()=>d.saveBaseline(),clearBaseline:()=>d.clearBaseline(),save:()=>d.save(),load:e=>d.load(e),exportToImage:()=>d.exportToImage(),exportToCsv:e=>d.exportToCsv(e),exportToPdf:e=>d.exportToPdf(e),exportToExcel:e=>d.exportToExcel(e),copy:()=>d.copy(),cut:()=>d.cut(),paste:()=>d.paste()}),()=>n("div",{ref:l,style:{width:"100%",height:"100%"}})}}),d=e({name:"ResourceScheduler",emits:["ready"],setup(e,{emit:s,expose:i}){const l=t();let d=null;return r(()=>{d=new a(l.value),s("ready")}),o(()=>{d?.destroy(),d=null}),i({get data(){return d.data},get workingCalendar(){return d.calendar$.getValue()},set workingCalendar(e){d.calendar$.next(e)},get canEdit(){return d.canEdit},set canEdit(e){d.canEdit=e},get autoZoomToFit(){return d.autoZoomToFit},set autoZoomToFit(e){d.autoZoomToFit=e},get showGridLines(){return d.showGridLines},set showGridLines(e){d.showGridLines=e},get showTodayLine(){return d.showTodayLine},set showTodayLine(e){d.showTodayLine=e},get markers(){return d.markers},set markers(e){d.markers=e},get filter(){return d.filter},set filter(e){d.filter=e},get eventRendering(){return d.eventRendering},set eventRendering(e){d.eventRendering=e},get eventTooltip(){return d.eventTooltip},set eventTooltip(e){d.eventTooltip=e},get projectTimeline(){return d.projectTimeline},set projectTimeline(e){d.projectTimeline=e},get selectedEvents(){return d.selectedEvents},set selectedEvents(e){d.selectedEvents=e},get selectedEvent(){return d.selectedEvent},set selectedEvent(e){d.selectedEvent=e},get selectedResources(){return d.selectedResources},get settings(){return d.settings},get sheet(){return d.sheet},get events(){return d.events},get canUndo$(){return d.canUndo$},get canRedo$(){return d.canRedo$},undo:()=>d.undo(),redo:()=>d.redo(),copy:()=>d.copy(),cut:()=>d.cut(),paste:()=>d.paste(),zoomIn:()=>d.zoomIn(),zoomOut:()=>d.zoomOut(),goToProjectStart:()=>d.goToProjectStart(),scrollToDate:e=>d.scrollToDate(e),scrollToResource:e=>d.scrollToResource(e),scrollToEvent:e=>d.scrollToEvent(e),zoomToFit:e=>d.zoomToFit(e),addMarker:e=>d.addMarker(e),removeMarker:e=>d.removeMarker(e),clearMarkers:()=>d.clearMarkers(),clearFilter:()=>d.clearFilter(),saveColumns:()=>d.saveColumns(),loadColumns:e=>d.loadColumns(e),sortResources:e=>d.sortResources(e),freezeResource:e=>d.freezeResource(e),unfreezeResource:e=>d.unfreezeResource(e),isResourceFrozen:e=>d.isResourceFrozen(e),exportToImage:()=>d.exportToImage(),exportToCsv:e=>d.exportToCsv(e),exportToExcel:e=>d.exportToExcel(e),exportToPdf:e=>d.exportToPdf(e),save:()=>d.save(),load:e=>d.load(e)}),()=>n("div",{ref:l,style:{width:"100%",height:"100%"}})}}),c=e({name:"EventCalendar",emits:["ready"],setup(e,{emit:s,expose:a}){const l=t();let d=null;return r(()=>{d=new i(l.value),s("ready")}),o(()=>{d?.destroy(),d=null}),a({get data(){return d.data},get events(){return d.events},get settings(){return d.settings},get canUndo$(){return d.canUndo$},get canRedo$(){return d.canRedo$},get viewMode(){return d.viewMode},set viewMode(e){d.viewMode=e},get currentDate(){return d.currentDate},set currentDate(e){d.currentDate=e},get selectedEntries(){return d.selectedEntries},set selectedEntries(e){d.selectedEntries=e},get selectedEntry(){return d.selectedEntry},set selectedEntry(e){d.selectedEntry=e},get canEdit(){return d.canEdit},set canEdit(e){d.canEdit=e},get sidebarVisible(){return d.sidebarVisible},set sidebarVisible(e){d.sidebarVisible=e},get entryRendering(){return d.entryRendering},set entryRendering(e){d.entryRendering=e},get entryTooltip(){return d.entryTooltip},set entryTooltip(e){d.entryTooltip=e},today:()=>d.today(),next:()=>d.next(),previous:()=>d.previous(),goToDate:e=>d.goToDate(e),undo:()=>d.undo(),redo:()=>d.redo(),save:()=>d.save(),load:e=>d.load(e),copyEntries:e=>d.copyEntries(e),cutEntries:e=>d.cutEntries(e),pasteEntries:()=>d.pasteEntries(),exportToImage:e=>d.exportToImage(e),exportToPdf:e=>d.exportToPdf(e),exportToIcs:e=>d.exportToIcs(e),exportToIcsText:e=>d.exportToIcsText(e),importFromIcs:(e,t)=>d.importFromIcs(e,t),exportToCsv:e=>d.exportToCsv(e),exportToExcel:e=>d.exportToExcel(e)}),()=>n("div",{ref:l,style:{width:"100%",height:"100%"}})}});export{c as EventCalendar,l as GanttChart,d as ResourceScheduler};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { ResourceSchedulerEngine, SchedulerData, SchedulerResource, SchedulerEvent, WorkingCalendar, SchedulerSheet, DateRange, ResourceSchedulerEvents, ResourceSchedulerSettings } from '@timelinekit/core';
|
|
2
|
+
import type { Marker, ColumnState, SchedulerResourceFilterFn, SchedulerEventRenderFn, SchedulerEventTooltipFn, SchedulerCsvExportOptions, SchedulerExcelExportOptions, SchedulerPdfExportOptions, SchedulerEventsPastedEventArgs } from '@timelinekit/core';
|
|
3
|
+
export interface ResourceSchedulerRef {
|
|
4
|
+
readonly data: SchedulerData;
|
|
5
|
+
workingCalendar: WorkingCalendar;
|
|
6
|
+
canEdit: boolean;
|
|
7
|
+
autoZoomToFit: boolean;
|
|
8
|
+
showGridLines: boolean;
|
|
9
|
+
showTodayLine: boolean;
|
|
10
|
+
markers: Marker[];
|
|
11
|
+
filter: SchedulerResourceFilterFn | null;
|
|
12
|
+
eventRendering: SchedulerEventRenderFn | null;
|
|
13
|
+
eventTooltip: SchedulerEventTooltipFn | null;
|
|
14
|
+
projectTimeline: DateRange;
|
|
15
|
+
selectedEvents: SchedulerEvent[];
|
|
16
|
+
selectedEvent: SchedulerEvent | null;
|
|
17
|
+
readonly selectedResources: SchedulerResource[];
|
|
18
|
+
readonly settings: ResourceSchedulerSettings;
|
|
19
|
+
readonly sheet: SchedulerSheet;
|
|
20
|
+
readonly events: ResourceSchedulerEvents;
|
|
21
|
+
readonly canUndo$: ResourceSchedulerEngine['canUndo$'];
|
|
22
|
+
readonly canRedo$: ResourceSchedulerEngine['canRedo$'];
|
|
23
|
+
undo(): void;
|
|
24
|
+
redo(): void;
|
|
25
|
+
copy(): Promise<void>;
|
|
26
|
+
cut(): Promise<void>;
|
|
27
|
+
paste(): Promise<SchedulerEventsPastedEventArgs | null>;
|
|
28
|
+
zoomIn(): boolean;
|
|
29
|
+
zoomOut(): boolean;
|
|
30
|
+
goToProjectStart(): void;
|
|
31
|
+
scrollToDate(date: Date): void;
|
|
32
|
+
scrollToResource(resource: SchedulerResource): void;
|
|
33
|
+
scrollToEvent(event: SchedulerEvent): void;
|
|
34
|
+
zoomToFit(events?: SchedulerEvent[]): void;
|
|
35
|
+
addMarker(marker: Marker): void;
|
|
36
|
+
removeMarker(marker: Marker): void;
|
|
37
|
+
clearMarkers(): void;
|
|
38
|
+
clearFilter(): void;
|
|
39
|
+
saveColumns(): ColumnState[];
|
|
40
|
+
loadColumns(states: ColumnState[]): void;
|
|
41
|
+
sortResources(compareFn: (a: SchedulerResource, b: SchedulerResource) => number): void;
|
|
42
|
+
freezeResource(resource: SchedulerResource): void;
|
|
43
|
+
unfreezeResource(resource: SchedulerResource): void;
|
|
44
|
+
isResourceFrozen(resource: SchedulerResource): boolean;
|
|
45
|
+
exportToImage(): Promise<Blob>;
|
|
46
|
+
exportToCsv(options?: SchedulerCsvExportOptions): string;
|
|
47
|
+
exportToExcel(options?: SchedulerExcelExportOptions): Promise<Blob>;
|
|
48
|
+
exportToPdf(options?: SchedulerPdfExportOptions): Promise<Blob>;
|
|
49
|
+
save(): string;
|
|
50
|
+
load(text: string): void;
|
|
51
|
+
}
|
|
52
|
+
export declare const ResourceScheduler: import("vue").DefineComponent<{}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
53
|
+
[key: string]: any;
|
|
54
|
+
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "ready"[], "ready", import("vue").PublicProps, Readonly<{}> & Readonly<{
|
|
55
|
+
onReady?: ((...args: any[]) => any) | undefined;
|
|
56
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
package/package.json
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@timelinekit/vue",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"import": "./dist/index.js"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "rollup -c",
|
|
15
|
+
"test": "vitest run",
|
|
16
|
+
"test:watch": "vitest"
|
|
17
|
+
},
|
|
18
|
+
"peerDependencies": {
|
|
19
|
+
"vue": ">=3.3.0",
|
|
20
|
+
"@timelinekit/core": "workspace:*"
|
|
21
|
+
},
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"@timelinekit/core": "workspace:*"
|
|
24
|
+
},
|
|
25
|
+
"devDependencies": {
|
|
26
|
+
"vue": "^3.5.0",
|
|
27
|
+
"vitest": "^4.0.8",
|
|
28
|
+
"jsdom": "^26.1.0"
|
|
29
|
+
},
|
|
30
|
+
"files": [
|
|
31
|
+
"dist",
|
|
32
|
+
"README.md",
|
|
33
|
+
"LICENSE"
|
|
34
|
+
]
|
|
35
|
+
}
|