VueTube/NUXT/components/Player/watchtime.vue

62 lines
1.4 KiB
Vue
Raw Normal View History

2022-05-28 05:16:27 +00:00
<template>
<div style="color: #fff; font-size: 0.75rem">
{{ humanWatchTime }}
<span style="color: #aaa"> / {{ humanDuration }} </span>
2022-05-28 05:16:27 +00:00
</div>
</template>
<script>
export default {
2022-06-07 18:29:57 +00:00
props: {
2022-06-08 15:59:43 +00:00
duration: {
type: Number,
required: true,
},
2022-06-08 16:36:32 +00:00
currentTime: {
2022-06-08 15:59:43 +00:00
type: Number,
required: true,
},
controls: {
type: Boolean,
required: true,
},
2022-05-28 05:16:27 +00:00
},
data() {
return {
humanWatchTime: "0:00",
humanDuration: "0:00",
runWatchTimeUpdates: null
}
},
mounted() {
2022-08-10 20:05:06 +00:00
//--- Only show end duration when 'this.duration' becomes defined ---//
const durationTimer = setInterval(() => {
if (this.duration) {
2022-08-10 20:05:06 +00:00
this.humanDuration = this.$vuetube.humanTime(this.duration);
return clearInterval(durationTimer);
}
}, 100);
2022-08-10 20:05:06 +00:00
//--- END Only show end duration when 'this.duration' becomes defined ---//
},
methods: {
updateWatchTime() {
this.humanWatchTime = this.$vuetube.humanTime(this.currentTime);
}
},
watch: {
controls(newVal) {
if (newVal) { // controls are VISIBLE
this.updateWatchTime(); // Call to immediately update
this.runWatchTimeUpdates = setInterval(this.updateWatchTime, 500);
} else { // Controls are INVISIBLE
clearInterval(this.runWatchTimeUpdates);
}
}
}
2022-05-28 05:16:27 +00:00
};
</script>