FunApp является основным интерфейсом взаимодействия пользователей с базой данных. Оно представляет из себя веб-приложение которое работает как на больших экранах, так и на мобильных устройствах. FunApp настраивается таким же способом как и FunDB — через таблицы.
FunApp поддерживает технологию PWA, то есть можно на рабочий стол компьютера или телефона поместить ярлык сразу на него, минуя браузер. Подробнее (На остальных устройствах и браузерах аналогично, где-то в контекстном меню браузера должен быть пункт «Добавить на рабочий стол» или подбный).
FunApp представляет из себя интерфейс для просмотра отображений, заданных в FunDB. При этом результаты, возвращаемые в виде таблицы, FunApp может отображать несколькими разными видами. Для каждого вида существуют свои атрибуты, влияющие на результат. Для всех атрибутов существуют значения по умолчанию, т.е. не существует обязательных атрибутов. Вид отображения задаётся строкой в атрибуте запроса type
, например @"type" = 'menu'
. По умолчанию используется вид table
.
Все отображения поддерживают аргументы и редактор аргументов, который можно использовать, например, для расширенных фильтров в таблицах.
table
)Отображает результат как таблицу. Ячейки можно выделять цветом, ширину колонок и высоту строк можно задавать. Редактировать данные можно прямо в ячейках таблицы (при соблюдении некоторых условий).
form
)Отображает результат как форму с блоками. Если в результате больше одной строки, то для каждой будет отрисована своя форма.
Форму полезно использовать в качестве контейнера для других представлений - вложенных таблиц, канбан-досок, таймлайнов, а также для отображения графиков, карт и прочих компонентов с помощью iframes.
menu
)Отображает результат из одной колонки, которая представляет собой JSON — массив из объектов, описывающий меню.
Меню может иметь произвольный уровень вложенности, однако обратите внимание, что размер текста будет уменьшаться с каждым уровнем вложенности.
board
) Отображает канбан доску, состоящую из карточек сгруппированных по столбцам.
Отображает поле с множественном выбором, где возможные значения взяты из таблицы связей. Есть возможность выбирать или удалять несколько значений - соответствующие записи будут добавлены или удалены в таблице.
Отображает результат как таблицу с иерархической структурой при наличии у сущности поля с типом "ссылка" (reference(schema.entity)
) на саму себя.
timeline
)Отображает результат как комментарии и события (как в Trello) с возможностью добавлять новые комментарии.
Для редактирования FunApp выбирает компонент, подходящий для типа данных поля.
Компонент | Описание |
---|---|
Текстовое поле | Используется для простого редактирования текста |
Числовое поле | Используется для ввода целых чисел |
Многострочное поле | Используется для ввода больших объёмов текста |
Логическое поле | Отображается как список с вариантами "да/нет" |
Поле выбора значения | Используется для полей типа enum |
Поле выбора отношения | Используется для полей типа reference |
Редактор кода | Используется для редактирования запросов на языке FunQL |
Эти атрибуты ячеки позволяют указывать, какой компонент должен использоваться для редактирования ячейки. Как особый случай они позволяют указывать вложенное отображение, связанное с данным полем.
Атрибут | Тип | Описание |
---|---|---|
control |
'user_view' | 'iframe' |
Указывает на используемый компонент. При значении user_view вместо ячейки отображается вложенное отображение, соответствующее значению ячейки, интерпретированному как ссылка с идентификатором.При значении iframe вместо ячейки отображается айфрейм, см. iframes, и значение передаётся в него. |
text_type |
Cтрока | Указывает на тип компонента для строчного значения. Возможные типы компонентов |
Атрибут | Тип | Описание |
---|---|---|
link |
Действие с идентификатором отношения | Действие, которое осуществляется при нажатии на связанную сущность |
select_view |
Cсылка с идентификатором | Частный случай extra_select_views , кнопка для выбора связанной сущности из отображения - удобна когда не требуется кастомизация надписи на кнопке и кнопка только одна |
extra_select_views |
Массив ссылок с идентификатором | Ссылки на отображения, с помощью которых возможно выбирать или создавать связанные значения для этой сущности. Отображения можно вызвать через кнопку внизу списка для значений поля. Обязателен дополнительный атрибут "name": 'Название действия' |
options_view |
Cсылка | Ограничивает список возможных сущностей только теми, которые есть в представлении по ссылке. Представление обязано иметь колонки value (значения в которой равны id сущностей, которые можно выбрать) и pun , содержащую строки-лейблы, которые будут использоваться для отображения опций вместо главной колонки сущности. Подробнее |
Составные типы атрибутов, использующиеся для разных целей.
Значением атрибута явяется:
&"foo"
, см. расширения FunQL);{
"ref": &"foo" | { "schema": "schema_name", "name": "uv_name" },
[ "args": { "argument_name": value, ... }, ]
[ "new": true | false, ]
[ "default_values": { "result_column_name": value, ... }, ]
}
, где:
ref
: ссылка на отображение из FunQL;args
: аргументы отображения, которые подставляются в запрос;new
: использовать режим создания новых записей (без просмотра существующих);default_values
: значения по умолчанию для новых записей, создаваемых в этом запросе. Имеют больший приоритет чем атрибут default_value
.Совпадает с типом "ссылка", однако автоматически добавляет к аргументам аргумент id
, равный идентификатору записи, которой принадлежит текущая ячейка.
Совпадает с типом "ссылка", однако автоматически добавляет к аргументам аргумент id
, равный идентификатору записи, на которую ссылается текущая ячейка.
Значением атрибута может являться ссылка, однако поддерживаются дополнительные атрибуты:
target
: управляет способом открытия ссылки. Варианты:
top
: на полный экран;modal
: в новом модальном окне;blank
: в новой вкладке;root
: в текущем активном пространстве (если ссылка на верхнем уровне, откроется новый вид; если в модальном окне, сменится его содержимое);modal-auto
: в модальном окне, если нет открытых, иначе в текущем активном модальном окне.По умолчанию: modal-auto
везде, root
в меню.
Также поддерживаются следующие действия:
{
"action": { "schema": "schema_name", "name": "action_name" },
[ "args": { "argument_name": value, ... }, ]
}
Совпадает с типом "действие", однако автоматически добавляет к аргументам аргумент id
, равный идентификатору записи, которой принадлежит текущая ячейка.
Совпадает с типом "действие", однако автоматически добавляет к аргументам аргумент id
, равный идентификатору записи, на которую ссылается текущая ячейка.
funapp
Данные таблицы хранятся в схеме funapp
. Они описывают текущие настройки веб-приложения.
Содержит общие настройки приложения. Список настроек можно посмотреть в их справочнике.
Настройка | Тип | Необязательность | Описание |
---|---|---|---|
name |
string |
false |
Название настройки |
value |
string |
false |
Значение настройки |
Содержит пользовательские настройки приложения. Список настроек можно посмотреть в их справочнике.
Настройка | Тип | Необязательность | Описание |
---|---|---|---|
user_id |
reference( public.users ) |
false |
Пользователь |
name |
string |
false |
Название настройки |
value |
string |
false |
Значение настройки |
Задает переводы для кэпншов, заголовков и любых других сообщений. Подробнее про переводы
Настройка | Тип | Необязательность | Описание |
---|---|---|---|
language |
string |
false |
ISO-код языка |
message |
string |
false |
Строка для перевода |
schema_id |
reference( public.schemas ) |
false |
Ссылка на схему |
translation |
string |
false |
Перевод строки |
Задается список цветовых схем.
Настройка | Тип | Необязательность | Описание |
---|---|---|---|
localized_name |
json |
false |
Локализованное название цветовой схемы (пример: {"en":"Light","ru":"Светлая"} ) |
name |
string |
false |
Системное имя цветовой схемы |
schema_id |
reference( public.schemas ) |
false |
Ссылка на схему базы данных |
Список цветовых вариантов для каждой из цветовых схем
Настройка | Тип | Необязательность | Описание |
---|---|---|---|
background |
string |
true |
HEX-код или название цвета фона ячейки/плашки |
border |
string |
true |
HEX-код или название цвета рамки |
foreground |
string |
true |
HEX-код или название цвета текста |
name |
string |
false |
Название цветового варианта |
theme_id |
reference( funapp.color_themes ) |
false |
Ссылка на цветовую тему |
Страницы, которые можно встраивать в iframe-ы. Чаще всего используются как help page. Отличаются от iframe markups тем, что не подразумевают взаимодействия с данными базы.
Настройка | Тип | Необязательность | Описание |
---|---|---|---|
markup |
string |
false |
HTML-код страницы, отображаемой в iframe-е |
name |
string |
false |
Название страницы |
schema_id |
reference( public.schemas ) |
false |
Ссылка на схему базы данных |
Страницы, которые можно встраивать в iframe-ы. Подробнее про использование тут
Настройка | Тип | Необязательность | Описание |
---|---|---|---|
markup |
string |
false |
HTML-код страницы, отображаемой в iframe-е |
name |
string |
false |
Название страницы |
schema_id |
reference( public.schemas ) |
false |
Ссылка на схему базы данных |