Учебник по Showcase: Навигатор

Материал из Course Orchestra
Перейти к: навигация, поиск

Внимание! Изложенная здесь информация устарела! В качестве учебника следует использовать https://share.curs.ru/webhelp/ (work in progress).


Навигатор является ключевым элементом для создания решений на Showcase. Он отображается в левой части основного окна приложения. Навигатор состоит из групп, в каждой из которых находится иерархическое «дерево». Навигатор обычно задается при помощи хранимой процедуры на сервере. Имя хранимой процедуры указывается в параметре navigator.proc.name в файле «app.properties» в папке \userdata\default. На вход процедуры передается контекст сессии в переменной @session_context (внутри данного параметра, в частности, содержится имя пользователя, для которого необходимо построить навигатор). Процедура возвращает данные в xml-формате в output-параметре @navigator. Пример процедуры, которая возвращает xml-файл навигатора:

ALTER PROCEDURE [dbo].[navigator]
   @session_context xml,
   @navigator xml output
AS
BEGIN
   SET NOCOUNT ON;
	
   set @navigator = '
      <navigator width="220px">
         <group id="1" name="Учебный пример">
            <level1 id="11" name="Справочники">
               <level2 id="111" name="Орг.структура" selectOnLoad = "true">
                  <action>
                     <main_context>orgStructure</main_context>	
                     <datapanel type="orgStructure.xml"/>
                  </action>
               </level2>
            </level1>
         </group>
      </navigator>'
END

Дерево имеет строго определенную структуру: корневой элемент – navigator (тэг <navigator>). Далее идут элементы group (тэг <group>), следующие уровни — level{номер уровня} (тэг <level{номер уровня}>) (например, level1 или level2, до пятого уровня).

Каждый элемент группы или уровня должен иметь уникальный идентификатор, содержащийся в атрибуте id соответствующего тэга (некая уникальная строка для всего навигатора) и подпись для отображения элемента, указываемую в атрибуте name соответствующего тэга.

У одного из тэгов <level> может быть атрибут selectOnLoad = "true". Это означает, что при первой загрузке дерева (или обновлении страницы) будет выделен соответствующий уровень (level) в дереве с последующим открытием привязанной к уровню информационной панели.

Все элементы дерева могут иметь тэг <action> (см раздел Задание и структура действия), в котором прописываются события при клике на элемент (уровень – level) дерева в навигаторе. В частности, при клике справа от дерева может отображаться информационная панель (datepanel), это событие задается с помощью тэгов <datepanel> внутри тэга <action>.

Описание информационной панели соответствующего типа должно находится в xml файле в папке userdata/datapanelstorage (имя файла должно быть равно значению, которое будет использоваться в атрибуте type тэга <datapanel>, например, «a.xml» или «b.xml»). Два элемента дерева могут ссылаться как на одну и ту же, так и на разные информационные панели. Параметр tab тэга <datapanel> (id вкладки информационной панели, которая открывается по умолчанию) – необязательный. Если он не задан, то открывается первая вкладка информационной панели.


Атрибут width задает ширину навигатора в пикселях или процентах. В первом случае значение должно содержать префикс «px», во втором - префикс «%». Атрибут hideOnLoad означает, что навигатор должен быть скрыт при загрузке главной страницы.

Вы можете изменить процедуру навигатора. Для этого надо зайти в MS SQL Management Studio и написать запрос. Скопировать текст процедуры выше, выполнить процедуру. Вообще, список всех хранимых процедур этой базы можно увидеть слева в Studio в Oject Explorer - в нужной базе /Programmability/Stored Procedures. Все эти процедуры вы можете как угодно изменять, крутить и вертеть. Зайдите затем через браузер в ShowCase и введите логин/пароль. Слева вы увидите панель - это навигатор.

Учтите важность регистра в XML-документе. Например, если вместо selectOnLoad = "true" Написать selectonload="true" или selectOnLoad="True", то ШоуКейс выдаст ошибку. То же, если вместо атрибута width написать Width. Или если имя открывающего тега group написать как Group. Это значимость регистра в xml присутствует во всех последующих главах.

Самостоятельная работа: добавьте в пункт "Справочники" новый подпункт "Орг.структура2" с тем же файлом информационной панели. Обратите внимание, что все id в навигаторе являются уникальными и только один пункт может быть выделен по умолчанию (атрибут selectOnLoad может быть только у одного пункта). Для этого надо зайти в MS SQL Management Studio и написать запрос ALTER PROCEDURE, подправив текст процедуры.