This is a translation of the original English documentation page. Help us make it better.

Configuratie

Deze pagina beschrijft klassen die kunnen worden gebruikt om een widgetconfiguratieweergave met aangepaste configuratievelden te maken. De widgetconfiguratieweergave is het deel van de widget waarmee de gebruiker widgetparameters kan configureren voor presentatie.

Widget

Primaire widgetklasse, breidt de basisklasse uit van alle dashboardwidgets - CWidget. Nodig om het standaard widgetgedrag te overschrijven.

De Widget klasse moet zich bevinden in de hoofdmap van de widget (bijvoorbeeld ui/modules/my_custom_widget).

Voorbeeld Widget.php

<?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' => _('Geen gegevens')
                   ]
               ];
           }
       }

WidgetForm

De klasse WidgetForm breidt de standaardklasse CWidgetForm uit en bevat een reeks CWidgetField velden die nodig zijn voor het definiëren van de structuur voor het opslaan van widgetconfiguraties in de database en het afhandelen van invoervalidatie.

De WidgetForm klasse moet zich bevinden in de includes map. Als de klasse een andere naam heeft, moet de naam worden gespecificeerd in de widget/form_class parameter in het manifest.json bestand.

Voorbeeld WidgetForm.php

<?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 function addFields(): self {
               return $this
                   ->addField(
                       (new CWidgetFieldMultiSelectItem('itemid', _('Item')))
                           ->setFlags(CWidgetField::FLAG_NOT_EMPTY | CWidgetField::FLAG_LABEL_ASTERISK)
                           ->setMultiple(false)
                           ->setFilterParameter('numeric', true)
                   )
                   ->addField(
                       new CWidgetFieldTextBox('description', _('Description'))
                   )
                   ->addField(
                       (new CWidgetFieldColor('chart_color', _('Color')))->setDefault('FF0000')
                   );
           }
       }

CWidgetFormView

De klasse CWidgetFormView is vereist voor het specificeren van de presentatielogica van de velden die zijn gedefinieerd in de WidgetForm klasse, waarbij hun uiterlijk en gedrag worden bepaald wanneer ze worden weergegeven in de configuratie weergave.

De klasse CWidgetFormView ondersteunt de volgende methoden:

  • addField() - ontvangt een instantie van de CWidgetFieldView klasse als parameter; elke CWidgetField klasse heeft een respectieve CWidgetFieldView klasse voor gebruik in de widget configuratie weergave.
  • includeJsFile() - stelt u in staat om een JavaScript-bestand toe te voegen aan de widget configuratie weergave.
  • addJavaScript() - stelt u in staat om inline JavaScript toe te voegen dat wordt uitgevoerd zodra de widget configuratie weergave wordt geladen.

De klasse CWidgetFormView moet zich bevinden in de views map.

Voorbeeld widget.edit.php

<?php
           
       /**
        * Mijn aangepaste widget formulierweergave.
        *
        * @var CView $this
        * @var array $data
        */
       
       use Zabbix\Widgets\Fields\CWidgetFieldGraphDataSet;
       
       (new CWidgetFormView($data))
           ->addField(
               new CWidgetFieldMultiSelectItemView($data['fields']['itemid'], $data['captions']['items']['itemid'])
           )
           ->addField(
               new CWidgetFieldTextBoxView($data['fields']['description']),
               'js-advanced-configuration'
           )
           ->addField(
               new CWidgetFieldColorView($data['fields']['chart_color']),
               'js-advanced-configuration'
           )
           ->includeJsFile('widget.edit.js.php')
           ->addJavaScript('my_widget_form.init('.json_encode([
               'color_palette' => CWidgetFieldGraphDataSet::DEFAULT_COLOR_PALETTE
           ], JSON_THROW_ON_ERROR).');')
           ->show();

JavaScript

Een JavaScript-klasse kan worden gebruikt om dynamisch gedrag en interactiviteit aan de widget configuratieweergave toe te voegen. Bijvoorbeeld, u kunt een kleurkiezer initialiseren die is gedefinieerd in de CWidgetFormView klasse.

De JavaScript-klasse moet met het formulier worden geladen, daarom moet deze worden verwezen in de CWidgetFormView klasse door de methoden includeJsFile() en addJavaScript() te gebruiken.

In het onderstaande voorbeeld wordt direct een instantie van een singleton-klasse aangemaakt en opgeslagen onder de naam window.my_custom_widget_form. Hierdoor wordt bij het opnieuw openen van het formulier de instantie opnieuw gemaakt.

De JavaScript-klasse moet zich bevinden in de views map.

Voorbeeld widget.edit.js.php

<?php
       
       use Modules\LessonGaugeChart\Widget;
       
       ?>
       
       window.widget_lesson_gauge_chart_form = new class {
       
           init({color_palette}) {
               this._advanced_configuration = document.getElementById('adv_conf');
       
               this._advanced_configuration.addEventListener('change', () => this.updateForm());
       
               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'); });
               }
       
               this.updateForm();
           }
       
           updateForm() {
               const show_advanced_configuration = this._advanced_configuration.checked;
       
               for (const element of this._form.querySelectorAll('.js-advanced-configuration')) {
                   element.style.display = show_advanced_configuration ? '' : 'none';
               }
           }
       };

CWidgetField

De klasse CWidgetField is een basisklasse waarvan alle klassen voor formuliervelden (CWidgetFieldCheckBox, CWidgetFieldTextArea, CWidgetFieldRadioButtonList, etc.) zijn afgeleid. Klassen die CWidgetField uitbreiden, zijn verantwoordelijk voor het ontvangen, opslaan en valideren van configuratiewaarden van de widget.

De volgende CWidgetField klassen zijn beschikbaar.

CWidgetField klasse Database veldtype Omschrijving
CWidgetFieldCheckBox int32 Enkele selectievakje.
CWidgetFieldCheckBoxList array van int32 Meerdere selectievakjes onder een enkel configuratieveld.
CWidgetFieldColor string Veld voor kleurselectie.
CWidgetFieldDatePicker string Veld voor het selecteren van een datum.
CWidgetFieldHostPatternSelect string Meervoudig selectieveld waarmee één of meerdere hosts kunnen worden geselecteerd. Ondersteunt het definiëren van hostnaampatronen (alle overeenkomende hosts worden geselecteerd).
CWidgetFieldIntegerBox int32 Veld om een ​​geheel getal in te voeren. Kan worden gebruikt om minimale en maximale waarden te configureren.
CWidgetFieldLatLng string Tekstvak waarmee breedtegraad, lengtegraad en zoomniveau van de kaart kunnen worden ingevoerd, gescheiden door komma's.
CWidgetFieldMultiSelectAction ID Meervoudig selectieveld om acties te selecteren (uit de lijst met acties die zijn gedefinieerd in Alerts → Actions).
CWidgetFieldMultiSelectGraph ID Meervoudig selectieveld om aangepaste grafieken te selecteren.
CWidgetFieldMultiSelectGraphPrototype ID Meervoudig selectieveld om aangepaste grafiekprototypes te selecteren.
CWidgetFieldMultiSelectGroup ID Meervoudig selectieveld om hostgroepen te selecteren.
CWidgetFieldMultiSelectHost ID Meervoudig selectieveld om hosts te selecteren.
CWidgetFieldMultiSelectItem ID Meervoudig selectieveld om items te selecteren.
CWidgetFieldMultiSelectItemPrototype ID Meervoudig selectieveld om itemprototypes te selecteren.
CWidgetFieldMultiSelectMediaType ID Meervoudig selectieveld om mediatypes te selecteren.
CWidgetFieldMultiSelectService ID Meervoudig selectieveld om services te selecteren.
CWidgetFieldMultiSelectSla ID Meervoudig selectieveld om SLA's te selecteren.
CWidgetFieldMultiSelectUser ID Meervoudig selectieveld om gebruikers te selecteren.
CWidgetFieldNumericBox string Veld om een ​​getal met zwevende komma in te voeren.
CWidgetFieldRadioButtonList int32 Groep met keuzerondjes bestaande uit één of meerdere keuzerondjes.
CWidgetFieldRangeControl int32 Schuifregelaar om een ​​integerwaarde te selecteren.
CWidgetFieldSelect int32 Dropdown selectievakje.
CWidgetFieldSeverities array van int32 CWidgetFieldCheckBoxList vooringesteld met triggerprioriteiten.
CWidgetFieldTags array van (string, int32, string) Hiermee kunt u één of meer tagfilterregels configureren.
CWidgetFieldTextArea string Tekstgebied voor het invoeren van meerdere regels tekst.
CWidgetFieldTextBox string Tekstvak voor het invoeren van één regel tekst.
CWidgetFieldTimeZone string Dropdown met tijdzones.
CWidgetFieldUrl string Tekstvak waarmee URL's kunnen worden ingevoerd.

De volgende CWidgetField klassen zijn gemaakt voor specifieke widgets. Deze klassen hebben zeer specifieke toepassingen, maar ze kunnen ook worden hergebruikt indien nodig.

CWidgetField klasse Database veldtype Omschrijving
CWidgetFieldColumnsList array van (multiple mixed) Voor de widget Top hosts. Maak een tabel met aangepaste kolommen van toegestane typen.
CWidgetFieldGraphDataSet array van (multiple mixed) Voor de widget Graph. Configureer dataset configuratie en alle gerelateerde opties.
CWidgetFieldGraphOverride array van (multiple mixed) Voor de widget Graph. Configureer overrides voor specifieke hosts/items. Elke datasetconfiguratie kan worden overschreven.
CWidgetFieldNavTree string Voor de widget Map navigation tree. Vervangt de widgetweergave in de bewerkingsmodus door de kaartselectieboom.
CWidgetFieldReference string Voor de widget Map navigation tree. Maakt een unieke identificatiecode voor deze widget op het dashboard. Het wordt gebruikt om naar deze widget te verwijzen vanuit andere widgets.
CWidgetFieldSelectResource ID Voor de widget Map. Hiermee kunt u een Zabbix-netwerkkaart selecteren.
CWidgetFieldThresholds array van (string, string) Voor de widget Top hosts. Hiermee kunt u kleur- en getallenparen configureren.
CWidgetFieldWidgetSelect string Voor de widget Map. Hiermee kunt u een kaartnavigatieboom selecteren vanuit het huidige dashboard. Moet worden gebruikt in combinatie met CWidgetFieldReference in de widget Map navigation tree.