Added timezone information to tasks so that recurring tasks will use the timezone from the user

pull/809/head
Tzahi12345 3 years ago
parent c382758833
commit 8c63a78884

@ -2589,6 +2589,8 @@ components:
type: number
timestamp:
type: number
tz:
type: string
DBBackup:
required:
- name

@ -52,7 +52,7 @@ function scheduleJob(task_key, schedule) {
const dayOfWeek = schedule['data']['dayOfWeek'] != null ? schedule['data']['dayOfWeek'] : null;
const hour = schedule['data']['hour'] != null ? schedule['data']['hour'] : null;
const minute = schedule['data']['minute'] != null ? schedule['data']['minute'] : null;
converted_schedule = new scheduler.RecurrenceRule(null, null, null, dayOfWeek, hour, minute);
converted_schedule = new scheduler.RecurrenceRule(null, null, null, dayOfWeek, hour, minute, undefined, schedule['data']['tz'] ? schedule['data']['tz'] : undefined);
} else {
logger.error(`Failed to schedule job '${task_key}' as the type '${schedule['type']}' is invalid.`)
return null;

@ -9,6 +9,7 @@ dayOfWeek?: Array<number>;
hour?: number;
minute?: number;
timestamp?: number;
tz?: string;
};
};

@ -35,8 +35,8 @@
<mat-cell *matCellDef="let element">
<span *ngIf="element.running || element.confirming"><mat-spinner matTooltip="Busy" i18n-matTooltip="Busy" [diameter]="25"></mat-spinner></span>
<span *ngIf="!(element.running || element.confirming) && element.schedule" style="display: flex">
<ng-container i18n="Scheduled">Scheduled for</ng-container>&nbsp;
{{element.next_invocation | date: 'short'}}<mat-icon style="font-size: 16px; display: inline-flex; align-items: center; padding-left: 5px;" *ngIf="element.schedule.type === 'recurring'">repeat</mat-icon>
<ng-container i18n="Scheduled">Scheduled for</ng-container>
{{element.next_invocation | date: 'short'}}<mat-icon style="font-size: 16px; display: inline-flex; align-items: center; padding-left: 5px; padding-bottom: 6px;" *ngIf="element.schedule.type === 'recurring'">repeat</mat-icon>
</span>
<span *ngIf="!(element.running || element.confirming) && !element.schedule">
<ng-container i18n="Not scheduled">Not scheduled</ng-container>

@ -41,6 +41,7 @@
<mat-form-field>
<mat-label>Time</mat-label>
<input type="time" matInput [(ngModel)]="time" [disabled]="!enabled">
<mat-hint *ngIf="Intl?.DateTimeFormat().resolvedOptions().timeZone">{{Intl.DateTimeFormat().resolvedOptions().timeZone}}</mat-hint>
</mat-form-field>
</div>
</div>

@ -15,8 +15,9 @@ export class UpdateTaskScheduleDialogComponent implements OnInit {
days_of_week = [];
interval = 'daily';
time = null;
date = null;
date: Date = null;
today = new Date();
Intl = Intl;
constructor(@Inject(MAT_DIALOG_DATA) public data: {task: Task}, private dialogRef: MatDialogRef<UpdateTaskScheduleDialogComponent>, private postsService: PostsService) {
this.processTask(this.data.task);
@ -66,6 +67,8 @@ export class UpdateTaskScheduleDialogComponent implements OnInit {
if (!this.time) {
// needs time!
this.postsService.openSnackBar($localize`You must input a time!`);
return;
}
const hours = parseInt(this.time.split(':')[0]);
@ -81,6 +84,7 @@ export class UpdateTaskScheduleDialogComponent implements OnInit {
this.date.setHours(hours, minutes);
schedule['data'] = {timestamp: this.date.getTime()};
}
schedule['data']['tz'] = this.Intl?.DateTimeFormat().resolvedOptions().timeZone;
this.dialogRef.close(schedule);
}
}

Loading…
Cancel
Save