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 (полный список доступен здесь):

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

По умолчанию, контрол ресурсов привязывается к свойству, указанному в конфигурации 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 требует следующих свойств:

  • key - ID опции
  • label - отображаемое имя опции
  • unit - единица измерения ресурса

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

Чтобы загрузить опции с сервера, установите параметр 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

К началу