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 d35dd96 commit aab2015
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 21 deletions.
45 changes: 25 additions & 20 deletions application/forms/EventRuleConfigElements/EscalationCondition.php
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@ protected function assemble(): void
]
);

$valUnit = null;
switch ($this->getPopulatedValue('column_' . $i)) {
case 'incident_severity':
$val = $this->createElement(
Expand Down Expand Up @@ -148,28 +149,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 @@ -185,6 +183,7 @@ protected function assemble(): void
'value' => 'incident_age'
]);

$this->registerElement($valUnit);
break;
default:
$val = $this->createElement('text', $valName, [
Expand All @@ -205,6 +204,7 @@ protected function assemble(): void
$col,
$op,
$val,
$valUnit,
$removeButton
);
}
Expand All @@ -221,6 +221,10 @@ protected function assemble(): void
$this->conditions[$nextCount]->conditionType->setName('column_' . $n);
$this->conditions[$nextCount]->operator->setName('operator_' . $n);
$this->conditions[$nextCount]->conditionVal->setName('val_' . $n);
if ($this->conditions[$nextCount]->conditionUnit) {
$this->conditions[$nextCount]->conditionUnit->setName('age_unit_' . $n);
}

if ($conditionCount === 1) {
$this->conditions[$nextCount]->removeButton = null;
} elseif ($this->conditions[$nextCount]->removeButton) {
Expand Down Expand Up @@ -297,7 +301,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
9 changes: 8 additions & 1 deletion application/forms/EventRuleConfigForm.php
Original file line number Diff line number Diff line change
Expand Up @@ -333,7 +333,14 @@ public function populate($values): self
}

$conditionFormValues['operator_' . $count] = QueryString::getRuleSymbol($filter);
$conditionFormValues['val_' . $count] = $filter->getValue();
$conditionValue = $filter->getValue();
$incidentAgeCondition = preg_split('~^\d+(?:\.?\d*)?[hms]$~', $filter->getValue());
if ($incidentAgeCondition !== false && count($incidentAgeCondition) === 2) {
$conditionFormValues['val_' . $count] = $incidentAgeCondition[0];
$conditionFormValues['age_unit_' . $count] = $incidentAgeCondition[1];
} 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 aab2015

Please sign in to comment.