datastore

datastore 메서드 모음

object datastore;
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}
    ]);

    Related sample:  Resource load diagram

    datastore.parse()는 gantt.parse()를 보완합니다.
    onBeforeParse, onItemLoading, onParse, 그리고 onStoreUpdated 이벤트를 트리거합니다.
  • getItem (id): object | void - id로 항목을 조회합니다.
    • id - (string | number) - 항목의 id
  • 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
  • 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를 반환합니다.
  • 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를 비웁니다.
  • 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
  • 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의 모든 항목을 반환합니다.
  • 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의 onBeforeTaskUpdateonBeforeLinkUpdate 이벤트에 대응됩니다.
  • 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의 onAfterTaskUpdateonAfterLinkUpdate 이벤트에 대응됩니다.
  • 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의 onBeforeTaskDeleteonBeforeLinkDelete 이벤트에 대응됩니다.
  • 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의 onAfterTaskDeleteonAfterLinkDelete 이벤트에 대응됩니다.
  • 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의 onBeforeTaskAddonBeforeLinkAdd 이벤트에 대응됩니다.
  • 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의 onAfterTaskAddonAfterLinkAdd 이벤트에 대응됩니다.
  • 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();

See also
Back to top