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 Áú»¢¶Ä²©\Core\CWidget;
class Widget extends CWidget {
public const MY_CONSTANT = 0;
public function getTranslationStrings(): array {
return [
'class.widget.js' => [
'No data' => _('No data')
]
];
}
}
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 Áú»¢¶Ä²©\Widgets\{
CWidgetField,
CWidgetForm
};
use Áú»¢¶Ä²©\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')
);
}
}
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:
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();
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'); });
}
}
};
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 s¨®n disponibles.
Classe CWidgetField | Tipus de camp de base de dades | ¶Ù±ð²õ³¦°ù¾±±è³¦¾±¨® |
---|---|---|
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 tria de color. |
CWidgetFieldDatePicker | cadena | Camp de tria de data. |
CWidgetFieldHostPatternSelect | cadena | Camp de tria m¨²ltiple que permet triar un o diversos equips. Accepta la definici¨® de patrons de nom d'equip (es triaran tots els equips coincidents). |
CWidgetFieldIntegerBox | int32 | Camp per introduir un nombre enter. Es pot emprar per configurar valors m¨ªnims i m¨¤xims. |
CWidgetFieldLatLng | cadena | Quadre de text que permet introduir la latitud, longitud i el nivell de zoom del mapa separats per comes. |
CWidgetFieldMultiSelectAction | ID | Camp de tria m¨²ltiple per triar accions (de la llista d'accions definides a Alertes ¡ú Accions). |
CWidgetFieldMultiSelectGraph | ID | Camp de tria m¨²ltiple per triar gr¨¤fics personalitzats. |
CWidgetFieldMultiSelectGraphPrototype | ID | Camp de tria m¨²ltiple per triar prototips de gr¨¤fics personalitzats. |
CWidgetFieldMultiSelectGroup | ID | Camp de tria m¨²ltiple per triar grups d'equips. |
CWidgetFieldMultiSelectHost | ID | Camp de tria m¨²ltiple per triar equips. |
CWidgetFieldMultiSelectItem | ID | Camp de tria m¨²ltiple per triar elements. |
CWidgetFieldMultiSelectItemPattern | ID | Camp de tria m¨²ltiple per triar patrons d'elements. |
CWidgetFieldMultiSelectItemPrototype | ID | Camp de tria m¨²ltiple per triar prototips d'elements. |
CWidgetFieldMultiSelectMap | ID | Camp de tria m¨²ltiple per triar mapes. |
CWidgetFieldMultiSelectMediaType | ID | Camp de tria m¨²ltiple per triar tipus de suports. |
CWidgetFieldMultiSelectOverrideHost | ID | Camp de tria m¨²ltiple per triar una font de dades (tauler de control o un altre giny) que cont¨¦ un equip per al qual el giny pot mostrar dades. |
CWidgetFieldMultiSelectService | ID | Camp de tria m¨²ltiple per triar serveis. |
CWidgetFieldMultiSelectSla | ID | Camp de tria m¨²ltiple per triar SLA. |
CWidgetFieldMultiSelectUser | ID | Camp de tria m¨²ltiple per triar usuaris. |
CWidgetFieldNumericBox | cadena | Camp per introduir un nombre 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. |
CWidgetFieldReference | cadena | Crea un identificador ¨²nic per a aquest giny al tauler. S'utilitza per fer refer¨¨ncia a aquest giny des d'altres ginys. |
CWidgetFieldSelect | int32 | Caixa de tria desplegable. |
CWidgetFieldSeverities | matriu d'int32 | CWidgetFieldCheckBoxList preestablert amb gravetat del trigger. |
CWidgetFieldTags | matriu de (cadena, int32, cadena) | Permet configurar una o m¨¦s files de filtre d'etiquetes. |
CWidgetFieldTextArea | cadena | ?rea de text per introduir text de diverses l¨ªnies. |
CWidgetFieldTextBox | cadena | Quadre de text per introduir text d'una sola l¨ªnia. |
CWidgetFieldTimePeriod | matriu de cadena | Camp de tria del per¨ªode de temps. |
CWidgetFieldTimeZone | cadena | Men¨² desplegable amb zones hor¨¤ries. |
CWidgetFieldThresholds | matriu de (cadena, cadena) | Permet configurar parells de colors i nombres. |
CWidgetFieldUrl | cadena | Caixa de text que permet introduir la 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 escau.
Classe CWidgetField | Tipus de camp de base de dades | ¶Ù±ð²õ³¦°ù¾±±è³¦¾±¨® |
---|---|---|
CWidgetFieldColumnsList | matriu de (m¨²ltiples mixtes) | Per al giny Equips principals. Creeu una taula amb columnes personalitzades dels tipus permesos. |
CWidgetFieldNavTree | cadena | Per al giny Arbre de navegaci¨® del mapa. Substitueix la vista del giny en mode d'edici¨® per l'arbre de tria del mapa. |