Available only in PRO Edition
Эта функция доступна только в PRO-версии.
Это многофункциональный контрол, предназначенный для назначения нескольким ресурсам и их количествам задачи.
gantt.config.lightbox.sections = [
{name: "description", height: 38, map_to: "text", type: "textarea", focus: true},
{name:"owner",height:60, type:"resources", default_value:8}, {name: "time", type: "duration", map_to: "auto"}
];
Related sample: Assign multiple resources
Альтернативный вариант:
gantt.config.lightbox.sections = [
{ name:"description",height:38,map_to:"text",type:"textarea",focus:true },
{ name:"time",type:"duration",map_to:"auto" },
{ name:"rooms",type:"resources",map_to:"rooms", options:[ { key: 1, label: "room 1", unit: "hours" }, { key: 2, label: "room 2", unit: "hours" }, { key: 3, label: "room 3", unit: "hours" } ] } ];
gantt.locale.labels.section_rooms = "Rooms";
Related sample: Resources control
Также возможно создать кастомный контрол для назначения нескольких ресурсов задаче.
Чтобы добавить контрол resources в lightbox, выполните следующие шаги:
1. Добавьте секцию в конфигурацию lightbox:
gantt.config.lightbox.sections = [
{ name:"description",height:38,map_to:"text",type:"textarea",focus:true },
{ name:"time",type:"duration",map_to:"auto" },
{ name:"rooms",type:"resources" } ];
2. Задайте метку для секции:
gantt.locale.labels.section_resources = "Rooms";
Related sample: Resources control
Ниже приведены основные свойства, которые обычно задаются для контрола resources (полный список доступен здесь):
По умолчанию контрол ресурсов связывается со свойством, определённым в resource_property, поэтому указывать map_to необязательно.
По умолчанию контрол ресурсов автоматически заполняется из хранилища ресурсов через коллекцию gantt.serverList("resourceOptions")
(подробнее). Необходимо задавать опции вручную только для переопределения этого поведения.
Начиная с версии 8.0, контрол ресурсов автоматически получает опции из хранилища ресурсов.
Если вы используете стандартное хранилище ресурсов Gantt, контрол ресурсов, инициализированный без параметра options, будет связан с коллекцией gantt.serverList("resourceOptions"), которая наполняется ресурсами из хранилища. Получить опции в коде можно так:
const options = gantt.serverList("resourceOptions");
Имейте в виду, что массив опций будет пустым, пока ресурсы не будут загружены в хранилище.
Также вы можете обновить эту коллекцию своим списком опций:
gantt.updateCollection("resourceOptions", [...]);
Обратите внимание, что если вы загрузите ресурсы в Gantt после обновления этой коллекции, ваши изменения будут перезаписаны.
Чтобы управлять тем, какие ресурсы отображаются в lightbox, переопределите конфиг gantt.config.resources.lightbox_resources:
gantt.config.resources = {
lightbox_resources: function selectResourceControlOptions(resources){
const lightboxOptions = [];
resources.forEach(function(res) {
if (!gantt.$resourcesStore.hasChild(res.id)) {
const copy = gantt.copy(res);
copy.key = res.id;
copy.label = res.text;
lightboxOptions.push(copy);
}
});
return lightboxOptions;
}
};
Если вы создаёте хранилище ресурсов вручную, необходимо самостоятельно заполнить опции для контрола ресурсов.
Обычно для задания значений для контрола resources используется параметр options:
gantt.config.lightbox.sections = [
{ name:"rooms",type:"resources",map_to:"rooms",
options:[
{ key: 1, label: "room 1", unit: "hours" },
{ key: 2, label: "room 2", unit: "hours" },
{ key: 3, label: "room 3", unit: "hours" }
]
}
];
Каждый элемент массива options должен содержать:
Чтобы заполнить контрол данными с сервера, установите свойство options в значение, возвращаемое методом serverList:
gantt.config.lightbox.sections = [
{name: "description", height: 38, map_to: "text", type: "textarea", focus: true},
{name: "resources", type: "resources", map_to: "owner_id", default_value:8,
options: gantt.serverList("resourceOptions")},
{name: "time", type: "duration", map_to: "auto"}
];
gantt.init("gantt_here");
gantt.load("/data");
Содержимое gantt.serverList("resourceOptions")
можно задать, когда опции станут доступны, с помощью метода updateCollection:
gantt.updateCollection("resourceOptions", [
{ key: 1, label: "room 1", unit: "hours" },
{ key: 2, label: "room 2", unit: "hours" },
{ key: 3, label: "room 3", unit: "hours" }
])
Related sample: Assign multiple resources
К началу