Учебник по Showcase: Панель

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

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


Информационная панель - это структура, отображающая перечень визуальных элементов.

Структура панели описывается xml-файлом, расположенным в папке userdata/datapanelstorage.

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

  • Таблица (тип grid);
  • Произвольный html-текст (тип webtext);
  • Элемент для ввода данных с помощью xforms (тип xforms).

Примерный вид xml-файла, описывающего информационную панель показан ниже.

<?xml version="1.0" encoding="UTF-8"?>
<datapanel>
   <tab id="1" name="Сотрудники и оргструктура">
      <element id="10" type="xforms" template="orgFilter.xml" proc="orgFilter">
         <proc id="proc1" name="orgFilterSave" type="SAVE"/>
      </element>
      <element id="20" type="webtext" proc="orgButtons"/>		
      <element id="30" type="grid" proc="orgGrid">
         <related id="10"/>
      </element>	
      <element id="40" type="xforms" template="orgCard.xml" proc="orgCard" neverShowInPanel="true">			
         <related id="30"/>
         <proc id="proc2" name="orgCardSave" type="SAVE"/>
      </element>
      <element id="120" type="webtext" proc="employeesButtons" hideOnLoad="true">
         <related id="130"/>
      </element>	
      <element id="130" type="grid" proc="employeesGrid" hideOnLoad="true">
         <related id="30"/>		
      </element>
      <element id="140" type="xforms" template="employeesCard.xml" proc="employeesCard" neverShowInPanel="true">
         <related id="30"/>
         <related id="130"/>
         <proc id="proc3" name="employeesCardSave" type="SAVE"/>
      </element>
   </tab>	
</datapanel>

Данный xml файл имеет многоуровневую древовидную структуру:

  • Корневой элемент — datapanel;
  • Следующий уровень — tab-вкладка;
  • Далее идет уровень конкретных элементов панели – element;
  • Каждый элемент в свою очередь может содержать дополнительные процедуры (proc) и ссылки на другие элементы (related).

Вкладка может иметь следующие атрибуты:

  • Уникальный внутри панели идентификатор – id;
  • Имя для отображения – name;

Элементы содержимого вкладки (тэги <element>) имеют следующие атрибуты:

  • Обязательный идентификатор id (уникальный внутри панели);
  • Обязательный атрибут type – тип элемента, принимающий одно из следующих значений: grid, webtext, xforms;
  • Атрибут proc – хранимая процедура, загружающая информацию для элемента;
  • Для элементов типа webtext может быть задан необязательный атрибут transform, который указывает на xslt-преобразование, которое необходимо применить к полученному из процедуры xml-коду. Значение атрибута transform – это путь к источнику преобразования.
  • Необязательный атрибут hideOnLoad=true у элемента обозначает, что при загрузке вкладки прорисовку данного элемента изначально пропускаем, и нужно дождаться события, которое само перерисует данный элемент. Элемент с таким тэгом называется зависимым, а элемент, от которого он зависит – главным. Главный элемент должен находиться на той же вкладке, что и зависимый. Зависимость означает, что данный элемент должен заполняться после элемента, от которого он зависит, а также то, что его содержимое может зависеть от текущего контекста «главного» элемента. Фактически, данная опция служит для оптимизации быстродействия.
  • Необязательный атрибут neverShowInPanel=true обозначает то, что элемент никогда не будет отображен внутри вкладки панели, а будет отображаться в модальном окне. Следует отличать его от атрибута hideOnLoad, который нужен для оптимизации загрузки зависимых элементов. Таким образом, логически это два разных признака.


Самостоятельная работа: Замените в учебном примере файл панели orgStructure.xml на xml из описания выше. Добавьте новую вкладку (id="2" и name="Сотрудники и оргструктура2") с теми же самыми элементами. Обратите внимание на то, что все id в описании информационной панели должны быть уникальными.