IcCube — доступ к коду отчета с помощью Javascript

Когда я редактирую отчет, я могу щелкнуть «Код отчета», чтобы просмотреть информацию о структуре отчета. Это выглядит так:

{
"classID": "ic3.ReportGuts",
"guts_": {
    "ic3Version": 12,
    "schemaName": "test_schema",
    "cubeName": "Cube",
    "layout": {
        "classID": "ic3.FixedLayout",
        "guts_": {
            "ic3Version": 12,
            "grid": 10,
            "boxes": [
                {
                    "classID": "ic3.FixedLayoutBox",
                    "guts_": {
                        "ic3Version":...

Как я могу получить доступ к этой информации с помощью Javascript? context.$report явно не дает этой информации.

Также есть ли способ получить информацию о том, какие операторы MDX используются в разных диаграммах отчета? И можно ли это изменить с помощью Javascript?


person UlrichWuenstel    schedule 22.07.2016    source источник


Ответы (1)


Чтобы получить внутренности отчета, добавьте этот код в Код отчета:

function consumeEvent( context, event ) {                                
  if (event.name == 'ic3-report-init') {                                 
    console.log(event.value.state.report);
  }                                                                      
}

Что касается обработки запроса mdx перед отправкой, это немного сложнее. Снова в ReportCode:

function consumeEvent( context, event ) {                                
   if (event.name == 'ic3-report-init') {       
    event.value.widgetMgr().forEach(function(idx,item){
        if(item.hasOwnProperty('onVizBeforeRequestSend')){
            return;
        }

        var oldMethod = item.onVizBeforeRequestSend.bind(item);
        item.onVizBeforeRequestSend = function(request){
            console.log(item, request);
            oldMethod(request);
        }
    });
}

В этом функциональном элементе находится widgetAdapter с информацией о виджете, а запрос является экземпляром запроса.

person Artem Lopatiy    schedule 22.07.2016
comment
1. Javascript говорит мне, что значение event.value не определено. если я использую console.log(event), я получаю только Object{type:null,name:ic3-report-init,value:undefined} 2. Откуда вы берете свои знания. Есть ли текст, который я могу прочитать, чтобы узнать больше о таких вещах? - person UlrichWuenstel; 22.07.2016
comment
@UlrichWuenstel Какую версию отчетности вы используете? - person Artem Lopatiy; 25.07.2016
comment
У меня работает на версии 5.2 (2997): demo3.iccube.com /icCube/doc/tutorial/ Нажмите «Изменить отчет» внизу страницы и попробуйте первый блок кода. - person Artem Lopatiy; 25.07.2016
comment
Да, вы правы, там это работает. Теперь мне нужно выяснить, почему это не работает в нашей настройке ^^ - person UlrichWuenstel; 25.07.2016
comment
Я установил новый экземпляр IcCube, и все заработало. Это меняет правила игры :) - person UlrichWuenstel; 28.07.2016