Компонент табличного документа предназначен для использования в двух основных режимах:
Библиотека состоит из двух основных частей:
В Табличном Документе, реализованы следующие возможности:
Текущая версия библиотеки протестирована и поддерживается следующими браузерами:
*Для поддержки некоторых функций, ваш проект должен обеспечивать https соединение
Для корректной работы библиотеки необходимо установить в проект следующие зависимости:
В состав библиотеки входят следующие модули:
Имя файла | Описание |
TableDocument.js | Класс реализующий методы работы с табличным документом |
TableDocumentConst.js | Файл констант класса |
SpreadSheet.vue | Визуальный компонент табличного документа |
SpreadSheetEditing.vue | Визуальный компонент редактирования полей табличного документа |
SpreadSheetLogic.js | Файл описывающий взаимодействие между классом табличного документа и визуальными компонентами |
Перед установкой библиотеки, необходимо установить все зависимости указанные в разделе "Системные требования".
Для установки, выполните в терминале следующую команду:
npm install di-at-grid --save
Разместите следующие компоненты в файле шаблона vue:
<template>
<spread-sheet-editing ref="SpreadSheetEditDOM"
:cell="editableCell"
:cell-type="editableCellType"
:cell-element="editableCellElement"
:edit-event="editableCellEvent"
:is-label="isShowEditableLabel"
@editing:accept="acceptEditingCell"
@editing:cancel="cancelEditingCell"></spread-sheet-editing>
<div class="sheets__nav">
<v-tabs v-model="currentList"
align-with-title>
<v-tab v-for="list in lists"
:key="list.name"
class="nav-list"
active-class="nav-list_active">{{ list.title }}</v-tab>
</v-tabs>
</div>
<spread-sheet ref="SpreadSheet"
v-bind="spreadSheetProps"
:isOuterBorderOff="true"
:delta-height-virtual-list="30"
:is-show-title="isShowTitle"
:is-show-group="isShowGroup"
table-layout-padding="0px 4px 4px 4px"
@click:cell="evtClickCell"
@dblclick:cell="evtDblClickCell"
@keydown:cell="evtKeydownCell"
@scroll:body="scrollBody"></spread-sheet>
<template>
Импортируйте компоненты и логику взаимодействия на страницу где размещены визуальные компоненты
import SpreadSheet from 'di-at-grid/src/components/SpreadSheet/SpreadSheet.vue';
import SpreadSheetEditing from 'di-at-grid/src/components/SpreadSheetEditing/SpreadSheetEditing.vue';
import SpreadSheetLogic from 'di-at-grid/src/logics/SpreadSheetLogic';
export default {
componens: {
SpreadSheet,
SpreadSheetEditing,
},
data() {
return {
...SpreadSheetLogic.data,
};
},
computed: {
...SpreadSheetLogic.computed,
},
methods: {
...SpreadSheetLogic.methods,
},
};
Документ описывается в JSON формате.
На верхнем уровне содержатся следующие блоки:
Имя блока | Формат | Обязательность | Описание |
images | Object | Нет | Изображения |
namedAreas | Array | Нет | Именованные области |
scripts | Object | Нет | Скрипты |
sheets | Object | Нет | Листы |
styles | Object | Нет | Стили |
type | String | Да | Тип template/document |
version | String | Да | Версия |
Блок images, имена атрибутов соответствуют именам изображений, значения атрибутов содержат изображения в SVG формате:
{
"imageName": "svgFormat"
}
Блок namedAreas с набором атрибутов:
Имя блока | Формат | Обязательность | Описание |
name | String | Да | Имя |
range | String | Да | Диапазон |
Блок scripts, имена атрибутов соответствуют именам скриптов, значениями являются инструкции JS:
"scripts": { "scriptName": "scriptBody" }
Блок sheets, имена атрибутов соответствуют именам листов, значениями являются блоки, содержащие следующие атрибуты:
Имя блока | Формат | Обязательность | Описание |
editAccess | String | Да | Тип редактирования: closed - недоступен для редактирования, closedExceptOpen - недоступен для редактирования кроме ячеек у которых явно указано разрешение, open - доступен для редактирования |
cells | Object | Да | Ячейки |
columnCount | Number | Да | Количество столбцов |
columns | Object | Да | Столбцы |
index | Number | Да | Индекс, определяет порядок вывода |
title | String | Да | Имя листа для отображения |
rowCount | Number | Да | Количество строк |
rows | Object | Да | Строки |
Блок cells, имена атрибутов соответствуют именам ячеек, значениями являются блоки, содержащие следующие атрибуты:
Имя блока | Формат | Обязательность | Описание |
action | String | Нет | Имя скрипта |
colspan | Number | Нет | Объединение по горизонтали |
formatString | String | Нет | Строка форматирования |
formula | String | Нет | Формула |
isEditable | Boolean | Нет | Доступна для редактирования |
noSelect | Boolean | Нет | Ячейка не будет выделяться при навигации |
parameter | String | Нет | Имя параметра (для шаблона документа) |
rowspan | Number | Нет | Объединение по вертикали |
style | String | Нет | Имя стиля |
type | String | Нет | Тип |
validators | String | Нет | Скрипт валидации |
value | String|Number|Date | Нет | Значение |
Блок columns, имена атрибутов соответствуют именам колонок, значениями являются блоки, содержащие следующие атрибуты:
Имя блока | Формат | Обязательность | Описание |
isFrozen | Boolean | Нет | Закрепляет столбец в заголовке |
isGroup | Boolean | Нет | Является заголовком группировки |
isOpen | Boolean | Нет | Состояние группы |
level | Number | Нет | Уровень группировки |
width | Number | Нет | Ширина столбца |
Блок rows, имена атрибутов соответствуют именам строк, значениями являются блоки, содержащие следующие атрибуты:
Имя блока | Формат | Обязательность | Описание |
height | Number | Нет | Высота строки |
isFrozen | Boolean | Нет | Закрепляет строку в заголовке |
isGroup | Boolean | Нет | Является заголовком группировки |
isOpen | Boolean | Нет | Состояние группы |
level | Number | Нет | Уровень группировки |
Блок styles, имена атрибутов соответствуют именам стилей, значениями являются блоки, содержащие следующие атрибуты:
Имя блока | Формат | Обязательность | Описание |
alignItems | String | Нет | Выравнивание по вертикали |
backgroundColor | String | Нет | Цвет фона |
borderBottom | String | Нет | Нижняя граница |
borderLeft | String | Нет | Левая граница |
borderRight | String | Нет | Правая граница |
borderTop | String | Нет | Верхняя граница |
color | String | Нет | Цвет текста |
cursor | String | Нет | Изображение курсора |
fontFamily | String | Нет | Шрифт |
fontSize | String | Нет | Размер шрифта |
fontWeight | String | Нет | Устанавливает начертание шрифта |
justifyContent | String | Нет | Выравнивание по горизонтали |
textDecoration | String | Нет | Стиль (подчеркнутый, зачеркнутый) |
whiteSpace | String | Нет | Определяет, как обрабатывать пробельные символы |
wordBreak | String | Нет | Определяет, где будет установлен перевод на новую строку в случае превышения текстом границ блока |
*Значения атрибутов совпадают со значениями CSS свойств
Класс реализующий методы работы с табличным документом
Возвращает копию табличного документа
TableDocument
:
Возвращает область табличного документа по диапазону
(String)
диапазон "'Sheet1'!A1:A10"
TableDocument
:
Возвращает массив табличных документов по имени области
(String)
имя именованной области
Array<TableDocument>
:
Вставка области в документ
(String
= 'sheet1'
)
имя листа
(Number)
начало колонки вставки
(Number)
начало строки вставки
(TableDocument)
добавляемая область
(Enum
= null
)
тип сдвига
Присоединить секцию
(TableDocument)
табличный документ
(String
= 'sheet1'
)
имя листа
Переопределение методов FormulaParser
Вставить секцию
(TableDocument)
табличный документ
(String
= 'sheet1'
)
имя листа
Визуальный компонент табличного документа
Имя | Формат | Обязательность | Значение по умолчанию | Описание |
cells | Object | Нет | {} | Объект содержащит информацию о ячейках. |
cellHeight | Number | Нет | CELL_HEIGHT_BODY = 22 | Высота ячеек |
cellWidth | Number | Нет | CELL_WIDTH_BODY = 94 | Ширина ячеек |
columnCount | Number | Нет | 26 | Количество столбцов |
columns | Object | Нет | {} | Объект содержащит информацию о колонках |
deltaHeightVirtualList | Number | Нет | 168 | Разница высоты виртуального скролла |
images | Object | Нет | {} | Изображения документа |
isOuterBorderOff | Boolean | Нет | false | Отключить отображение внешней границы |
isPrintMode | Boolean | Нет | false | Режим печати |
isShowGrid | Boolean | Нет | true | Отображать сетку |
isShowGroup | Boolean | Нет | true | Отображать группировки |
isShowTitle | Boolean | Нет | true | Отображать заголовки |
rowCount | Number | Нет | 1000 | Количество строк |
rows | Object | Нет | {} | Объект содержащит информацию о строках |
representations | `Map` | Нет | {} | Ссылки на внешнии источники |
styles | Array | Нет | [] | Стили документа |
tableLayoutPadding | String | Нет | 4px 4px 4px 4px | Внутренний отступ таблицы |
Имя события | Параметры | Описание |
click:cell | { cellName, MouseEvent } | Клик мыши по ячейке |
dblclick:cell | { cellName, MouseEvent } | Двойной клике мыши по ячейке |
keydown:cell | { cellName, KeyboardEvent } | Нажатие кнопки клавиатуры |
buffer:copy | cellName - имя ячейки | Нажатие сочетания кнопок клавиатуры Ctrl+C (копирование в буфер обмена) |
buffer:paste | cellName - имя ячейки | Нажатие сочетания кнопок клавиатуры Ctrl+V (вставка из буфера обмена) |
scroll:body | - | Скролл таблицы |
Метод | Параметры | Описание |
newDocument | - | Сброс компонента |
editingComplete | Объект события | Вызывается по завершению редактирования. Используется для перемещения курсока на следующую ячейку |
Визуальный компонент редактирования полей табличного документа
Имя | Формат | Обязательность | Значение по умолчанию | Описание |
cell | Object | Нет | {"value":""} | Объект содержащит информацию о ячейке. |
cellType | String | Тип ячейки | Нет | 'string' |
cellElement | HTMLDivElement | Нет | null | Элемент DOM ячейки |
editEvent | Event | Нет | null | Событие которое вызвало редактирование |
isLabel | Boolean | Нет | Нет | Отображать имя редактируемой ячейки ячейки при скролле |
shiftTop | Number | Нет | 0 | сдвиг компонента от верхнего края |
shiftLeft | Number | Нет | 0 | сдвиг компонента от левого края |
Имя события | Параметры | Описание |
editing:accept | { cellName, value, Event } | Событие применение редактирования |
editing:cancel | - | Событие отмены редактирования |
Логика взаимодействия компонентов: SpreadSheet, SpreadSheetEditing, TableDocument,
Watch
Запускает пересчет формул при переключении листа
Methods
Сохраняет объект документа в файл в формате JSON
Сохраняет объект документа в LocalStorage в формате JSON для последующего передачи в компонент