Skip to content

Commit 88727e3

Browse files
RotationConfigForm: Add end of day time option to multi day mode
1 parent 98e2258 commit 88727e3

File tree

1 file changed

+24
-21
lines changed

1 file changed

+24
-21
lines changed

application/forms/RotationConfigForm.php

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -895,18 +895,14 @@ protected function assembleMultiDayOptions(FieldsetElement $options): DateTime
895895
$toDays[$i] = sprintf('%s (%s)', $day, $this->translate('Next week'));
896896
}
897897

898-
$options->addElement('hidden', 'to_day');
899-
$options->addElement('hidden', 'to_at');
900-
901-
$options->addElement('select', 'to_day_ignored', [
898+
$options->addElement('select', 'to_day', [
902899
'class' => 'autosubmit',
903900
'required' => true,
904-
'ignore' => true,
905901
'options' => $toDays,
906-
'value' => $options->getValue('to_day', 7),
902+
'value' => 7,
907903
'label' => $this->translate('To', 'notifications.rotation')
908904
]);
909-
$to = $options->getElement('to_day_ignored');
905+
$to = $options->getElement('to_day');
910906

911907
$options->addElement('number', 'interval', [
912908
'required' => true,
@@ -923,14 +919,22 @@ protected function assembleMultiDayOptions(FieldsetElement $options): DateTime
923919
'options' => $timeOptions
924920
]);
925921
$options->registerElement($fromAt);
922+
$selectedFromAt = $fromAt->getValue();
923+
924+
$removeOutOfRangeToAtOptions = function() use ($selectedFromAt, $timeOptions) {
925+
return array_slice(
926+
$timeOptions,
927+
0,
928+
array_search($selectedFromAt, array_keys($timeOptions), true) + 1,
929+
true
930+
);
931+
};
926932

927933
$timeOptionsFirstKey = array_key_first($timeOptions);
928934
$selectedToDay = (int) $to->getValue();
929935
$endOfDay = 'endOfDay';
930936
if ($selectedFromDay === $selectedToDay) {
931-
$selectedFromAt = $fromAt->getValue();
932-
$keyIndex = array_search($selectedFromAt, array_keys($timeOptions));
933-
$timeOptions = array_slice($timeOptions, 0, $keyIndex + 1, true);
937+
$timeOptions = $removeOutOfRangeToAtOptions();
934938
} else {
935939
$timeOptions[$endOfDay] = sprintf(
936940
'%s (%s)',
@@ -939,24 +943,23 @@ protected function assembleMultiDayOptions(FieldsetElement $options): DateTime
939943
);
940944
}
941945

942-
$toAt = $options->createElement('select', 'to_at_ignored', [
946+
$toAt = $options->createElement('select', 'to_at', [
943947
'class' => 'autosubmit',
944948
'required' => true,
945-
'ignore' => true,
946-
'options' => $timeOptions,
947-
'value' => $options->getValue('to_at'),
949+
'options' => $timeOptions
948950
]);
949951
$options->registerElement($toAt);
950952

951-
$selectedToAt = $toAt->getValue();
952-
953-
if ($selectedToAt === $endOfDay) {
953+
if ($toAt->getValue() === $endOfDay) {
954954
$selectedToDay = $selectedToDay === 7 ? 1 : $selectedToDay + 1;
955-
$selectedToAt = $timeOptionsFirstKey;
956-
}
957955

958-
$options->getElement('to_day')->setValue($selectedToDay);
959-
$options->getElement('to_at')->setValue($selectedToAt);
956+
if ($selectedFromDay === $selectedToDay) {
957+
$toAt->setOptions($removeOutOfRangeToAtOptions());
958+
}
959+
960+
$to->setValue($selectedToDay);
961+
$toAt->setValue($timeOptionsFirstKey);
962+
}
960963

961964
$from->prependWrapper(
962965
(new HtmlDocument())->addHtml(

0 commit comments

Comments
 (0)