Перейти к основному содержимому

Контрол ресурсов

информация

Эта функция доступна только в 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"}
];

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";

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" } /*!*/
];
  1. Задайте метку для секции:
gantt.locale.labels.section_resources = "Rooms";

Resources control

Свойства

Ниже приведены основные свойства, которые обычно задаются для контрола resources (полный список доступен здесь):

  • name - (string) имя секции
  • map_to - (string) имя свойства данных, связанного с секцией
  • type - (string) тип контрола для секции
  • options - (array) массив объектов, определяющих варианты выбора контрола (используется с контролами select, checkbox, radio и resources). Каждый объект включает:
    • key - (string) id опции, сопоставляется со свойством данных задачи
    • label - (string) подпись опции
    • unit - (number) единица измерения ресурса
  • focus - (boolean) если true, секция получает фокус при открытии lightbox
  • default_value - (any) значение по умолчанию для контрола, используется если значение ресурса не определено. Для каждой опции может быть задано своё значение по умолчанию.
заметка

По умолчанию контрол ресурсов связывается со свойством, определённым в 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 должен содержать:

  • key - id опции
  • label - подпись опции
  • unit - единица измерения ресурса

Заполнение контрола данными с сервера

Чтобы заполнить контрол данными с сервера, установите свойство 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" }
])

Assign multiple resources