Spec-Zone.ru › Wagtail 3

Блок таблицы

Модуль TableBlock предоставляет тип блока HTML-таблицы для StreamField. Этот модуль использует handsontable 6.2.2 для предоставления пользователям возможности создания и редактирования HTML-таблиц в Wagtail. Блоки таблиц предоставляют поле подписи для обеспечения доступности.

../../_images/screen40_table_block.png

Установка

Добавьте "wagtail.contrib.table_block" в ваш INSTALLED_APPS:

INSTALLED_APPS = [
  ...

  "wagtail.contrib.table_block",
]

Базовое использование

После установки модуль TableBlock может использоваться аналогично другим блокам StreamField в ядре Wagtail.

Импортируйте блок TableBlock from wagtail.contrib.table_block.blocks import TableBlock и добавьте его в объявление вашего StreamField.

class DemoStreamBlock(StreamBlock):
    ...
    table = TableBlock()

Затем, в шаблоне вашей страницы, тег {% include_block %} (вызываемый либо на отдельном блоке, либо на значении StreamField в целом) будет отображать все встречающиеся блоки таблиц в виде HTML-элемента <table>:

{% load wagtailcore_tags %}

{% include_block page.body %}

Или:

{% load wagtailcore_tags %}

{% for block in page.body %}
    {% if block.block_type == 'table' %}
        {% include_block block %}
    {% else %}
        {# rendering for other block types #}
    {% endif %}
{% endfor %}

Расширенное использование

Настройка по умолчанию

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

default_table_options = {
    'minSpareRows': 0,
    'startRows': 3,
    'startCols': 3,
    'colHeaders': False,
    'rowHeaders': False,
    'contextMenu': [
        'row_above',
        'row_below',
        '---------',
        'col_left',
        'col_right',
        '---------',
        'remove_row',
        'remove_col',
        '---------',
        'undo',
        'redo'
    ],
    'editor': 'text',
    'stretchH': 'all',
    'height': 108,
    'language': language,
    'renderer': 'text',
    'autoColumnSize': False,
}

Параметры настройки

Каждый ключ в table_options словаре соответствует опции handsontable. Эти параметры могут быть изменены для изменения поведения таблиц в Wagtail. Доступны следующие параметры:

  • minSpareRows - Количество строк, добавляемых в конец пустой сетки. Значение по умолчанию равно 0.
  • startRows - Стандартное количество строк для новой таблицы.
  • startCols - Стандартное количество столбцов для новых таблиц.
  • colHeaders - Может быть установлен в True или False. Этот параметр определяет, должны ли новые таблицы создаваться со столбцами заголовков. Примечание: это только устанавливает поведение для вновь созданных таблиц. Редакторы страниц могут переопределить это, установив флажок «Заголовок столбца» в редакторе таблицы в административной панели Wagtail.
  • rowHeaders - Действует аналогично colHeaders для определения, должны ли новые таблицы создаваться с первым столбцом в качестве заголовка строки. Также, как и colHeaders, этот параметр может быть переопределен редактором страницы в административной панели Wagtail.
  • contextMenu - Включает или отключает контекстное меню Handsontable. По умолчанию установлен в True. В качестве альтернативы, можно предоставить список или словарь со [специфическими параметрами](https://handsontable.com/docs/6.2.2/demo-context-menu.html#page-specific).
  • editor - Определяет редактор, используемый для ячеек таблицы. Значение по умолчанию — текст.
  • stretchH - Устанавливает стандартное горизонтальное изменение размера таблиц. Доступны значения «none», «last» и «all». По умолчанию TableBlock использует «all» для равномерного изменения размера столбцов.
  • height - Стандартная высота сетки. По умолчанию TableBlock устанавливает высоту в 108 для оптимального отображения новых таблиц в редакторе. Это оптимизировано для таблиц с startRows установленным в 3. Если вы измените количество startRows в настройках, возможно, вам потребуется изменить значение height для улучшения стандартного отображения в редакторе.
  • language - Стандартное значение языка. По умолчанию TableBlock пытается получить язык из django.utils.translation.get_language. При необходимости это значение можно переопределить здесь.
  • renderer - Стандартное значение, используемое Handsontable для отображения содержимого ячеек таблицы.
  • autoColumnSize - Включает или выключает плагин autoColumnSize. Значение по умолчанию в TableBlock — False.

Полный список параметров handsontable можно найти на сайте Handsontable.

Изменение параметров таблицы по умолчанию

Чтобы изменить параметры таблицы по умолчанию, просто передайте новый словарь table_options при объявлении нового TableBlock.

new_table_options = {
    'minSpareRows': 0,
    'startRows': 6,
    'startCols': 4,
    'colHeaders': False,
    'rowHeaders': False,
    'contextMenu': True,
    'editor': 'text',
    'stretchH': 'all',
    'height': 216,
    'language': 'en',
    'renderer': 'text',
    'autoColumnSize': False,
}

class DemoStreamBlock(StreamBlock):
    ...
    table = TableBlock(table_options=new_table_options)

Поддержка выравнивания ячеек

Вы можете активировать параметр alignment , установив пользовательский contextMenu, который позволяет задать выравнивание при выборе ячейки. HTML-классы, установленные handsontable, будут сохранены в отрисованном блоке. Тогда вы сможете применять свои собственные пользовательские правила CSS для сохранения стиля. Эти имена классов:

  • Горизонтальное: htLeft, htCenter, htRight, htJustify
  • Вертикальное: htTop, htMiddle, htBottom
new_table_options = {
    'contextMenu': [
        'row_above',
        'row_below',
        '---------',
        'col_left',
        'col_right',
        '---------',
        'remove_row',
        'remove_col',
        '---------',
        'undo',
        'redo',
        '---------',
        'copy',
        'cut'
        '---------',
        'alignment',
    ],
}

  class DemoStreamBlock(StreamBlock):
      ...
      table = TableBlock(table_options=new_table_options)

© 2014-present Torchbox Ltd and individual contributors.
All rights are reserved.
Licensed under the BSD License.
https://docs.wagtail.org/en/v3.0.3/reference/contrib/table_block.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API