Терминалы позволяют организовать работу пользователя таким образом, что:
Терминал это рабочее пространство, поделенное на области/панели (areas).
На каждой области пользователь может разместить некие виджеты (widget) с компонентами управления: формы, таблицы, дашборды.
Пользователь может:
При изменении параметров виджетов они сохраняются в базе данных(перемещение, изменение размеров) - при последующих заходах на терминал выводятся ранее сохраненные настройки элементов терминала.
Сниппет терминала:
<div class="as-terminal" data-code="terminal1" data-itemid="123"></div>
В разделе /terminals создаем терминал с указанным кодом и осуществляем его настройку.
Управление терминалами - /terminals
Создаем новый тип терминала - устанавливаем код, название и список ролей, которые могут к нему обращаться.
Прописываем процедуру getOptions. Данная процедура определяет первичные настройки при загрузке терминала пользователя. Пример:
CREATE PROCEDURE [dbo].[term_developer_getOptions]
@code nvarchar(64), -- terminalType
@itemID nvarchar(128), -- terminalItemID
@parameters ExtendedDictionaryParameter readonly, -- for future parameters
@username nvarchar(256) -- current user
AS
BEGIN
-- SELECT 1
select 1 Result, '' Msg
--'{"title": "111", "text": "222", "type": "warning", "icon": "fa fa-bars"}' NoTerminal
-- SELECT 2 Available widgets
select 'Управление таблицами' name, 'cat2' catCode, 'fa fa-bars' icon, 'table' controlType, 'tables' controlCode, '' defaultItemID, 0 canChangeItemID
union
select 'Управление формами' name, 'cat2' catCode, 'fa fa-bars' icon, 'table' controlType, 'forms' controlCode, '' defaultItemID, 0 canChangeItemID
union
select 'Управление страницами' name, 'cat1' catCode, 'fa fa-bars' icon, 'table' controlType, 'pages' controlCode, '' defaultItemID, 0 canChangeItemID
union
select 'Редактирование таблицы' name, 'cat1' catCode, 'fa fa-bars' icon, 'form' controlType, 'editTable' controlCode, '0' defaultItemID, 1 canChangeItemID
union
select 'Редактирование формы' name, 'cat1' catCode, 'fa fa-bars' icon, 'form' controlType, 'editForm' controlCode, '0' defaultItemID, 1 canChangeItemID
union
select 'Управление настройкой' name, 'cat1' catCode, 'fa fa-bars' icon, 'form' controlType, 'editSetting' controlCode, 'globalCSS' defaultItemID, 0 canChangeItemID
union
select 'Дашборд админа' name, 'cat1' catCode, 'fa fa-bars' icon, 'dashboard' controlType, 'forAdmin' controlCode, '' defaultItemID, 0 canChangeItemID
union
select 'Редактирование хранимки' name, 'cat1' catCode, 'fa fa-database' icon, 'sp' controlType, 'falcon_search' controlCode, '' defaultItemID, 1 canChangeItemID
-- select 3 AvailableWidget catetories
select 'Cat 1' name, 'cat1' code, 1 ord
union
select 'Cat 2' name, 'cat2' code, 2 ord
union
select 'Cat 3' name, 'cat3' code, 3 ord
union
select 'Cat 4' name, 'cat4' code, 4 ord
order by ord
END
Входные параметры:
Выходные результаты:
SELECT 1 Общие настройки
SELECT 2 Список доступных виджетов, которые может добавлять пользователь
Процедура search позволяет выдать список itemID при выполнении поиска значений в виджете.
Например, в виджете выводится карточка клиента с itemID = 5. Пользователь хочет посмотреть другого клиента - в верху через поиск выбирает нужного клиента.
Как раз для генерации этого списка доступных клиентов и используется эта процедура.
CREATE PROCEDURE [dbo].[term_developer_search]
@q nvarchar(64),
@parameters ExtendedDictionaryParameter readonly, -- terminalCode, terminalItemID
@controlType nvarchar(64), -- form, table
@controlCode nvarchar(128), -- table code, form code
@username nvarchar(256) -- current user
AS
BEGIN
if(@controlType='form' and @controlCode='editForm') begin
-- SELECT 1
select id Value, isnull(title, '') + ' - ' + code Text
from as_forms where code like '%'+@q+'%' or title like '%'+@q+'%'
return
end
if(@controlType='form' and @controlCode='editTable') begin
-- SELECT 1
select id Value, isnull(title, '') + ' - ' + code Text
from as_crud_tables where code like '%'+@q+'%' or title like '%'+@q+'%'
return
end
-- SELECT 1
select 1 Value, 'Invalid control type or code' Text
END
Входные параметры:
Выходные параметры
SELECT 1
Вы можете разместить ссылку в произвольном месте страницы (на которой есть терминал) для добавления конкретного виджета, доступного для загрузки на данном терминале.
Для этого указываем ссылку следующего вида:
<a href="#" class="as-term-widgetLink" data-type="form" data-code="editSetting" data-itemid="globalJS">LINK</a>
В базе данных терминалы хранятся в таблицах с префикcом as_term_:
Для переноса компонента необходимо перенести все хранимые процедуры с префиксом as_term_ и term_example и таблицы с префиксом as_term_.
При разработке таблиц и форм, предназначенных для терминалов стоит учитывать, что все взаимодействие происходит по возможности без переходов на другие страницы: