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 23, 2024
1 parent 06362d1 commit 5e55ce6
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 21 deletions.
43 changes: 23 additions & 20 deletions application/forms/EventRuleConfigElements/EscalationCondition.php
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ protected function assemble(): void
]
);

$valUnit = null;
switch ($this->getPopulatedValue('column_' . $i)) {
case 'incident_severity':
$val = $this->createElement(
Expand All @@ -135,28 +136,25 @@ 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 @@ -172,6 +170,9 @@ protected function assemble(): void
$this->registerElement($col);
$this->registerElement($op);
$this->registerElement($val);
if ($valUnit) {
$this->registerElement($valUnit);
}

(new EventRuleDecorator())->decorate($val);
$removeButton = $this->createRemoveButton($i);
Expand All @@ -180,6 +181,7 @@ protected function assemble(): void
$col,
$op,
$val,
$valUnit,
$removeButton
);
}
Expand Down Expand Up @@ -280,7 +282,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 BaseFormElement Condition value */
public $conditionVal;

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

public function __construct(
BaseFormElement $conditionType,
BaseFormElement $operator,
BaseFormElement $conditionVal,
?BaseFormElement $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 5e55ce6

Please sign in to comment.