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

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

  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

Входные параметры:

  • code - код терминала
  • itemID - переданный itemID (этот параметр нужен для того, чтобы использовать один и тот же тип терминала для пользователя по разному на разных страницах).
  • parameter - для будущих параметров
  • username - текущий пользователь 

Выходные результаты:

SELECT 1 Общие настройки

  • Result - если 0, то будет вывод результата ошибки в Msg
  • Msg - сообщение
  • NoTerminal - JSON строка с полями title, text, type. Если задано - выводит в терминале сообщение (например, что нет прав на использование терминала). 

SELECT 2 Список доступных виджетов, которые может добавлять пользователь

  • name - название виджета (будет отражаться в заголовке виджета на панели).
  • catCode - код категории из SELECT 3 (служит для организации списков доступных виджетов по категориям в окне добавления виджета)
  • icon - иконка виджета
  • controlType - какой компонент будет грузить - form, table, dashboard
  • controlCode - code компонента (например, таблицы или формы).
  • defaultItemID - какой itemID будет по умолчанию загружаться в компонент
  • canChangeItemID - если 1, то пользовтаель в виджете имеет возможность выбрать через поиск itemID (в заголовке виджета).  

Процедура выдачи доступных 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

Входные параметры:

  • q - что набрал в поиске пользователь
  • parameters - содержит terminalCode, terminalItemID
  • controlType - тип компонента (from, table, dashboard)
  • controlCode - код компонента (например, код формы)
  • username - текущий пользователь 

Выходные параметры

SELECT 1

  • Value - значение itemID
  • Text - выводимый текст для пользователя (например, ФИО клиента)

Загрузка виджета по ссылке

Вы можете разместить ссылку в произвольном месте страницы (на которой есть терминал) для добавления конкретного виджета, доступного для загрузки на данном терминале. 

Для этого указываем ссылку следующего вида: 

<a href="#" class="as-term-widgetLink" data-type="form" 
   data-code="editSetting" data-itemID="globalJS">LINK</a>
  • data-type - тип загружаемого компонента
  • data-code - код компонента (например, код формы)
  • data-itemID - itemID, который передается в компонент. Если здесь пустая строка, то передается defaultItemID от начального элемента в списке доступных виджетов

Системные элементы

В базе данных терминалы хранятся в таблицах с префикcом as_term_: 

  • as_term_types - типы терминалов
  • as_term_terminals - терминалы конкретных пользователей
  • as_term_areas - панели терминалов
  • as_term_widgets - виджеты, добавляемые на панели терминалов
  • as_term_log - лог действий пользователей с терминалами

Для переноса компонента необходимо перенести все хранимые процедуры с префиксом as_term_ и term_example и таблицы с префиксом as_term_.

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

  • вместо перехода на отдельные страницы - открываем модальные окна, подтаблицы, таблицы/формы по ссылке. 
  • вместо обновления страницы через полную перезагрузку - используем обновление области страницы через refreshContainer (например, обновление конкретного виджета). 

Falcon Space - функциальная веб-платформа разработки на узком стеке MS SQL/Bootstrap. Вводная по Falcon Space

Google поиск по нашей документации

SQL-инструмент для создания личных кабинетов на сайте

Суть подхода и история создания Falcon Space
Веб-платформа для создания личных кабинетов

Falcon Space

Это снижение стоимости владения

за счет меньшего количества людей для поддержки и узкого стека разработки. Про снижение стоимости владения продуктом

Это быстрое внесение изменений

по ходу эксплуатации программы. Как создается функционал на платформе

Это простой удобный интерфейс

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

Веб-приложения на MS SQL. Партнерская программа для разработчиков и веб-студий

Вы можете разрабатывать самостоятельно или сотрудничать с нами в плане веб-разработки на платформе Falcon Space, используя только SQL и HTML.
Смотреть примеры с кодом SQL
Документация по платформе
Работа на MS SQL Server