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
Klase CWidgetFormView ir nepieciešama, lai norādītu klasē WidgetForm definēto lauku attēlošanas loģiku, nosakot to izskatu un darbību, kad tie tiek atveidoti konfigurācijas skatā.
Klase CWidgetFormView atbalsta šādas metodes:
- addField() — kā parametru saņem klases CWidgetFieldView instanci; katrai CWidgetField klasei ir atbilstoša CWidgetFieldView klase izmantošanai logrīka konfigurācijas skatā.
- addFieldset() — kā parametru saņem klases CWidgetFieldsGroupView instanci, kas apvieno laukus sakļaujamā konteinerā.
- addFieldsGroup() — kā parametru saņem CWidgetFormFieldsetCollapsibleView instanci, kas vizuāli (ar apmali) apvieno laukus grupā.
- includeJsFile() — ļauj pievienot JavaScript failu logrīka konfigurācijas skatam.
- addJavaScript() — ļauj pievienot iekļautu JavaScript, kas tiks izpildīts, tiklīdz logrīka konfigurācijas skats tiks ielādēts.
Klasei CWidgetFormView jāatrodas direktorijā views.
views/widget.edit.php piemērs
<?php
/**
* Mana pielāgotā logrīka formas skats.
*
* @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(_('Papildu konfigurācija')))
->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
Klase CWidgetField ir bāzes klase, no kuras tiek mantotas visas formas 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 izvēles lauks. |
| CWidgetFieldDatePicker | string | Datuma izvēles lauks. |
| CWidgetFieldIntegerBox | int32 | Lauks vesela skaitļa ievadei. Var izmantot minimālās un maksimālās vērtības konfigurēšanai. |
| CWidgetFieldLatLng | string | Teksta lauks, kas ļauj ievadīt ar komatiem atdalītu platumu, garumu un kartes tālummaiņas līmeni. |
| CWidgetFieldMultiSelect | - | Bāzes klase vairākatlases laukiem, ko paplašina visas CWidgetFieldMultiSelect* klases. |
| CWidgetFieldMultiSelectAction | ID | Vairākatlases lauks darbību izvēlei no darbību saraksta, kas definēts sadaļā Brīdinājumi → Darbības. |
| CWidgetFieldMultiSelectGraph | ID | Vairākatlases lauks pielāgotu grafiku izvēlei. |
| CWidgetFieldMultiSelectGraphPrototype | ID | Vairākatlases lauks pielāgotu grafiku prototipu izvēlei. |
| CWidgetFieldMultiSelectGroup | ID | Vairākatlases lauks hostu grupu izvēlei. |
| CWidgetFieldMultiSelectHost | ID | Vairākatlases lauks hostu izvēlei. |
| CWidgetFieldMultiSelectHostInventory | array of int32 | Vairākatlases lauks hostu inventāra lauku izvēlei. |
| CWidgetFieldMultiSelectItem | ID | Vairākatlases lauks vienumu izvēlei. |
| CWidgetFieldMultiSelectItemPrototype | ID | Vairākatlases lauks vienumu prototipu izvēlei. |
| CWidgetFieldMultiSelectMap | ID | Vairākatlases lauks karšu izvēlei. |
| CWidgetFieldMultiSelectMediaType | ID | Vairākatlases lauks mediju tipu izvēlei. |
| CWidgetFieldMultiSelectOverrideHost | ID | Vairākatlases lauks datu avota izvēlei hostiem no paneļa vai cita logrīka. |
| CWidgetFieldMultiSelectService | ID | Vairākatlases lauks pakalpojumu izvēlei. |
| CWidgetFieldMultiSelectSla | ID | Vairākatlases lauks SLA izvēlei. |
| CWidgetFieldMultiSelectUser | ID | Vairākatlases lauks lietotāju izvēlei. |
| CWidgetFieldNavTree | array of (multiple mixed) | Saglabā karšu navigācijas koka struktūru izmantošanai logrīkā Kartes navigācijas koks. |
| CWidgetFieldNumericBox | string | Lauks peldošā komata skaitļa ievadei. |
| CWidgetFieldPatternSelect | - | Bāzes klase šablonu atlases laukiem, ko paplašina visas CWidgetPatternSelect* klases. |
| CWidgetFieldPatternSelectHost | string | Vairākatlases lauks hostu izvēlei. Atbalsta hostu nosaukumu šablonus. |
| CWidgetFieldPatternSelectItem | string | Vairākatlases lauks vienumu izvēlei. Atbalsta vienumu nosaukumu šablonus. |
| 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 izvēlei. |
| CWidgetFieldReference | string | Saglabā šī logrīka unikālu identifikatoru panelī; izmanto logrīku saziņai. |
| CWidgetFieldSelect | int32 | Nolaižamais atlases lauks. |
| CWidgetFieldSeverities | array of int32 | CWidgetFieldCheckBoxList ar iepriekš iestatītām trigeru nopietnības pakāpēm. |
| CWidgetFieldSparkline | array of (multiple mixed) | Ļauj konfigurēt sparkline diagrammu. |
| CWidgetFieldTags | array of (string, int32, string) | Ļauj konfigurēt vienu vai vairākas birku filtra rindas. |
| CWidgetFieldTextArea | string | Teksta apgabals vairākrindu teksta ievadei. |
| CWidgetFieldTextBox | string | Teksta lauks vienas rindas teksta ievadei. |
| CWidgetFieldThresholds | array of (string, string) | Ļauj konfigurēt krāsu un skaitļu pārus. |
| CWidgetFieldTimePeriod | array of string | Laika perioda izvēles lauks. |
| CWidgetFieldTimeZone | string | Nolaižamais saraksts ar laika joslām. |
| CWidgetFieldUrl | string | Teksta lauks, kas ļauj ievadīt URL. |
Maksimālais garums int32 laukiem ir 10 rakstzīmes, ID laukiem — 20 rakstzīmes, bet string laukiem — 65535 rakstzīmes.
Saliktajiem tipiem (piemēram, array of (string, int32, string)) ierobežojums attiecas uz katru elementu atsevišķi.
Laukam specifiskus garuma ierobežojumus var iestatīt, izmantojot tādas metodes kā setMaxLength().