필자는 Pentaho CDE 대시 보드에 테이블 구성 요소가 있으며 데이터 소스는 sql입니다. 나는 테이블 나는이 테이블과 열 머리글의 상단에 행에 대한 행 이름으로 열을 추가하기 위해 필요한이cde 테이블 구성 요소에 행 이름 추가
처럼 만들고 싶어. 여기에 메소드를 찾았습니다 : Table Component SubColumns 헤더를 추가하려면 어떻게해야합니까?하지만 다른 열 앞에 어떻게 열을 추가 할 수 있습니까?
필자는 Pentaho CDE 대시 보드에 테이블 구성 요소가 있으며 데이터 소스는 sql입니다. 나는 테이블 나는이 테이블과 열 머리글의 상단에 행에 대한 행 이름으로 열을 추가하기 위해 필요한이cde 테이블 구성 요소에 행 이름 추가
처럼 만들고 싶어. 여기에 메소드를 찾았습니다 : Table Component SubColumns 헤더를 추가하려면 어떻게해야합니까?하지만 다른 열 앞에 어떻게 열을 추가 할 수 있습니까?
추가 열 부분을 수행하는 영리한 방법은 쿼리 결과 개체를 쿼리에서 검색 한 다음 수정하여 필요에 따라 열과 행을 추가하는 것입니다. 당신은 첫 번째 인수로 쿼리 결과 개체 걸리는 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
가 작동하지 않음)를 변경하는 대신 현재 위치에서 업데이트되었는지 확인하지만 제안한 코드는 그 트릭을 수행해야합니다.