diff --git a/src/components/dialogs/Peers.vue b/src/components/dialogs/Peers.vue
index 437dd56..0c48bd4 100644
--- a/src/components/dialogs/Peers.vue
+++ b/src/components/dialogs/Peers.vue
@@ -6,15 +6,17 @@
>
-
-
- {{ codeToFlag(row.item.country_code).char }}
+
+
+
+ {{ codeToFlag(row.item.country_code).char }}
+
{{ row.item.ip }}
:{{ row.item.port }}
@@ -23,10 +25,10 @@
{{ row.item.flags }} |
{{ row.item.client }} |
{{ row.item.progress | progress }} |
- {{ row.item.dl_speed | size }}/s |
- {{ row.item.up_speed | size }}/s |
- {{ row.item.downloaded | size }} |
- {{ row.item.uploaded | size }} |
+ {{ row.item.dl_speed | networkSpeed }} |
+ {{ row.item.downloaded | networkSize }} |
+ {{ row.item.up_speed | networkSpeed }} |
+ {{ row.item.uploaded | networkSize }} |
{{ row.item.relevance | progress }} |
{{ row.item.files }} |
@@ -39,6 +41,7 @@ import Vue from 'vue';
import { codeToFlag, isWindows } from '../../utils';
import Taskable from '@/mixins/taskable';
import { api } from '../../Api';
+import { formatSize } from '../../filters';
export default Vue.extend({
mixins: [Taskable],
@@ -55,8 +58,8 @@ export default Vue.extend({
{ text: 'Client', value: 'client' },
{ text: 'Progress', value: 'progress' },
{ text: 'DL Speed', value: 'dl_speed' },
- { text: 'UP Speed', value: 'up_speed' },
{ text: 'Downloaded', value: 'downloaded' },
+ { text: 'UP Speed', value: 'up_speed' },
{ text: 'Uploaded', value: 'uploaded' },
{ text: 'Relevance', value: 'relevance' },
{ text: 'Files', value: 'files' },
@@ -69,6 +72,22 @@ export default Vue.extend({
isWindows,
};
},
+ filters: {
+ networkSpeed(speed: number) {
+ if (speed === 0) {
+ return null;
+ }
+
+ return formatSize(speed) + '/s';
+ },
+ networkSize(size: number) {
+ if (size === 0) {
+ return null;
+ }
+
+ return formatSize(size);
+ },
+ },
computed: {
peers() {
return _.map(this.peersObj, (value, key) => {
@@ -78,7 +97,11 @@ export default Vue.extend({
},
methods: {
codeToFlag(code: string) {
- return codeToFlag(code);
+ if (code) {
+ return codeToFlag(code);
+ }
+
+ return {};
},
async getPeers() {
const resp = await api.getTorrentPeers(this.hash, this.rid);
diff --git a/src/components/dialogs/Trackers.vue b/src/components/dialogs/Trackers.vue
index b3b79b1..e2cf91b 100644
--- a/src/components/dialogs/Trackers.vue
+++ b/src/components/dialogs/Trackers.vue
@@ -50,10 +50,10 @@ export default Vue.extend({
formatTrackerStatus(status: number) {
const map = [
'Disabled',
- 'Contacted',
- 'Working',
- 'Not working',
'Not contacted',
+ 'Working',
+ 'Updating',
+ 'Not working',
];
return map[status];
diff --git a/src/filters.ts b/src/filters.ts
index e212f12..3593601 100644
--- a/src/filters.ts
+++ b/src/filters.ts
@@ -1,18 +1,28 @@
import dayjs from 'dayjs';
import Vue from 'vue';
+export function toPrecision(value: number, precision: number) {
+ if (value >= (Math.pow(10, precision))) {
+ return value.toString();
+ } else if (value >= 1) {
+ return value.toPrecision(precision);
+ }
+
+ return value.toFixed(precision - 1);
+}
+
export function formatSize(value: number) {
const units = 'KMGTP';
let index = -1;
- while (value >= 1024) {
+ while (value >= 1000) {
index++;
value /= 1024;
}
const unit = index < 0 ? 'B' : units[index] + 'iB';
- return `${value.toFixed(2)} ${unit}`;
+ return `${toPrecision(value, 3)} ${unit}`;
}
Vue.filter('formatSize', formatSize);
@@ -92,7 +102,8 @@ export function formatAsDuration(date: number, options?: DurationOptions) {
Vue.filter('formatAsDuration', formatAsDuration);
export function formatProgress(progress: number) {
- return Math.floor(progress * 100) + '%';
+ progress = progress * 100;
+ return toPrecision(progress, 3) + '%';
}
Vue.filter('progress', formatProgress);
|