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 в лайтбокс, выполните следующие шаги:
1. Добавьте секцию в конфигурацию лайтбокса:
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")
collection. Вам нужно вручную указать список опций, только если вы хотите изменить это поведение.
Начиная с версии 8.0, контрол ресурсов получает опции из хранилища ресурсов по умолчанию.
Если вы используете стандартное хранилище ресурсов, предоставляемое Gantt, контрол ресурсов инициализируется без параметра options и подключается к коллекции gantt.serverList("resourceOptions"). Эта коллекция получает свои данные из хранилища ресурсов. Чтобы программно получить доступ к этим опциям:
const options = gantt.serverList("resourceOptions");
Имейте в виду, что массив опций останется пустым, пока ресурсы не будут загружены в хранилище.
Вы также можете обновить эту коллекцию пользовательским списком опций:
gantt.updateCollection("resourceOptions", [...]);
Однако, если вы загрузите ресурсы в Gantt после этого, эта коллекция будет обновлена, и ваши изменения могут быть перезаписаны.
Чтобы управлять тем, какие ресурсы отображаются в лайтбоксе, вы можете переопределить конфигурацию 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 в значение, возвращаемое методом gantt.serverList("resourceOptions")
:
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")
может быть обновлена, когда опции становятся доступными, используя метод gantt.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
К началу