Вы можете получить данные, проанализировав гиперкуб этого отчета, а затем нарисовать его самостоятельно.
Это будет включать: Доступ к гиперкубу в вашем расширении.Получить размеры и меры гиперкуба.Цикл по рисованию данных в функции рисования.
В исходном JS вы можете определить, сколько гиперкубов вы хотите получить изначально:
initialProperties: {
qHyperCubeDef: {
qDimensions: [],
qMeasures: [],
qInitialDataFetch: [{
qWidth: 24,
qHeight: 400
}]
}
},
Затем в вашем коде вы можете анализироватьгиперкуб и использовать его содержимое для рисования таблиц (просто подтверждение концепции), перегружая функцию рисования:
paint: function ($element, layout) {
var lastrow = 0;
var numDimensions = self.backendApi.getDimensionInfos().length;
var numMeasures = self.backendApi.getMeasureInfos().length;
// This will be your table header
for (var i = 0; i < self.backendApi.getDimensionInfos().length; i++) {
html += self.backendApi.getDimensionInfos()[i].qFallbackTitle;
}
self.backendApi.getMeasureInfos().forEach(function (cell) {
html += cell.qFallbackTitle';
});
// this will be your table rows
this.backendApi.eachDataRow(function (rownum, row) {
lastrow = rownum;
for (var i = 0; i < row.length; i++) {
if (row[i].qIsOtherCell) {
row[i].qText = self.backendApi.getDimensionInfos()[i].othersLabel;
}
if( row[i].qText !== undefined ){
output_string = row[i].qText;
}
html += output_string ;
}
}
$element.html(html);
// there may be more data after that initial fecth
// request more data until hypercube data ends
if (this.backendApi.getRowCount() > lastrow + 1) {
var requestPage = [{
qTop: lastrow + 1,
qLeft: 0,
qWidth: 24,
qHeight: Math.min(500, this.backendApi.getRowCount() - lastrow)
}];
self.backendApi.getData(requestPage).then(function () {
self.paint($element);
});
}
}
На самом деле важная часть: вы можете получить доступ к данным, загрузив гиперкубиспользуется для создания этого отчета .
Изучите это, и все будет готово.
Надеюсь, это поможет.