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.
CWidgetFieldHostPatternSelect string Vairākatlases lauks, kas ļauj atlasīt vienu vai vairākus hostus. Atbalsta hostu nosaukumu šablonu definēšanu (tiks atlasīti visi atbilstošie hosti).
CWidgetFieldIntegerBox int32 Lauks vesela skaitļa ievadei. Var izmantot minimālo un maksimālo vērtību konfigurēšanai.
CWidgetFieldLatLng string Teksta lauks, kas ļauj ievadīt ar komatiem atdalītu platumu, garumu un kartes tālummaiņas līmeni.
CWidgetFieldMultiSelectAction ID Vairākatlases lauks darbību atlasīšanai (no darbību saraksta, kas definētas sadaļā Brīdinājumi → Darbības).
CWidgetFieldMultiSelectGraph ID Vairākatlases lauks pielāgotu grafiku atlasīšanai.
CWidgetFieldMultiSelectGraphPrototype ID Vairākatlases lauks pielāgotu grafiku prototipu atlasīšanai.
CWidgetFieldMultiSelectGroup ID Vairākatlases lauks hostu grupu atlasīšanai.
CWidgetFieldMultiSelectHost ID Vairākatlases lauks hostu atlasīšanai.
CWidgetFieldMultiSelectItem ID Vairākatlases lauks vienumu atlasīšanai.
CWidgetFieldMultiSelectItemPattern ID Vairākatlases lauks vienumu šablonu atlasīšanai.
CWidgetFieldMultiSelectItemPrototype ID Vairākatlases lauks vienumu prototipu atlasīšanai.
CWidgetFieldMultiSelectMap ID Vairākatlases lauks karšu atlasīšanai.
CWidgetFieldMultiSelectMediaType ID Vairākatlases lauks mediju tipu atlasīšanai.
CWidgetFieldMultiSelectOverrideHost ID Vairākatlases lauks datu avota atlasīšanai (panelis vai cits logrīks), kas satur hostu, kuram logrīks var attēlot datus.
CWidgetFieldMultiSelectService ID Vairākatlases lauks pakalpojumu atlasīšanai.
CWidgetFieldMultiSelectSla ID Vairākatlases lauks SLA atlasīšanai.
CWidgetFieldMultiSelectUser ID Vairākatlases lauks lietotāju atlasīšanai.
CWidgetFieldNumericBox string Lauks peldošā komata skaitļa ievadei.
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 atlasīšanai.
CWidgetFieldReference string Izveido unikālu identifikatoru šim logrīkam panelī. To izmanto, lai uz šo logrīku atsauktos no citiem logrīkiem.
CWidgetFieldSelect int32 Nolaižamais atlases lauks.
CWidgetFieldSeverities array of int32 CWidgetFieldCheckBoxList priekšiestatījums ar trigeru nopietnības līmeņiem.
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.
CWidgetFieldTimePeriod array of string Laika perioda atlases lauks.
CWidgetFieldTimeZone string Nolaižamais saraksts ar laika joslām.
CWidgetFieldThresholds array of (string, string) Ļauj konfigurēt krāsu un skaitļu pārus.
CWidgetFieldUrl string Teksta lauks, kas ļauj ievadīt URL.

Tālāk norādītās CWidgetField klases ir izveidotas konkrētiem logrīkiem. Šīm klasēm ir ļoti specifiski lietošanas gadījumi, taču vajadzības gadījumā tās var izmantot atkārtoti.

CWidgetField class Database field type Description
CWidgetFieldColumnsList array of (multiple mixed) Logrīkam Top hosts. Izveido tabulu ar pielāgotām atļauto tipu kolonnām.
CWidgetFieldNavTree string Logrīkam Map navigation tree. Rediģēšanas režīmā aizstāj logrīka skatu ar kartes atlases koku.