Чтобы получить или изменить значение контрола lightbox, используйте метод getLightboxSection следующим образом:
// получить значение
var value = gantt.getLightboxSection('description').getValue();
// установить значение
gantt.getLightboxSection('description').setValue('abc');
Чтобы узнать, открыт ли lightbox в данный момент, проверьте свойство lightbox объекта состояния, возвращаемого методом getState.
Если lightbox открыт, метод вернет id открытой задачи; в противном случае — 'null' или 'undefined'.
if (gantt.getState().lightbox){
// код для случая, когда lightbox открыт
} else {
// код для случая, когда lightbox закрыт
}
Чтобы связать свойство данных с секцией lightbox, используйте атрибут map_to в объекте секции:
// связывает секцию "holders" со свойством данных "holder"
gantt.config.lightbox.sections = [
{name:"description", height:38, type:"textarea", map_to:"text", focus:true},
{name:"holders", height:22, type:"textarea", map_to:"holder"}, {name:"time", height:72, type:"duration", map_to:"auto"}
];
Чтобы задать значение по умолчанию для секции lightbox, используйте свойство default_value в объекте секции.
Например, если вы добавили в lightbox пользовательскую секцию "Priority", которая отображает приоритет задачи, это поле будет пустым при создании нового события. Чтобы задать значение по умолчанию, например, низкий приоритет, настройте lightbox так:
var opts = [
{ key:1, label: "High" },
{ key:2, label: "Normal" },
{ key:3, label: "Low" }
];
gantt.config.lightbox.sections = [
{name:"description", height:38, type:"textarea", map_to:"text", focus:true},
{name:"priority", height:22, type:"select", map_to:"priority", options:opts, default_value:3}, {name:"time", height:72, type:"duration", map_to:"auto"}
];
Свойство default_value задает начальное значение только для секции lightbox. Это означает, что новое событие получит это значение только после того, как пользователь откроет lightbox и сохранит событие.
Если вы хотите присвоить значение по умолчанию непосредственно при создании новых событий, используйте событие onTaskCreated:
gantt.attachEvent("onTaskCreated", function(id, task){
task.priority = "Low";
return true;
});
Чтобы скрыть секцию для определённых событий, переопределите её метод set_value следующим образом:
gantt.form_blocks.textarea.set_value = function(node, value, ev){
node.firstChild.value = value || "";
var style = ev.some_property ? "" : "none";
node.style.display = style; // область редактора
node.previousSibling.style.display = style; // заголовок секции
gantt.resizeLightbox(); // корректировка размера lightbox
}
Секции и их заголовки можно разместить в одной строке, включив опцию wide_form:
gantt.config.wide_form = true;
gantt.locale.labels.section_priority = "Priority";
gantt.locale.labels.section_status = "Status";
gantt.config.lightbox.sections = [
{name: "description", height: 38, map_to: "text", type: "textarea", focus: true},
{name: "status", height:22, map_to: "status", type: "select", options: [
{key:1, label: "New"},
{key:2, label: "Open"},
{key:3, label: "Done"}
]},
{name: "priority", map_to: "priority", type: "radio", options: [
{key: 1, label: "High"},
{key: 2, label: "Normal"},
{key: 3, label: "Low"},
]},
{name: "time", type: "duration", map_to: "auto"}
];
gantt.init("gantt_here");
Related sample: Aligning Lightbox
Можно добавить пользовательскую кнопку в заголовок секции, выполнив следующие шаги:
{name:"description", height:130, map_to:"text", type:"textarea", button:"help"}
//'help' соответствует значению свойства 'button'
gantt.locale.labels.button_help = "Help label";
gantt.form_blocks.textarea.button_click = function(index, button, shead, sbody){
// пользовательская логика
}
Параметры:
Чтобы задать изображение кнопки, используйте следующий CSS-класс:
.dhx_custom_button_help{
background-image: url(imgs/but_help.gif);
}
К началу