나는 angular2 차트를 사용하여 d3.js에서 Gantt 차트를 구현하려고합니다. 다음 예제를 사용하려고합니다 http://bl.ocks.org/dk8996/5538271. 분명히 this는 typescript보다는 javascript를 사용합니다. 그러나 나는 그것의 대부분을 좋아 보이고있다, 그러나 나는 1 개의 문제점을 얻는다.Angular2 및 D3.js Gantt 차트
createSchedule() {
var tasks = [{"startDate":new Date("Sun Dec 09 01:36:45 EST 2012"),"endDate":new Date("Sun Dec 09 02:36:45 EST 2012"),"taskName":"E Job","status":"RUNNING"}];
var taskStatus = {
"SUCCEEDED" : "bar",
"FAILED" : "bar-failed",
"RUNNING" : "bar-running",
"KILLED" : "bar-killed"
};
var taskNames = [ "D Job", "P Job", "E Job", "A Job", "N Job" ];
tasks.sort(function(a,b) {
return a.endDate.getTime() - b.endDate.getTime();
});
var maxDate = tasks[tasks.length -1].endDate;
tasks.sort(function(a,b) {
return a.startDate.getTime() - b.startDate.getTime();
});
var minDate = tasks[0].startDate;
var format = "%H:%M";
var timeDomainString = "1day";
var gantt = d3.gantt().taskTypes(taskNames).taskStatus(taskStatus).tickFormat(format).height(450).width(800);
gantt.timeDomainMode("fixed");
changeTimeDomain(timeDomainString);
gantt(tasks);
function changeTimeDomain(timeDomainString) {
this.timeDomainString = timeDomainString;
switch (timeDomainString) {
case "1hr":
format = "%H:%M:%S";
gantt.timeDomain([ d3.time.hour.offset(new Date(getEndDate()), -1), getEndDate() ]);
break;
case "3hr":
format = "%H:%M";
gantt.timeDomain([ d3.time.hour.offset(new Date(getEndDate()), -3), getEndDate() ]);
break;
case "6hr":
format = "%H:%M";
gantt.timeDomain([ d3.time.hour.offset(new Date(getEndDate()), -6), getEndDate() ]);
break;
case "1day":
format = "%H:%M";
gantt.timeDomain([ d3.time.day.offset(new Date(getEndDate()), -1), getEndDate() ]);
break;
case "1week":
format = "%a %H:%M";
gantt.timeDomain([ d3.time.day.offset(new Date(getEndDate()), -7), getEndDate() ]);
break;
default:
format = "%H:%M"
}
gantt.tickFormat(format);
gantt.redraw(tasks);
}
function getEndDate() {
var lastEndDate = Date.now();
if (tasks.length > 0) {
lastEndDate = tasks[tasks.length - 1].endDate.getTime();
}
return lastEndDate;
}
}
내가 오류 비트는 다음과 같습니다 :
이var gantt = d3.gantt().taskTypes(taskNames).taskStatus(taskStatus).tickFormat(format).height(450).width(800);
그것은
을 다음과 같이 Property 'gantt' does not exist on type 'typeof d3'
내가 내 D3를 가져 말한다 여기
내 전체 방법import * as d3 from 'd3';
다른 곳에서는 오류가 없으며 문제를 추적하는 데 어려움을 겪고 있습니다.
아이디어가 있으십니까? 만들 수있는 테스트로도 편집
D3는 다음과 같이 내가 간단한 원을 구현 작동하는지 :
이d3.select("#scheduleDiv").append("svg").attr("width",50).attr("height", 50).append("circle").attr("cx", 25).attr("cy", 25).attr("r", 25).style("fill", "purple");
이 잘 작동하지만 .gantt은()
을하지 않습니다
'gantt()'메소드는 d3 라이브러리의 일부가 아닙니다. 당신의 예제에서''에서 중요합니다. – echonax
아아아. 그래서 내가 구성 요소 TS 파일에 차트를 구축 할 때 스크립트를 가져올 수있는 가장 좋은 곳은 어디입니까? – DaRoGa
특정 타이핑 파일과 index.html에 스크립트 태그가 정의되어 있으면 실제로 가져올 필요가 없습니다. – echonax