UNPKG

ng-gantt-extended

Version:

Angular Gantt Editor (wrapper for [jsgantt-improved](https://github.com/jsGanttImproved/jsgantt-improved)). View/Edit Gantt file with formatting.

80 lines 10.7 kB
import { Component, Input, ViewChild } from "@angular/core"; import * as JSGantt from "jsgantt-improved"; import { GanttEditorOptions } from "./gantt.editoroptions"; export class GanttEditorComponent { constructor() { this.id = "anggantteditor" + Math.floor(Math.random() * 1000000); this.optionsChanged = false; this.formats = ["Hour", "Day", "Week", "Month", "Quarter"]; this.showQueryBuilder = false; this.query = null; this.options = new GanttEditorOptions(); this.format = "week"; } set data(value) { this._data = value; if (this.editor) { this.destroy(); this.ngOnInit(); } } ngOnInit() { let optionsBefore = this.options; if (!this.optionsChanged && this.editor) { optionsBefore = this.editor.options; } // document.getElementById('embedded-Gantt') const g = (this.editor = new JSGantt.GanttChart(this.ganttEditorContainer.nativeElement, this.format)); if (g.getDivId() != null) { // JSGantt.parseJSON('./fixes/data.json', g); g.setOptions(Object.assign({ vCaptionType: "Complete", vQuarterColWidth: 36, vDateTaskDisplayFormat: "day dd month yyyy", vDayMajorDateDisplayFormat: "mon yyyy - Week ww", vWeekMinorDateDisplayFormat: "dd mon", vShowTaskInfoLink: 1, vShowEndWeekDate: 0, vUseSingleCell: 10000, // Even with setUseSingleCell using Hour format on such a large chart can cause issues in some browsers vFormatArr: this.formats.slice(1) }, optionsBefore)); if (this._data && this._data.forEach) { this._data.forEach((row) => { row.pGantt = g; g.AddTaskItemObject(row); }); } g.Draw(); } } // public get(): JSON { // return this.editor.get(); // } setOptions(newOptions) { if (this.editor) { this.destroy(); } this.optionsChanged = true; this.options = newOptions; this.ngOnInit(); } addLang(lang, option) { if (this.editor) { const g = this.editor; g.addLang(lang, option); } } destroy() { // this.editor.destroy(); } getEditor() { return this.editor; } } GanttEditorComponent.decorators = [ { type: Component, args: [{ // tslint:disable-next-line:component-selector selector: "ng-gantt", template: '<div [id]="id" #ganttEditorContainer></div>' },] } ]; GanttEditorComponent.ctorParameters = () => []; GanttEditorComponent.propDecorators = { ganttEditorContainer: [{ type: ViewChild, args: ["ganttEditorContainer", { static: true },] }], options: [{ type: Input }], format: [{ type: Input }], data: [{ type: Input, args: ["data",] }] }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZ2FudHQtZXh0ZW5kZWQvIiwic291cmNlcyI6WyJnYW50dC9nYW50dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFPM0QsTUFBTSxPQUFPLG9CQUFvQjtJQXdCL0I7UUF0Qk8sT0FBRSxHQUFHLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDO1FBQzVELG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLFlBQU8sR0FBRyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN0RCxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDekIsVUFBSyxHQUFHLElBQUksQ0FBQztRQU9YLFlBQU8sR0FBdUIsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBQ3ZELFdBQU0sR0FBRyxNQUFNLENBQUM7SUFVVixDQUFDO0lBVGhCLElBQ0ksSUFBSSxDQUFDLEtBQWE7UUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2YsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ2pCO0lBQ0gsQ0FBQztJQUlELFFBQVE7UUFDTixJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDdkMsYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1NBQ3JDO1FBRUQsNENBQTRDO1FBQzVDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFVLE9BQVEsQ0FBQyxVQUFVLENBQ3BELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLEVBQ3ZDLElBQUksQ0FBQyxNQUFNLENBQ1osQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxFQUFFO1lBQ3hCLDZDQUE2QztZQUU3QyxDQUFDLENBQUMsVUFBVSxpQkFDVixZQUFZLEVBQUUsVUFBVSxFQUN4QixnQkFBZ0IsRUFBRSxFQUFFLEVBQ3BCLHNCQUFzQixFQUFFLG1CQUFtQixFQUMzQywwQkFBMEIsRUFBRSxvQkFBb0IsRUFDaEQsMkJBQTJCLEVBQUUsUUFBUSxFQUNyQyxpQkFBaUIsRUFBRSxDQUFDLEVBQ3BCLGdCQUFnQixFQUFFLENBQUMsRUFDbkIsY0FBYyxFQUFFLEtBQUs7Z0JBQ3JCLHVHQUF1RztnQkFDdkcsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUM5QixhQUFhLEVBQ2hCLENBQUM7WUFDSCxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUU7Z0JBQ3BDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQ3pCLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO29CQUNmLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDM0IsQ0FBQyxDQUFDLENBQUM7YUFDSjtZQUNELENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNWO0lBQ0gsQ0FBQztJQUVELHVCQUF1QjtJQUN2Qiw4QkFBOEI7SUFDOUIsSUFBSTtJQUVHLFVBQVUsQ0FBQyxVQUE4QjtRQUM5QyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDaEI7UUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQztRQUMxQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVNLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTTtRQUN6QixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3RCLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVNLE9BQU87UUFDWix5QkFBeUI7SUFDM0IsQ0FBQztJQUVNLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQzs7O1lBL0ZGLFNBQVMsU0FBQztnQkFDVCw4Q0FBOEM7Z0JBQzlDLFFBQVEsRUFBRSxVQUFVO2dCQUNwQixRQUFRLEVBQUUsNkNBQTZDO2FBQ3hEOzs7O21DQVNFLFNBQVMsU0FBQyxzQkFBc0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7c0JBS2xELEtBQUs7cUJBQ0wsS0FBSzttQkFDTCxLQUFLLFNBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0ICogYXMgSlNHYW50dCBmcm9tIFwianNnYW50dC1pbXByb3ZlZFwiO1xyXG5pbXBvcnQgeyBHYW50dEVkaXRvck9wdGlvbnMgfSBmcm9tIFwiLi9nYW50dC5lZGl0b3JvcHRpb25zXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Y29tcG9uZW50LXNlbGVjdG9yXHJcbiAgc2VsZWN0b3I6IFwibmctZ2FudHRcIixcclxuICB0ZW1wbGF0ZTogJzxkaXYgW2lkXT1cImlkXCIgI2dhbnR0RWRpdG9yQ29udGFpbmVyPjwvZGl2PicsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHYW50dEVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHJpdmF0ZSBlZGl0b3I6IGFueTtcclxuICBwdWJsaWMgaWQgPSBcImFuZ2dhbnR0ZWRpdG9yXCIgKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDAwMDAwKTtcclxuICBwdWJsaWMgb3B0aW9uc0NoYW5nZWQgPSBmYWxzZTtcclxuICBwdWJsaWMgZm9ybWF0cyA9IFtcIkhvdXJcIiwgXCJEYXlcIiwgXCJXZWVrXCIsIFwiTW9udGhcIiwgXCJRdWFydGVyXCJdO1xyXG4gIHB1YmxpYyBzaG93UXVlcnlCdWlsZGVyID0gZmFsc2U7XHJcbiAgcHVibGljIHF1ZXJ5ID0gbnVsbDtcclxuXHJcbiAgQFZpZXdDaGlsZChcImdhbnR0RWRpdG9yQ29udGFpbmVyXCIsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgZ2FudHRFZGl0b3JDb250YWluZXI6IEVsZW1lbnRSZWY7XHJcblxyXG4gIHByaXZhdGUgX2RhdGE7XHJcblxyXG4gIEBJbnB1dCgpIG9wdGlvbnM6IEdhbnR0RWRpdG9yT3B0aW9ucyA9IG5ldyBHYW50dEVkaXRvck9wdGlvbnMoKTtcclxuICBASW5wdXQoKSBmb3JtYXQgPSBcIndlZWtcIjtcclxuICBASW5wdXQoXCJkYXRhXCIpXHJcbiAgc2V0IGRhdGEodmFsdWU6IE9iamVjdCkge1xyXG4gICAgdGhpcy5fZGF0YSA9IHZhbHVlO1xyXG4gICAgaWYgKHRoaXMuZWRpdG9yKSB7XHJcbiAgICAgIHRoaXMuZGVzdHJveSgpO1xyXG4gICAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgbGV0IG9wdGlvbnNCZWZvcmUgPSB0aGlzLm9wdGlvbnM7XHJcbiAgICBpZiAoIXRoaXMub3B0aW9uc0NoYW5nZWQgJiYgdGhpcy5lZGl0b3IpIHtcclxuICAgICAgb3B0aW9uc0JlZm9yZSA9IHRoaXMuZWRpdG9yLm9wdGlvbnM7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VtYmVkZGVkLUdhbnR0JylcclxuICAgIGNvbnN0IGcgPSAodGhpcy5lZGl0b3IgPSBuZXcgKDxhbnk+SlNHYW50dCkuR2FudHRDaGFydChcclxuICAgICAgdGhpcy5nYW50dEVkaXRvckNvbnRhaW5lci5uYXRpdmVFbGVtZW50LFxyXG4gICAgICB0aGlzLmZvcm1hdFxyXG4gICAgKSk7XHJcblxyXG4gICAgaWYgKGcuZ2V0RGl2SWQoKSAhPSBudWxsKSB7XHJcbiAgICAgIC8vIEpTR2FudHQucGFyc2VKU09OKCcuL2ZpeGVzL2RhdGEuanNvbicsIGcpO1xyXG5cclxuICAgICAgZy5zZXRPcHRpb25zKHtcclxuICAgICAgICB2Q2FwdGlvblR5cGU6IFwiQ29tcGxldGVcIiwgLy8gU2V0IHRvIFNob3cgQ2FwdGlvbiA6IE5vbmUsQ2FwdGlvbixSZXNvdXJjZSxEdXJhdGlvbixDb21wbGV0ZSxcclxuICAgICAgICB2UXVhcnRlckNvbFdpZHRoOiAzNixcclxuICAgICAgICB2RGF0ZVRhc2tEaXNwbGF5Rm9ybWF0OiBcImRheSBkZCBtb250aCB5eXl5XCIsIC8vIFNob3duIGluIHRvb2wgdGlwIGJveFxyXG4gICAgICAgIHZEYXlNYWpvckRhdGVEaXNwbGF5Rm9ybWF0OiBcIm1vbiB5eXl5IC0gV2VlayB3d1wiLCAvLyBTZXQgZm9ybWF0IHRvIGRpc3BsYXkgZGF0ZXMgaW4gdGhlIFwiTWFqb3JcIiBoZWFkZXIgb2YgdGhlIFwiRGF5XCIgdmlld1xyXG4gICAgICAgIHZXZWVrTWlub3JEYXRlRGlzcGxheUZvcm1hdDogXCJkZCBtb25cIiwgLy8gU2V0IGZvcm1hdCB0byBkaXNwbGF5IGRhdGVzIGluIHRoZSBcIk1pbm9yXCIgaGVhZGVyIG9mIHRoZSBcIldlZWtcIiB2aWV3XHJcbiAgICAgICAgdlNob3dUYXNrSW5mb0xpbms6IDEsIC8vIFNob3cgbGluayBpbiB0b29sIHRpcCAoMC8xKVxyXG4gICAgICAgIHZTaG93RW5kV2Vla0RhdGU6IDAsIC8vIFNob3cvSGlkZSB0aGUgZGF0ZSBmb3IgdGhlIGxhc3QgZGF5IG9mIHRoZSB3ZWVrIGluIGhlYWRlciBmb3JcclxuICAgICAgICB2VXNlU2luZ2xlQ2VsbDogMTAwMDAsXHJcbiAgICAgICAgLy8gRXZlbiB3aXRoIHNldFVzZVNpbmdsZUNlbGwgdXNpbmcgSG91ciBmb3JtYXQgb24gc3VjaCBhIGxhcmdlIGNoYXJ0IGNhbiBjYXVzZSBpc3N1ZXMgaW4gc29tZSBicm93c2Vyc1xyXG4gICAgICAgIHZGb3JtYXRBcnI6IHRoaXMuZm9ybWF0cy5zbGljZSgxKSxcclxuICAgICAgICAuLi5vcHRpb25zQmVmb3JlLFxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKHRoaXMuX2RhdGEgJiYgdGhpcy5fZGF0YS5mb3JFYWNoKSB7XHJcbiAgICAgICAgdGhpcy5fZGF0YS5mb3JFYWNoKChyb3cpID0+IHtcclxuICAgICAgICAgIHJvdy5wR2FudHQgPSBnO1xyXG4gICAgICAgICAgZy5BZGRUYXNrSXRlbU9iamVjdChyb3cpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGcuRHJhdygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gcHVibGljIGdldCgpOiBKU09OIHtcclxuICAvLyAgIHJldHVybiB0aGlzLmVkaXRvci5nZXQoKTtcclxuICAvLyB9XHJcblxyXG4gIHB1YmxpYyBzZXRPcHRpb25zKG5ld09wdGlvbnM6IEdhbnR0RWRpdG9yT3B0aW9ucykge1xyXG4gICAgaWYgKHRoaXMuZWRpdG9yKSB7XHJcbiAgICAgIHRoaXMuZGVzdHJveSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zQ2hhbmdlZCA9IHRydWU7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSBuZXdPcHRpb25zO1xyXG4gICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFkZExhbmcobGFuZywgb3B0aW9uKSB7XHJcbiAgICBpZiAodGhpcy5lZGl0b3IpIHtcclxuICAgICAgY29uc3QgZyA9IHRoaXMuZWRpdG9yO1xyXG4gICAgICBnLmFkZExhbmcobGFuZywgb3B0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZXN0cm95KCkge1xyXG4gICAgLy8gdGhpcy5lZGl0b3IuZGVzdHJveSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEVkaXRvcigpIHtcclxuICAgIHJldHVybiB0aGlzLmVkaXRvcjtcclxuICB9XHJcbn1cclxuIl19