Konfigurace Dashboardu a widgetů
Nastavení dashboardu
Pro úpravu rozložení nebo konfiguraci dashboardu musí mít uživatel přiřazen prostředek dashboards:admin
.
Manuální nastavení dashboardu z Knihovny
Konfigurace knihovny
Konfigurace knihovny je uložena v uzlu Knihovny. Musí být ve formátu JSON.
Pro načtení konfigurace z Knihovny musí běžet služba asab_library
, která ukazuje na hlavní uzel Knihovny.
Konfigurace z Knihovny je editovatelná - pozice a velikost widgetů lze uložit do Knihovny přímo z BS-WebUI.
Nastavení dashboardu s konfigurací knihovny
-
Konfigurační soubory dashboardů musí být uloženy v uzlu
dashboard/Dashboards
Knihovny podle následující struktury. -
konfigurační soubor knihovny (
config
), který definuje váš uzel Knihovny s konfigurací v uzlu Library Dashboards. Jménoconfig
je také jméno Dashboardu zobrazeného v postranním panelu aplikace. Je povinným parametrem. -
DŮLEŽITÁ POZNÁMKA - konfigurační soubor MUSÍ mít příponu
.json
, jinak nebude možné zobrazit konfigurační soubor v moduluLibrary
, a tím pádem nebude možné aktivovat funkce jakoEdit
neboDisable
.
Struktura konfigurace v Knihovně
- hlavní uzel Knihovny (`library`)
- Dashboards
- **config**.json
- hlavní uzel Knihovny je obvykle pojmenován jako
library
- config je jméno konkrétní konfigurace Dashboardu, např.
My Dashboard.json
.
V Knihovně vypadá cesta k souboru s konfigurací takto:
/<hlavní uzel Knihovny>/Dashboards/<dashboardConfig>.json
Podívejte se na příklad konfigurace dashboardu tady.
Konfigurace dashboardu
Datasource
Primárně se používá pro nastavení zdroje dat pro widgety. Počet datasourců může být neomezený.
Příklad nastavení datasource
{
...
"Dashboard:datasource:elastic": {
"type": "elasticsearch", // Zdroj dat
"datetimeField": "@timestamp", // Typ datetime
"specification": "es-pattern*" // Indexový nebo URL vzorec
},
...
}
Pokročilé nastavení Elasticsearch
{
...
"Dashboard:datasource:elastic": {
// Základní nastavení
"type": "elasticsearch",
"datetimeField": "@timestamp",
"specification": "es-pattern*",
// Pokročilé nastavení
"sortData": "asc", // Řazení "asc" nebo "desc" dat při zpracování (volitelné)
// Pokročilé nastavení Elasticsearch
"size": 100, // Max velikost výsledků v odpovědi (výchozí 20) (volitelné)
"aggregateResult": true, // Pouze pro grafy (ne pro PieChart) - bude žádat ES o agregované hodnoty (volitelné)
"groupBy": "user.id", // Pouze pro grafy - bude žádat ES o agregaci podle termínu definovaného v klíči "groupBy" (volitelné)
"matchPhrase": "event.dataset: microsoft-office-365" // Pro výchozí zobrazení konkrétního shody datasource
},
...
}
Propojení datasource s widgetem
Pokud datasource není přiřazena k widgetu, nebudou zpracována žádná data pro zobrazení ve widgetu.
{
...
"Dashboard:widget:somewidget": {
"datasource": "Dashboard:datasource:elastic",
...
},
...
}
Výzvy (Prompts)
Sekce nastavení Prompt poskytuje další možnost nastavení výzev Dashboardu nebo změny jejich výchozích hodnot.
Použití v konfiguračním souboru:
{
...
"Dashboard:prompts": {
"dateRangePicker": true, // Povolit výběr časového rozmezí
"filterInput": true, // Povolit vstupní pole filtru
"submitButton": true // Povolit tlačítko pro odeslání
},
...
}
Nastavení vlastních časových intervalů
Někdy je potřeba nastavit vlastní časová období pro zobrazení dat, protože data leží mimo výchozí období nastavené pro Dashboard. Výchozí období je now-1H, které vyhledává data mezi now
a 1 hodina
zpět. Například toto lze nastavit v Dashboard:prompts
následujícím způsobem:
{
...
"Dashboard:prompts": {
...
"dateRangePicker": true,
"dateRangePicker:datetimeStart": "now-1H",
"dateRangePicker:datetimeEnd": "now",
...
},
...
}
Kde dateRangePicker:datetimeStart
a dateRangePicker:datetimeEnd
jsou období, která nastavují rozsah od počátečního období (výchozího) a do konečného období (konečného).
Možnosti nastavení pro obě období jsou:
- now-
n
s - now-
n
m - now-
n
H - now-
n
d - now-
n
w - now-
n
M - now-
n
Y - now
- now+
n
s - now+
n
m - now+
n
H - now+
n
d - now+
n
w - now+
n
M - now+
n
Y
Kde
- n
je číslo, např. 2,
- s
označuje sekundy,
- m
označuje minuty,
- H
označuje hodiny,
- d
označuje dny,
- w
označuje týdny,
- M
označuje měsíce,
- Y
označuje roky
Jiné hodnoty budou ignorovány.
Lze například nastavit pouze jedno období, jak je ukázáno v tomto příkladu, druhé období zůstane výchozí:
{
...
"Dashboard:prompts": {
...
"dateRangePicker": true,
"dateRangePicker:datetimeStart": "now-1H",
...
},
...
}
Další příklad nastavení časového rozsahu, kde data jsou zobrazena 15 hodin do minulosti a vyhledává se 10 minut do budoucnosti:
{
...
"Dashboard:prompts": {
...
"dateRangePicker": true,
"dateRangePicker:datetimeStart": "now-15H",
"dateRangePicker:datetimeEnd": "now+10m",
...
},
...
}
<!-- Lze specifikovat název tlačítka, barvu, cestu k end-pointu a formItems, což je pole objektů.
Ve formItems
je možné specifikovat typ vstupního formuláře (uživatelské jméno, telefon, email, heslo) a jejich názvy a nápovědné zprávy. Při odeslání budou vyplněné informace nastaveny jako JSON tělo POST požadavku na zadanou cestu služby telco
.
widgets: [{
component_id: "WidgetContainer",
dataSource: "ES",
type: "Value",
title: "Title",
...
actionButton: {
title: 'Trigger', // Název tlačítka
backgroundColor: 'primary', // Barva tlačítka (pouze reakční a bootstrap barvy, pokud potřebujete širší rozsah, nastavte jej pomocí externího CSS)
buttonOutline: true, // Nastavení obrysu tlačítka (výchozí false)
action:"/path/of/the/endpoint", // Cesta URL end-pointu (bez protokolu a hostitele)
formItems:[
{form:"username", title:"Username", hint: "Input username"},
{form:"phone", title:"Phone", hint: "Input phone"},
{form:"email", title:"Email", hint: "Input email"},
{form:"password", title:"Password", hint: "Input password"}
] // Formuláře, které se zobrazí v popoveru
}, // Přidejte libovolné tlačítko, které provede nějakou akci prostřednictvím spuštění end-pointu definovaného v cestě
...
}]
``` -->
### Grid systém (volitelné nastavení)
Grid může být konfigurován unikátně pro různé dashboardy. Tak lze konfiguraci gridu implementovat do konfigurace dashboardu, jak je vidět na příkladu. Pokud není definováno v konfiguraci, použije se výchozí nastavení gridu.
"Dashboard:grid": {
"preventCollision": false // Pokud je nastaveno na true, brání kolizím widgetů na gridu
},
"Dashboard:grid:breakpoints": {
"lg": 1200,
"md": 996,
"sm": 768,
"xs": 480,
"xxs": 0
},
"Dashboard:grid:cols": {
"lg": 12,
"md": 10,
"sm": 6,
"xs": 4,
"xxs": 2
},
...
} ``` Výše uvedené nastavení je také výchozím nastavením dashboardu.
Autorizace / Zakázání konfigurace
Přístup k dashboardu může být omezen pouze pro konkrétní tenanty. To znamená, že uživatelé bez konkrétních tenantů nemohou k dashboardu přistupovat. To je vhodné např. když administrátor chce omezit přístup k dashboardům s citlivými daty pro konkrétní skupiny uživatelů.
Chcete-li zakázat konfiguraci pro konkrétní tenant, musíte přejít do sekce Knihovna aplikace a Zakázat
konkrétní soubor kliknutím na přepínač v souboru.
Zakázaný název souboru konkrétní konfigurace Dashboardu bude pak přidán do souboru .disabled.yaml
s ovlivněnými tenanty v uzlu Knihovny.
Humanize (Zlidnění)
Komponenta použitá pro převod číselných hodnot do čitelnější formy pro člověka.
Zobrazuje hodnoty v čitelnější formě, například:
0.000001 => 1 µ
0.00001 => 10 µ
0.0001 => 100 µ
0.001 => 1 m
0.01 => 10 m
0.1 => 100 m
1 => 1
10 => 10
100 => 100
1000 => 1 k
10000 => 10 k
100000 => 100 k
1000000 => 1 M
atd.
Může být použit pro widgety s hodnotou a vícenásobnými hodnotami.
Chcete-li povolit komponentu Humanize
ve widgetu, je třeba nastavit
- "humanize": true
v konfiguraci widgetu
- "base": <number>
definuje základnu pro převod (přepočet), volitelný parametr, výchozí je 1000
- "decimals": <number>
definuje, kolik desetinných míst se zobrazí, volitelný parametr
- "displayUnits": true
zobrazuje prefix (tj. µ, m, k, M, G) jednotek, volitelný parametr, výchozí false
- "units": <string>
zobrazuje uživatelsky definovanou příponu jednotek (např. B, Hz,...)
displayUnits
a units
budou spojeny ve widgetu a výsledek může vypadat jako MHz
, kde M
je prefix a Hz
je uživatelsky definovaná přípona.
```
{
...
"Dashboard:widget:valuewidget": {
...
"humanize": true,
"base": 1024,
"decimals": 3,
"displayUnits": true,
"units": "B",
...
},
...
} ```
Hint (volitelné nastavení)
Hint (nápověda) může být přidán pro jakýkoliv widget kromě nástroje Tools widget. Tímto způsobem bude nápověda vložena jako tooltip hint vedle titulu widgetu.
Po přidání nápovědy se v záhlaví widgetu objeví ikona informace (vedle titulu). Po najetí myší na tuto ikonu se zobrazí přidaná nápověda.
Hint může být pouze typu string
.
Příklad, jak přidat hint:
```
{
...
"Dashboard:widget:somewidget": {
...
"hint": "Nějaká nápověda",
...
},
...
} ```
Rozvržení widgetu
Velikost widgetu a pozice na gridu mohou být definovány pro každý widget v konfiguraci. Pokud není nastaveno, widget má své předdefinované hodnoty pro rozvržení a pozici a bude vykreslen odpovídajícím způsobem.
Widgety lze přesouvat a měnit jejich velikost v síti prostřednictvím Dashboard setting prompt
>> Edit
. To je dostupné pro uživatele s prostředkem dashboards:admin
.
Příklad základního nastavení rozvržení:
```
{
...
"Dashboard:widget:somewidget": {
...
// Základní nastavení
"layout:w": 4, // Šířka widgetu v jednotkách gridu
"layout:h": 2, // Výška widgetu v jednotkách gridu
"layout:x": 0, // Pozice widgetu na ose x v jednotkách gridu
"layout:y": 0, // Pozice widgetu na ose y v jednotkách gridu
// Volitelná vlastní nastavení
"layout:minW": 2, // Minimální šířka widgetu
"layout:minH": 2, // Minimální výška widgetu
"layout:maxW": 6, // Maximální šířka widgetu
"layout:maxH": 6, // Maximální výška widgetu
...
},
...
}
Příklad pokročilého nastavení rozvržení:
{
...
"Dashboard:widget:somewidget": {
...
// Volitelná pokročilá nastavení
"layout:isBounded": false, // Pokud je true a widget je tažný, bude se pohybovat pouze v rámci gridu
"layout:resizeHandles": ?Array<'s' | 'w' | 'e' | 'n' | 'sw' | 'nw' | 'se' | 'ne'> = ['se'], // Ve výchozím nastavení se zobrazí rukojeť pouze v dolním pravém rohu (jihovýchod)
"layout:static": ?boolean = false, // Fixuje widget na statické pozici (nelze pohnout ani změnit velikost). Pokud je true, rovná se `isDraggable: false, isResizable: false`
"layout:isDraggable": ?boolean