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.
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')
]
];
}
}
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'))
);
}
}
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();
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';
}
}
};
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. |