Fixup update pattern settings

This commit is contained in:
Johannes Zellner
2025-04-24 16:35:44 +02:00
parent 5acd7c3e99
commit ddf98937d6
2 changed files with 20 additions and 19 deletions
+18 -18
View File
@@ -15,17 +15,17 @@ const dashboardModel = DashboardModel.create();
// values correspond to cron days
const cronDays = [
{ id: 0, name: 'Sunday', value: 0 },
{ id: 1, name: 'Monday', value: 1 },
{ id: 2, name: 'Tuesday', value: 2 },
{ id: 3, name: 'Wednesday', value: 3 },
{ id: 4, name: 'Thursday', value: 4 },
{ id: 5, name: 'Friday', value: 5 },
{ id: 6, name: 'Saturday', value: 6 },
{ name: 'Sunday', value: 0 },
{ name: 'Monday', value: 1 },
{ name: 'Tuesday', value: 2 },
{ name: 'Wednesday', value: 3 },
{ name: 'Thursday', value: 4 },
{ name: 'Friday', value: 5 },
{ name: 'Saturday', value: 6 },
];
// generates 24h time sets (instead of american 12h) to avoid having to translate everything to locales eg. 12:00
const cronHours = Array.from({ length: 24 }).map((v, i) => { return { name: (i < 10 ? '0' : '') + i + ':00', value: i, id: i }; });
const cronHours = Array.from({ length: 24 }).map((v, i) => { return { name: (i < 10 ? '0' : '') + i + ':00', value: i }; });
function prettyAutoUpdateSchedule(pattern) {
if (!pattern) return '';
@@ -88,10 +88,10 @@ function onShowConfigure() {
const hours = tmp[2] ? tmp[2].split(',') : [];
const days = tmp[5] ? tmp[5].split(',') : [];
if (days[0] === '*') configureDays.value = cronDays;
else configureDays.value = days.map(day => { return cronDays[parseInt(day, 10)]; });
else configureDays.value = days.map(day => { return parseInt(day, 10); });
try {
configureHours.value = hours.map(hour => { return cronHours[parseInt(hour, 10)]; });
configureHours.value = hours.map(hour => { return parseInt(hour, 10); });
} catch (error) {
console.error('Error parsing hour', error);
}
@@ -104,11 +104,11 @@ async function onSubmitConfigure() {
if (configureType.value === 'pattern') {
let daysPattern;
if (configureDays.value.length === 7) daysPattern = '*';
else daysPattern = configureDays.value.map(d => { return d.value; });
else daysPattern = configureDays.value.join(',');
let hoursPattern;
if (configureHours.value.length === 24) hoursPattern = '*';
else hoursPattern = configureHours.value.map(h => { return h.value; });
else hoursPattern = configureHours.value.join(',');
pattern ='00 00 ' + hoursPattern + ' * * ' + daysPattern;
}
@@ -173,6 +173,7 @@ onMounted(async () => {
<Dialog ref="configureDialog"
:title="$t('settings.updateScheduleDialog.title')"
:confirm-label="$t('main.dialog.save')"
:confirm-active="configureType === 'never' ? true : (configureHours.length > 0 && configureDays.length > 0)"
:reject-label="$t('main.dialog.cancel')"
reject-style="secondary"
@confirm="onSubmitConfigure()"
@@ -182,14 +183,13 @@ onMounted(async () => {
<p class="has-error text-center" v-show="configureError">{{ configureError }}</p>
<Radiobutton v-model="configureType" value="never" :label="$t('settings.updateScheduleDialog.disableCheckbox')" />
<br/>
<Radiobutton v-model="configureType" value="pattern" :label="$t('settings.updateScheduleDialog.enableCheckbox')" />
<Radiobutton v-model="configureType" value="pattern" :label="$t('settings.updateScheduleDialog.enableCheckbox')" style="margin-top: 10px"/>
<div v-show="configureType === 'pattern'" style="display: flex; gap: 10px;">
<div>{{ $t('settings.updateScheduleDialog.days') }}: <MultiSelect v-model="configureDays" :options="cronDays" option-label="name" /></div>
<div>{{ $t('settings.updateScheduleDialog.hours') }}: <MultiSelect v-model="configureHours" :options="cronHours" option-label="name" /></div>
<div v-show="configureType === 'pattern'" style="display: flex; gap: 10px; align-items: center; margin-top: 10px">
<div>{{ $t('settings.updateScheduleDialog.days') }}: <MultiSelect v-model="configureDays" :options="cronDays" option-label="name" option-key="value"/></div>
<div>{{ $t('settings.updateScheduleDialog.hours') }}: <MultiSelect v-model="configureHours" :options="cronHours" option-label="name" option-key="value"/></div>
<div class="text-small text-danger" v-show="configureType === 'pattern' && !(configureHours.length !== 0 && configureDays.length !== 0)">{{ $t('settings.updateScheduleDialog.selectOne') }}</div>
</div>
<!-- TODO <span class="label label-danger" ng-show="updateSchedule.type === 'pattern' && !updateSchedule.isScheduleValid()">{{ 'settings.updateScheduleDialog.selectOne' | tr }}</span> -->
</Dialog>
<Section :title="$t('settings.updates.title')">