Skip to content

Commit

Permalink
Make fields for incident age condition intuitive
Browse files Browse the repository at this point in the history
  • Loading branch information
raviks789 committed Apr 24, 2024
1 parent 5a0ac30 commit 283d33d
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 21 deletions.
38 changes: 18 additions & 20 deletions application/forms/EventRuleConfigElements/EscalationCondition.php
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ protected function assemble(): void
]
);

$valUnit = null;
switch ($this->getPopulatedValue('column_' . $i)) {
case 'incident_severity':
$val = $this->createElement(
Expand All @@ -130,28 +131,21 @@ protected function assemble(): void
break;
case 'incident_age':
$val = $this->createElement(
'text',
'number',
$valName,
[
'required' => true,
'class' => ['autosubmit', 'right-operand'],
'validators' => [
new CallbackValidator(function ($value, $validator) {
if (! preg_match('~^\d+(?:\.?\d*)?[hms]{1}$~', $value)) {
$validator->addMessage(
$this->translate(
'Only numbers with optional fractions (separated by a dot)'
. ' and one of these suffixes are allowed: h, m, s'
)
);

return false;
}

$validator->clearMessages();
return true;
})
]
'class' => 'right-operand',
'value' => 1
]
);

$valUnit = $this->createElement(
'select',
'age_unit_' . $i,
[
'options' => ['s' => 's', 'm' => 'm', 'h' => 'h'],
'class' => 'age-unit'
]
);

Expand All @@ -167,6 +161,9 @@ protected function assemble(): void
$this->registerElement($col);
$this->registerElement($op);
$this->registerElement($val);
if ($valUnit) {
$this->registerElement($valUnit);
}

(new EventRuleDecorator())->decorate($val);
$this->conditions[$i] = new EscalationConditionListItem($col, $op, $val, $this->createRemoveButton($i));
Expand Down Expand Up @@ -268,7 +265,8 @@ public function getCondition(): string

$filterStr = $chosenType
. $this->getValue('operator_' . $count)
. ($this->getValue('val_' . $count) ?? ($chosenType === 'incident_severity' ? 'ok' : ''));
. ($this->getValue('val_' . $count) ?? ($chosenType === 'incident_severity' ? 'ok' : ''))
. $this->getValue('age_unit_' . $count, '');

$filter->add(QueryString::parse($filterStr));
}
Expand Down
11 changes: 10 additions & 1 deletion application/forms/EventRuleConfigForm.php
Original file line number Diff line number Diff line change
Expand Up @@ -333,7 +333,16 @@ public function populate($values): self
}

$conditionFormValues['operator_' . $count] = QueryString::getRuleSymbol($filter);
$conditionFormValues['val_' . $count] = $filter->getValue();
$conditionValue = $filter->getValue();
if (
preg_match('~^(\d+(?:\.?\d*))?([hms])$~', $conditionValue, $matches)
&& count($matches) === 3
) {
$conditionFormValues['val_' . $count] = $matches[1];
$conditionFormValues['age_unit_' . $count] = $matches[2];
} else {
$conditionFormValues['val_' . $count] = $conditionValue;
}
}

$formValues['escalation-condition_' . bin2hex($position)] = $conditionFormValues;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,20 @@ class EscalationConditionListItem extends BaseHtmlElement
/** @var FormElement Condition value */
public $conditionVal;

/** @var ?FormElement Condition value */
public $conditionUnit;

public function __construct(
FormElement $conditionType,
FormElement $operator,
FormElement $conditionVal,
?FormElement $conditionUnit,
?SubmitButtonElement $removeButton
) {
$this->conditionType = $conditionType;
$this->operator = $operator;
$this->conditionVal = $conditionVal;
$this->conditionUnit = $conditionUnit;
$this->removeButton = $removeButton;
}

Expand All @@ -44,6 +49,7 @@ protected function assemble(): void
$this->conditionType,
$this->operator,
$this->conditionVal,
$this->conditionUnit,
$this->removeButton
]);
}
Expand Down
6 changes: 6 additions & 0 deletions public/css/event-rule-config.less
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,12 @@
margin: 0;
}

.age-unit {
border-radius: 0.4em;
min-width: 3.5em;
margin-left: 1px;
}

.errors + .remove-button {
margin: 0;
}
Expand Down

0 comments on commit 283d33d

Please sign in to comment.