Configuració

La configuració del giny forma part del mòdul del giny que permet a l'usuari definir la configuració del ginyper a presentar. Aquesta pàgina descriu classes que es poden emprar per crear un formulari de configuració de ginys amb camps personalitzats.

Giny

Classe de giny principal que amplia la classe per defecte CWidget. Necessari per substituir els mètodes de giny predeterminats o per afegir constants.

La classe Widget ha d'ubicar-se a la carpeta arrel del giny (per exemple, zabbix/ui/modules/my_custom_widget).

Widget.php exemple

<?php
           
       namespace Modules\WidgetNameHere;
           
       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

Conté un conjunt de camps CWidgetField necessaris per definir l'estructura d'emmagatzematge de la configuració del giny a la base de dades i gestionar la validació d'entrada.

La classe WidgetForm s'hereta de CWidgetForm i s'ha d'ubicar al directori include. Pot tindre un nom diferent, en aquest cas el nom s'ha d'especificar a la secció manifest.json widget/form_class.

includes/WidgetForm.php exemple

<?php
           
       namespace Modules\WidgetNameHere\Includes;
           
       use Modules\WidgetNameHere\Widget;
       use Zabbix\Widgets\CWidgetField;
       use Zabbix\Widgets\CWidgetForm;
           
       use Zabbix\Widgets\Fields\CWidgetFieldMultiSelectItem;
       use Zabbix\Widgets\Fields\CWidgetFieldTextBox;
       
       
       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'))
                   );
           }
       }

CWidgetFormView

La classe CWidgetFormView és necessària per especificar la lògica de presentació dels camps definits a la classe WidgetForm, determinant-ne l'aparença i el comportament quan es representen a la vista de configuració.

La classe CWidgetFormView admet els mètodes següents:

-addField() - rep una instància de la classe CWidgetFieldView com a paràmetre; cada classe CWidgetField té una classe respectiva CWidgetFieldView per emprar-la a la vista de configuració del giny. -includeJsFile() - permet afegir un fitxer JavaScript a la vista de configuració del giny. -addJavaScript() - permet afegir JavaScript en línia que s'executarà tan bon punt es carregui la vista de configuració del giny.

La classe CWidgetFormView s'ha d'ubicar al directori views.

exemple de views/widget.edit.php

<?php
           
       /**
        * La meva vista de formulari de giny personalitzada.
        *
        * @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

Es pot emprar una classe JavaScript per afegir comportament dinàmic i interactivitat a la vista de configuració del giny. Per exemple, podeu inicialitzar un selector de color, definit a la classe CWidgetFormView.

La classe JavaScript s'ha de carregar amb el formulari, per tant, s'ha de fer referència a la classe CWidgetFormView emprant els mètodes includeJsFile() i addJavaScript().

A l'exemple següent, es crea una instància de classe singleton i s'emmagatzema sota el nom window.my_custom_widget_form. Així, en obrir el formulari per segona vegada es tornarà a crear la instància.

La classe JavaScript s'ha d'ubicar al directori views.

exemple views/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

La classe CWidgetField és una classe base de la qual s'hereten totes les classes de camp de formulari (CWidgetFieldCheckBox, CWidgetFieldTextArea, CWidgetFieldRadioButtonList, etc.). Les classes que estenen CWidgetField són les responsables de rebre, desar i validar els valors de configuració del giny.

Les següents classes CWidgetField estan disponibles.

Classe CWidgetField Tipus de camp de base de dades Descripció
CWidgetFieldCheckBox int32 Caixa de verificació única.
CWidgetFieldCheckBoxList array of int32 Múltiples caselles de verificació sota un sol camp de configuració.
CWidgetFieldColor cadena Camp de selecció de color.
CWidgetFieldDatePicker string Camp de selecció de data.
CWidgetFieldHostPatternSelect string Camp de selecció múltiple que permet seleccionar un o diversos amfitrions. Admet la definició de patrons de nom d'amfitrió (se seleccionaran tots els amfitrions coincidents).
CWidgetFieldIntegerBox int32 Camp per introduir un nombre enter. Es pot utilitzar per configurar valors mínims i màxims.
CWidgetFieldLatLng string Quadre de text que permet introduir la latitud, la longitud i el nivell de zoom del mapa separats per comes.
CWidgetFieldMultiSelectAction ID Camp de selecció múltiple per seleccionar accions (de la llista d'accions definides a Alertes → Accions).
CWidgetFieldMultiSelectGraph ID Camp de selecció múltiple per seleccionar gràfics personalitzats.
CWidgetFieldMultiSelectGraphPrototype ID Camp de selecció múltiple per seleccionar prototips de gràfics personalitzats.
CWidgetFieldMultiSelectGroup ID Camp de selecció múltiple per seleccionar grups d'amfitrió.
CWidgetFieldMultiSelectHost ID Camp de selecció múltiple per seleccionar amfitrions.
CWidgetFieldMultiSelectItem ID Camp de selecció múltiple per seleccionar elements.
CWidgetFieldMultiSelectItemPrototype ID Camp de selecció múltiple per seleccionar prototips d'elements.
CWidgetFieldMultiSelectMediaType ID Camp de selecció múltiple per seleccionar tipus de suports.
CWidgetFieldMultiSelectService ID Camp de selecció múltiple per seleccionar serveis.
CWidgetFieldMultiSelectSla ID Camp de selecció múltiple per seleccionar SLA.
CWidgetFieldMultiSelectUser ID Camp de selecció múltiple per seleccionar usuaris.
CWidgetFieldNumericBox string Camp per introduir un número flotant.
CWidgetFieldRadioButtonList int32 Grup de caixes de ràdio que consta d'una o més caixes de ràdio.
CWidgetFieldRangeControl int32 Lliscant per triar un valor de tipus enter.
CWidgetFieldSelect int32 Caixa de selecció desplegable.
CWidgetFieldSeverities matriu d'int32 CWidgetFieldCheckBoxList predefinit amb gravetats de trigger.
CWidgetFieldTags matriu de (cadena, int32, cadena) Permet configurar una o més files de filtre d'etiquetes.
CWidgetFieldTextArea string Àrea de text per introduir text de diverses línies.
CWidgetFieldTextBox string Quadre de text per introduir text d'una sola línia.
CWidgetFieldTimeZone string Menú desplegable amb zones horàries.
CWidgetFieldUrl string Caixa de text que permet introduir URL.

Les següents classes CWidgetField s'han creat per a ginys concrets. Aquestes classes tenen casos d'ús molt concrets, però també es poden reutilitzar si cal.

Classe CWidgetField Tipus de camp de base de dades Descripció
CWidgetFieldColumnsList matriu de (múltiples mixtes) Per al giny Equips principals. Creeu una taula amb columnes personalitzades dels tipus permesos.
CWidgetFieldGraphDataSet matriu de (múltiples mixtes) Per al giny Graph. Configura la configuració del conjunt de dades i totes les opcions relacionades.
CWidgetFieldGraphOverride matriu de (múltiples mixtes) Per al giny Graph. Substitucions de configuració per a equips/elements específics. Qualsevol configuració de conjunt de dades es pot anul·lar.
CWidgetFieldNavTree string Per al giny Arbre de navegació del mapa. Substitueix la vista del giny en mode d'edició per l'arbre de selecció del mapa.
CWidgetFieldReference string Per al giny Arbre de navegació del mapa. Crea un identificador únic per a aquest giny al tauler. S'empra per fer referència a aquest gint des d'altres ginys.
CWidgetFieldSelectResource ID Per al giny Map. Permet seleccionar el mapa de la xarxa Zabbix.
CWidgetFieldThresholds matriu de (cadena, cadena) Per al giny Equips principals. Permet configurar parells de colors i números.
CWidgetFieldWidgetSelect cadena Per al giny Map. Permet seleccionar un arbre de navegació del mapa del tauler de control actual. S'ha d'utilitzar en combinació amb CWidgetFieldReference al giny Arbre de navegació del mapa.