mirror of
https://github.com/VueTorrent/VueTorrent.git
synced 2025-02-17 15:52:04 +03:00
feat!: move to vite + typescript => BREAKS PWA, please re-install! (#352)
This commit is contained in:
parent
d3cf4d5795
commit
5aa83fa95e
139 changed files with 6488 additions and 28134 deletions
|
@ -1 +1,2 @@
|
|||
node_modules/*
|
||||
node_modules/*
|
||||
vuetorrent/
|
90
.eslintrc.js
90
.eslintrc.js
|
@ -1,85 +1,19 @@
|
|||
module.exports = {
|
||||
extends: [
|
||||
'eslint:recommended',
|
||||
'plugin:vue/recommended'
|
||||
],
|
||||
parserOptions: {
|
||||
parser: '@babel/eslint-parser',
|
||||
ecmaVersion: 2017,
|
||||
sourceType: 'module'
|
||||
},
|
||||
root: true,
|
||||
env: {
|
||||
es6: true,
|
||||
node: true,
|
||||
browser: true,
|
||||
node: true
|
||||
es2016: true
|
||||
},
|
||||
plugins: [
|
||||
'vue'
|
||||
],
|
||||
extends: ['eslint:recommended', 'plugin:vue/recommended', '@vue/typescript/recommended', 'prettier', 'plugin:import/recommended'],
|
||||
parserOptions: {
|
||||
ecmaVersion: 2020
|
||||
},
|
||||
plugins: ['vue', 'prettier'],
|
||||
rules: {
|
||||
'arrow-parens': ['error', 'as-needed'],
|
||||
'key-spacing': ['error', { beforeColon: false, afterColon: true }],
|
||||
'array-bracket-spacing': ['error', 'never'],
|
||||
'comma-spacing': ['error', { before: false, after: true }],
|
||||
'brace-style': ['error', '1tbs'],
|
||||
'comma-dangle': ['error', 'never'],
|
||||
'comma-style': ['error', 'last'],
|
||||
eqeqeq: 0,
|
||||
indent: ['error', 2, {
|
||||
SwitchCase: 1,
|
||||
ignoredNodes: ['TemplateLiteral']
|
||||
}],
|
||||
'vue/html-indent': [
|
||||
'error',
|
||||
2,
|
||||
{ ignores: ['VElement[name=code-block].children'] }
|
||||
],
|
||||
'vue/multiline-html-element-content-newline': ['error', {
|
||||
ignores: ['code-block']
|
||||
}],
|
||||
'linebreak-style': ['error', 'unix'],
|
||||
'keyword-spacing': 'error',
|
||||
'prefer-const': 'error',
|
||||
'new-parens': 'error',
|
||||
'no-case-declarations': 'off',
|
||||
'no-const-assign': 'error',
|
||||
'no-unused-vars': ['error', { args: 'none' }],
|
||||
'no-whitespace-before-property': 'error',
|
||||
'object-curly-spacing': ['error', 'always'],
|
||||
quotes: ['error', 'single'],
|
||||
'quote-props': ['error', 'as-needed'],
|
||||
semi: ['error', 'never'],
|
||||
'space-before-blocks': 'error',
|
||||
'space-before-function-paren': ['error', { anonymous: 'always', named: 'never' }],
|
||||
'space-in-parens': ['error', 'never'],
|
||||
'space-infix-ops': 'error',
|
||||
strict: ['error', 'never'],
|
||||
'vue/max-attributes-per-line': ['error', {
|
||||
singleline: 3,
|
||||
multiline: {
|
||||
max: 1,
|
||||
allowFirstLine: false
|
||||
}
|
||||
}],
|
||||
'vue/no-v-html': 'off',
|
||||
'vue/require-prop-types': 'off',
|
||||
'vue/require-default-prop': 'off',
|
||||
'vue/require-v-for-key': 'off',
|
||||
'vue/order-in-components': ['error'],
|
||||
'vue/space-infix-ops': 'error',
|
||||
'arrow-spacing': ['error', { before: true, after: true }],
|
||||
'no-multi-spaces': ['error'],
|
||||
'newline-before-return': ['error']
|
||||
},
|
||||
overrides: [
|
||||
{
|
||||
files: [
|
||||
'**/__tests__/*.{j,t}s?(x)',
|
||||
'**/tests/unit/**/*.spec.{j,t}s?(x)'
|
||||
],
|
||||
env: {
|
||||
jest: true
|
||||
}
|
||||
}
|
||||
]
|
||||
'vue/multi-word-component-names': 'off',
|
||||
'vue/first-attribute-linebreak': 'off',
|
||||
'@typescript-eslint/explicit-module-boundary-types': 'off'
|
||||
}
|
||||
}
|
||||
|
|
7
.github/pull_request_template.md
vendored
7
.github/pull_request_template.md
vendored
|
@ -1,9 +1,10 @@
|
|||
# My Title [feat/fix/perf/chore]
|
||||
Please explain what kind of feature your PR's brings or what kind of bug it fixes.
|
||||
Feel free to include screenshots for UI related changes.
|
||||
Keep all the commits inside your PR related to topic of the PR, otherwise create a seperate PR
|
||||
|
||||
Please explain what kind of feature your PR's brings or what kind of bug it fixes. Feel free to include screenshots for UI related changes. Keep all the commits inside your PR
|
||||
related to topic of the PR, otherwise create a seperate PR
|
||||
|
||||
# PR Checklist
|
||||
|
||||
- [ ] I've started from master
|
||||
- [ ] I've only committed changes related to this PR
|
||||
- [ ] All Unit tests pass
|
||||
|
|
26
.github/workflows/codeql-analysis.yml
vendored
26
.github/workflows/codeql-analysis.yml
vendored
|
@ -1,4 +1,4 @@
|
|||
name: "CodeQL"
|
||||
name: 'CodeQL'
|
||||
|
||||
on:
|
||||
schedule:
|
||||
|
@ -12,19 +12,19 @@ jobs:
|
|||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
language: [ 'javascript' ]
|
||||
language: ['javascript']
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v1
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v1
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v1
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v1
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v1
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v1
|
||||
|
|
3
.github/workflows/release.yml
vendored
3
.github/workflows/release.yml
vendored
|
@ -19,7 +19,8 @@ jobs:
|
|||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
release-type: node
|
||||
package-name: vuetorrent
|
||||
changelog-types: '[{"type":"feat","section":"Features","hidden":false},{"type":"fix","section":"Bug Fixes","hidden":false},{"type":"perf","section":"Improvements","hidden":false}]'
|
||||
changelog-types:
|
||||
'[{"type":"feat","section":"Features","hidden":false},{"type":"fix","section":"Bug Fixes","hidden":false},{"type":"perf","section":"Improvements","hidden":false}]'
|
||||
|
||||
upload-release:
|
||||
needs: setup-release
|
||||
|
|
3
.github/workflows/test-build.yml
vendored
3
.github/workflows/test-build.yml
vendored
|
@ -1,6 +1,6 @@
|
|||
name: Test Release Build
|
||||
on:
|
||||
workflow_dispatch:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
test-build:
|
||||
|
@ -22,4 +22,3 @@ jobs:
|
|||
run: npm ci
|
||||
- name: Build VueTorrent
|
||||
run: npm run build
|
||||
|
10
.prettierrc
Normal file
10
.prettierrc
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"printWidth": 180,
|
||||
"semi": false,
|
||||
"singleQuote": true,
|
||||
"tabWidth": 2,
|
||||
"trailingComma": "none",
|
||||
"proseWrap": "always",
|
||||
"endOfLine": "auto",
|
||||
"arrowParens": "avoid"
|
||||
}
|
543
CHANGELOG.md
543
CHANGELOG.md
|
@ -2,442 +2,497 @@
|
|||
|
||||
### [0.19.1](https://github.com/WDaan/VueTorrent/compare/v0.19.0...v0.19.1) (2022-10-11)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* login console error on refresh ([254d7c8](https://github.com/WDaan/VueTorrent/commit/254d7c8562e3fec5a16b4f65a4de0382ef7662c1))
|
||||
* login prompt being displayed when whitelisted ([#511](https://github.com/WDaan/VueTorrent/issues/511)) ([077cf54](https://github.com/WDaan/VueTorrent/commit/077cf54c6bb5ccc7e5ccf9b94731ec468bd17ecd))
|
||||
* refresh torrent detail data from store ([#509](https://github.com/WDaan/VueTorrent/issues/509)) ([5270619](https://github.com/WDaan/VueTorrent/commit/5270619a5d27eba380a33a8f12632c2c61611886))
|
||||
* temporarily disable render link feat for security ([#512](https://github.com/WDaan/VueTorrent/issues/512)) ([13e6584](https://github.com/WDaan/VueTorrent/commit/13e6584c5d9a541d01e770d901c9a6266e7c9b24))
|
||||
- login console error on refresh ([254d7c8](https://github.com/WDaan/VueTorrent/commit/254d7c8562e3fec5a16b4f65a4de0382ef7662c1))
|
||||
- login prompt being displayed when whitelisted ([#511](https://github.com/WDaan/VueTorrent/issues/511))
|
||||
([077cf54](https://github.com/WDaan/VueTorrent/commit/077cf54c6bb5ccc7e5ccf9b94731ec468bd17ecd))
|
||||
- refresh torrent detail data from store ([#509](https://github.com/WDaan/VueTorrent/issues/509))
|
||||
([5270619](https://github.com/WDaan/VueTorrent/commit/5270619a5d27eba380a33a8f12632c2c61611886))
|
||||
- temporarily disable render link feat for security ([#512](https://github.com/WDaan/VueTorrent/issues/512))
|
||||
([13e6584](https://github.com/WDaan/VueTorrent/commit/13e6584c5d9a541d01e770d901c9a6266e7c9b24))
|
||||
|
||||
## [0.19.0](https://github.com/WDaan/VueTorrent/compare/v0.18.2...v0.19.0) (2022-10-10)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* Links in torrent details view are now clickable ([#506](https://github.com/WDaan/VueTorrent/issues/506)) ([f1536cb](https://github.com/WDaan/VueTorrent/commit/f1536cb010e2ebc8d7d026a62be491e8a3a04cfa))
|
||||
* support for renaming folders ([#500](https://github.com/WDaan/VueTorrent/issues/500)) ([cf8f43a](https://github.com/WDaan/VueTorrent/commit/cf8f43aac3c235cf616bed4c1ce1ceda0fad8fe4))
|
||||
|
||||
- Links in torrent details view are now clickable ([#506](https://github.com/WDaan/VueTorrent/issues/506))
|
||||
([f1536cb](https://github.com/WDaan/VueTorrent/commit/f1536cb010e2ebc8d7d026a62be491e8a3a04cfa))
|
||||
- support for renaming folders ([#500](https://github.com/WDaan/VueTorrent/issues/500))
|
||||
([cf8f43a](https://github.com/WDaan/VueTorrent/commit/cf8f43aac3c235cf616bed4c1ce1ceda0fad8fe4))
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Cookies not sent with request for Web App manifest.json ([#504](https://github.com/WDaan/VueTorrent/issues/504)) ([2efe73a](https://github.com/WDaan/VueTorrent/commit/2efe73ad7e51c7b45ad65827503d4c3fcebd58a4))
|
||||
* font-size difference in right click menu ([#505](https://github.com/WDaan/VueTorrent/issues/505)) ([a8f28dd](https://github.com/WDaan/VueTorrent/commit/a8f28dd5b468924f7dcf09d101e438a15e1269ba))
|
||||
- Cookies not sent with request for Web App manifest.json ([#504](https://github.com/WDaan/VueTorrent/issues/504))
|
||||
([2efe73a](https://github.com/WDaan/VueTorrent/commit/2efe73ad7e51c7b45ad65827503d4c3fcebd58a4))
|
||||
- font-size difference in right click menu ([#505](https://github.com/WDaan/VueTorrent/issues/505))
|
||||
([a8f28dd](https://github.com/WDaan/VueTorrent/commit/a8f28dd5b468924f7dcf09d101e438a15e1269ba))
|
||||
|
||||
### [0.18.2](https://github.com/WDaan/VueTorrent/compare/v0.18.1...v0.18.2) (2022-09-13)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* anonymous mode [#362](https://github.com/WDaan/VueTorrent/issues/362) ([27a0717](https://github.com/WDaan/VueTorrent/commit/27a07179f08225292e2e26fb57bbfa6f846b272b))
|
||||
* connection password type [#456](https://github.com/WDaan/VueTorrent/issues/456) ([a8616cc](https://github.com/WDaan/VueTorrent/commit/a8616cce545ed579e39db9e64c0005a74eee63d5))
|
||||
* connection status [#482](https://github.com/WDaan/VueTorrent/issues/482) ([e047467](https://github.com/WDaan/VueTorrent/commit/e0474671042dc7b1c4f2490018c5484e4730ccf1))
|
||||
* no autocapitalize on login form [#489](https://github.com/WDaan/VueTorrent/issues/489) ([e352de0](https://github.com/WDaan/VueTorrent/commit/e352de0643dec66256f5565be6a686ee00f040e5))
|
||||
* Russian language ([#494](https://github.com/WDaan/VueTorrent/issues/494)) ([72548fa](https://github.com/WDaan/VueTorrent/commit/72548fac4ad7e5002a83b80c0b9cdb6b2d82e075))
|
||||
* torrent search ([#478](https://github.com/WDaan/VueTorrent/issues/478)) @Anteus ([baba4ac](https://github.com/WDaan/VueTorrent/commit/baba4acda4adcc2414d0a0cab6e7b13446152050))
|
||||
* Update Paramaters Sent to /torrents/renameFile ([#470](https://github.com/WDaan/VueTorrent/issues/470)) ([1ccdf08](https://github.com/WDaan/VueTorrent/commit/1ccdf08b606bfff9e9e016765c0d03ed0e2e7715))
|
||||
|
||||
- anonymous mode [#362](https://github.com/WDaan/VueTorrent/issues/362) ([27a0717](https://github.com/WDaan/VueTorrent/commit/27a07179f08225292e2e26fb57bbfa6f846b272b))
|
||||
- connection password type [#456](https://github.com/WDaan/VueTorrent/issues/456) ([a8616cc](https://github.com/WDaan/VueTorrent/commit/a8616cce545ed579e39db9e64c0005a74eee63d5))
|
||||
- connection status [#482](https://github.com/WDaan/VueTorrent/issues/482) ([e047467](https://github.com/WDaan/VueTorrent/commit/e0474671042dc7b1c4f2490018c5484e4730ccf1))
|
||||
- no autocapitalize on login form [#489](https://github.com/WDaan/VueTorrent/issues/489)
|
||||
([e352de0](https://github.com/WDaan/VueTorrent/commit/e352de0643dec66256f5565be6a686ee00f040e5))
|
||||
- Russian language ([#494](https://github.com/WDaan/VueTorrent/issues/494)) ([72548fa](https://github.com/WDaan/VueTorrent/commit/72548fac4ad7e5002a83b80c0b9cdb6b2d82e075))
|
||||
- torrent search ([#478](https://github.com/WDaan/VueTorrent/issues/478)) @Anteus ([baba4ac](https://github.com/WDaan/VueTorrent/commit/baba4acda4adcc2414d0a0cab6e7b13446152050))
|
||||
- Update Paramaters Sent to /torrents/renameFile ([#470](https://github.com/WDaan/VueTorrent/issues/470))
|
||||
([1ccdf08](https://github.com/WDaan/VueTorrent/commit/1ccdf08b606bfff9e9e016765c0d03ed0e2e7715))
|
||||
|
||||
### Improvements
|
||||
|
||||
* add Russian translations ([#493](https://github.com/WDaan/VueTorrent/issues/493)) [@reysonk](https://github.com/reysonk) ([9b6deb9](https://github.com/WDaan/VueTorrent/commit/9b6deb90371ac4e56ac2691002bda578e25758ea))
|
||||
* Improved Ukrainian translation ([#457](https://github.com/WDaan/VueTorrent/issues/457)) ([b56a16f](https://github.com/WDaan/VueTorrent/commit/b56a16f7cebaf3b434f85c621b73e2d3e3385ba8))
|
||||
* updated japanese translate file ([#491](https://github.com/WDaan/VueTorrent/issues/491)) ([7e5cc48](https://github.com/WDaan/VueTorrent/commit/7e5cc4891a61d441429c155ec759d5a668c3498f))
|
||||
- add Russian translations ([#493](https://github.com/WDaan/VueTorrent/issues/493)) [@reysonk](https://github.com/reysonk)
|
||||
([9b6deb9](https://github.com/WDaan/VueTorrent/commit/9b6deb90371ac4e56ac2691002bda578e25758ea))
|
||||
- Improved Ukrainian translation ([#457](https://github.com/WDaan/VueTorrent/issues/457))
|
||||
([b56a16f](https://github.com/WDaan/VueTorrent/commit/b56a16f7cebaf3b434f85c621b73e2d3e3385ba8))
|
||||
- updated japanese translate file ([#491](https://github.com/WDaan/VueTorrent/issues/491))
|
||||
([7e5cc48](https://github.com/WDaan/VueTorrent/commit/7e5cc4891a61d441429c155ec759d5a668c3498f))
|
||||
|
||||
### [0.18.1](https://github.com/WDaan/VueTorrent/compare/v0.18.0...v0.18.1) (2022-07-05)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* broken build [#453](https://github.com/WDaan/VueTorrent/issues/453) ([8f1a12d](https://github.com/WDaan/VueTorrent/commit/8f1a12d15fa438e55194a9c807bbdc0115a3deda))
|
||||
* release build ([7a74275](https://github.com/WDaan/VueTorrent/commit/7a74275a4d15280205ec1e749415da1cb0cd7e41))
|
||||
|
||||
- broken build [#453](https://github.com/WDaan/VueTorrent/issues/453) ([8f1a12d](https://github.com/WDaan/VueTorrent/commit/8f1a12d15fa438e55194a9c807bbdc0115a3deda))
|
||||
- release build ([7a74275](https://github.com/WDaan/VueTorrent/commit/7a74275a4d15280205ec1e749415da1cb0cd7e41))
|
||||
|
||||
### Improvements
|
||||
|
||||
* lazy load pages for smaller chunk sizes ([abe909e](https://github.com/WDaan/VueTorrent/commit/abe909e14d740f4a78267564d87e2d46ef3c08a8))
|
||||
* Update Simplified Chinese translation. ([#454](https://github.com/WDaan/VueTorrent/issues/454)) ([20f4a67](https://github.com/WDaan/VueTorrent/commit/20f4a67f4988629d1bc74ec18226cd858e2469e1))
|
||||
- lazy load pages for smaller chunk sizes ([abe909e](https://github.com/WDaan/VueTorrent/commit/abe909e14d740f4a78267564d87e2d46ef3c08a8))
|
||||
- Update Simplified Chinese translation. ([#454](https://github.com/WDaan/VueTorrent/issues/454))
|
||||
([20f4a67](https://github.com/WDaan/VueTorrent/commit/20f4a67f4988629d1bc74ec18226cd858e2469e1))
|
||||
|
||||
## [0.18.0](https://github.com/WDaan/VueTorrent/compare/v0.17.1...v0.18.0) (2022-07-04)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* basic proxy support [#261](https://github.com/WDaan/VueTorrent/issues/261) ([71a09fc](https://github.com/WDaan/VueTorrent/commit/71a09fc58a9c29037cfc87fa6c6f0cfdb645233e))
|
||||
* Basic rss interface ([#447](https://github.com/WDaan/VueTorrent/issues/447)) ([732e519](https://github.com/WDaan/VueTorrent/commit/732e5193ec76d521249ac6fb73c4a6e975091476))
|
||||
|
||||
- basic proxy support [#261](https://github.com/WDaan/VueTorrent/issues/261) ([71a09fc](https://github.com/WDaan/VueTorrent/commit/71a09fc58a9c29037cfc87fa6c6f0cfdb645233e))
|
||||
- Basic rss interface ([#447](https://github.com/WDaan/VueTorrent/issues/447)) ([732e519](https://github.com/WDaan/VueTorrent/commit/732e5193ec76d521249ac6fb73c4a6e975091476))
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* category download folder not showing correctly ([#448](https://github.com/WDaan/VueTorrent/issues/448)) ([06579c8](https://github.com/WDaan/VueTorrent/commit/06579c8bbee5f991f195df596054da8751d0ea72))
|
||||
* favicon [#441](https://github.com/WDaan/VueTorrent/issues/441) ([745376c](https://github.com/WDaan/VueTorrent/commit/745376c02be7a1d9398feb5181bebe9026d22638))
|
||||
* favicon [#441](https://github.com/WDaan/VueTorrent/issues/441) ([b7e7de1](https://github.com/WDaan/VueTorrent/commit/b7e7de1e9095228d9207845201c0ceff814623a4))
|
||||
|
||||
- category download folder not showing correctly ([#448](https://github.com/WDaan/VueTorrent/issues/448))
|
||||
([06579c8](https://github.com/WDaan/VueTorrent/commit/06579c8bbee5f991f195df596054da8751d0ea72))
|
||||
- favicon [#441](https://github.com/WDaan/VueTorrent/issues/441) ([745376c](https://github.com/WDaan/VueTorrent/commit/745376c02be7a1d9398feb5181bebe9026d22638))
|
||||
- favicon [#441](https://github.com/WDaan/VueTorrent/issues/441) ([b7e7de1](https://github.com/WDaan/VueTorrent/commit/b7e7de1e9095228d9207845201c0ceff814623a4))
|
||||
|
||||
### Improvements
|
||||
|
||||
* add ukranian ([e063168](https://github.com/WDaan/VueTorrent/commit/e06316812134df15ac1f5fbb73034436eb7d519c))
|
||||
* use pages instead of modals [#398](https://github.com/WDaan/VueTorrent/issues/398) ([#450](https://github.com/WDaan/VueTorrent/issues/450)) ([fcb0219](https://github.com/WDaan/VueTorrent/commit/fcb021972ae62ee36e91bbbf5cba0ee6dc87725a))
|
||||
- add ukranian ([e063168](https://github.com/WDaan/VueTorrent/commit/e06316812134df15ac1f5fbb73034436eb7d519c))
|
||||
- use pages instead of modals [#398](https://github.com/WDaan/VueTorrent/issues/398) ([#450](https://github.com/WDaan/VueTorrent/issues/450))
|
||||
([fcb0219](https://github.com/WDaan/VueTorrent/commit/fcb021972ae62ee36e91bbbf5cba0ee6dc87725a))
|
||||
|
||||
### [0.17.1](https://github.com/WDaan/VueTorrent/compare/v0.17.0...v0.17.1) (2022-06-11)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* add progress border + percentage [#430](https://github.com/WDaan/VueTorrent/issues/430) ([acc0733](https://github.com/WDaan/VueTorrent/commit/acc07335d31b027cd7ca989959c6d450a957010e))
|
||||
* category download folder [#435](https://github.com/WDaan/VueTorrent/issues/435) ([5a0ec26](https://github.com/WDaan/VueTorrent/commit/5a0ec26ddb7b9c7fc1a03102684fd2268b2ae33f))
|
||||
* non-capital words ([#432](https://github.com/WDaan/VueTorrent/issues/432)) ([ce1e7c3](https://github.com/WDaan/VueTorrent/commit/ce1e7c3546c150243fede941bd8b4b724e4a5c27))
|
||||
* white scrollbar [#433](https://github.com/WDaan/VueTorrent/issues/433) ([db86506](https://github.com/WDaan/VueTorrent/commit/db86506c5e493e2bb69e441e56d86d78667df54b))
|
||||
|
||||
- add progress border + percentage [#430](https://github.com/WDaan/VueTorrent/issues/430)
|
||||
([acc0733](https://github.com/WDaan/VueTorrent/commit/acc07335d31b027cd7ca989959c6d450a957010e))
|
||||
- category download folder [#435](https://github.com/WDaan/VueTorrent/issues/435) ([5a0ec26](https://github.com/WDaan/VueTorrent/commit/5a0ec26ddb7b9c7fc1a03102684fd2268b2ae33f))
|
||||
- non-capital words ([#432](https://github.com/WDaan/VueTorrent/issues/432)) ([ce1e7c3](https://github.com/WDaan/VueTorrent/commit/ce1e7c3546c150243fede941bd8b4b724e4a5c27))
|
||||
- white scrollbar [#433](https://github.com/WDaan/VueTorrent/issues/433) ([db86506](https://github.com/WDaan/VueTorrent/commit/db86506c5e493e2bb69e441e56d86d78667df54b))
|
||||
|
||||
### Improvements
|
||||
|
||||
* complete French translation ([#438](https://github.com/WDaan/VueTorrent/issues/438)) ([3a8ec90](https://github.com/WDaan/VueTorrent/commit/3a8ec90ca20dd20bf22d4af468031d347de7f686))
|
||||
- complete French translation ([#438](https://github.com/WDaan/VueTorrent/issues/438))
|
||||
([3a8ec90](https://github.com/WDaan/VueTorrent/commit/3a8ec90ca20dd20bf22d4af468031d347de7f686))
|
||||
|
||||
## [0.17.0](https://github.com/WDaan/VueTorrent/compare/v0.16.3...v0.17.0) (2022-06-05)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* add dialog missing options [#418](https://github.com/WDaan/VueTorrent/issues/418) ([68223f5](https://github.com/WDaan/VueTorrent/commit/68223f5f45da3a4819b43398707fed1e172468e8))
|
||||
* piece states progress bar ([#426](https://github.com/WDaan/VueTorrent/issues/426)) ([1722a14](https://github.com/WDaan/VueTorrent/commit/1722a14dba74dafca3b373d50c6dcd94814ab074))
|
||||
|
||||
- add dialog missing options [#418](https://github.com/WDaan/VueTorrent/issues/418) ([68223f5](https://github.com/WDaan/VueTorrent/commit/68223f5f45da3a4819b43398707fed1e172468e8))
|
||||
- piece states progress bar ([#426](https://github.com/WDaan/VueTorrent/issues/426))
|
||||
([1722a14](https://github.com/WDaan/VueTorrent/commit/1722a14dba74dafca3b373d50c6dcd94814ab074))
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* allow native context menu in input elements ([#428](https://github.com/WDaan/VueTorrent/issues/428)) ([b8ad965](https://github.com/WDaan/VueTorrent/commit/b8ad965763fd647b230f7fcbd9798d182cefd762))
|
||||
* load default folder [#417](https://github.com/WDaan/VueTorrent/issues/417) ([c63d0a4](https://github.com/WDaan/VueTorrent/commit/c63d0a403939c99a442a10563789cb8753d67771))
|
||||
- allow native context menu in input elements ([#428](https://github.com/WDaan/VueTorrent/issues/428))
|
||||
([b8ad965](https://github.com/WDaan/VueTorrent/commit/b8ad965763fd647b230f7fcbd9798d182cefd762))
|
||||
- load default folder [#417](https://github.com/WDaan/VueTorrent/issues/417) ([c63d0a4](https://github.com/WDaan/VueTorrent/commit/c63d0a403939c99a442a10563789cb8753d67771))
|
||||
|
||||
### [0.16.3](https://github.com/WDaan/VueTorrent/compare/v0.16.2...v0.16.3) (2022-05-14)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* speed limit dialog incorrect text display and zh-hant fix ([#425](https://github.com/WDaan/VueTorrent/issues/425)) ([45b244f](https://github.com/WDaan/VueTorrent/commit/45b244fbcf1ed63ebb2757a821343ed384a832f4))
|
||||
|
||||
- speed limit dialog incorrect text display and zh-hant fix ([#425](https://github.com/WDaan/VueTorrent/issues/425))
|
||||
([45b244f](https://github.com/WDaan/VueTorrent/commit/45b244fbcf1ed63ebb2757a821343ed384a832f4))
|
||||
|
||||
### Improvements
|
||||
|
||||
* update Traditional Chinese translations ([#422](https://github.com/WDaan/VueTorrent/issues/422)) ([964b145](https://github.com/WDaan/VueTorrent/commit/964b1451a1758522856fae2c730af9db66e351a1))
|
||||
- update Traditional Chinese translations ([#422](https://github.com/WDaan/VueTorrent/issues/422))
|
||||
([964b145](https://github.com/WDaan/VueTorrent/commit/964b1451a1758522856fae2c730af9db66e351a1))
|
||||
|
||||
### [0.16.2](https://github.com/WDaan/VueTorrent/compare/v0.16.1...v0.16.2) (2022-05-08)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* magnet text area max size [#413](https://github.com/WDaan/VueTorrent/issues/413) ([4dd81f7](https://github.com/WDaan/VueTorrent/commit/4dd81f7cd49ab807fddeb50ff2e871364fd955e5))
|
||||
|
||||
- magnet text area max size [#413](https://github.com/WDaan/VueTorrent/issues/413) ([4dd81f7](https://github.com/WDaan/VueTorrent/commit/4dd81f7cd49ab807fddeb50ff2e871364fd955e5))
|
||||
|
||||
### Improvements
|
||||
|
||||
* support more translations + add Simplified Chinese translations ([#415](https://github.com/WDaan/VueTorrent/issues/415)) ([ddd28ae](https://github.com/WDaan/VueTorrent/commit/ddd28ae6192862928ef26c1e1135565f6303095b))
|
||||
* translation fixes ([#419](https://github.com/WDaan/VueTorrent/issues/419)) ([521ac58](https://github.com/WDaan/VueTorrent/commit/521ac5804a622c68d788de1f5730b0c43f49f0a1))
|
||||
- support more translations + add Simplified Chinese translations ([#415](https://github.com/WDaan/VueTorrent/issues/415))
|
||||
([ddd28ae](https://github.com/WDaan/VueTorrent/commit/ddd28ae6192862928ef26c1e1135565f6303095b))
|
||||
- translation fixes ([#419](https://github.com/WDaan/VueTorrent/issues/419)) ([521ac58](https://github.com/WDaan/VueTorrent/commit/521ac5804a622c68d788de1f5730b0c43f49f0a1))
|
||||
|
||||
### [0.16.1](https://www.github.com/WDaan/VueTorrent/compare/v0.16.0...v0.16.1) (2022-04-17)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* torrent progress color [#410](https://www.github.com/WDaan/VueTorrent/issues/410) ([886bc13](https://www.github.com/WDaan/VueTorrent/commit/886bc13f10d82b8973d6ea63fa051ae873b8aea2))
|
||||
|
||||
- torrent progress color [#410](https://www.github.com/WDaan/VueTorrent/issues/410)
|
||||
([886bc13](https://www.github.com/WDaan/VueTorrent/commit/886bc13f10d82b8973d6ea63fa051ae873b8aea2))
|
||||
|
||||
### Improvements
|
||||
|
||||
* add all-time stats [#351](https://www.github.com/WDaan/VueTorrent/issues/351) ([a268e77](https://www.github.com/WDaan/VueTorrent/commit/a268e774def5875354129c06122898bad018d5ed))
|
||||
* better authenticated check ([#411](https://www.github.com/WDaan/VueTorrent/issues/411)) ([ce698e3](https://www.github.com/WDaan/VueTorrent/commit/ce698e38a80fb7ba1dee01251451865df75f68d4))
|
||||
* move notification banner to botton [#389](https://www.github.com/WDaan/VueTorrent/issues/389) ([4b90d56](https://www.github.com/WDaan/VueTorrent/commit/4b90d56df5a43bf466acafd3c7bb43a960bffab8))
|
||||
* topmenu tooltip delay [#399](https://www.github.com/WDaan/VueTorrent/issues/399) ([2d5ad9d](https://www.github.com/WDaan/VueTorrent/commit/2d5ad9d44227f2ffd3e180eff9740e82ba0281cb))
|
||||
- add all-time stats [#351](https://www.github.com/WDaan/VueTorrent/issues/351) ([a268e77](https://www.github.com/WDaan/VueTorrent/commit/a268e774def5875354129c06122898bad018d5ed))
|
||||
- better authenticated check ([#411](https://www.github.com/WDaan/VueTorrent/issues/411))
|
||||
([ce698e3](https://www.github.com/WDaan/VueTorrent/commit/ce698e38a80fb7ba1dee01251451865df75f68d4))
|
||||
- move notification banner to botton [#389](https://www.github.com/WDaan/VueTorrent/issues/389)
|
||||
([4b90d56](https://www.github.com/WDaan/VueTorrent/commit/4b90d56df5a43bf466acafd3c7bb43a960bffab8))
|
||||
- topmenu tooltip delay [#399](https://www.github.com/WDaan/VueTorrent/issues/399)
|
||||
([2d5ad9d](https://www.github.com/WDaan/VueTorrent/commit/2d5ad9d44227f2ffd3e180eff9740e82ba0281cb))
|
||||
|
||||
## [0.16.0](https://www.github.com/WDaan/VueTorrent/compare/v0.15.4...v0.16.0) (2022-04-16)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* add support for setting global speed limits ([#406](https://www.github.com/WDaan/VueTorrent/issues/406)) ([23fee41](https://www.github.com/WDaan/VueTorrent/commit/23fee419fd1561f440f88e4b354ac3745ed813cd))
|
||||
- add support for setting global speed limits ([#406](https://www.github.com/WDaan/VueTorrent/issues/406))
|
||||
([23fee41](https://www.github.com/WDaan/VueTorrent/commit/23fee419fd1561f440f88e4b354ac3745ed813cd))
|
||||
|
||||
### [0.15.4](https://www.github.com/WDaan/VueTorrent/compare/v0.15.3...v0.15.4) (2022-04-04)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* low visibility text in dark theme ([#390](https://www.github.com/WDaan/VueTorrent/issues/390)) ([84750af](https://www.github.com/WDaan/VueTorrent/commit/84750af3d4d584f5fc0fd8f3cbabd1b0ecfa2e9f))
|
||||
* PWA manifest [#405](https://www.github.com/WDaan/VueTorrent/issues/405) ([94727a1](https://www.github.com/WDaan/VueTorrent/commit/94727a142a1822c533c665d558ad4af6c207d5b9))
|
||||
* search results not loading until stopped ([#391](https://www.github.com/WDaan/VueTorrent/issues/391)) ([8b126d8](https://www.github.com/WDaan/VueTorrent/commit/8b126d8df5607f1c31174fec81f86091f4ad47cf))
|
||||
|
||||
- low visibility text in dark theme ([#390](https://www.github.com/WDaan/VueTorrent/issues/390))
|
||||
([84750af](https://www.github.com/WDaan/VueTorrent/commit/84750af3d4d584f5fc0fd8f3cbabd1b0ecfa2e9f))
|
||||
- PWA manifest [#405](https://www.github.com/WDaan/VueTorrent/issues/405) ([94727a1](https://www.github.com/WDaan/VueTorrent/commit/94727a142a1822c533c665d558ad4af6c207d5b9))
|
||||
- search results not loading until stopped ([#391](https://www.github.com/WDaan/VueTorrent/issues/391))
|
||||
([8b126d8](https://www.github.com/WDaan/VueTorrent/commit/8b126d8df5607f1c31174fec81f86091f4ad47cf))
|
||||
|
||||
### Improvements
|
||||
|
||||
* add Japanese language support ([#401](https://www.github.com/WDaan/VueTorrent/issues/401)) ([a178205](https://www.github.com/WDaan/VueTorrent/commit/a1782058c8417e6a8c06acd22ce56418b4fe9419))
|
||||
* add Spanish Language ([#385](https://www.github.com/WDaan/VueTorrent/issues/385)) ([d0f7055](https://www.github.com/WDaan/VueTorrent/commit/d0f7055148b6e88bb00c1c8cd58ec1fa123488e9))
|
||||
* add Vietnamese ([#392](https://www.github.com/WDaan/VueTorrent/issues/392)) ([6019759](https://www.github.com/WDaan/VueTorrent/commit/6019759260d6561af29dbeb1a95497028b2b8b87))
|
||||
- add Japanese language support ([#401](https://www.github.com/WDaan/VueTorrent/issues/401))
|
||||
([a178205](https://www.github.com/WDaan/VueTorrent/commit/a1782058c8417e6a8c06acd22ce56418b4fe9419))
|
||||
- add Spanish Language ([#385](https://www.github.com/WDaan/VueTorrent/issues/385))
|
||||
([d0f7055](https://www.github.com/WDaan/VueTorrent/commit/d0f7055148b6e88bb00c1c8cd58ec1fa123488e9))
|
||||
- add Vietnamese ([#392](https://www.github.com/WDaan/VueTorrent/issues/392)) ([6019759](https://www.github.com/WDaan/VueTorrent/commit/6019759260d6561af29dbeb1a95497028b2b8b87))
|
||||
|
||||
### [0.15.3](https://www.github.com/WDaan/VueTorrent/compare/v0.15.2...v0.15.3) (2022-02-28)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* spelling mistake in README and "qBittorrent" casing ([#368](https://www.github.com/WDaan/VueTorrent/issues/368)) ([90d6623](https://www.github.com/WDaan/VueTorrent/commit/90d66237115f50828a38edec7b10caf817a55b66))
|
||||
- spelling mistake in README and "qBittorrent" casing ([#368](https://www.github.com/WDaan/VueTorrent/issues/368))
|
||||
([90d6623](https://www.github.com/WDaan/VueTorrent/commit/90d66237115f50828a38edec7b10caf817a55b66))
|
||||
|
||||
### [0.15.2](https://www.github.com/WDaan/VueTorrent/compare/v0.15.1...v0.15.2) (2022-01-13)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Qbittorrent title on tab ([05bcc9e](https://www.github.com/WDaan/VueTorrent/commit/05bcc9e58783e4de49d698cfd25c902fad7776de))
|
||||
|
||||
- Qbittorrent title on tab ([05bcc9e](https://www.github.com/WDaan/VueTorrent/commit/05bcc9e58783e4de49d698cfd25c902fad7776de))
|
||||
|
||||
### Improvements
|
||||
|
||||
* Chinese translations ([#363](https://www.github.com/WDaan/VueTorrent/issues/363)) ([6c7372b](https://www.github.com/WDaan/VueTorrent/commit/6c7372b41ef72387c7781e0dcfd51fb046fb7881))
|
||||
- Chinese translations ([#363](https://www.github.com/WDaan/VueTorrent/issues/363))
|
||||
([6c7372b](https://www.github.com/WDaan/VueTorrent/commit/6c7372b41ef72387c7781e0dcfd51fb046fb7881))
|
||||
|
||||
### [0.15.1](https://www.github.com/WDaan/VueTorrent/compare/v0.15.0...v0.15.1) (2022-01-13)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* mention QBittorent [#356](https://www.github.com/WDaan/VueTorrent/issues/356) ([bbc31fb](https://www.github.com/WDaan/VueTorrent/commit/bbc31fb8c5be1cc1189000e53f90ba7886e05ba8))
|
||||
|
||||
- mention QBittorent [#356](https://www.github.com/WDaan/VueTorrent/issues/356) ([bbc31fb](https://www.github.com/WDaan/VueTorrent/commit/bbc31fb8c5be1cc1189000e53f90ba7886e05ba8))
|
||||
|
||||
### Improvements
|
||||
|
||||
* add French translations ([#337](https://www.github.com/WDaan/VueTorrent/issues/337)) ([30d5dc0](https://www.github.com/WDaan/VueTorrent/commit/30d5dc01c4349e0f52c5c58ec8f602ded16e706d))
|
||||
* add Indonesian ([#361](https://www.github.com/WDaan/VueTorrent/issues/361)) ([908af5b](https://www.github.com/WDaan/VueTorrent/commit/908af5b3faaa07a327665df51f296a977ddef9e6))
|
||||
* add Portugese ([#350](https://www.github.com/WDaan/VueTorrent/issues/350)) ([abb4c5b](https://www.github.com/WDaan/VueTorrent/commit/abb4c5ba69a779b729d99bb404fd59d25afb8b72))
|
||||
* more translations ([4f8c697](https://www.github.com/WDaan/VueTorrent/commit/4f8c697757d818eeaf70d1c6970cd1f6000d6497))
|
||||
- add French translations ([#337](https://www.github.com/WDaan/VueTorrent/issues/337))
|
||||
([30d5dc0](https://www.github.com/WDaan/VueTorrent/commit/30d5dc01c4349e0f52c5c58ec8f602ded16e706d))
|
||||
- add Indonesian ([#361](https://www.github.com/WDaan/VueTorrent/issues/361)) ([908af5b](https://www.github.com/WDaan/VueTorrent/commit/908af5b3faaa07a327665df51f296a977ddef9e6))
|
||||
- add Portugese ([#350](https://www.github.com/WDaan/VueTorrent/issues/350)) ([abb4c5b](https://www.github.com/WDaan/VueTorrent/commit/abb4c5ba69a779b729d99bb404fd59d25afb8b72))
|
||||
- more translations ([4f8c697](https://www.github.com/WDaan/VueTorrent/commit/4f8c697757d818eeaf70d1c6970cd1f6000d6497))
|
||||
|
||||
## [0.15.0](https://www.github.com/WDaan/VueTorrent/compare/v0.14.0...v0.15.0) (2021-11-27)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* 1st torrent progress in title [#166](https://www.github.com/WDaan/VueTorrent/issues/166) ([5faa248](https://www.github.com/WDaan/VueTorrent/commit/5faa248395e6edd4e892717fcd0ce41ae27efe08))
|
||||
* add uploaded property ([#145](https://www.github.com/WDaan/VueTorrent/issues/145)) ([0a58d98](https://www.github.com/WDaan/VueTorrent/commit/0a58d98b9f50affee99f05fb4f93d9b37d38ac76))
|
||||
* auto install search plugins when none installed ([abc5457](https://www.github.com/WDaan/VueTorrent/commit/abc5457882892ce4840ae0eef7a438e5ea4c7c90))
|
||||
* auto refresh peers ([dfd10be](https://www.github.com/WDaan/VueTorrent/commit/dfd10beeab4c757ff1ac0c3eecbdc4e740573a75))
|
||||
* auto releasing ci ([#146](https://www.github.com/WDaan/VueTorrent/issues/146)) ([d217627](https://www.github.com/WDaan/VueTorrent/commit/d217627d9ad15535bfe67116790a78414c44c673))
|
||||
* basic limit share ratio [#308](https://www.github.com/WDaan/VueTorrent/issues/308) ([2c1fc34](https://www.github.com/WDaan/VueTorrent/commit/2c1fc34ebdc6f096628d23a6072ea1970764b267))
|
||||
* basic multilang support ([#320](https://www.github.com/WDaan/VueTorrent/issues/320)) ([a7cc03c](https://www.github.com/WDaan/VueTorrent/commit/a7cc03c3ba60f7dbc2d18fff78a0b5f5c6db4b1a))
|
||||
* bypass authentication ([#310](https://www.github.com/WDaan/VueTorrent/issues/310)) ([b069ce4](https://www.github.com/WDaan/VueTorrent/commit/b069ce490e74baf003c9c92cd780c51414702c13))
|
||||
* checkbox + button with color feedback for TorrentDeleteModal ([a83ea14](https://www.github.com/WDaan/VueTorrent/commit/a83ea144cf1daac09fc76feff5d03347c8ea87ca))
|
||||
* copy name/hash/magnet [#277](https://www.github.com/WDaan/VueTorrent/issues/277) ([42afd92](https://www.github.com/WDaan/VueTorrent/commit/42afd921274c0be3fc122a4d5b8d2aeae5fe0c13))
|
||||
* drawer on right side [#276](https://www.github.com/WDaan/VueTorrent/issues/276) ([a18bded](https://www.github.com/WDaan/VueTorrent/commit/a18bded9cb9792b3301008cc717b52053191c8f9))
|
||||
* fullscreen toggle on torrent info modal (desktop) ([1de9e64](https://www.github.com/WDaan/VueTorrent/commit/1de9e6459657c386332d146352c3ed765f70fa3c))
|
||||
* improved per-torrent speed limits modal ([#172](https://www.github.com/WDaan/VueTorrent/issues/172)) ([7bed9ee](https://www.github.com/WDaan/VueTorrent/commit/7bed9eef12321e06bb143d96f02326d967e6f739))
|
||||
* New Logo ([b2858a4](https://www.github.com/WDaan/VueTorrent/commit/b2858a4f68238867996cfe5e61e0947dae3af022))
|
||||
* New select mode color ([8f8d3db](https://www.github.com/WDaan/VueTorrent/commit/8f8d3dbb765d950baa9c5e7654a356e2d300ed28))
|
||||
* open addmodal when dragging a file into the dashboard ([5807db5](https://www.github.com/WDaan/VueTorrent/commit/5807db5e99ac84436261e9d0e2b9a6767d851ba2))
|
||||
* PWA splash & bar color ([dfbed5c](https://www.github.com/WDaan/VueTorrent/commit/dfbed5cb05c0b6974c09c86c6e82e1478f1100d6))
|
||||
* remember delete with files preference [#291](https://www.github.com/WDaan/VueTorrent/issues/291) ([684bbec](https://www.github.com/WDaan/VueTorrent/commit/684bbecff0f7fe239f0ee05dfb5392b4a6401069))
|
||||
* remove torrent files with checkbox [#199](https://www.github.com/WDaan/VueTorrent/issues/199) ([0eddf64](https://www.github.com/WDaan/VueTorrent/commit/0eddf6458ea3b72ce19282fbcd07e19ff96fd3f8))
|
||||
* run external program on torrent completion [#258](https://www.github.com/WDaan/VueTorrent/issues/258) ([99fa1c4](https://www.github.com/WDaan/VueTorrent/commit/99fa1c419d47516a1e265e753c127fedf370ffec))
|
||||
* Show connection status at the bottom of Navbar ([#255](https://www.github.com/WDaan/VueTorrent/issues/255)) ([204d74c](https://www.github.com/WDaan/VueTorrent/commit/204d74c4e84df5404819796e9e5078c01106990a))
|
||||
* show created by info [#279](https://www.github.com/WDaan/VueTorrent/issues/279) ([7a7562e](https://www.github.com/WDaan/VueTorrent/commit/7a7562e54e66aebbf782baefa89b1f17e5119afa))
|
||||
* Speed cards as pills with icon in first column and speed on top of the unit in second column ([#169](https://www.github.com/WDaan/VueTorrent/issues/169)) ([354fe4f](https://www.github.com/WDaan/VueTorrent/commit/354fe4f5f870bb48613ef390341c4c1971e2936e))
|
||||
* torrent detail infinity sign for unlimited speeds ([#173](https://www.github.com/WDaan/VueTorrent/issues/173)) ([6f9a5d5](https://www.github.com/WDaan/VueTorrent/commit/6f9a5d5fefd9c0a2622ce62588ee717f762b7eee))
|
||||
* use confirmation modal when deleting from context menu [#191](https://www.github.com/WDaan/VueTorrent/issues/191) ([53c548b](https://www.github.com/WDaan/VueTorrent/commit/53c548b502bacc95bab59026b836eb2bb2b785ec))
|
||||
|
||||
- 1st torrent progress in title [#166](https://www.github.com/WDaan/VueTorrent/issues/166)
|
||||
([5faa248](https://www.github.com/WDaan/VueTorrent/commit/5faa248395e6edd4e892717fcd0ce41ae27efe08))
|
||||
- add uploaded property ([#145](https://www.github.com/WDaan/VueTorrent/issues/145))
|
||||
([0a58d98](https://www.github.com/WDaan/VueTorrent/commit/0a58d98b9f50affee99f05fb4f93d9b37d38ac76))
|
||||
- auto install search plugins when none installed ([abc5457](https://www.github.com/WDaan/VueTorrent/commit/abc5457882892ce4840ae0eef7a438e5ea4c7c90))
|
||||
- auto refresh peers ([dfd10be](https://www.github.com/WDaan/VueTorrent/commit/dfd10beeab4c757ff1ac0c3eecbdc4e740573a75))
|
||||
- auto releasing ci ([#146](https://www.github.com/WDaan/VueTorrent/issues/146))
|
||||
([d217627](https://www.github.com/WDaan/VueTorrent/commit/d217627d9ad15535bfe67116790a78414c44c673))
|
||||
- basic limit share ratio [#308](https://www.github.com/WDaan/VueTorrent/issues/308)
|
||||
([2c1fc34](https://www.github.com/WDaan/VueTorrent/commit/2c1fc34ebdc6f096628d23a6072ea1970764b267))
|
||||
- basic multilang support ([#320](https://www.github.com/WDaan/VueTorrent/issues/320))
|
||||
([a7cc03c](https://www.github.com/WDaan/VueTorrent/commit/a7cc03c3ba60f7dbc2d18fff78a0b5f5c6db4b1a))
|
||||
- bypass authentication ([#310](https://www.github.com/WDaan/VueTorrent/issues/310))
|
||||
([b069ce4](https://www.github.com/WDaan/VueTorrent/commit/b069ce490e74baf003c9c92cd780c51414702c13))
|
||||
- checkbox + button with color feedback for TorrentDeleteModal ([a83ea14](https://www.github.com/WDaan/VueTorrent/commit/a83ea144cf1daac09fc76feff5d03347c8ea87ca))
|
||||
- copy name/hash/magnet [#277](https://www.github.com/WDaan/VueTorrent/issues/277)
|
||||
([42afd92](https://www.github.com/WDaan/VueTorrent/commit/42afd921274c0be3fc122a4d5b8d2aeae5fe0c13))
|
||||
- drawer on right side [#276](https://www.github.com/WDaan/VueTorrent/issues/276)
|
||||
([a18bded](https://www.github.com/WDaan/VueTorrent/commit/a18bded9cb9792b3301008cc717b52053191c8f9))
|
||||
- fullscreen toggle on torrent info modal (desktop) ([1de9e64](https://www.github.com/WDaan/VueTorrent/commit/1de9e6459657c386332d146352c3ed765f70fa3c))
|
||||
- improved per-torrent speed limits modal ([#172](https://www.github.com/WDaan/VueTorrent/issues/172))
|
||||
([7bed9ee](https://www.github.com/WDaan/VueTorrent/commit/7bed9eef12321e06bb143d96f02326d967e6f739))
|
||||
- New Logo ([b2858a4](https://www.github.com/WDaan/VueTorrent/commit/b2858a4f68238867996cfe5e61e0947dae3af022))
|
||||
- New select mode color ([8f8d3db](https://www.github.com/WDaan/VueTorrent/commit/8f8d3dbb765d950baa9c5e7654a356e2d300ed28))
|
||||
- open addmodal when dragging a file into the dashboard ([5807db5](https://www.github.com/WDaan/VueTorrent/commit/5807db5e99ac84436261e9d0e2b9a6767d851ba2))
|
||||
- PWA splash & bar color ([dfbed5c](https://www.github.com/WDaan/VueTorrent/commit/dfbed5cb05c0b6974c09c86c6e82e1478f1100d6))
|
||||
- remember delete with files preference [#291](https://www.github.com/WDaan/VueTorrent/issues/291)
|
||||
([684bbec](https://www.github.com/WDaan/VueTorrent/commit/684bbecff0f7fe239f0ee05dfb5392b4a6401069))
|
||||
- remove torrent files with checkbox [#199](https://www.github.com/WDaan/VueTorrent/issues/199)
|
||||
([0eddf64](https://www.github.com/WDaan/VueTorrent/commit/0eddf6458ea3b72ce19282fbcd07e19ff96fd3f8))
|
||||
- run external program on torrent completion [#258](https://www.github.com/WDaan/VueTorrent/issues/258)
|
||||
([99fa1c4](https://www.github.com/WDaan/VueTorrent/commit/99fa1c419d47516a1e265e753c127fedf370ffec))
|
||||
- Show connection status at the bottom of Navbar ([#255](https://www.github.com/WDaan/VueTorrent/issues/255))
|
||||
([204d74c](https://www.github.com/WDaan/VueTorrent/commit/204d74c4e84df5404819796e9e5078c01106990a))
|
||||
- show created by info [#279](https://www.github.com/WDaan/VueTorrent/issues/279)
|
||||
([7a7562e](https://www.github.com/WDaan/VueTorrent/commit/7a7562e54e66aebbf782baefa89b1f17e5119afa))
|
||||
- Speed cards as pills with icon in first column and speed on top of the unit in second column ([#169](https://www.github.com/WDaan/VueTorrent/issues/169))
|
||||
([354fe4f](https://www.github.com/WDaan/VueTorrent/commit/354fe4f5f870bb48613ef390341c4c1971e2936e))
|
||||
- torrent detail infinity sign for unlimited speeds ([#173](https://www.github.com/WDaan/VueTorrent/issues/173))
|
||||
([6f9a5d5](https://www.github.com/WDaan/VueTorrent/commit/6f9a5d5fefd9c0a2622ce62588ee717f762b7eee))
|
||||
- use confirmation modal when deleting from context menu [#191](https://www.github.com/WDaan/VueTorrent/issues/191)
|
||||
([53c548b](https://www.github.com/WDaan/VueTorrent/commit/53c548b502bacc95bab59026b836eb2bb2b785ec))
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* 0 speed when no speed data returned ([a7b8ed9](https://www.github.com/WDaan/VueTorrent/commit/a7b8ed9da3dbca8d2f3be0665880d3cda5f5a50b))
|
||||
* add tracker dialog bug [#187](https://www.github.com/WDaan/VueTorrent/issues/187) ([7c7e40d](https://www.github.com/WDaan/VueTorrent/commit/7c7e40d4a5105ce3e0e9422551ad6cd2673da932))
|
||||
* altspeed value ([aadb3f2](https://www.github.com/WDaan/VueTorrent/commit/aadb3f2171d38d5a94f9ca9847c50137669055b3))
|
||||
* always fetch full data (more reliable) ([89cf6ba](https://www.github.com/WDaan/VueTorrent/commit/89cf6ba32c7a4b24cd0ea4d358e56e1d859d4665))
|
||||
* application version getter ([#222](https://www.github.com/WDaan/VueTorrent/issues/222)) ([6535ac5](https://www.github.com/WDaan/VueTorrent/commit/6535ac56265d3062c877f35fa5e44b9635e26fcd))
|
||||
* Context menu placement ([ed08c91](https://www.github.com/WDaan/VueTorrent/commit/ed08c914ebde9fba53e8b24f58c0a80918569b26))
|
||||
* double click opens info [#287](https://www.github.com/WDaan/VueTorrent/issues/287) ([c8ffce5](https://www.github.com/WDaan/VueTorrent/commit/c8ffce59b1ebb7b72575f8797d35942bdfe62ef4))
|
||||
* Establish Service WalkerRules ([#227](https://www.github.com/WDaan/VueTorrent/issues/227)) ([04971dc](https://www.github.com/WDaan/VueTorrent/commit/04971dcf874c2f952f57c3abef94d8d92337e488))
|
||||
* Global Speed Title (upload & download were switched) ([#218](https://www.github.com/WDaan/VueTorrent/issues/218)) ([906f6d5](https://www.github.com/WDaan/VueTorrent/commit/906f6d5f872b848fc7b3c5071c51a9696ce7c734))
|
||||
* interrupted divider in torrenfinfo [#151](https://www.github.com/WDaan/VueTorrent/issues/151) ([d362aef](https://www.github.com/WDaan/VueTorrent/commit/d362aef27574bb6a60c3675eef52655f1a57bebe))
|
||||
* invisble close button on modal [#314](https://www.github.com/WDaan/VueTorrent/issues/314) [#297](https://www.github.com/WDaan/VueTorrent/issues/297) ([8001dc9](https://www.github.com/WDaan/VueTorrent/commit/8001dc91c738e4b9bfa9dd8a6b6b52249e727f5a))
|
||||
* issue where 'torrent details' modal does not work properly on iOS ([a83ea14](https://www.github.com/WDaan/VueTorrent/commit/a83ea144cf1daac09fc76feff5d03347c8ea87ca))
|
||||
* layout issues + remove vue-perfect-scrollbar + refactor context menu ([a83ea14](https://www.github.com/WDaan/VueTorrent/commit/a83ea144cf1daac09fc76feff5d03347c8ea87ca))
|
||||
* logout [#286](https://www.github.com/WDaan/VueTorrent/issues/286) ([9121230](https://www.github.com/WDaan/VueTorrent/commit/912123098e5fca6193ebb6f66ad06c8442d07861))
|
||||
* margin when freespace card is disabled ([6be41e3](https://www.github.com/WDaan/VueTorrent/commit/6be41e33cfb0eb365df18e53c396cd4a36d4b8e5))
|
||||
* mobile search [#156](https://www.github.com/WDaan/VueTorrent/issues/156) - maybe redesign in future ([463dabd](https://www.github.com/WDaan/VueTorrent/commit/463dabde00a34c495d238aff4fd82ea65acc9e54))
|
||||
* mobile search [#156](https://www.github.com/WDaan/VueTorrent/issues/156) - maybe redesign in future ([0f62f4d](https://www.github.com/WDaan/VueTorrent/commit/0f62f4df6763e4449b1ceab946092f9b67b06411))
|
||||
* Persistent add modal ([d517d9f](https://www.github.com/WDaan/VueTorrent/commit/d517d9f3341e59de572118922b43a9e1adb8c9ad))
|
||||
* push precompiled release in a public folder ([adfc6a0](https://www.github.com/WDaan/VueTorrent/commit/adfc6a00f2e0b2e09f7f4e67a2efc3dc1db50194))
|
||||
* remove black box on iOS PWA [#180](https://www.github.com/WDaan/VueTorrent/issues/180) ([f918ff5](https://www.github.com/WDaan/VueTorrent/commit/f918ff5ee5c0ddd1c288caa261bbd95e40de4d24))
|
||||
* remove device darkmode because its unreliable [#285](https://www.github.com/WDaan/VueTorrent/issues/285) ([e6c0863](https://www.github.com/WDaan/VueTorrent/commit/e6c0863545c4a6a24ecc57158ff61421d17f9070))
|
||||
* remove gesture feature on tabs (buggy anyway) ([0960962](https://www.github.com/WDaan/VueTorrent/commit/0960962441e424c28c8ad6014a79f733f495b881))
|
||||
* remove vue-context import ([edcd825](https://www.github.com/WDaan/VueTorrent/commit/edcd825969f6876b1962dc8875be4b9447704820))
|
||||
* scrollbar ([c460e29](https://www.github.com/WDaan/VueTorrent/commit/c460e29d95eb034266b3ae1006ebb57001f5aa83))
|
||||
* searchmodal pagination layout ([a9a9aff](https://www.github.com/WDaan/VueTorrent/commit/a9a9aff74f1310df724b0661011c97f798cdfaf6))
|
||||
* selection list not cleared when closing deletemodal without button press ([80573f4](https://www.github.com/WDaan/VueTorrent/commit/80573f436498def7edae86e161535ef378c538e7))
|
||||
* Settings>VueTorrent>Dashboard layout & UX ([d93e540](https://www.github.com/WDaan/VueTorrent/commit/d93e540a71c72bb274da14f36ae5fd72404bc65d))
|
||||
* show torrent comment [#292](https://www.github.com/WDaan/VueTorrent/issues/292) ([4c3c2d3](https://www.github.com/WDaan/VueTorrent/commit/4c3c2d36d713c5f5fda2393a4cfc14b68b09244f))
|
||||
* speedcard value cutoff [#141](https://www.github.com/WDaan/VueTorrent/issues/141) ([a81b1ea](https://www.github.com/WDaan/VueTorrent/commit/a81b1ea2e878b7e890b1c01037b54abba514f969))
|
||||
* Torrent Detail modal with multiple tags shows only one tag selected [#167](https://www.github.com/WDaan/VueTorrent/issues/167) ([1973b5d](https://www.github.com/WDaan/VueTorrent/commit/1973b5dc520ed23682b7788a1ace3905d55c36d8))
|
||||
* torrent done color to similar to seeding [#162](https://www.github.com/WDaan/VueTorrent/issues/162) ([bd71906](https://www.github.com/WDaan/VueTorrent/commit/bd7190685fd598d08ced9af9923e7cd3cfe50c5a))
|
||||
* torrent search on enter [#149](https://www.github.com/WDaan/VueTorrent/issues/149) ([51fbec1](https://www.github.com/WDaan/VueTorrent/commit/51fbec13240f57dccd0177ee8e435f6aba290540))
|
||||
* tweak search treshold [#250](https://www.github.com/WDaan/VueTorrent/issues/250) ([bdbc87b](https://www.github.com/WDaan/VueTorrent/commit/bdbc87b72423891a04a9c8c7a5de69e1d4ccd755))
|
||||
* Update registerServiceWorker.js (delete all cache on when new version is released) ([d846c92](https://www.github.com/WDaan/VueTorrent/commit/d846c924937c99746cbf5a102b0de8ed27381a5d))
|
||||
* wrong tempPathEnabled state [#284](https://www.github.com/WDaan/VueTorrent/issues/284) ([d8e2610](https://www.github.com/WDaan/VueTorrent/commit/d8e26104196120fdbb3475b36f4976c3619ba464))
|
||||
|
||||
- 0 speed when no speed data returned ([a7b8ed9](https://www.github.com/WDaan/VueTorrent/commit/a7b8ed9da3dbca8d2f3be0665880d3cda5f5a50b))
|
||||
- add tracker dialog bug [#187](https://www.github.com/WDaan/VueTorrent/issues/187)
|
||||
([7c7e40d](https://www.github.com/WDaan/VueTorrent/commit/7c7e40d4a5105ce3e0e9422551ad6cd2673da932))
|
||||
- altspeed value ([aadb3f2](https://www.github.com/WDaan/VueTorrent/commit/aadb3f2171d38d5a94f9ca9847c50137669055b3))
|
||||
- always fetch full data (more reliable) ([89cf6ba](https://www.github.com/WDaan/VueTorrent/commit/89cf6ba32c7a4b24cd0ea4d358e56e1d859d4665))
|
||||
- application version getter ([#222](https://www.github.com/WDaan/VueTorrent/issues/222))
|
||||
([6535ac5](https://www.github.com/WDaan/VueTorrent/commit/6535ac56265d3062c877f35fa5e44b9635e26fcd))
|
||||
- Context menu placement ([ed08c91](https://www.github.com/WDaan/VueTorrent/commit/ed08c914ebde9fba53e8b24f58c0a80918569b26))
|
||||
- double click opens info [#287](https://www.github.com/WDaan/VueTorrent/issues/287)
|
||||
([c8ffce5](https://www.github.com/WDaan/VueTorrent/commit/c8ffce59b1ebb7b72575f8797d35942bdfe62ef4))
|
||||
- Establish Service WalkerRules ([#227](https://www.github.com/WDaan/VueTorrent/issues/227))
|
||||
([04971dc](https://www.github.com/WDaan/VueTorrent/commit/04971dcf874c2f952f57c3abef94d8d92337e488))
|
||||
- Global Speed Title (upload & download were switched) ([#218](https://www.github.com/WDaan/VueTorrent/issues/218))
|
||||
([906f6d5](https://www.github.com/WDaan/VueTorrent/commit/906f6d5f872b848fc7b3c5071c51a9696ce7c734))
|
||||
- interrupted divider in torrenfinfo [#151](https://www.github.com/WDaan/VueTorrent/issues/151)
|
||||
([d362aef](https://www.github.com/WDaan/VueTorrent/commit/d362aef27574bb6a60c3675eef52655f1a57bebe))
|
||||
- invisble close button on modal [#314](https://www.github.com/WDaan/VueTorrent/issues/314) [#297](https://www.github.com/WDaan/VueTorrent/issues/297)
|
||||
([8001dc9](https://www.github.com/WDaan/VueTorrent/commit/8001dc91c738e4b9bfa9dd8a6b6b52249e727f5a))
|
||||
- issue where 'torrent details' modal does not work properly on iOS ([a83ea14](https://www.github.com/WDaan/VueTorrent/commit/a83ea144cf1daac09fc76feff5d03347c8ea87ca))
|
||||
- layout issues + remove vue-perfect-scrollbar + refactor context menu ([a83ea14](https://www.github.com/WDaan/VueTorrent/commit/a83ea144cf1daac09fc76feff5d03347c8ea87ca))
|
||||
- logout [#286](https://www.github.com/WDaan/VueTorrent/issues/286) ([9121230](https://www.github.com/WDaan/VueTorrent/commit/912123098e5fca6193ebb6f66ad06c8442d07861))
|
||||
- margin when freespace card is disabled ([6be41e3](https://www.github.com/WDaan/VueTorrent/commit/6be41e33cfb0eb365df18e53c396cd4a36d4b8e5))
|
||||
- mobile search [#156](https://www.github.com/WDaan/VueTorrent/issues/156) - maybe redesign in future
|
||||
([463dabd](https://www.github.com/WDaan/VueTorrent/commit/463dabde00a34c495d238aff4fd82ea65acc9e54))
|
||||
- mobile search [#156](https://www.github.com/WDaan/VueTorrent/issues/156) - maybe redesign in future
|
||||
([0f62f4d](https://www.github.com/WDaan/VueTorrent/commit/0f62f4df6763e4449b1ceab946092f9b67b06411))
|
||||
- Persistent add modal ([d517d9f](https://www.github.com/WDaan/VueTorrent/commit/d517d9f3341e59de572118922b43a9e1adb8c9ad))
|
||||
- push precompiled release in a public folder ([adfc6a0](https://www.github.com/WDaan/VueTorrent/commit/adfc6a00f2e0b2e09f7f4e67a2efc3dc1db50194))
|
||||
- remove black box on iOS PWA [#180](https://www.github.com/WDaan/VueTorrent/issues/180)
|
||||
([f918ff5](https://www.github.com/WDaan/VueTorrent/commit/f918ff5ee5c0ddd1c288caa261bbd95e40de4d24))
|
||||
- remove device darkmode because its unreliable [#285](https://www.github.com/WDaan/VueTorrent/issues/285)
|
||||
([e6c0863](https://www.github.com/WDaan/VueTorrent/commit/e6c0863545c4a6a24ecc57158ff61421d17f9070))
|
||||
- remove gesture feature on tabs (buggy anyway) ([0960962](https://www.github.com/WDaan/VueTorrent/commit/0960962441e424c28c8ad6014a79f733f495b881))
|
||||
- remove vue-context import ([edcd825](https://www.github.com/WDaan/VueTorrent/commit/edcd825969f6876b1962dc8875be4b9447704820))
|
||||
- scrollbar ([c460e29](https://www.github.com/WDaan/VueTorrent/commit/c460e29d95eb034266b3ae1006ebb57001f5aa83))
|
||||
- searchmodal pagination layout ([a9a9aff](https://www.github.com/WDaan/VueTorrent/commit/a9a9aff74f1310df724b0661011c97f798cdfaf6))
|
||||
- selection list not cleared when closing deletemodal without button press ([80573f4](https://www.github.com/WDaan/VueTorrent/commit/80573f436498def7edae86e161535ef378c538e7))
|
||||
- Settings>VueTorrent>Dashboard layout & UX ([d93e540](https://www.github.com/WDaan/VueTorrent/commit/d93e540a71c72bb274da14f36ae5fd72404bc65d))
|
||||
- show torrent comment [#292](https://www.github.com/WDaan/VueTorrent/issues/292)
|
||||
([4c3c2d3](https://www.github.com/WDaan/VueTorrent/commit/4c3c2d36d713c5f5fda2393a4cfc14b68b09244f))
|
||||
- speedcard value cutoff [#141](https://www.github.com/WDaan/VueTorrent/issues/141)
|
||||
([a81b1ea](https://www.github.com/WDaan/VueTorrent/commit/a81b1ea2e878b7e890b1c01037b54abba514f969))
|
||||
- Torrent Detail modal with multiple tags shows only one tag selected [#167](https://www.github.com/WDaan/VueTorrent/issues/167)
|
||||
([1973b5d](https://www.github.com/WDaan/VueTorrent/commit/1973b5dc520ed23682b7788a1ace3905d55c36d8))
|
||||
- torrent done color to similar to seeding [#162](https://www.github.com/WDaan/VueTorrent/issues/162)
|
||||
([bd71906](https://www.github.com/WDaan/VueTorrent/commit/bd7190685fd598d08ced9af9923e7cd3cfe50c5a))
|
||||
- torrent search on enter [#149](https://www.github.com/WDaan/VueTorrent/issues/149)
|
||||
([51fbec1](https://www.github.com/WDaan/VueTorrent/commit/51fbec13240f57dccd0177ee8e435f6aba290540))
|
||||
- tweak search treshold [#250](https://www.github.com/WDaan/VueTorrent/issues/250)
|
||||
([bdbc87b](https://www.github.com/WDaan/VueTorrent/commit/bdbc87b72423891a04a9c8c7a5de69e1d4ccd755))
|
||||
- Update registerServiceWorker.js (delete all cache on when new version is released)
|
||||
([d846c92](https://www.github.com/WDaan/VueTorrent/commit/d846c924937c99746cbf5a102b0de8ed27381a5d))
|
||||
- wrong tempPathEnabled state [#284](https://www.github.com/WDaan/VueTorrent/issues/284)
|
||||
([d8e2610](https://www.github.com/WDaan/VueTorrent/commit/d8e26104196120fdbb3475b36f4976c3619ba464))
|
||||
|
||||
### Improvements
|
||||
|
||||
* 'Vue2-perfect-scrollbar' is no longer dependent ([a83ea14](https://www.github.com/WDaan/VueTorrent/commit/a83ea144cf1daac09fc76feff5d03347c8ea87ca))
|
||||
* better share limit modal ([#316](https://www.github.com/WDaan/VueTorrent/issues/316)) ([9f2ca42](https://www.github.com/WDaan/VueTorrent/commit/9f2ca4230da46431965d6ed0777f465554926494))
|
||||
* Context (right click) menu refactor! Works way better on mobile ([a83ea14](https://www.github.com/WDaan/VueTorrent/commit/a83ea144cf1daac09fc76feff5d03347c8ea87ca))
|
||||
* more chinese translations ([65943ae](https://www.github.com/WDaan/VueTorrent/commit/65943aea02b1a349719a704492f2905b1f8f2f81))
|
||||
* only update changed data + code cleanup ([664e4db](https://www.github.com/WDaan/VueTorrent/commit/664e4dbe2ff9bf04a2ef766fe2726d5f994b1228))
|
||||
* Remove redundant dialog code, use Modal Mixin ([33cf62f](https://www.github.com/WDaan/VueTorrent/commit/33cf62ff9b6ea671dc1022e345a65705bd814640))
|
||||
* softer red color [#155](https://www.github.com/WDaan/VueTorrent/issues/155) ([cbf845a](https://www.github.com/WDaan/VueTorrent/commit/cbf845a8a407895e8d6093c584ea96497c45cac0))
|
||||
- 'Vue2-perfect-scrollbar' is no longer dependent ([a83ea14](https://www.github.com/WDaan/VueTorrent/commit/a83ea144cf1daac09fc76feff5d03347c8ea87ca))
|
||||
- better share limit modal ([#316](https://www.github.com/WDaan/VueTorrent/issues/316))
|
||||
([9f2ca42](https://www.github.com/WDaan/VueTorrent/commit/9f2ca4230da46431965d6ed0777f465554926494))
|
||||
- Context (right click) menu refactor! Works way better on mobile ([a83ea14](https://www.github.com/WDaan/VueTorrent/commit/a83ea144cf1daac09fc76feff5d03347c8ea87ca))
|
||||
- more chinese translations ([65943ae](https://www.github.com/WDaan/VueTorrent/commit/65943aea02b1a349719a704492f2905b1f8f2f81))
|
||||
- only update changed data + code cleanup ([664e4db](https://www.github.com/WDaan/VueTorrent/commit/664e4dbe2ff9bf04a2ef766fe2726d5f994b1228))
|
||||
- Remove redundant dialog code, use Modal Mixin ([33cf62f](https://www.github.com/WDaan/VueTorrent/commit/33cf62ff9b6ea671dc1022e345a65705bd814640))
|
||||
- softer red color [#155](https://www.github.com/WDaan/VueTorrent/issues/155) ([cbf845a](https://www.github.com/WDaan/VueTorrent/commit/cbf845a8a407895e8d6093c584ea96497c45cac0))
|
||||
|
||||
## [0.13.0](https://www.github.com/WDaan/VueTorrent/compare/v0.12.0...v0.13.0) (2021-11-01)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* basic limit share ratio [#308](https://www.github.com/WDaan/VueTorrent/issues/308) ([2c1fc34](https://www.github.com/WDaan/VueTorrent/commit/2c1fc34ebdc6f096628d23a6072ea1970764b267))
|
||||
* bypass authentication ([#310](https://www.github.com/WDaan/VueTorrent/issues/310)) ([b069ce4](https://www.github.com/WDaan/VueTorrent/commit/b069ce490e74baf003c9c92cd780c51414702c13))
|
||||
- basic limit share ratio [#308](https://www.github.com/WDaan/VueTorrent/issues/308)
|
||||
([2c1fc34](https://www.github.com/WDaan/VueTorrent/commit/2c1fc34ebdc6f096628d23a6072ea1970764b267))
|
||||
- bypass authentication ([#310](https://www.github.com/WDaan/VueTorrent/issues/310))
|
||||
([b069ce4](https://www.github.com/WDaan/VueTorrent/commit/b069ce490e74baf003c9c92cd780c51414702c13))
|
||||
|
||||
## [0.12.0](https://www.github.com/WDaan/VueTorrent/compare/v0.11.0...v0.12.0) (2021-08-29)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* remember delete with files preference [#291](https://www.github.com/WDaan/VueTorrent/issues/291) ([684bbec](https://www.github.com/WDaan/VueTorrent/commit/684bbecff0f7fe239f0ee05dfb5392b4a6401069))
|
||||
|
||||
- remember delete with files preference [#291](https://www.github.com/WDaan/VueTorrent/issues/291)
|
||||
([684bbec](https://www.github.com/WDaan/VueTorrent/commit/684bbecff0f7fe239f0ee05dfb5392b4a6401069))
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* double click opens info [#287](https://www.github.com/WDaan/VueTorrent/issues/287) ([c8ffce5](https://www.github.com/WDaan/VueTorrent/commit/c8ffce59b1ebb7b72575f8797d35942bdfe62ef4))
|
||||
* logout [#286](https://www.github.com/WDaan/VueTorrent/issues/286) ([9121230](https://www.github.com/WDaan/VueTorrent/commit/912123098e5fca6193ebb6f66ad06c8442d07861))
|
||||
* remove device darkmode because its unreliable [#285](https://www.github.com/WDaan/VueTorrent/issues/285) ([e6c0863](https://www.github.com/WDaan/VueTorrent/commit/e6c0863545c4a6a24ecc57158ff61421d17f9070))
|
||||
* show torrent comment [#292](https://www.github.com/WDaan/VueTorrent/issues/292) ([4c3c2d3](https://www.github.com/WDaan/VueTorrent/commit/4c3c2d36d713c5f5fda2393a4cfc14b68b09244f))
|
||||
* wrong tempPathEnabled state [#284](https://www.github.com/WDaan/VueTorrent/issues/284) ([d8e2610](https://www.github.com/WDaan/VueTorrent/commit/d8e26104196120fdbb3475b36f4976c3619ba464))
|
||||
- double click opens info [#287](https://www.github.com/WDaan/VueTorrent/issues/287)
|
||||
([c8ffce5](https://www.github.com/WDaan/VueTorrent/commit/c8ffce59b1ebb7b72575f8797d35942bdfe62ef4))
|
||||
- logout [#286](https://www.github.com/WDaan/VueTorrent/issues/286) ([9121230](https://www.github.com/WDaan/VueTorrent/commit/912123098e5fca6193ebb6f66ad06c8442d07861))
|
||||
- remove device darkmode because its unreliable [#285](https://www.github.com/WDaan/VueTorrent/issues/285)
|
||||
([e6c0863](https://www.github.com/WDaan/VueTorrent/commit/e6c0863545c4a6a24ecc57158ff61421d17f9070))
|
||||
- show torrent comment [#292](https://www.github.com/WDaan/VueTorrent/issues/292)
|
||||
([4c3c2d3](https://www.github.com/WDaan/VueTorrent/commit/4c3c2d36d713c5f5fda2393a4cfc14b68b09244f))
|
||||
- wrong tempPathEnabled state [#284](https://www.github.com/WDaan/VueTorrent/issues/284)
|
||||
([d8e2610](https://www.github.com/WDaan/VueTorrent/commit/d8e26104196120fdbb3475b36f4976c3619ba464))
|
||||
|
||||
## [0.11.0](https://www.github.com/WDaan/VueTorrent/compare/v0.10.0...v0.11.0) (2021-08-14)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* copy name/hash/magnet [#277](https://www.github.com/WDaan/VueTorrent/issues/277) ([42afd92](https://www.github.com/WDaan/VueTorrent/commit/42afd921274c0be3fc122a4d5b8d2aeae5fe0c13))
|
||||
* drawer on right side [#276](https://www.github.com/WDaan/VueTorrent/issues/276) ([a18bded](https://www.github.com/WDaan/VueTorrent/commit/a18bded9cb9792b3301008cc717b52053191c8f9))
|
||||
* Show connection status at the bottom of Navbar ([#255](https://www.github.com/WDaan/VueTorrent/issues/255)) ([204d74c](https://www.github.com/WDaan/VueTorrent/commit/204d74c4e84df5404819796e9e5078c01106990a))
|
||||
* show created by info [#279](https://www.github.com/WDaan/VueTorrent/issues/279) ([7a7562e](https://www.github.com/WDaan/VueTorrent/commit/7a7562e54e66aebbf782baefa89b1f17e5119afa))
|
||||
|
||||
- copy name/hash/magnet [#277](https://www.github.com/WDaan/VueTorrent/issues/277)
|
||||
([42afd92](https://www.github.com/WDaan/VueTorrent/commit/42afd921274c0be3fc122a4d5b8d2aeae5fe0c13))
|
||||
- drawer on right side [#276](https://www.github.com/WDaan/VueTorrent/issues/276)
|
||||
([a18bded](https://www.github.com/WDaan/VueTorrent/commit/a18bded9cb9792b3301008cc717b52053191c8f9))
|
||||
- Show connection status at the bottom of Navbar ([#255](https://www.github.com/WDaan/VueTorrent/issues/255))
|
||||
([204d74c](https://www.github.com/WDaan/VueTorrent/commit/204d74c4e84df5404819796e9e5078c01106990a))
|
||||
- show created by info [#279](https://www.github.com/WDaan/VueTorrent/issues/279)
|
||||
([7a7562e](https://www.github.com/WDaan/VueTorrent/commit/7a7562e54e66aebbf782baefa89b1f17e5119afa))
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Persistent add modal ([d517d9f](https://www.github.com/WDaan/VueTorrent/commit/d517d9f3341e59de572118922b43a9e1adb8c9ad))
|
||||
- Persistent add modal ([d517d9f](https://www.github.com/WDaan/VueTorrent/commit/d517d9f3341e59de572118922b43a9e1adb8c9ad))
|
||||
|
||||
## [0.10.0](https://www.github.com/WDaan/VueTorrent/compare/v0.9.0...v0.10.0) (2021-05-02)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* New select mode color ([8f8d3db](https://www.github.com/WDaan/VueTorrent/commit/8f8d3dbb765d950baa9c5e7654a356e2d300ed28))
|
||||
* open addmodal when dragging a file into the dashboard ([5807db5](https://www.github.com/WDaan/VueTorrent/commit/5807db5e99ac84436261e9d0e2b9a6767d851ba2))
|
||||
|
||||
- New select mode color ([8f8d3db](https://www.github.com/WDaan/VueTorrent/commit/8f8d3dbb765d950baa9c5e7654a356e2d300ed28))
|
||||
- open addmodal when dragging a file into the dashboard ([5807db5](https://www.github.com/WDaan/VueTorrent/commit/5807db5e99ac84436261e9d0e2b9a6767d851ba2))
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* application version getter ([#222](https://www.github.com/WDaan/VueTorrent/issues/222)) ([6535ac5](https://www.github.com/WDaan/VueTorrent/commit/6535ac56265d3062c877f35fa5e44b9635e26fcd))
|
||||
* Context menu placement ([ed08c91](https://www.github.com/WDaan/VueTorrent/commit/ed08c914ebde9fba53e8b24f58c0a80918569b26))
|
||||
* Establish Service WalkerRules ([#227](https://www.github.com/WDaan/VueTorrent/issues/227)) ([04971dc](https://www.github.com/WDaan/VueTorrent/commit/04971dcf874c2f952f57c3abef94d8d92337e488))
|
||||
* Global Speed Title (upload & download were switched) ([#218](https://www.github.com/WDaan/VueTorrent/issues/218)) ([906f6d5](https://www.github.com/WDaan/VueTorrent/commit/906f6d5f872b848fc7b3c5071c51a9696ce7c734))
|
||||
* remove vue-context import ([edcd825](https://www.github.com/WDaan/VueTorrent/commit/edcd825969f6876b1962dc8875be4b9447704820))
|
||||
* scrollbar ([c460e29](https://www.github.com/WDaan/VueTorrent/commit/c460e29d95eb034266b3ae1006ebb57001f5aa83))
|
||||
* tweak search treshold [#250](https://www.github.com/WDaan/VueTorrent/issues/250) ([bdbc87b](https://www.github.com/WDaan/VueTorrent/commit/bdbc87b72423891a04a9c8c7a5de69e1d4ccd755))
|
||||
|
||||
- application version getter ([#222](https://www.github.com/WDaan/VueTorrent/issues/222))
|
||||
([6535ac5](https://www.github.com/WDaan/VueTorrent/commit/6535ac56265d3062c877f35fa5e44b9635e26fcd))
|
||||
- Context menu placement ([ed08c91](https://www.github.com/WDaan/VueTorrent/commit/ed08c914ebde9fba53e8b24f58c0a80918569b26))
|
||||
- Establish Service WalkerRules ([#227](https://www.github.com/WDaan/VueTorrent/issues/227))
|
||||
([04971dc](https://www.github.com/WDaan/VueTorrent/commit/04971dcf874c2f952f57c3abef94d8d92337e488))
|
||||
- Global Speed Title (upload & download were switched) ([#218](https://www.github.com/WDaan/VueTorrent/issues/218))
|
||||
([906f6d5](https://www.github.com/WDaan/VueTorrent/commit/906f6d5f872b848fc7b3c5071c51a9696ce7c734))
|
||||
- remove vue-context import ([edcd825](https://www.github.com/WDaan/VueTorrent/commit/edcd825969f6876b1962dc8875be4b9447704820))
|
||||
- scrollbar ([c460e29](https://www.github.com/WDaan/VueTorrent/commit/c460e29d95eb034266b3ae1006ebb57001f5aa83))
|
||||
- tweak search treshold [#250](https://www.github.com/WDaan/VueTorrent/issues/250)
|
||||
([bdbc87b](https://www.github.com/WDaan/VueTorrent/commit/bdbc87b72423891a04a9c8c7a5de69e1d4ccd755))
|
||||
|
||||
### Performance Improvements
|
||||
|
||||
* Remove redundant dialog code, use Modal Mixin ([33cf62f](https://www.github.com/WDaan/VueTorrent/commit/33cf62ff9b6ea671dc1022e345a65705bd814640))
|
||||
- Remove redundant dialog code, use Modal Mixin ([33cf62f](https://www.github.com/WDaan/VueTorrent/commit/33cf62ff9b6ea671dc1022e345a65705bd814640))
|
||||
|
||||
## [0.9.0](https://www.github.com/WDaan/VueTorrent/compare/v0.8.0...v0.9.0) (2021-04-15)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* checkbox + button with color feedback for TorrentDeleteModal ([a83ea14](https://www.github.com/WDaan/VueTorrent/commit/a83ea144cf1daac09fc76feff5d03347c8ea87ca))
|
||||
* New Logo ([b2858a4](https://www.github.com/WDaan/VueTorrent/commit/b2858a4f68238867996cfe5e61e0947dae3af022))
|
||||
* remove torrent files with checkbox [#199](https://www.github.com/WDaan/VueTorrent/issues/199) ([0eddf64](https://www.github.com/WDaan/VueTorrent/commit/0eddf6458ea3b72ce19282fbcd07e19ff96fd3f8))
|
||||
|
||||
- checkbox + button with color feedback for TorrentDeleteModal ([a83ea14](https://www.github.com/WDaan/VueTorrent/commit/a83ea144cf1daac09fc76feff5d03347c8ea87ca))
|
||||
- New Logo ([b2858a4](https://www.github.com/WDaan/VueTorrent/commit/b2858a4f68238867996cfe5e61e0947dae3af022))
|
||||
- remove torrent files with checkbox [#199](https://www.github.com/WDaan/VueTorrent/issues/199)
|
||||
([0eddf64](https://www.github.com/WDaan/VueTorrent/commit/0eddf6458ea3b72ce19282fbcd07e19ff96fd3f8))
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* altspeed value ([aadb3f2](https://www.github.com/WDaan/VueTorrent/commit/aadb3f2171d38d5a94f9ca9847c50137669055b3))
|
||||
* issue where 'torrent details' modal does not work properly on iOS ([a83ea14](https://www.github.com/WDaan/VueTorrent/commit/a83ea144cf1daac09fc76feff5d03347c8ea87ca))
|
||||
* layout issues + remove vue-perfect-scrollbar + refactor context menu ([a83ea14](https://www.github.com/WDaan/VueTorrent/commit/a83ea144cf1daac09fc76feff5d03347c8ea87ca))
|
||||
* selection list not cleared when closing deletemodal without button press ([80573f4](https://www.github.com/WDaan/VueTorrent/commit/80573f436498def7edae86e161535ef378c538e7))
|
||||
|
||||
- altspeed value ([aadb3f2](https://www.github.com/WDaan/VueTorrent/commit/aadb3f2171d38d5a94f9ca9847c50137669055b3))
|
||||
- issue where 'torrent details' modal does not work properly on iOS ([a83ea14](https://www.github.com/WDaan/VueTorrent/commit/a83ea144cf1daac09fc76feff5d03347c8ea87ca))
|
||||
- layout issues + remove vue-perfect-scrollbar + refactor context menu ([a83ea14](https://www.github.com/WDaan/VueTorrent/commit/a83ea144cf1daac09fc76feff5d03347c8ea87ca))
|
||||
- selection list not cleared when closing deletemodal without button press ([80573f4](https://www.github.com/WDaan/VueTorrent/commit/80573f436498def7edae86e161535ef378c538e7))
|
||||
|
||||
### Performance Improvements
|
||||
|
||||
* 'Vue2-perfect-scrollbar' is no longer dependent ([a83ea14](https://www.github.com/WDaan/VueTorrent/commit/a83ea144cf1daac09fc76feff5d03347c8ea87ca))
|
||||
* Context (right click) menu refactor! Works way better on mobile ([a83ea14](https://www.github.com/WDaan/VueTorrent/commit/a83ea144cf1daac09fc76feff5d03347c8ea87ca))
|
||||
- 'Vue2-perfect-scrollbar' is no longer dependent ([a83ea14](https://www.github.com/WDaan/VueTorrent/commit/a83ea144cf1daac09fc76feff5d03347c8ea87ca))
|
||||
- Context (right click) menu refactor! Works way better on mobile ([a83ea14](https://www.github.com/WDaan/VueTorrent/commit/a83ea144cf1daac09fc76feff5d03347c8ea87ca))
|
||||
|
||||
## [0.8.0](https://www.github.com/WDaan/VueTorrent/compare/v0.7.0...v0.8.0) (2021-04-06)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* auto install search plugins when none installed ([abc5457](https://www.github.com/WDaan/VueTorrent/commit/abc5457882892ce4840ae0eef7a438e5ea4c7c90))
|
||||
* auto refresh peers ([dfd10be](https://www.github.com/WDaan/VueTorrent/commit/dfd10beeab4c757ff1ac0c3eecbdc4e740573a75))
|
||||
* fullscreen toggle on torrent info modal (desktop) ([1de9e64](https://www.github.com/WDaan/VueTorrent/commit/1de9e6459657c386332d146352c3ed765f70fa3c))
|
||||
* PWA splash & bar color ([dfbed5c](https://www.github.com/WDaan/VueTorrent/commit/dfbed5cb05c0b6974c09c86c6e82e1478f1100d6))
|
||||
* use confirmation modal when deleting from context menu [#191](https://www.github.com/WDaan/VueTorrent/issues/191) ([53c548b](https://www.github.com/WDaan/VueTorrent/commit/53c548b502bacc95bab59026b836eb2bb2b785ec))
|
||||
|
||||
- auto install search plugins when none installed ([abc5457](https://www.github.com/WDaan/VueTorrent/commit/abc5457882892ce4840ae0eef7a438e5ea4c7c90))
|
||||
- auto refresh peers ([dfd10be](https://www.github.com/WDaan/VueTorrent/commit/dfd10beeab4c757ff1ac0c3eecbdc4e740573a75))
|
||||
- fullscreen toggle on torrent info modal (desktop) ([1de9e64](https://www.github.com/WDaan/VueTorrent/commit/1de9e6459657c386332d146352c3ed765f70fa3c))
|
||||
- PWA splash & bar color ([dfbed5c](https://www.github.com/WDaan/VueTorrent/commit/dfbed5cb05c0b6974c09c86c6e82e1478f1100d6))
|
||||
- use confirmation modal when deleting from context menu [#191](https://www.github.com/WDaan/VueTorrent/issues/191)
|
||||
([53c548b](https://www.github.com/WDaan/VueTorrent/commit/53c548b502bacc95bab59026b836eb2bb2b785ec))
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* 0 speed when no speed data returned ([a7b8ed9](https://www.github.com/WDaan/VueTorrent/commit/a7b8ed9da3dbca8d2f3be0665880d3cda5f5a50b))
|
||||
* add tracker dialog bug [#187](https://www.github.com/WDaan/VueTorrent/issues/187) ([7c7e40d](https://www.github.com/WDaan/VueTorrent/commit/7c7e40d4a5105ce3e0e9422551ad6cd2673da932))
|
||||
* always fetch full data (more reliable) ([89cf6ba](https://www.github.com/WDaan/VueTorrent/commit/89cf6ba32c7a4b24cd0ea4d358e56e1d859d4665))
|
||||
* remove gesture feature on tabs (buggy anyway) ([0960962](https://www.github.com/WDaan/VueTorrent/commit/0960962441e424c28c8ad6014a79f733f495b881))
|
||||
* Settings>VueTorrent>Dashboard layout & UX ([d93e540](https://www.github.com/WDaan/VueTorrent/commit/d93e540a71c72bb274da14f36ae5fd72404bc65d))
|
||||
* Update registerServiceWorker.js (delete all cache on when new version is released) ([d846c92](https://www.github.com/WDaan/VueTorrent/commit/d846c924937c99746cbf5a102b0de8ed27381a5d))
|
||||
|
||||
- 0 speed when no speed data returned ([a7b8ed9](https://www.github.com/WDaan/VueTorrent/commit/a7b8ed9da3dbca8d2f3be0665880d3cda5f5a50b))
|
||||
- add tracker dialog bug [#187](https://www.github.com/WDaan/VueTorrent/issues/187)
|
||||
([7c7e40d](https://www.github.com/WDaan/VueTorrent/commit/7c7e40d4a5105ce3e0e9422551ad6cd2673da932))
|
||||
- always fetch full data (more reliable) ([89cf6ba](https://www.github.com/WDaan/VueTorrent/commit/89cf6ba32c7a4b24cd0ea4d358e56e1d859d4665))
|
||||
- remove gesture feature on tabs (buggy anyway) ([0960962](https://www.github.com/WDaan/VueTorrent/commit/0960962441e424c28c8ad6014a79f733f495b881))
|
||||
- Settings>VueTorrent>Dashboard layout & UX ([d93e540](https://www.github.com/WDaan/VueTorrent/commit/d93e540a71c72bb274da14f36ae5fd72404bc65d))
|
||||
- Update registerServiceWorker.js (delete all cache on when new version is released)
|
||||
([d846c92](https://www.github.com/WDaan/VueTorrent/commit/d846c924937c99746cbf5a102b0de8ed27381a5d))
|
||||
|
||||
### Performance Improvements
|
||||
|
||||
* only update changed data + code cleanup ([664e4db](https://www.github.com/WDaan/VueTorrent/commit/664e4dbe2ff9bf04a2ef766fe2726d5f994b1228))
|
||||
- only update changed data + code cleanup ([664e4db](https://www.github.com/WDaan/VueTorrent/commit/664e4dbe2ff9bf04a2ef766fe2726d5f994b1228))
|
||||
|
||||
## [0.7.0](https://www.github.com/WDaan/VueTorrent/compare/v0.6.0...v0.7.0) (2021-03-25)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* 1st torrent progress in title [#166](https://www.github.com/WDaan/VueTorrent/issues/166) ([5faa248](https://www.github.com/WDaan/VueTorrent/commit/5faa248395e6edd4e892717fcd0ce41ae27efe08))
|
||||
* global pause/resume [#158](https://www.github.com/WDaan/VueTorrent/issues/158) ([28cdd0f](https://www.github.com/WDaan/VueTorrent/commit/28cdd0ff735f797d94c7b216990560c22030d101))
|
||||
* improved per-torrent speed limits modal ([#172](https://www.github.com/WDaan/VueTorrent/issues/172)) ([7bed9ee](https://www.github.com/WDaan/VueTorrent/commit/7bed9eef12321e06bb143d96f02326d967e6f739))
|
||||
* select all toggle [#161](https://www.github.com/WDaan/VueTorrent/issues/161) ([d3a5ac8](https://www.github.com/WDaan/VueTorrent/commit/d3a5ac8f978177e3cb69261c01e279e9615da2f4))
|
||||
* Speed cards as pills with icon in first column and speed on top of the unit in second column ([#169](https://www.github.com/WDaan/VueTorrent/issues/169)) ([354fe4f](https://www.github.com/WDaan/VueTorrent/commit/354fe4f5f870bb48613ef390341c4c1971e2936e))
|
||||
* torrent detail infinity sign for unlimited speeds ([#173](https://www.github.com/WDaan/VueTorrent/issues/173)) ([6f9a5d5](https://www.github.com/WDaan/VueTorrent/commit/6f9a5d5fefd9c0a2622ce62588ee717f762b7eee))
|
||||
|
||||
- 1st torrent progress in title [#166](https://www.github.com/WDaan/VueTorrent/issues/166)
|
||||
([5faa248](https://www.github.com/WDaan/VueTorrent/commit/5faa248395e6edd4e892717fcd0ce41ae27efe08))
|
||||
- global pause/resume [#158](https://www.github.com/WDaan/VueTorrent/issues/158)
|
||||
([28cdd0f](https://www.github.com/WDaan/VueTorrent/commit/28cdd0ff735f797d94c7b216990560c22030d101))
|
||||
- improved per-torrent speed limits modal ([#172](https://www.github.com/WDaan/VueTorrent/issues/172))
|
||||
([7bed9ee](https://www.github.com/WDaan/VueTorrent/commit/7bed9eef12321e06bb143d96f02326d967e6f739))
|
||||
- select all toggle [#161](https://www.github.com/WDaan/VueTorrent/issues/161) ([d3a5ac8](https://www.github.com/WDaan/VueTorrent/commit/d3a5ac8f978177e3cb69261c01e279e9615da2f4))
|
||||
- Speed cards as pills with icon in first column and speed on top of the unit in second column ([#169](https://www.github.com/WDaan/VueTorrent/issues/169))
|
||||
([354fe4f](https://www.github.com/WDaan/VueTorrent/commit/354fe4f5f870bb48613ef390341c4c1971e2936e))
|
||||
- torrent detail infinity sign for unlimited speeds ([#173](https://www.github.com/WDaan/VueTorrent/issues/173))
|
||||
([6f9a5d5](https://www.github.com/WDaan/VueTorrent/commit/6f9a5d5fefd9c0a2622ce62588ee717f762b7eee))
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* push precompiled release in a public folder ([adfc6a0](https://www.github.com/WDaan/VueTorrent/commit/adfc6a00f2e0b2e09f7f4e67a2efc3dc1db50194))
|
||||
* remove black box on iOS PWA [#180](https://www.github.com/WDaan/VueTorrent/issues/180) ([f918ff5](https://www.github.com/WDaan/VueTorrent/commit/f918ff5ee5c0ddd1c288caa261bbd95e40de4d24))
|
||||
* searchmodal pagination layout ([a9a9aff](https://www.github.com/WDaan/VueTorrent/commit/a9a9aff74f1310df724b0661011c97f798cdfaf6))
|
||||
* Torrent Detail modal with multiple tags shows only one tag selected [#167](https://www.github.com/WDaan/VueTorrent/issues/167) ([1973b5d](https://www.github.com/WDaan/VueTorrent/commit/1973b5dc520ed23682b7788a1ace3905d55c36d8))
|
||||
* torrent done color to similar to seeding [#162](https://www.github.com/WDaan/VueTorrent/issues/162) ([bd71906](https://www.github.com/WDaan/VueTorrent/commit/bd7190685fd598d08ced9af9923e7cd3cfe50c5a))
|
||||
- push precompiled release in a public folder ([adfc6a0](https://www.github.com/WDaan/VueTorrent/commit/adfc6a00f2e0b2e09f7f4e67a2efc3dc1db50194))
|
||||
- remove black box on iOS PWA [#180](https://www.github.com/WDaan/VueTorrent/issues/180)
|
||||
([f918ff5](https://www.github.com/WDaan/VueTorrent/commit/f918ff5ee5c0ddd1c288caa261bbd95e40de4d24))
|
||||
- searchmodal pagination layout ([a9a9aff](https://www.github.com/WDaan/VueTorrent/commit/a9a9aff74f1310df724b0661011c97f798cdfaf6))
|
||||
- Torrent Detail modal with multiple tags shows only one tag selected [#167](https://www.github.com/WDaan/VueTorrent/issues/167)
|
||||
([1973b5d](https://www.github.com/WDaan/VueTorrent/commit/1973b5dc520ed23682b7788a1ace3905d55c36d8))
|
||||
- torrent done color to similar to seeding [#162](https://www.github.com/WDaan/VueTorrent/issues/162)
|
||||
([bd71906](https://www.github.com/WDaan/VueTorrent/commit/bd7190685fd598d08ced9af9923e7cd3cfe50c5a))
|
||||
|
||||
## [0.6.0](https://www.github.com/WDaan/VueTorrent/compare/0.5.6...v0.6.0) (2021-02-17)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* add uploaded property ([#145](https://www.github.com/WDaan/VueTorrent/issues/145)) ([0a58d98](https://www.github.com/WDaan/VueTorrent/commit/0a58d98b9f50affee99f05fb4f93d9b37d38ac76))
|
||||
* auto releasing ci ([#146](https://www.github.com/WDaan/VueTorrent/issues/146)) ([d217627](https://www.github.com/WDaan/VueTorrent/commit/d217627d9ad15535bfe67116790a78414c44c673))
|
||||
|
||||
- add uploaded property ([#145](https://www.github.com/WDaan/VueTorrent/issues/145))
|
||||
([0a58d98](https://www.github.com/WDaan/VueTorrent/commit/0a58d98b9f50affee99f05fb4f93d9b37d38ac76))
|
||||
- auto releasing ci ([#146](https://www.github.com/WDaan/VueTorrent/issues/146))
|
||||
([d217627](https://www.github.com/WDaan/VueTorrent/commit/d217627d9ad15535bfe67116790a78414c44c673))
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* interrupted divider in torrenfinfo [#151](https://www.github.com/WDaan/VueTorrent/issues/151) ([d362aef](https://www.github.com/WDaan/VueTorrent/commit/d362aef27574bb6a60c3675eef52655f1a57bebe))
|
||||
* margin when freespace card is disabled ([6be41e3](https://www.github.com/WDaan/VueTorrent/commit/6be41e33cfb0eb365df18e53c396cd4a36d4b8e5))
|
||||
* mobile search [#156](https://www.github.com/WDaan/VueTorrent/issues/156) - maybe redesign in future ([463dabd](https://www.github.com/WDaan/VueTorrent/commit/463dabde00a34c495d238aff4fd82ea65acc9e54))
|
||||
* mobile search [#156](https://www.github.com/WDaan/VueTorrent/issues/156) - maybe redesign in future ([0f62f4d](https://www.github.com/WDaan/VueTorrent/commit/0f62f4df6763e4449b1ceab946092f9b67b06411))
|
||||
* speedcard value cutoff [#141](https://www.github.com/WDaan/VueTorrent/issues/141) ([a81b1ea](https://www.github.com/WDaan/VueTorrent/commit/a81b1ea2e878b7e890b1c01037b54abba514f969))
|
||||
* torrent search on enter [#149](https://www.github.com/WDaan/VueTorrent/issues/149) ([51fbec1](https://www.github.com/WDaan/VueTorrent/commit/51fbec13240f57dccd0177ee8e435f6aba290540))
|
||||
|
||||
- interrupted divider in torrenfinfo [#151](https://www.github.com/WDaan/VueTorrent/issues/151)
|
||||
([d362aef](https://www.github.com/WDaan/VueTorrent/commit/d362aef27574bb6a60c3675eef52655f1a57bebe))
|
||||
- margin when freespace card is disabled ([6be41e3](https://www.github.com/WDaan/VueTorrent/commit/6be41e33cfb0eb365df18e53c396cd4a36d4b8e5))
|
||||
- mobile search [#156](https://www.github.com/WDaan/VueTorrent/issues/156) - maybe redesign in future
|
||||
([463dabd](https://www.github.com/WDaan/VueTorrent/commit/463dabde00a34c495d238aff4fd82ea65acc9e54))
|
||||
- mobile search [#156](https://www.github.com/WDaan/VueTorrent/issues/156) - maybe redesign in future
|
||||
([0f62f4d](https://www.github.com/WDaan/VueTorrent/commit/0f62f4df6763e4449b1ceab946092f9b67b06411))
|
||||
- speedcard value cutoff [#141](https://www.github.com/WDaan/VueTorrent/issues/141)
|
||||
([a81b1ea](https://www.github.com/WDaan/VueTorrent/commit/a81b1ea2e878b7e890b1c01037b54abba514f969))
|
||||
- torrent search on enter [#149](https://www.github.com/WDaan/VueTorrent/issues/149)
|
||||
([51fbec1](https://www.github.com/WDaan/VueTorrent/commit/51fbec13240f57dccd0177ee8e435f6aba290540))
|
||||
|
||||
### Performance Improvements
|
||||
|
||||
* softer red color [#155](https://www.github.com/WDaan/VueTorrent/issues/155) ([cbf845a](https://www.github.com/WDaan/VueTorrent/commit/cbf845a8a407895e8d6093c584ea96497c45cac0))
|
||||
- softer red color [#155](https://www.github.com/WDaan/VueTorrent/issues/155) ([cbf845a](https://www.github.com/WDaan/VueTorrent/commit/cbf845a8a407895e8d6093c584ea96497c45cac0))
|
||||
|
|
12
README.md
12
README.md
|
@ -1,13 +1,13 @@
|
|||
# VueTorrent
|
||||
|
||||
|
||||
<p>
|
||||
<img align="right" width="200px" src="https://imgur.com/x6dKNB3.png">
|
||||
<img align="right" width="200px" src="https://imgur.com/x6dKNB3.png">
|
||||
|
||||
<p> </p>
|
||||
The sleekest looking WebUI for qBittorrent made with Vue.js!
|
||||
The sleekest looking WebUI for qBittorrent made with Vue.js!
|
||||
|
||||
> Vue, qBittorrent, Vuetify
|
||||
|
||||
</p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
|
@ -60,6 +60,7 @@ The sleekest looking WebUI for qBittorrent made with Vue.js!
|
|||
- Pull changes every once in a while, using `git pull`
|
||||
|
||||
### Lazy/Easy
|
||||
|
||||
- use [hotio's qbittorrent](https://hotio.dev/containers/qbittorrent/) docker image, that comes pre-packed with VueTorrent.
|
||||
|
||||
[Alternative methods - May work for older QBit versions](../../wiki/Alternative_Installation_Methods)
|
||||
|
@ -68,7 +69,7 @@ The sleekest looking WebUI for qBittorrent made with Vue.js!
|
|||
|
||||
- Clone the repo
|
||||
- `npm install`
|
||||
- `npm run serve`
|
||||
- `npm run dev`
|
||||
- `npm run lint` (to format the code)
|
||||
- `docker-compose up -d` (to start qbittorrent docker => optional, you can edit `vue.config.js` as well)
|
||||
- You now may open and access the WebUI under localhost with the default username `admin` and password `adminadmin`.
|
||||
|
@ -106,7 +107,8 @@ I'll gladly accept help/pull requests & advice!
|
|||
Open up an issue 😛
|
||||
|
||||
but before you do that:
|
||||
- confirm you're on the latest version of VueTorrent
|
||||
|
||||
- confirm you're on the latest version of VueTorrent
|
||||
- confirm there is no other issue mentioning the same problem
|
||||
|
||||
<a href="https://www.buymeacoffee.com/wdaan"><img src="https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=&slug=wdaan&button_colour=FFDD00&font_colour=000000&font_family=Arial&outline_colour=000000&coffee_colour=ffffff"></a>
|
||||
|
|
|
@ -1,5 +1,14 @@
|
|||
module.exports = {
|
||||
presets: [
|
||||
'@vue/app'
|
||||
presets: ['@babel/preset-env'],
|
||||
plugins: [
|
||||
function () {
|
||||
return {
|
||||
visitor: {
|
||||
MetaProperty(path) {
|
||||
path.replaceWithSourceString('process')
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
version: '3.6'
|
||||
services:
|
||||
qbit:
|
||||
image: linuxserver/qbittorrent:latest
|
||||
container_name: qbit
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Europe/London
|
||||
- UMASK_SET=022
|
||||
- WEBUI_PORT=8080
|
||||
volumes:
|
||||
- ./config:/config
|
||||
- ./Downloads:/downloads
|
||||
- ./vuetorrent:/vuetorrent
|
||||
ports:
|
||||
- 8080:8080
|
||||
restart: unless-stopped
|
||||
qbit:
|
||||
image: linuxserver/qbittorrent:latest
|
||||
container_name: qbit
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Europe/London
|
||||
- UMASK_SET=022
|
||||
- WEBUI_PORT=8080
|
||||
volumes:
|
||||
- ./config:/config
|
||||
- ./Downloads:/downloads
|
||||
- ./vuetorrent:/vuetorrent
|
||||
ports:
|
||||
- 8080:8080
|
||||
restart: unless-stopped
|
||||
|
|
4
env.d.ts
vendored
Normal file
4
env.d.ts
vendored
Normal file
|
@ -0,0 +1,4 @@
|
|||
declare module '*.vue' {
|
||||
import Vue from 'vue'
|
||||
export default Vue
|
||||
}
|
24
index.html
Normal file
24
index.html
Normal file
|
@ -0,0 +1,24 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="initial-scale=1, viewport-fit=cover, width=device-width" />
|
||||
<title>VueTorrent</title>
|
||||
<meta name="description" content="VueTorrent" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="mobile-web-app-capable" content="yes" />
|
||||
<link rel="icon" href="/favicon.ico" type="image/png" sizes="16x16" />
|
||||
<link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" sizes="180x180" />
|
||||
<link rel="mask-icon" href="/favicon.ico" color="#000" />
|
||||
<meta name="theme-color" content="#000" />
|
||||
</head>
|
||||
<body oncontextmenu="return false">
|
||||
<noscript>
|
||||
<strong>We're sorry but Vuetorrent doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
|
||||
</noscript>
|
||||
<div id="app"></div>
|
||||
<script type="module" src="/src/main.js"></script>
|
||||
</body>
|
||||
</html>
|
|
@ -1,8 +0,0 @@
|
|||
module.exports = {
|
||||
preset: '@vue/cli-plugin-unit-jest',
|
||||
moduleFileExtensions: ['js', 'json', 'vue'],
|
||||
transform: {
|
||||
'.*\\.(vue)$': '@vue/vue2-jest',
|
||||
'^.+\\.js$': '<rootDir>/node_modules/babel-jest'
|
||||
}
|
||||
}
|
27358
package-lock.json
generated
27358
package-lock.json
generated
File diff suppressed because it is too large
Load diff
64
package.json
64
package.json
|
@ -1,31 +1,28 @@
|
|||
{
|
||||
"name": "vuetorrent",
|
||||
"version": "0.19.1",
|
||||
"version": "0.21.3",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"serve": "vue-cli-service serve",
|
||||
"build": "vue-cli-service build",
|
||||
"test:unit": "vue-cli-service test:unit --setupTestFrameworkScriptFile=./tests/setup.js",
|
||||
"lint": "vue-cli-service lint",
|
||||
"start": "npm run serve"
|
||||
"dev": "vite --host",
|
||||
"build": "vite build",
|
||||
"test": "npm run test:unit",
|
||||
"test:unit": "vitest run",
|
||||
"lint": "eslint --fix --ignore-path .gitignore && prettier . -w -u --ignore-path .gitignore",
|
||||
"start": "npm run dev"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/polyfill": "^7.12.1",
|
||||
"apexcharts": "^3.35.0",
|
||||
"axios": "^0.26.1",
|
||||
"core-js": "^3.22.0",
|
||||
"dayjs": "^1.11.1",
|
||||
"dayjs": "^1.10.4",
|
||||
"fuse.js": "^6.5.3",
|
||||
"lodash": "^4.17.21",
|
||||
"register-service-worker": "^1.7.2",
|
||||
"sass-loader": "^12.6.0",
|
||||
"typeface-roboto": "^1.1.13",
|
||||
"typeface-roboto-mono": "^1.1.13",
|
||||
"uuid": "^8.3.2",
|
||||
"vue": "^2.7",
|
||||
"vue": "^2.7.14",
|
||||
"vue-apexcharts": "^1.6.2",
|
||||
"vue-i18n": "^8.26.7",
|
||||
"vue-router": "^3.5.1",
|
||||
"vue-i18n": "^8",
|
||||
"vue-router": "^3.6.5",
|
||||
"vue-toastification": "^1.7.11",
|
||||
"vuedraggable": "^2.24.3",
|
||||
"vuetify": "^2.6.10",
|
||||
|
@ -33,27 +30,26 @@
|
|||
"vuex-persist": "^3.1.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/eslint-parser": "^7.17",
|
||||
"@mdi/js": "^5.9.55",
|
||||
"@vue/babel-preset-app": "^5.0.4",
|
||||
"@vue/cli-plugin-babel": "^5.0.4",
|
||||
"@vue/cli-plugin-eslint": "^5.0.4",
|
||||
"@vue/cli-plugin-pwa": "^5.0.4",
|
||||
"@vue/cli-plugin-unit-jest": "^5.0.4",
|
||||
"@vue/cli-service": "^5.0.4",
|
||||
"@vue/eslint-config-prettier": "^7.0.0",
|
||||
"@vue/test-utils": "^1.3",
|
||||
"@vue/vue2-jest": "^27.0.0-alpha.4",
|
||||
"eslint": "^8.13.0",
|
||||
"eslint-config-google": "^0.14.0",
|
||||
"eslint-plugin-prettier": "^3.3.1",
|
||||
"eslint-plugin-vue": "^7.17.0",
|
||||
"fibers": "^5.0.0",
|
||||
"node-sass": "^7.0.0",
|
||||
"sass": "~1.32.0",
|
||||
"vue-cli-plugin-vuetify": "^2.4.2",
|
||||
"vue-template-compiler": "^2.6.11",
|
||||
"vuetify-loader": "^1.7.0"
|
||||
"@types/jsdom": "^20.0.1",
|
||||
"@typescript-eslint/eslint-plugin": "^5",
|
||||
"@typescript-eslint/parser": "^5",
|
||||
"@vitejs/plugin-vue2": "^2",
|
||||
"@vue/eslint-config-typescript": "^11",
|
||||
"@vue/test-utils": "^1",
|
||||
"eslint": "^8",
|
||||
"eslint-config-prettier": "^8",
|
||||
"eslint-plugin-prettier": "^4",
|
||||
"eslint-plugin-vue": "^9",
|
||||
"jsdom": "^20.0.2",
|
||||
"prettier": "^2",
|
||||
"sass": "~1.32.12",
|
||||
"unplugin-vue-components": "^0.22",
|
||||
"vite": "^3",
|
||||
"vite-plugin-eslint": "^1",
|
||||
"vite-plugin-pwa": "^0.13",
|
||||
"vitest": "^0.25",
|
||||
"vue-template-compiler": "^2"
|
||||
},
|
||||
"browserslist": [
|
||||
"> 1%",
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
||||
<meta name="mobile-web-app-capable" content="yes">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<link rel="icon" type="image/png" href="./favicon.ico?s=1">
|
||||
<link rel="icon" href="./img/icons/favicon.svg" sizes="any" type="image/svg+xml">
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<meta name="mobile-web-app-capable" content="yes" />
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
|
||||
<link rel="icon" type="image/png" href="./favicon.ico?s=1" />
|
||||
<link rel="icon" href="./img/icons/favicon.svg" sizes="any" type="image/svg+xml" />
|
||||
<title>qBittorrent</title>
|
||||
</head>
|
||||
<body>
|
||||
|
|
10
src/App.vue
10
src/App.vue
|
@ -1,11 +1,6 @@
|
|||
<template>
|
||||
<v-app>
|
||||
<component
|
||||
:is="modal.component"
|
||||
v-for="modal in modals"
|
||||
:key="modal.guid"
|
||||
v-bind="{ guid: modal.guid, ...modal.props }"
|
||||
/>
|
||||
<component :is="modal.component" v-for="modal in modals" :key="modal.guid" v-bind="{ guid: modal.guid, ...modal.props }" />
|
||||
<Navbar v-if="isAuthenticated" />
|
||||
<v-main class="background">
|
||||
<router-view />
|
||||
|
@ -18,6 +13,7 @@ import { mapState, mapGetters } from 'vuex'
|
|||
import Navbar from '@/components/Navbar/Navbar.vue'
|
||||
import qbit from '@/services/qbit'
|
||||
import { General } from '@/mixins'
|
||||
import { getVersion } from './helpers'
|
||||
|
||||
export default {
|
||||
name: 'App',
|
||||
|
@ -34,7 +30,7 @@ export default {
|
|||
}
|
||||
},
|
||||
created() {
|
||||
this.$store.commit('SET_APP_VERSION', process.env['APPLICATION_VERSION'])
|
||||
this.$store.commit('SET_APP_VERSION', getVersion())
|
||||
this.$store.commit('SET_LANGUAGE')
|
||||
this.checkAuthentication()
|
||||
this.blockContextMenu()
|
||||
|
|
|
@ -1,10 +1,7 @@
|
|||
export class Hostname {
|
||||
static get(url) {
|
||||
const match = url.match(/:\/\/(www[0-9]?\.)?(.[^/:]+)/i)
|
||||
if (match != null &&
|
||||
match.length > 2 &&
|
||||
typeof match[2] === 'string' &&
|
||||
match[2].length > 0) {
|
||||
if (match != null && match.length > 2 && typeof match[2] === 'string' && match[2].length > 0) {
|
||||
return match[2]
|
||||
} else {
|
||||
return ''
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
import { ArrayHelper } from './ArrayHelper'
|
||||
import { Hostname } from './Hostname'
|
||||
|
||||
export {
|
||||
ArrayHelper, Hostname
|
||||
}
|
||||
export { ArrayHelper, Hostname }
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import { formatBytes } from '@/helpers'
|
||||
import store from '../store'
|
||||
|
||||
|
||||
export class DocumentTitle {
|
||||
static setDefault() {
|
||||
this.set('qBittorrent')
|
||||
|
|
|
@ -17,8 +17,6 @@ export class Tags {
|
|||
|
||||
if (response.tags) {
|
||||
store.state.tags = ArrayHelper.concat(store.state.tags, response.tags)
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,7 +4,8 @@ import Torrent from '@/models/Torrent'
|
|||
|
||||
export class Torrents {
|
||||
static update(data) {
|
||||
if (store.state.webuiSettings.showTrackerFilter) { // dont calculate trackers when disabled
|
||||
if (store.state.webuiSettings.showTrackerFilter) {
|
||||
// dont calculate trackers when disabled
|
||||
|
||||
if (store.state.sort_options.tracker !== null) {
|
||||
data = data.filter(d => Hostname.get(d.tracker) === store.state.sort_options.tracker)
|
||||
|
|
|
@ -4,7 +4,8 @@ import { Hostname } from '@/Helpers/index.js'
|
|||
export class Trackers {
|
||||
static update(data) {
|
||||
if (store.state.webuiSettings.showTrackerFilter) {
|
||||
store.state.trackers = data.map(t => t.tracker)
|
||||
store.state.trackers = data
|
||||
.map(t => t.tracker)
|
||||
.map(url => Hostname.get(url))
|
||||
.filter((domain, index, self) => index === self.indexOf(domain) && domain)
|
||||
.sort()
|
||||
|
|
|
@ -5,7 +5,4 @@ import { Trackers } from './Trackers'
|
|||
import { Graph } from './Graph'
|
||||
import { ServerStatus } from './ServerStatus'
|
||||
|
||||
export {
|
||||
DocumentTitle, Tags, Torrents, Trackers,
|
||||
Graph, ServerStatus
|
||||
}
|
||||
export { DocumentTitle, Tags, Torrents, Trackers, Graph, ServerStatus }
|
||||
|
|
|
@ -1,13 +1,5 @@
|
|||
<template>
|
||||
<v-card
|
||||
v-ripple
|
||||
flat
|
||||
rounded="md"
|
||||
color="secondary"
|
||||
class="speedCard"
|
||||
data-testid="SpeedCard"
|
||||
@click="open"
|
||||
>
|
||||
<v-card v-ripple flat rounded="md" color="secondary" class="speedCard" data-testid="SpeedCard" @click="open">
|
||||
<v-layout row align-center :class="color + '--text'">
|
||||
<v-flex v-if="icon" xs2 class="pl-1">
|
||||
<v-icon data-testid="SpeedCard-icon" :color="color" size="20px">
|
||||
|
@ -20,12 +12,8 @@
|
|||
{{ value | getSpeedValue }}
|
||||
</span>
|
||||
</v-flex>
|
||||
<v-flex
|
||||
class="caption robot-mono text-center mt-n1"
|
||||
>
|
||||
<span data-testid="SpeedCard-unit">
|
||||
{{ value | getDataUnit(1) }}/s
|
||||
</span>
|
||||
<v-flex class="caption robot-mono text-center mt-n1">
|
||||
<span data-testid="SpeedCard-unit"> {{ value | getDataUnit(1) }}/s </span>
|
||||
</v-flex>
|
||||
</v-layout>
|
||||
</v-layout>
|
||||
|
@ -60,7 +48,7 @@ export default {
|
|||
<style scoped>
|
||||
.speedCard {
|
||||
padding: 20px 20px !important;
|
||||
font-size: 1.10em;
|
||||
font-size: 1.1em;
|
||||
cursor: pointer;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -2,11 +2,7 @@
|
|||
<v-card flat color="secondary" class="mr-2 ml-2">
|
||||
<v-layout row wrap class="pa-3 mx-auto">
|
||||
<v-flex md6>
|
||||
<div
|
||||
style="margin-top: 6px"
|
||||
:class="color + '--text'"
|
||||
data-testid="StorageCard-label"
|
||||
>
|
||||
<div style="margin-top: 6px" :class="color + '--text'" data-testid="StorageCard-label">
|
||||
{{ label }}
|
||||
</div>
|
||||
</v-flex>
|
||||
|
@ -27,4 +23,4 @@ export default {
|
|||
name: 'StorageCard',
|
||||
props: ['color', 'label', 'value']
|
||||
}
|
||||
</script>
|
||||
</script>
|
||||
|
|
|
@ -10,36 +10,20 @@
|
|||
>
|
||||
<div
|
||||
class="noselect"
|
||||
style="
|
||||
position:fixed;
|
||||
left:0;
|
||||
top:0;
|
||||
width:100%;
|
||||
height:100%;
|
||||
"
|
||||
style="position: fixed; left: 0; top: 0; width: 100%; height: 100%"
|
||||
@drop.prevent="addDropFile"
|
||||
@dragover.prevent="showWrapDrag = true"
|
||||
@dragend.prevent="showWrapDrag = false"
|
||||
@dragleave.prevent="DragLeave"
|
||||
/>
|
||||
<v-card
|
||||
:class="showWrapDrag ? 'wrap-drag' : ''"
|
||||
@drop.prevent="addDropFile"
|
||||
@dragover.prevent="showWrapDrag = true"
|
||||
@dragend.prevent="showWrapDrag = false"
|
||||
>
|
||||
<v-card :class="showWrapDrag ? 'wrap-drag' : ''" @drop.prevent="addDropFile" @dragover.prevent="showWrapDrag = true" @dragend.prevent="showWrapDrag = false">
|
||||
<v-container :class="`pa-0 project done`">
|
||||
<v-card-title class="justify-center">
|
||||
<v-toolbar flat dense class="transparent">
|
||||
<v-toolbar-title class="mx-auto">
|
||||
<h2>{{ $t('modals.add.title') }}</h2>
|
||||
</v-toolbar-title>
|
||||
<v-btn
|
||||
fab
|
||||
small
|
||||
class="transparent elevation-0"
|
||||
@click="close"
|
||||
>
|
||||
<v-btn fab small class="transparent elevation-0" @click="close">
|
||||
<v-icon>{{ mdiClose }}</v-icon>
|
||||
</v-btn>
|
||||
</v-toolbar>
|
||||
|
@ -61,25 +45,12 @@
|
|||
outlined
|
||||
:show-size="1000"
|
||||
>
|
||||
<template
|
||||
#selection="{ index, text }"
|
||||
>
|
||||
<v-chip
|
||||
v-if="index < 2"
|
||||
color="deep-purple accent-4"
|
||||
dark
|
||||
label
|
||||
small
|
||||
>
|
||||
<template #selection="{ index, text }">
|
||||
<v-chip v-if="index < 2" color="deep-purple accent-4" dark label small>
|
||||
{{ text }}
|
||||
</v-chip>
|
||||
<span
|
||||
v-else-if="index === 2"
|
||||
class="overline grey--text text--darken-3 mx-2"
|
||||
>
|
||||
+{{
|
||||
files.length - 2
|
||||
}}
|
||||
<span v-else-if="index === 2" class="overline grey--text text--darken-3 mx-2">
|
||||
+{{ files.length - 2 }}
|
||||
File(s)
|
||||
</span>
|
||||
</template>
|
||||
|
@ -100,15 +71,7 @@
|
|||
</v-col>
|
||||
</v-row>
|
||||
|
||||
<v-combobox
|
||||
v-model="category"
|
||||
:items="availableCategories"
|
||||
clearable
|
||||
:label="$t('category')"
|
||||
item-text="name"
|
||||
:prepend-icon="mdiTag"
|
||||
@input="categoryChanged"
|
||||
/>
|
||||
<v-combobox v-model="category" :items="availableCategories" clearable :label="$t('category')" item-text="name" :prepend-icon="mdiTag" @input="categoryChanged" />
|
||||
|
||||
<v-text-field
|
||||
v-model="directory"
|
||||
|
@ -120,46 +83,22 @@
|
|||
/>
|
||||
<v-row no-gutters>
|
||||
<v-flex xs12 sm6>
|
||||
<v-checkbox
|
||||
v-model="start"
|
||||
:label="$t('modals.add.starttorrent')"
|
||||
hide-details
|
||||
/>
|
||||
<v-checkbox v-model="start" :label="$t('modals.add.starttorrent')" hide-details />
|
||||
</v-flex>
|
||||
<v-flex xs12 sm6>
|
||||
<v-checkbox
|
||||
v-model="skip_checking"
|
||||
:label="$t('modals.add.skipHashCheck')"
|
||||
hide-details
|
||||
/>
|
||||
<v-checkbox v-model="skip_checking" :label="$t('modals.add.skipHashCheck')" hide-details />
|
||||
</v-flex>
|
||||
<v-flex xs12 sm6>
|
||||
<v-checkbox
|
||||
v-model="root_folder"
|
||||
:label="$t('modals.add.createSubfolder')"
|
||||
hide-details
|
||||
/>
|
||||
<v-checkbox v-model="root_folder" :label="$t('modals.add.createSubfolder')" hide-details />
|
||||
</v-flex>
|
||||
<v-flex xs12 sm6>
|
||||
<v-checkbox
|
||||
v-model="autoTMM"
|
||||
:label="$t('modals.add.automaticTorrentManagement')"
|
||||
hide-details
|
||||
/>
|
||||
<v-checkbox v-model="autoTMM" :label="$t('modals.add.automaticTorrentManagement')" hide-details />
|
||||
</v-flex>
|
||||
<v-flex xs12 sm6>
|
||||
<v-checkbox
|
||||
v-model="sequentialDownload"
|
||||
:label="$t('rightClick.advanced.sequentialDownload')"
|
||||
hide-details
|
||||
/>
|
||||
<v-checkbox v-model="sequentialDownload" :label="$t('rightClick.advanced.sequentialDownload')" hide-details />
|
||||
</v-flex>
|
||||
<v-flex xs12 sm6>
|
||||
<v-checkbox
|
||||
v-model="firstLastPiecePrio"
|
||||
:label="$t('rightClick.advanced.firstLastPriority')"
|
||||
hide-details
|
||||
/>
|
||||
<v-checkbox v-model="firstLastPiecePrio" :label="$t('rightClick.advanced.firstLastPriority')" hide-details />
|
||||
</v-flex>
|
||||
</v-row>
|
||||
</v-container>
|
||||
|
@ -169,24 +108,9 @@
|
|||
<v-spacer />
|
||||
<v-form>
|
||||
<v-card-actions class="justify-center">
|
||||
<v-btn
|
||||
ref="addTorrent"
|
||||
text
|
||||
:disabled="!valid"
|
||||
class="accent white--text mx-0 mt-3"
|
||||
@click="submit"
|
||||
>
|
||||
Add Torrent
|
||||
</v-btn>
|
||||
<v-btn ref="addTorrent" text :disabled="!valid" class="accent white--text mx-0 mt-3" @click="submit"> Add Torrent </v-btn>
|
||||
<v-fab-transition v-if="phoneLayout">
|
||||
<v-btn
|
||||
color="red"
|
||||
dark
|
||||
absolute
|
||||
bottom
|
||||
right
|
||||
@click="close"
|
||||
>
|
||||
<v-btn color="red" dark absolute bottom right @click="close">
|
||||
<v-icon>{{ mdiClose }}</v-icon>
|
||||
</v-btn>
|
||||
</v-fab-transition>
|
||||
|
@ -197,15 +121,7 @@
|
|||
<div
|
||||
v-show="showWrapDrag"
|
||||
class="wrap-drag noselect"
|
||||
style="
|
||||
position:fixed;
|
||||
left:0;
|
||||
top:0;
|
||||
width:100%;
|
||||
height:100%;
|
||||
text-align:center;
|
||||
background-color: rgb(0,0,0,.5)
|
||||
"
|
||||
style="position: fixed; left: 0; top: 0; width: 100%; height: 100%; text-align: center; background-color: rgb(0, 0, 0, 0.5)"
|
||||
>
|
||||
<div class="align white--text">
|
||||
<div>
|
||||
|
@ -259,7 +175,12 @@ export default {
|
|||
loading: false,
|
||||
urls: null,
|
||||
valid: false,
|
||||
mdiCloudUpload, mdiFolder, mdiTag, mdiPaperclip, mdiLink, mdiClose
|
||||
mdiCloudUpload,
|
||||
mdiFolder,
|
||||
mdiTag,
|
||||
mdiPaperclip,
|
||||
mdiLink,
|
||||
mdiClose
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
|
@ -304,8 +225,7 @@ export default {
|
|||
},
|
||||
addDropFile(e) {
|
||||
this.showWrapDrag = false
|
||||
if (!this.urls)
|
||||
this.files.push(...Array.from(e.dataTransfer.files))
|
||||
if (!this.urls) this.files.push(...Array.from(e.dataTransfer.files))
|
||||
},
|
||||
startDropFile() {
|
||||
this.showWrapDrag = true
|
||||
|
@ -314,10 +234,8 @@ export default {
|
|||
this.showWrapDrag = false
|
||||
},
|
||||
closeWrap() {
|
||||
if (this.showWrapDrag)
|
||||
this.showWrapDrag = false
|
||||
else
|
||||
this.close()
|
||||
if (this.showWrapDrag) this.showWrapDrag = false
|
||||
else this.close()
|
||||
},
|
||||
submit() {
|
||||
if (this.files.length || this.urls) {
|
||||
|
@ -366,7 +284,7 @@ export default {
|
|||
}
|
||||
|
||||
.wrap-drag .align {
|
||||
margin: -.5em 0 0;
|
||||
margin: -0.5em 0 0;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 0;
|
||||
|
|
|
@ -1,10 +1,5 @@
|
|||
<template>
|
||||
<v-dialog
|
||||
v-model="dialog"
|
||||
scrollable
|
||||
:width="dialogWidth"
|
||||
:fullscreen="isPhone"
|
||||
>
|
||||
<v-dialog v-model="dialog" scrollable :width="dialogWidth" :fullscreen="isPhone">
|
||||
<v-card>
|
||||
<v-card-title class="pa-0">
|
||||
<v-toolbar-title class="ma-4 primarytext--text">
|
||||
|
@ -15,34 +10,18 @@
|
|||
<v-container>
|
||||
<v-row>
|
||||
<v-col>
|
||||
<v-text-field
|
||||
v-model="torrent.name"
|
||||
:label="$t('modals.changeLocation.torrentName')"
|
||||
:prepend-icon="mdiFile"
|
||||
readonly
|
||||
/>
|
||||
<v-text-field
|
||||
v-model="newPath"
|
||||
:label="$t('directory')"
|
||||
:prepend-icon="mdiFolder"
|
||||
@keydown.enter="setLocation"
|
||||
/>
|
||||
<v-text-field v-model="torrent.name" :label="$t('modals.changeLocation.torrentName')" :prepend-icon="mdiFile" readonly />
|
||||
<v-text-field v-model="newPath" :label="$t('directory')" :prepend-icon="mdiFolder" @keydown.enter="setLocation" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-container>
|
||||
</v-card-text>
|
||||
<v-divider />
|
||||
<v-card-actions class="justify-end">
|
||||
<v-btn
|
||||
class="accent white--text elevation-0 px-4"
|
||||
@click="setLocation"
|
||||
>
|
||||
<v-btn class="accent white--text elevation-0 px-4" @click="setLocation">
|
||||
{{ $t('save') }}
|
||||
</v-btn>
|
||||
<v-btn
|
||||
class="error white--text elevation-0 px-4"
|
||||
@click="close"
|
||||
>
|
||||
<v-btn class="error white--text elevation-0 px-4" @click="close">
|
||||
{{ $t('cancel') }}
|
||||
</v-btn>
|
||||
</v-card-actions>
|
||||
|
@ -65,7 +44,9 @@ export default {
|
|||
data() {
|
||||
return {
|
||||
newPath: '',
|
||||
mdiFile, mdiFolder, mdiClose
|
||||
mdiFile,
|
||||
mdiFolder,
|
||||
mdiClose
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
|
|
|
@ -1,10 +1,5 @@
|
|||
<template>
|
||||
<v-dialog
|
||||
v-model="dialog"
|
||||
scrollable
|
||||
content-class="rounded-form"
|
||||
max-width="600px"
|
||||
>
|
||||
<v-dialog v-model="dialog" scrollable content-class="rounded-form" max-width="600px">
|
||||
<v-card class="pa-2">
|
||||
<v-card-title class="pa-0">
|
||||
<v-toolbar-title class="mx-4 mt-2">
|
||||
|
@ -13,40 +8,21 @@
|
|||
</v-card-title>
|
||||
<v-card-text class="px-6p py-2 mb-2">
|
||||
<v-list flat class="mb-4">
|
||||
<v-list-item
|
||||
v-for="t in torrents"
|
||||
:key="t.hash"
|
||||
else
|
||||
>
|
||||
<v-list-item v-for="t in torrents" :key="t.hash" else>
|
||||
<v-list-item-content>
|
||||
<v-list-item-title
|
||||
class="text-wrap"
|
||||
v-text="t.name"
|
||||
/>
|
||||
<v-list-item-title class="text-wrap" v-text="t.name" />
|
||||
</v-list-item-content>
|
||||
</v-list-item>
|
||||
</v-list>
|
||||
<v-checkbox
|
||||
v-model="settings.deleteWithFiles"
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.delete.check')"
|
||||
hide-details
|
||||
/>
|
||||
<v-checkbox v-model="settings.deleteWithFiles" class="ma-0 pa-0" :label="$t('modals.delete.check')" hide-details />
|
||||
</v-card-text>
|
||||
<v-divider />
|
||||
<v-card-actions class="justify-end">
|
||||
<v-btn
|
||||
class="white--text elevation-0 px-4"
|
||||
:class="settings.deleteWithFiles ? 'error' : 'info'"
|
||||
@click="deleteTorrent()"
|
||||
>
|
||||
<v-btn class="white--text elevation-0 px-4" :class="settings.deleteWithFiles ? 'error' : 'info'" @click="deleteTorrent()">
|
||||
{{ $t('delete') }}
|
||||
</v-btn>
|
||||
<v-spacer />
|
||||
<v-btn
|
||||
class="grey white--text elevation-0 px-4"
|
||||
@click="close()"
|
||||
>
|
||||
<v-btn class="grey white--text elevation-0 px-4" @click="close()">
|
||||
{{ $t('cancel') }}
|
||||
</v-btn>
|
||||
</v-card-actions>
|
||||
|
|
|
@ -1,11 +1,5 @@
|
|||
<template>
|
||||
<v-dialog
|
||||
v-model="dialog"
|
||||
scrollable
|
||||
max-width="750px"
|
||||
:content-class="isPhone ? 'rounded-0' : 'rounded-form'"
|
||||
:fullscreen="isPhone"
|
||||
>
|
||||
<v-dialog v-model="dialog" scrollable max-width="750px" :content-class="isPhone ? 'rounded-0' : 'rounded-form'" :fullscreen="isPhone">
|
||||
<v-card>
|
||||
<v-card-title class="pa-0">
|
||||
<v-toolbar-title class="ma-4 primarytext--text">
|
||||
|
@ -16,38 +10,19 @@
|
|||
<v-container>
|
||||
<v-row>
|
||||
<v-col>
|
||||
<v-textarea
|
||||
v-model="name"
|
||||
rows="1"
|
||||
auto-grow
|
||||
clearable
|
||||
:label="$t('modals.rename.torrentName')"
|
||||
:prepend-inner-icon="mdiFile"
|
||||
/>
|
||||
<v-textarea v-model="name" rows="1" auto-grow clearable :label="$t('modals.rename.torrentName')" :prepend-inner-icon="mdiFile" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-container>
|
||||
</v-card-text>
|
||||
<v-divider />
|
||||
<v-card-actions class="justify-end">
|
||||
<v-btn
|
||||
v-if="enableUrlDecode"
|
||||
class="info white--text elevation-0 px-4"
|
||||
@click="urlDecode"
|
||||
>
|
||||
URL DECODE
|
||||
</v-btn>
|
||||
<v-btn v-if="enableUrlDecode" class="info white--text elevation-0 px-4" @click="urlDecode"> URL DECODE </v-btn>
|
||||
<v-spacer />
|
||||
<v-btn
|
||||
class="accent white--text elevation-0 px-4"
|
||||
@click="rename"
|
||||
>
|
||||
<v-btn class="accent white--text elevation-0 px-4" @click="rename">
|
||||
{{ $t('save') }}
|
||||
</v-btn>
|
||||
<v-btn
|
||||
class="error white--text elevation-0 px-4"
|
||||
@click="close"
|
||||
>
|
||||
<v-btn class="error white--text elevation-0 px-4" @click="close">
|
||||
{{ $t('cancel') }}
|
||||
</v-btn>
|
||||
</v-card-actions>
|
||||
|
@ -95,8 +70,7 @@ export default {
|
|||
this.enableUrlDecode = false
|
||||
if (this.name.indexOf(' ') == -1) {
|
||||
const exp = /\+|%/
|
||||
if (exp.test(this.name))
|
||||
this.enableUrlDecode = true
|
||||
if (exp.test(this.name)) this.enableUrlDecode = true
|
||||
}
|
||||
},
|
||||
rename() {
|
||||
|
|
|
@ -9,34 +9,19 @@
|
|||
<v-card-text>
|
||||
<v-form ref="feedForm" class="px-6 mt-3">
|
||||
<v-container>
|
||||
<v-text-field
|
||||
v-model="feed.url"
|
||||
:label="$t('modals.newFeed.url')"
|
||||
required
|
||||
/>
|
||||
<v-text-field v-model="feed.url" :label="$t('modals.newFeed.url')" required />
|
||||
</v-container>
|
||||
</v-form>
|
||||
</v-card-text>
|
||||
<v-divider />
|
||||
<v-card-actions class="justify-end">
|
||||
<v-btn
|
||||
v-if="!hasInitialFeed"
|
||||
class="accent white--text elevation-0 px-4"
|
||||
@click="create"
|
||||
>
|
||||
<v-btn v-if="!hasInitialFeed" class="accent white--text elevation-0 px-4" @click="create">
|
||||
{{ $t('create') }}
|
||||
</v-btn>
|
||||
<v-btn
|
||||
v-else
|
||||
class="accent white--text elevation-0 px-4"
|
||||
@click="edit"
|
||||
>
|
||||
<v-btn v-else class="accent white--text elevation-0 px-4" @click="edit">
|
||||
{{ $t('edit') }}
|
||||
</v-btn>
|
||||
<v-btn
|
||||
class="error white--text elevation-0 px-4"
|
||||
@click="cancel"
|
||||
>
|
||||
<v-btn class="error white--text elevation-0 px-4" @click="cancel">
|
||||
{{ $t('cancel') }}
|
||||
</v-btn>
|
||||
</v-card-actions>
|
||||
|
@ -59,13 +44,14 @@ export default {
|
|||
},
|
||||
data: () => ({
|
||||
feed: { url: '' },
|
||||
mdiCancel, mdiTagPlus, mdiPencil
|
||||
mdiCancel,
|
||||
mdiTagPlus,
|
||||
mdiPencil
|
||||
}),
|
||||
computed: {
|
||||
...mapGetters(['getSelectedFeed']),
|
||||
hasInitialFeed() {
|
||||
return !!(this.initialFeed &&
|
||||
this.initialFeed.name)
|
||||
return !!(this.initialFeed && this.initialFeed.name)
|
||||
}
|
||||
},
|
||||
created() {
|
||||
|
|
|
@ -3,57 +3,37 @@
|
|||
<v-card flat>
|
||||
<v-card-title class="pa-0">
|
||||
<v-toolbar-title class="ma-4 primarytext--text">
|
||||
<h3>
|
||||
{{ hasInitialRule ? $t("edit") : $t("createNew") }} {{ $t("rule") }}
|
||||
</h3>
|
||||
<h3>{{ hasInitialRule ? $t('edit') : $t('createNew') }} {{ $t('rule') }}</h3>
|
||||
</v-toolbar-title>
|
||||
</v-card-title>
|
||||
<v-card-text class="pa-2">
|
||||
<v-form ref="ruleForm">
|
||||
<v-container>
|
||||
<v-text-field
|
||||
v-model="rule.name"
|
||||
:label="$t('modals.newRule.name')"
|
||||
required
|
||||
/>
|
||||
<v-text-field v-model="rule.name" :label="$t('modals.newRule.name')" required />
|
||||
</v-container>
|
||||
<v-container>
|
||||
<v-text-field
|
||||
v-model="rule.def.mustContain"
|
||||
:label="$t('modals.newRule.def.mustContain')"
|
||||
required
|
||||
/>
|
||||
<v-text-field v-model="rule.def.mustContain" :label="$t('modals.newRule.def.mustContain')" required />
|
||||
</v-container>
|
||||
<v-container>
|
||||
<v-subheader class="pa-0">
|
||||
{{ $t("modals.newRule.def.affectedFeeds") }}
|
||||
{{ $t('modals.newRule.def.affectedFeeds') }}
|
||||
</v-subheader>
|
||||
<template v-for="(item, index) in availableFeeds">
|
||||
<v-checkbox
|
||||
:key="index"
|
||||
v-model="rule.def.affectedFeeds"
|
||||
hide-details
|
||||
:label="item.name"
|
||||
:value="item.url"
|
||||
/>
|
||||
<v-checkbox :key="index" v-model="rule.def.affectedFeeds" hide-details :label="item.name" :value="item.url" />
|
||||
</template>
|
||||
</v-container>
|
||||
</v-form>
|
||||
</v-card-text>
|
||||
<v-divider />
|
||||
<v-card-actions class="justify-end">
|
||||
<v-btn
|
||||
v-if="!hasInitialRule"
|
||||
class="accent white--text elevation-0 px-4"
|
||||
@click="create"
|
||||
>
|
||||
{{ $t("create") }}
|
||||
<v-btn v-if="!hasInitialRule" class="accent white--text elevation-0 px-4" @click="create">
|
||||
{{ $t('create') }}
|
||||
</v-btn>
|
||||
<v-btn v-else class="accent white--text elevation-0 px-4" @click="edit">
|
||||
{{ $t("edit") }}
|
||||
{{ $t('edit') }}
|
||||
</v-btn>
|
||||
<v-btn class="error white--text elevation-0 px-4" @click="cancel">
|
||||
{{ $t("cancel") }}
|
||||
{{ $t('cancel') }}
|
||||
</v-btn>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
|
|
|
@ -4,38 +4,25 @@
|
|||
<v-icon>{{ mdiCog }}</v-icon> {{ $t('modals.pluginManager.title') | titleCase }}
|
||||
</v-btn>
|
||||
|
||||
<v-bottom-sheet
|
||||
v-if="$vuetify.breakpoint.smAndDown"
|
||||
v-model="opened"
|
||||
scrollable
|
||||
inset
|
||||
>
|
||||
<v-bottom-sheet v-if="$vuetify.breakpoint.smAndDown" v-model="opened" scrollable inset>
|
||||
<v-sheet>
|
||||
<v-card>
|
||||
<v-card-title> <v-icon>{{ mdiToyBrick }}</v-icon> Plugin manager </v-card-title>
|
||||
<v-card-title>
|
||||
<v-icon>{{ mdiToyBrick }}</v-icon> Plugin manager
|
||||
</v-card-title>
|
||||
<v-card-text>
|
||||
<v-switch
|
||||
v-for="(plugin, key) in searchPlugins"
|
||||
:key="key"
|
||||
:input-value="plugin.enabled"
|
||||
:label="plugin.fullName"
|
||||
@change="togglePlugin(plugin)"
|
||||
/>
|
||||
<v-switch v-for="(plugin, key) in searchPlugins" :key="key" :input-value="plugin.enabled" :label="plugin.fullName" @change="togglePlugin(plugin)" />
|
||||
</v-card-text>
|
||||
</v-card>
|
||||
</v-sheet>
|
||||
</v-bottom-sheet>
|
||||
<v-dialog v-else v-model="opened" width="50%">
|
||||
<v-card>
|
||||
<v-card-title> <v-icon>{{ mdiToyBrick }}</v-icon> Plugin manager </v-card-title>
|
||||
<v-card-title>
|
||||
<v-icon>{{ mdiToyBrick }}</v-icon> Plugin manager
|
||||
</v-card-title>
|
||||
<v-card-text>
|
||||
<v-switch
|
||||
v-for="(plugin, key) in searchPlugins"
|
||||
:key="key"
|
||||
v-model="plugin.enabled"
|
||||
:label="plugin.fullName"
|
||||
@change="togglePlugin(plugin)"
|
||||
/>
|
||||
<v-switch v-for="(plugin, key) in searchPlugins" :key="key" v-model="plugin.enabled" :label="plugin.fullName" @change="togglePlugin(plugin)" />
|
||||
</v-card-text>
|
||||
</v-card>
|
||||
</v-dialog>
|
||||
|
@ -50,7 +37,8 @@ export default {
|
|||
name: 'PluginsManager',
|
||||
data: () => ({
|
||||
opened: false,
|
||||
mdiCog, mdiToyBrick
|
||||
mdiCog,
|
||||
mdiToyBrick
|
||||
}),
|
||||
computed: {
|
||||
...mapState(['searchPlugins'])
|
||||
|
|
|
@ -1,17 +1,8 @@
|
|||
<template>
|
||||
<v-dialog
|
||||
v-model="dialog"
|
||||
scrollable
|
||||
:width="dialogWidth"
|
||||
:fullscreen="phoneLayout"
|
||||
:style="{ height: phoneLayout ? '100vh' : '' }"
|
||||
>
|
||||
<v-dialog v-model="dialog" scrollable :width="dialogWidth" :fullscreen="phoneLayout" :style="{ height: phoneLayout ? '100vh' : '' }">
|
||||
<v-card :style="{ height: phoneLayout ? '100vh' : '' }">
|
||||
<v-card-text class="pa-0">
|
||||
<v-form
|
||||
ref="form"
|
||||
v-model="searchForm.valid"
|
||||
>
|
||||
<v-form ref="form" v-model="searchForm.valid">
|
||||
<v-flex row class="my-1 py-1 px-2 mx-auto">
|
||||
<v-col class="pa-0" cols="8">
|
||||
<v-text-field
|
||||
|
@ -20,19 +11,13 @@
|
|||
label="Search"
|
||||
:rules="[v => !!v || 'Search term is required']"
|
||||
clearable
|
||||
style="width: 95%;"
|
||||
style="width: 95%"
|
||||
autofocus
|
||||
@keydown.enter.prevent="$refs.searchButton.click"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col class="pa-0 mt-2" cols="3">
|
||||
<v-btn
|
||||
ref="searchButton"
|
||||
class="mt-2 mx-0"
|
||||
:disabled="!searchForm.valid"
|
||||
:color="loading ? 'warning' : 'primary'"
|
||||
@click="loading ? stopSearch() : startSearch()"
|
||||
>
|
||||
<v-btn ref="searchButton" class="mt-2 mx-0" :disabled="!searchForm.valid" :color="loading ? 'warning' : 'primary'" @click="loading ? stopSearch() : startSearch()">
|
||||
{{ loading ? $t('modals.search.btnStopSearch') : $t('modals.search.btnStartSearch') }}
|
||||
</v-btn>
|
||||
</v-col>
|
||||
|
@ -44,7 +29,7 @@
|
|||
:items="search.results"
|
||||
:items-per-page="10"
|
||||
:loading="loading"
|
||||
:style="{ maxHeight: '60vh'}"
|
||||
:style="{ maxHeight: '60vh' }"
|
||||
:search="filter"
|
||||
:custom-filter="customFilter"
|
||||
:sort-by.sync="sortBy"
|
||||
|
@ -52,19 +37,10 @@
|
|||
:mobile-breakpoint="0"
|
||||
>
|
||||
<template #top>
|
||||
<v-text-field
|
||||
ref="filterRef"
|
||||
v-model="filter"
|
||||
label="Filter"
|
||||
class="mx-4"
|
||||
/>
|
||||
<v-text-field ref="filterRef" v-model="filter" label="Filter" class="mx-4" />
|
||||
</template>
|
||||
<template #[`item.fileName`]="{ item }">
|
||||
<a
|
||||
:href="item.descrLink"
|
||||
target="_blank"
|
||||
v-text="item.fileName"
|
||||
/>
|
||||
<a :href="item.descrLink" target="_blank" v-text="item.fileName" />
|
||||
</template>
|
||||
<template #[`item.fileSize`]="{ item }">
|
||||
{{ item.fileSize | formatSize }}
|
||||
|
@ -80,14 +56,7 @@
|
|||
<PluginManager />
|
||||
</v-card-actions>
|
||||
<v-fab-transition v-if="phoneLayout">
|
||||
<v-btn
|
||||
color="red"
|
||||
dark
|
||||
absolute
|
||||
bottom
|
||||
right
|
||||
@click="close"
|
||||
>
|
||||
<v-btn color="red" dark absolute bottom right @click="close">
|
||||
<v-icon>{{ mdiClose }}</v-icon>
|
||||
</v-btn>
|
||||
</v-fab-transition>
|
||||
|
@ -99,7 +68,7 @@
|
|||
import { mapGetters } from 'vuex'
|
||||
import qbit from '@/services/qbit'
|
||||
import { Modal, FullScreenModal, General } from '@/mixins'
|
||||
import PluginManager from './PluginManager'
|
||||
import PluginManager from './PluginManager.vue'
|
||||
import { mdiClose, mdiMagnify, mdiDownload } from '@mdi/js'
|
||||
|
||||
export default {
|
||||
|
@ -121,8 +90,15 @@ export default {
|
|||
{ text: this.$i18n.t('modals.search.columnTitle.size'), value: 'fileSize' },
|
||||
{ text: this.$i18n.t('modals.search.columnTitle.seeds'), value: 'nbSeeders' },
|
||||
{ text: this.$i18n.t('modals.search.columnTitle.peers'), value: 'nbLeechers' },
|
||||
{ text: this.$i18n.t('modals.search.columnTitle.search_engine'), value: 'siteUrl' },
|
||||
{ text: this.$i18n.t('modals.search.columnTitle.action'), value: 'actions', sortable: false }
|
||||
{
|
||||
text: this.$i18n.t('modals.search.columnTitle.search_engine'),
|
||||
value: 'siteUrl'
|
||||
},
|
||||
{
|
||||
text: this.$i18n.t('modals.search.columnTitle.action'),
|
||||
value: 'actions',
|
||||
sortable: false
|
||||
}
|
||||
]
|
||||
},
|
||||
searchForm: {
|
||||
|
@ -130,7 +106,9 @@ export default {
|
|||
pattern: ''
|
||||
},
|
||||
filter: '',
|
||||
mdiClose, mdiMagnify, mdiDownload,
|
||||
mdiClose,
|
||||
mdiMagnify,
|
||||
mdiDownload,
|
||||
sortBy: 'nbSeeders',
|
||||
sortDesc: true
|
||||
}
|
||||
|
@ -193,11 +171,8 @@ export default {
|
|||
},
|
||||
customFilter(value, search, item) {
|
||||
const searchArr = search.trim().toLowerCase().split(' ')
|
||||
|
||||
return value != null &&
|
||||
search != null &&
|
||||
typeof value === 'string' &&
|
||||
searchArr.every(i => (value.toString().toLowerCase().indexOf(i) !== -1))
|
||||
|
||||
return value != null && search != null && typeof value === 'string' && searchArr.every(i => value.toString().toLowerCase().indexOf(i) !== -1)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,44 +1,22 @@
|
|||
<template>
|
||||
<div style="min-width: 300px;">
|
||||
<div style="min-width: 300px">
|
||||
<h3>{{ title }}</h3>
|
||||
<v-list-item>
|
||||
<v-row dense>
|
||||
<v-col>
|
||||
<v-switch
|
||||
v-model="global"
|
||||
class="v-input--reverse pa-0 ma-0"
|
||||
hide-details
|
||||
inset
|
||||
:label="$t('modals.shareLimit.input.globalLimit')"
|
||||
@change="disableUnlimited"
|
||||
/>
|
||||
<v-switch v-model="global" class="v-input--reverse pa-0 ma-0" hide-details inset :label="$t('modals.shareLimit.input.globalLimit')" @change="disableUnlimited" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-row dense>
|
||||
<v-col>
|
||||
<v-switch
|
||||
v-model="unlimited"
|
||||
class="v-input--reverse pa-0 ma-0"
|
||||
hide-details
|
||||
inset
|
||||
:label="$t('modals.shareLimit.input.unlimited')"
|
||||
@change="disabledGlobal"
|
||||
/>
|
||||
<v-switch v-model="unlimited" class="v-input--reverse pa-0 ma-0" hide-details inset :label="$t('modals.shareLimit.input.unlimited')" @change="disabledGlobal" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
<v-list-item class="mx-2">
|
||||
<v-text-field
|
||||
v-model="limit"
|
||||
type="number"
|
||||
autofocus
|
||||
clearable
|
||||
dense
|
||||
:label="`${title} Limit`"
|
||||
:prepend-inner-icon="title === 'Ratio' ? mdiPercent : mdiClockTimeEight"
|
||||
/>
|
||||
<v-text-field v-model="limit" type="number" autofocus clearable dense :label="`${title} Limit`" :prepend-inner-icon="title === 'Ratio' ? mdiPercent : mdiClockTimeEight" />
|
||||
</v-list-item>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -50,11 +28,12 @@ export default {
|
|||
props: ['title', 'initialLimit'],
|
||||
data() {
|
||||
return {
|
||||
mdiPercent, mdiClose, mdiClockTimeEight,
|
||||
mdiPercent,
|
||||
mdiClose,
|
||||
mdiClockTimeEight,
|
||||
global: false,
|
||||
unlimited: false,
|
||||
limit: ''
|
||||
|
||||
}
|
||||
},
|
||||
created() {
|
||||
|
|
|
@ -1,11 +1,5 @@
|
|||
<template>
|
||||
<v-dialog
|
||||
v-model="dialog"
|
||||
scrollable
|
||||
content-class="rounded-form"
|
||||
max-width="500px"
|
||||
:fullscreen="isPhone"
|
||||
>
|
||||
<v-dialog v-model="dialog" scrollable content-class="rounded-form" max-width="500px" :fullscreen="isPhone">
|
||||
<v-card class="px-2">
|
||||
<v-card-title class="pa-0">
|
||||
<v-toolbar-title class="ma-4 primarytext--text">
|
||||
|
@ -13,17 +7,8 @@
|
|||
</v-toolbar-title>
|
||||
</v-card-title>
|
||||
<v-card-text class="px-4 py-2">
|
||||
<ShareLimitInput
|
||||
ref="ratio"
|
||||
:title="$t('modals.shareLimit.titleRatio')"
|
||||
:initial-limit="torrent.ratio_limit"
|
||||
/>
|
||||
<ShareLimitInput
|
||||
ref="time"
|
||||
:title="$t('modals.shareLimit.titleDuration')"
|
||||
:initial-limit="torrent.ratio_time_limit"
|
||||
class="mt-2"
|
||||
/>
|
||||
<ShareLimitInput ref="ratio" :title="$t('modals.shareLimit.titleRatio')" :initial-limit="torrent.ratio_limit" />
|
||||
<ShareLimitInput ref="time" :title="$t('modals.shareLimit.titleDuration')" :initial-limit="torrent.ratio_time_limit" class="mt-2" />
|
||||
</v-card-text>
|
||||
<v-divider />
|
||||
<v-card-actions class="justify-end">
|
||||
|
@ -62,10 +47,7 @@ export default {
|
|||
},
|
||||
methods: {
|
||||
save() {
|
||||
qbit.setShareLimit([this.hash],
|
||||
this.$refs.ratio.export(),
|
||||
this.$refs.time.export()
|
||||
)
|
||||
qbit.setShareLimit([this.hash], this.$refs.ratio.export(), this.$refs.time.export())
|
||||
this.close()
|
||||
},
|
||||
close() {
|
||||
|
@ -78,7 +60,7 @@ export default {
|
|||
<style lang="scss" scoped>
|
||||
// Reversed input variant
|
||||
:deep(.v-input--reverse .v-input__slot) {
|
||||
@import "../../../styles/styles";
|
||||
@import '../../../styles/styles';
|
||||
@include reverse-switch;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -1,10 +1,5 @@
|
|||
<template>
|
||||
<v-dialog
|
||||
v-model="dialog"
|
||||
scrollable
|
||||
content-class="rounded-form"
|
||||
max-width="500px"
|
||||
>
|
||||
<v-dialog v-model="dialog" scrollable content-class="rounded-form" max-width="500px">
|
||||
<v-card>
|
||||
<v-card-title class="justify-center primarytext--text">
|
||||
<h2>{{ $t('modals.sort.title') }}</h2>
|
||||
|
@ -12,25 +7,8 @@
|
|||
<v-card-text>
|
||||
<v-form class="px-6 mt-3 justify-center mx-auto">
|
||||
<v-container class="sortmodal">
|
||||
<v-select
|
||||
v-model="sort_options.sort"
|
||||
:value="sortProperty"
|
||||
flat
|
||||
class="ml-2 mr-2"
|
||||
:items="options"
|
||||
item-text="name"
|
||||
item-value="value"
|
||||
dense
|
||||
solo
|
||||
height="55"
|
||||
/>
|
||||
<v-switch
|
||||
v-model="sort_options.reverse"
|
||||
class="v-input--reverse v-input--expand pa-0 ma-0"
|
||||
inset
|
||||
color="accent"
|
||||
style="padding-left: 10px !important"
|
||||
>
|
||||
<v-select v-model="sort_options.sort" :value="sortProperty" flat class="ml-2 mr-2" :items="options" item-text="name" item-value="value" dense solo height="55" />
|
||||
<v-switch v-model="sort_options.reverse" class="v-input--reverse v-input--expand pa-0 ma-0" inset color="accent" style="padding-left: 10px !important">
|
||||
<template #label>
|
||||
{{ $t('modals.sort.reverse') }}
|
||||
</template>
|
||||
|
@ -89,11 +67,11 @@ export default {
|
|||
<style lang="scss" scoped>
|
||||
.sortmodal .v-select__selection,
|
||||
.v-input__icon i {
|
||||
color: var(--search) !important;
|
||||
color: var(--search) !important;
|
||||
}
|
||||
// Reversed input variant
|
||||
:deep(.v-input--reverse .v-input__slot) {
|
||||
@import "src/styles/styles.scss";
|
||||
@import 'src/styles/styles.scss';
|
||||
@include reverse-switch;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -1,11 +1,5 @@
|
|||
<template>
|
||||
<v-dialog
|
||||
v-model="dialog"
|
||||
scrollable
|
||||
content-class="rounded-form"
|
||||
max-width="500px"
|
||||
:fullscreen="isPhone"
|
||||
>
|
||||
<v-dialog v-model="dialog" scrollable content-class="rounded-form" max-width="500px" :fullscreen="isPhone">
|
||||
<v-card>
|
||||
<v-card-title class="pa-0">
|
||||
<v-toolbar-title class="ma-4 primarytext--text">
|
||||
|
@ -32,18 +26,8 @@
|
|||
</v-card-text>
|
||||
<v-divider />
|
||||
<v-card-actions class="justify-end">
|
||||
<v-btn
|
||||
class="accent white--text elevation-0 px-4"
|
||||
@click="setLimit"
|
||||
>
|
||||
Save
|
||||
</v-btn>
|
||||
<v-btn
|
||||
class="error white--text elevation-0 px-4"
|
||||
@click="close"
|
||||
>
|
||||
Cancel
|
||||
</v-btn>
|
||||
<v-btn class="accent white--text elevation-0 px-4" @click="setLimit"> Save </v-btn>
|
||||
<v-btn class="error white--text elevation-0 px-4" @click="close"> Cancel </v-btn>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-dialog>
|
||||
|
@ -64,7 +48,8 @@ export default {
|
|||
data() {
|
||||
return {
|
||||
limit: '',
|
||||
mdiSpeedometer, mdiClose
|
||||
mdiSpeedometer,
|
||||
mdiClose
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
|
|
|
@ -9,44 +9,20 @@
|
|||
<v-card-text>
|
||||
<v-form ref="categoryForm" class="px-6 mt-3">
|
||||
<v-container>
|
||||
<v-text-field
|
||||
v-model="category.name"
|
||||
:rules="nameRules"
|
||||
:counter="15"
|
||||
:label="$t('modals.newCategory.categoryName')"
|
||||
required
|
||||
:disabled="hasInitialCategory"
|
||||
/>
|
||||
<v-text-field
|
||||
v-model="category.savePath"
|
||||
:rules="PathRules"
|
||||
:counter="40"
|
||||
:label="$t('path')"
|
||||
required
|
||||
/>
|
||||
<v-text-field v-model="category.name" :rules="nameRules" :counter="15" :label="$t('modals.newCategory.categoryName')" required :disabled="hasInitialCategory" />
|
||||
<v-text-field v-model="category.savePath" :rules="PathRules" :counter="40" :label="$t('path')" required />
|
||||
</v-container>
|
||||
</v-form>
|
||||
</v-card-text>
|
||||
<v-divider />
|
||||
<v-card-actions class="justify-end">
|
||||
<v-btn
|
||||
v-if="!hasInitialCategory"
|
||||
class="accent white--text elevation-0 px-4"
|
||||
@click="create"
|
||||
>
|
||||
<v-btn v-if="!hasInitialCategory" class="accent white--text elevation-0 px-4" @click="create">
|
||||
{{ $t('create') }}
|
||||
</v-btn>
|
||||
<v-btn
|
||||
v-else
|
||||
class="accent white--text elevation-0 px-4"
|
||||
@click="edit"
|
||||
>
|
||||
<v-btn v-else class="accent white--text elevation-0 px-4" @click="edit">
|
||||
{{ $t('edit') }}
|
||||
</v-btn>
|
||||
<v-btn
|
||||
class="error white--text elevation-0 px-4"
|
||||
@click="cancel"
|
||||
>
|
||||
<v-btn class="error white--text elevation-0 px-4" @click="cancel">
|
||||
{{ $t('cancel') }}
|
||||
</v-btn>
|
||||
</v-card-actions>
|
||||
|
@ -69,27 +45,20 @@ export default {
|
|||
},
|
||||
data: () => ({
|
||||
category: { name: '', savePath: '' },
|
||||
mdiCancel, mdiTagPlus, mdiPencil
|
||||
mdiCancel,
|
||||
mdiTagPlus,
|
||||
mdiPencil
|
||||
}),
|
||||
computed: {
|
||||
...mapGetters(['getSelectedCategory']),
|
||||
hasInitialCategory() {
|
||||
return !!(this.initialCategory &&
|
||||
this.initialCategory.name)
|
||||
return !!(this.initialCategory && this.initialCategory.name)
|
||||
},
|
||||
nameRules() {
|
||||
return [
|
||||
v => !!v || this.$i18n.t('modals.newCategory.tipOnNoName'),
|
||||
v =>
|
||||
(v && v.length <= 15) ||
|
||||
this.$i18n.t('modals.newCategory.tipOnNameTooLong')
|
||||
]
|
||||
return [v => !!v || this.$i18n.t('modals.newCategory.tipOnNoName'), v => (v && v.length <= 15) || this.$i18n.t('modals.newCategory.tipOnNameTooLong')]
|
||||
},
|
||||
PathRules() {
|
||||
return [
|
||||
v => !!v || this.$i18n.t('modals.newCategory.tipOnNoPath'),
|
||||
v => (v && v.length <= 40) || this.$i18n.t('modals.newCategory.TipOnPathTooLong')
|
||||
]
|
||||
return [v => !!v || this.$i18n.t('modals.newCategory.tipOnNoPath'), v => (v && v.length <= 40) || this.$i18n.t('modals.newCategory.TipOnPathTooLong')]
|
||||
}
|
||||
},
|
||||
created() {
|
||||
|
|
|
@ -9,28 +9,16 @@
|
|||
<v-card-text>
|
||||
<v-form class="px-6 mt-3">
|
||||
<v-container>
|
||||
<v-text-field
|
||||
v-model="tagname"
|
||||
:rules="rules"
|
||||
:counter="10"
|
||||
:label="$t('modals.newTag.tagName')"
|
||||
required
|
||||
/>
|
||||
<v-text-field v-model="tagname" :rules="rules" :counter="10" :label="$t('modals.newTag.tagName')" required />
|
||||
</v-container>
|
||||
</v-form>
|
||||
</v-card-text>
|
||||
<v-divider />
|
||||
<v-card-actions class="justify-end">
|
||||
<v-btn
|
||||
class="accent white--text elevation-0 px-4"
|
||||
@click="create"
|
||||
>
|
||||
<v-btn class="accent white--text elevation-0 px-4" @click="create">
|
||||
{{ $t('create') }}
|
||||
</v-btn>
|
||||
<v-btn
|
||||
class="error white--text elevation-0 px-4"
|
||||
@click="cancel"
|
||||
>
|
||||
<v-btn class="error white--text elevation-0 px-4" @click="cancel">
|
||||
{{ $t('cancel') }}
|
||||
</v-btn>
|
||||
</v-card-actions>
|
||||
|
@ -46,10 +34,7 @@ export default {
|
|||
mixins: [Modal],
|
||||
data: () => ({
|
||||
tagname: '',
|
||||
rules: [
|
||||
v => !!v || 'Tag is required',
|
||||
v => v.length <= 10 || 'Tag must be less than 10 characters'
|
||||
]
|
||||
rules: [v => !!v || 'Tag is required', v => v.length <= 10 || 'Tag must be less than 10 characters']
|
||||
}),
|
||||
methods: {
|
||||
create() {
|
||||
|
|
|
@ -1,7 +1,4 @@
|
|||
import CreateNewTagDialog from './CreateTagDialog.vue'
|
||||
import CreateNewCategoryDialog from './CreateCategoryDialog.vue'
|
||||
|
||||
export {
|
||||
CreateNewTagDialog,
|
||||
CreateNewCategoryDialog
|
||||
}
|
||||
export { CreateNewTagDialog, CreateNewCategoryDialog }
|
||||
|
|
|
@ -13,12 +13,7 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
mdiCheckNetwork,
|
||||
mdiNetworkOff,
|
||||
mdiCloseNetwork,
|
||||
mdiHelpNetwork
|
||||
} from '@mdi/js'
|
||||
import { mdiCheckNetwork, mdiNetworkOff, mdiCloseNetwork, mdiHelpNetwork } from '@mdi/js'
|
||||
|
||||
export default {
|
||||
props: ['status'],
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
<script>
|
||||
import { mdiChevronUp, mdiChevronDown } from '@mdi/js'
|
||||
import SpeedCard from '@/components/Core/SpeedCard'
|
||||
import SpeedCard from '@/components/Core/SpeedCard.vue'
|
||||
export default {
|
||||
name: 'CurrentSpeed',
|
||||
components: {
|
||||
|
|
|
@ -36,9 +36,7 @@
|
|||
@input="setCategory"
|
||||
/>
|
||||
<div v-if="showTrackerFilter">
|
||||
<label class="white--text text-uppercase font-weight-medium caption ml-4">
|
||||
Tracker
|
||||
</label>
|
||||
<label class="white--text text-uppercase font-weight-medium caption ml-4"> Tracker </label>
|
||||
<v-select
|
||||
aria-label="tracker_filter"
|
||||
:value="selectedTracker"
|
||||
|
@ -81,18 +79,27 @@ export default {
|
|||
{ value: 'active', name: this.$i18n.t('active') },
|
||||
{ value: 'inactive', name: this.$i18n.t('inactive') },
|
||||
{ value: 'stalled', name: this.$i18n.t('stalled') },
|
||||
{ value: 'stalled_uploading', name: this.$i18n.t('navbar.filters.stalled_uploading') },
|
||||
{ value: 'stalled_downloading', name: this.$i18n.t('navbar.filters.stalled_downloading') },
|
||||
{
|
||||
value: 'stalled_uploading',
|
||||
name: this.$i18n.t('navbar.filters.stalled_uploading')
|
||||
},
|
||||
{
|
||||
value: 'stalled_downloading',
|
||||
name: this.$i18n.t('navbar.filters.stalled_downloading')
|
||||
},
|
||||
{ value: 'errored', name: this.$i18n.t('errored') }
|
||||
]
|
||||
},
|
||||
availableCategories() {
|
||||
const categories = [
|
||||
{ name: 'All', value: null },
|
||||
{ name: 'Uncategorized', value: '' }]
|
||||
categories.push(...this.getCategories().map(c => {
|
||||
return { name: c.name, value: c.name }
|
||||
}))
|
||||
{ name: 'Uncategorized', value: '' }
|
||||
]
|
||||
categories.push(
|
||||
...this.getCategories().map(c => {
|
||||
return { name: c.name, value: c.name }
|
||||
})
|
||||
)
|
||||
|
||||
return categories
|
||||
},
|
||||
|
@ -101,13 +108,16 @@ export default {
|
|||
{ name: 'All', value: null },
|
||||
{ name: 'Not working', value: '' }
|
||||
]
|
||||
|
||||
|
||||
if (this.showTrackerFilter) {
|
||||
trackers.push(...this.getTrackers().map(t => {
|
||||
return {
|
||||
name: t, value: t
|
||||
}
|
||||
}))
|
||||
trackers.push(
|
||||
...this.getTrackers().map(t => {
|
||||
return {
|
||||
name: t,
|
||||
value: t
|
||||
}
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
return trackers
|
||||
|
@ -160,4 +170,3 @@ export default {
|
|||
margin: 0;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
|
|
@ -1,17 +1,11 @@
|
|||
<template>
|
||||
<div v-if="space" class="mb-4">
|
||||
<StorageCard
|
||||
v-if="space"
|
||||
class="mt-8"
|
||||
:label="$t('navbar.freeSpace') | titleCase"
|
||||
color="upload"
|
||||
:value="space"
|
||||
/>
|
||||
<StorageCard v-if="space" class="mt-8" :label="$t('navbar.freeSpace') | titleCase" color="upload" :value="space" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import StorageCard from '@/components/Core/StorageCard'
|
||||
import StorageCard from '@/components/Core/StorageCard.vue'
|
||||
export default {
|
||||
name: 'FreeSpace',
|
||||
components: {
|
||||
|
|
|
@ -1,23 +1,9 @@
|
|||
<template>
|
||||
<nav>
|
||||
<!--title-->
|
||||
<v-app-bar
|
||||
app
|
||||
elevate-on-scroll
|
||||
class="noselect"
|
||||
>
|
||||
<v-app-bar-nav-icon
|
||||
class="grey--text text--lighten-1"
|
||||
aria-label="Open Navigation Drawer"
|
||||
@click.stop="drawer = !drawer"
|
||||
/>
|
||||
<v-toolbar-title
|
||||
v-if="!$vuetify.breakpoint.xs"
|
||||
:class="[
|
||||
'grey--text',
|
||||
{ 'subheading ml-0': $vuetify.breakpoint.smAndDown }
|
||||
]"
|
||||
>
|
||||
<v-app-bar app elevate-on-scroll class="noselect">
|
||||
<v-app-bar-nav-icon class="grey--text text--lighten-1" aria-label="Open Navigation Drawer" @click.stop="drawer = !drawer" />
|
||||
<v-toolbar-title v-if="!$vuetify.breakpoint.xs" :class="['grey--text', { 'subheading ml-0': $vuetify.breakpoint.smAndDown }]">
|
||||
<span class="font-weight-light">qBit</span>
|
||||
<span>torrent</span>
|
||||
</v-toolbar-title>
|
||||
|
@ -26,51 +12,20 @@
|
|||
<TopMenu />
|
||||
</v-app-bar>
|
||||
<!--navigation drawer itself -->
|
||||
<v-navigation-drawer
|
||||
v-model="drawer"
|
||||
app
|
||||
class="primary drawer"
|
||||
style="position: fixed;"
|
||||
width="256"
|
||||
height="100%"
|
||||
disable-resize-watcher
|
||||
:right="webuiSettings.rightDrawer"
|
||||
>
|
||||
<v-card
|
||||
v-if="status"
|
||||
style="display: flex; flex-direction: column;"
|
||||
class="pt-3 primary"
|
||||
flat
|
||||
>
|
||||
<CurrentSpeed
|
||||
v-if="webuiSettings.showCurrentSpeed"
|
||||
:status="status"
|
||||
/>
|
||||
<v-navigation-drawer v-model="drawer" app class="primary drawer" style="position: fixed" width="256" height="100%" disable-resize-watcher :right="webuiSettings.rightDrawer">
|
||||
<v-card v-if="status" style="display: flex; flex-direction: column" class="pt-3 primary" flat>
|
||||
<CurrentSpeed v-if="webuiSettings.showCurrentSpeed" :status="status" />
|
||||
|
||||
<SpeedGraph v-if="webuiSettings.showSpeedGraph" />
|
||||
|
||||
<TranserStats
|
||||
v-if="webuiSettings.showAlltimeStat"
|
||||
:session="false"
|
||||
:status="status"
|
||||
/>
|
||||
<TranserStats v-if="webuiSettings.showAlltimeStat" :session="false" :status="status" />
|
||||
|
||||
<TranserStats
|
||||
v-if="webuiSettings.showSessionStat"
|
||||
:session="true"
|
||||
:status="status"
|
||||
/>
|
||||
<TranserStats v-if="webuiSettings.showSessionStat" :session="true" :status="status" />
|
||||
|
||||
<FreeSpace
|
||||
v-if="webuiSettings.showFreeSpace"
|
||||
:space="status.freeDiskSpace"
|
||||
/>
|
||||
<FreeSpace v-if="webuiSettings.showFreeSpace" :space="status.freeDiskSpace" />
|
||||
|
||||
<FilterSelect :show-tracker-filter="webuiSettings.showTrackerFilter" />
|
||||
<div
|
||||
style="font-size: 0.9em"
|
||||
class="download--text text-uppercase text-center mt-5"
|
||||
>
|
||||
<div style="font-size: 0.9em" class="download--text text-uppercase text-center mt-5">
|
||||
{{ torrentCountString }}
|
||||
</div>
|
||||
</v-card>
|
||||
|
@ -85,15 +40,7 @@
|
|||
|
||||
<script>
|
||||
import { mapGetters } from 'vuex'
|
||||
import {
|
||||
BottomActions,
|
||||
TopMenu,
|
||||
SpeedGraph,
|
||||
FreeSpace,
|
||||
TranserStats,
|
||||
CurrentSpeed,
|
||||
FilterSelect
|
||||
} from './index'
|
||||
import { BottomActions, TopMenu, SpeedGraph, FreeSpace, TranserStats, CurrentSpeed, FilterSelect } from './index'
|
||||
|
||||
export default {
|
||||
name: 'Navbar',
|
||||
|
@ -140,14 +87,18 @@ export default {
|
|||
}
|
||||
}
|
||||
|
||||
.v-app-bar > .v-toolbar__content{
|
||||
padding-right: 0;
|
||||
.v-app-bar > .v-toolbar__content {
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
.navbar {
|
||||
@media screen and (max-width: 480px) {
|
||||
.v-toolbar__title { display: none; }
|
||||
.spacer { display: none; }
|
||||
.v-toolbar__title {
|
||||
display: none;
|
||||
}
|
||||
.spacer {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -3,13 +3,7 @@
|
|||
<v-col>
|
||||
<v-tooltip top>
|
||||
<template #activator="{ on }">
|
||||
<v-btn
|
||||
text
|
||||
tile
|
||||
block
|
||||
v-on="on"
|
||||
@click="logout"
|
||||
>
|
||||
<v-btn text tile block v-on="on" @click="logout">
|
||||
<v-icon :class="commonStyle">
|
||||
{{ mdiExitToApp }}
|
||||
</v-icon>
|
||||
|
@ -21,13 +15,7 @@
|
|||
<v-col>
|
||||
<v-tooltip top>
|
||||
<template #activator="{ on }">
|
||||
<v-btn
|
||||
text
|
||||
tile
|
||||
block
|
||||
v-on="on"
|
||||
@click="toggleSpeed"
|
||||
>
|
||||
<v-btn text tile block v-on="on" @click="toggleSpeed">
|
||||
<v-icon :class="altSpeed ? 'accent--text' : commonStyle">
|
||||
{{ altSpeed ? mdiSpeedometerSlow : mdiSpeedometer }}
|
||||
</v-icon>
|
||||
|
@ -42,13 +30,7 @@
|
|||
<v-col>
|
||||
<v-tooltip top>
|
||||
<template #activator="{ on }">
|
||||
<v-btn
|
||||
text
|
||||
tile
|
||||
block
|
||||
v-on="on"
|
||||
@click="toggleTheme"
|
||||
>
|
||||
<v-btn text tile block v-on="on" @click="toggleTheme">
|
||||
<v-icon :class="commonStyle">
|
||||
{{ theme === 'Light' ? mdiBrightness7 : mdiBrightness4 }}
|
||||
</v-icon>
|
||||
|
@ -63,15 +45,7 @@
|
|||
<script>
|
||||
import qbit from '@/services/qbit'
|
||||
import { mapGetters } from 'vuex'
|
||||
import {
|
||||
mdiBrightness4,
|
||||
mdiSpeedometerSlow,
|
||||
mdiBrightness7,
|
||||
mdiSpeedometer,
|
||||
mdiExitToApp,
|
||||
mdiBell,
|
||||
mdiBellOff
|
||||
} from '@mdi/js'
|
||||
import { mdiBrightness4, mdiSpeedometerSlow, mdiBrightness7, mdiSpeedometer, mdiExitToApp, mdiBell, mdiBellOff } from '@mdi/js'
|
||||
import ConnectionStatus from './ConnectionStatus.vue'
|
||||
|
||||
export default {
|
||||
|
|
26
src/components/Navbar/SessionStats.vue
Normal file
26
src/components/Navbar/SessionStats.vue
Normal file
|
@ -0,0 +1,26 @@
|
|||
<template>
|
||||
<div v-if="status" class="mt-3 mb-3">
|
||||
<label class="text-uppercase white--text caption font-weight-medium ml-4"> Session Stats </label>
|
||||
<v-tooltip bottom>
|
||||
<template #activator="{ on }">
|
||||
<v-icon color="white" style="opacity: 0.3" small v-on="on">
|
||||
{{ mdiInformationOutline }}
|
||||
</v-icon>
|
||||
</template>
|
||||
<span>{{ $t('navbar.sessionStats.tooltip') }}</span>
|
||||
</v-tooltip>
|
||||
<StorageCard class="mb-4 mt-4" label="Downloaded" color="download" :value="status.downloaded" />
|
||||
<StorageCard label="Uploaded" color="upload" :value="status.uploaded" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mdiInformationOutline } from '@mdi/js'
|
||||
import StorageCard from '@/components/Core/StorageCard.vue'
|
||||
export default {
|
||||
name: 'SessionStats',
|
||||
components: { StorageCard },
|
||||
props: ['status'],
|
||||
data: () => ({ mdiInformationOutline })
|
||||
}
|
||||
</script>
|
|
@ -1,11 +1,6 @@
|
|||
<template>
|
||||
<div class="mt-4">
|
||||
<apexcharts
|
||||
ref="chart"
|
||||
type="line"
|
||||
:options="chartOptions"
|
||||
:series="series"
|
||||
/>
|
||||
<apexcharts ref="chart" type="line" :options="chartOptions" :series="series" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -33,10 +28,7 @@ export default {
|
|||
}
|
||||
}
|
||||
},
|
||||
colors: [
|
||||
this.$vuetify.theme.currentTheme.upload,
|
||||
this.$vuetify.theme.currentTheme.download
|
||||
],
|
||||
colors: [this.$vuetify.theme.currentTheme.upload, this.$vuetify.theme.currentTheme.download],
|
||||
stroke: {
|
||||
show: true,
|
||||
curve: 'smooth',
|
||||
|
@ -59,7 +51,7 @@ export default {
|
|||
x: {
|
||||
formatter: value => {
|
||||
const val = 32 - value * 2
|
||||
|
||||
|
||||
return val + ' seconds ago'
|
||||
}
|
||||
},
|
||||
|
|
|
@ -2,16 +2,7 @@
|
|||
<div :class="mobile ? '' : 'flex-shrink-0 ml-0'">
|
||||
<v-tooltip bottom open-delay="400">
|
||||
<template #activator="{ on }">
|
||||
<v-btn
|
||||
:text="!mobile"
|
||||
small
|
||||
fab
|
||||
color="grey--text"
|
||||
class="mr-0 ml-0"
|
||||
:aria-label="$t('navbar.topActions.addTorrent')"
|
||||
v-on="on"
|
||||
@click="addModal('AddModal')"
|
||||
>
|
||||
<v-btn :text="!mobile" small fab color="grey--text" class="mr-0 ml-0" :aria-label="$t('navbar.topActions.addTorrent')" v-on="on" @click="addModal('AddModal')">
|
||||
<v-icon color="grey">
|
||||
{{ mdiPlus }}
|
||||
</v-icon>
|
||||
|
@ -21,15 +12,7 @@
|
|||
</v-tooltip>
|
||||
<v-tooltip bottom open-delay="400">
|
||||
<template #activator="{ on }">
|
||||
<v-btn
|
||||
small
|
||||
fab
|
||||
:text="!mobile"
|
||||
class="mr-0 ml-0"
|
||||
:aria-label="$t('navbar.topActions.resumeSelected')"
|
||||
v-on="on"
|
||||
@click="resumeTorrents"
|
||||
>
|
||||
<v-btn small fab :text="!mobile" class="mr-0 ml-0" :aria-label="$t('navbar.topActions.resumeSelected')" v-on="on" @click="resumeTorrents">
|
||||
<v-icon color="grey">
|
||||
{{ mdiPlay }}
|
||||
</v-icon>
|
||||
|
@ -39,15 +22,7 @@
|
|||
</v-tooltip>
|
||||
<v-tooltip bottom open-delay="400">
|
||||
<template #activator="{ on }">
|
||||
<v-btn
|
||||
small
|
||||
fab
|
||||
:text="!mobile"
|
||||
class="mr-0 ml-0"
|
||||
:aria-label="$t('navbar.topActions.pauseSelected')"
|
||||
v-on="on"
|
||||
@click="pauseTorrents"
|
||||
>
|
||||
<v-btn small fab :text="!mobile" class="mr-0 ml-0" :aria-label="$t('navbar.topActions.pauseSelected')" v-on="on" @click="pauseTorrents">
|
||||
<v-icon color="grey">
|
||||
{{ mdiPause }}
|
||||
</v-icon>
|
||||
|
@ -57,15 +32,7 @@
|
|||
</v-tooltip>
|
||||
<v-tooltip bottom open-delay="400">
|
||||
<template #activator="{ on }">
|
||||
<v-btn
|
||||
small
|
||||
fab
|
||||
:text="!mobile"
|
||||
class="mr-0 ml-0"
|
||||
:aria-label="$t('navbar.topActions.removeSelected')"
|
||||
v-on="on"
|
||||
@click="removeTorrents"
|
||||
>
|
||||
<v-btn small fab :text="!mobile" class="mr-0 ml-0" :aria-label="$t('navbar.topActions.removeSelected')" v-on="on" @click="removeTorrents">
|
||||
<v-icon color="grey">
|
||||
{{ mdiDelete }}
|
||||
</v-icon>
|
||||
|
@ -75,16 +42,7 @@
|
|||
</v-tooltip>
|
||||
<v-tooltip bottom open-delay="400">
|
||||
<template #activator="{ on }">
|
||||
<v-btn
|
||||
:text="!mobile"
|
||||
small
|
||||
fab
|
||||
color="grey--text"
|
||||
class="mr-0 ml-0"
|
||||
:aria-label="$t('navbar.topActions.searchNew')"
|
||||
v-on="on"
|
||||
@click="addModal('SearchModal')"
|
||||
>
|
||||
<v-btn :text="!mobile" small fab color="grey--text" class="mr-0 ml-0" :aria-label="$t('navbar.topActions.searchNew')" v-on="on" @click="addModal('SearchModal')">
|
||||
<v-icon color="grey">
|
||||
{{ mdiSearchWeb }}
|
||||
</v-icon>
|
||||
|
@ -94,15 +52,7 @@
|
|||
</v-tooltip>
|
||||
<v-tooltip bottom open-delay="400">
|
||||
<template #activator="{ on }">
|
||||
<v-btn
|
||||
small
|
||||
fab
|
||||
:text="!mobile"
|
||||
class="mr-0 ml-0"
|
||||
:aria-label="$t('navbar.topActions.openSettings')"
|
||||
v-on="on"
|
||||
@click="goToSettings"
|
||||
>
|
||||
<v-btn small fab :text="!mobile" class="mr-0 ml-0" :aria-label="$t('navbar.topActions.openSettings')" v-on="on" @click="goToSettings">
|
||||
<v-icon color="grey">
|
||||
{{ mdiCog }}
|
||||
</v-icon>
|
||||
|
@ -117,10 +67,7 @@
|
|||
import { General } from '@/mixins'
|
||||
import { mapState } from 'vuex'
|
||||
import qbit from '@/services/qbit'
|
||||
import {
|
||||
mdiSort, mdiCog, mdiCheckboxBlankOutline, mdiCheckboxMarked,
|
||||
mdiSearchWeb, mdiDelete, mdiPlus, mdiPlay, mdiPause
|
||||
} from '@mdi/js'
|
||||
import { mdiSort, mdiCog, mdiCheckboxBlankOutline, mdiCheckboxMarked, mdiSearchWeb, mdiDelete, mdiPlus, mdiPlay, mdiPause } from '@mdi/js'
|
||||
|
||||
export default {
|
||||
name: 'TopActions',
|
||||
|
@ -159,8 +106,7 @@ export default {
|
|||
this.createModal(name)
|
||||
},
|
||||
goToSettings() {
|
||||
if (this.$route.name !== 'settings')
|
||||
this.$router.push({ name: 'settings' })
|
||||
if (this.$route.name !== 'settings') this.$router.push({ name: 'settings' })
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,20 +1,8 @@
|
|||
<template>
|
||||
<TopActions v-if="!$vuetify.breakpoint.xsOnly" />
|
||||
<v-speed-dial
|
||||
v-else
|
||||
v-model="fab"
|
||||
transition="slide-y-transition"
|
||||
direction="bottom"
|
||||
style="position: absolute; top: 0.3em; right: 1em"
|
||||
>
|
||||
<v-speed-dial v-else v-model="fab" transition="slide-y-transition" direction="bottom" style="position: absolute; top: 0.3em; right: 1em">
|
||||
<template #activator>
|
||||
<v-btn
|
||||
v-model="fab"
|
||||
color="grey"
|
||||
text
|
||||
small
|
||||
fab
|
||||
>
|
||||
<v-btn v-model="fab" color="grey" text small fab>
|
||||
<v-icon>
|
||||
{{ fab ? mdiClose : mdiDotsVertical }}
|
||||
</v-icon>
|
||||
|
@ -25,7 +13,7 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import TopActions from './TopActions'
|
||||
import TopActions from './TopActions.vue'
|
||||
import { mdiDotsVertical, mdiClose } from '@mdi/js'
|
||||
|
||||
export default {
|
||||
|
@ -40,4 +28,3 @@ export default {
|
|||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
|
|
|
@ -5,30 +5,20 @@
|
|||
</label>
|
||||
<v-tooltip v-if="isSession" bottom>
|
||||
<template #activator="{ on }">
|
||||
<v-icon
|
||||
color="white"
|
||||
style="opacity: 0.3;"
|
||||
small
|
||||
v-on="on"
|
||||
>
|
||||
<v-icon color="white" style="opacity: 0.3" small v-on="on">
|
||||
{{ mdiInformationOutline }}
|
||||
</v-icon>
|
||||
</template>
|
||||
<span>{{ $t('navbar.sessionStats.tooltip') }}</span>
|
||||
</v-tooltip>
|
||||
<StorageCard
|
||||
class="mb-4 mt-4"
|
||||
:label="titleCase($t('downloaded'))"
|
||||
color="download"
|
||||
:value="getDownload"
|
||||
/>
|
||||
<StorageCard class="mb-4 mt-4" :label="titleCase($t('downloaded'))" color="download" :value="getDownload" />
|
||||
<StorageCard :label="titleCase($t('uploaded'))" color="upload" :value="getUpload" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mdiInformationOutline } from '@mdi/js'
|
||||
import StorageCard from '@/components/Core/StorageCard'
|
||||
import StorageCard from '../Core/StorageCard.vue'
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
import { titleCase } from '../../filters'
|
||||
|
||||
|
@ -62,4 +52,3 @@ export default {
|
|||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
|
|
|
@ -8,14 +8,4 @@ import CurrentSpeed from './CurrentSpeed.vue'
|
|||
import FilterSelect from './FilterSelect.vue'
|
||||
import TopMenu from './TopMenu.vue'
|
||||
|
||||
export {
|
||||
Navbar,
|
||||
BottomActions,
|
||||
TopActions,
|
||||
SpeedGraph,
|
||||
FreeSpace,
|
||||
TranserStats,
|
||||
CurrentSpeed,
|
||||
FilterSelect,
|
||||
TopMenu
|
||||
}
|
||||
export { Navbar, BottomActions, TopActions, SpeedGraph, FreeSpace, TranserStats, CurrentSpeed, FilterSelect, TopMenu }
|
||||
|
|
|
@ -2,45 +2,20 @@
|
|||
<v-card flat>
|
||||
<v-subheader>{{ $t('modals.settings.pageBittorrent.subHeaderPrivacy') }}</v-subheader>
|
||||
<v-list-item>
|
||||
<v-checkbox
|
||||
v-model="settings.dht"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.pageBittorrent.enableDHT')"
|
||||
/>
|
||||
<v-checkbox v-model="settings.dht" hide-details class="ma-0 pa-0" :label="$t('modals.settings.pageBittorrent.enableDHT')" />
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-checkbox
|
||||
v-model="settings.pex"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.pageBittorrent.enablePeX')"
|
||||
/>
|
||||
<v-checkbox v-model="settings.pex" hide-details class="ma-0 pa-0" :label="$t('modals.settings.pageBittorrent.enablePeX')" />
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-checkbox
|
||||
v-model="settings.lsd"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.pageBittorrent.enableLPD')"
|
||||
/>
|
||||
<v-checkbox v-model="settings.lsd" hide-details class="ma-0 pa-0" :label="$t('modals.settings.pageBittorrent.enableLPD')" />
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-checkbox
|
||||
v-model="settings.anonymous_mode"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.pageBittorrent.enableAnonymous')"
|
||||
/>
|
||||
<v-checkbox v-model="settings.anonymous_mode" hide-details class="ma-0 pa-0" :label="$t('modals.settings.pageBittorrent.enableAnonymous')" />
|
||||
</v-list-item>
|
||||
<v-divider insert />
|
||||
<v-list-item>
|
||||
<v-checkbox
|
||||
v-model="settings.queueing_enabled"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.pageBittorrent.torrentQueue')"
|
||||
/>
|
||||
<v-checkbox v-model="settings.queueing_enabled" hide-details class="ma-0 pa-0" :label="$t('modals.settings.pageBittorrent.torrentQueue')" />
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
|
@ -79,12 +54,7 @@
|
|||
/>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-checkbox
|
||||
v-model="settings.dont_count_slow_torrents"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.pageBittorrent.excludeSlowTorrent')"
|
||||
/>
|
||||
<v-checkbox v-model="settings.dont_count_slow_torrents" hide-details class="ma-0 pa-0" :label="$t('modals.settings.pageBittorrent.excludeSlowTorrent')" />
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
|
@ -127,46 +97,20 @@
|
|||
<v-list-item>
|
||||
<v-row dense>
|
||||
<v-col>
|
||||
<v-checkbox
|
||||
v-model="settings.max_ratio_enabled"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.pageBittorrent.whenRatioReaches')"
|
||||
/>
|
||||
<v-checkbox v-model="settings.max_ratio_enabled" hide-details class="ma-0 pa-0" :label="$t('modals.settings.pageBittorrent.whenRatioReaches')" />
|
||||
</v-col>
|
||||
<v-col>
|
||||
<v-text-field
|
||||
v-model="settings.max_ratio"
|
||||
class="mb-2"
|
||||
outlined
|
||||
dense
|
||||
type="number"
|
||||
hide-details
|
||||
:disabled="!settings.max_ratio_enabled"
|
||||
/>
|
||||
<v-text-field v-model="settings.max_ratio" class="mb-2" outlined dense type="number" hide-details :disabled="!settings.max_ratio_enabled" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-row dense>
|
||||
<v-col>
|
||||
<v-checkbox
|
||||
v-model="settings.max_seeding_time_enabled"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.pageBittorrent.whenSeedingTimeReaches')"
|
||||
/>
|
||||
<v-checkbox v-model="settings.max_seeding_time_enabled" hide-details class="ma-0 pa-0" :label="$t('modals.settings.pageBittorrent.whenSeedingTimeReaches')" />
|
||||
</v-col>
|
||||
<v-col>
|
||||
<v-text-field
|
||||
v-model="settings.max_seeding_time"
|
||||
class="mb-2"
|
||||
outlined
|
||||
dense
|
||||
type="number"
|
||||
hide-details
|
||||
:disabled="!settings.max_seeding_time_enabled"
|
||||
/>
|
||||
<v-text-field v-model="settings.max_seeding_time" class="mb-2" outlined dense type="number" hide-details :disabled="!settings.max_seeding_time_enabled" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
|
@ -213,11 +157,10 @@ export default {
|
|||
{
|
||||
value: 3,
|
||||
text: this.$i18n.t('modals.settings.pageBittorrent.maxRatioRemoveTorrentAndFiles')
|
||||
|
||||
},
|
||||
{
|
||||
value: 2,
|
||||
text: this.$i18n.t('modals.settings.pageBittorrent.maxRatioTorrentSuperseeding')
|
||||
text: this.$i18n.t('modals.settings.pageBittorrent.maxRatioTorrentSuperseeding')
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -1,18 +1,10 @@
|
|||
<template>
|
||||
<v-card flat>
|
||||
<v-subheader>
|
||||
{{ $t("modals.settings.pageConnection.subHeader") }}
|
||||
{{ $t('modals.settings.pageConnection.subHeader') }}
|
||||
</v-subheader>
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.max_connec"
|
||||
class="mb-2"
|
||||
outlined
|
||||
dense
|
||||
type="number"
|
||||
hide-details
|
||||
:label="$t('modals.settings.pageConnection.globalMaxConnection')"
|
||||
/>
|
||||
<v-text-field v-model="settings.max_connec" class="mb-2" outlined dense type="number" hide-details :label="$t('modals.settings.pageConnection.globalMaxConnection')" />
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
|
@ -26,15 +18,7 @@
|
|||
/>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.max_uploads"
|
||||
class="mb-2"
|
||||
outlined
|
||||
dense
|
||||
type="number"
|
||||
hide-details
|
||||
:label="$t('modals.settings.pageConnection.globalMaxUploadSlots')"
|
||||
/>
|
||||
<v-text-field v-model="settings.max_uploads" class="mb-2" outlined dense type="number" hide-details :label="$t('modals.settings.pageConnection.globalMaxUploadSlots')" />
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
|
@ -49,67 +33,30 @@
|
|||
</v-list-item>
|
||||
<v-divider />
|
||||
<v-subheader>
|
||||
{{ $t("modals.settings.pageConnection.proxySubHeader") }}
|
||||
{{ $t('modals.settings.pageConnection.proxySubHeader') }}
|
||||
</v-subheader>
|
||||
<v-list-item>
|
||||
<v-row class="ml-5 mr-5 pb-4">
|
||||
<v-col cols="5" class="pa-0 pr-2">
|
||||
<v-select
|
||||
v-model="settings.proxy_type"
|
||||
outlined
|
||||
dense
|
||||
hide-details
|
||||
small-chips
|
||||
:items="proxyTypes"
|
||||
/>
|
||||
<v-select v-model="settings.proxy_type" outlined dense hide-details small-chips :items="proxyTypes" />
|
||||
</v-col>
|
||||
<v-col cols="4" class="pa-0">
|
||||
<v-text-field
|
||||
v-model="settings.proxy_ip"
|
||||
class="mr-1"
|
||||
outlined
|
||||
dense
|
||||
hide-details
|
||||
:label="$t('modals.settings.pageWebUI.ipAddress')"
|
||||
/>
|
||||
<v-text-field v-model="settings.proxy_ip" class="mr-1" outlined dense hide-details :label="$t('modals.settings.pageWebUI.ipAddress')" />
|
||||
</v-col>
|
||||
<v-col cols="3" class="pa-0">
|
||||
<v-text-field
|
||||
v-model="settings.proxy_port"
|
||||
class="ml-1"
|
||||
outlined
|
||||
dense
|
||||
type="number"
|
||||
hide-details
|
||||
:label="$t('modals.settings.pageWebUI.port')"
|
||||
/>
|
||||
<v-text-field v-model="settings.proxy_port" class="ml-1" outlined dense type="number" hide-details :label="$t('modals.settings.pageWebUI.port')" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-checkbox
|
||||
v-model="settings.proxy_peer_connections"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.pageConnection.proxyPeerConnections')"
|
||||
/>
|
||||
<v-checkbox v-model="settings.proxy_peer_connections" hide-details class="ma-0 pa-0" :label="$t('modals.settings.pageConnection.proxyPeerConnections')" />
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-checkbox
|
||||
v-model="settings.proxy_torrents_only"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.pageConnection.proxyTorrentOnly')"
|
||||
/>
|
||||
<v-checkbox v-model="settings.proxy_torrents_only" hide-details class="ma-0 pa-0" :label="$t('modals.settings.pageConnection.proxyTorrentOnly')" />
|
||||
</v-list-item>
|
||||
<v-divider />
|
||||
<v-list-item>
|
||||
<v-checkbox
|
||||
v-model="settings.proxy_auth_enabled"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.pageConnection.proxyAuth')"
|
||||
/>
|
||||
<v-checkbox v-model="settings.proxy_auth_enabled" hide-details class="ma-0 pa-0" :label="$t('modals.settings.pageConnection.proxyAuth')" />
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
|
|
|
@ -2,117 +2,79 @@
|
|||
<v-card flat>
|
||||
<v-subheader>{{ $t('modals.settings.pageDownloads.subHeaderWhenAddTorrent') }}</v-subheader>
|
||||
<v-list-item>
|
||||
<v-checkbox
|
||||
v-model="settings.create_subfolder_enabled"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.pageDownloads.whenAddTorrent.createSubFolder')"
|
||||
/>
|
||||
<v-checkbox v-model="settings.create_subfolder_enabled" hide-details class="ma-0 pa-0" :label="$t('modals.settings.pageDownloads.whenAddTorrent.createSubFolder')" />
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-checkbox
|
||||
v-model="settings.start_paused_enabled"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.pageDownloads.whenAddTorrent.donotAutoStart')"
|
||||
/>
|
||||
<v-checkbox v-model="settings.start_paused_enabled" hide-details class="ma-0 pa-0" :label="$t('modals.settings.pageDownloads.whenAddTorrent.donotAutoStart')" />
|
||||
</v-list-item>
|
||||
<v-divider insert />
|
||||
<v-subheader>{{ $t('modals.settings.pageDownloads.subHeaderPublicSettings') }}</v-subheader>
|
||||
<v-list-item>
|
||||
<v-checkbox
|
||||
v-model="settings.preallocate_all"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.pageDownloads.publicSettings.preAllocateDisk')"
|
||||
/>
|
||||
<v-checkbox v-model="settings.preallocate_all" hide-details class="ma-0 pa-0" :label="$t('modals.settings.pageDownloads.publicSettings.preAllocateDisk')" />
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-checkbox
|
||||
v-model="settings.incomplete_files_ext"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.pageDownloads.publicSettings.appendQBExtension')"
|
||||
/>
|
||||
<v-checkbox v-model="settings.incomplete_files_ext" hide-details class="ma-0 pa-0" :label="$t('modals.settings.pageDownloads.publicSettings.appendQBExtension')" />
|
||||
</v-list-item>
|
||||
<v-divider insert />
|
||||
<v-subheader>{{ $t('modals.settings.pageDownloads.subHeaderSaveManagement') }}</v-subheader>
|
||||
<v-list-item>
|
||||
<v-checkbox
|
||||
v-model="settings.auto_tmm_enabled"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.pageDownloads.saveManagement.autoManagement')"
|
||||
/>
|
||||
<v-checkbox v-model="settings.auto_tmm_enabled" hide-details class="ma-0 pa-0" :label="$t('modals.settings.pageDownloads.saveManagement.autoManagement')" />
|
||||
</v-list-item>
|
||||
<v-list-item class="mb-2">
|
||||
<v-checkbox
|
||||
v-model="settings.save_path_changed_tmm_enabled"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.pageDownloads.saveManagement.relocate')"
|
||||
/>
|
||||
<v-checkbox v-model="settings.save_path_changed_tmm_enabled" hide-details class="ma-0 pa-0" :label="$t('modals.settings.pageDownloads.saveManagement.relocate')" />
|
||||
</v-list-item>
|
||||
<v-list-item class="mb-2">
|
||||
<v-text-field
|
||||
v-model="settings.save_path"
|
||||
class="mb-2"
|
||||
outlined
|
||||
dense
|
||||
:label="$t('modals.settings.pageDownloads.saveManagement.defaultSavePath')"
|
||||
hide-details
|
||||
/>
|
||||
<v-text-field v-model="settings.save_path" class="mb-2" outlined dense :label="$t('modals.settings.pageDownloads.saveManagement.defaultSavePath')" hide-details />
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-checkbox
|
||||
v-model="settings.temp_path_enabled"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.pageDownloads.saveManagement.keepIncompleteIn')"
|
||||
/>
|
||||
<v-checkbox v-model="settings.temp_path_enabled" hide-details class="ma-0 pa-0" :label="$t('modals.settings.pageDownloads.saveManagement.keepIncompleteIn')" />
|
||||
</v-list-item>
|
||||
<v-list-item v-if="settings.temp_path_enabled">
|
||||
<v-text-field
|
||||
v-model="settings.temp_path"
|
||||
class="mb-2"
|
||||
outlined
|
||||
dense
|
||||
hide-details
|
||||
/>
|
||||
<v-text-field v-model="settings.temp_path" class="mb-2" outlined dense hide-details />
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-checkbox
|
||||
v-model="settings.autorun_enabled"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.pageDownloads.saveManagement.autoEnabled')"
|
||||
/>
|
||||
<v-checkbox v-model="settings.autorun_enabled" hide-details class="ma-0 pa-0" :label="$t('modals.settings.pageDownloads.saveManagement.autoEnabled')" />
|
||||
</v-list-item>
|
||||
<v-list-item v-if="settings.autorun_enabled">
|
||||
<v-text-field
|
||||
v-model="settings.autorun_program"
|
||||
class="mb-2"
|
||||
outlined
|
||||
dense
|
||||
:label="$t('modals.settings.pageDownloads.saveManagement.autorunProgram')"
|
||||
hide-details
|
||||
/>
|
||||
<v-text-field v-model="settings.autorun_program" class="mb-2" outlined dense :label="$t('modals.settings.pageDownloads.saveManagement.autorunProgram')" hide-details />
|
||||
</v-list-item>
|
||||
<v-list-item v-if="settings.autorun_enabled" class="mb-4">
|
||||
<v-card flat color="grey--text selected">
|
||||
<v-card-text>
|
||||
<h5>{{ $t('modals.settings.pageDownloads.saveManagement.supportParamTitle') }}</h5>
|
||||
<h5>
|
||||
{{ $t('modals.settings.pageDownloads.saveManagement.supportParamTitle') }}
|
||||
</h5>
|
||||
<ul>
|
||||
<li>{{ $t('modals.settings.pageDownloads.saveManagement.supportParamN') }}</li>
|
||||
<li>{{ $t('modals.settings.pageDownloads.saveManagement.supportParamL') }}</li>
|
||||
<li>{{ $t('modals.settings.pageDownloads.saveManagement.supportParamG') }}</li>
|
||||
<li>{{ $t('modals.settings.pageDownloads.saveManagement.supportParamF') }}</li>
|
||||
<li>{{ $t('modals.settings.pageDownloads.saveManagement.supportParamR') }}</li>
|
||||
<li>{{ $t('modals.settings.pageDownloads.saveManagement.supportParamD') }}</li>
|
||||
<li>{{ $t('modals.settings.pageDownloads.saveManagement.supportParamC') }}</li>
|
||||
<li>{{ $t('modals.settings.pageDownloads.saveManagement.supportParamZ') }}</li>
|
||||
<li>{{ $t('modals.settings.pageDownloads.saveManagement.supportParamT') }}</li>
|
||||
<li>{{ $t('modals.settings.pageDownloads.saveManagement.supportParamI') }}</li>
|
||||
<li>
|
||||
{{ $t('modals.settings.pageDownloads.saveManagement.supportParamN') }}
|
||||
</li>
|
||||
<li>
|
||||
{{ $t('modals.settings.pageDownloads.saveManagement.supportParamL') }}
|
||||
</li>
|
||||
<li>
|
||||
{{ $t('modals.settings.pageDownloads.saveManagement.supportParamG') }}
|
||||
</li>
|
||||
<li>
|
||||
{{ $t('modals.settings.pageDownloads.saveManagement.supportParamF') }}
|
||||
</li>
|
||||
<li>
|
||||
{{ $t('modals.settings.pageDownloads.saveManagement.supportParamR') }}
|
||||
</li>
|
||||
<li>
|
||||
{{ $t('modals.settings.pageDownloads.saveManagement.supportParamD') }}
|
||||
</li>
|
||||
<li>
|
||||
{{ $t('modals.settings.pageDownloads.saveManagement.supportParamC') }}
|
||||
</li>
|
||||
<li>
|
||||
{{ $t('modals.settings.pageDownloads.saveManagement.supportParamZ') }}
|
||||
</li>
|
||||
<li>
|
||||
{{ $t('modals.settings.pageDownloads.saveManagement.supportParamT') }}
|
||||
</li>
|
||||
<li>
|
||||
{{ $t('modals.settings.pageDownloads.saveManagement.supportParamI') }}
|
||||
</li>
|
||||
</ul>
|
||||
</v-card-text>
|
||||
</v-card>
|
||||
|
|
|
@ -34,7 +34,9 @@ import { FullScreenModal } from '@/mixins'
|
|||
export default {
|
||||
name: 'Rss',
|
||||
components: {
|
||||
General, Feeds, Rules
|
||||
General,
|
||||
Feeds,
|
||||
Rules
|
||||
},
|
||||
mixins: [FullScreenModal],
|
||||
data: () => ({
|
||||
|
|
|
@ -14,16 +14,10 @@
|
|||
</v-icon>
|
||||
</v-list-item-action>
|
||||
</v-list-item>
|
||||
<v-divider
|
||||
v-if="index < availableFeeds.length - 1"
|
||||
:key="index"
|
||||
/>
|
||||
<v-divider v-if="index < availableFeeds.length - 1" :key="index" />
|
||||
</template>
|
||||
<v-list-item>
|
||||
<v-btn
|
||||
class="mx-auto accent white--text elevation-0 px-4"
|
||||
@click="createFeed"
|
||||
>
|
||||
<v-btn class="mx-auto accent white--text elevation-0 px-4" @click="createFeed">
|
||||
{{ $t('modals.settings.pageRss.pageFeeds.btnCreateNew') }}
|
||||
</v-btn>
|
||||
</v-list-item>
|
||||
|
@ -66,4 +60,4 @@ export default {
|
|||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</script>
|
||||
|
|
|
@ -1,15 +1,10 @@
|
|||
<template>
|
||||
<v-card flat>
|
||||
<v-subheader>
|
||||
{{ $t("modals.settings.pageRss.pageGeneral.rssAutoProcessing") }}
|
||||
{{ $t('modals.settings.pageRss.pageGeneral.rssAutoProcessing') }}
|
||||
</v-subheader>
|
||||
<v-list-item>
|
||||
<v-checkbox
|
||||
v-model="settings.rss_processing_enabled"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.pageRss.pageGeneral.input.enableRssProcessing')"
|
||||
/>
|
||||
<v-checkbox v-model="settings.rss_processing_enabled" hide-details class="ma-0 pa-0" :label="$t('modals.settings.pageRss.pageGeneral.input.enableRssProcessing')" />
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
|
@ -19,7 +14,7 @@
|
|||
dense
|
||||
type="number"
|
||||
hide-details
|
||||
:label="$t('modals.settings.pageRss.pageGeneral.input.feedsRefreshInterval') "
|
||||
:label="$t('modals.settings.pageRss.pageGeneral.input.feedsRefreshInterval')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
|
@ -30,24 +25,15 @@
|
|||
dense
|
||||
type="number"
|
||||
hide-details
|
||||
:label="$t('modals.settings.pageRss.pageGeneral.input.feedsMaxArticles') "
|
||||
:label="$t('modals.settings.pageRss.pageGeneral.input.feedsMaxArticles')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-divider />
|
||||
<v-subheader>
|
||||
{{ $t("modals.settings.pageRss.pageGeneral.rssAutoDownloader") }}
|
||||
{{ $t('modals.settings.pageRss.pageGeneral.rssAutoDownloader') }}
|
||||
</v-subheader>
|
||||
<v-list-item>
|
||||
<v-checkbox
|
||||
v-model="settings.rss_auto_downloading_enabled"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="
|
||||
$t(
|
||||
'modals.settings.pageRss.pageGeneral.input.enableRssAutoDownload'
|
||||
)
|
||||
"
|
||||
/>
|
||||
<v-checkbox v-model="settings.rss_auto_downloading_enabled" hide-details class="ma-0 pa-0" :label="$t('modals.settings.pageRss.pageGeneral.input.enableRssAutoDownload')" />
|
||||
</v-list-item>
|
||||
</v-card>
|
||||
</template>
|
||||
|
@ -55,7 +41,7 @@
|
|||
import { FullScreenModal, SettingsTab } from '@/mixins'
|
||||
|
||||
export default {
|
||||
name: 'Rss',
|
||||
name: 'RssGeneral',
|
||||
mixins: [SettingsTab, FullScreenModal]
|
||||
}
|
||||
</script>
|
||||
|
@ -67,7 +53,7 @@ export default {
|
|||
}
|
||||
// Reversed input variant
|
||||
:deep(.v-input--reverse .v-input__slot) {
|
||||
@import "../../../../styles/styles";
|
||||
@import '../../../../styles/styles';
|
||||
@include reverse-switch;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -14,16 +14,10 @@
|
|||
</v-icon>
|
||||
</v-list-item-action>
|
||||
</v-list-item>
|
||||
<v-divider
|
||||
v-if="index < availableRules.length - 1"
|
||||
:key="index"
|
||||
/>
|
||||
<v-divider v-if="index < availableRules.length - 1" :key="index" />
|
||||
</template>
|
||||
<v-list-item>
|
||||
<v-btn
|
||||
class="mx-auto accent white--text elevation-0 px-4"
|
||||
@click="createRule"
|
||||
>
|
||||
<v-btn class="mx-auto accent white--text elevation-0 px-4" @click="createRule">
|
||||
{{ $t('modals.settings.pageRss.pageRules.btnCreateNew') }}
|
||||
</v-btn>
|
||||
</v-list-item>
|
||||
|
@ -66,4 +60,4 @@ export default {
|
|||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</script>
|
||||
|
|
|
@ -14,21 +14,15 @@
|
|||
</v-icon>
|
||||
</v-list-item-action>
|
||||
</v-list-item>
|
||||
<v-divider
|
||||
v-if="index < availableTags.length - 1"
|
||||
:key="index"
|
||||
/>
|
||||
<v-divider v-if="index < availableTags.length - 1" :key="index" />
|
||||
</template>
|
||||
<v-list-item>
|
||||
<v-btn
|
||||
class="mx-auto accent white--text elevation-0 px-4"
|
||||
@click="createTag"
|
||||
>
|
||||
<v-btn class="mx-auto accent white--text elevation-0 px-4" @click="createTag">
|
||||
{{ $t('modals.settings.pageTagsAndCategories.btnCreateNew') }}
|
||||
</v-btn>
|
||||
</v-list-item>
|
||||
</v-col>
|
||||
|
||||
|
||||
<v-col cols="12" md="6">
|
||||
<v-subheader>{{ $t('modals.settings.pageTagsAndCategories.subHeaderCategories') }}</v-subheader>
|
||||
<template v-for="(item, index) in availableCategories">
|
||||
|
@ -48,16 +42,10 @@
|
|||
</v-list-item-action>
|
||||
</v-list-item>
|
||||
|
||||
<v-divider
|
||||
v-if="index < availableCategories.length - 1"
|
||||
:key="index"
|
||||
/>
|
||||
<v-divider v-if="index < availableCategories.length - 1" :key="index" />
|
||||
</template>
|
||||
<v-list-item>
|
||||
<v-btn
|
||||
class="mx-auto accent white--text elevation-0 px-4"
|
||||
@click="createCategory"
|
||||
>
|
||||
<v-btn class="mx-auto accent white--text elevation-0 px-4" @click="createCategory">
|
||||
{{ $t('modals.settings.pageTagsAndCategories.btnCreateNew') }}
|
||||
</v-btn>
|
||||
</v-list-item>
|
||||
|
@ -119,4 +107,3 @@ export default {
|
|||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
</v-tabs>
|
||||
<v-tabs-items v-model="tab" touchless>
|
||||
<v-tab-item eager value="general">
|
||||
<General />
|
||||
<VGeneral />
|
||||
</v-tab-item>
|
||||
<v-tab-item eager value="dashboard">
|
||||
<Dashboard />
|
||||
|
@ -20,14 +20,15 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import General from './VueTorrent/General.vue'
|
||||
import VGeneral from './VueTorrent/VGeneral.vue'
|
||||
import Dashboard from './VueTorrent/Dashboard.vue'
|
||||
import { FullScreenModal } from '@/mixins'
|
||||
|
||||
export default {
|
||||
name: 'VueTorrent',
|
||||
components: {
|
||||
General, Dashboard
|
||||
VGeneral,
|
||||
Dashboard
|
||||
},
|
||||
mixins: [FullScreenModal],
|
||||
data: () => ({
|
||||
|
|
|
@ -7,21 +7,9 @@
|
|||
</v-subheader>
|
||||
<v-row dense>
|
||||
<v-list flat class="ma-2 pa-0">
|
||||
<draggable
|
||||
:list="busyTorrentProperties"
|
||||
tag="tbody"
|
||||
>
|
||||
<v-list-item
|
||||
v-for="(item, index) in busyTorrentProperties"
|
||||
:key="index"
|
||||
class="ma-2 elevation-2 rounded-lg pointer"
|
||||
>
|
||||
<v-checkbox
|
||||
v-model="item.active"
|
||||
dense
|
||||
hide-details
|
||||
class="pa-0 ma-0"
|
||||
/>
|
||||
<draggable :list="busyTorrentProperties" tag="tbody">
|
||||
<v-list-item v-for="(item, index) in busyTorrentProperties" :key="index" class="ma-2 elevation-2 rounded-lg pointer">
|
||||
<v-checkbox v-model="item.active" dense hide-details class="pa-0 ma-0" />
|
||||
<v-list-item-content>
|
||||
<v-list-item-title class="truncate" v-text="item.name" />
|
||||
</v-list-item-content>
|
||||
|
@ -42,21 +30,9 @@
|
|||
</v-subheader>
|
||||
<v-row dense>
|
||||
<v-list flat class="ma-2 pa-0">
|
||||
<draggable
|
||||
:list="doneTorrentProperties"
|
||||
tag="tbody"
|
||||
>
|
||||
<v-list-item
|
||||
v-for="(item, index) in doneTorrentProperties"
|
||||
:key="index"
|
||||
class="ma-2 elevation-2 rounded-lg pointer"
|
||||
>
|
||||
<v-checkbox
|
||||
v-model="item.active"
|
||||
dense
|
||||
hide-details
|
||||
class="pa-0 ma-0"
|
||||
/>
|
||||
<draggable :list="doneTorrentProperties" tag="tbody">
|
||||
<v-list-item v-for="(item, index) in doneTorrentProperties" :key="index" class="ma-2 elevation-2 rounded-lg pointer">
|
||||
<v-checkbox v-model="item.active" dense hide-details class="pa-0 ma-0" />
|
||||
<v-list-item-content>
|
||||
<v-list-item-title class="truncate" v-text="item.name" />
|
||||
</v-list-item-content>
|
||||
|
@ -94,4 +70,4 @@ export default {
|
|||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</script>
|
||||
|
|
|
@ -6,91 +6,49 @@
|
|||
<v-list-item>
|
||||
<v-row dense>
|
||||
<v-col>
|
||||
<v-switch
|
||||
v-model="showCurrentSpeed"
|
||||
class="v-input--reverse pa-0 ma-0"
|
||||
hide-details
|
||||
inset
|
||||
:label="$t('modals.settings.pageVueTorrent.pageGeneral.currentSpeed')"
|
||||
/>
|
||||
<v-switch v-model="showCurrentSpeed" class="v-input--reverse pa-0 ma-0" hide-details inset :label="$t('modals.settings.pageVueTorrent.pageGeneral.currentSpeed')" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-row dense>
|
||||
<v-col>
|
||||
<v-switch
|
||||
v-model="showSpeedGraph"
|
||||
class="v-input--reverse pa-0 ma-0"
|
||||
hide-details
|
||||
inset
|
||||
:label="$t('modals.settings.pageVueTorrent.pageGeneral.speedGraph')"
|
||||
/>
|
||||
<v-switch v-model="showSpeedGraph" class="v-input--reverse pa-0 ma-0" hide-details inset :label="$t('modals.settings.pageVueTorrent.pageGeneral.speedGraph')" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-row dense>
|
||||
<v-col>
|
||||
<v-switch
|
||||
v-model="showSessionStat"
|
||||
class="v-input--reverse pa-0 ma-0"
|
||||
hide-details
|
||||
inset
|
||||
:label="$t('modals.settings.pageVueTorrent.pageGeneral.sessionStats')"
|
||||
/>
|
||||
<v-switch v-model="showSessionStat" class="v-input--reverse pa-0 ma-0" hide-details inset :label="$t('modals.settings.pageVueTorrent.pageGeneral.sessionStats')" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-row dense>
|
||||
<v-col>
|
||||
<v-switch
|
||||
v-model="showAlltimeStat"
|
||||
class="v-input--reverse pa-0 ma-0"
|
||||
hide-details
|
||||
inset
|
||||
:label="$t('modals.settings.pageVueTorrent.pageGeneral.allTimeStats')"
|
||||
/>
|
||||
<v-switch v-model="showAlltimeStat" class="v-input--reverse pa-0 ma-0" hide-details inset :label="$t('modals.settings.pageVueTorrent.pageGeneral.allTimeStats')" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-row dense>
|
||||
<v-col>
|
||||
<v-switch
|
||||
v-model="freeSpace"
|
||||
class="v-input--reverse pa-0 ma-0"
|
||||
hide-details
|
||||
inset
|
||||
:label="$t('modals.settings.pageVueTorrent.pageGeneral.freeSpace')"
|
||||
/>
|
||||
<v-switch v-model="freeSpace" class="v-input--reverse pa-0 ma-0" hide-details inset :label="$t('modals.settings.pageVueTorrent.pageGeneral.freeSpace')" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-row dense>
|
||||
<v-col>
|
||||
<v-switch
|
||||
v-model="showTrackerFilter"
|
||||
class="v-input--reverse pa-0 ma-0"
|
||||
hide-details
|
||||
inset
|
||||
:label="$t('modals.settings.pageVueTorrent.pageGeneral.trackerFilter')"
|
||||
/>
|
||||
<v-switch v-model="showTrackerFilter" class="v-input--reverse pa-0 ma-0" hide-details inset :label="$t('modals.settings.pageVueTorrent.pageGeneral.trackerFilter')" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-row dense>
|
||||
<v-col>
|
||||
<v-switch
|
||||
v-model="rightDrawer"
|
||||
class="v-input--reverse pa-0 ma-0"
|
||||
hide-details
|
||||
inset
|
||||
:label="$t('modals.settings.pageVueTorrent.pageGeneral.rightDrawer')"
|
||||
/>
|
||||
<v-switch v-model="rightDrawer" class="v-input--reverse pa-0 ma-0" hide-details inset :label="$t('modals.settings.pageVueTorrent.pageGeneral.rightDrawer')" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
|
@ -102,16 +60,7 @@
|
|||
</p>
|
||||
</v-col>
|
||||
<v-col cols="4" sm="4" md="2">
|
||||
<v-select
|
||||
v-model="lang"
|
||||
flat
|
||||
solo
|
||||
dense
|
||||
hide-details
|
||||
background-color="background"
|
||||
class="rounded-xl"
|
||||
:items="languages"
|
||||
/>
|
||||
<v-select v-model="lang" flat solo dense hide-details background-color="background" class="rounded-xl" :items="languages" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
|
@ -123,16 +72,7 @@
|
|||
</p>
|
||||
</v-col>
|
||||
<v-col cols="4" sm="4" md="2">
|
||||
<v-select
|
||||
v-model="paginationSize"
|
||||
flat
|
||||
solo
|
||||
dense
|
||||
hide-details
|
||||
background-color="background"
|
||||
class="rounded-xl"
|
||||
:items="paginationSizes"
|
||||
/>
|
||||
<v-select v-model="paginationSize" flat solo dense hide-details background-color="background" class="rounded-xl" :items="paginationSizes" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
|
@ -144,16 +84,7 @@
|
|||
</p>
|
||||
</v-col>
|
||||
<v-col cols="4" sm="4" md="2">
|
||||
<v-select
|
||||
v-model="title"
|
||||
flat
|
||||
solo
|
||||
dense
|
||||
hide-details
|
||||
background-color="background"
|
||||
class="rounded-xl"
|
||||
:items="titleOptions"
|
||||
/>
|
||||
<v-select v-model="title" flat solo dense hide-details background-color="background" class="rounded-xl" :items="titleOptions" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
|
@ -192,13 +123,14 @@
|
|||
|
||||
<script>
|
||||
import { mapState, mapGetters } from 'vuex'
|
||||
import qbit from '@/services/qbit'
|
||||
import { availableLanguages } from '@/lang'
|
||||
import { Qbit } from '../../../../services/qbit'
|
||||
import { i18n } from '@/plugins/i18n'
|
||||
|
||||
export default {
|
||||
name: 'General',
|
||||
name: 'VueTorrent-General',
|
||||
data() {
|
||||
return {
|
||||
languages: availableLanguages,
|
||||
languages: i18n.availableLocales,
|
||||
paginationSizes: [5, 15, 30, 50],
|
||||
titleOptions: ['Default', 'Global Speed', 'First Torrent Status'],
|
||||
Qbitversion: 0
|
||||
|
@ -296,8 +228,7 @@ export default {
|
|||
},
|
||||
methods: {
|
||||
async fetchQbitVersion() {
|
||||
const version = await qbit.getAppVersion()
|
||||
this.Qbitversion = version.includes('v') ? version.substring(1) : version
|
||||
this.Qbitversion = await Qbit.getAppVersion()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -310,7 +241,7 @@ export default {
|
|||
}
|
||||
// Reversed input variant
|
||||
:deep(.v-input--reverse .v-input__slot) {
|
||||
@import "src/styles/styles.scss";
|
||||
@import 'src/styles/styles.scss';
|
||||
@include reverse-switch;
|
||||
}
|
||||
</style>
|
||||
</style>
|
|
@ -1,12 +1,7 @@
|
|||
<template>
|
||||
<v-card flat>
|
||||
<v-list-item>
|
||||
<v-checkbox
|
||||
v-model="settings.alternative_webui_enabled"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.pageWebUI.useAlternativeWebUI')"
|
||||
/>
|
||||
<v-checkbox v-model="settings.alternative_webui_enabled" hide-details class="ma-0 pa-0" :label="$t('modals.settings.pageWebUI.useAlternativeWebUI')" />
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
|
@ -24,25 +19,10 @@
|
|||
<v-list-item>
|
||||
<v-row class="ml-5 mr-5 pb-4">
|
||||
<v-col cols="9" class="pa-0">
|
||||
<v-text-field
|
||||
v-model="settings.web_ui_address"
|
||||
class="mr-1"
|
||||
outlined
|
||||
dense
|
||||
hide-details="true"
|
||||
:label="$t('modals.settings.pageWebUI.ipAddress')"
|
||||
/>
|
||||
<v-text-field v-model="settings.web_ui_address" class="mr-1" outlined dense hide-details="true" :label="$t('modals.settings.pageWebUI.ipAddress')" />
|
||||
</v-col>
|
||||
<v-col cols="3" class="pa-0">
|
||||
<v-text-field
|
||||
v-model="settings.web_ui_port"
|
||||
class="ml-1"
|
||||
outlined
|
||||
dense
|
||||
type="number"
|
||||
hide-details="true"
|
||||
:label="$t('modals.settings.pageWebUI.port')"
|
||||
/>
|
||||
<v-text-field v-model="settings.web_ui_port" class="ml-1" outlined dense type="number" hide-details="true" :label="$t('modals.settings.pageWebUI.port')" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
|
@ -51,24 +31,10 @@
|
|||
<v-list-item>
|
||||
<v-row class="ml-5 mr-5 pb-4">
|
||||
<v-col cols="6" class="pa-0">
|
||||
<v-text-field
|
||||
v-model="settings.web_ui_username"
|
||||
class="mr-1"
|
||||
outlined
|
||||
dense
|
||||
hide-details="true"
|
||||
:label="$t('modals.settings.pageWebUI.username')"
|
||||
/>
|
||||
<v-text-field v-model="settings.web_ui_username" class="mr-1" outlined dense hide-details="true" :label="$t('modals.settings.pageWebUI.username')" />
|
||||
</v-col>
|
||||
<v-col cols="6" class="pa-0">
|
||||
<v-text-field
|
||||
v-model="settings.web_ui_password"
|
||||
class="ml-1"
|
||||
outlined
|
||||
dense
|
||||
hide-details="true"
|
||||
:label="$t('modals.settings.pageWebUI.password')"
|
||||
/>
|
||||
<v-text-field v-model="settings.web_ui_password" class="ml-1" outlined dense hide-details="true" :label="$t('modals.settings.pageWebUI.password')" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
|
@ -86,15 +52,7 @@
|
|||
/>
|
||||
</v-col>
|
||||
<v-col cols="6" class="pa-0">
|
||||
<v-text-field
|
||||
v-model="settings.web_ui_ban_duration"
|
||||
class="ml-1"
|
||||
outlined
|
||||
dense
|
||||
type="number"
|
||||
hide-details="true"
|
||||
:label="$t('modals.settings.pageWebUI.banDuration')"
|
||||
/>
|
||||
<v-text-field v-model="settings.web_ui_ban_duration" class="ml-1" outlined dense type="number" hide-details="true" :label="$t('modals.settings.pageWebUI.banDuration')" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
|
@ -110,12 +68,7 @@
|
|||
/>
|
||||
</v-list-item>
|
||||
<v-list-item class="ml-4">
|
||||
<v-checkbox
|
||||
v-model="settings.bypass_local_auth"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.pageWebUI.bypassAuthenticationForClientsOnLocalhost')"
|
||||
/>
|
||||
<v-checkbox v-model="settings.bypass_local_auth" hide-details class="ma-0 pa-0" :label="$t('modals.settings.pageWebUI.bypassAuthenticationForClientsOnLocalhost')" />
|
||||
</v-list-item>
|
||||
<v-list-item class="ml-4">
|
||||
<v-checkbox
|
||||
|
|
|
@ -1,10 +1,5 @@
|
|||
<template>
|
||||
<v-flex
|
||||
v-if="torrent.category"
|
||||
xs6
|
||||
sm1
|
||||
md1
|
||||
>
|
||||
<v-flex v-if="torrent.category" xs6 sm1 md1>
|
||||
<div class="caption grey--text">
|
||||
{{ $t('category') }}
|
||||
</div>
|
||||
|
|
|
@ -5,11 +5,7 @@
|
|||
</div>
|
||||
<div>
|
||||
{{ torrent.dlspeed | getDataValue(1) }}
|
||||
<span class="caption grey--text">
|
||||
{{
|
||||
torrent.dlspeed | getDataUnit(1)
|
||||
}}/s
|
||||
</span>
|
||||
<span class="caption grey--text"> {{ torrent.dlspeed | getDataUnit(1) }}/s </span>
|
||||
</div>
|
||||
</v-flex>
|
||||
</template>
|
||||
|
|
|
@ -6,9 +6,7 @@
|
|||
<div>
|
||||
{{ torrent.dloaded | getDataValue(2) }}
|
||||
<span class="caption grey--text">
|
||||
{{
|
||||
torrent.dloaded | getDataUnit(1)
|
||||
}}
|
||||
{{ torrent.dloaded | getDataUnit(1) }}
|
||||
</span>
|
||||
</div>
|
||||
</v-flex>
|
||||
|
|
|
@ -5,17 +5,13 @@
|
|||
</div>
|
||||
<div>
|
||||
{{ torrent.num_leechs }}
|
||||
<span
|
||||
class="grey--text caption"
|
||||
>
|
||||
/{{ torrent.available_peers }}
|
||||
</span>
|
||||
<span class="grey--text caption"> /{{ torrent.available_peers }} </span>
|
||||
</div>
|
||||
</v-flex>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
name: 'Peers',
|
||||
name: 'DashboardPeers',
|
||||
props: ['torrent']
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -1,25 +1,10 @@
|
|||
<template>
|
||||
<v-flex
|
||||
xs12
|
||||
sm1
|
||||
md1
|
||||
class="mr-4"
|
||||
>
|
||||
<v-flex xs12 sm1 md1 class="mr-4">
|
||||
<div class="caption grey--text">
|
||||
{{ $t('torrent.progress') | titleCase }}
|
||||
</div>
|
||||
<v-progress-linear
|
||||
:value="torrent.progress"
|
||||
height="20"
|
||||
:style="phoneLayout ? '' : 'width: 80%;'"
|
||||
:color="`torrent-${state}`"
|
||||
rounded
|
||||
>
|
||||
<span
|
||||
class="caption white--text"
|
||||
>
|
||||
{{ torrent.progress }}%
|
||||
</span>
|
||||
<v-progress-linear :value="torrent.progress" height="20" :style="phoneLayout ? '' : 'width: 80%;'" :color="`torrent-${state}`" rounded>
|
||||
<span class="caption white--text"> {{ torrent.progress }}% </span>
|
||||
</v-progress-linear>
|
||||
</v-flex>
|
||||
</template>
|
||||
|
|
|
@ -5,11 +5,7 @@
|
|||
</div>
|
||||
<div>
|
||||
{{ torrent.num_seeds }}
|
||||
<span
|
||||
class="grey--text caption"
|
||||
>
|
||||
/{{ torrent.available_seeds }}
|
||||
</span>
|
||||
<span class="grey--text caption"> /{{ torrent.available_seeds }} </span>
|
||||
</div>
|
||||
</v-flex>
|
||||
</template>
|
||||
|
|
|
@ -6,9 +6,7 @@
|
|||
<div>
|
||||
{{ torrent.size | getDataValue }}
|
||||
<span class="caption grey--text">
|
||||
{{
|
||||
torrent.size | getDataUnit
|
||||
}}
|
||||
{{ torrent.size | getDataUnit }}
|
||||
</span>
|
||||
</div>
|
||||
</v-flex>
|
||||
|
|
|
@ -1,18 +1,9 @@
|
|||
<template>
|
||||
<v-flex
|
||||
xs6
|
||||
sm1
|
||||
md1
|
||||
class="mr-4"
|
||||
>
|
||||
<v-flex xs6 sm1 md1 class="mr-4">
|
||||
<div class="caption grey--text">
|
||||
{{ $t('status') }}
|
||||
</div>
|
||||
<v-chip
|
||||
small
|
||||
class="caption white--text px-2"
|
||||
:class="state"
|
||||
>
|
||||
<v-chip small class="caption white--text px-2" :class="state">
|
||||
{{ stateString }}
|
||||
</v-chip>
|
||||
</v-flex>
|
||||
|
@ -27,8 +18,8 @@ export default {
|
|||
stateString() {
|
||||
if (this.torrent.forced) {
|
||||
return `[F] ${this.torrent.state}`
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return this.torrent.state
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,17 +4,7 @@
|
|||
{{ $t('tags') }}
|
||||
</div>
|
||||
<v-row wrap class="ma-0">
|
||||
<v-chip
|
||||
v-for="tag in torrent.tags"
|
||||
:key="tag"
|
||||
small
|
||||
:class="
|
||||
theme === 'light'
|
||||
? 'white--text'
|
||||
: 'black--text'
|
||||
"
|
||||
class="download caption mb-1 mx-1"
|
||||
>
|
||||
<v-chip v-for="tag in torrent.tags" :key="tag" small :class="theme === 'light' ? 'white--text' : 'black--text'" class="download caption mb-1 mx-1">
|
||||
{{ tag }}
|
||||
</v-chip>
|
||||
</v-row>
|
||||
|
|
|
@ -5,11 +5,7 @@
|
|||
</div>
|
||||
<div>
|
||||
{{ torrent.upspeed | getDataValue(1) }}
|
||||
<span class="caption grey--text">
|
||||
{{
|
||||
torrent.upspeed | getDataUnit(1)
|
||||
}}/s
|
||||
</span>
|
||||
<span class="caption grey--text"> {{ torrent.upspeed | getDataUnit(1) }}/s </span>
|
||||
</div>
|
||||
</v-flex>
|
||||
</template>
|
||||
|
|
|
@ -6,9 +6,7 @@
|
|||
<div>
|
||||
{{ torrent.uploaded | getDataValue }}
|
||||
<span class="caption grey--text">
|
||||
{{
|
||||
torrent.uploaded | getDataUnit
|
||||
}}
|
||||
{{ torrent.uploaded | getDataUnit }}
|
||||
</span>
|
||||
</div>
|
||||
</v-flex>
|
||||
|
|
|
@ -7,9 +7,7 @@
|
|||
<div>
|
||||
{{ torrent.uploaded_session | getDataValue }}
|
||||
<span class="caption grey--text">
|
||||
{{
|
||||
torrent.uploaded_session | getDataUnit
|
||||
}}
|
||||
{{ torrent.uploaded_session | getDataUnit }}
|
||||
</span>
|
||||
</div>
|
||||
</v-flex>
|
||||
|
|
|
@ -1,35 +1,18 @@
|
|||
import Size from './Size'
|
||||
import Progress from './Progress'
|
||||
import Download from './Download'
|
||||
import Downloaded from './Downloaded'
|
||||
import Ratio from './Ratio'
|
||||
import Upload from './Upload'
|
||||
import ETA from './ETA'
|
||||
import Peers from './Peers'
|
||||
import Seeds from './Seeds'
|
||||
import Status from './Status'
|
||||
import Category from './Category'
|
||||
import Tags from './Tags'
|
||||
import AddedOn from './AddedOn'
|
||||
import Uploaded from './Uploaded'
|
||||
import UploadedSession from './UploadedSession'
|
||||
import Availability from './Availability'
|
||||
import Size from './Size.vue'
|
||||
import Progress from './Progress.vue'
|
||||
import Download from './Download.vue'
|
||||
import Downloaded from './Downloaded.vue'
|
||||
import Ratio from './Ratio.vue'
|
||||
import Upload from './Upload.vue'
|
||||
import ETA from './ETA.vue'
|
||||
import Peers from './Peers.vue'
|
||||
import Seeds from './Seeds.vue'
|
||||
import Status from './Status.vue'
|
||||
import Category from './Category.vue'
|
||||
import Tags from './Tags.vue'
|
||||
import AddedOn from './AddedOn.vue'
|
||||
import Uploaded from './Uploaded.vue'
|
||||
import UploadedSession from './UploadedSession.vue'
|
||||
import Availability from './Availability.vue'
|
||||
|
||||
export {
|
||||
Size,
|
||||
Progress,
|
||||
Download,
|
||||
Ratio,
|
||||
Upload,
|
||||
ETA,
|
||||
Peers,
|
||||
Seeds,
|
||||
Status,
|
||||
Category,
|
||||
Tags,
|
||||
AddedOn,
|
||||
Uploaded,
|
||||
UploadedSession,
|
||||
Downloaded,
|
||||
Availability
|
||||
}
|
||||
export { Size, Progress, Download, Ratio, Upload, ETA, Peers, Seeds, Status, Category, Tags, AddedOn, Uploaded, UploadedSession, Downloaded, Availability }
|
||||
|
|
|
@ -1,9 +1,5 @@
|
|||
<template>
|
||||
<v-layout
|
||||
row
|
||||
wrap
|
||||
class="ma-0 px-4 py-2 ml-0 "
|
||||
>
|
||||
<v-layout row wrap class="ma-0 px-4 py-2 ml-0">
|
||||
<v-flex xs12>
|
||||
<div class="caption grey--text">
|
||||
{{ $t('torrent.torrentTitle') }}
|
||||
|
@ -12,12 +8,7 @@
|
|||
{{ torrent.name }}
|
||||
</div>
|
||||
</v-flex>
|
||||
<component
|
||||
:is="item.name"
|
||||
v-for="item in properties"
|
||||
:key="item.name"
|
||||
:torrent="torrent"
|
||||
/>
|
||||
<component :is="item.name" v-for="item in properties" :key="item.name" :torrent="torrent" />
|
||||
</v-layout>
|
||||
</template>
|
||||
<script>
|
||||
|
@ -43,4 +34,4 @@ export default {
|
|||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</script>
|
||||
|
|
|
@ -1,29 +1,15 @@
|
|||
<template>
|
||||
<v-layout
|
||||
row
|
||||
wrap
|
||||
class="ma-0 pa-1"
|
||||
>
|
||||
<v-layout row wrap class="ma-0 pa-1">
|
||||
<v-flex xs12 class="ma-1" row>
|
||||
<span class="subtitle-1" style="line-height: 1.3em; font-size: .95em !important;">
|
||||
<span class="subtitle-1" style="line-height: 1.3em; font-size: 0.95em !important">
|
||||
{{ torrent.name }}
|
||||
</span>
|
||||
</v-flex>
|
||||
<v-flex xs12 row class="ma-1 mt-0">
|
||||
<v-chip
|
||||
small
|
||||
class="caption white--text mr-2"
|
||||
:class="torrent.state.toLowerCase()"
|
||||
style="height: 20px;"
|
||||
>
|
||||
<v-chip small class="caption white--text mr-2" :class="torrent.state.toLowerCase()" style="height: 20px">
|
||||
{{ torrent.state }}
|
||||
</v-chip>
|
||||
<v-chip
|
||||
v-if="torrent.category"
|
||||
small
|
||||
class="upload caption white--text"
|
||||
style="height: 20px;"
|
||||
>
|
||||
<v-chip v-if="torrent.category" small class="upload caption white--text" style="height: 20px">
|
||||
{{ torrent.category }}
|
||||
</v-chip>
|
||||
</v-flex>
|
||||
|
@ -45,36 +31,27 @@
|
|||
<span class="body-2 ml-1"> {{ torrent.eta }} </span>
|
||||
</v-flex>
|
||||
<v-flex xs12 class="ma-1">
|
||||
<v-progress-linear
|
||||
rounded
|
||||
color="upload"
|
||||
height="5"
|
||||
:value="torrent.progress"
|
||||
/>
|
||||
<v-progress-linear rounded color="upload" height="5" :value="torrent.progress" />
|
||||
</v-flex>
|
||||
<v-flex row xs12 class="ma-1">
|
||||
<div class="caption grey--text">
|
||||
{{ torrent.num_seeds }}/{{ torrent.available_seeds }} seeds
|
||||
</div>
|
||||
<div class="caption grey--text">{{ torrent.num_seeds }}/{{ torrent.available_seeds }} seeds</div>
|
||||
<span class="mx-1 grey--text" style="margin-top: 2px">•</span>
|
||||
<div class="caption grey--text">
|
||||
{{ torrent.num_leechs }}/{{ torrent.available_peers }} peers
|
||||
</div>
|
||||
<div class="caption grey--text">{{ torrent.num_leechs }}/{{ torrent.available_peers }} peers</div>
|
||||
<v-spacer />
|
||||
<div>
|
||||
<span v-if="torrent.dlspeed">
|
||||
<v-icon small class="grey--text">
|
||||
{{ mdiChevronDown }}
|
||||
</v-icon>
|
||||
</v-icon>
|
||||
<span class="caption font-weight-medium grey--text">{{ torrent.dlspeed | getDataValue(1) }} </span>
|
||||
<span class="caption grey--text" style="font-size: 0.6em !important;"> {{ torrent.dlspeed | getDataUnit(1) }}/s </span>
|
||||
<span class="caption grey--text" style="font-size: 0.6em !important"> {{ torrent.dlspeed | getDataUnit(1) }}/s </span>
|
||||
</span>
|
||||
<span v-if="torrent.upspeed">
|
||||
<v-icon small class="grey--text">
|
||||
{{ mdiChevronUp }}
|
||||
</v-icon>
|
||||
</v-icon>
|
||||
<span class="caption font-weight-medium grey--text">{{ torrent.upspeed | getDataValue(1) }} </span>
|
||||
<span class="caption grey--text" style="font-size: 0.6em !important;"> {{ torrent.upspeed | getDataUnit(1) }}/s </span>
|
||||
<span class="caption grey--text" style="font-size: 0.6em !important"> {{ torrent.upspeed | getDataUnit(1) }}/s </span>
|
||||
</span>
|
||||
</div>
|
||||
</v-flex>
|
||||
|
@ -88,7 +65,8 @@ export default {
|
|||
torrent: Object
|
||||
},
|
||||
data: () => ({
|
||||
mdiChevronUp, mdiChevronDown
|
||||
mdiChevronUp,
|
||||
mdiChevronDown
|
||||
})
|
||||
}
|
||||
</script>
|
||||
</script>
|
||||
|
|
|
@ -1,11 +1,6 @@
|
|||
<template>
|
||||
<v-card
|
||||
class="pointer noselect elevation-0 rounded-0 ma-0 pa-0"
|
||||
:class="style"
|
||||
>
|
||||
<v-layout
|
||||
@click="evtClicnk"
|
||||
>
|
||||
<v-card class="pointer noselect elevation-0 rounded-0 ma-0 pa-0" :class="style">
|
||||
<v-layout @click="evtClicnk">
|
||||
<MobileCard v-if="isMobile" :torrent="torrent" />
|
||||
<DesktopCard v-else :torrent="torrent" />
|
||||
</v-layout>
|
||||
|
|
|
@ -2,25 +2,19 @@
|
|||
<v-list class="noselect">
|
||||
<v-list-item link @click="resume">
|
||||
<v-icon>{{ mdiPlay }}</v-icon>
|
||||
<v-list-item-title
|
||||
class="ml-2 list-item__title"
|
||||
>
|
||||
<v-list-item-title class="ml-2 list-item__title">
|
||||
{{ $t('rightClick.resume') | titleCase }}
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
<v-list-item link @click="forceResume">
|
||||
<v-icon>{{ mdiFastForward }}</v-icon>
|
||||
<v-list-item-title
|
||||
class="ml-2 list-item__title"
|
||||
>
|
||||
<v-list-item-title class="ml-2 list-item__title">
|
||||
{{ $t('rightClick.forceResume') | titleCase }}
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
<v-list-item link @click="pause">
|
||||
<v-icon>{{ mdiPause }}</v-icon>
|
||||
<v-list-item-title
|
||||
class="ml-2 list-item__title"
|
||||
>
|
||||
<v-list-item-title class="ml-2 list-item__title">
|
||||
{{ $t('pause') | titleCase }}
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
|
@ -30,26 +24,16 @@
|
|||
<v-icon color="red">
|
||||
{{ mdiDelete }}
|
||||
</v-icon>
|
||||
<v-list-item-title
|
||||
class="ml-2 red--text list-item__title"
|
||||
>
|
||||
<v-list-item-title class="ml-2 red--text list-item__title">
|
||||
{{ $t('delete') | titleCase }}
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
<v-divider />
|
||||
<v-menu
|
||||
:open-on-hover="!touchmode"
|
||||
top
|
||||
offset-x
|
||||
:transition="isRightside ? 'slide-x-reverse-transition' : 'slide-x-transition'"
|
||||
:left="isRightside"
|
||||
>
|
||||
<v-menu :open-on-hover="!touchmode" top offset-x :transition="isRightside ? 'slide-x-reverse-transition' : 'slide-x-transition'" :left="isRightside">
|
||||
<template #activator="{ on }">
|
||||
<v-list-item link v-on="on">
|
||||
<v-icon>{{ mdiHeadCog }}</v-icon>
|
||||
<v-list-item-title
|
||||
class="ml-2 list-item__title"
|
||||
>
|
||||
<v-list-item-title class="ml-2 list-item__title">
|
||||
{{ $t('rightClick.advanced.advanced') | titleCase }}
|
||||
</v-list-item-title>
|
||||
<v-list-item-action>
|
||||
|
@ -60,75 +44,59 @@
|
|||
<v-list>
|
||||
<v-list-item v-if="!multiple" link @click="location">
|
||||
<v-icon>{{ mdiFolder }}</v-icon>
|
||||
<v-list-item-title
|
||||
class="ml-2 list-item__title"
|
||||
>
|
||||
<v-list-item-title class="ml-2 list-item__title">
|
||||
{{ $t('rightClick.advanced.changeLocation') | titleCase }}
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
<v-list-item v-if="!multiple" link @click="rename">
|
||||
<v-icon>{{ mdiRenameBox }}</v-icon>
|
||||
<v-list-item-title
|
||||
class="ml-2 list-item__title"
|
||||
>
|
||||
<v-list-item-title class="ml-2 list-item__title">
|
||||
{{ $t('rightClick.advanced.rename') | titleCase }}
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
<v-list-item link @click="recheck">
|
||||
<v-icon>{{ mdiPlaylistCheck }}</v-icon>
|
||||
<v-list-item-title
|
||||
class="ml-2 list-item__title"
|
||||
>
|
||||
<v-list-item-title class="ml-2 list-item__title">
|
||||
{{ $t('rightClick.advanced.forceRecheck') | titleCase }}
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
<v-list-item link @click="reannounce">
|
||||
<v-icon>{{ mdiBullhorn }}</v-icon>
|
||||
<v-list-item-title
|
||||
class="ml-2 list-item__title"
|
||||
>
|
||||
<v-list-item-title class="ml-2 list-item__title">
|
||||
{{ $t('rightClick.advanced.forceReannounce') | titleCase }}
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
<v-list-item v-if="!multiple" link @click="toggleSeq">
|
||||
<v-icon> {{ torrent.seq_dl ? mdiCheckboxMarked : mdiCheckboxBlankOutline }} </v-icon>
|
||||
<v-list-item-title
|
||||
class="ml-2 list-item__title"
|
||||
>
|
||||
<v-icon>
|
||||
{{ torrent.seq_dl ? mdiCheckboxMarked : mdiCheckboxBlankOutline }}
|
||||
</v-icon>
|
||||
<v-list-item-title class="ml-2 list-item__title">
|
||||
{{ $t('rightClick.advanced.sequentialDownload') | titleCase }}
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
<v-list-item v-if="!multiple" link @click="toggleFL">
|
||||
<v-icon> {{ torrent.f_l_piece_prio ? mdiCheckboxMarked : mdiCheckboxBlankOutline }} </v-icon>
|
||||
<v-list-item-title
|
||||
class="ml-2 list-item__title"
|
||||
>
|
||||
<v-icon>
|
||||
{{ torrent.f_l_piece_prio ? mdiCheckboxMarked : mdiCheckboxBlankOutline }}
|
||||
</v-icon>
|
||||
<v-list-item-title class="ml-2 list-item__title">
|
||||
{{ $t('rightClick.advanced.firstLastPriority') | titleCase }}
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
<v-list-item v-if="!multiple" link @click="toggleAutoTMM">
|
||||
<v-icon> {{ torrent.auto_tmm ? mdiCheckboxMarked : mdiCheckboxBlankOutline }} </v-icon>
|
||||
<v-list-item-title
|
||||
class="ml-2 list-item__title"
|
||||
>
|
||||
<v-icon>
|
||||
{{ torrent.auto_tmm ? mdiCheckboxMarked : mdiCheckboxBlankOutline }}
|
||||
</v-icon>
|
||||
<v-list-item-title class="ml-2 list-item__title">
|
||||
{{ $t('rightClick.advanced.automaticTorrentManagement') | titleCase }}
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
</v-list>
|
||||
</v-menu>
|
||||
<v-menu
|
||||
:open-on-hover="!touchmode"
|
||||
top
|
||||
offset-x
|
||||
:transition="isRightside ? 'slide-x-reverse-transition' : 'slide-x-transition'"
|
||||
:left="isRightside"
|
||||
>
|
||||
<v-menu :open-on-hover="!touchmode" top offset-x :transition="isRightside ? 'slide-x-reverse-transition' : 'slide-x-transition'" :left="isRightside">
|
||||
<template #activator="{ on }">
|
||||
<v-list-item link v-on="on">
|
||||
<v-icon>{{ mdiPriorityHigh }}</v-icon>
|
||||
<v-list-item-title
|
||||
class="ml-2 list-item__title"
|
||||
>
|
||||
<v-list-item-title class="ml-2 list-item__title">
|
||||
{{ $t('rightClick.prio.prio') | titleCase }}
|
||||
</v-list-item-title>
|
||||
<v-list-item-action>
|
||||
|
@ -137,32 +105,19 @@
|
|||
</v-list-item>
|
||||
</template>
|
||||
<v-list>
|
||||
<v-list-item
|
||||
v-for="(item, index) in priority_options"
|
||||
:key="index"
|
||||
link
|
||||
@click="setPriority(item.action)"
|
||||
>
|
||||
<v-list-item v-for="(item, index) in priority_options" :key="index" link @click="setPriority(item.action)">
|
||||
<v-icon>{{ item.icon }}</v-icon>
|
||||
<v-list-item-title class="ml-2 list-item__title">
|
||||
{{ $t('rightClick.prio.' + item.name ) | titleCase }}
|
||||
{{ $t('rightClick.prio.' + item.name) | titleCase }}
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
</v-list>
|
||||
</v-menu>
|
||||
<v-menu
|
||||
:open-on-hover="!touchmode"
|
||||
top
|
||||
offset-x
|
||||
:transition="isRightside ? 'slide-x-reverse-transition' : 'slide-x-transition'"
|
||||
:left="isRightside"
|
||||
>
|
||||
<v-menu :open-on-hover="!touchmode" top offset-x :transition="isRightside ? 'slide-x-reverse-transition' : 'slide-x-transition'" :left="isRightside">
|
||||
<template #activator="{ on }">
|
||||
<v-list-item link v-on="on">
|
||||
<v-icon>{{ mdiShape }}</v-icon>
|
||||
<v-list-item-title
|
||||
class="ml-2 list-item__title"
|
||||
>
|
||||
<v-list-item-title class="ml-2 list-item__title">
|
||||
{{ $t('rightClick.category') | titleCase }}
|
||||
</v-list-item-title>
|
||||
<v-list-item-action>
|
||||
|
@ -171,32 +126,18 @@
|
|||
</v-list-item>
|
||||
</template>
|
||||
<v-list>
|
||||
<v-list-item
|
||||
v-for="(item, index) in availableCategories"
|
||||
:key="index"
|
||||
link
|
||||
@click="setCategory(item.value)"
|
||||
>
|
||||
<v-list-item v-for="(item, index) in availableCategories" :key="index" link @click="setCategory(item.value)">
|
||||
<v-list-item-title class="ml-2 list-item__title">
|
||||
{{ item.name }}
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
</v-list>
|
||||
</v-menu>
|
||||
<v-menu
|
||||
v-if="!multiple"
|
||||
:open-on-hover="!touchmode"
|
||||
top
|
||||
offset-x
|
||||
:transition="isRightside ? 'slide-x-reverse-transition' : 'slide-x-transition'"
|
||||
:left="isRightside"
|
||||
>
|
||||
<v-menu v-if="!multiple" :open-on-hover="!touchmode" top offset-x :transition="isRightside ? 'slide-x-reverse-transition' : 'slide-x-transition'" :left="isRightside">
|
||||
<template #activator="{ on }">
|
||||
<v-list-item link v-on="on">
|
||||
<v-icon>{{ mdiSpeedometerSlow }}</v-icon>
|
||||
<v-list-item-title
|
||||
class="ml-2 list-item__title"
|
||||
>
|
||||
<v-list-item-title class="ml-2 list-item__title">
|
||||
{{ $t('rightClick.limit') | titleCase }}
|
||||
</v-list-item-title>
|
||||
<v-list-item-action>
|
||||
|
@ -225,20 +166,11 @@
|
|||
</v-list-item>
|
||||
</v-list>
|
||||
</v-menu>
|
||||
<v-menu
|
||||
v-if="!multiple"
|
||||
:open-on-hover="!touchmode"
|
||||
top
|
||||
offset-x
|
||||
:transition="isRightside ? 'slide-x-reverse-transition' : 'slide-x-transition'"
|
||||
:left="isRightside"
|
||||
>
|
||||
<v-menu v-if="!multiple" :open-on-hover="!touchmode" top offset-x :transition="isRightside ? 'slide-x-reverse-transition' : 'slide-x-transition'" :left="isRightside">
|
||||
<template #activator="{ on }">
|
||||
<v-list-item link v-on="on">
|
||||
<v-icon>{{ mdiContentCopy }}</v-icon>
|
||||
<v-list-item-title
|
||||
class="ml-2 list-item__title"
|
||||
>
|
||||
<v-list-item-title class="ml-2 list-item__title">
|
||||
{{ $t('rightClick.copy') | titleCase }}
|
||||
</v-list-item-title>
|
||||
<v-list-item-action>
|
||||
|
@ -282,11 +214,31 @@ import { mapGetters, mapState } from 'vuex'
|
|||
import qbit from '@/services/qbit'
|
||||
import { General, TorrentSelect } from '@/mixins'
|
||||
import {
|
||||
mdiBullhorn, mdiPlaylistCheck, mdiArrowUp, mdiArrowDown, mdiPriorityLow,
|
||||
mdiInformation, mdiRenameBox, mdiFolder, mdiDelete, mdiAccountGroup,
|
||||
mdiPlay, mdiPause, mdiSelect, mdiPriorityHigh, mdiChevronRight,
|
||||
mdiFastForward, mdiShape, mdiHeadCog, mdiCheckboxMarked, mdiCheckboxBlankOutline,
|
||||
mdiSpeedometerSlow, mdiChevronUp, mdiChevronDown, mdiContentCopy, mdiMagnet
|
||||
mdiBullhorn,
|
||||
mdiPlaylistCheck,
|
||||
mdiArrowUp,
|
||||
mdiArrowDown,
|
||||
mdiPriorityLow,
|
||||
mdiInformation,
|
||||
mdiRenameBox,
|
||||
mdiFolder,
|
||||
mdiDelete,
|
||||
mdiAccountGroup,
|
||||
mdiPlay,
|
||||
mdiPause,
|
||||
mdiSelect,
|
||||
mdiPriorityHigh,
|
||||
mdiChevronRight,
|
||||
mdiFastForward,
|
||||
mdiShape,
|
||||
mdiHeadCog,
|
||||
mdiCheckboxMarked,
|
||||
mdiCheckboxBlankOutline,
|
||||
mdiSpeedometerSlow,
|
||||
mdiChevronUp,
|
||||
mdiChevronDown,
|
||||
mdiContentCopy,
|
||||
mdiMagnet
|
||||
} from '@mdi/js'
|
||||
|
||||
export default {
|
||||
|
@ -306,22 +258,40 @@ export default {
|
|||
{ name: 'decrease', icon: mdiArrowDown, action: 'decreasePrio' },
|
||||
{ name: 'bottom', icon: mdiPriorityLow, action: 'bottomPrio' }
|
||||
],
|
||||
mdiDelete, mdiPlay, mdiPause, mdiSelect, mdiFastForward,
|
||||
mdiFolder, mdiRenameBox, mdiInformation, mdiMagnet, mdiAccountGroup,
|
||||
mdiPlaylistCheck, mdiPriorityHigh, mdiBullhorn, mdiChevronRight,
|
||||
mdiShape, mdiHeadCog, mdiCheckboxMarked, mdiCheckboxBlankOutline,
|
||||
mdiSpeedometerSlow, mdiChevronUp, mdiChevronDown, mdiContentCopy
|
||||
mdiDelete,
|
||||
mdiPlay,
|
||||
mdiPause,
|
||||
mdiSelect,
|
||||
mdiFastForward,
|
||||
mdiFolder,
|
||||
mdiRenameBox,
|
||||
mdiInformation,
|
||||
mdiMagnet,
|
||||
mdiAccountGroup,
|
||||
mdiPlaylistCheck,
|
||||
mdiPriorityHigh,
|
||||
mdiBullhorn,
|
||||
mdiChevronRight,
|
||||
mdiShape,
|
||||
mdiHeadCog,
|
||||
mdiCheckboxMarked,
|
||||
mdiCheckboxBlankOutline,
|
||||
mdiSpeedometerSlow,
|
||||
mdiChevronUp,
|
||||
mdiChevronDown,
|
||||
mdiContentCopy
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['getCategories']),
|
||||
...mapState(['selected_torrents']),
|
||||
availableCategories() {
|
||||
const categories = [
|
||||
{ name: 'None', value: '' }]
|
||||
categories.push(...this.getCategories().map(c => {
|
||||
return { name: c.name, value: c.name }
|
||||
}))
|
||||
const categories = [{ name: 'None', value: '' }]
|
||||
categories.push(
|
||||
...this.getCategories().map(c => {
|
||||
return { name: c.name, value: c.name }
|
||||
})
|
||||
)
|
||||
|
||||
return categories
|
||||
},
|
||||
|
@ -419,8 +389,8 @@ export default {
|
|||
</script>
|
||||
<style scoped lang="scss">
|
||||
.list-item {
|
||||
&__title {
|
||||
font-size: 1em;
|
||||
}
|
||||
&__title {
|
||||
font-size: 1em;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -1,14 +1,6 @@
|
|||
<template>
|
||||
<v-card flat>
|
||||
<v-treeview
|
||||
v-model="selected"
|
||||
:items="fileTree"
|
||||
:open.sync="opened"
|
||||
activatable
|
||||
selectable
|
||||
item-key="fullName"
|
||||
open-all
|
||||
>
|
||||
<v-treeview v-model="selected" :items="fileTree" :open.sync="opened" activatable selectable item-key="fullName" open-all>
|
||||
<template #prepend="{ item, open }">
|
||||
<v-icon v-if="!item.icon">
|
||||
{{ open ? mdiFolderOpen : mdiFolderOpen }}
|
||||
|
@ -19,40 +11,18 @@
|
|||
</template>
|
||||
<template #label="{ item }">
|
||||
<span v-if="!item.editing">{{ item.name }}</span>
|
||||
<v-text-field
|
||||
v-if="item.editing"
|
||||
v-model="item.newName"
|
||||
autofocus
|
||||
/>
|
||||
<v-text-field v-if="item.editing" v-model="item.newName" autofocus />
|
||||
</template>
|
||||
<template v-if="!$vuetify.breakpoint.smAndDown" #append="{ item }">
|
||||
<div v-if="!item.icon">
|
||||
<span class="ml-4">{{ item.children.length }} Files</span>
|
||||
<v-btn
|
||||
v-if="!item.editing"
|
||||
fab
|
||||
x-small
|
||||
class="accent white--text elevation-0 px-4 ml-2"
|
||||
@click="edit(item)"
|
||||
>
|
||||
<v-btn v-if="!item.editing" fab x-small class="accent white--text elevation-0 px-4 ml-2" @click="edit(item)">
|
||||
<v-icon>{{ mdiPencil }}</v-icon>
|
||||
</v-btn>
|
||||
<v-btn
|
||||
v-if="item.editing"
|
||||
fab
|
||||
x-small
|
||||
class="accent white--text elevation-0 px-4 ml-2"
|
||||
@click="renameFolder(item)"
|
||||
>
|
||||
<v-btn v-if="item.editing" fab x-small class="accent white--text elevation-0 px-4 ml-2" @click="renameFolder(item)">
|
||||
<v-icon>{{ mdiContentSave }}</v-icon>
|
||||
</v-btn>
|
||||
<v-btn
|
||||
v-if="item.editing"
|
||||
fab
|
||||
x-small
|
||||
class="error white--text elevation-0 px-4 ml-2"
|
||||
@click="togleEditing(item)"
|
||||
>
|
||||
<v-btn v-if="item.editing" fab x-small class="error white--text elevation-0 px-4 ml-2" @click="togleEditing(item)">
|
||||
<v-icon>{{ mdiClose }}</v-icon>
|
||||
</v-btn>
|
||||
</div>
|
||||
|
@ -60,27 +30,14 @@
|
|||
<span>[{{ item.size }}]</span>
|
||||
<span class="ml-4">{{ item.progress }}%</span>
|
||||
<span class="ml-4">[ {{ item.priority | priority }} ]</span>
|
||||
<v-menu
|
||||
open-on-hover
|
||||
offset-y
|
||||
>
|
||||
<v-menu open-on-hover offset-y>
|
||||
<template #activator="{ on }">
|
||||
<v-btn
|
||||
fab
|
||||
x-small
|
||||
class="accent white--text elevation-0 px-4 ml-2"
|
||||
v-on="on"
|
||||
>
|
||||
<v-btn fab x-small class="accent white--text elevation-0 px-4 ml-2" v-on="on">
|
||||
<v-icon>{{ mdiTrendingUp }}</v-icon>
|
||||
</v-btn>
|
||||
</template>
|
||||
<v-list>
|
||||
<v-list-item
|
||||
v-for="prio in priority_options"
|
||||
:key="prio.value"
|
||||
link
|
||||
@click="setFilePrio(item.id, prio.value)"
|
||||
>
|
||||
<v-list-item v-for="prio in priority_options" :key="prio.value" link @click="setFilePrio(item.id, prio.value)">
|
||||
<v-icon>{{ prio.icon }}</v-icon>
|
||||
<v-list-item-title class="caption">
|
||||
{{ prio.name }}
|
||||
|
@ -88,31 +45,13 @@
|
|||
</v-list-item>
|
||||
</v-list>
|
||||
</v-menu>
|
||||
<v-btn
|
||||
v-if="!item.editing"
|
||||
fab
|
||||
x-small
|
||||
class="accent white--text elevation-0 px-4 ml-2"
|
||||
@click="edit(item)"
|
||||
>
|
||||
<v-btn v-if="!item.editing" fab x-small class="accent white--text elevation-0 px-4 ml-2" @click="edit(item)">
|
||||
<v-icon>{{ mdiPencil }}</v-icon>
|
||||
</v-btn>
|
||||
<v-btn
|
||||
v-if="item.editing"
|
||||
fab
|
||||
x-small
|
||||
class="accent white--text elevation-0 px-4 ml-2"
|
||||
@click="renameFile(item)"
|
||||
>
|
||||
<v-btn v-if="item.editing" fab x-small class="accent white--text elevation-0 px-4 ml-2" @click="renameFile(item)">
|
||||
<v-icon>{{ mdiContentSave }}</v-icon>
|
||||
</v-btn>
|
||||
<v-btn
|
||||
v-if="item.editing"
|
||||
fab
|
||||
x-small
|
||||
class="error white--text elevation-0 px-4 ml-2"
|
||||
@click="togleEditing(item)"
|
||||
>
|
||||
<v-btn v-if="item.editing" fab x-small class="error white--text elevation-0 px-4 ml-2" @click="togleEditing(item)">
|
||||
<v-icon>{{ mdiClose }}</v-icon>
|
||||
</v-btn>
|
||||
</div>
|
||||
|
@ -125,11 +64,7 @@
|
|||
import qbit from '@/services/qbit'
|
||||
import { treeify } from '@/helpers'
|
||||
import { FullScreenModal } from '@/mixins'
|
||||
import {
|
||||
mdiClose, mdiContentSave, mdiPencil, mdiFolderOpen,
|
||||
mdiFolder, mdiFile, mdiTrendingUp, mdiPriorityHigh,
|
||||
mdiArrowUp, mdiArrowDown, mdiPriorityLow
|
||||
} from '@mdi/js'
|
||||
import { mdiClose, mdiContentSave, mdiPencil, mdiFolderOpen, mdiFolder, mdiFile, mdiTrendingUp, mdiPriorityHigh, mdiArrowUp, mdiArrowDown, mdiPriorityLow } from '@mdi/js'
|
||||
|
||||
const FILE_PRIORITY_OPTIONS = [
|
||||
{ name: 'max', icon: mdiPriorityHigh, value: 7 },
|
||||
|
@ -193,16 +128,8 @@ export default {
|
|||
methods: {
|
||||
initFiles() {
|
||||
this.getTorrentFiles().then(() => {
|
||||
this.opened = []
|
||||
.concat(
|
||||
...this.treeData
|
||||
.map(file => file.name.split('/'))
|
||||
.filter(f => f.splice(-1, 1))
|
||||
)
|
||||
.filter((f, index, self) => index === self.indexOf(f))
|
||||
this.selected = this.treeData
|
||||
.filter(file => file.priority !== 0)
|
||||
.map(file => file.name)
|
||||
this.opened = [].concat(...this.treeData.map(file => file.name.split('/')).filter(f => f.splice(-1, 1))).filter((f, index, self) => index === self.indexOf(f))
|
||||
this.selected = this.treeData.filter(file => file.priority !== 0).map(file => file.name)
|
||||
})
|
||||
},
|
||||
async getTorrentFiles() {
|
||||
|
@ -255,8 +182,7 @@ export default {
|
|||
this.togleEditing(item)
|
||||
},
|
||||
setFilePrio(fileId, priority) {
|
||||
qbit.setTorrentFilePriority(this.hash, [fileId], priority)
|
||||
.then(() => this.initFiles())
|
||||
qbit.setTorrentFilePriority(this.hash, [fileId], priority).then(() => this.initFiles())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,29 +1,13 @@
|
|||
<template>
|
||||
<v-card flat>
|
||||
<v-data-table
|
||||
v-if="peers"
|
||||
dense
|
||||
:headers="headers"
|
||||
:items="peers"
|
||||
:items-per-page="-1"
|
||||
:hide-default-footer="true"
|
||||
mobile-breakpoint="0"
|
||||
>
|
||||
<v-data-table v-if="peers" dense :headers="headers" :items="peers" :items-per-page="-1" :hide-default-footer="true" mobile-breakpoint="0">
|
||||
<template #item="row">
|
||||
<tr>
|
||||
<td class="ip">
|
||||
<template v-if="row.item.country_code">
|
||||
<img
|
||||
v-if="isWindows"
|
||||
class="country-flag"
|
||||
:title="row.item.country"
|
||||
:alt="codeToFlag(row.item.country_code).char"
|
||||
:src="codeToFlag(row.item.country_code).url"
|
||||
>
|
||||
<img v-if="isWindows" class="country-flag" :title="row.item.country" :alt="codeToFlag(row.item.country_code).char" :src="codeToFlag(row.item.country_code).url" />
|
||||
<template v-else>
|
||||
{{
|
||||
codeToFlag(row.item.country_code).char
|
||||
}}
|
||||
{{ codeToFlag(row.item.country_code).char }}
|
||||
</template>
|
||||
</template>
|
||||
{{ row.item.ip }}
|
||||
|
@ -52,8 +36,9 @@ import { map, merge } from 'lodash'
|
|||
import qbit from '@/services/qbit'
|
||||
import { codeToFlag, isWindows } from '@/helpers'
|
||||
import { FullScreenModal } from '@/mixins'
|
||||
|
||||
export default {
|
||||
name: 'Peers',
|
||||
name: 'DetailPeers',
|
||||
mixins: [FullScreenModal],
|
||||
props: { hash: String, isActive: Boolean },
|
||||
data: () => ({
|
||||
|
@ -79,7 +64,10 @@ export default {
|
|||
{ text: this.$i18n.t('modals.detail.pagePeers.flags'), value: 'flags' },
|
||||
{ text: this.$i18n.t('modals.detail.pagePeers.client'), value: 'client' },
|
||||
{ text: this.$i18n.t('modals.detail.pagePeers.progress'), value: 'progress' },
|
||||
{ text: this.$i18n.t('modals.detail.pagePeers.downloadSpeed'), value: 'dl_speed' },
|
||||
{
|
||||
text: this.$i18n.t('modals.detail.pagePeers.downloadSpeed'),
|
||||
value: 'dl_speed'
|
||||
},
|
||||
{ text: this.$i18n.t('modals.detail.pagePeers.downloaded'), value: 'downloaded' },
|
||||
{ text: this.$i18n.t('modals.detail.pagePeers.upSpeed'), value: 'up_speed' },
|
||||
{ text: this.$i18n.t('modals.detail.pagePeers.uploaded'), value: 'uploaded' },
|
||||
|
@ -97,9 +85,12 @@ export default {
|
|||
},
|
||||
created() {
|
||||
this.getTorrentPeers()
|
||||
this.refreshTimer = setInterval(function () {
|
||||
this.getTorrentPeers()
|
||||
}.bind(this), 2000)
|
||||
this.refreshTimer = setInterval(
|
||||
function () {
|
||||
this.getTorrentPeers()
|
||||
}.bind(this),
|
||||
2000
|
||||
)
|
||||
},
|
||||
beforeDestroy() {
|
||||
clearTimeout(this.refreshTimer)
|
||||
|
@ -112,10 +103,7 @@ export default {
|
|||
return isWindows()
|
||||
},
|
||||
async getTorrentPeers() {
|
||||
const { data } = await qbit.getTorrentPeers(
|
||||
this.hash,
|
||||
this.rid + 1 || undefined
|
||||
)
|
||||
const { data } = await qbit.getTorrentPeers(this.hash, this.rid + 1 || undefined)
|
||||
|
||||
this.rid = data.rid
|
||||
|
||||
|
@ -137,7 +125,7 @@ export default {
|
|||
}
|
||||
</style>
|
||||
<style lang="scss" scoped>
|
||||
@import "~@/styles/colors.scss";
|
||||
@import '@/styles/colors.scss';
|
||||
|
||||
:deep(.v-data-table thead th),
|
||||
:deep(.v-data-table tbody td) {
|
|
@ -110,8 +110,7 @@
|
|||
{{ $t('modals.detail.pageInfo.peers') }}
|
||||
</td>
|
||||
<td>
|
||||
{{ torrent.num_leechs
|
||||
}}<span :class="commonStyle">/{{ torrent.available_peers }}</span>
|
||||
{{ torrent.num_leechs }}<span :class="commonStyle">/{{ torrent.available_peers }}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -119,8 +118,7 @@
|
|||
{{ $t('modals.detail.pageInfo.seeds') }}
|
||||
</td>
|
||||
<td>
|
||||
{{ torrent.num_seeds
|
||||
}}<span :class="commonStyle">/{{ torrent.available_seeds }}</span>
|
||||
{{ torrent.num_seeds }}<span :class="commonStyle">/{{ torrent.available_seeds }}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -136,10 +134,7 @@
|
|||
{{ $t('modals.detail.pageInfo.status') }}
|
||||
</td>
|
||||
<td>
|
||||
<v-chip
|
||||
small
|
||||
:class="`${torrent.state.toLowerCase()} white--text caption`"
|
||||
>
|
||||
<v-chip small :class="`${torrent.state.toLowerCase()} white--text caption`">
|
||||
{{ torrent.state }}
|
||||
</v-chip>
|
||||
</td>
|
||||
|
@ -149,7 +144,7 @@
|
|||
{{ $t('modals.detail.pageInfo.trackers') }}
|
||||
</td>
|
||||
<td>
|
||||
<span v-for="trackersPart in splitString(torrent.tracker)">
|
||||
<span v-for="trackersPart in splitString(torrent.tracker)" :key="trackersPart">
|
||||
<a v-if="stringContainsUrl(trackersPart)" _target="blank" :href="trackersPart">{{ trackersPart }}</a>
|
||||
<span v-else>{{ trackersPart }}</span>
|
||||
</span>
|
||||
|
@ -160,7 +155,7 @@
|
|||
{{ $t('modals.detail.pageInfo.createdBy') }}
|
||||
</td>
|
||||
<td>
|
||||
<span v-for="createdByPart in splitString(createdBy)">
|
||||
<span v-for="createdByPart in splitString(createdBy)" :key="createdByPart">
|
||||
<a v-if="stringContainsUrl(createdByPart)" _target="blank" :href="createdByPart">{{ createdByPart }}</a>
|
||||
<span v-else>{{ createdByPart }}</span>
|
||||
</span>
|
||||
|
@ -171,7 +166,7 @@
|
|||
{{ $t('torrent.comments') | titleCase }}
|
||||
</td>
|
||||
<td>
|
||||
<span v-for="commentPart in splitString(comment)">
|
||||
<span v-for="commentPart in splitString(comment)" :key="commentPart">
|
||||
<a v-if="stringContainsUrl(commentPart)" _target="blank" :href="commentPart">{{ commentPart }}</a>
|
||||
<span v-else>{{ commentPart }}</span>
|
||||
</span>
|
||||
|
@ -222,23 +217,15 @@
|
|||
<td :class="commonStyle">
|
||||
{{ $t('modals.detail.pageInfo.downloadLimit') }}
|
||||
</td>
|
||||
<td v-if="torrent.dl_limit > 0">
|
||||
{{ torrent.dl_limit | getDataValue }} {{ torrent.dl_limit | getDataUnit }}<span>/s </span>
|
||||
</td>
|
||||
<td v-else>
|
||||
∞
|
||||
</td>
|
||||
<td v-if="torrent.dl_limit > 0">{{ torrent.dl_limit | getDataValue }} {{ torrent.dl_limit | getDataUnit }}<span>/s </span></td>
|
||||
<td v-else>∞</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td :class="commonStyle">
|
||||
{{ $t('modals.detail.pageInfo.uploadLimit') }}
|
||||
</td>
|
||||
<td v-if="torrent.up_limit > 0">
|
||||
{{ torrent.up_limit | getDataValue }} {{ torrent.up_limit | getDataUnit }}<span>/s </span>
|
||||
</td>
|
||||
<td v-else>
|
||||
∞
|
||||
</td>
|
||||
<td v-if="torrent.up_limit > 0">{{ torrent.up_limit | getDataValue }} {{ torrent.up_limit | getDataUnit }}<span>/s </span></td>
|
||||
<td v-else>∞</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td :class="commonStyle">
|
||||
|
@ -300,9 +287,11 @@ export default {
|
|||
const status = data[i]
|
||||
let newColor = ''
|
||||
|
||||
if (status === 1) // requested / downloading
|
||||
if (status === 1)
|
||||
// requested / downloading
|
||||
newColor = this.$vuetify.theme.currentTheme['torrent-downloading']
|
||||
else if (status === 2) // already downloaded
|
||||
else if (status === 2)
|
||||
// already downloaded
|
||||
newColor = this.$vuetify.theme.currentTheme['torrent-done']
|
||||
|
||||
if (newColor === color) {
|
||||
|
@ -312,7 +301,7 @@ export default {
|
|||
|
||||
if (color !== '') {
|
||||
ctx.fillStyle = color
|
||||
ctx.fillRect((i - rectWidth), 0, rectWidth, canvas.height)
|
||||
ctx.fillRect(i - rectWidth, 0, rectWidth, canvas.height)
|
||||
}
|
||||
|
||||
rectWidth = 1
|
||||
|
@ -322,7 +311,7 @@ export default {
|
|||
// Fill a rect at the end of the canvas if one is needed
|
||||
if (color !== '') {
|
||||
ctx.fillStyle = color
|
||||
ctx.fillRect((data.length - rectWidth), 0, rectWidth, canvas.height)
|
||||
ctx.fillRect(data.length - rectWidth, 0, rectWidth, canvas.height)
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -3,31 +3,21 @@
|
|||
<v-row dense class="ma-0 pa-0">
|
||||
<v-col cols="12" md="6">
|
||||
<v-subheader>{{ $t('modals.detail.pageTagsAndCategories.subHeaderTag') }}</v-subheader>
|
||||
<v-list-item-group
|
||||
:value="activeTags"
|
||||
active-class="accent--text"
|
||||
multiple
|
||||
>
|
||||
<v-list-item-group :value="activeTags" active-class="accent--text" multiple>
|
||||
<template v-for="(item, index) in availableTags">
|
||||
<v-list-item :key="item.title" @click="addTag(item)">
|
||||
<v-list-item-content>
|
||||
<v-list-item-title v-text="item" />
|
||||
</v-list-item-content>
|
||||
</v-list-item>
|
||||
<v-divider
|
||||
v-if="index < availableTags.length - 1"
|
||||
:key="index"
|
||||
/>
|
||||
<v-divider v-if="index < availableTags.length - 1" :key="index" />
|
||||
</template>
|
||||
</v-list-item-group>
|
||||
</v-col>
|
||||
|
||||
<v-col cols="12" md="6">
|
||||
<v-subheader>{{ $t('modals.detail.pageTagsAndCategories.subHeaderCategories') }}</v-subheader>
|
||||
<v-list-item-group
|
||||
:value="activeCategory"
|
||||
active-class="accent--text"
|
||||
>
|
||||
<v-list-item-group :value="activeCategory" active-class="accent--text">
|
||||
<template v-for="(item, index) in availableCategories">
|
||||
<v-list-item :key="item.title" @click="setCategory(item)">
|
||||
<v-list-item-content>
|
||||
|
@ -35,10 +25,7 @@
|
|||
</v-list-item-content>
|
||||
</v-list-item>
|
||||
|
||||
<v-divider
|
||||
v-if="index < availableCategories.length - 1"
|
||||
:key="index"
|
||||
/>
|
||||
<v-divider v-if="index < availableCategories.length - 1" :key="index" />
|
||||
</template>
|
||||
</v-list-item-group>
|
||||
</v-col>
|
||||
|
@ -81,7 +68,7 @@ export default {
|
|||
if (index !== -1) active.push(index)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
return active
|
||||
}
|
||||
},
|
||||
|
|
|
@ -1,29 +1,12 @@
|
|||
<template>
|
||||
<v-card flat>
|
||||
<v-card-text class="pa-0">
|
||||
<v-data-table
|
||||
v-if="trackers"
|
||||
v-model="selectedTrackers"
|
||||
dense
|
||||
show-select
|
||||
:headers="headers"
|
||||
:items="trackers"
|
||||
:items-per-page="-1"
|
||||
item-key="url"
|
||||
mobile-breakpoint="0"
|
||||
>
|
||||
<v-data-table v-if="trackers" v-model="selectedTrackers" dense show-select :headers="headers" :items="trackers" :items-per-page="-1" item-key="url" mobile-breakpoint="0">
|
||||
<template #body="{ items }">
|
||||
<tbody>
|
||||
<tr v-for="item in items" :key="item.url">
|
||||
<td>
|
||||
<v-checkbox
|
||||
v-if="typeof item.tier === 'number'"
|
||||
v-model="selectedTrackers"
|
||||
:value="item"
|
||||
hide-details
|
||||
class="pa-0 ma-0"
|
||||
color="accent"
|
||||
/>
|
||||
<v-checkbox v-if="typeof item.tier === 'number'" v-model="selectedTrackers" :value="item" hide-details class="pa-0 ma-0" color="accent" />
|
||||
</td>
|
||||
<td>{{ item.tier }}</td>
|
||||
<td>{{ item.url }}</td>
|
||||
|
@ -39,51 +22,22 @@
|
|||
</v-data-table>
|
||||
</v-card-text>
|
||||
<v-card-actions class="justify-center">
|
||||
<v-btn
|
||||
class="error white--text elevation-0 px-4 mx-2"
|
||||
@click="DeleteTrackers"
|
||||
>
|
||||
Delete
|
||||
</v-btn>
|
||||
<v-dialog
|
||||
v-model="trackerDialog"
|
||||
content-class="rounded-form"
|
||||
persistent
|
||||
max-width="290"
|
||||
>
|
||||
<v-btn class="error white--text elevation-0 px-4 mx-2" @click="DeleteTrackers"> Delete </v-btn>
|
||||
<v-dialog v-model="trackerDialog" content-class="rounded-form" persistent max-width="290">
|
||||
<template #activator="{ on, attrs }">
|
||||
<v-btn
|
||||
class="accent white--text elevation-0 px-4 mx-2"
|
||||
v-bind="attrs"
|
||||
v-on="on"
|
||||
>
|
||||
Add
|
||||
</v-btn>
|
||||
<v-btn class="accent white--text elevation-0 px-4 mx-2" v-bind="attrs" v-on="on"> Add </v-btn>
|
||||
</template>
|
||||
<v-card>
|
||||
<v-card-title class="justify-center">
|
||||
<h3>Add Trackers</h3>
|
||||
</v-card-title>
|
||||
<v-card-text>
|
||||
<v-textarea
|
||||
v-model="newTrackers"
|
||||
label="Trackers"
|
||||
rows="1"
|
||||
required
|
||||
autofocus
|
||||
auto-grow
|
||||
clearable
|
||||
hint="One link per line"
|
||||
/>
|
||||
<v-textarea v-model="newTrackers" label="Trackers" rows="1" required autofocus auto-grow clearable hint="One link per line" />
|
||||
</v-card-text>
|
||||
<v-card-actions>
|
||||
<v-spacer />
|
||||
<v-btn color="red darken-1" text @click="closeAddTrackers">
|
||||
Cancel
|
||||
</v-btn>
|
||||
<v-btn color="green darken-1" text @click="addTrackers">
|
||||
Add
|
||||
</v-btn>
|
||||
<v-btn color="red darken-1" text @click="closeAddTrackers"> Cancel </v-btn>
|
||||
<v-btn color="green darken-1" text @click="addTrackers"> Add </v-btn>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-dialog>
|
||||
|
@ -98,13 +52,7 @@ export default {
|
|||
name: 'Trackers',
|
||||
filters: {
|
||||
formatTrackerStatus(status) {
|
||||
const map = [
|
||||
'Disabled',
|
||||
'Not contacted',
|
||||
'Working',
|
||||
'Updating',
|
||||
'Not working'
|
||||
]
|
||||
const map = ['Disabled', 'Not contacted', 'Working', 'Updating', 'Not working']
|
||||
|
||||
return map[status]
|
||||
},
|
||||
|
@ -126,7 +74,10 @@ export default {
|
|||
}),
|
||||
computed: {
|
||||
trackers() {
|
||||
return this.tempTrackers.map(x => ({ ...x, isSelectable: typeof x.tier === 'number' }))
|
||||
return this.tempTrackers.map(x => ({
|
||||
...x,
|
||||
isSelectable: typeof x.tier === 'number'
|
||||
}))
|
||||
},
|
||||
headers() {
|
||||
return [
|
||||
|
@ -135,8 +86,14 @@ export default {
|
|||
{ text: this.$i18n.t('modals.detail.pageTrackers.status'), value: 'status' },
|
||||
{ text: this.$i18n.t('modals.detail.pageTrackers.peers'), value: 'num_peers' },
|
||||
{ text: this.$i18n.t('modals.detail.pageTrackers.seeds'), value: 'num_seeds' },
|
||||
{ text: this.$i18n.t('modals.detail.pageTrackers.leeches'), value: 'num_leeches' },
|
||||
{ text: this.$i18n.t('modals.detail.pageTrackers.downloaded'), value: 'num_downloaded' },
|
||||
{
|
||||
text: this.$i18n.t('modals.detail.pageTrackers.leeches'),
|
||||
value: 'num_leeches'
|
||||
},
|
||||
{
|
||||
text: this.$i18n.t('modals.detail.pageTrackers.downloaded'),
|
||||
value: 'num_downloaded'
|
||||
},
|
||||
{ text: this.$i18n.t('modals.detail.pageTrackers.message'), value: 'msg' }
|
||||
]
|
||||
}
|
||||
|
@ -169,8 +126,11 @@ export default {
|
|||
this.trackerDialog = false
|
||||
},
|
||||
async DeleteTrackers() {
|
||||
if (!this.selectedTrackers.length) return
|
||||
qbit.removeTorrentTrackers(this.hash, this.selectedTrackers.map(t => t.url))
|
||||
if (!this.selectedTrackers.length) return
|
||||
qbit.removeTorrentTrackers(
|
||||
this.hash,
|
||||
this.selectedTrackers.map(t => t.url)
|
||||
)
|
||||
this.selectedTrackers = []
|
||||
await this.getTorrentTrackers()
|
||||
}
|
||||
|
@ -179,7 +139,7 @@ export default {
|
|||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import "~@/styles/colors.scss";
|
||||
@import '@/styles/colors.scss';
|
||||
|
||||
:deep(.v-data-table thead th),
|
||||
:deep(.v-data-table tbody td) {
|
||||
|
@ -200,4 +160,3 @@ export default {
|
|||
white-space: nowrap;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import Content from './Content'
|
||||
import Info from './Info'
|
||||
import Peers from './Peers'
|
||||
import Trackers from './Trackers'
|
||||
import TagsAndCategories from './TorrentTagsAndCategories'
|
||||
import Content from './Content.vue'
|
||||
import Info from './Info.vue'
|
||||
import Peers from './DetailPeers.vue'
|
||||
import Trackers from './Trackers.vue'
|
||||
import TagsAndCategories from './TorrentTagsAndCategories.vue'
|
||||
|
||||
export { Content, Info, Peers, Trackers, TagsAndCategories }
|
||||
|
|
|
@ -108,11 +108,11 @@ export function getDataValue(a, b) {
|
|||
|
||||
Vue.filter('getDataValue', getDataValue)
|
||||
|
||||
|
||||
export function titleCase(str) {
|
||||
if (!str) return
|
||||
|
||||
return str.split(' ')
|
||||
return str
|
||||
.split(' ')
|
||||
.map(w => w[0].toUpperCase() + w.substr(1).toLowerCase())
|
||||
.join(' ')
|
||||
}
|
||||
|
@ -130,4 +130,4 @@ export function limitToValue(value) {
|
|||
return value
|
||||
}
|
||||
|
||||
Vue.filter('limitToValue', limitToValue)
|
||||
Vue.filter('limitToValue', limitToValue)
|
||||
|
|
|
@ -5,15 +5,11 @@ export function formatBytes(a, b) {
|
|||
const d = b || 2
|
||||
const e = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']
|
||||
const f = Math.floor(Math.log(a) / Math.log(c))
|
||||
|
||||
|
||||
return `${parseFloat((a / Math.pow(c, f)).toFixed(d))} ${e[f]}`
|
||||
}
|
||||
|
||||
import {
|
||||
mdiLanguageHtml5, mdiFileDocumentOutline,
|
||||
mdiNodejs, mdiFilePdf, mdiFileExcel,
|
||||
mdiCodeJson, mdiFileImage, mdiMovie,
|
||||
mdiLanguageMarkdown, mdiFile } from '@mdi/js'
|
||||
import { mdiLanguageHtml5, mdiFileDocumentOutline, mdiNodejs, mdiFilePdf, mdiFileExcel, mdiCodeJson, mdiFileImage, mdiMovie, mdiLanguageMarkdown, mdiFile } from '@mdi/js'
|
||||
|
||||
export function getIconForFileType(type) {
|
||||
const types = {
|
||||
|
@ -43,12 +39,10 @@ export function codeToFlag(code) {
|
|||
const magicNumber = 0x1f1a5
|
||||
|
||||
// eslint-disable-next-line
|
||||
code = code.toUpperCase()
|
||||
code = code.toUpperCase()
|
||||
const codePoints = [...code].map(c => magicNumber + c.charCodeAt(0))
|
||||
const char = String.fromCodePoint(...codePoints)
|
||||
const url =
|
||||
'https://cdn.jsdelivr.net/npm/twemoji/2/svg/' +
|
||||
`${codePoints[0].toString(16)}-${codePoints[1].toString(16)}.svg`
|
||||
const url = 'https://cdn.jsdelivr.net/npm/twemoji/2/svg/' + `${codePoints[0].toString(16)}-${codePoints[1].toString(16)}.svg`
|
||||
|
||||
return {
|
||||
char,
|
||||
|
@ -78,10 +72,10 @@ export function treeify(paths) {
|
|||
if (el.children.length !== 0) {
|
||||
const folder = createFolder(el.name, el.children)
|
||||
folder.children = folder.children.map(el => parseFolder(el))
|
||||
|
||||
|
||||
return folder
|
||||
}
|
||||
|
||||
|
||||
return el
|
||||
}
|
||||
|
||||
|
@ -112,17 +106,16 @@ function createFolder(name, children) {
|
|||
|
||||
export function getHostName(url) {
|
||||
const match = url.match(/:\/\/(www[0-9]?\.)?(.[^/:]+)/i)
|
||||
if (match != null &&
|
||||
match.length > 2 &&
|
||||
typeof match[2] === 'string' &&
|
||||
match[2].length > 0) {
|
||||
if (match != null && match.length > 2 && typeof match[2] === 'string' && match[2].length > 0) {
|
||||
return match[2]
|
||||
} else {
|
||||
return ''
|
||||
}
|
||||
}
|
||||
|
||||
const urlRegExp = new RegExp(/(https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s]{2,}|www\.[a-zA-Z0-9]+\.[^\s]{2,})/gi)
|
||||
const urlRegExp = new RegExp(
|
||||
/(https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s]{2,}|www\.[a-zA-Z0-9]+\.[^\s]{2,})/gi
|
||||
)
|
||||
|
||||
export function splitByUrl(string) {
|
||||
const urls = string.match(urlRegExp)
|
||||
|
@ -154,4 +147,20 @@ export function splitByUrl(string) {
|
|||
|
||||
export function stringContainsUrl(string) {
|
||||
return urlRegExp.test(string)
|
||||
}
|
||||
}
|
||||
|
||||
export function getVersion() {
|
||||
if (process.env.NODE_ENV === 'production') {
|
||||
return 'import.meta.env.VITE_PACKAGE_VERSION'
|
||||
}
|
||||
|
||||
return import.meta.env['VITE_PACKAGE_VERSION']
|
||||
}
|
||||
|
||||
export function getBaseURL() {
|
||||
if (process.env.NODE_ENV === 'production') {
|
||||
return 'import.meta.env.BASE_URL'
|
||||
}
|
||||
|
||||
return import.meta.env['BASE_URL']
|
||||
}
|
||||
|
|
|
@ -120,7 +120,7 @@ const locale = {
|
|||
speedGraph: 'Afficher le graphique de vitesse',
|
||||
sessionStats: 'Afficher les statistiques de la session',
|
||||
allTimeStats: 'Afficher les statistiques de tous les temps',
|
||||
freeSpace: 'Afficher l\'espace libre',
|
||||
freeSpace: "Afficher l'espace libre",
|
||||
trackerFilter: 'Afficher le filtre de Tracker',
|
||||
rightDrawer: 'Menu à droite',
|
||||
language: 'Langue:',
|
||||
|
@ -135,15 +135,15 @@ const locale = {
|
|||
}
|
||||
},
|
||||
pageDownloads: {
|
||||
subHeaderWhenAddTorrent: 'Lors de l\'ajout d\'un torrent',
|
||||
subHeaderWhenAddTorrent: "Lors de l'ajout d'un torrent",
|
||||
whenAddTorrent: {
|
||||
createSubFolder: 'Créer un sous-dossier pour les torrents avec plusieurs fichiers',
|
||||
donotAutoStart: 'Ne pas lancer le téléchargement automatiquement'
|
||||
},
|
||||
subHeaderPublicSettings: 'Paramètres publics',
|
||||
publicSettings: {
|
||||
preAllocateDisk: 'Pré-allouer de l\'espace disque pour tous les fichiers',
|
||||
appendQBExtension: 'Ajouter l\'extension .!qB aux fichiers incomplets'
|
||||
preAllocateDisk: "Pré-allouer de l'espace disque pour tous les fichiers",
|
||||
appendQBExtension: "Ajouter l'extension .!qB aux fichiers incomplets"
|
||||
},
|
||||
subHeaderSaveManagement: 'Saving Management',
|
||||
saveManagement: {
|
||||
|
@ -152,12 +152,12 @@ const locale = {
|
|||
defaultSavePath: 'Chemin de sauvegarde par défaut',
|
||||
keepIncompleteIn: 'Gardez les torrents incomplets dans :',
|
||||
autoEnabled: 'Autorun activé:',
|
||||
autorunProgram: 'Programme d\'exécution automatique',
|
||||
autorunProgram: "Programme d'exécution automatique",
|
||||
supportParamTitle: 'Paramètres pris en charge (sensibles à la casse):',
|
||||
supportParamN: '%N: Nom du torrent ',
|
||||
supportParamL: '%L: Catégorie',
|
||||
supportParamG: '%G: Tags (séparés par une virgule)',
|
||||
supportParamF: '%F: Chemin d\'accès au contenu (identique au chemin d\'accès racine pour les torrents multi-fichiers)',
|
||||
supportParamF: "%F: Chemin d'accès au contenu (identique au chemin d'accès racine pour les torrents multi-fichiers)",
|
||||
supportParamR: '%R: Chemin racine (chemin du premier sous-répertoire de torrent)',
|
||||
supportParamD: '%D: Chemin de sauvegarde',
|
||||
supportParamC: '%C: Nombre de fichiers',
|
||||
|
@ -176,17 +176,17 @@ const locale = {
|
|||
pageBittorrent: {
|
||||
subHeaderPrivacy: 'Vie privée',
|
||||
enableDHT: 'Permettre au DHT (réseau décentralisé) de trouver plus de peers.',
|
||||
enablePeX: 'Activez l\'échange de peers (PeX) pour trouver d\'autres peers.',
|
||||
enablePeX: "Activez l'échange de peers (PeX) pour trouver d'autres peers.",
|
||||
enableLPD: 'Activez la découverte de peers locaux pour trouver plus de peers.',
|
||||
enableAnonymous: 'Activer le mode anonyme',
|
||||
torrentQueue: 'Mise en file d\'attente des torrents',
|
||||
torrentQueue: "Mise en file d'attente des torrents",
|
||||
maxActiveDownload: 'Téléchargements actifs maximums',
|
||||
maxActiveUpload: 'Chargements actifs maximums',
|
||||
maxActiveTorrent: 'Maximum de torrents actifs',
|
||||
excludeSlowTorrent: 'Ne pas compter les torrents lents dans ces limites.',
|
||||
downloadRateLimit: 'Seuil du taux de téléchargement KiB/s',
|
||||
uploadRateLimit: 'Seuil du débit de chargement KiB/s',
|
||||
torrentInactivityTimer: 'Délai d\'inactivité du torrent',
|
||||
torrentInactivityTimer: "Délai d'inactivité du torrent",
|
||||
subHeaderSeedLimits: 'Seed Limites',
|
||||
whenRatioReaches: 'Lorsque le ratio atteint',
|
||||
whenSeedingTimeReaches: 'Lorsque le temps de seeding atteint'
|
||||
|
@ -198,13 +198,13 @@ const locale = {
|
|||
ipAddress: 'Adresse IP:',
|
||||
port: 'Port',
|
||||
authentication: 'Authentification',
|
||||
username: 'Nom d\'utilisateur :',
|
||||
username: "Nom d'utilisateur :",
|
||||
password: 'mot de passe',
|
||||
maxAttempts: 'Tentatives maximales',
|
||||
banDuration: 'Durée de ban (secondes)',
|
||||
sessionTimeout: 'Délai d\'expiration de la session (secondes)',
|
||||
bypassAuthenticationForClientsOnLocalhost: 'Contourner l\'authentification pour les clients sur localhost',
|
||||
bypassAuthenticationForClientsInWhitelisted: 'Contournement de l\'authentification pour les clients dans les sous-réseaux IP de la liste blanche.',
|
||||
sessionTimeout: "Délai d'expiration de la session (secondes)",
|
||||
bypassAuthenticationForClientsOnLocalhost: "Contourner l'authentification pour les clients sur localhost",
|
||||
bypassAuthenticationForClientsInWhitelisted: "Contournement de l'authentification pour les clients dans les sous-réseaux IP de la liste blanche.",
|
||||
whiteListExample: 'Exemple: 172.17.32.0/24, fdff:ffff:c8::/40'
|
||||
},
|
||||
pageTagsAndCategories: {
|
||||
|
@ -224,11 +224,11 @@ const locale = {
|
|||
},
|
||||
newCategory: {
|
||||
categoryName: 'Nom de la catégorie',
|
||||
Path: 'Chemin d\'accès',
|
||||
Path: "Chemin d'accès",
|
||||
tipOnNoName: 'Le nom de la catégorie est obligatoire',
|
||||
tipOnNameTooLong: 'Le nom de la catégorie doit comporter moins de 15 caractères',
|
||||
tipOnNoPath: 'Le chemin d\'accès est requis',
|
||||
TipOnPathTooLong: 'Le chemin d\'accès doit comporter moins de 40 caractères'
|
||||
tipOnNoPath: "Le chemin d'accès est requis",
|
||||
TipOnPathTooLong: "Le chemin d'accès doit comporter moins de 40 caractères"
|
||||
},
|
||||
newTag: {
|
||||
createNewTag: 'Créer un nouveau tag',
|
||||
|
@ -247,7 +247,7 @@ const locale = {
|
|||
hash: 'hash',
|
||||
ratio: 'Ratio',
|
||||
downloadSpeed: 'Vitesse de DL',
|
||||
uploadSpeed: 'Vitesse d\'UP',
|
||||
uploadSpeed: "Vitesse d'UP",
|
||||
eta: 'ETA',
|
||||
peers: 'Peers',
|
||||
seeds: 'Seeds',
|
||||
|
@ -260,7 +260,7 @@ const locale = {
|
|||
shareRatioLimit: 'Share Ratio Limit',
|
||||
shareTimeLimit: 'Limite de temps de partage (minutes)',
|
||||
downloadLimit: 'Limite de téléchargement',
|
||||
uploadLimit: 'Limite d\'envoi'
|
||||
uploadLimit: "Limite d'envoi"
|
||||
},
|
||||
pagePeers: {
|
||||
ip: 'IP',
|
||||
|
@ -270,7 +270,7 @@ const locale = {
|
|||
progress: 'Progrès',
|
||||
downloadSpeed: 'Vitesse de DL',
|
||||
downloaded: 'Téléchargé',
|
||||
upSpeed: 'Vitesse d\'UP',
|
||||
upSpeed: "Vitesse d'UP",
|
||||
uploaded: 'Uploaded',
|
||||
relevance: 'Pertinence',
|
||||
files: 'Fichiers'
|
||||
|
@ -302,7 +302,7 @@ const locale = {
|
|||
oneOrMoreFilesInvalidTorrent: 'Un ou plusieurs fichiers ne sont pas des torrents valides.'
|
||||
},
|
||||
changeLocation: {
|
||||
title: 'Changement d\'emplacement',
|
||||
title: "Changement d'emplacement",
|
||||
torrentName: 'Nom du torrent'
|
||||
},
|
||||
rename: {
|
||||
|
@ -329,7 +329,7 @@ const locale = {
|
|||
addedOn: 'Ajouté le',
|
||||
downloadSpeed: 'Vitesse de téléchargement',
|
||||
timeActive: 'Temps actif',
|
||||
uploadSpeed: 'Vitesse d\'upload'
|
||||
uploadSpeed: "Vitesse d'upload"
|
||||
}
|
||||
},
|
||||
speedLimit: {
|
||||
|
|
|
@ -1,48 +0,0 @@
|
|||
import Vue from 'vue'
|
||||
import VueI18n from 'vue-i18n'
|
||||
import messages from '@/lang/en'
|
||||
import axios from 'axios'
|
||||
|
||||
Vue.use(VueI18n)
|
||||
|
||||
export const i18n = new VueI18n({
|
||||
locale: 'en', // set locale
|
||||
fallbackLocale: 'en',
|
||||
messages: {
|
||||
en: messages
|
||||
}
|
||||
})
|
||||
|
||||
const loadedLanguages = ['en'] // our default language that is preloaded
|
||||
|
||||
export const availableLanguages = ['en', 'es', 'fr', 'id', 'it', 'ja', 'nl', 'pt-br', 'ru', 'ua', 'vi', 'zh-hans', 'zh-hant']
|
||||
|
||||
function setI18nLanguage(lang) {
|
||||
i18n.locale = lang
|
||||
axios.defaults.headers.common['Accept-Language'] = lang
|
||||
document.querySelector('html').setAttribute('lang', lang)
|
||||
|
||||
return lang
|
||||
}
|
||||
|
||||
export function loadLanguageAsync(lang) {
|
||||
// If the same language
|
||||
if (i18n.locale === lang) {
|
||||
return Promise.resolve(setI18nLanguage(lang))
|
||||
}
|
||||
|
||||
// If the language was already loaded
|
||||
if (loadedLanguages.includes(lang)) {
|
||||
return Promise.resolve(setI18nLanguage(lang))
|
||||
}
|
||||
|
||||
// If the language hasn't been loaded yet
|
||||
return import(/* webpackChunkName: "lang-[request]" */ `./${lang}.js`).then(
|
||||
messages => {
|
||||
i18n.setLocaleMessage(lang, messages.default)
|
||||
loadedLanguages.push(lang)
|
||||
|
||||
return setI18nLanguage(lang)
|
||||
}
|
||||
)
|
||||
}
|
15
src/lang/index.ts
Normal file
15
src/lang/index.ts
Normal file
|
@ -0,0 +1,15 @@
|
|||
import en from './en'
|
||||
import es from './es'
|
||||
import fr from './fr'
|
||||
import id from './id'
|
||||
import it from './it'
|
||||
import ja from './ja'
|
||||
import nl from './nl'
|
||||
import pt_br from './pt-br'
|
||||
import ru from './ru'
|
||||
import ua from './ua'
|
||||
import vi from './vi'
|
||||
import zh_hans from './zh-hans'
|
||||
import zh_hant from './zh-hant'
|
||||
|
||||
export const messages = { en, es, fr, id, it, ja, nl, pt_br, ru, ua, vi, zh_hans, zh_hant }
|
|
@ -8,7 +8,6 @@ const locale = {
|
|||
cancel: 'annuleren',
|
||||
confirm: 'bevestig',
|
||||
|
||||
|
||||
/** Torrent */
|
||||
torrent: {
|
||||
title: 'titel',
|
||||
|
|
|
@ -37,7 +37,7 @@ const locale = {
|
|||
seeds: 'Сіди',
|
||||
tags: 'Теги',
|
||||
share: 'Поділитися',
|
||||
name: 'Ім\'я',
|
||||
name: "Ім'я",
|
||||
hash: 'Хеш',
|
||||
magnet: 'Магнет',
|
||||
|
||||
|
@ -54,7 +54,7 @@ const locale = {
|
|||
created: 'Створено',
|
||||
comments: 'примітки',
|
||||
uploadedSession: 'Завантажено за сесію',
|
||||
torrentTitle: 'Ім\'я'
|
||||
torrentTitle: "Ім'я"
|
||||
},
|
||||
/** Navbar */
|
||||
navbar: {
|
||||
|
@ -92,7 +92,7 @@ const locale = {
|
|||
btnStartSearch: 'Пошук',
|
||||
btnStopSearch: 'Стоп',
|
||||
columnTitle: {
|
||||
name: 'Ім\'я',
|
||||
name: "Ім'я",
|
||||
size: 'Розмір',
|
||||
seeds: 'Сіди',
|
||||
peers: 'Піри',
|
||||
|
@ -104,7 +104,7 @@ const locale = {
|
|||
tabName: {
|
||||
VueTorrent: 'Vuetorrent',
|
||||
downloads: 'Завантаження',
|
||||
connection: 'Зв\'язок',
|
||||
connection: "Зв'язок",
|
||||
bittorrent: 'Bittorrent',
|
||||
webUI: 'Bеб-інтерфейс',
|
||||
tagsAndCategories: 'Теги та категорії'
|
||||
|
@ -147,7 +147,6 @@ const locale = {
|
|||
},
|
||||
subHeaderSaveManagement: 'Управління збереженням',
|
||||
saveManagement: {
|
||||
|
||||
autoManagement: 'Автоматичне керування торрентами',
|
||||
relocate: 'Переміщення торенту при зміні категорії',
|
||||
defaultSavePath: 'Шлях збереження за замовчуванням',
|
||||
|
@ -169,8 +168,8 @@ const locale = {
|
|||
},
|
||||
pageConnection: {
|
||||
subHeader: 'Обмеження підключення',
|
||||
globalMaxConnection: 'Глобальна максимальна кількість з\'єднань',
|
||||
perTorrentMaxConnection: 'Максимальна кількість з\'єднань на торрент',
|
||||
globalMaxConnection: "Глобальна максимальна кількість з'єднань",
|
||||
perTorrentMaxConnection: "Максимальна кількість з'єднань на торрент",
|
||||
globalMaxUploadSlots: 'Глобальна максимальна кількість слотів для завантаження',
|
||||
perTorrentMaxUploadSlots: 'Максимальна кількість слотів для завантаження на торрент'
|
||||
},
|
||||
|
@ -199,7 +198,7 @@ const locale = {
|
|||
ipAddress: 'IP-адреса:',
|
||||
port: 'Порт',
|
||||
authentication: 'Аутентифікація',
|
||||
username: 'Ім\'я користувача',
|
||||
username: "Ім'я користувача",
|
||||
password: 'пароль',
|
||||
maxAttempts: 'Максимальна кількість спроб',
|
||||
banDuration: 'Тривалість бану (секунди)',
|
||||
|
@ -318,7 +317,7 @@ const locale = {
|
|||
completed: 'Завершено',
|
||||
downloaded: 'Завантажено',
|
||||
ETA: 'ОЧЗ',
|
||||
name: 'Ім\'я',
|
||||
name: "Ім'я",
|
||||
peers: 'Піри',
|
||||
priority: 'Пріоритет',
|
||||
progress: 'Прогрес',
|
||||
|
|
|
@ -39,7 +39,7 @@ const locale = {
|
|||
share: '分享',
|
||||
name: '名稱',
|
||||
hash: '雜湊值',
|
||||
magnet: '磁力連結',
|
||||
magnet: '磁力連結',
|
||||
feed: '訂閱源',
|
||||
rule: '規則',
|
||||
then: '然後',
|
||||
|
@ -212,7 +212,7 @@ const locale = {
|
|||
maxRatioPauseTorrent: '暫停種子',
|
||||
maxRatioRemoveTorrent: '移除種子',
|
||||
maxRatioRemoveTorrentAndFiles: '移除種子與其檔案',
|
||||
maxRatioTorrentSuperseeding: '為種子啟用超級做種'
|
||||
maxRatioTorrentSuperseeding: '為種子啟用超級做種'
|
||||
},
|
||||
pageRss: {
|
||||
tabName: {
|
||||
|
@ -410,7 +410,7 @@ const locale = {
|
|||
forceReannounce: '強制重新發佈',
|
||||
sequentialDownload: '順序下載',
|
||||
firstLastPriority: '首末優先',
|
||||
automaticTorrentManagement: '自動種子管理 (ATM)'
|
||||
automaticTorrentManagement: '自動種子管理 (ATM)'
|
||||
},
|
||||
prio: {
|
||||
prio: '設置優先級',
|
||||
|
|
33
src/main.js
33
src/main.js
|
@ -1,37 +1,18 @@
|
|||
import Vue from 'vue'
|
||||
import App from '@/App.vue'
|
||||
import '@/registerServiceWorker'
|
||||
import router from '@/router'
|
||||
import store from '@/store'
|
||||
import vuetify from './plugins/vuetify'
|
||||
import 'typeface-roboto'
|
||||
import 'typeface-roboto-mono'
|
||||
import { i18n } from './lang/index'
|
||||
|
||||
/* eslint-disable no-unused-vars */
|
||||
import filters from '@/filters'
|
||||
import styles from '@/styles/styles.scss'
|
||||
/* eslint-enable no-unused-vars */
|
||||
import '@/filters.js'
|
||||
import '@/styles/styles.scss'
|
||||
|
||||
import Toast, { POSITION } from 'vue-toastification'
|
||||
import 'vue-toastification/dist/index.css'
|
||||
Vue.use(Toast, {
|
||||
maxToasts: 5,
|
||||
timeout: 2000,
|
||||
position: POSITION.BOTTOM_RIGHT
|
||||
})
|
||||
|
||||
import './registerServiceWorker'
|
||||
|
||||
Vue.config.productionTip = false
|
||||
|
||||
// register modals
|
||||
const files = require.context('@/components/Modals', true, /\.vue$/i)
|
||||
files
|
||||
.keys()
|
||||
.map(key =>
|
||||
Vue.component(key.split('/').pop().split('.')[0], files(key).default)
|
||||
)
|
||||
import vuetify from './plugins/vuetify'
|
||||
import i18n from './plugins/i18n'
|
||||
import { toast, config } from './plugins/toast'
|
||||
Vue.use(toast, config)
|
||||
import './plugins/components'
|
||||
|
||||
new Vue({
|
||||
router,
|
||||
|
|
|
@ -14,21 +14,23 @@ export default {
|
|||
},
|
||||
set(val) {
|
||||
this.hndlDialog = val
|
||||
if (!val)
|
||||
this.deleteModal()
|
||||
if (!val) this.deleteModal()
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
methods: {
|
||||
deleteModal() {
|
||||
//this.hndlDialog = false
|
||||
setTimeout(function () {
|
||||
this.$store.commit('DELETE_MODAL', this.guid)
|
||||
}.bind(this), 300)
|
||||
setTimeout(
|
||||
function () {
|
||||
this.$store.commit('DELETE_MODAL', this.guid)
|
||||
}.bind(this),
|
||||
300
|
||||
)
|
||||
}
|
||||
},
|
||||
beforeDestroy() {
|
||||
this.deleteModal()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,11 +6,4 @@ import General from './General'
|
|||
import TorrentSelect from './TorrentSelect'
|
||||
import TorrentDashboardItem from './TorrentDashboardItem'
|
||||
|
||||
export { FullScreenModal,
|
||||
Modal,
|
||||
SettingsTab,
|
||||
Tab,
|
||||
General,
|
||||
TorrentSelect,
|
||||
TorrentDashboardItem
|
||||
}
|
||||
export { FullScreenModal, Modal, SettingsTab, Tab, General, TorrentSelect, TorrentDashboardItem }
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue