o11y-8.x-1.x-dev/modules/o11y_metrics/modules/o11y_metrics_requests/src/Form/RequestsSettingsForm.php

modules/o11y_metrics/modules/o11y_metrics_requests/src/Form/RequestsSettingsForm.php
<?php

namespace Drupal\o11y_metrics_requests\Form;

use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\o11y_metrics\Traits\FormWithBuckets;
use Drupal\o11y_metrics_requests\EventSubscriber\RequestCollector;
use Prometheus\Histogram;

/**
 * Form to configure settings of o11y_metrics_requests.
 */
class RequestsSettingsForm extends ConfigFormBase {

  use FormWithBuckets;

  /**
   * {@inheritdoc}
   */
  protected function getEditableConfigNames() {
    return [RequestCollector::CONFIG_NAME];
  }

  /**
   * {@inheritdoc}
   */
  public function getFormId() {
    return 'o11y_metrics_requests_settings';
  }

  /**
   * {@inheritdoc}
   */
  public function buildForm(array $form, FormStateInterface $form_state) {
    $config = $this->config($this->getEditableConfigNames()[0]);
    $form['exclude_admin_paths'] = $this->getExcludeAdminPathsFormElement($config->get('exclude_admin_paths') ?? TRUE);
    $form['buckets'] = $this->getBucketsFormElement(
      'requests',
      'seconds',
      RequestCollector::class,
      Histogram::getDefaultBuckets(),
      $config->get('buckets') ?? []
    );
    return parent::buildForm($form, $form_state);
  }

  /**
   * Validates that the buckets are float and in increasing order.
   */
  public function validateForm(array &$form, FormStateInterface $form_state) {
    parent::validateForm($form, $form_state);
    $this->validateBucketsValue($form_state, 'buckets');
  }

  /**
   * {@inheritdoc}
   */
  public function submitForm(array &$form, FormStateInterface $form_state) {
    $config = $this->config($this->getEditableConfigNames()[0]);
    $config
      ->set('buckets', $this->parseEolSeparatedValue($form_state->getValue('buckets') ?? ''))
      ->set('exclude_admin_paths', $form_state->getValue('exclude_admin_paths'))
      ->save();
    // We need to clean data in storage to be able to change the buckets.
    $this->promBridge->removeMetricsOfSource(RequestCollector::class);
    parent::submitForm($form, $form_state);
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc