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

treeDatastore

Description

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

treeDatastore: TreeDatastoreMethods

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();
    }



    Альтернативно, можно использовать пользовательскую функцию сортировки:

    var resourceSortDirection = false;
    function sortResources(){
    resourceSortDirection = !resourceSortDirection;
    gantt.getDatastore("resource").sort(function (resource1, resource2){
    return resource1.id - resource2.id;
    }, resourceSortDirection)
    gantt.render();
    }



    Аналогом 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.