treeDatastore

набор методов treeDatastore

object treeDatastore;
Details

Примечание, что Задачи и Связи должны изменяться с использованием общего API Gantt. Изменение задач или связей напрямую в datastore может привести к непредсказуемым результатам. Datastore предполагается использовать для ресурсов или других пользовательских объектов.

Новый datastore может быть создан с помощью метода createDatastore.

TreeDatastore расширяет Datastore и обладает всеми его методами. Расширенное API объекта treeDatastore предоставляет следующие методы и события:

Методы

  • move (sid, tindex, parent): boolean | void - перемещает элемент на новую позицию или к новому родителю
    • sid - (string | number) - id элемента для перемещения
    • tindex - (number) - индекс позиции, на которую будет перемещен элемент (индекс внутри ветви)
    • parent? - (string | number) - id родителя. Если указан, то tindex будет относиться к индексу в ветви 'parent'
    Возвращает false, если действие было отменено с использованием onBeforeItemMove, в противном случае возвращает undefined.
    var store = gantt.getDatastore(gantt.config.resource_store);
    store.parse([
        {id: 1, text: "QA", parent:null},
        {id: 2, text: "Development", parent:null},
        {id: 3, text: "Sales", parent:null},
        {id: 4, text: "Other", parent:null},
        {id: 5, text: "Unassigned", parent:4},
        {id: 6, text: "John", parent:1},
        {id: 7, text: "Mike", parent:2},
        {id: 8, text: "Anna", parent:2},
        {id: 9, text: "Bill", parent:3},
        {id: 10, text: "Floe", parent:3}
    ]);
     
    store.move(6, -1, 2);// переместить 'John' из 'QA' в 'Development'


    Аналогом treeDatastore.move() является gantt.moveTask().
    Вызывает события onBeforeItemMove, onAfterItemMove и все события метода refresh.
  • getBranchIndex (id): number - возвращает индекс элемента в ветви
    • id - (string | number) - id элемента
    var store = gantt.getDatastore(gantt.config.resource_store);
    store.parse([
        {id: 1, text: "QA", parent:null},
        {id: 2, text: "Development", parent:null},
        {id: 3, text: "Sales", parent:null},
        {id: 4, text: "Other", parent:null},
        {id: 5, text: "Unassigned", parent:4},
        {id: 6, text: "John", parent:1},
        {id: 7, text: "Mike", parent:2},
        {id: 8, text: "Anna", parent:2},
        {id: 9, text: "Bill", parent:3},
        {id: 10, text: "Floe", parent:3}
    ]);
     
    store.getBranchIndex(8);
    // -> 1


    Аналогом treeDatastore.getBranchIndex() является gantt.getTaskIndex()
  • hasChild (id): number | void - проверяет, есть ли у указанного элемента дочерние элементы
    • id - (string | number) - id элемента
    Возвращает число дочерних задач (если они существуют), или undefined в противном случае.
    var store = gantt.getDatastore(gantt.config.resource_store);
    store.parse([
        {id: 1, text: "QA", parent:null},
        {id: 2, text: "Development", parent:null},
        {id: 3, text: "Sales", parent:null},
        {id: 4, text: "Other", parent:null},
        {id: 5, text: "Unassigned", parent:4},
        {id: 6, text: "John", parent:1},
        {id: 7, text: "Mike", parent:2},
        {id: 8, text: "Anna", parent:2},
        {id: 9, text: "Bill", parent:3},
        {id: 10, text: "Floe", parent:3}
    ]);
     
    store.hasChild(1);
    // -> true
     
    store.hasChild(9);
    // -> false


    Аналогом treeDatastore.hasChild() является gantt.hasChild().
  • getChildren (id): Array<number | string | object> - возвращает дочерние элементы 1-го уровня указанной родительской ветви
    • id - (string | number) - id родительской ветви
    Возвращает массив id дочерних элементов.
    var store = gantt.getDatastore(gantt.config.resource_store);
    store.parse([
        {id: 1, text: "QA", parent:null},
        {id: 2, text: "Development", parent:null},
        {id: 3, text: "Sales", parent:null},
        {id: 4, text: "Other", parent:null},
        {id: 5, text: "Unassigned", parent:4},
        {id: 6, text: "John", parent:1},
        {id: 7, text: "Mike", parent:2},
        {id: 8, text: "Anna", parent:2},
        {id: 9, text: "Bill", parent:3},
        {id: 10, text: "Floe", parent:3}
    ]);
     
    store.getChildren(3);
    // -> [9, 10]
     
    store.getChildren(9);
    // -> [0]


    Аналогом treeDatastore.getChildren() является gantt.getChildren().
  • isChildOf (childId, parentId): boolean - проверяет, является ли элемент дочерним по отношению к другому элементу
    • childId - (string | number) - id элемента, который вы хотите проверить как дочерний
    • parentId - (string | number) - id элемента, который вы хотите проверить как родительский
    Возвращает true, если элемент является дочерним указанного родительского элемента. В противном случае false.
    var store = gantt.getDatastore(gantt.config.resource_store);
    store.parse([
        {id: 1, text: "QA", parent:null},
        {id: 2, text: "Development", parent:null},
        {id: 3, text: "Sales", parent:null},
        {id: 4, text: "Other", parent:null},
        {id: 5, text: "Unassigned", parent:4},
        {id: 6, text: "John", parent:1},
        {id: 7, text: "Mike", parent:2},
        {id: 8, text: "Anna", parent:2},
        {id: 9, text: "Bill", parent:3},
        {id: 10, text: "Floe", parent:3}
    ]);
     
    store.isChildOf(9, 3);
    // -> true
     
    store.getChildren(9, 2);
    // -> false


    Аналогом treeDatastore.isChildOf() является gantt.isChildOf().
  • getSiblings (id): Array<number | string | object> - возвращает элементы-соседи указанного элемента (включая сам элемент)
    • id - (string | number) - id элемента
    Возвращает массив с id соседей элемента.
    var store = gantt.getDatastore(gantt.config.resource_store);
    store.parse([
        {id: 1, text: "QA", parent:null},
        {id: 2, text: "Development", parent:null},
        {id: 3, text: "Sales", parent:null},
        {id: 4, text: "Other", parent:null},
        {id: 5, text: "Unassigned", parent:4},
        {id: 6, text: "John", parent:1},
        {id: 7, text: "Mike", parent:2},
        {id: 8, text: "Anna", parent:2},
        {id: 9, text: "Bill", parent:3},
        {id: 10, text: "Floe", parent:3}
    ]);
     
    store.getSiblings(1);
    // -> [1,2,3,4]
     
    store.getSiblings(6);
    // -> [6]


    Аналогом treeDatastore.getSiblings() является gantt.getSiblings().
  • getNextSibling (id): number | string | null - возвращает id следующего элемента того же уровня
    • id - (string | number) - id элемента
    Возвращает id следующего элемента-соседа или null.
    var store = gantt.getDatastore(gantt.config.resource_store);
    store.parse([
        {id: 1, text: "QA", parent:null},
        {id: 2, text: "Development", parent:null},
        {id: 3, text: "Sales", parent:null},
        {id: 4, text: "Other", parent:null},
        {id: 5, text: "Unassigned", parent:4},
        {id: 6, text: "John", parent:1},
        {id: 7, text: "Mike", parent:2},
        {id: 8, text: "Anna", parent:2},
        {id: 9, text: "Bill", parent:3},
        {id: 10, text: "Floe", parent:3}
    ]);
     
    store.getNextSibling(9);
    // -> 10
     
    store.getNextSibling(10);
    // -> null


    Аналогом treeDatastore.getNextSibling() является gantt.getNextSibling().
  • getPrevSibling (id): number | string | null - возвращает id предыдущего элемента того же уровня
    • id - (string | number) - id элемента
    Возвращает id предыдущего элемента-соседа или null.
    var store = gantt.getDatastore(gantt.config.resource_store);
    store.parse([
        {id: 1, text: "QA", parent:null},
        {id: 2, text: "Development", parent:null},
        {id: 3, text: "Sales", parent:null},
        {id: 4, text: "Other", parent:null},
        {id: 5, text: "Unassigned", parent:4},
        {id: 6, text: "John", parent:1},
        {id: 7, text: "Mike", parent:2},
        {id: 8, text: "Anna", parent:2},
        {id: 9, text: "Bill", parent:3},
        {id: 10, text: "Floe", parent:3}
    ]);
     
    store.getPrevSibling(9);
    // -> null
     
    store.getPrevSibling(10);
    // -> 9


    Аналогом treeDatastore.getPrevSibling() является gantt.getPrevSibling().
  • getParent (id): number| string - возвращает id родительского элемента или 0.
    • id - (string | number) - id элемента
    var store = gantt.getDatastore(gantt.config.resource_store);
    store.parse([
        {id: 1, text: "QA", parent:null},
        {id: 2, text: "Development", parent:null},
        {id: 3, text: "Sales", parent:null},
        {id: 4, text: "Other", parent:null},
        {id: 5, text: "Unassigned", parent:4},
        {id: 6, text: "John", parent:1},
        {id: 7, text: "Mike", parent:2},
        {id: 8, text: "Anna", parent:2},
        {id: 9, text: "Bill", parent:3},
        {id: 10, text: "Floe", parent:3}
    ]);
     
    store.getParent(9);
    // -> 3
     
    store.getParent(1);
    // -> 0


    Аналогом treeDatastore.getParent() является gantt.getParent().
  • calculateItemLevel (item): number - вычисляет уровень вложенности элемента
    • item - (object) - объект элемента
    var store = gantt.getDatastore(gantt.config.resource_store);
    store.parse([
        {id: 1, text: "QA", parent:null},
        {id: 2, text: "Development", parent:null},
        {id: 3, text: "Sales", parent:null},
        {id: 4, text: "Other", parent:null},
        {id: 5, text: "Unassigned", parent:4},
        {id: 6, text: "John", parent:1},
        {id: 7, text: "Mike", parent:2},
        {id: 8, text: "Anna", parent:2},
        {id: 9, text: "Bill", parent:3},
        {id: 10, text: "Floe", parent:3}
    ]);
     
    store.calculateItemLevel(store.getItem(9));
    // -> 1
     
    store.calculateItemLevel(store.getItem(1));
    // -> 0


    Аналогом treeDatastore.calculateItemLevel() является gantt.calculateTaskLevel().
  • setParent (item, newParentId): void - устанавливает родителя для элемента. Id родителя будет записан в свойство, указанное в конфигурации `parentProperty`, по умолчанию "item.parent".
    • item - (object) - объект элемента
    • newParentId - (string | number | null) - id родителя

    Используйте treeDatastore.move() для перемещения задачи к другому родителю. Метод setParent() только записывает значение в свойство, указанное в конфигурации, он не обновляет внутреннее состояние дерева.

    gantt.createDatastore({
        name: gantt.config.resource_store,
        type: "treeDatastore",
        parentProperty: "parent", //
        initItem: function (item) {
            item.parent = item.parent || gantt.config.root_id;
            item[gantt.config.resource_property] = item.parent;
            item.open = true;
            return item;
        }
    });
     
    var store = gantt.getDatastore(gantt.config.resource_store);
    store.parse([
        {id: 1, text: "QA", parent:null},
        {id: 2, text: "Development", parent:null},
        {id: 3, text: "Sales", parent:null},
        {id: 4, text: "Other", parent:null},
        {id: 5, text: "Unassigned", parent:4},
        {id: 6, text: "John", parent:1},
        {id: 7, text: "Mike", parent:2},
        {id: 8, text: "Anna", parent:2},
        {id: 9, text: "Bill", parent:3},
        {id: 10, text: "Floe", parent:3}
    ]);
     
    store.setParent(store.getItem(9), 4);
    // -> 3


    Аналогом treeDatastore.setParent() является gantt.setParent().
  • eachItem (callback, parentId): void - итерация по всем дочерним элементам указанного элемента
    • callback - (Function) - функция обратного вызова
    • parentId? - (string | number) - id родителя
    var store = gantt.getDatastore(gantt.config.resource_store);
    store.parse([
        {id: 1, text: "QA", parent:null},
        {id: 2, text: "Development", parent:null},
        {id: 3, text: "Sales", parent:null},
        {id: 4, text: "Other", parent:null},
        {id: 5, text: "Unassigned", parent:4},
        {id: 6, text: "John", parent:1},
        {id: 7, text: "Mike", parent:2},
        {id: 8, text: "Anna", parent:2},
        {id: 9, text: "Bill", parent:3},
        {id: 10, text: "Floe", parent:3}
    ]);
     
    store.eachItem(function(item){
        console.log(item.text);
    });


    Аналогом treeDatastore.eachItem() является gantt.eachTask().
  • eachParent (callback, startItem): void - итерация по всем родительским элементам указанного элемента
    • callback - (Function) - функция обратного вызова
    • startItem - (string | number) - id элемента, родительские элементы которого должны быть пройдены
    var store = gantt.getDatastore(gantt.config.resource_store);
    store.parse([
        {id: 1, text: "QA", parent:null},
        {id: 2, text: "Development", parent:null},
        {id: 3, text: "Sales", parent:null},
        {id: 4, text: "Other", parent:null},
        {id: 5, text: "Unassigned", parent:4},
        {id: 6, text: "John", parent:1},
        {id: 7, text: "Mike", parent:2},
        {id: 8, text: "Anna", parent:2},
        {id: 9, text: "Bill", parent:3},
        {id: 10, text: "Floe", parent:3}
    ]);
     
    store.eachParent(function(item){
        console.log(item.text);
    }, 10);
    // -> "Sales"


    Аналогом treeDatastore.eachParent() является gantt.eachParent().
  • open (id): void - открывает ветвь с указанным id
    • id - (string | number) - id ветви
    var store = gantt.getDatastore(gantt.config.resource_store);
    store.parse([
        {id: 1, text: "QA", parent:null},
        {id: 2, text: "Development", parent:null},
        {id: 3, text: "Sales", parent:null},
        {id: 4, text: "Other", parent:null},
        {id: 5, text: "Unassigned", parent:4},
        {id: 6, text: "John", parent:1},
        {id: 7, text: "Mike", parent:2},
        {id: 8, text: "Anna", parent:2},
        {id: 9, text: "Bill", parent:3},
        {id: 10, text: "Floe", parent:3}
    ]);
     
    store.open(1);


    Аналогом treeDatastore.open() является gantt.open(). Вызывает событие onItemOpen.
  • close (id): void - закрывает ветвь с указанным id
    • id - (string | number) - id ветви
    var store = gantt.getDatastore(gantt.config.resource_store);
    store.parse([
        {id: 1, text: "QA", parent:null},
        {id: 2, text: "Development", parent:null},
        {id: 3, text: "Sales", parent:null},
        {id: 4, text: "Other", parent:null},
        {id: 5, text: "Unassigned", parent:4},
        {id: 6, text: "John", parent:1},
        {id: 7, text: "Mike", parent:2},
        {id: 8, text: "Anna", parent:2},
        {id: 9, text: "Bill", parent:3},
        {id: 10, text: "Floe", parent:3}
    ]);
     
    store.close(1);


    Аналогом treeDatastore.close() является gantt.close(). Вызывает событие onItemClose.
  • sort (field, desc, parent, silent): void - сортирует элементы в resource grid
    • field - (string | Function) - имя столбца, по которому будет отсортирован resource grid, или пользовательская функция сортировки
    • desc? - (boolean) - указывает направление сортировки: true - по убыванию и false - по возрастанию. По умолчанию false
    • parent? - (string | number) - id родительского элемента. Укажите параметр, если хотите отсортировать элементы только в ветви указанного родителя.
    • silent? - (boolean) - указывает, следует ли вызывать рендеринг после переформирования элементов
    var store = gantt.getDatastore(gantt.config.resource_store);
    store.parse([
        {id: 1, text: "QA", parent:null},
        {id: 2, text: "Development", parent:null},
        {id: 3, text: "Sales", parent:null},
        {id: 4, text: "Other", parent:null},
        {id: 5, text: "Unassigned", parent:4},
        {id: 6, text: "John", parent:1},
        {id: 7, text: "Mike", parent:2},
        {id: 8, text: "Anna", parent:2},
        {id: 9, text: "Bill", parent:3},
        {id: 10, text: "Floe", parent:3}
    ]);
     
    // отсортировать resource grid по столбцу
    var resourceSortDirection = false;
    function sortResources(){
        resourceSortDirection = !resourceSortDirection;
        gantt.getDatastore("resource").sort("text", resourceSortDirection)
        gantt.render();
    }

    Related sample:  Gantt. Сортировка ресурсов по столбцу

    или вы можете определить пользовательскую функцию для сортировки:
    var resourceSortDirection = false;
    function sortResources(){
        resourceSortDirection = !resourceSortDirection;
        gantt.getDatastore("resource").sort(function (resource1, resource2){
            return resource1.id - resource2.id;
        }, resourceSortDirection)
        gantt.render();
    }

    Related sample:  Gantt. Сортировка ресурсов с использованием пользовательской функции

    Аналогом treeDatastore.sort() является gantt.sort().

События

  • onBeforeItemMove (id, parent, tindex) - срабатывает перед перемещением элемента на новую позицию
    • id - (string | number) - id элемента для перемещения
    • parent - (string | number) - id родителя
    • tindex - (number) - индекс позиции в родительской ветви, на которую будет перемещен элемент
    Возвращает false для предотвращения стандартного действия события, иначе true.
    var store = gantt.getDatastore(gantt.config.resource_store);
    store.attachEvent("onBeforeItemMove", function(id, parent, tindex){
        // ваш код здесь
        return true;
    });


    Аналогом события onBeforeItemMove в treeDatastore является событие onBeforeTaskMove в Gantt.
  • onAfterItemMove (id, parent, tindex) - срабатывает после перемещения элемента на новую позицию
    • id - (string | number) - id элемента для перемещения
    • parent - (string | number) - id родителя
    • tindex - (number) - индекс позиции в родительской ветви, на которую будет перемещен элемент
    var store = gantt.getDatastore(gantt.config.resource_store);
    store.attachEvent("onAfterItemMove", function(id, parent, tindex){
        // ваш код здесь
    });


    Аналогом события onAfterItemMove в treeDatastore является событие onAfterTaskMove в Gantt.
  • onItemOpen (id) - срабатывает при открытии ветви
    • id - (string | number) - id ветви
    var store = gantt.getDatastore(gantt.config.resource_store);
    store.attachEvent("onItemOpen", function(id){
        // ваш код здесь
    });


    Аналогом события onItemOpen в treeDatastore является событие onTaskOpened в Gantt.
  • onItemClose (id) - срабатывает при закрытии ветви
    • id - (string | number) - id ветви
    var store = gantt.getDatastore(gantt.config.resource_store);
    store.attachEvent("onItemClose", function(id){
        // ваш код здесь
    });


    Аналогом события onItemClose в treeDatastore является событие onTaskClosed в Gantt.
See also
К началу