53 lines
1.2 KiB
JavaScript
53 lines
1.2 KiB
JavaScript
import { calculateRemainingMilliseconds, formatTime } from '~/lib/utils/datetime_utility';
|
|
|
|
export default {
|
|
data() {
|
|
return {
|
|
remainingTime: formatTime(0),
|
|
remainingTimeIntervalId: null,
|
|
};
|
|
},
|
|
|
|
mounted() {
|
|
this.startRemainingTimeInterval();
|
|
},
|
|
|
|
beforeDestroy() {
|
|
if (this.remainingTimeIntervalId) {
|
|
clearInterval(this.remainingTimeIntervalId);
|
|
}
|
|
},
|
|
|
|
computed: {
|
|
isDelayedJob() {
|
|
return this.job?.scheduled || this.job?.scheduledAt;
|
|
},
|
|
scheduledTime() {
|
|
return this.job.scheduled_at || this.job.scheduledAt;
|
|
},
|
|
},
|
|
|
|
watch: {
|
|
isDelayedJob() {
|
|
this.startRemainingTimeInterval();
|
|
},
|
|
},
|
|
|
|
methods: {
|
|
startRemainingTimeInterval() {
|
|
if (this.remainingTimeIntervalId) {
|
|
clearInterval(this.remainingTimeIntervalId);
|
|
}
|
|
|
|
if (this.isDelayedJob) {
|
|
this.updateRemainingTime();
|
|
this.remainingTimeIntervalId = setInterval(() => this.updateRemainingTime(), 1000);
|
|
}
|
|
},
|
|
|
|
updateRemainingTime() {
|
|
const remainingMilliseconds = calculateRemainingMilliseconds(this.scheduledTime);
|
|
this.remainingTime = formatTime(remainingMilliseconds);
|
|
},
|
|
},
|
|
};
|