Spec-Zone.ru › Wagtail

Таблица блока

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

The TableBlock component in StreamField, with row header, column header, caption fields - and then the editable table

Установка

Добавьте "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 admin.
  • rowHeaders - Работает аналогично colHeaders, чтобы указать, должны ли создаваться новые таблицы с первым столбцом в качестве заголовка строки. Как и colHeaders, этот параметр может быть переопределён редактором страницы в Wagtail admin.
  • contextMenu - Включает или отключает контекстное меню Handsontable. По умолчанию установлено на True. В качестве альтернативы можно указать список или словарь со конкретными параметрами.
  • 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/stable/reference/contrib/table_block.html

Spec-Zone.ru

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