Эта функция доступна только в PRO-версии.
В Gantt доступны три предопределённых типа задач (вы также можете создать собственный тип):
Чтобы назначить тип задачи, используйте свойство type внутри элемента данных (значения соответствуют объекту types):
Указание типа задачи в наборе данных
var data = {
task:[
{id:1, text:"Project #1", type:"project", open:true}, {id:2, text:"Task #1", start_date:"12-04-2020", duration:3, parent:1},
{id:3, text:"Alpha release", type:"milestone", parent:1, start_date:"14-04-2020"}, {id:4, text:"Task #2", start_date:"17-04-2020", duration:3, parent:1}],
links:[]
};
Related sample: Projects and milestones
По умолчанию dhtmlxGantt создаёт обычные задачи (tasks с type="task").
Указание обычных задач
var data = {
tasks:[{id:2, text:"Task #1", start_date:"12-04-2020", duration:3}], links:[]
};
//или
var data = {
tasks:[{id:2, text:"Task #1", start_date:"12-04-2020", duration:3, type:"task"}], links:[]
};
Related sample: Projects and milestones
Задачи с type="task" обладают следующими особенностями:
Проектная задача охватывает период от начала самой ранней дочерней задачи до завершения самой поздней дочерней задачи.
Ключевое отличие проектной задачи от обычной — длительность проектной задачи зависит от дочерних задач и автоматически обновляется.
Указание проектных задач
var data = {
tasks:[
{id:1, text:"Project #1", type:"project", open:true}, {id:2, text:"Task #1", start_date:"12-04-2020", duration:3, parent:1},
{id:3, text:"Alpha release", type:"milestone", parent:1,
start_date:"14-04-2020"}],
links:[]
};
Related sample: Projects and milestones
Задачи с type="project" имеют следующие характеристики:
Для включения добавления проектных задач обратитесь к Вехи. Включение создания вех также позволит пользователям добавлять проектные задачи.
Веха — это задача с нулевой длительностью, предназначенная для выделения ключевых дат проекта (подробнее).
Указание вех
var data = {
tasks:[
{id:1, text:"Project #1", type:"project", open:true},
{id:2, text:"Task #1", start_date:"12-04-2020", duration:3, parent:1},
{id:3, text:"Alpha release", type:"milestone", parent:1, start_date:"14-04-2020"}], links:[]
};
Related sample: Projects and milestones
Задачи с type="milestone" имеют следующие особенности:
Для включения создания вех см. Вехи.
Каждый тип задачи обладает уникальными свойствами, поэтому форма редактирования (lightbox) может быть настроена индивидуально для каждого типа. Конфигурации хранятся в объекте lightbox.
Включают:
Конфигурация по умолчанию выглядит так:
gantt.config.lightbox.sections = [
{name: "description", height: 70, map_to: "text", type: "textarea", focus: true},
{name: "time", type: "duration", map_to: "auto"}
];
gantt.config.lightbox.project_sections= [
{name: "description", height: 70, map_to: "text", type: "textarea", focus: true},
{name: "type", type: "typeselect", map_to: "type"},
{name: "time", type: "duration", readonly: true, map_to: "auto"}
];
gantt.config.lightbox.milestone_sections= [
{name: "description", height: 70, map_to: "text", type: "textarea", focus: true},
{name: "type", type: "typeselect", map_to: "type"},
{name: "time", type: "duration", single_date: true, map_to: "auto"}
];
Если тип задачи изменяется в select-контроле, lightbox динамически обновляется в соответствии с новой конфигурацией.
Вы можете создать собственный тип задачи и определить для него структуру lightbox.
Подробнее о настройке lightbox см. в разделе Настройка формы редактирования.
Все типы задач определяются в объекте types.
Чтобы добавить пользовательский тип задачи, выполните следующие шаги:
Например, чтобы добавить новый тип meeting, который ведёт себя как обычная задача, но с отличным цветом и индивидуальными полями lightbox:
Определите новый тип meeting и его lightbox следующим образом:
gantt.config.types.meeting = "type_id";
Здесь "meeting" — программное имя для удобства и читаемости.gantt.locale.labels.type_meeting = "Meeting";
gantt.config.lightbox.meeting_sections = [
{name:"title", height:20, map_to:"text", type:"textarea", focus:true},
{name:"details", height:70, map_to: "details", type: "textarea"},
{name:"type", type:"typeselect", map_to:"type"},
{name:"time", height:72, type:"time", map_to:"auto"}
];
gantt.locale.labels.section_title = "Subject";
gantt.locale.labels.section_details = "Details";
.meeting_task{
border:2px solid #BFC518;
color:#6ba8e3;
background: #F2F67E;
}
.meeting_task .gantt_task_progress{
background:#D9DF29;
}
gantt.templates.task_class = function(start, end, task){
if(task.type == gantt.config.types.meeting){
return "meeting_task";
}
return "";
};
gantt.templates.task_text = function(start, end, task){
if(task.type == gantt.config.types.meeting){
return "Meeting: <b>" + task.text + "</b>";
}
return task.text;
};
Related sample: Custom task type
Чтобы изменить внешний вид существующих типов задач, используйте опцию type_renderers. Это позволяет переопределить функции, управляющие отрисовкой типов задач на странице.
gantt.config.type_renderers["project"]=function(task, defaultRender){
var main_el = document.createElement("div");
main_el.setAttribute(gantt.config.task_attribute, task.id);
var size = gantt.getTaskPosition(task);
main_el.innerHTML = [
"<div class='project-left'></div>",
"<div class='project-right'></div>"
].join('');
main_el.className = "custom-project";
main_el.style.left = size.left + "px";
main_el.style.top = size.top + 7 + "px";
main_el.style.width = size.width + "px";
return main_el;
};
К началу