datastore
Description
Datastore 메서드 모음
datastore: DatastoreMethods
Details
참고, Tasks와 Links는 표준 Gantt API를 통해 관리해야 합니다. datastore 내에서 직접적으로 tasks나 links를 변경하면 예기치 않은 문제가 발생할 수 있습니다. datastore는 주로 리소스나 기타 커스텀 객체를 위한 용도로 설계되었습니다.
createDatastore 메서드를 사용하여 새로운 datastore를 생성할 수 있습니다.
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}
]);
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);
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);
// or
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 이상)
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 - datastore API 이벤트를 트리거하지 않고 코드를 실행합니다.
- 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 - 리소스 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();
}
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을 반환합니다.- 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 - datastore 내 첫 번째 항목의 id를 반환합니다.
var store = gantt.getDatastore(gantt.config.resource_store);
var firstId = store.getFirst();
getLast (): string | number | null - datastore 내 마지막 항목의 id를 반환합니다.
var store = gantt.getDatastore(gantt.config.resource_store);
var lastId = store.getLast();
getNext (id): string | number | null - 지정한 항목 다음 항목의 id를 반환합니다.
- 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를 반환합니다.
- 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 - 이전에 연결한 이벤트 핸들러를 제거합니다.
- 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;
});
datastore의 onItemLoading 이벤트는 Gantt의 onTaskLoading 이벤트에 대응됩니다.
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");
});
datastore의 onBeforeParse 이벤트는 Gantt의 onBeforeParse 이벤트에 대응됩니다.
onParse (data) - 파싱 완료 후, 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");
});
datastore의 onParse 이벤트는 Gantt의 onParse 이벤트에 대응됩니다.
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;
});
datastore의 onBeforeUpdate 이벤트는 Gantt의 onBeforeTaskUpdate 및 onBeforeLinkUpdate 이벤트에 대응됩니다.
onAfterUpdate (id, item) - 항목이 업데이트된 후 트리거됩니다.
- id - (string | number) - 항목의 id
- item - (object) - 업데이트된 항목 객체
var store = gantt.getDatastore(gantt.config.resource_store);
store.attachEvent("onAfterUpdate", function(id, item){
// 여기에 코드 작성
});
datastore의 onAfterUpdate 이벤트는 Gantt의 onAfterTaskUpdate 및 onAfterLinkUpdate 이벤트에 대응됩니다.
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;
});
datastore의 onBeforeDelete 이벤트는 Gantt의 onBeforeTaskDelete 및 onBeforeLinkDelete 이벤트에 대응됩니다.
onAfterDelete (id, item) - 항목이 삭제된 후 트리거됩니다.
- id - (string | number) - 항목의 id
- item - (object) - 항목 객체
var store = gantt.getDatastore(gantt.config.resource_store);
store.attachEvent("onAfterDelete", function(id, item){
// 여기에 코드 작성
});
datastore의 onAfterDelete 이벤트는 Gantt의 onAfterTaskDelete 및 onAfterLinkDelete 이벤트에 대응됩니다.
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;
});
datastore의 onBeforeAdd 이벤트는 Gantt의 onBeforeTaskAdd 및 onBeforeLinkAdd 이벤트에 대응됩니다.
onAfterAdd (id, item) - datastore에 새 항목이 추가된 후 트리거됩니다.
- id - (string | number) - 항목의 id
- item - (object) - 항목 객체
var store = gantt.getDatastore(gantt.config.resource_store);
store.attachEvent("onAfterAdd", function(id, item){
// 여기에 코드 작성
});
datastore의 onAfterAdd 이벤트는 Gantt의 onAfterTaskAdd 및 onAfterLinkAdd 이벤트에 대응됩니다.
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){
// 여기에 코드 작성
});
datastore의 onIdChange 이벤트는 Gantt의 onTaskIdChange 이벤트에 대응됩니다.
onClearAll () - datastore의 모든 항목이 제거된 후 트리거됩니다.
var store = gantt.getDatastore(gantt.config.resource_store);
store.attachEvent("onClearAll", function(){
// 여기에 코드 작성
});
datastore의 onClearAll 이벤트는 Gantt의 onClear 이벤트에 대응됩니다.
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 () - 필터링 후 보이는 항목이 업데이트된 후 트리거됩니다.
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;
});
datastore 의 onFilterItem 이벤트는 Gantt의 onBeforeTaskDisplay 이벤트에 대응됩니다.
onDestroy () - datastore의 destructor() 메서드 호출 후 트리거됩니다.
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();