datastore
набор методов datastore
object datastore;
Details
Обратите внимание, что задачи и связи должны изменяться с использованием общего API Gantt. Изменение задач или связей напрямую в datastore может привести к неожиданным результатам. Ожидается, что datastore будет использоваться для ресурсов или других пользовательских объектов.
Новый datastore можно создать, используя метод createDatastore.
Объект datastore обладает следующими методами и событиями:
Методы
-
parse (data): void - загружает данные из массива
- data - (Array<object>) - данные для загрузки
gantt.$resourcesStore.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}
]);
Related sample: Resource load diagram
Аналогом datastore.parse() является gantt.parse().
Вызывает события onBeforeParse, onItemLoading, onParse и onStoreUpdated.
-
getItem (id): object | void - возвращает элемент по его id
- id - (string | number) - id элемента
var store = gantt.getDatastore(gantt.config.resource_store);
var resource = store.getItem(resourceId);
Related sample: Resource load diagram
Аналогами datastore.getItem() являются gantt.getTask() и gantt.getLink().
-
updateItem (id, item): void - обновляет указанный элемент
- id - (string | number) - id элемента
- item? - (object) - объект элемента
var store = gantt.getDatastore(gantt.config.resource_store);
var resource = store.getItem(resourceId);
resource.text = "modified";
store.updateItem(resourceId);
// или
store.updateItem(resourceId, { text: "modified" });
Аналогами datastore.updateItem() являются gantt.updateTask() и gantt.updateLink().
Вызывает события onBeforeUpdate, onAfterUpdate и onStoreUpdated.
-
removeItem (id): void - удаляет указанный элемент
- id - (string | number) - id элемента
var store = gantt.getDatastore(gantt.config.resource_store);
store.removeItem(resourceId);
Аналогами datastore.removeItem() являются gantt.deleteTask() и gantt.deleteLink().
Вызывает события onBeforeDelete, onAfterDelete и onStoreUpdated.
-
isVisible (id): boolean - проверяет, виден ли указанный элемент или скрыт фильтрами
- id - (string | number) - id элемента
Возвращает true, если задача видна. В противном случае, false.
var store = gantt.getDatastore(gantt.config.resource_store);
if(store.isVisible(resourceId)){
console.log(resourceId);
}
Аналогом datastore.isVisible() является gantt.isTaskVisible().
-
getVisibleItems (): Array<object> - возвращает массив видимых элементов
var store = gantt.getDatastore(gantt.config.resource_store);
var items = store.getVisibleItems();
-
addItem (item, index): number | string - добавляет новый элемент в datastore
- item - (object) - объект элемента
- index? - (number) - позиция, на которую будет добавлен элемент (0 или больше)
Возвращает id элемента.
var store = gantt.getDatastore(gantt.config.resource_store);
var itemId = store.addItem({
text: "Unassigned",
parent:4
});
Аналогами datastore.addItem() являются gantt.addTask() и gantt.addLink().
Вызывает события onBeforeAdd, onAfterAdd и onStoreUpdated.
-
changeId (oldId, newId): void - изменяет id элемента
- oldId - (string | number) - текущий id элемента
- newId - (string | number) - новый id элемента
var store = gantt.getDatastore(gantt.config.resource_store);
var itemId = store.addItem({
text: "Unassigned",
parent:4
});
// itemId - временный клиентский id нового элемента
// как только элемент будет сохранен в базе данных - обновите клиент новым id:
store.changeId(itemId, "databaseId");
Аналогами datastore.changeId() являются gantt.changeTaskId() и gantt.changeLinkId().
Вызывает событие onIdChange.
-
exists (id): boolean - проверяет, существует ли указанный элемент в datastore
- id - (string | number) - id элемента
Возвращает true, если задача существует. В противном случае, false.
var store = gantt.getDatastore(gantt.config.resource_store);
if(store.exists(resourceId)){
console.log(resourceId);
}
Аналогами datastore.exists() являются gantt.isTaskExists() и gantt.isLinkExists().
-
move (sindex, tindex): void - перемещает элемент на новую позицию
- sindex - (number) - индекс текущей позиции задачи
- tindex - (number) - индекс позиции, на которую будет перемещен элемент
var store = gantt.getDatastore(gantt.config.resource_store);
// обмен двух элементов
var idA = 1;
var idB = 5;
var indexA = store.getIndexById(idA);
var indexB = store.getIndexById(idB);
store.move(indexB, indexA);
indexA = store.getIndexById(idA);
store.move(indexA, indexB);
Аналогом datastore.move() является gantt.moveTask().
Вызывает событие onStoreUpdated.
-
clearAll (): void - очищает datastore
var store = gantt.getDatastore(gantt.config.resource_store);
store.clearAll();
Аналогом datastore.clearAll() является gantt.clearAll().
Вызывает события onClearAll, onBeforeStoreUpdate и onStoreUpdated.
-
silent (callback): void - выполняет код без вызова событий API datastore
- callback - (Function) - функция обратного вызова
var store = gantt.getDatastore(gantt.config.resource_store);
store.silent(function(){
store.eachItem(function(item){
item.text += " modified";
store.updateItem(item.id);
});
});
store.refresh();
Аналогом datastore.silent() является gantt.silent().
-
refresh (id): void - запускает перерисовку событий указанной записи, применяет фильтры
- id? - (string | number) - необязательный, id записи
var store = gantt.getDatastore(gantt.config.resource_store);
store.refresh(itemId); // перерисовывает элемент
store.refresh(); // перерисовывает все элементы
Аналогами datastore.refresh() являются gantt.refreshTask() и gantt.refreshLink().
Вызывает события onBeforeStoreUpdate, onBeforeFilter, onFilterItem, onFilter и onStoreUpdated.
-
count (): number - возвращает количество элементов, загруженных в datastore в данный момент
var store = gantt.getDatastore(gantt.config.resource_store);
store.attachEvent("onParse", function(){
alert(store.count() + " items loaded");
});
Аналогами datastore.count() являются gantt.getTaskCount() и gantt.getLinkCount().
-
countVisible (): number - возвращает количество видимых элементов
var store = gantt.getDatastore(gantt.config.resource_store);
alert(store.countVisible() + " items are visible");
Аналогом datastore.countVisible() является gantt.getVisibleTaskCount().
-
eachItem (callback): void - перебирает все задачи datastore
- callback - (Function) - функция обратного вызова
var store = gantt.getDatastore(gantt.config.resource_store);
var searchItems = [];
store.eachItem(function(item){
if(!item.value){
searchItems.push(item);
}
});
Аналогом datastore.eachItem() является gantt.eachTask().
-
filter (): void - запускает фильтры и обновляет массив видимых элементов
Обычно, вам не нужно вызывать этот метод, он вызывается автоматически из метода store.refresh().
var store = gantt.getDatastore(gantt.config.resource_store);
store.filter();
-
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();
}
или вы можете определить пользовательскую функцию для сортировки:
var resourceSortDirection = false;
function sortResources(){
resourceSortDirection = !resourceSortDirection;
gantt.getDatastore("resource").sort(function (resource1, resource2){
return resource1.id - resource2.id;
}, resourceSortDirection)
gantt.render();
}
Аналогом datastore.sort() является gantt.sort().
-
getIndexRange (from, to): Array<object> - возвращает записи между указанными индексами
- from - (number) - позиция начальной записи
- to - (number) - позиция конечной записи
var store = gantt.getDatastore(gantt.config.resource_store);
var itemsInViewPort = store.getIndexRange(5, 10);// получить элементы с 5-го по 10-й
-
getItems (): Array<object> - возвращает все записи datastore
var store = gantt.getDatastore(gantt.config.resource_store);
var items = store.getItems();
Аналогами datastore.getItems() являются gantt.getTaskByTime() и gantt.getLinks().
-
getIdByIndex (index): string | number | void - возвращает id элемента по его индексу. Возвращает `undefined`, если на указанном индексе нет элемента.
- index - (number) - позиция элемента
var store = gantt.getDatastore(gantt.config.resource_store);
var firstItem = store.getIdByIndex(0);
Аналогом datastore.getIdByIndex() является gantt.getTaskByIndex().
-
getIndexById (id): number - возвращает индекс элемента по его id. Возвращает `-1`, если такого элемента нет в datastore.
- id - (string | number) - id элемента
var store = gantt.getDatastore(gantt.config.resource_store);
var itemIndex = store.getIndexById(5);
Аналогом datastore.getIndexById() является gantt.getTaskIndex().
-
getFirst (): string | number | null - возвращает id первого элемента datastore
var store = gantt.getDatastore(gantt.config.resource_store);
var firstId = store.getFirst();
-
getLast (): string | number | null - возвращает id последнего элемента datastore
var store = gantt.getDatastore(gantt.config.resource_store);
var lastId = store.getLast();
-
getNext (id): string | number | null - возвращает id следующего элемента datastore
- id - (string | number) - id элемента
var store = gantt.getDatastore(gantt.config.resource_store);
var firstId = store.getFirst();
var secondId = store.getNext(firstId);
Аналогом datastore.getNext() является gantt.getNext().
-
getPrev (id): string | number | null - возвращает id предыдущего элемента datastore
- id - (string | number) - id элемента
var store = gantt.getDatastore(gantt.config.resource_store);
var prevId = store.getPrev(itemId);
Аналогом datastore.getPrev() является gantt.getPrev().
-
destructor (): void - очищает datastore и удаляет все прикрепленные обработчики событий. После вызова этого метода datastore не может быть использован.
var store = gantt.getDatastore(gantt.config.resource_store);
store.destructor();
Аналогом datastore.destructor() является gantt.destructor().
-
attachEvent (name, handler, settings): string - прикрепляет обработчик к внутреннему событию DataStore
- name - (string) - имя события, регистронезависимое
- handler - (Function) - функция обработчика
- settings? - (object) - необязательный, объект с настройками для обработчика событий
var store = gantt.getDatastore(gantt.config.resource_store);
store.attachEvent("onAfterSelect", function(id){
gantt.refreshData();
});
Аналогом datastore.attachEvent() является gantt.attachEvent().
-
callEvent (name, params): boolean - вызывает внутреннее событие
- name - (string) - имя события, регистронезависимое
- params - (Array<any>) - массив данных, связанных с событием
var store = gantt.getDatastore(gantt.config.resource_store);
store.callEvent("CustomEvent", [param1, param2]);
Аналогом datastore.callEvent() является gantt.callEvent().
-
detachEvent (id): void - отсоединяет обработчик от события (который был прикреплен ранее методом attachEvent())
- id - (string) - id события
var store = gantt.getDatastore(gantt.config.resource_store);
var handlerId = store.attachEvent("onAfterSelect", function(id){
gantt.refreshData();
});
// отсоединить слушателя
store.detachEvent(handlerId);
Аналогом datastore.detachEvent() является gantt.detachEvent().
События
-
onItemLoading (item) - вызывается, когда элемент загружается из источника данных
- item - (object) - объект элемента
Возвращает false для предотвращения стандартного действия события, иначе true.
var store = gantt.getDatastore(gantt.config.resource_store);
store.attachEvent("onItemLoading", function(item){
if(item.valid){ // фильтрация элементов при загрузке по пользовательскому свойству
return true;
}
return false;
});
Аналогом события onItemLoading в datastore является событие onTaskLoading в Gantt.
-
onBeforeParse (data) - вызывается перед началом разбора данных
- data - (Array <any>) - массив с загруженными данными
var store = gantt.getDatastore(gantt.config.resource_store);
store.attachEvent("onBeforeParse", function(item){
console.time("StoreParse");
});
store.attachEvent("onParse", function(item){
console.timeEnd("StoreParse");
});
Аналогом события onBeforeParse в datastore является событие onBeforeParse в Gantt.
-
onParse (data) - вызывается после разбора данных (они становятся доступными для API), но до их отображения в диаграмме Gantt
- data - (Array <any>) - массив с загруженными данными
var store = gantt.getDatastore(gantt.config.resource_store);
store.attachEvent("onBeforeParse", function(item){
console.time("StoreParse");
});
store.attachEvent("onParse", function(item){
console.timeEnd("StoreParse");
});
Аналогом события onParse в datastore является событие onParse в Gantt.
-
onBeforeUpdate (id, item) - вызывается перед обновлением элемента
- id - (string | number) - id элемента
- item - (object) - новый (обновленный) объект элемента
Возвращает false для предотвращения стандартного действия события, иначе true.
var store = gantt.getDatastore(gantt.config.resource_store);
store.attachEvent("onBeforeUpdate", function(id, item){
// ваш код здесь
return true;
});
Аналогами события onBeforeUpdate в datastore являются события onBeforeTaskUpdate и onBeforeLinkUpdate в Gantt.
-
onAfterUpdate (id, item) - вызывается после обновления элемента
- id - (string | number) - id элемента
- item - (object) - объект элемента
var store = gantt.getDatastore(gantt.config.resource_store);
store.attachEvent("onAfterUpdate", function(id, item){
// ваш код здесь
});
Аналогами события onAfterUpdate в datastore являются события onAfterTaskUpdate и onAfterLinkUpdate в Gantt.
-
onBeforeDelete (id, item) - вызывается перед удалением элемента
- id - (string | number) - id элемента
- item - (object) - объект элемента
Возвращает false для предотвращения стандартного действия события, иначе true.
var store = gantt.getDatastore(gantt.config.resource_store);
store.attachEvent("onBeforeDelete", function(id, item){
// ваш код здесь
return true;
});
Аналогами события onBeforeDelete в datastore являются события onBeforeTaskDelete и onBeforeLinkDelete в Gantt.
-
onAfterDelete (id, item) - вызывается после удаления элемента
- id - (string | number) - id элемента
- item - (object) - объект элемента
var store = gantt.getDatastore(gantt.config.resource_store);
store.attachEvent("onAfterDelete", function(id, item){
// ваш код здесь
});
Аналогами события onAfterDelete в datastore являются события onAfterTaskDelete и onAfterLinkDelete в Gantt.
-
onBeforeAdd (id, item) - вызывается перед добавлением нового элемента в datastore
- id - (string | number) - id элемента
- item - (object) - объект элемента
Возвращает false для предотвращения стандартного действия события, иначе true.
var store = gantt.getDatastore(gantt.config.resource_store);
store.attachEvent("onBeforeAdd", function(id, item){
// ваш код здесь
return true;
});
Аналогами события onBeforeAdd в datastore являются события onBeforeTaskAdd и onBeforeLinkAdd в Gantt.
-
onAfterAdd (id, item) - вызывается после добавления элемента в datastore
- id - (string | number) - id элемента
- item - (object) - объект элемента
var store = gantt.getDatastore(gantt.config.resource_store);
store.attachEvent("onAfterAdd", function(id, item){
// ваш код здесь
});
Аналогами события onAfterAdd в datastore являются события onAfterTaskAdd и onAfterLinkAdd в Gantt.
-
onIdChange (id, newId) - вызывается, когда id элемента изменяется
- id - (string | number) - id элемента
- newId - (string | number) - новый id элемента
var store = gantt.getDatastore(gantt.config.resource_store);
store.attachEvent("onIdChange", function(oldId, newId){
// ваш код здесь
});
Аналогом события onIdChange в datastore является событие onTaskIdChange в Gantt.
-
onClearAll () - вызывается после удаления всех элементов из datastore
var store = gantt.getDatastore(gantt.config.resource_store);
store.attachEvent("onClearAll", function(){
// ваш код здесь
});
Аналогом события onClearAll в datastore является событие onClear в Gantt.
-
onBeforeStoreUpdate (id, item, action) - вызывается перед обновлением datastore
- id - (string | number | null) - id элемента или null
- item - (object | null) - объект элемента или null
- action - (string | null) - тип действия ("paint", "move", "add", "delete", null)
Возвращает false для предотвращения стандартного действия события, иначе true.
Это событие сигнализирует о необходимости перерисовки элементов datastore. Значение аргумента `null` означает, что обновляется весь datastore.
var store = gantt.getDatastore(gantt.config.resource_store);
store.attachEvent("onBeforeStoreUpdate", function(id, item, action){
// ваш код здесь
return true;
});
-
onStoreUpdated (id, item, action) - вызывается после обновления datastore
- id - (string | number | null) - id элемента или null
- item - (object | null) - объект элемента или null
- action - (string | null) - тип действия ("paint", "move", "add", "delete", null)
Это событие сигнализирует о необходимости перерисовки элементов datastore. Значение аргумента `null` означает, что обновляется весь datastore.
var store = gantt.getDatastore(gantt.config.resource_store);
store.attachEvent("onStoreUpdated", function(id, item, action){
// ваш код здесь
});
-
onBeforeFilter () - вызывается перед применением фильтрации
var store = gantt.getDatastore(gantt.config.resource_store);
store.attachEvent("onBeforeFilter", function(){
console.time("filtering");
});
store.attachEvent("onFilter", function(){
console.timeEnd("filtering");
});
-
onFilter () - вызывается после обновления состояния фильтрации в datastore
var store = gantt.getDatastore(gantt.config.resource_store);
store.attachEvent("onBeforeFilter", function(){
console.time("filtering");
});
store.attachEvent("onFilter", function(){
console.timeEnd("filtering");
});
-
onFilterItem (id, item) - вызывается для каждого элемента на этапе фильтрации, возвращение `false` пометит элемент как невидимый
- id - (string | number) - id элемента
- item - (object) - объект элемента
Возвращает false для предотвращения стандартного действия события, иначе true.
var store = gantt.getDatastore(gantt.config.resource_store);
store.attachEvent("onFilterItem", function(id, item){
// ваш код здесь
return true;
});
Аналогом события onFilterItem в datastore является событие onBeforeTaskDisplay в Gantt.
-
onDestroy () - вызывается после вызова метода destructor() у datastore
var datastore = gantt.createDatastore({
name: gantt.config.resource_store,
type: "treeDatastore",
initItem: function (item) {
item.parent = item.parent || gantt.config.root_id;
item[gantt.config.resource_property] = item.parent;
item.open = true;
return item;
}
});
datastore.attachEvent("onDestroy", function(){
alert("free custom resources");
});
datastore.destructor();
See also
К началу