/jasperreports_js_modules

Модули для выполнения java script кода на веб-морде JasperReports Server

Primary LanguageJavaScript

Лицензия

Public domain, делайте с кодом что хотите, указание авторства не требуется

js_loader

Модуль для JasperReports Server, позволяющий исполнять js-код из отчётов

Как пользоваться:

  1. Скопировать файл min/jr.js_loader.js на сервер в папку tomcat\webapps\jasperserver\optimized-scripts
  2. Создать в отчёте элемент, который может быть гиперссылкой, например, Text Field или Image
  3. Указать параметры ссылки:
  • Link Target - Self
  • Link Type - js_loader
  1. Внизу войти в редактор параметров и добавить параметр code со значением, например, "alert('Hello, world!')". Обратите внимание - значения параметров вычисляются как java-выражения, то есть код нужно писать в двойных кавычках, в одну строку, и экранировать спецсимволы
  2. Загрузить отчёт на сервер
  3. Теперь при нажатии на ссылку будет выполняться код из параметра code
  4. Можно добавить и больше параметров, они будут доступны из кода из объекта params, например так: "alert(params.myparam)"

CHANGELOG:

  • 26.03.2020 Первая версия

copy_link

Модуль для JasperReports Server, позволяющий копировать ссылку на текущий отчёт с заполненными параметрами

Как пользоваться:

  1. Скопировать файл min/jr.copy_link.js на сервер в папку tomcat\webapps\jasperserver\optimized-scripts
  2. Создать в отчёте элемент, который может быть гиперссылкой, например, Text Field или Image
  3. Указать параметры ссылки:
  • Link Target - Self
  • Link Type - copy_link
  1. Внизу войти в редактор параметров и добавить параметр parameters со значением:
((java.util.concurrent.Callable)(() -> {
    Map<String, Object> map = $P{REPORT_PARAMETERS_MAP};
    Map result = new HashMap<String, Object>();
    for (Map.Entry<String, Object> entry : map.entrySet()) {
        String s = entry.getKey();
        // сюда можно написать названия параметров, которые надо проигнорировать
        // if (s.matches("name1|name2|name3")) {
        //      continue;
        // }
        for (int i = 0; i < s.length(); ++i) {
            char c = s.charAt(i);
            if (!(java.lang.Character.isUpperCase(c) || c == '_')) {
                result.put(entry.getKey(), entry.getValue());
            }
        }
    }
    return com.google.common.net.UrlEscapers.urlFragmentEscaper().escape(
        (new org.json.JSONObject(result)).toString()
    );
})).call()

Этот код передаст модулю все параметры, заданные пользователем, в виде json с экранированием спец-символов. Все стандартные джасперовские параметры записываются большими буквами, так что так мы можем отличить их от наших параметров и выкинуть из json. Если нужно выкинуть ещё какие-нибудь параметры, раскаментируйте блок if и впишите туда названия параметров через |

  1. Загрузить отчёт на сервер
  2. Теперь при нажатии на ссылку, в буфер обмена будет копироваться ссылка на текущий отчёт с текущими параметрами. Параметры, которые не заданы (т.е. равны null), или содержащие только пробелы, будут проигнорированы
  3. Опционально - можно добавить вывод сообщения "Ссылка скопирована!". Для этого в редакторе параметров добавьте параметр doAlert со значением true

CHANGELOG:

  • 26.03.2020 Первая версия