Построение виджета из списка объектов
Описание действия
Виджет может быть создан на основе списка объектов.
Предварительные настройки
-
Добавить действие по событию "Построение диаграммы из списка объектов".
Параметры действия по событию:
- Название — Построение диаграммы из списка объектов.
- Код — createDiagramFromAdvList.
- Событие — Пользовательское событие.
- Выполнять синхронно.
-
Действие — Скрипт
Copy//Назначение:
/**
* Построение диаграммы на основе данных из настроенного списка объектов
*/
//Версия: 4.11.0
//Категория: Скрипты действий по событию
//ОСНОВНОЙ БЛОК--------------------------------------------------------
def dashboard = utils.findFirst('root', [:]).dashboardCode
if(!dashboard)
{
def MSG = 'Ошибка: Не настроен код встроенного приложения Дашборды в системе (атрибут dashboardCode на уровне компании)'
utils.throwReadableException(MSG, null, MSG, null);
}
def PRFX = 'createDiagramFromAdvList >> ';
if(!params.dynamicList)
{
utils.throwReadableException('Должен быть выбран как минимум один вид дашборда!');
}
def contentCode = params.dynamicList.keySet()[0]
//updated: mpleshhyov 22.11.2019
def allDBs = api.apps.listContents(dashboard)
def classFqn;
def tabUuid;
for(def db in allDBs)
{
if(db.contentUuid == contentCode)
{
classFqn = db.subjectFqn;
tabUuid = db.tabUuid;
break;
}
}
if (!classFqn || !tabUuid)
{
utils.throwReadableException("Дашборд (${dashboard}) не выведен на контент '${contentCode}'");
}
def value = api.actionContext.listDescriptorAsJson(objectListContext)
def targetObject
if (classFqn.toString() == cardObject.metaClass.toString())
{
targetObject = cardObject
}
else
{
targetObject = utils.findFirst(classFqn, ['removed': false])
}
def urlToGo = api.web.openTab(targetObject.UUID, tabUuid)
//складываем значения из списка в localstorage
def javascript = "localStorage['widgetContext_${classFqn}_${contentCode}'] = '${value}';";
// и открываем в новой вкладке страницу с дашбордом
javascript += " window.open('${urlToGo}');"
result.executeJavaScript(javascript)
-
Настроить параметр пользовательского действия по событию.
Параметр пользовательского действия по событию:
- Название — Список дашбордов.
- Код — dynamicList.
- Тип значения — Элемент произвольного справочника.
-
Скрипт вычисления элементов справочника - "Получение списка контентов ВП (dashForBack)" (PoluchenieSpiskaKontentovVPDashForBack
Copy//Назначение:
/**
* Собираем мапу со всеми дашбордами в системе для выбора пользователем
*/
//Версия: 4.11.0
//Категория: Скрипты действий по событию
//ОСНОВНОЙ БЛОК--------------------------------------------------------
def dashboard = utils.findFirst('root', [:]).dashboardCode
if(!dashboard)
{
return [ 'error' : 'Ошибка: Не настроен код встроенного приложения Дашборды в системе (атрибут dashboardCode на уровне компании)' ]
}
return api.apps.listContents(dashboard).collectEntries { [ it.contentUuid + '_' + it.subjectFqn, it.contentTitle ] } //update kkasyan
-
Добавить пользовательскую кнопку на панель действий списка объектов, из которого планируется создание виджет.
Выполнение действия
-
Выполните настройки фильтрации списка объектов
-
Нажмите пользовательскую кнопку "Построить виджет".
-
На форме добавления виджета из списка выберите дашборд, на который будет добавлен виджет.
После выбора дашборда, в новой вкладке будет открыт выбранный дашборд с открытой панелью редактирования виджета.
-
Заполните недостающие параметры виджета (название, тип диаграммы, параметр, показатель, разбивку если необходимо) и сохраните настройки
Результат действия
Будет построен виджет по данным из списка объектов.
Последующие действия