Терминал - рабочее пространство с окнами и вкладками

Терминалы позволяют организовать работу пользователя таким образом, что:

  1. Он будет работать в основном на одной странице с различными виджетами.
  2. Пользователь сам определяет состав своего рабочего пространства, организует расположение блоков.

Терминал это рабочее пространство, поделенное на области/панели (areas).

На каждой области пользователь может разместить некие виджеты (widget) с компонентами управления: формы, таблицы, дашборды.

Пользователь может:

При изменении параметров виджетов они сохраняются в базе данных(перемещение, изменение размеров) - при последующих заходах на терминал выводятся ранее сохраненные настройки элементов терминала.

Как добавить терминал на страницу 

Сниппет терминала:

<div class="as-terminal" data-code="terminal1" data-itemid="123"></div>

В разделе /terminals создаем терминал с указанным кодом и осуществляем его настройку.

Как настроить терминал

Управление терминалами - /terminals

Создаем новый тип терминала - устанавливаем код, название и список ролей, которые могут к нему обращаться.

Процедура настройки  терминала getOptions

Прописываем процедуру 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 Список доступных виджетов, которые может добавлять пользователь

Процедура выдачи доступных itemID для смены itemID в виджете терминала

Процедура 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_.

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

Страница-источник на сайте falconspace.ru