treeDatastore

коллекция методов treeDatastore

object treeDatastore;
Details

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

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

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

Методы

  • move (sid, tindex, parent): boolean | void - перемещает элемент на новую позицию или к новому родителю
    • sid - (string | number) - идентификатор перемещаемого элемента
    • tindex - (number) - целевой индекс внутри ветки, куда будет помещен элемент
    • parent? - (string | number) - id нового родителя. Если указан, tindex считается относительно этой родительской ветки
    Возвращает 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) - идентификатор элемента
    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) - идентификатор элемента
    Возвращает число дочерних элементов, если они есть, или 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> - возвращает прямых дочерних элементов указанной родительской ветки
    • 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> - возвращает siblings указанного элемента, включая сам элемент
    • id - (string | number) - id элемента
    Возвращает массив с id siblings элемента.
    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 следующего sibling на том же уровне
    • id - (string | number) - id текущего элемента
    Возвращает id следующего sibling или 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 предыдущего sibling на том же уровне
    • id - (string | number) - id текущего элемента
    Возвращает id предыдущего sibling или 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 - назначает новый родительский элемент, обновляя свойство, указанное в конфиге `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) - имя колонки для сортировки или пользовательская функция сортировки
    • 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}
    ]);
     
    // переключение направления сортировки и сортировка ресурсов по колонке
    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
К началу