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();
JavaScript kan worden gebruikt om dynamisch gedrag en interactiviteit toe te voegen aan de widgetconfiguratieweergave. U kunt bijvoorbeeld een kleurenkiezer initialiseren, gedefinieerd in de klasse CWidgetFormView.
Het JavaScript moet worden geladen met het formulier, daarom moet ernaar worden verwezen in de klasse CWidgetFormView met behulp van de methoden includeJsFile() en addJavaScript().
In het onderstaande voorbeeld wordt onmiddellijk een singleton-klasse-instantie gemaakt en opgeslagen onder de naam window.my_custom_widget_form. Als u het formulier voor de tweede keer opent, wordt de instantie opnieuw gemaakt.
Het JavaScript moet zich in de map views bevinden.
views/widget.edit.js.php voorbeeld
<?php
gebruik Modules\MyCustomWidget\Widget;
?>
window.my_custom_widget_form = nieuwe klasse {
init({color_palette}) {
colorPalette.setThemeColors(color_palette);
for (const colorpicker van jQuery('.<?= ZBX_STYLE_COLOR_PICKER ?> input')) {
jQuery(colorpicker).colorpicker();
}
const overlay = overlays_stack.getById('widget_properties');
voor (const gebeurtenis van ['overlay.reload', 'overlay.close']) {
overlay.$dialogue[0].addEventListener(gebeurtenis, () => { jQuery.colorpicker('hide'); });
}
}
};
De klasse CWidgetField is een basisklasse waarvan alle formulierveldklassen (CWidgetFieldCheckBox, CWidgetFieldTextArea, CWidgetFieldRadioButtonList, enz.) worden geërfd. Klassen die CWidgetField uitbreiden, zijn verantwoordelijk voor het ontvangen, opslaan en valideren van widgetconfiguratiewaarden.
De volgende CWidgetField-klassen zijn beschikbaar.
CWidgetField-klasse | Databaseveldtype | Beschrijving |
---|---|---|
CWidgetFieldCheckBox | int32 | Enkel selectievakje. |
CWidgetFieldCheckBoxList | array van int32 | Meerdere selectievakjes onder één configuratieveld. |
CWidgetFieldColor | string | Kleurselectieveld. |
CWidgetFieldDatePicker | string | Datumselectieveld. |
CWidgetFieldHostPatternSelect | string | Multiselectveld waarmee u één of meerdere hosts kunt selecteren. 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 minimum- en maximumwaarden te configureren. |
CWidgetFieldLatLng | string | Tekstvak waarmee u door komma's gescheiden breedtegraad, lengtegraad en kaartzoomniveau kunt invoeren. |
CWidgetFieldMultiSelectAction | ID | Multiselectveld voor het selecteren van acties (uit de lijst met acties die zijn gedefinieerd in Alerts → Actions). |
CWidgetFieldMultiSelectGraph | ID | Multiselectveld voor het selecteren van aangepaste grafieken. |
CWidgetFieldMultiSelectGraphPrototype | ID | Multiselect-veld voor het selecteren van aangepaste grafiekprototypes. |
CWidgetFieldMultiSelectGroup | ID | Multiselect-veld voor het selecteren van hostgroepen. |
CWidgetFieldMultiSelectHost | ID | Multiselect-veld voor het selecteren van hosts. |
CWidgetFieldMultiSelectItem | ID | Multiselect-veld voor het selecteren van items. |
CWidgetFieldMultiSelectItemPattern | ID | Multiselect-veld voor het selecteren van itempatronen. |
CWidgetFieldMultiSelectItemPrototype | ID | Multiselect-veld voor het selecteren van itemprototypes. |
CWidgetFieldMultiSelectMap | ID | Multiselect-veld voor het selecteren van kaarten. |
CWidgetFieldMultiSelectMediaType | ID | Multiselect-veld voor het selecteren van mediatypen. |
CWidgetFieldMultiSelectOverrideHost | ID | Multiselectveld voor het selecteren van een gegevensbron (dashboard of andere widget) met een host waarvoor de widget gegevens kan weergeven. |
CWidgetFieldMultiSelectService | ID | Multiselectveld voor het selecteren van services. |
CWidgetFieldMultiSelectSla | ID | Multiselectveld voor het selecteren van SLA's. |
CWidgetFieldMultiSelectUser | ID | Multiselectveld voor het selecteren van gebruikers. |
CWidgetFieldNumericBox | string | Veld om een float-getal in te voeren. |
CWidgetFieldRadioButtonList | int32 | Radioboxgroep die bestaat uit een of meer radioboxen. |
CWidgetFieldRangeControl | int32 | Schuifregelaar om een integer-type waarde te selecteren. |
CWidgetFieldReference | string | Maakt een unieke id voor deze widget op het dashboard. Het wordt gebruikt om te verwijzen naar deze widget vanuit andere widgets. |
CWidgetFieldSelect | int32 | Dropdown-selectievak. |
CWidgetFieldSeverities | array van int32 | CWidgetFieldCheckBoxList vooraf ingesteld met trigger-ernst. |
CWidgetFieldTags | array van (string, int32, string) | Maakt het mogelijk om een of meer tagfilterrijen te configureren. |
CWidgetFieldTextArea | string | Tekstgebied voor het invoeren van tekst met meerdere regels. |
CWidgetFieldTextBox | string | Tekstvak voor het invoeren van tekst met één regel. |
CWidgetFieldTimePeriod | array van string | Tijdsperiode-selectieveld. |
CWidgetFieldTimeZone | string | Dropdown met tijdzones. |
CWidgetFieldThresholds | array van (string, string) | Hiermee kunt u kleur- en nummerparen configureren. |
CWidgetFieldUrl | string | Tekstvak waarmee u URL's kunt invoeren. |
De volgende CWidgetField-klassen zijn gemaakt voor specifieke widgets. Deze klassen hebben zeer specifieke use cases, maar ze kunnen indien nodig ook opnieuw worden gebruikt.
CWidgetField-klasse | Databaseveldtype | Beschrijving |
---|---|---|
CWidgetFieldColumnsList | array van (meerdere gemengde) | Voor Top hosts-widget. Maak een tabel met aangepaste kolommen van toegestane typen. |
CWidgetFieldNavTree | string | Voor Map navigation tree-widget. Vervangt de widgetweergave in de bewerkingsmodus door de mapselectieboom. |