Различия между версиями 5 и 6
Версия 5 от 2010-07-13 09:44:40
Размер: 4131
Редактор: RostislavDzinko
Комментарий:
Версия 6 от 2010-07-13 09:46:10
Размер: 4367
Редактор: RostislavDzinko
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 25: Строка 25:
Tables are often used to display normalized bits of data. For example, we might want to display information about files in a folder. Each file has a title, a size and a file type. Our table would then have a row for each file and a column for each normalized bit of data about the file (title, size, and type). Thus the context of a table is always some iterable data structure that represents the rows of the table. Let’s create a sample folder that we can use as our iterable context: Таблицы часто используются для отображения нормализованных порций данных. Например, нам необходимо отобразить информацию о файлах в папке. Каждый файл имеет заголовок, размер и тип. Наша таблица должна иметь строку для каждого файла и столбец для этих трех полей данных (заголовка, размера, и типа). Thus the context of a table is always some iterable data structure that represents the rows of the table. Let’s create a sample folder that we can use as our iterable context:

z3c.table - продвинутые таблицы

Z3C Table

Цель, которую преследует пакет z3c.table - предложить модульную библиотеку для отрисовки таблиц. Мы используем шаблон "контент провайдер" с колонками, реализованными как адаптеры. Такой подход - мощная базовая концепция.

Важные требования

  • разделение реализации в обновлении частей отрисовки. Такой подход позволяет манипулировать данными после обновления, и перед отрисовкой.
  • мы можем использовать шаблоны страниц, если потребуется, но, по умолчанию, все делается в Python.
  • мы может отрисовывать порционную навигацию отдельно от самой таблицы.

Никаких скинов

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

Заметка

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

Пример установки данных

Таблицы часто используются для отображения нормализованных порций данных. Например, нам необходимо отобразить информацию о файлах в папке. Каждый файл имеет заголовок, размер и тип. Наша таблица должна иметь строку для каждого файла и столбец для этих трех полей данных (заголовка, размера, и типа). Thus the context of a table is always some iterable data structure that represents the rows of the table. Let’s create a sample folder that we can use as our iterable context:

   1 >>> from zope.app.container import btree
   2 >>> class Folder(btree.BTreeContainer):
   3 ...     """Sample folder."""
   4 ...     __name__ = u'folder'
   5 >>> folder = Folder()

XXX: not sure we need to put the folder anywhere yet. Nor do we need to give it a name value. We shouldn’t need to locate it. and set a parent for the folder:

   1 >>> root['folder'] = folder

Now we will create a sample File object to store in our folders.

   1 >>> class File(object):
   2 ...     """Sample file."""
   3 ...     def __init__(self, title, size, type=None):
   4 ...         self.title = title
   5 ...         self.number = size
   6 ...         self.type = type

Now we’ll go ahead and set up our folder with some files.

   1 >>> folder[u'first'] = File('First', 1)
   2 >>> folder[u'second'] = File('Second', 2)
   3 >>> folder[u'third'] = File('Third', 3)

Пакеты/ZopePlone/Z3cTable (последним исправлял пользователь RostislavDzinko 2010-07-14 12:32:54)