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