Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.
Комментарий: Published by Scroll Versions from space PDUG and version 1.36.1

Общие сведения

HTML-компонент позволяет отображать на слое уникальную визуализацию данных из датасета, сформированную с использованием языков HTML и JavaScript.

Чтобы добавить на слой проекта HTML-компонент, нажмите на плавающей панели редактирования проекта на кнопку .


Scroll Title
title-alignmentcenter
titleКнопка редактора HTML на панели редактирования проекта


По нажатию кнопки открывается страница редактора HTML-компонента.


Scroll Title
title-alignmentcenter
titleСтраница редактора HTML-компонента

Структура редактора

В левой части страницы расположена область редактора кода. Редактор служит для обращения к данным, получаемым из датасета, применения форматирования колонок из настройки датасета, и описания оформления с использованием языков HTML и JavaScript.

Под областью редактора кода находится область предпросмотра. В области отображается возвращаемый редактором результат. Чтобы показать или скрыть его, используйте переключатель "Превью" справа от области. Когда область предпросмотра скрыта, область редактора кода занимает всю левую часть страницы.

В правой части страницы находится область настройки данных. Область служит для получения данных из датасета. Полученные данные используются в редакторе кода. Получать данные можно в агрегированном виде или таблицей.

Получение данных

Получать данные можно в агрегированном виде или таблицей.

Таблица

Чтобы получать данные в виде одномерной таблицы, как они хранятся в датасете, переключите селектор в области настройки данных на радиокнопку "Таблица".

Далее найдите или выберите в поле "Датасет" датасет, из которого требуется получать данные. Вынесите колонку датасета в поле "Столбцы". Сразу после вынесения колонки справа внизу страницы, в области "Переменная контекста", отобразится пример получаемых данных в формате JSON.


Scroll Title
title-alignmentcenter
titleОбласть "Переменная контекста" отображает данные в виде простой таблицы


Полное содержание полученных данных из примера представлено ниже.

Блок кода
titleПолное содержание полученных данных
linenumberstrue
collapsetrue
{
  "data": {
    "rows": [
      {
        "1": "Краснодарский край"
      },
      "..."
    ],
    "columns": [
      {
        "key": "1",
        "column": {
          "name": "Лидеры сельхозпроизводства",
          "field_type": "string",
          "base_type": 0,
          "formatter": {
            "prefix": "",
            "suffix": "",
            "digit_capacity": 2,
            "digit_capacity_enabled": true,
            "digits_separate_type": 0,
            "separate_digits": false,
            "text_view_type": 0,
            "bool_true_format": "true",
            "bool_false_format": "false",
            "date_format": {
              "format_type": "date_time",
              "settings": [
                {
                  "type": "year",
                  "value": "xl",
                  "suffix": "-"
                },
                {
                  "type": "month",
                  "value": "m",
                  "suffix": "-"
                },
                {
                  "type": "day",
                  "value": "m",
                  "suffix": " "
                },
                {
                  "type": "hour",
                  "value": "m",
                  "suffix": ":"
                },
                {
                  "type": "minute",
                  "value": "m",
                  "suffix": ":"
                },
                {
                  "type": "second",
                  "value": "m",
                  "suffix": ""
                }
              ]
            },
            "null_format": ""
          }
        }
      }
    ],
    "total": 10
  }
}

где data - данные датасета;

      rows - нумерованные строки датасета, - обратите внимание, что отображается только первая строка, остальные строки подразумеваются под многоточием;

      columns - свойства и настройка форматирования колонки, заданная в настройках датасета;

      key - номер колонки в JSON;

      name, field_type, base_type - свойства колонки;

      formatter - настройка форматирования колонки;

      prefix, suffix, digit_capacity, digit_capacity_enabled, digits_separate_type, separate_digits, text_view_type, bool_format, date_format, null_format - параметры настройки форматирования;

      total - количество отобранных записей из колонки датасета.

Агрегированные данные

Чтобы получать агрегированные данные, переключите селектор в области настройки данных на радиокнопку "Агрегированные данные".

Далее найдите или выберите в поле "Датасет" датасет, из которого требуется получать данные. Выбрав датасет, вынесите в поле "Группы" колонки датасета, по значениям которых требуется группировать агрегированные результаты, а в поле "Агрегат" - колонки, по которым требуется получать агрегированные результаты. Сразу после выноса колонок справа внизу страницы, в области "Переменная контекста", отобразятся полученные данные в формате JSON.


Scroll Title
title-alignmentcenter
titleОбласть "Переменная контекста" отображает агрегированные данные


Полное содержание полученных данных из примера представлено ниже.

Блок кода
titleПолное содержание полученных данных
linenumberstrue
collapsetrue
{
  "data": {
    "rows": [
      {
        "1": "Орловская область",
        "2": "Сахарная свёкла",
        "3": 79800
      },
      "..."
    ],
    "columns": [
      {
        "key": "1",
        "column": {
          "name": "Лидеры сельхозпроизводства",
          "field_type": "string",
          "base_type": 0,
          "formatter": {
            "prefix": "",
            "suffix": "",
            "digit_capacity": 2,
            "digit_capacity_enabled": true,
            "digits_separate_type": 0,
            "separate_digits": false,
            "text_view_type": 0,
            "bool_true_format": "true",
            "bool_false_format": "false",
            "date_format": {
              "format_type": "date_time",
              "settings": [
                {
                  "type": "year",
                  "value": "xl",
                  "suffix": "-"
                },
                {
                  "type": "month",
                  "value": "m",
                  "suffix": "-"
                },
                {
                  "type": "day",
                  "value": "m",
                  "suffix": " "
                },
                {
                  "type": "hour",
                  "value": "m",
                  "suffix": ":"
                },
                {
                  "type": "minute",
                  "value": "m",
                  "suffix": ":"
                },
                {
                  "type": "second",
                  "value": "m",
                  "suffix": ""
                }
              ]
            },
            "null_format": ""
          }
        }
      },
      {
        "key": "2",
        "column": {
          "name": "Крупнейший тип продукции",
          "field_type": "string",
          "base_type": 0,
          "formatter": {
            "prefix": "",
            "suffix": "",
            "digit_capacity": 2,
            "digit_capacity_enabled": true,
            "digits_separate_type": 0,
            "separate_digits": false,
            "text_view_type": 0,
            "bool_true_format": "true",
            "bool_false_format": "false",
            "date_format": {
              "format_type": "date_time",
              "settings": [
                {
                  "type": "year",
                  "value": "xl",
                  "suffix": "-"
                },
                {
                  "type": "month",
                  "value": "m",
                  "suffix": "-"
                },
                {
                  "type": "day",
                  "value": "m",
                  "suffix": " "
                },
                {
                  "type": "hour",
                  "value": "m",
                  "suffix": ":"
                },
                {
                  "type": "minute",
                  "value": "m",
                  "suffix": ":"
                },
                {
                  "type": "second",
                  "value": "m",
                  "suffix": ""
                }
              ]
            },
            "null_format": ""
          }
        }
      },
      {
        "key": "3",
        "column": {
          "name": "Объем производства, т",
          "field_type": "int64",
          "base_type": 1,
          "formatter": {
            "prefix": "",
            "suffix": "",
            "digit_capacity": 2,
            "digit_capacity_enabled": true,
            "digits_separate_type": 0,
            "separate_digits": false,
            "text_view_type": 0,
            "bool_true_format": "true",
            "bool_false_format": "false",
            "date_format": {
              "format_type": "date_time",
              "settings": [
                {
                  "type": "year",
                  "value": "xl",
                  "suffix": "-"
                },
                {
                  "type": "month",
                  "value": "m",
                  "suffix": "-"
                },
                {
                  "type": "day",
                  "value": "m",
                  "suffix": " "
                },
                {
                  "type": "hour",
                  "value": "m",
                  "suffix": ":"
                },
                {
                  "type": "minute",
                  "value": "m",
                  "suffix": ":"
                },
                {
                  "type": "second",
                  "value": "m",
                  "suffix": ""
                }
              ]
            },
            "null_format": ""
          }
        }
      }
    ],
    "total": 10
  }
}

где data - данные датасета;

      rows - строки датасета, - обратите внимание, что в данных показана только первая строка датасета, остальные строки подразумеваются под многоточием, а количество возвращенных строк можно видеть в ключе "total";

      1-3 - нумерация колонок датасета в JSON, - колонки нумеруются в том порядке, как они вынесены из датасета в поля "Группы" и "Агрегат";

      columns - свойства и настройка форматирования колонки, заданные в настройках датасета;

      key - номер колонки в JSON, в rows;

      name, field_type, base_type - свойства колонки;

      formatter - настройка форматирования колонки;

      prefix, suffix, digit_capacity, digit_capacity_enabled, digits_separate_type, separate_digits, text_view_type, bool_format, date_format, null_format - параметры настройки форматирования.

Область настройки данных

Выпадающий список "Датасет"

Для выбора необходимого датасета нужно ввести название в поисковое поле и выбрать нужный датасет. После выбора датасета в списке в левой части области настройки данных отображаются колонки выбранного датасета:

Scroll Title
title-alignmentcenter
titleВыбор датасета


Область настройки данных для типа получения данных "Таблица"

Поле "Столбцы"

Количество добавляемых колонок в поле - без ограничений. 

Для добавления колонки в поле следует "перетащить" необходимую колонку в поле. Из выбранных колонок будут извлекаться данные.

Для удаления колонки из поля необходимо нажать на кнопку .


Поле "Сортировка"

Для добавления колонки в поле следует "перетащить" необходимую колонку в поле. По выбранной колонке будут сортироваться данные.

Доступна множественная сортировка данных. Множественная сортировка учитывает порядок вынесенных колонок. Верхняя вынесенная колонка является первым уровнем сортировки.

Для вынесенной колонки можно выбрать метод агрегации (см. Создание виджета - Агрегация) и направление сортировки (по умолчанию - по убыванию).

Для удаления колонки из поля необходимо нажать на кнопку .


Поле "Количество записей на странице"

Параметр ограничивает количество записей, извлекаемых из датасета для отрисовки.


Локальные фильтры

Для ограничения данных датасета можно воспользоваться локальным фильтром, см. Работа с локальным фильтром.


Scroll Title
title-alignmentcenter
titleОбласть настройки данных для типа "Таблица"


Область настройки данных для типа получения данных "Агрегат"

Поле "Группы"

Количество добавляемых колонок в поле - без ограничений. 

Для добавления колонки в поле следует "перетащить" необходимую колонку в поле. По выбранным колонкам будут группироваться данные, извлекаемые из датасета.

Для удаления колонки из поля необходимо нажать на кнопку .


Поле "Агрегат"

Количество добавляемых колонок в поле - без ограничений. 

Для добавления колонки в поле следует "перетащить" необходимую колонку в поле. По выбранным колонкам будут агрегироваться данные, извлекаемые из датасета.

Для удаления колонки из поля необходимо нажать на кнопку .


Поле "Сортировка"

Для добавления колонки в поле следует "перетащить" необходимую колонку в поле. По выбранной колонке будут сортироваться данные.

Доступна множественная сортировка данных. Множественная сортировка учитывает порядок вынесенных колонок. Верхняя вынесенная колонка является первым уровнем сортировки.

Для вынесенной колонки можно выбрать метод агрегации (см. Создание виджета - Агрегация) и направление сортировки (по умолчанию - по убыванию).

Для удаления колонки из поля необходимо нажать на кнопку .


Поле "Количество записей на странице"

Параметр ограничивает количество записей, извлекаемых из датасета для отрисовки.


Локальные фильтры

Для ограничения данных датасета можно воспользоваться локальным фильтром, см. Работа с локальным фильтром.


Scroll Title
title-alignmentcenter
titleОбласть настройки данных для типа "Агрегированные данные"

Использование данных в редакторе

Для обращения к полученным данным используйте скобочную нотацию.

Использование значений

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

Блок кода
{{data["rows"][1]["2"]}}

Для примера с таблицей код вернет значение "Рожь", а для примера с агрегатом - значение "Кукуруза".

Чтобы получить количество возвращенных строк датасета, используйте код:

Блок кода
{{data["total"]}}

В обоих случаях вернется значение 10, т. к. датасет содержит по 10 записей в каждой колонке.

Использование форматирования

Чтобы применить к колонке форматирование, заданное для колонки в настройках датасета, используйте код:

Блок кода
{{data["rows"][1]["2"] | columnFormat('1')}}

где '1' - номер колонки, от которой требуется взять параметры форматирования. Обратите внимание, что настройку форматирования можно применять только к колонке с соответствующим типом данных. Так, следующий код не применит форматирование, так как третья колонка JSON из примера с агрегатом содержит данные с типом "число":

Блок кода
{{data["rows"][1]["2"] | columnFormat('3')}}

Пример. HTML-код

Для примера выберет тип получения данных "Таблица" и вынесем датасет "Сельское хозяйство". Далее вынесем колонки в "Группы". Для создания компонента нужно воспользоваться HTML-редактором. Для примера, введем следующий код:


Scroll Title
title-alignmentcenter
titleПример. HTML-код



Раскрыть
titleHTML-код, указанный в примере
Блок кода
languagexml
<style>
  table {
  table-layout: fixed;
  width: 100%;
 }

td {
  border: 3px solid purple;
  border-collapse: collapse;
  padding: 20px;
}
</style>
<table>
  {% for item in data.rows %}
  <tr>
    <td>{{item ['1'] | columnFormat(1)}}</td>
    <td>{{item ['2']}}</td>
    <td>{{item ['3']}}</td>
  </tr>
  {% endfor %}
</table>


После ввода кода, снизу отображается превью HTML-компонента, заполненного данными датасета. Для сохранения введенного кода необходимо нажать на кнопку "Сохранить". Созданный компонент отобразится в проекте:


Scroll Title
title-alignmentcenter
titleОтображение компонента после ввода HTML-кода

График-фильтр по HTML-компоненту

HTML-компонент, для возможности его использования в качестве график-фильтра, должен обрабатывать события нажатия курсором.

В коде HTML-компонента используйте встроенную функцию

Блок кода
languagejs
HTMLFilter()

в которую по нажатию элемента HTML-компонента необходимо передавать значение этого элемента.

Функцию можно вызывать по нажатию разнотипных элементов, однако в график-фильтре для HTML-компонента предусмотрена фильтрация только по одной колонке датасета (см. График-фильтр).

Пример использования функции график-фильтра в коде HTML-компонента


Scroll Title
title-alignmentcenter
titleНастройки HTML-компонента

Пример кода

Блок кода
languagexml
titleКод компонента
linenumberstrue
collapsetrue
<HTML>
  <head>
    <title>Кнопки с текстом</title>
    <style>
      .button {
        margin: 5px;
        width: 150px;
        height: 50px;
      }
    </style>
  </head>
  <body>
    <div id="buttonsContainer"></div>
    <script>
      (function() {
        const rawData = JSON.parse('{{ data | dump | safe }}');
        var input = rawData.rows;
        var values = Array.from(new Set(input.flatMap(obj => Object.values(obj).filter(value => typeof value === 'string'))));
        var buttonsContainer = document.getElementById('buttonsContainer');
        for (var i = 0; i < values.length; i++) {
          var button = document.createElement('button');
          button.innerHTML = values[i];
          button.className = 'button';
          button.addEventListener('click', handleClick); // Добавление обработчика события нажатия
          buttonsContainer.appendChild(button);
        }
        function handleClick(event) {
          var clickedButton = event.target;
          var value = clickedButton.innerHTML;           
			HTMLFilter(value); // Вызов встроенной функции HTMLFilter()
        }
      })();
    </script>
  </body>
</HTML>

Сохранение

Для выполнения сохранения всех настроек следует нажать на кнопку "Сохранить". После нажатия на кнопку, все настройки которые были сделаны в HTML-редакторе, отобразятся в проекте.

Для закрытия HTML-редактора необходимо нажать на кнопку  . После нажатия на кнопку окно создания закроется и будет осуществлен переход на страницу с проектом в режиме редактирования.

Easy Heading Macro
headingIndent0
expandOptiondisable-expand-collapse
navigationTitleНа этой странице
wrapNavigationTexttrue
navigationExpandOptioncollapse-all-but-headings-1