似水无痕

个人技术博客

嗨,我是似水无痕。


我是一名90后的java开发者,欢迎了解更多。

Angular集成dhtmlx-gantt甘特图

安装dhtmlx-gantt甘特图依赖

npm install dhtmlx-gantt --save

新增甘特图weekly-plan-management.componet.ts组件如下:

import {Component, ElementRef, OnInit, ViewChild} from '@angular/core';
import "dhtmlx-gantt";


import {TaskServiceService} from "./task-service.service";
import {LinkServiceService} from "./link-service.service";

@Component({
  selector: 'weekly-plan-management',
  styles: [
      `
      :host {
        display: block;
        height: 600px;
        position: relative;
        width: 100%;
      }
    `],
  providers: [TaskServiceService, LinkServiceService],
  template: "<div #gantt_here style='width: 100%; height: 100%;'></div>",
})

export class WeeklyPlanManagementComponent implements OnInit {

  constructor(
      private taskService: TaskServiceService, 
      private linkService: LinkServiceService
      ) {
  }

  @ViewChild("gantt_here") ganttContainer: ElementRef;

  ngOnInit() {
    gantt.config.xml_date = "%Y-%m-%d %H:%i";

    gantt.init(this.ganttContainer.nativeElement);

    Promise.all([this.taskService.get(), this.linkService.get()])
      .then(([data, links]) => {
        gantt.parse({data, links});
    });
  }

}

Link.ts代码如下:

export class Link {
  id: number;
  source: number;
  target: number;
  type: string;
}

Task.ts代码如下:

export class Task {
  id: number;
  start_date: string;
  text: string;
  duration: number;
  progress: number;
}

task-service.service.ts代码如下:

import { Injectable } from '@angular/core';
import {Task} from "./Task";
@Injectable({
  providedIn: 'root'
})
export class TaskServiceService {
  get(): Promise<Task[]>{
    return Promise.resolve([
      {id: 1, text: "Task #1", start_date: "2017-04", duration: 3, progress: 0.6},
      {id: 2, text: "Task #2", start_date: "2017-05", duration: 3, progress: 0.4}
    ]);
  }
}
import { Injectable } from '@angular/core';
import {Link} from "./link";

@Injectable({
  providedIn: 'root'
})
export class LinkServiceService {

  get(): Promise<Link[]> {
    return Promise.resolve([
      {id: 1, source: 1, target: 2, type: "0"}
    ]);
  }
}

src/style.less代码如下:

@import '../node_modules/dhtmlx-gantt/codebase/dhtmlxgantt.css';
下一篇

ssm框架搭建