Konfigurācija
Šajā lapā ir aprakstītas klases, kuras var izmantot, lai izveidotu logrīka konfigurācijas skatu ar pielāgotiem konfigurācijas laukiem. Logrīka konfigurācijas skats ir logrīka daļa, kas ļauj lietotājam konfigurēt logrīka parametrus attēlošanai.
Logrīks
Primārā logrīka klase, paplašina visu paneļa logrīku bāzes klasi — CWidget. Nepieciešama, lai pārrakstītu noklusējuma logrīka uzvedību.
Klasei Widget jāatrodas logrīka saknes direktorijā (piemēram, zabbix/ui/modules/my_custom_widget).
Widget.php piemērs
<?php
namespace Modules\MyCustomWidget;
use Zabbix\Core\CWidget;
class Widget extends CWidget {
public const MY_CONSTANT = 0;
public function getTranslationStrings(): array {
return [
'class.widget.js' => [
'No data' => _('No data')
]
];
}
}
WidgetForm
Klase WidgetForm paplašina noklusējuma klasi CWidgetForm un satur CWidgetField lauku kopu, kas ir nepieciešama, lai definētu logrīka konfigurācijas glabāšanas struktūru datubāzē un apstrādātu ievades validāciju.
Klasei WidgetForm jāatrodas direktorijā includes. Ja klasei ir cits nosaukums, tas jānorāda parametrā widget/form_class failā manifest.json.
includes/WidgetForm.php piemērs
<?php
namespace Modules\MyCustomWidget\Includes;
use Modules\MyCustomWidget\Widget;
use Zabbix\Widgets\{
CWidgetField,
CWidgetForm
};
use Zabbix\Widgets\Fields\{
CWidgetFieldMultiSelectItem,
CWidgetFieldTextBox,
CWidgetFieldColor
};
class WidgetForm extends CWidgetForm {
public const DEFAULT_COLOR_PALETTE = [
'FF465C', 'B0AF07', '0EC9AC', '524BBC', 'ED1248', 'D1E754', '2AB5FF', '385CC7', 'EC1594', 'BAE37D',
'6AC8FF', 'EE2B29', '3CA20D', '6F4BBC', '00A1FF', 'F3601B', '1CAE59', '45CFDB', '894BBC', '6D6D6D'
];
public function addFields(): self {
return $this
->addField(
(new CWidgetFieldMultiSelectItem('itemid', _('Item')))
->setFlags(CWidgetField::FLAG_NOT_EMPTY | CWidgetField::FLAG_LABEL_ASTERISK)
->setMultiple(false)
)
->addField(
new CWidgetFieldTextBox('description', _('Description'))
)
->addField(
(new CWidgetFieldColor('chart_color', _('Color')))->setDefault('FF0000')
);
}
}
CWidgetFormView
- CWidgetFormView klase ir nepieciešama, lai norādītu WidgetForm* klasē definēto lauku attēlošanas loģiku, nosakot to izskatu un darbību, kad tie tiek renderēti konfigurācijas skatā.
CWidgetFormView klase atbalsta šādas metodes:
- addField() - kā parametru saņem CWidgetFieldView klases instanci; katrai CWidgetField klasei ir atbilstoša CWidgetFieldView klase, ko izmantot logrīka konfigurācijas skatā.
- addFieldset() - saņem CWidgetFieldsGroupView klases instanci, kas apvieno laukus sakļaujamā konteinerā.
- addFieldsGroup() - saņem CWidgetFormFieldsetCollapsibleView klases instanci, kas vizuāli (ar apmali) apvieno laukus grupā.
- includeJsFile() - ļauj logrīka konfigurācijas skatam pievienot JavaScript failu.
- addJavaScript() - ļauj pievienot iekļautu JavaScript kodu, kas tiks izpildīts, tiklīdz logrīka konfigurācijas skats būs ielādēts.
CWidgetFormView klasei jāatrodas direktorijā views.
views/widget.edit.php piemērs
<?php
/**
* My custom widget form view.
*
* @var CView $this
* @var array $data
*/
use Modules\MyCustomWidget\Includes\WidgetForm;
(new CWidgetFormView($data))
->addField(
(new CWidgetFieldMultiSelectItemView($data['fields']['itemid']))->setPopupParameter('numeric', true)
)
->addFieldset(
(new CWidgetFormFieldsetCollapsibleView(_('Advanced configuration')))
->addField(
new CWidgetFieldTextBoxView($data['fields']['description'])
)
->addField(
new CWidgetFieldColorView($data['fields']['chart_color'])
)
)
->includeJsFile('widget.edit.js.php')
->addJavaScript('my_custom_widget_form.init('.json_encode([
'color_palette' => WidgetForm::DEFAULT_COLOR_PALETTE
]).');')
->show();
JavaScript
JavaScript klase var tikt izmantota, lai logrīka konfigurācijas skatam pievienotu dinamisku darbību un interaktivitāti. Piemēram, var inicializēt krāsu atlasītāju, kas definēts klasē CWidgetFormView.
JavaScript klase ir jāielādē kopā ar formu, tāpēc uz to jāatsaucas klasē CWidgetFormView, izmantojot metodes includeJsFile() un addJavaScript().
Tālāk redzamajā piemērā singleton klases instance tiek nekavējoties izveidota un saglabāta ar nosaukumu window.my_custom_widget_form. Tādējādi, atverot formu otro reizi, instance tiks izveidota no jauna.
JavaScript klasei jāatrodas direktorijā views.
views/widget.edit.js.php piemērs
<?php
use Modules\MyCustomWidget\Widget;
?>
window.my_custom_widget_form = new class {
init({color_palette}) {
colorPalette.setThemeColors(color_palette);
for (const colorpicker of jQuery('.<?= ZBX_STYLE_COLOR_PICKER ?> input')) {
jQuery(colorpicker).colorpicker();
}
const overlay = overlays_stack.getById('widget_properties');
for (const event of ['overlay.reload', 'overlay.close']) {
overlay.$dialogue[0].addEventListener(event, () => { jQuery.colorpicker('hide'); });
}
}
};
CWidgetField
- CWidgetField klase ir pamatklase, no kuras tiek mantotas visas veidlapu lauku klases (CWidgetFieldCheckBox, CWidgetFieldTextArea, CWidgetFieldRadioButtonList u. c.). Klases, kas paplašina CWidgetField*, ir atbildīgas par logrīka konfigurācijas vērtību saņemšanu, saglabāšanu un validēšanu.
Ir pieejamas šādas CWidgetField klases.
| CWidgetField class | Database field type | Description |
|---|---|---|
| CWidgetFieldCheckBox | int32 | Viena izvēles rūtiņa. |
| CWidgetFieldCheckBoxList | array of int32 | Vairākas izvēles rūtiņas vienā konfigurācijas laukā. |
| CWidgetFieldColor | string | Krāsas atlases lauks. |
| CWidgetFieldDatePicker | string | Datuma atlases lauks. |
| CWidgetFieldIntegerBox | int32 | Lauks vesela skaitļa ievadīšanai. Var izmantot minimālo un maksimālo vērtību konfigurēšanai. |
| CWidgetFieldLatLng | string | Teksta lauks ar komatiem atdalīta platuma, garuma un kartes mēroga līmeņa ievadīšanai. |
| CWidgetFieldMultiSelect | - | Pamatklase vairākatlases laukiem, ko paplašina visas CWidgetFieldMultiSelect* klases. |
| CWidgetFieldMultiSelectAction | ID | Vairākatlases lauks darbību atlasei no sadaļā Alerts > Actions definēto darbību saraksta. |
| CWidgetFieldMultiSelectGraph | ID | Vairākatlases lauks pielāgoto grafiku atlasei. |
| CWidgetFieldMultiSelectGraphPrototype | ID | Vairākatlases lauks pielāgoto grafiku prototipu atlasei. |
| CWidgetFieldMultiSelectGroup | ID | Vairākatlases lauks hostu grupu atlasei. |
| CWidgetFieldMultiSelectHost | ID | Vairākatlases lauks hostu atlasei. |
| CWidgetFieldMultiSelectHostInventory | array of int32 | Vairākatlases lauks hostu inventāra lauku atlasei. |
| CWidgetFieldMultiSelectItem | ID | Vairākatlases lauks vienumu atlasei. |
| CWidgetFieldMultiSelectItemPrototype | ID | Vairākatlases lauks vienumu prototipu atlasei. |
| CWidgetFieldMultiSelectMap | ID | Vairākatlases lauks karšu atlasei. |
| CWidgetFieldMultiSelectMediaType | ID | Vairākatlases lauks datu nesēju tipu atlasei. |
| CWidgetFieldMultiSelectOverrideHost | ID | Vairākatlases lauks datu avota hostiem atlasīšanai no informācijas paneļa vai cita logrīka. |
| CWidgetFieldMultiSelectService | ID | Vairākatlases lauks servisu atlasei. |
| CWidgetFieldMultiSelectSla | ID | Vairākatlases lauks SLA atlasei. |
| CWidgetFieldMultiSelectUser | ID | Vairākatlases lauks lietotāju atlasei. |
| CWidgetFieldNavTree | array of (multiple mixed) | Saglabā karšu navigācijas koka struktūru izmantošanai logrīkā Map navigation tree. |
| CWidgetFieldNumericBox | string | Lauks peldošā komata skaitļa ievadīšanai. |
| CWidgetFieldPatternSelect | - | Pamatklase modeļu atlases laukiem, ko paplašina visas CWidgetPatternSelect* klases. |
| CWidgetFieldPatternSelectHost | string | Vairākatlases lauks hostu atlasei. Atbalsta hostu nosaukumu modeļus. |
| CWidgetFieldPatternSelectItem | string | Vairākatlases lauks vienumu atlasei. Atbalsta vienumu nosaukumu modeļus. |
| CWidgetFieldRadioButtonList | int32 | Radiopogu grupa, kas sastāv no vienas vai vairākām radiopogām. |
| CWidgetFieldRangeControl | int32 | Slīdnis vesela skaitļa tipa vērtības atlasei. |
| CWidgetFieldReference | string | Saglabā unikālu šī logrīka identifikatoru informācijas panelī; tiek izmantots logrīku saziņai. |
| CWidgetFieldSelect | int32 | Nolaižamais atlases lauks. |
| CWidgetFieldSeverities | array of int32 | CWidgetFieldCheckBoxList ar iepriekš iestatītiem trigeru nopietnības līmeņiem. |
| CWidgetFieldSparkline | array of (multiple mixed) | Ļauj konfigurēt dzirkļdiagrammu. |
| CWidgetFieldTags | array of (string, int32, string) | Ļauj konfigurēt vienu vai vairākas tagu filtra rindas. |
| CWidgetFieldTextArea | string | Teksta apgabals vairākrindu teksta ievadīšanai. |
| CWidgetFieldTextBox | string | Teksta lauks vienas rindas teksta ievadīšanai. |
| CWidgetFieldThresholds | array of (string, string) | Ļauj konfigurēt krāsu un skaitļu pārus. |
| CWidgetFieldTimePeriod | array of string | Laika perioda atlases lauks. |
| CWidgetFieldTimeZone | string | Nolaižamais saraksts ar laika joslām. |
| CWidgetFieldUrl | string | Teksta lauks URL ievadīšanai. |
Maksimālais int32 lauku garums ir 10 rakstzīmes, ID lauku garums ir 20 rakstzīmes, bet string lauku garums ir 65535 rakstzīmes.
Saliktajiem tipiem (piemēram, array of (string, int32, string)) ierobežojums attiecas uz katru elementu atsevišķi.
Laukiem specifiskus garuma ierobežojumus var iestatīt, izmantojot tādas metodes kā setMaxLength().