2016-06-27 3 views
0

필자는 Pentaho CDE 대시 보드에 테이블 구성 요소가 있으며 데이터 소스는 sql입니다. 나는 테이블 나는이 테이블과 열 머리글의 상단에 행에 대한 행 이름으로 열을 추가하기 위해 필요한이cde 테이블 구성 요소에 행 이름 추가

enter image description here

처럼 만들고 싶어. 여기에 메소드를 찾았습니다 : Table Component SubColumns 헤더를 추가하려면 어떻게해야합니까?하지만 다른 열 앞에 어떻게 열을 추가 할 수 있습니까?

답변

0

추가 열 부분을 수행하는 영리한 방법은 쿼리 결과 개체를 쿼리에서 검색 한 다음 수정하여 필요에 따라 열과 행을 추가하는 것입니다. 당신은 첫 번째 인수로 쿼리 결과 개체 걸리는 PostFetch 콜백 함수에서이 작업을 수행 할 수 있습니다

function yourTableComponentPostFetch(queryResult) { 
    // Let's say you have an array of row names 
    var rowNames = ['Title1', 'Title2', ... ]; 

    // Add a "title" column for every row 
    queryResult.resultset.forEach(function (row, idx) { 
     // Push it at the beginning of the row array 
     row.unshift(rowNames[idx]); 
    }); 

    // Change metadata description of columns to reflect this new structure 
    queryResult.metadata.unshift({ 
     colName: 'Title', 
     colIndex: -1, // this makes sense when reindexing columns below ;) 
     colType: 'String' 
    }); 

    // One last re-indexing of metadata column descriptions 
    queryResult.metadata.forEach(function (column, idx) { 
     // The title added column will be 0, and the rest will rearrange 
     column.colIndex++; 
    }); 
} 

유일한 까다로운 부분이 효과적으로 데이터 세트의 구조를 변경하기 때문에 메타 데이터를 수정하는 방법에 대한 부분입니다, 그리고 queryResult 객체가 해당 참조 (queryResult = myNewQueryResult가 작동하지 않음)를 변경하는 대신 현재 위치에서 업데이트되었는지 확인하지만 제안한 코드는 그 트릭을 수행해야합니다.

관련 문제