Главная страница (Dashboard)

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

Общее описание

Главная страница представляет из себя набор блоков различных типов. Страница разделена на три региона, TOP, LEFT, RIGHT. Блоки могут перемещаться из региона в регион, а так же вверх/низ в самом регионе. Блоки можно сворачивать. Блоки делятся на три типа по содержимому - Панель задач (большие кнопки), Список и Отчет (Диаграмма).

Пример главной страницы COREmanager в теме orion:

Orion dashboard.png

XML главной страницы

XML главной страницы COREmanager:

<doc lang="ru" func="dashboard" binary="/core" host="https://127.0.0.1:1500" stylesheet="dashboard" theme="/manimg/orion/" css="main.css" logo="logo.png" logolink="" favicon="favicon.ico" localdir="default/">
  <block name="taskbar" position="top" type="toolbar" display="">
    <toolbtn form="product.install" list="product" img="mb-install" name="product.install" sprite="yes"/>
    <toolbtn form="usrparam" img="mb-set" name="usrparam" sprite="yes"/>
    <toolbtn window="help" img="mb-mgrhelp" name="help" sprite="yes"/>
  </block>
  <block name="longtask" position="left" type="list" func="longtask" rows="5" display="max">
    <toolbtn name="view" default="yes"/>
    <toolbtn name="delete"/>
    <col name="name" type="data" sort="alpha"/>
    <col name="startdate" type="data" sort="alpha"/>
    <col name="enddate" type="data" sort="alpha" sorted="desc"/>
    <col name="status" sort="prop"/>
  </block>
  <block name="changelog.changes" position="left" type="list" func="changelog.changes" rows="12" display="max">
    <col name="desc" sorted="yes"/>
    <col name="type"/>
  </block>
  <block name="session" position="right" type="list" func="session" rows="5" display="max">
    <toolbtn name="kill"/>
    <col name="id"/>
    <col name="name" sort="alpha" sorted="yes"/>
    <col name="level"/>
    <col name="ip"/>
    <col name="idle"/>
  </block>
  <block name="authlog" position="right" type="list" func="authlog" rows="7" display="max">
    <col name="time" sort="alpha" sorted="yes"/>
    <col name="user" sort="alpha"/>
    <col name="ip" sort="alpha"/>
  </block>
  <messages name="dashboard" checked="yes">
    <msg name="actioncolumn">Действие</msg>
    <msg name="taskbar_help">Справка</msg>
    <msg name="taskbar_product.install">Установить приложение</msg>
    <msg name="taskbar_usrparam">Настройки панели</msg>
    <msg name="title">Главная</msg>
    <msg name="title_changelog.changes">Список изменений текущей версии</msg>
    <msg name="title_taskbar">Панель задач</msg>
    <msg name="taskbar_report" added="lang">Action log report</msg>
    <msg name="taskbar_brand" added="lang">Brand settings</msg>
    <msg name="title_longtask">Фоновые задания</msg>
    <msg name="title_session">Активные сессии</msg>
    <msg name="title_authlog">Журнал посещений</msg>
  </messages>
  <tparams>
    <func>dashboard</func>
    <out>devel</out>
   </tparams>
  <p_sort>enddate</p_sort>
  <p_order>desc</p_order>
  <p_cnt>1</p_cnt>
  <p_num>1</p_num>
  <p_elems>0</p_elems>
</doc>

Элемент block

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

Атрибуты элемента block

@name 
имя блока
@position 
позиция блока, может принимать значения top, left, right
@type 
определяет тип блока, может принимать значения taskbar, list, report, infolist, url
@display 
состояние блока, принимает значения min/max - свернут/развернут
@func 
имя ф-ции, которую нужно позвать, чтобы получить контент блока. Актуально для типов list, report и infolist
@autoupdate
задает таймаут обновления блока, в секундах
@update
обновлять блок при переходе пользователя на дашборд

Блок типа taskbar

Блок представляет собой набор кнопок, вызывающий те или иные ф-ции.

Элемент toolbtn

Содержит в себе информацию о кнопки, ее иконки и поведение

Атрибуты элемента toolbtn

@name 
имя кнопки
@top 
наличие атрибута, говорит о том, что надо позвать ф-ции из значения атрибута, и перегрузить desktop
@form 
наличие атрибута, говорит о том, что надо открыть форму, имя ф-ции формы в значение атрибута
@list 
наличие атрибута, говорит о том, что надо открыть список, имя ф-ции списка в значение атрибута
@window 
наличие атрибута, говорит о том, что надо позвать ф-цию из значения атрибута в новом окне
@link 
наличие атрибута, говорит о том, что надо открыть url из значения атрибута
@target
стандартный атрибут ссылки, используется совместно с link
@img 
имя иконки кнопки
@sprite 
иконка содержится в спрайте

Локализация

подпись к кнопке 
локализованные сообщения по имени кнопки

Блок типа list

Представляет из себя список, особенностью является, то что кнопки(при наличии) расположены в дополнительной колонке, в каждой строке. Для кнопок действуют те же правила, что и в списке show/hide и типы.

Получение контента блока

Внутри блока типа list, нет никакой нужной нам информации, для получения списка нужно отправить запрос вида MGR_URL?func=@list&dashboard=@name, где @list и @name атрибуты элемента block.

Этот запрос будет обрабатывать modules.xsl, отличительной особенностью в XML будет наличие атрибута @dashboard у элемента metadata

Блок типа url

Представляет собой frame. Путь к файлу для фрейма берем из элемента url

XML:

<block name="promo" position="top" type="url" display="max">
  <url>https://ispsystem.com/external/banners/?manager=core&lang=ru</url>
</block>

Блок типа infolist

Это список типа лейбл - значение, разделенный на группы.

Скриншот:

Infolist.png

XML:

<metadata name="dashboard.info" type="infolist" mgr="billmgr" dashboard="yes">
  <rowdata>
    <rowgroup name="acc_info">
      <row name="id" type="data"/>
      <row name="regdate" type="data"/>
      <row name="phone" type="data/>
    </rowgroup>
    <rowgroup name="personal_account">
      <row name="provider" type="data/>
      <row name="balance" type="link"/>
      <row name="annual_turnover" type="data"/>
    </rowgroup>
    <rowgroup name="service">
     <row name="services" type="indicator" view="brackets"/>
    </rowgroup>
  </rowdata>
</metadata>
 
<elem>
  <id>XXX</id>
  <regdate>2013-05-08</regdate>
  <phone/>
  <provider>FirstDEDIC</provider>
  <balance func="payment.add">0.0000 RUB</balance>
  <annual_turnover>0.0000 RUB</annual_turnover>
  <services_total>80</services_total>
  <services_used color="red">10</services_used>
</elem>

Элемент rowgroup

Это группа элементов объеденная какой-то логикой

Атрибуты rowgroup

@name 
имя элемента, используется для локализации имени группы

Элемент row

Описывает строку.

Атрибуты row

@name
имя элемента, используется для локализации подписи строки
@type
задает тип данных, может быть data, link, indicator

описание типов:

  • data - просто текст
  • link - ссылка на форму (имя ф-ции и elid задаются в атрибутами @func и @elid в элементе со значением для строки) или на внешний ресурс (ссылка задается в атрибуте @url в элементе со значением для строки)
  • indicator - отображение вида 80 (10), первое число берется из ИМЯСТРОКИ_total, второе из ИМЯСТРОКИ_used, так же может иметь цвет задаваемый атрибутом @color
@view
только для типа indicator, если равно brackets отображать индикатор как 80 (10)

Блок типа report

Блок представляет из себя репорт, только без табличных данных, только диаграммы.

Получение контента блока

Для получения контента нужно послать запрос вида MGR_URL?func=@func&dashboard=@name, где @func, @name - атрибуты эдемента block. Кроме того, элемент может содержать дочерние элементы param c атрибутом @name, которые нужно будет передать в запросе.

<block ...>
  <param name="foo">bar</param>
  <param name="bar">foo</param>
</block>

К ответу панели будет применен шаблон dashboard-report.xsl.

Сохранение блока после манипуляций

При изменении позиции блока или при свертывании/развертывании нужно отправить запрос панели для сохранения данных. Запрос следущего вида MGR_URL?func=dashboard.save&out=xml&block=BLOCK_NAME&display=DISPLAY&order=ORDER&position=POSITION, где BLOCK_NAME - имя блока, DISPLAY - состояние блока min/max, POSITION - текуший регион блока top/left/right, ORDER - позиция блока в регионе (0, 1 ,2) . Ответ обрабатывать не надо.

Локализация

заголовок блока 
локализованные сообщение по имени блока с префиксом title_