Перейти к основному содержимому

01 Введение

Основным поставщиком функционала и внешнего вида фронтенд-приложения Luxms BI по умолчанию является внутренний проект luxmsbi-web-client (далее обвязка или веб-клиент).

Веб-интерфейс, задаваемый этим приложением можно разделить на несколько структурных компонентов (строительных блоков):

  1. Окно авторизации (страница с окном для ввода логина и пароля). Не видна при авторизации через SSO (за ненадобностью).

  2. Стартовая (разводящая, Root) страница - страница, на которую вы автоматически попадаете при успешной авторизации в системе. В ней представлен список основных разделов (сегментов), управляющих той или иной областью BI (визуализации, данные, управление отчетами, коммуникации, администрирование и прочее).

  3. Страница раздела (сегмента). Отражает стартовую страницу раздела с дочерними подразделами.

  4. Страница подраздела. Например, страница с дешбордами конкретного атласа из раздела Визуализации.вводим

В данном руководстве нас будет большего всего интересовать раздел Визуализации и страница с дешбордами атласа.

Атлас имеет два важнейших раздела:

  • Дешборды (/dashboards) В данном разделе доступны следующие действия:

    • Навигация на соседние атласы и их дешборды;
    • Управление дешбордами: создание, редактирование, удаление (необходимы соответствующие права);
    • Управление дашлетами: добавление, редактирование (в т.ч. расширенное редактирование с использованием JSON Editor-а) и удаление. (необходимы соответствующие права). Можно указать в качестве визуализации ваш кастомный React-компонент или .html;
    • Сохранение текущего состояния дешборда в презентацию;
    • Фильтрация данных и прочее.
  • Ресурсы (/resources)

    • Загрузка, удаление файлов через drag’n’drop;
    • Редактирование контента файлов, замена их MIME-типов.

Ресурс имеет один из указанных MIME-типов:

'image/png',
'image/jpeg',
'image/svg+xml',
'text/xml',
'text/plain',
'text/html',
'text/css',
'text/javascript',
'application/javascript',
'application/x-javascript',
'application/sql',
'application/json',
'text/markdown'

Служебный атлас “Luxms BI Resources” (“ds_res”)

Атлас не имеет других разделов, кроме resources. Его ключевая особенность - ресурсы в данном атласе доступны всем пользователям.

Но это не все. Атлас используется как хранилище того, к чему хотим иметь доступ везде и всегда, без оглядки на права пользователя и, как следствие, компонентов, переопределяющих структурные блоки приложения, логотип, favicon и различные картинки для разделов.

Однако, в версиях, старше 9.0.0, появилась возможность указывать родительские атласы для атласов. Таким образом, родительский атлас выступает в качестве хранилища доступных везде ресурсов в рамках тех атласов, что доступны текущему пользователю. При этом доступ к ds_res сохраняется, просто число хранимых там ресурсов сокращается и локализуются в родительских атласах, позволяя достигать ситуаций, когда разные пользователи с разными ролями видят кардинально разные внешне и по функционалу типы фронтенда Luxms BI.

Файл с общими настройками приложения “settings.js”

Данный файл располагается в сборке модуля luxmsbi-web-client, расположенной на вашем сервере.
Обычно она располагается по адресу /opt/luxmsbi/
Внутри данной папки есть файл settings/settings.js с примерно такой структурой (полей может быть больше)

BISettings = {
/* Название текущего проекта - по умолчанию отображается рядом с логотипом в интерфейсе
и в постфиксе в названии вкладки браузера */
projectTitle : 'Luxms BI',

/* используется ли keycloak для авторизации */
keycloak: null,
/* Отвечает за стартовую точку, куда вы попадаете после авторизации

Представляет собой частичную модель сервиса UrlState (о нем в разделе 'Observable сервисы' данного руководства), которая принудительно выстроится после того, как пользователь авторизуется и попадет на корневую страницу `${sitename.ru}/#/`

Обратите внимание, что пока этот функционал включен, то он не позволяет вернуться на прежний вид стартовой страницы и индифферентен к правам доступа и сайтовой роли пользователя. Этот редирект происходит принудительно для всех */

/* в данном случае мы переходим в раздел `dashboards` датасета со schema_name = ds_1661 */

entryPoint: {
route: "#dashboards",
segment: "ds",
segmentId: "ds_1661"
},

/* Текущий ключ локализации, по умолчанию "ru-RU" или "en-US",
но может быть иной, если вы загрузите дополнительные файлы с локализацией
в раздел ресурсов родительского атласа или ds_res */
language: "ru-RU",

/* Список используемых плагинов. По умолчанию включен плагин Презентации. Остальные плагины, например chats (Обсуждения), tasks (Поручения) и другие требуют расположения в ресурсах специфических структур файлов. */
"plugins": [
"presentations"
],

/* Список используемых редиректов для запросов */
requestUrls: {
serverUrl: ''
},

/* Использумые опции (фичи). Считаются только те, что не содержат префикса _ перед именем.
В данном случае отключен импортер и отключена технология MLP-кубов */
features: ['_Importer', 'DisableMLP'],

/* функция, которая будет вызвана при аутентификации чтоб получить аутентификационный bearer токен. Возвращает промис или само значение, можно вернуть токен как строку или структуру, где есть token и expresIn. Например, если токен для keycloak нам выдают через window.postMessage, то вот такая функция его подхватит.
*/
getAuthToken: function() {
if (window.parent === window) return;
return new Promise(function (resolve) {
var onMessage = function (event) {
if (event.data.type === 'jwtToken') {
window.removeEventListener('message', onMessage)
resolve(event.data);
}
};
window.addEventListener('message', onMessage);
window.parent.postMessage({"type":"getJwtToken","forceUpdate":false}, 'https://graph-demo-ui.datacloud.t1-cloud.ru/');
});
},
/*
В данном объекте можно переопределить ключи существующих тем обвязки, добавить свою тему, отключить существующую. Текущая запись означает, что темы берутся по умолчанию, коробочные.
Не рекомендуется использовать без необходимости изолировать темы для редактирования пользователями. По умолчанию для кастомизации тем используется специальный файл themes.json, помещаемый как в ds_res атлас (общие темы), так и в текущий атлас (уникальный набор тем только для него)
*/
themes: null,

/* Общие настройки карт для всех дешлетов типа Карта */
"map": {
/* "osm" - OpenStreetMap */
type: 'osm',
/* Рекомендуем принудительно включать векторный тип тайлов */
osmVectorEnable: true,
/* Базовые настройки стилей карты, могут быть переопределены для каждой из тем через themes.json */
osmUrlTemplate: 'https://vectortiles.luxmsbi.com/styles/basic-preview/style.json',
osmSubdomains: '',
osmAttribution: '© OpenStreetMap contributors',
mapCircleRadius: 35,
minZoom: 2,
maxZoom: 19
}
};

Вы можете помещать сюда какие-то свои опции, структуры, которые имеют отношение только к текущему инстансу Luxms BI и влияют на поведение фронтенда, который вы реализуете на платформе.

Получить такой объект с настройками вы сможете в ваших кастомных компонентах (используя проект BMR), импортируя модуль AppConfig из пакета bi-internal/core и взяв его модель: AppConfig.getModel().
Или же в ознакомительных целях набрав в консоли браузера __appConfig.getModel().