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
La classe WidgetForm amplia la classe per defecte (CWidgetForm) i conté un conjunt camps CWidgetField que calen 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'ha d'ubicar al directori include. Si la classe té un nom diferent, s'ha d'especificar al paràmetre widget/form_class de l'arxiu manifest.json.
includes/WidgetForm.php exemple
<?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
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.
- addFieldset() - rep una instància de la classe CWidgetFieldsGroupView que combina camps a un contenidor col·lapsable.
- addFieldsGroup() - rep una instància de CWidgetFormFieldsetCollapsibleView que, visualment (amb un contorn), combina camps en un grup.
- 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 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
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 immediatament una instància de classe singleton i s'emmagatzema sota el nom window.my_custom_widget_form. Així, en obrir el formulari per segon cop es tornarà a crear la instància.
La classe JavaScript s'ha d'ubicar al directori views.
views/widget.edit.js.php exemple
<?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
La classe CWidgetField és una classe base des de la qual s'hereten totes les classes de camp de forma (CwidgetFieldCheckBox, CWidgetFieldTextArea, CWidgetFieldRadioButtonList, etc.). Les classes que s'estenen CWidgetField són responsables de rebre, guardar i validar els valors de configuració del giny.
Les següents classes de CWidgetField estan disponibles.
| CWidgetClasse de camp de camp | Tipus de camp de base de dades | Descripció |
|---|---|---|
| CWidgetFieldCheckBox | int32 | Single casella de verificació. |
| CWidgetFieldCheckBoxList | array de int32 | Múltiples caselles de verificació sota un únic camp de configuració. |
| CWidgetFieldColor | string | Camp de selecció de colors. |
| CWidgetFieldColumnsList | array de (múltiples mixtes) | Emmagatzema una taula amb columnes personalitzades de tipus permesos per al seu ús en el giny Top hosts. |
| CWidgetFieldDatePicker | cada | Camp de selecció de dates. |
| CWidgetFieldIntegerBox | int32 | Field per introduir un enter. Es pot utilitzar per configurar valors mínims i màxims. |
| CWidgetFieldLatLng | string | Caixa de text que permet introduir el nivell de zoom de latitud, longitud i zoom de la vitamina coma. |
| CWidgetFieldMultiSelect | Classe base per a camps multiseleccionats, ampliada per totes les classes CWidgetFieldMultiSelect*. | |
| CWidgetFieldMultiSelectAction | ID | Multiselect field for selection actions from the list of actionsdefined in Alerts → Actions. |
| CWidgetFieldMultiSelectgraph | ID | Multiselect camp per seleccionar gràfics personalitzats. |
| CWidgetFieldMultiSelectGraphPrototype | ID | Multiselect camp per seleccionar prototips de grafs personalitzats. |
| CWidgetFieldMultiSelectGroup | ID | Multiselect camp per seleccionar grups d'amfitrió. |
| CWidgetFieldMultiSelectHost | ID | Multiselect camp per triar equips. |
| CWidgetFieldMultiSelectItem | ID | Multiselect camp per triar elements. |
| CWidgetFieldMultiSelectItemPrototype | ID | Multiselect camp per triar prototips d'element. |
| CWidgetFieldMultiSelectMap | ID | Multiselect camp per triar mapes. |
| CWidgetFieldMultiSelectMediaType | ID | Multiselect camp per triar tipus de suport. |
| CWidgetFieldMultiSelectOverrideHost | ID | Multiselect camp per triar una font de dades per a equips des d'un tauler de control o un altre giny. |
| CWidgetFieldMultiSelectService | ID | Multiselect camp per triar serveis. |
| CWidgetFieldMultiSelectSla | ID | Multiselect camp per triar SLAs. |
| CWidgetFieldMultiSelectUser | ID | Multiselect camp per triar usuaris. |
| CWidgetFieldNavTree | array de (múltiples mixtes) | Emmagatzema una estructura d'arbre de navegació de mapes per al seu ús en el giny Arbre de navegació de mapa. |
| CWidgetFieldNumericBox | string | Field per introduir un nombre de flotació. |
| CWidgetFieldPatternSelect | Classe base per a camps de tria de patrons, ampliat per totes les classes CWidgetPatternSelect*. | |
| CWidgetFieldPatternSelectHost | string | Multiselect camp per triar equips. Admet patrons de nom d'equip. |
| CWidgetFieldPaternSelectItem | string | Multiselect camp per seleccionar elements. Admet patrons de nom d'element. |
| CWidgetFieldRadioButtonList | int32 | Grup de radiografia que consta d'una o més caixes de ràdio. |
| CWidgetFieldRangeControl | int32 | Slider per triar un valor de tipus enter. |
| CWidgetFieldReference | string | Emmagatzema un identificador únic per a aquest giny al tauler de control; utilitzat per a la comunicació de ginys. |
| CWidgetFieldSelect | int32 | Dropdown seleccioneu el quadre. |
| CWidgetFieldSeverities | array de int32 | CWidgetFieldCheckBoxList preestablert amb gravetats de gallet. |
| CWidgetFieldTags | array de (cadena, int32, string) | Permet configurar una o més files de filtre d'etiquetes. |
| CWidgetFieldTextArea | string | Text area per introduir text de diverses línies. |
| CWidgetFieldTextBox | string | Text box per introduir text d'una sola línia. |
| CWidgetFieldThresholds | array of (cadena, cadena) | Permet configurar parells de color i nombre. |
| CWidgetFieldTimePeriod | array de cadena | Període de temps seleccionant el camp. |
| CWidgetFieldTimeZone | Dropdown amb zones horàries. | |
| CWidgetFieldUrl | string | Text que permet introduir URL. |
La longitud màxima per als camps int32 és de 10 caràcters, ID camps 20 caràcters, i corda camps 2048 caràcters.
Per als tipus compostos (per exemple, array of (cadena, int32, string)), el límit s'aplica a cada element individualment.
Les restriccions de longitud específiques del camp es poden establir utilitzant mètodes com ara setMaxLength().
::