Страница 1 из 1

StiMvcViewer: кастомизация отчета после GetReportSnapshot

Добавлено: 22 июл 2015, 12:02
DmitryRu
Мы используем StiMvcViewer версии 2015.1.11
В приложении один .cshtml файл предназначен для отображения всех отчетов приложения.
Как известно, отчет строится, грубо говоря, двумя Http запросами.
Первый запрос возвращает HTML разметку, второй запрашивает JSON для отображения данных.
Мне не хотелось бы производить создание объекта StiReport в момент первого запроса, дело в том, что определения отчетов (.mrt файлы) лежат в СУБД, и каждый лишний запрос стараемся урезать.
Т.е., создание объекта StiReport происходит во время второго HTTP запроса, по адресу GetReportSnapshot.
Но проблема в том, что заголовок странички, <title>, создается в момент первого HTTP запроса. Потому я не могу в заголовке написать корректное название отчета - название будет известно, только после создания объекта StiReport, при вызове функции GetReportSnapshot.

Есть ли возможность кастомизировать Javascript таким образом, чтобы после получения ответа на GetReportSnapshot была вызвана некая моя Javascript функция, которая бы кастомизировала HTML страничку? И как бы эта функция еще бы могла получить информацию, которая пришла с сервера....

Спасибо.

Re: StiMvcViewer: кастомизация отчета после GetReportSnapsho

Добавлено: 22 июл 2015, 20:15
DmitryRu
Вариант решения озвученной проблемы нашелся.
Ведь все отчеты при первом построении сохраняются в виде .dll на диске, потому, русскоязычное название отчета можно будет выдернуть путем создания StiReport из этой .dll, это не займет много ресурсов и не потребует дополнительного SQL запроса.
Однако вопрос о том, где бы почитать документацию о расширении javascript на стороне StiMvcViewer, остается.
Например, есть еще такой запрос:
надо замерять время, потраченное на построение отчета, на стороне клиента,
т.е. по завершению вызова GetReportSnapshot надо замерить время, прошедшее с момента события document.ready. Речь о вычислениях на стороне HTML странички в браузере.

Re: StiMvcViewer: кастомизация отчета после GetReportSnapsho

Добавлено: 23 июл 2015, 09:38
Vladimir
Здравствуйте Дмитрий,

Попробуйте разместить следующий Javascript-код на странице вьювера (после компонента MvcViewer):

Код: Выделить всё

<script type="text/jscript">
    jsMvcViewer.showError = function (text) {
        if (text != null && text.substr(0, 6) == "Error:") {
            if (text.length == 7) text += "Undefined";
            alert(text);
            return true;
        }

        var answer = JSON.parse(text);
        if (answer.reportFileName) document.title = answer.reportFileName;

        return false;
    }
</script>
Функция showError(text) вызывается при ответе сервера для проверки наличия ошибок, которые могут приходить в качестве ответа. При первом запросе вьюверу отправляются некоторые параметры отчета, один из которых - имя отчета.

Спасибо.