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().