feat: Last Activity support #217

This commit is contained in:
WDaan 2022-11-16 11:26:29 +01:00
parent bf406e5cfd
commit 1d9279a376
6 changed files with 29 additions and 6 deletions

View file

@ -0,0 +1,14 @@
<template>
<v-flex xs6 sm2>
<div class="caption grey--text">
{{ $t('torrent.last_activity') | titleCase }}
</div>
<div>{{ torrent.last_activity }}</div>
</v-flex>
</template>
<script>
export default {
name: 'LastActivity',
props: ['torrent']
}
</script>

View file

@ -15,5 +15,6 @@ import AddedOn from './AddedOn.vue'
import Uploaded from './Uploaded.vue'
import UploadedSession from './UploadedSession.vue'
import Availability from './Availability.vue'
import LastActivity from './LastActivity.vue'
export { Size, Progress, Download, Directory, Ratio, Upload, ETA, Peers, Seeds, Status, Category, Tags, AddedOn, Uploaded, UploadedSession, Downloaded, Availability }
export { Size, LastActivity, Progress, Download, Directory, Ratio, Upload, ETA, Peers, Seeds, Status, Category, Tags, AddedOn, Uploaded, UploadedSession, Downloaded, Availability }

View file

@ -59,7 +59,8 @@ const locale = {
uploadedSession: 'Uploaded Session',
torrentTitle: 'Torrent Title',
timeActive: 'Time Active',
seededFor: 'seeded for'
seededFor: 'seeded for',
last_activity: 'Last Activity'
},
/** Navbar */
navbar: {
@ -368,13 +369,14 @@ const locale = {
title: 'Sort Torrents',
reverse: 'Reverse',
sortBy: {
none: 'None',
availability: 'Availability',
category: 'Category',
completed: 'Completed',
downloaded: 'Downloaded',
ETA: 'ETA',
name: 'Name',
none: 'None',
last_activity: 'Last Activity',
peers: 'Peers',
priority: 'Priority',
progress: 'Progress',

View file

@ -1,7 +1,9 @@
import dayjs from 'dayjs'
import duration from 'dayjs/plugin/duration'
import relativeTime from 'dayjs/plugin/relativeTime'
dayjs.extend(duration)
dayjs.extend(relativeTime)
export default class Torrent {
constructor(data) {
@ -39,6 +41,7 @@ export default class Torrent {
this.magnet = data.magnet_uri
this.time_active = dayjs.duration(data.time_active, 'seconds').format('D[d] H[h] m[m] s[s]')
this.seeding_time = data.seeding_time > 0 ? dayjs.duration(data.seeding_time, 'seconds').format('D[d] H[h] m[m] s[s]') : null
this.last_activity = dayjs(data.last_activity * 1000).fromNow()
Object.freeze(this)
}

View file

@ -45,7 +45,7 @@ export default new Vuex.Store({
authenticated: false,
sort_options: {
sort: 'priority',
reverse: true,
reverse: false,
hashes: [],
filter: null
},
@ -84,7 +84,8 @@ export default new Vuex.Store({
{ name: 'Category', active: true },
{ name: 'Tags', active: true },
{ name: 'AddedOn', active: true },
{ name: 'Availability', active: true }
{ name: 'Availability', active: true },
{ name: 'LastActivity', active: false },
],
doneTorrentProperties: [
{ name: 'Size', active: true },
@ -102,7 +103,8 @@ export default new Vuex.Store({
{ name: 'Category', active: true },
{ name: 'Tags', active: true },
{ name: 'AddedOn', active: true },
{ name: 'Availability', active: true }
{ name: 'Availability', active: true },
{ name: 'LastActivity', active: false }
]
},
categories: [],

View file

@ -183,6 +183,7 @@ export default {
{ value: 'eta', text: this.$i18n.t('modals.sort.sortBy.ETA') },
{ value: 'name', text: this.$i18n.t('modals.sort.sortBy.name') },
{ value: 'num_leechs', text: this.$i18n.t('modals.sort.sortBy.peers') },
{ value: 'last_activity', text: this.$i18n.t('modals.sort.sortBy.last_activity') },
{ value: 'priority', text: this.$i18n.t('modals.sort.sortBy.priority') },
{ value: 'progress', text: this.$i18n.t('modals.sort.sortBy.progress') },
{ value: 'ratio', text: this.$i18n.t('modals.sort.sortBy.ratio') },