🔡

ListView - Список/Таблица

new ListView(parent)

Конструктор принимает указатель на DOM-элемент родитель, в который должен встроиться экземпляр списка. Указатель на родителя и указатель на элемент-контейнер списка запоминаются на экземпляр как this.parent и this.el.

Методы экземпляра

.render()

Строит все элементы списка в родителе из предоставленных данных согласно текущему режиму отображения, фильтрации, сортировке и прочим настройкам вывода, установленным остальными методами.

.useData(items)

Принимает и запоминает данные для вывода. Значения свойств объектов могут быть в формате html-строки, и в таком случае они вставляются в соответствующие ячейки с учётом результирующей разметки.

.getData()

Возвращает последние данные, предоставленные списку для вывода.

.getListedData()

Возвращает данные, прошедшие фильтрацию и сортировку.

.filter(testFn)

Принимает и запоминает функцию для фильтрации данных для вывода.

.sort(compareFn)

Принимает и запоминает функцию для сортировки данных для вывода.

.reverseSort(on)

Принимает true / false, чтобы включить / выключить обратную сортировку.

.isReversed()

Возвращает true / false, если обратная сортировка включена / выключена.

.setPropColumns(headers)

Принимает и запоминает словарь вида {propKey: columnHeader, ...} и запоминает его для вывода в заголовках колонок вместо самих имеy свойств.

.selectProps(keys)

Принимает и запоминает массив имён свойств, данные из которых нужно выводить.

.setTableMode()

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

.setListMode()

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

.getCurrentMode()

Возвращает название текущего режима.

.setPageSizeLimit(count)

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

.getPageSizeLimit()

Возвращает текущее максимальное количество записей на странице.

.gotoPage(index)

Показывает элементы страницы с указанным индексом.

.getPageIndex()

Возвращает индекс текущей страницы.

.getPageData()

Возвращает объекты, данные которых выводятся на текущей странице.

.useItemClickHandler(fn)

Принимает и запоминает функцию-обработчик клика на одной из записей. В эту функцию будет передаваться объект, из которого брались данные этой записи, индекс записи в списке и имя свойства, значение которого выводится в колонке, в которой случился клик.

.useColumnClickHandler(fn)

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

.activateItem(index_or_findFn)

Если передано целое число, делает активной запись в списке по соответствующему индексу. Если передана функция-предикат, делает активной запись, соответствующую объекту, найденному этой функцией в массиве данных.

.deactivateItem()

Делает активную запись неактивной (она просто перестаёт быть выбранной курсором).

.getActiveItem()

Возвращает объект, из которого брались данные активной записи. Если активной записи нет, возвращает null.

.getActiveItemIndex()

Возвращает индекс активной записи в списке или -1, если таковой нет.

.selectItems(indices_or_testFn)

Если передан массив целых чисел, делает выбранными записи с указанными индексами. Если передана функция-предикат, делает выбранными записи, соответствующие объектам, найденным этой функцией в массиве данных. Если аргумент не передан, делает выбранными все записи.

.unselectItems(indices_or_testFn)

Если передан массив целых чисел, делает невыбранными записи с указанными индексами. Если передана функция-предикат, делает невыбранными записи, соответствующие объектам, найденным этой функцией в массиве данных. Если аргумент не передан, делает невыбранными все записи.

.getSelectedItems()

Возвращает массив объектов данных, из которых в списке строились выбранные записи.

.getSelectedItemsIndises()

Возвращает массив индексов выбранных записей.

Базовый дизайн

Что-то вроде этого нужно показывать в режиме listMode.

Что-то вроде этого нужно показывать в режиме tableMode.