mirror of
https://github.com/VueTorrent/VueTorrent.git
synced 2025-03-14 12:10:18 +03:00
perf: include all settings (#793)
This commit is contained in:
parent
30beddaab4
commit
3e7f35107b
45 changed files with 3002 additions and 1315 deletions
|
@ -34,7 +34,7 @@ import Modal from '@/mixins/Modal'
|
|||
import { mdiFile } from '@mdi/js'
|
||||
import { FullScreenModal } from '@/mixins'
|
||||
import qbit from '@/services/qbit'
|
||||
import {defineComponent} from "vue";
|
||||
import { defineComponent } from 'vue'
|
||||
|
||||
export default defineComponent({
|
||||
name: 'RenameModal',
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
import qbit from '@/services/qbit'
|
||||
import { Modal } from '@/mixins'
|
||||
import { mdiCancel, mdiTagPlus, mdiPencil } from '@mdi/js'
|
||||
import Vue, {defineComponent} from 'vue'
|
||||
import { defineComponent } from 'vue'
|
||||
|
||||
export default defineComponent({
|
||||
name: 'FeedForm',
|
||||
|
@ -77,7 +77,7 @@ export default defineComponent({
|
|||
},
|
||||
edit() {
|
||||
qbit.editFeed(this.initialFeed.name, this.feed.name)
|
||||
Vue.$toast.success(this.$t('toast.feedSaved'))
|
||||
this.$toast.success(this.$t('toast.feedSaved'))
|
||||
this.cancel()
|
||||
},
|
||||
handleKeyboardShortcut(e: KeyboardEvent) {
|
||||
|
|
553
src/components/Settings/Tabs/Advanced.vue
Normal file
553
src/components/Settings/Tabs/Advanced.vue
Normal file
|
@ -0,0 +1,553 @@
|
|||
<template>
|
||||
<v-card flat>
|
||||
<v-subheader>
|
||||
{{ $t('modals.settings.advanced.qbittorrent.subheader') }}
|
||||
(<a href="https://github.com/qbittorrent/qBittorrent/wiki/Explanation-of-Options-in-qBittorrent#Advanced" target="_blank">{{ $t('modals.settings.advanced.openDoc') }}</a
|
||||
>)
|
||||
</v-subheader>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.memory_working_set_limit"
|
||||
type="number"
|
||||
dense
|
||||
hide-details
|
||||
outlined
|
||||
class="my-5"
|
||||
:hint="$t('modals.settings.advanced.qbittorrent.allocatedRamHint')"
|
||||
:label="$t('modals.settings.advanced.qbittorrent.allocatedRam')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-select
|
||||
v-model="settings.current_network_interface"
|
||||
class="mb-5"
|
||||
height="1"
|
||||
flat
|
||||
dense
|
||||
hide-details
|
||||
outlined
|
||||
:items="networkInterfaceOptions"
|
||||
:label="$t('modals.settings.advanced.qbittorrent.networkInterfaces.label')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-select
|
||||
v-model="settings.current_interface_address"
|
||||
class="mb-5"
|
||||
height="1"
|
||||
flat
|
||||
dense
|
||||
hide-details
|
||||
outlined
|
||||
:items="ipAddressesOptions"
|
||||
:label="$t('modals.settings.advanced.qbittorrent.ipAddress.label')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.save_resume_data_interval"
|
||||
type="number"
|
||||
dense
|
||||
outlined
|
||||
:hint="$t('modals.settings.advanced.qbittorrent.saveIntervalHint')"
|
||||
:label="$t('modals.settings.advanced.qbittorrent.saveInterval')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.recheck_completed_torrents" hide-details class="ma-0 pa-0" :label="$t('modals.settings.advanced.qbittorrent.recheckOnCompletion')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.refresh_interval"
|
||||
type="number"
|
||||
dense
|
||||
outlined
|
||||
:hint="$t('modals.settings.advanced.qbittorrent.refreshIntervalHint')"
|
||||
:label="$t('modals.settings.advanced.qbittorrent.refreshInterval')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.resolve_peer_countries" hide-details class="ma-0 pa-0" :label="$t('modals.settings.advanced.qbittorrent.resolveCountries')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.reannounce_when_address_changed" hide-details class="ma-0 pa-0" :label="$t('modals.settings.advanced.qbittorrent.reannounceOnIpPortChanged')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.enable_embedded_tracker" hide-details class="ma-0 pa-0" :label="$t('modals.settings.advanced.qbittorrent.enableEmbeddedTracker')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.embedded_tracker_port"
|
||||
type="number"
|
||||
dense
|
||||
hide-details
|
||||
outlined
|
||||
class="my-5"
|
||||
:label="$t('modals.settings.advanced.qbittorrent.embeddedTrackerPort')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox
|
||||
v-model="settings.embedded_tracker_port_forwarding"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.advanced.qbittorrent.embeddedTrackerPortForwarding')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-divider />
|
||||
<v-subheader>
|
||||
{{ $t('modals.settings.advanced.libtorrent.subheader') }}
|
||||
(<a href="https://www.libtorrent.org/reference-Settings.html" target="_blank">{{ $t('modals.settings.advanced.openDoc') }}</a
|
||||
>)
|
||||
</v-subheader>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field v-model="settings.async_io_threads" type="number" dense hide-details outlined class="my-5" :label="$t('modals.settings.advanced.libtorrent.asyncIoThreads')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field v-model="settings.hashing_threads" type="number" dense hide-details outlined class="my-5" :label="$t('modals.settings.advanced.libtorrent.hashingThreads')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field v-model="settings.file_pool_size" type="number" dense hide-details outlined class="my-5" :label="$t('modals.settings.advanced.libtorrent.filePoolSize')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.checking_memory_use"
|
||||
type="number"
|
||||
dense
|
||||
outlined
|
||||
:hint="$t('modals.settings.advanced.libtorrent.outstandingMemoryHint')"
|
||||
:label="$t('modals.settings.advanced.libtorrent.outstandingMemory')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.disk_cache"
|
||||
type="number"
|
||||
dense
|
||||
outlined
|
||||
:hint="$t('modals.settings.advanced.libtorrent.diskCacheHint')"
|
||||
:label="$t('modals.settings.advanced.libtorrent.diskCache')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.disk_cache_ttl"
|
||||
type="number"
|
||||
dense
|
||||
outlined
|
||||
:hint="$t('modals.settings.advanced.libtorrent.diskCacheExpiryHint')"
|
||||
:label="$t('modals.settings.advanced.libtorrent.diskCacheExpiry')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.disk_queue_size"
|
||||
type="number"
|
||||
dense
|
||||
outlined
|
||||
:hint="$t('modals.settings.advanced.libtorrent.diskQueueSizeHint')"
|
||||
:label="$t('modals.settings.advanced.libtorrent.diskQueueSize')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-select
|
||||
v-model="settings.disk_io_type"
|
||||
class="mb-5"
|
||||
height="1"
|
||||
flat
|
||||
dense
|
||||
hide-details
|
||||
outlined
|
||||
:items="diskIoTypeOptions"
|
||||
:label="$t('modals.settings.advanced.libtorrent.diskIoType')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-select
|
||||
v-model="settings.disk_io_read_mode"
|
||||
class="mb-5"
|
||||
height="1"
|
||||
flat
|
||||
dense
|
||||
hide-details
|
||||
outlined
|
||||
:items="diskIoModeReadOptions"
|
||||
:label="$t('modals.settings.advanced.libtorrent.diskIoReadMode')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-select
|
||||
v-model="settings.disk_io_write_mode"
|
||||
class="mb-5"
|
||||
height="1"
|
||||
flat
|
||||
dense
|
||||
hide-details
|
||||
outlined
|
||||
:items="diskIoModeWriteOptions"
|
||||
:label="$t('modals.settings.advanced.libtorrent.diskIoWriteMode')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.enable_coalesce_read_write" hide-details class="ma-0 pa-0" :label="$t('modals.settings.advanced.libtorrent.coalesceReadsWrites')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.enable_piece_extent_affinity" hide-details class="ma-0 pa-0" :label="$t('modals.settings.advanced.libtorrent.pieceExtentAffinity')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.enable_upload_suggestions" hide-details class="ma-0 pa-0" :label="$t('modals.settings.advanced.libtorrent.sendUploadPieceSuggestions')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.send_buffer_watermark"
|
||||
type="number"
|
||||
dense
|
||||
hide-details
|
||||
outlined
|
||||
class="my-5"
|
||||
:hint="$t('modals.settings.advanced.libtorrent.sendBufferWatermarkHint')"
|
||||
:label="$t('modals.settings.advanced.libtorrent.sendBufferWatermark')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.send_buffer_low_watermark"
|
||||
type="number"
|
||||
dense
|
||||
hide-details
|
||||
outlined
|
||||
class="my-5"
|
||||
:hint="$t('modals.settings.advanced.libtorrent.sendBufferLowWatermarkHint')"
|
||||
:label="$t('modals.settings.advanced.libtorrent.sendBufferLowWatermark')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.send_buffer_watermark_factor"
|
||||
type="number"
|
||||
dense
|
||||
hide-details
|
||||
outlined
|
||||
class="my-5"
|
||||
:hint="$t('modals.settings.advanced.libtorrent.sendBufferWatermarkFactorHint')"
|
||||
:label="$t('modals.settings.advanced.libtorrent.sendBufferWatermarkFactor')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.connection_speed"
|
||||
type="number"
|
||||
dense
|
||||
hide-details
|
||||
outlined
|
||||
class="my-5"
|
||||
:label="$t('modals.settings.advanced.libtorrent.outgoingConnectionsPerSecond')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.socket_backlog_size"
|
||||
type="number"
|
||||
dense
|
||||
hide-details
|
||||
outlined
|
||||
class="my-5"
|
||||
:label="$t('modals.settings.advanced.libtorrent.socketBacklogSize')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.outgoing_ports_min"
|
||||
type="number"
|
||||
dense
|
||||
hide-details
|
||||
outlined
|
||||
class="my-5"
|
||||
:label="$t('modals.settings.advanced.libtorrent.outgoingPortsMin')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.outgoing_ports_max"
|
||||
type="number"
|
||||
dense
|
||||
hide-details
|
||||
outlined
|
||||
class="my-5"
|
||||
:label="$t('modals.settings.advanced.libtorrent.outgoingPortsMax')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.upnp_lease_duration"
|
||||
type="number"
|
||||
dense
|
||||
hide-details
|
||||
outlined
|
||||
class="my-5"
|
||||
:label="$t('modals.settings.advanced.libtorrent.upnpLeaseDuration')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field v-model="settings.peer_tos" type="number" dense hide-details outlined class="my-5" :label="$t('modals.settings.advanced.libtorrent.peerTos')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-select
|
||||
v-model="settings.utp_tcp_mixed_mode"
|
||||
class="mb-5"
|
||||
height="1"
|
||||
flat
|
||||
dense
|
||||
hide-details
|
||||
outlined
|
||||
:items="utpTcpMixedModeOptions"
|
||||
:label="$t('modals.settings.advanced.libtorrent.utpTcpMixedModeAlgorithm')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.idn_support_enabled" hide-details class="ma-0 pa-0" :label="$t('modals.settings.advanced.libtorrent.idnSupport')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox
|
||||
v-model="settings.enable_multi_connections_from_same_ip"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.advanced.libtorrent.allowMultipleConnectionsFromTheSameIPAddress')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox
|
||||
v-model="settings.validate_https_tracker_certificate"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.advanced.libtorrent.validateHTTPSTrackerCertificate')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.ssrf_mitigation" hide-details class="ma-0 pa-0" :label="$t('modals.settings.advanced.libtorrent.mitigateSSRF')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox
|
||||
v-model="settings.block_peers_on_privileged_ports"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.advanced.libtorrent.blockPeersOnPrivilegedPorts')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-select
|
||||
v-model="settings.upload_slots_behavior"
|
||||
class="mb-5"
|
||||
height="1"
|
||||
flat
|
||||
dense
|
||||
hide-details
|
||||
outlined
|
||||
:items="uploadSlotsBehaviorOptions"
|
||||
:label="$t('modals.settings.advanced.libtorrent.uploadSlotsBehavior')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-select
|
||||
v-model="settings.upload_choking_algorithm"
|
||||
class="mb-5"
|
||||
height="1"
|
||||
flat
|
||||
dense
|
||||
hide-details
|
||||
outlined
|
||||
:items="uploadChokingAlgorithmOptions"
|
||||
:label="$t('modals.settings.advanced.libtorrent.uploadChokingAlgorithm')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.announce_to_all_trackers" hide-details class="ma-0 pa-0" :label="$t('modals.settings.advanced.libtorrent.announceAllTrackers')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.announce_to_all_tiers" hide-details class="ma-0 pa-0" :label="$t('modals.settings.advanced.libtorrent.announceAllTiers')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field v-model="settings.announce_ip" type="number" dense hide-details outlined class="my-5" :label="$t('modals.settings.advanced.libtorrent.announceIP')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.max_concurrent_http_announces"
|
||||
type="number"
|
||||
dense
|
||||
hide-details
|
||||
outlined
|
||||
class="my-5"
|
||||
:label="$t('modals.settings.advanced.libtorrent.maxConcurrentHTTPAnnounces')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.stop_tracker_timeout"
|
||||
type="number"
|
||||
dense
|
||||
hide-details
|
||||
outlined
|
||||
class="my-5"
|
||||
:label="$t('modals.settings.advanced.libtorrent.stopTrackerTimeout')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.peer_turnover"
|
||||
type="number"
|
||||
dense
|
||||
hide-details
|
||||
outlined
|
||||
class="my-5"
|
||||
:hint="$t('modals.settings.advanced.libtorrent.peerTurnoverHint')"
|
||||
:label="$t('modals.settings.advanced.libtorrent.peerTurnover')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.peer_turnover_cutoff"
|
||||
type="number"
|
||||
dense
|
||||
hide-details
|
||||
outlined
|
||||
class="my-5"
|
||||
:hint="$t('modals.settings.advanced.libtorrent.peerTurnoverCutoffHint')"
|
||||
:label="$t('modals.settings.advanced.libtorrent.peerTurnoverCutoff')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.peer_turnover_interval"
|
||||
type="number"
|
||||
dense
|
||||
hide-details
|
||||
outlined
|
||||
class="my-5"
|
||||
:hint="$t('modals.settings.advanced.libtorrent.peerTurnoverIntervalHint')"
|
||||
:label="$t('modals.settings.advanced.libtorrent.peerTurnoverInterval')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.request_queue_size"
|
||||
type="number"
|
||||
dense
|
||||
hide-details
|
||||
outlined
|
||||
class="my-5"
|
||||
:label="$t('modals.settings.advanced.libtorrent.requestQueueSize')"
|
||||
/>
|
||||
</v-list-item>
|
||||
</v-card>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent } from 'vue'
|
||||
import { FullScreenModal, SettingsTab } from '@/mixins'
|
||||
import { DiskIOMode, DiskIOType, UploadChokingAlgorithm, UploadSlotsBehavior, UtpTcpMixedMode } from '@/enums/qbit/AppPreferences'
|
||||
import qbit from '@/services/qbit'
|
||||
|
||||
export default defineComponent({
|
||||
name: 'Advanced',
|
||||
mixins: [SettingsTab, FullScreenModal],
|
||||
data() {
|
||||
return {
|
||||
networkInterfaceOptions: [{ text: this.$t('modals.settings.advanced.qbittorrent.networkInterfaces.any'), value: '' }],
|
||||
ipAddressesOptions: [
|
||||
{ text: this.$t('modals.settings.advanced.qbittorrent.ipAddress.all'), value: '' },
|
||||
{ text: this.$t('modals.settings.advanced.qbittorrent.ipAddress.allIPv4'), value: '0.0.0.0' },
|
||||
{ text: this.$t('modals.settings.advanced.qbittorrent.ipAddress.allIPv6'), value: '::' }
|
||||
],
|
||||
diskIoTypeOptions: [
|
||||
{ text: this.$t('enums.diskIoType.default'), value: DiskIOType.DEFAULT },
|
||||
{ text: this.$t('enums.diskIoType.memoryMappedFiles'), value: DiskIOType.MEMORY_MAPPED_FILES },
|
||||
{ text: this.$t('enums.diskIoType.posixCompliant'), value: DiskIOType.POSIX_COMPLIANT }
|
||||
],
|
||||
diskIoModeReadOptions: [
|
||||
{ text: this.$t('enums.diskIoMode.disableOsCache'), value: DiskIOMode.DISABLE_OS_CACHE },
|
||||
{ text: this.$t('enums.diskIoMode.enableOsCache'), value: DiskIOMode.ENABLE_OS_CACHE }
|
||||
],
|
||||
diskIoModeWriteOptions: [
|
||||
{ text: this.$t('enums.diskIoMode.disableOsCache'), value: DiskIOMode.DISABLE_OS_CACHE },
|
||||
{ text: this.$t('enums.diskIoMode.enableOsCache'), value: DiskIOMode.ENABLE_OS_CACHE },
|
||||
{ text: this.$t('enums.diskIoMode.writeThrough'), value: DiskIOMode.WRITE_THROUGH }
|
||||
],
|
||||
utpTcpMixedModeOptions: [
|
||||
{ text: this.$t('enums.utpTcpMixedMode.preferTcp'), value: UtpTcpMixedMode.PREFER_TCP },
|
||||
{ text: this.$t('enums.utpTcpMixedMode.peerProportional'), value: UtpTcpMixedMode.PEER_PROPORTIONAL }
|
||||
],
|
||||
uploadSlotsBehaviorOptions: [
|
||||
{ text: this.$t('enums.uploadSlotsBehavior.fixedSlots'), value: UploadSlotsBehavior.FIXED_SLOTS },
|
||||
{ text: this.$t('enums.uploadSlotsBehavior.uploadRateBased'), value: UploadSlotsBehavior.UPLOAD_RATE_BASED }
|
||||
],
|
||||
uploadChokingAlgorithmOptions: [
|
||||
{ text: this.$t('enums.uploadChokingAlgorithm.roundRobin'), value: UploadChokingAlgorithm.ROUND_ROBIN },
|
||||
{ text: this.$t('enums.uploadChokingAlgorithm.fastestUpload'), value: UploadChokingAlgorithm.FASTEST_UPLOAD },
|
||||
{ text: this.$t('enums.uploadChokingAlgorithm.antiLeech'), value: UploadChokingAlgorithm.ANTI_LEECH }
|
||||
]
|
||||
}
|
||||
},
|
||||
async mounted() {
|
||||
const networkInterfaces = await qbit.getNetworkInterfaces()
|
||||
for (const networkInterface of networkInterfaces) {
|
||||
this.networkInterfaceOptions.push({ text: networkInterface.name, value: networkInterface.value })
|
||||
}
|
||||
|
||||
const ipAddresses = await qbit.getAddresses(this.settings.current_network_interface)
|
||||
for (const ipAddress of ipAddresses) {
|
||||
this.ipAddressesOptions.push({ text: ipAddress, value: ipAddress })
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
|
@ -1,103 +1,146 @@
|
|||
<template>
|
||||
<v-card flat>
|
||||
<v-subheader>{{ $t('modals.settings.pageBittorrent.subHeaderPrivacy') }}</v-subheader>
|
||||
<v-subheader>{{ $t('modals.settings.bittorrent.privacy.subheader') }}</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.bittorrent.privacy.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.bittorrent.privacy.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.bittorrent.privacy.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-select
|
||||
v-model="settings.encryption"
|
||||
height="1"
|
||||
flat
|
||||
dense
|
||||
hide-details
|
||||
outlined
|
||||
:items="encyptionModeOptions"
|
||||
:label="$t('modals.settings.bittorrent.privacy.encryptionMode')"
|
||||
/>
|
||||
</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.anonymous_mode" hide-details class="ma-0 pa-0" :label="$t('modals.settings.bittorrent.privacy.enableAnonymous')" />
|
||||
<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode" class="ml-3" target="_blank">{{ $t('modals.settings.bittorrent.privacy.moreInfo') }}</a>
|
||||
</v-list-item>
|
||||
|
||||
<v-divider />
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.max_active_checking_torrents"
|
||||
type="number"
|
||||
dense
|
||||
hide-details
|
||||
outlined
|
||||
class="my-5"
|
||||
:label="$t('modals.settings.bittorrent.maxActiveCheckingTorrents')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-divider />
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.queueing_enabled" hide-details class="ma-0 pa-0" :label="$t('modals.settings.bittorrent.torrentQueueing.subheader')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
:disabled="!settings.queueing_enabled"
|
||||
v-model="settings.max_active_downloads"
|
||||
class="mb-2"
|
||||
class="mb-5"
|
||||
outlined
|
||||
dense
|
||||
type="number"
|
||||
hide-details
|
||||
:label="$t('modals.settings.pageBittorrent.maxActiveDownload')"
|
||||
:disabled="!settings.queueing_enabled"
|
||||
:label="$t('modals.settings.bittorrent.torrentQueueing.maxActiveDownload')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
:disabled="!settings.queueing_enabled"
|
||||
v-model="settings.max_active_uploads"
|
||||
class="mb-2"
|
||||
class="mb-5"
|
||||
outlined
|
||||
dense
|
||||
type="number"
|
||||
hide-details
|
||||
:label="$t('modals.settings.pageBittorrent.maxActiveUpload')"
|
||||
:disabled="!settings.queueing_enabled"
|
||||
:label="$t('modals.settings.bittorrent.torrentQueueing.maxActiveUpload')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
:disabled="!settings.queueing_enabled"
|
||||
v-model="settings.max_active_torrents"
|
||||
class="mb-2"
|
||||
outlined
|
||||
dense
|
||||
type="number"
|
||||
hide-details
|
||||
:label="$t('modals.settings.pageBittorrent.maxActiveTorrent')"
|
||||
:label="$t('modals.settings.bittorrent.torrentQueueing.maxActiveTorrent')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item class="ms-8">
|
||||
<v-checkbox
|
||||
:disabled="!settings.queueing_enabled"
|
||||
v-model="settings.dont_count_slow_torrents"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.bittorrent.torrentQueueing.excludeSlowTorrent')"
|
||||
/>
|
||||
</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-list-item>
|
||||
<v-list-item>
|
||||
<v-list-item class="ms-8">
|
||||
<v-text-field
|
||||
:disabled="!settings.queueing_enabled || !settings.dont_count_slow_torrents"
|
||||
v-model="settings.slow_torrent_dl_rate_threshold"
|
||||
class="mb-2"
|
||||
class="mb-5"
|
||||
outlined
|
||||
dense
|
||||
type="number"
|
||||
hide-details
|
||||
:label="$t('modals.settings.pageBittorrent.downloadRateLimit')"
|
||||
:disabled="!settings.dont_count_slow_torrents"
|
||||
:label="$t('modals.settings.bittorrent.torrentQueueing.downloadRateLimit')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-list-item class="ms-8">
|
||||
<v-text-field
|
||||
:disabled="!settings.queueing_enabled || !settings.dont_count_slow_torrents"
|
||||
v-model="settings.slow_torrent_ul_rate_threshold"
|
||||
class="mb-2"
|
||||
class="mb-5"
|
||||
outlined
|
||||
dense
|
||||
type="number"
|
||||
hide-details
|
||||
:label="$t('modals.settings.pageBittorrent.uploadRateLimit')"
|
||||
:disabled="!settings.dont_count_slow_torrents"
|
||||
:label="$t('modals.settings.bittorrent.torrentQueueing.uploadRateLimit')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-list-item class="ms-8">
|
||||
<v-text-field
|
||||
:disabled="!settings.queueing_enabled || !settings.dont_count_slow_torrents"
|
||||
v-model="settings.slow_torrent_inactive_timer"
|
||||
class="mb-2"
|
||||
class="mb-5"
|
||||
outlined
|
||||
dense
|
||||
type="number"
|
||||
hide-details
|
||||
:label="$t('modals.settings.pageBittorrent.torrentInactivityTimer')"
|
||||
:disabled="!settings.dont_count_slow_torrents"
|
||||
:label="$t('modals.settings.bittorrent.torrentQueueing.torrentInactivityTimer')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-divider insert />
|
||||
<v-subheader>{{ $t('modals.settings.pageBittorrent.subHeaderSeedLimits') }}</v-subheader>
|
||||
|
||||
<v-divider />
|
||||
<v-subheader>{{ $t('modals.settings.bittorrent.seedLimits.subheader') }}</v-subheader>
|
||||
|
||||
<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.bittorrent.seedLimits.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" />
|
||||
|
@ -107,7 +150,7 @@
|
|||
<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.bittorrent.seedLimits.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" />
|
||||
|
@ -118,53 +161,66 @@
|
|||
<v-row dense>
|
||||
<v-col>
|
||||
<v-subheader>
|
||||
{{ $t('then') }}
|
||||
{{ $t('modals.settings.bittorrent.seedLimits.then') }}
|
||||
</v-subheader>
|
||||
</v-col>
|
||||
<v-col>
|
||||
<v-select
|
||||
v-model="settings.max_ratio_act"
|
||||
class="mb-2"
|
||||
outlined
|
||||
:disabled="!settings.max_ratio_enabled && !settings.max_seeding_time_enabled"
|
||||
v-model="settings.max_ratio_act"
|
||||
height="1"
|
||||
flat
|
||||
dense
|
||||
small-chips
|
||||
hide-details
|
||||
outlined
|
||||
:items="thenTypes"
|
||||
/>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
|
||||
<v-divider />
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.add_trackers" hide-details class="ma-0 pa-0" :label="$t('modals.settings.bittorrent.autoAddTrackers')" />
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-textarea
|
||||
:disabled="!settings.add_trackers"
|
||||
v-model="settings.excluded_file_names"
|
||||
outlined
|
||||
required
|
||||
auto-grow
|
||||
clearable
|
||||
persistent-hint
|
||||
:hint="$t('modals.settings.bittorrent.autoAddTrackersHint')"
|
||||
/>
|
||||
</v-list-item>
|
||||
</v-card>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
<script lang="ts">
|
||||
import { defineComponent } from 'vue'
|
||||
import { SettingsTab, FullScreenModal } from '@/mixins'
|
||||
import { MaxRatioAction } from '@/enums/qbit/AppPreferences'
|
||||
import { Encryption, MaxRatioAction } from '@/enums/qbit/AppPreferences'
|
||||
|
||||
export default {
|
||||
export default defineComponent({
|
||||
name: 'BitTorrent',
|
||||
mixins: [SettingsTab, FullScreenModal],
|
||||
data() {
|
||||
return {
|
||||
encyptionModeOptions: [
|
||||
{ value: Encryption.PREFER_ENCRYPTION, text: this.$t('enums.encryption.preferEncryption') },
|
||||
{ value: Encryption.FORCE_ON, text: this.$t('enums.encryption.forceOn') },
|
||||
{ value: Encryption.FORCE_OFF, text: this.$t('enums.encryption.forceOff') }
|
||||
],
|
||||
thenTypes: [
|
||||
{
|
||||
value: MaxRatioAction.PAUSE_TORRENT,
|
||||
text: this.$t('modals.settings.pageBittorrent.maxRatioPauseTorrent')
|
||||
},
|
||||
{
|
||||
value: MaxRatioAction.REMOVE_TORRENT,
|
||||
text: this.$t('modals.settings.pageBittorrent.maxRatioRemoveTorrent')
|
||||
},
|
||||
{
|
||||
value: MaxRatioAction.REMOVE_TORRENT_AND_FILES,
|
||||
text: this.$t('modals.settings.pageBittorrent.maxRatioRemoveTorrentAndFiles')
|
||||
},
|
||||
{
|
||||
value: MaxRatioAction.ENABLE_SUPERSEEDING,
|
||||
text: this.$t('modals.settings.pageBittorrent.maxRatioTorrentSuperseeding')
|
||||
}
|
||||
{ value: MaxRatioAction.PAUSE_TORRENT, text: this.$t('enums.maxRatioAction.pauseTorrent') },
|
||||
{ value: MaxRatioAction.REMOVE_TORRENT, text: this.$t('enums.maxRatioAction.removeTorrent') },
|
||||
{ value: MaxRatioAction.REMOVE_TORRENT_AND_FILES, text: this.$t('enums.maxRatioAction.removeTorrentAndFiles') },
|
||||
{ value: MaxRatioAction.ENABLE_SUPERSEEDING, text: this.$t('enums.maxRatioAction.torrentSuperseeding') }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
|
|
@ -1,142 +1,293 @@
|
|||
<template>
|
||||
<v-card flat>
|
||||
<v-col cols="5" class="pb-0 mt-2">
|
||||
<v-select v-model="settings.bittorrent_protocol" outlined dense small-chips :items="bittorrent_protocol" :label="$t('modals.settings.pageConnection.protocol')" />
|
||||
</v-col>
|
||||
<v-subheader>
|
||||
{{ $t('modals.settings.pageConnection.listeningSubHeader') }}
|
||||
</v-subheader>
|
||||
<v-list-item>
|
||||
<v-text-field v-model="settings.listen_port" class="mb-2" outlined dense type="number" hide-details :label="$t('modals.settings.pageConnection.incomingConnectionPort')" />
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.upnp" hide-details class="ma-0 pa-0" :label="$t('modals.settings.pageConnection.useUPnP')" />
|
||||
</v-list-item>
|
||||
<v-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-list-item>
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.max_connec_per_torrent"
|
||||
class="mb-2"
|
||||
outlined
|
||||
<v-list-item class="my-5">
|
||||
<v-select
|
||||
v-model="settings.bittorrent_protocol"
|
||||
height="1"
|
||||
flat
|
||||
dense
|
||||
type="number"
|
||||
hide-details
|
||||
:label="$t('modals.settings.pageConnection.perTorrentMaxConnection')"
|
||||
/>
|
||||
</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-list-item>
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.max_uploads_per_torrent"
|
||||
class="mb-2"
|
||||
outlined
|
||||
dense
|
||||
type="number"
|
||||
hide-details
|
||||
:label="$t('modals.settings.pageConnection.perTorrentMaxUploadSlots')"
|
||||
outlined
|
||||
:items="bittorrent_protocol"
|
||||
:label="$t('modals.settings.connection.protocol')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-divider />
|
||||
<v-subheader>
|
||||
{{ $t('modals.settings.pageConnection.proxySubHeader') }}
|
||||
</v-subheader>
|
||||
<v-subheader>{{ $t('modals.settings.connection.listeningPort.subheader') }}</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-row>
|
||||
<v-col cols="auto">
|
||||
<v-text-field
|
||||
v-model="settings.listen_port"
|
||||
class="mb-2"
|
||||
outlined
|
||||
dense
|
||||
type="number"
|
||||
hide-details
|
||||
:label="$t('modals.settings.connection.listeningPort.incomingConnectionPort')"
|
||||
/>
|
||||
</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-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-col cols="auto">
|
||||
<v-btn @click="generateRandomPort">{{ $t('modals.settings.connection.listeningPort.randomPort') }}</v-btn>
|
||||
</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-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.upnp" hide-details class="ma-0 pa-0" :label="$t('modals.settings.connection.listeningPort.useUPnP')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-divider />
|
||||
<v-subheader>{{ $t('modals.settings.connection.connectionLimits.subheader') }}</v-subheader>
|
||||
|
||||
<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-row>
|
||||
<v-col cols="8">
|
||||
<v-checkbox v-model="max_conn_enabled" hide-details class="ma-0 pa-0" :label="$t('modals.settings.connection.connectionLimits.globalMaxConnection')" />
|
||||
</v-col>
|
||||
<v-col cols="4">
|
||||
<v-text-field :disabled="!max_conn_enabled" v-model="settings.max_connec" type="number" class="ms-2" dense hide-details />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.proxy_username"
|
||||
class="mb-2"
|
||||
outlined
|
||||
dense
|
||||
<v-row>
|
||||
<v-col cols="8">
|
||||
<v-checkbox v-model="max_conn_per_torrent_enabled" hide-details class="ma-0 pa-0" :label="$t('modals.settings.connection.connectionLimits.perTorrentMaxConnection')" />
|
||||
</v-col>
|
||||
<v-col cols="4">
|
||||
<v-text-field :disabled="!max_conn_per_torrent_enabled" v-model="settings.max_connec_per_torrent" type="number" class="ms-2" dense hide-details />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-row>
|
||||
<v-col cols="8">
|
||||
<v-checkbox v-model="max_uploads_enabled" hide-details class="ma-0 pa-0" :label="$t('modals.settings.connection.connectionLimits.globalMaxUploadSlots')" />
|
||||
</v-col>
|
||||
<v-col cols="4">
|
||||
<v-text-field :disabled="!max_uploads_enabled" v-model="settings.max_uploads" type="number" class="ms-2" dense hide-details />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-row>
|
||||
<v-col cols="8">
|
||||
<v-checkbox
|
||||
v-model="max_uploads_per_torrent_enabled"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.connection.connectionLimits.perTorrentMaxUploadSlots')"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col cols="4">
|
||||
<v-text-field :disabled="!max_uploads_per_torrent_enabled" v-model="settings.max_uploads_per_torrent" type="number" class="ms-2" dense hide-details />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
|
||||
<v-divider />
|
||||
<v-subheader>{{ $t('modals.settings.connection.proxy.subheader') }}</v-subheader>
|
||||
|
||||
<v-list-item>
|
||||
<v-row class="mx-1 pb-4">
|
||||
<v-col cols="5" class="pa-0 pr-2">
|
||||
<v-select v-model="settings.proxy_type" height="1" outlined dense hide-details :items="proxyTypes" />
|
||||
</v-col>
|
||||
<v-col cols="4" class="pa-0">
|
||||
<v-text-field
|
||||
:disabled="settings.proxy_type === ProxyType.DISABLED"
|
||||
v-model="settings.proxy_ip"
|
||||
class="mr-1"
|
||||
outlined
|
||||
dense
|
||||
hide-details
|
||||
:label="$t('modals.settings.connection.proxy.host')"
|
||||
/>
|
||||
</v-col>
|
||||
<v-col cols="3" class="pa-0">
|
||||
<v-text-field
|
||||
:disabled="settings.proxy_type === ProxyType.DISABLED"
|
||||
v-model="settings.proxy_port"
|
||||
class="ml-1"
|
||||
outlined
|
||||
dense
|
||||
type="number"
|
||||
hide-details
|
||||
:label="$t('modals.settings.connection.proxy.port')"
|
||||
/>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox
|
||||
:disabled="settings.proxy_type === ProxyType.DISABLED"
|
||||
v-model="settings.proxy_peer_connections"
|
||||
hide-details
|
||||
:disabled="!settings.proxy_auth_enabled"
|
||||
:label="$t('modals.settings.pageWebUI.username')"
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.connection.proxy.peerConnections')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.proxy_password"
|
||||
class="mb-2"
|
||||
outlined
|
||||
dense
|
||||
<v-checkbox
|
||||
:disabled="settings.proxy_type === ProxyType.DISABLED || settings.proxy_type === ProxyType.SOCKS4"
|
||||
v-model="settings.proxy_torrents_only"
|
||||
hide-details
|
||||
type="password"
|
||||
:disabled="!settings.proxy_auth_enabled"
|
||||
:label="$t('modals.settings.pageWebUI.password')"
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.connection.proxy.torrentOnly')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-checkbox
|
||||
:disabled="settings.proxy_type === ProxyType.DISABLED || settings.proxy_type === ProxyType.SOCKS4"
|
||||
v-model="settings.proxy_hostname_lookup"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.connection.proxy.hostNameLookup')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item class="mb-5">
|
||||
<v-checkbox
|
||||
:disabled="settings.proxy_type === ProxyType.DISABLED || settings.proxy_type === ProxyType.SOCKS4"
|
||||
v-model="settings.proxy_auth_enabled"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.connection.proxy.auth.subtitle')"
|
||||
/>
|
||||
<v-row class="ms-6">
|
||||
<v-col>
|
||||
<v-text-field
|
||||
:disabled="settings.proxy_type === ProxyType.DISABLED || settings.proxy_type === ProxyType.SOCKS4 || !settings.proxy_auth_enabled"
|
||||
v-model="settings.proxy_username"
|
||||
dense
|
||||
hide-details
|
||||
class="mb-5"
|
||||
:label="$t('modals.settings.connection.proxy.auth.username')"
|
||||
/>
|
||||
<v-text-field
|
||||
:disabled="settings.proxy_type === ProxyType.DISABLED || settings.proxy_type === ProxyType.SOCKS4 || !settings.proxy_auth_enabled"
|
||||
v-model="settings.proxy_password"
|
||||
dense
|
||||
hide-details
|
||||
:label="$t('modals.settings.connection.proxy.auth.password')"
|
||||
:type="showPassword ? 'text' : 'password'"
|
||||
:append-icon="
|
||||
settings.proxy_type === ProxyType.DISABLED || settings.proxy_type === ProxyType.SOCKS4 || !settings.proxy_auth_enabled ? '' : showPassword ? mdiEye : mdiEyeOff
|
||||
"
|
||||
@click:append="showPassword = !showPassword"
|
||||
/>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<h5>{{ $t('modals.settings.connection.proxy.auth.tip') }}</h5>
|
||||
</v-list-item>
|
||||
|
||||
<v-divider />
|
||||
<v-subheader>{{ $t('modals.settings.connection.ipFiltering.subheader') }}</v-subheader>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.ip_filter_enabled" hide-details class="ma-0 pa-0" :label="$t('modals.settings.connection.ipFiltering.filterPath')" />
|
||||
<v-text-field :disabled="!settings.ip_filter_enabled" v-model="settings.ip_filter_path" class="ms-2" dense hide-details />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.ip_filter_trackers" hide-details class="ma-0 pa-0" :label="$t('modals.settings.connection.ipFiltering.applyToTrackers')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-subheader>{{ $t('modals.settings.connection.ipFiltering.bannedIps') }}</v-subheader>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-textarea v-model="settings.banned_IPs" outlined required auto-grow clearable persistent-hint :hint="$t('modals.settings.connection.ipFiltering.bannedIpsHint')" />
|
||||
</v-list-item>
|
||||
</v-card>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { SettingsTab, FullScreenModal } from '@/mixins'
|
||||
<script lang="ts">
|
||||
import { FullScreenModal, SettingsTab } from '@/mixins'
|
||||
import { BitTorrentProtocol, ProxyType } from '@/enums/qbit/AppPreferences'
|
||||
import { defineComponent } from 'vue'
|
||||
import { mdiEye, mdiEyeOff } from '@mdi/js'
|
||||
|
||||
export default {
|
||||
export default defineComponent({
|
||||
name: 'Connection',
|
||||
computed: {
|
||||
ProxyType() {
|
||||
return ProxyType
|
||||
}
|
||||
},
|
||||
mixins: [SettingsTab, FullScreenModal],
|
||||
data() {
|
||||
return {
|
||||
proxyTypes: [
|
||||
{
|
||||
value: ProxyType.DISABLED,
|
||||
text: 'None'
|
||||
text: '(None)'
|
||||
},
|
||||
{
|
||||
value: ProxyType.HTTP_WITHOUT_AUTH,
|
||||
text: 'HTTP proxy without authentication'
|
||||
value: ProxyType.SOCKS4,
|
||||
text: 'SOCKS4'
|
||||
},
|
||||
{
|
||||
value: ProxyType.SOCKS5_WITHOUT_AUTH,
|
||||
text: 'SOCKS5 proxy without authentication'
|
||||
value: ProxyType.SOCKS5,
|
||||
text: 'SOCKS5'
|
||||
},
|
||||
{
|
||||
value: ProxyType.HTTP_WITH_AUTH,
|
||||
text: 'HTTP proxy with authentication'
|
||||
},
|
||||
{
|
||||
value: ProxyType.SOCKS5_WITH_AUTH,
|
||||
text: 'SOCKS5 proxy with authentication'
|
||||
},
|
||||
{
|
||||
value: ProxyType.SOCKS4_WITHOUT_AUTH,
|
||||
text: 'SOCKS4 proxy without authentication'
|
||||
value: ProxyType.HTTP,
|
||||
text: 'HTTP'
|
||||
}
|
||||
],
|
||||
bittorrent_protocol: [
|
||||
{ value: BitTorrentProtocol.TCP_uTP, text: 'TCP and μTP' },
|
||||
{ value: BitTorrentProtocol.TCP, text: 'TCP' },
|
||||
{ value: BitTorrentProtocol.uTP, text: 'μTP' }
|
||||
]
|
||||
{ value: BitTorrentProtocol.TCP_uTP, text: this.$t('enums.bittorrentProtocols.tcp_utp') },
|
||||
{ value: BitTorrentProtocol.TCP, text: this.$t('enums.bittorrentProtocols.tcp') },
|
||||
{ value: BitTorrentProtocol.uTP, text: this.$t('enums.bittorrentProtocols.utp') }
|
||||
],
|
||||
max_conn_enabled: false,
|
||||
max_conn_per_torrent_enabled: false,
|
||||
max_uploads_enabled: false,
|
||||
max_uploads_per_torrent_enabled: false,
|
||||
showPassword: false,
|
||||
mdiEye,
|
||||
mdiEyeOff
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.max_conn_enabled = this.settings.max_connec > 0
|
||||
this.max_conn_per_torrent_enabled = this.settings.max_connec_per_torrent > 0
|
||||
this.max_uploads_enabled = this.settings.max_uploads > 0
|
||||
this.max_uploads_per_torrent_enabled = this.settings.max_uploads_per_torrent > 0
|
||||
},
|
||||
watch: {
|
||||
max_conn_enabled(newValue) {
|
||||
this.settings.max_connec = newValue ? this.settings.max_connec : -1
|
||||
},
|
||||
max_conn_per_torrent_enabled(newValue) {
|
||||
this.settings.max_connec_per_torrent = newValue ? this.settings.max_connec_per_torrent : -1
|
||||
},
|
||||
max_uploads_enabled(newValue) {
|
||||
this.settings.max_uploads = newValue ? this.settings.max_uploads : -1
|
||||
},
|
||||
max_uploads_per_torrent_enabled(newValue) {
|
||||
this.settings.max_uploads_per_torrent = newValue ? this.settings.max_uploads_per_torrent : -1
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
generateRandomPort() {
|
||||
// source: https://github.com/qbittorrent/qBittorrent/blob/d83b2a61311b0dc3bc31ee52d1b9eaac715c3cdf/src/webui/www/private/views/preferences.html#L1729-L1734
|
||||
const min = 1024
|
||||
const max = 65535
|
||||
this.settings.listen_port = Math.floor(Math.random() * (max - min + 1) + min)
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
|
|
@ -1,121 +1,315 @@
|
|||
<template>
|
||||
<v-card flat>
|
||||
<v-subheader>{{ $t('modals.settings.pageDownloads.subHeaderWhenAddTorrent') }}</v-subheader>
|
||||
<v-subheader>{{ $t('modals.settings.downloads.whenAddTorrent.subheader') }}</v-subheader>
|
||||
<v-list-item>
|
||||
<v-select v-model="settings.torrent_content_layout" :label="$t('enums.contentLayout.title')" outlined dense small-chips :items="contentLayoutOptions" />
|
||||
<v-select v-model="settings.torrent_content_layout" height="1" flat dense hide-details outlined :label="$t('enums.contentLayout.title')" :items="contentLayoutOptions" />
|
||||
</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.downloads.whenAddTorrent.donotAutoStart')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-select v-model="settings.torrent_stop_condition" height="1" flat dense hide-details outlined :label="$t('enums.stopCondition.title')" :items="stopConditionOptions" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.auto_delete_mode" hide-details class="ma-0 pa-0" :label="$t('modals.settings.downloads.whenAddTorrent.autoDeleteMode')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-divider />
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.preallocate_all" hide-details class="ma-0 pa-0" :label="$t('modals.settings.downloads.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.downloads.publicSettings.appendQBExtension')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-divider />
|
||||
<v-subheader>{{ $t('modals.settings.downloads.saveManagement.subheader') }}</v-subheader>
|
||||
|
||||
<v-list-item>
|
||||
<v-select
|
||||
class="mb-5"
|
||||
v-model="settings.auto_tmm_enabled"
|
||||
height="1"
|
||||
flat
|
||||
dense
|
||||
hide-details
|
||||
outlined
|
||||
:label="$t('modals.settings.downloads.saveManagement.autoTMMEnabled')"
|
||||
:items="defaultTMMOptions"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-select
|
||||
class="mb-5"
|
||||
v-model="settings.torrent_changed_tmm_enabled"
|
||||
height="1"
|
||||
flat
|
||||
dense
|
||||
hide-details
|
||||
outlined
|
||||
:label="$t('modals.settings.downloads.saveManagement.torrentChangedTMM')"
|
||||
:items="paramChangedTMMOptions"
|
||||
/>
|
||||
</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-select
|
||||
class="mb-5"
|
||||
v-model="settings.save_path_changed_tmm_enabled"
|
||||
height="1"
|
||||
flat
|
||||
dense
|
||||
hide-details
|
||||
outlined
|
||||
:label="$t('modals.settings.downloads.saveManagement.savePathChangedTMM')"
|
||||
:items="paramChangedTMMOptions"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-select v-model="settings.torrent_stop_condition" :label="$t('enums.stopCondition.title')" outlined dense small-chips :items="stopConditionOptions" />
|
||||
<v-select
|
||||
class="mb-5"
|
||||
v-model="settings.category_changed_tmm_enabled"
|
||||
height="1"
|
||||
flat
|
||||
dense
|
||||
hide-details
|
||||
outlined
|
||||
:label="$t('modals.settings.downloads.saveManagement.categoryChangedTMM')"
|
||||
:items="paramChangedTMMOptions"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field v-model="settings.save_path" dense hide-details outlined :label="$t('modals.settings.downloads.saveManagement.defaultSavePath')" />
|
||||
</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.downloads.saveManagement.keepIncompleteIn')" />
|
||||
<v-text-field :disabled="!settings.temp_path_enabled" v-model="settings.temp_path" class="ms-2" dense hide-details />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="export_dir_enabled" hide-details class="ma-0 pa-0" :label="$t('modals.settings.downloads.saveManagement.exportDir')" />
|
||||
<v-text-field :disabled="!export_dir_enabled" v-model="settings.export_dir" class="ms-2" dense hide-details />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="export_dir_fin_enabled" hide-details class="ma-0 pa-0" :label="$t('modals.settings.downloads.saveManagement.exportDirFinished')" />
|
||||
<v-text-field :disabled="!export_dir_fin_enabled" v-model="settings.export_dir_fin" class="ms-2" dense hide-details />
|
||||
</v-list-item>
|
||||
|
||||
<v-divider />
|
||||
<v-subheader>{{ $t('modals.settings.downloads.saveManagement.monitoredFolders.subheader') }}</v-subheader>
|
||||
|
||||
<v-list-item>
|
||||
<!-- TODO: Monitored folder -->
|
||||
<v-btn :disabled="true">Coming soon!</v-btn>
|
||||
</v-list-item>
|
||||
|
||||
<v-divider />
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.excluded_file_names_enabled" hide-details class="ma-0 pa-0" :label="$t('modals.settings.downloads.saveManagement.excludedFileNames.label')" />
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.auto_delete_mode" hide-details class="ma-0 pa-0" :label="$t('modals.settings.pageDownloads.whenAddTorrent.autoDeleteMode')" />
|
||||
<v-textarea
|
||||
:disabled="!settings.excluded_file_names_enabled"
|
||||
v-model="settings.excluded_file_names"
|
||||
outlined
|
||||
required
|
||||
auto-grow
|
||||
clearable
|
||||
persistent-hint
|
||||
:hint="$t('modals.settings.downloads.saveManagement.excludedFileNames.hint')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-divider insert />
|
||||
<v-subheader>{{ $t('modals.settings.pageDownloads.subHeaderPublicSettings') }}</v-subheader>
|
||||
|
||||
<v-divider />
|
||||
|
||||
<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.mail_notification_enabled" hide-details class="ma-0 pa-0" :label="$t('modals.settings.downloads.saveManagement.mailNotification.enabled')" />
|
||||
</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-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-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-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
|
||||
:disabled="!settings.mail_notification_enabled"
|
||||
v-model="settings.mail_notification_sender"
|
||||
dense
|
||||
hide-details
|
||||
outlined
|
||||
:label="$t('modals.settings.downloads.saveManagement.mailNotification.from')"
|
||||
/>
|
||||
</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-text-field
|
||||
:disabled="!settings.mail_notification_enabled"
|
||||
v-model="settings.mail_notification_email"
|
||||
dense
|
||||
hide-details
|
||||
outlined
|
||||
:label="$t('modals.settings.downloads.saveManagement.mailNotification.to')"
|
||||
/>
|
||||
</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-list-item>
|
||||
<v-text-field
|
||||
:disabled="!settings.mail_notification_enabled"
|
||||
v-model="settings.mail_notification_smtp"
|
||||
dense
|
||||
hide-details
|
||||
outlined
|
||||
:label="$t('modals.settings.downloads.saveManagement.mailNotification.smtpServer')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-checkbox
|
||||
v-model="settings.autorun_on_torrent_added_enabled"
|
||||
:disabled="!settings.mail_notification_enabled"
|
||||
v-model="settings.mail_notification_ssl_enabled"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.pageDownloads.saveManagement.autoEnabled_onAdded')"
|
||||
:label="$t('modals.settings.downloads.saveManagement.mailNotification.sslEnabled')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-list-item v-if="settings.autorun_on_torrent_added_enabled">
|
||||
<v-text-field
|
||||
v-model="settings.autorun_on_torrent_added_program"
|
||||
class="mb-2"
|
||||
outlined
|
||||
dense
|
||||
:label="$t('modals.settings.pageDownloads.saveManagement.autoLabel_onAdded')"
|
||||
|
||||
<v-list-item class="mb-5">
|
||||
<v-checkbox
|
||||
:disabled="!settings.mail_notification_enabled"
|
||||
v-model="settings.mail_notification_auth_enabled"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.downloads.saveManagement.mailNotification.authEnabled')"
|
||||
/>
|
||||
<v-row class="ms-6">
|
||||
<v-col>
|
||||
<v-text-field
|
||||
:disabled="!settings.mail_notification_enabled || !settings.mail_notification_auth_enabled"
|
||||
v-model="settings.mail_notification_username"
|
||||
dense
|
||||
hide-details
|
||||
class="mb-5"
|
||||
:label="$t('modals.settings.downloads.saveManagement.mailNotification.username')"
|
||||
/>
|
||||
<v-text-field
|
||||
:disabled="!settings.mail_notification_enabled || !settings.mail_notification_auth_enabled"
|
||||
v-model="settings.mail_notification_password"
|
||||
dense
|
||||
hide-details
|
||||
:label="$t('modals.settings.downloads.saveManagement.mailNotification.password')"
|
||||
:type="showPassword ? 'text' : 'password'"
|
||||
:append-icon="!settings.mail_notification_enabled || !settings.mail_notification_auth_enabled ? '' : showPassword ? mdiEye : mdiEyeOff"
|
||||
@click:append="showPassword = !showPassword"
|
||||
/>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</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_onFinished')" />
|
||||
</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.autoLabel_onFinished')" hide-details />
|
||||
</v-list-item>
|
||||
<v-list-item v-if="settings.autorun_on_torrent_added_enabled || settings.autorun_enabled" class="mb-4">
|
||||
<v-card flat color="grey--text selected">
|
||||
<v-card-text>
|
||||
<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.supportParamJ') }}
|
||||
</li>
|
||||
<li>
|
||||
{{ $t('modals.settings.pageDownloads.saveManagement.supportParamK') }}
|
||||
</li>
|
||||
</ul>
|
||||
</v-card-text>
|
||||
</v-card>
|
||||
</v-list-item>
|
||||
|
||||
<v-divider />
|
||||
<v-subheader>{{ $t('modals.settings.downloads.saveManagement.runExternalProgram.subheader') }}</v-subheader>
|
||||
|
||||
<v-row>
|
||||
<v-col cols="12" md="6">
|
||||
<v-list-item>
|
||||
<v-checkbox
|
||||
v-model="settings.autorun_on_torrent_added_enabled"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.downloads.saveManagement.runExternalProgram.onAddedEnabled')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
:disabled="!settings.autorun_on_torrent_added_enabled"
|
||||
v-model="settings.autorun_on_torrent_added_program"
|
||||
class="mb-2"
|
||||
outlined
|
||||
dense
|
||||
:label="$t('modals.settings.downloads.saveManagement.runExternalProgram.onAddedLabel')"
|
||||
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.downloads.saveManagement.runExternalProgram.onFinishedEnabled')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
:disabled="!settings.autorun_enabled"
|
||||
v-model="settings.autorun_program"
|
||||
class="mb-2"
|
||||
outlined
|
||||
dense
|
||||
:label="$t('modals.settings.downloads.saveManagement.runExternalProgram.onFinishedLabel')"
|
||||
hide-details
|
||||
/>
|
||||
</v-list-item>
|
||||
</v-col>
|
||||
|
||||
<v-col cols="12" md="6" class="pt-0">
|
||||
<v-card flat color="grey--text selected">
|
||||
<v-card-text>
|
||||
<h5>
|
||||
{{ $t('modals.settings.downloads.saveManagement.runExternalProgram.supportParamTitle') }}
|
||||
</h5>
|
||||
<ul>
|
||||
<li>
|
||||
{{ $t('modals.settings.downloads.saveManagement.runExternalProgram.supportParamN') }}
|
||||
</li>
|
||||
<li>
|
||||
{{ $t('modals.settings.downloads.saveManagement.runExternalProgram.supportParamL') }}
|
||||
</li>
|
||||
<li>
|
||||
{{ $t('modals.settings.downloads.saveManagement.runExternalProgram.supportParamG') }}
|
||||
</li>
|
||||
<li>
|
||||
{{ $t('modals.settings.downloads.saveManagement.runExternalProgram.supportParamF') }}
|
||||
</li>
|
||||
<li>
|
||||
{{ $t('modals.settings.downloads.saveManagement.runExternalProgram.supportParamR') }}
|
||||
</li>
|
||||
<li>
|
||||
{{ $t('modals.settings.downloads.saveManagement.runExternalProgram.supportParamD') }}
|
||||
</li>
|
||||
<li>
|
||||
{{ $t('modals.settings.downloads.saveManagement.runExternalProgram.supportParamC') }}
|
||||
</li>
|
||||
<li>
|
||||
{{ $t('modals.settings.downloads.saveManagement.runExternalProgram.supportParamZ') }}
|
||||
</li>
|
||||
<li>
|
||||
{{ $t('modals.settings.downloads.saveManagement.runExternalProgram.supportParamT') }}
|
||||
</li>
|
||||
<li>
|
||||
{{ $t('modals.settings.downloads.saveManagement.runExternalProgram.supportParamI') }}
|
||||
</li>
|
||||
<li>
|
||||
{{ $t('modals.settings.downloads.saveManagement.runExternalProgram.supportParamJ') }}
|
||||
</li>
|
||||
<li>
|
||||
{{ $t('modals.settings.downloads.saveManagement.runExternalProgram.supportParamK') }}
|
||||
</li>
|
||||
</ul>
|
||||
<h5>{{ $t('modals.settings.downloads.saveManagement.runExternalProgram.tip') }}</h5>
|
||||
</v-card-text>
|
||||
</v-card>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-card>
|
||||
</template>
|
||||
<script>
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent } from 'vue'
|
||||
import { FullScreenModal, SettingsTab } from '@/mixins'
|
||||
import { AppPreferences } from '@/enums/qbit'
|
||||
import { mdiEye, mdiEyeOff } from '@mdi/js'
|
||||
|
||||
export default {
|
||||
export default defineComponent({
|
||||
name: 'Downloads',
|
||||
mixins: [SettingsTab, FullScreenModal],
|
||||
data() {
|
||||
|
@ -129,8 +323,35 @@ export default {
|
|||
{ text: this.$t('enums.stopCondition.none'), value: AppPreferences.StopCondition.NONE },
|
||||
{ text: this.$t('enums.stopCondition.metadataReceived'), value: AppPreferences.StopCondition.METADATA_RECEIVED },
|
||||
{ text: this.$t('enums.stopCondition.filesChecked'), value: AppPreferences.StopCondition.FILES_CHECKED }
|
||||
]
|
||||
],
|
||||
defaultTMMOptions: [
|
||||
{ text: this.$t('modals.settings.downloads.saveManagement.defaultTMMOptions.manual'), value: false },
|
||||
{ text: this.$t('modals.settings.downloads.saveManagement.defaultTMMOptions.automatic'), value: true }
|
||||
],
|
||||
paramChangedTMMOptions: [
|
||||
{ text: this.$t('modals.settings.downloads.saveManagement.paramChangedTMMOptions.relocateTorrent'), value: true },
|
||||
{ text: this.$t('modals.settings.downloads.saveManagement.paramChangedTMMOptions.switchToManual'), value: false }
|
||||
],
|
||||
export_dir_enabled: false,
|
||||
export_dir_fin_enabled: false,
|
||||
showPassword: false,
|
||||
mdiEye,
|
||||
mdiEyeOff
|
||||
}
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.export_dir_enabled = this.settings.export_dir.length > 0
|
||||
this.export_dir_fin_enabled = this.settings.export_dir_fin.length > 0
|
||||
},
|
||||
|
||||
watch: {
|
||||
export_dir_enabled(newValue) {
|
||||
this.settings.export_dir = newValue ? this.settings.export_dir : ''
|
||||
},
|
||||
export_dir_fin_enabled(newValue) {
|
||||
this.settings.export_dir_fin = newValue ? this.settings.export_dir_fin : ''
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
<v-card flat>
|
||||
<v-tabs v-model="tab">
|
||||
<v-tab href="#general">
|
||||
{{ $t('modals.settings.pageRss.tabName.general') }}
|
||||
{{ $t('modals.settings.rss.tabName.general') }}
|
||||
</v-tab>
|
||||
<v-tab href="#feeds">
|
||||
{{ $t('modals.settings.pageRss.tabName.feeds') }}
|
||||
{{ $t('modals.settings.rss.tabName.feeds') }}
|
||||
</v-tab>
|
||||
<v-tab href="#rules">
|
||||
{{ $t('modals.settings.pageRss.tabName.rules') }}
|
||||
{{ $t('modals.settings.rss.tabName.rules') }}
|
||||
</v-tab>
|
||||
</v-tabs>
|
||||
<v-tabs-items v-model="tab" touchless>
|
||||
|
@ -25,13 +25,14 @@
|
|||
</v-card>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
<script lang="ts">
|
||||
import General from './Rss/General.vue'
|
||||
import Feeds from './Rss/Feeds.vue'
|
||||
import Rules from './Rss/Rules.vue'
|
||||
import { FullScreenModal } from '@/mixins'
|
||||
import { defineComponent } from 'vue'
|
||||
|
||||
export default {
|
||||
export default defineComponent({
|
||||
name: 'Rss',
|
||||
components: {
|
||||
General,
|
||||
|
@ -42,5 +43,5 @@ export default {
|
|||
data: () => ({
|
||||
tab: null
|
||||
})
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<v-card flat>
|
||||
<v-row dense class="ma-0 pa-0">
|
||||
<v-col cols="12" md="6">
|
||||
<v-subheader>{{ $t('modals.settings.pageRss.pageFeeds.feeds') }}</v-subheader>
|
||||
<v-subheader>{{ $t('modals.settings.rss.feeds.feeds') }}</v-subheader>
|
||||
<template v-for="(item, index) in availableFeeds">
|
||||
<v-list-item :key="item.uid">
|
||||
<v-list-item-content>
|
||||
|
@ -28,10 +28,10 @@
|
|||
</template>
|
||||
<v-list-item>
|
||||
<v-btn class="mx-auto accent white--text elevation-0 px-4" @click="createFeed">
|
||||
{{ $t('modals.settings.pageRss.pageFeeds.btnCreateNew') }}
|
||||
{{ $t('modals.settings.rss.feeds.btnCreateNew') }}
|
||||
</v-btn>
|
||||
<v-btn class="mx-auto accent white--text elevation-0 px-4" @click="refreshAll">
|
||||
{{ $t('modals.settings.pageRss.pageFeeds.refreshAll') }}
|
||||
{{ $t('modals.settings.rss.feeds.refreshAll') }}
|
||||
</v-btn>
|
||||
</v-list-item>
|
||||
</v-col>
|
||||
|
|
|
@ -1,41 +1,63 @@
|
|||
<template>
|
||||
<v-card flat>
|
||||
<v-subheader>
|
||||
{{ $t('modals.settings.pageRss.pageGeneral.rssAutoProcessing') }}
|
||||
</v-subheader>
|
||||
<v-subheader>{{ $t('modals.settings.rss.general.reader.subheader') }}</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.rss.general.reader.enableProcessing')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.rss_refresh_interval"
|
||||
class="mb-2"
|
||||
outlined
|
||||
dense
|
||||
type="number"
|
||||
hide-details
|
||||
:label="$t('modals.settings.pageRss.pageGeneral.input.feedsRefreshInterval')"
|
||||
:disabled="!settings.rss_processing_enabled"
|
||||
dense
|
||||
outlined
|
||||
:hint="$t('modals.settings.rss.general.reader.feedsRefreshIntervalHint')"
|
||||
:label="$t('modals.settings.rss.general.reader.feedsRefreshInterval')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.rss_max_articles_per_feed"
|
||||
class="mb-2"
|
||||
outlined
|
||||
dense
|
||||
class="mb-3"
|
||||
type="number"
|
||||
dense
|
||||
hide-details
|
||||
:label="$t('modals.settings.pageRss.pageGeneral.input.feedsMaxArticles')"
|
||||
:disabled="!settings.rss_processing_enabled"
|
||||
outlined
|
||||
:label="$t('modals.settings.rss.general.reader.maximumArticlesPerFeed')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-divider />
|
||||
<v-subheader>
|
||||
{{ $t('modals.settings.pageRss.pageGeneral.rssAutoDownloader') }}
|
||||
</v-subheader>
|
||||
<v-subheader>{{ $t('modals.settings.rss.general.autoDownloader.subheader') }}</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.rss.general.autoDownloader.enable')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-divider />
|
||||
<v-subheader>{{ $t('modals.settings.rss.general.smartEpisodeFilter.subheader') }}</v-subheader>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox
|
||||
v-model="settings.rss_download_repack_proper_episodes"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.rss.general.smartEpisodeFilter.downloadEpisodes')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-textarea
|
||||
v-model="settings.rss_smart_episode_filters"
|
||||
outlined
|
||||
auto-grow
|
||||
clearable
|
||||
persistent-hint
|
||||
:hint="$t('modals.settings.rss.general.smartEpisodeFilter.filtersHint')"
|
||||
:label="$t('modals.settings.rss.general.smartEpisodeFilter.filters')"
|
||||
/>
|
||||
</v-list-item>
|
||||
</v-card>
|
||||
</template>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<v-card flat>
|
||||
<v-row dense class="ma-0 pa-0">
|
||||
<v-col cols="12" md="6">
|
||||
<v-subheader>{{ $t('modals.settings.pageRss.pageRules.rules') }}</v-subheader>
|
||||
<v-subheader>{{ $t('modals.settings.rss.rules.rules') }}</v-subheader>
|
||||
<template v-for="(item, index) in availableRules">
|
||||
<v-list-item :key="item.uid">
|
||||
<v-list-item-content>
|
||||
|
@ -28,7 +28,7 @@
|
|||
</template>
|
||||
<v-list-item>
|
||||
<v-btn class="mx-auto accent white--text elevation-0 px-4" @click="createRule">
|
||||
{{ $t('modals.settings.pageRss.pageRules.btnCreateNew') }}
|
||||
{{ $t('modals.settings.rss.rules.btnCreateNew') }}
|
||||
</v-btn>
|
||||
</v-list-item>
|
||||
</v-col>
|
||||
|
|
210
src/components/Settings/Tabs/Speed.vue
Normal file
210
src/components/Settings/Tabs/Speed.vue
Normal file
|
@ -0,0 +1,210 @@
|
|||
<template>
|
||||
<v-card flat>
|
||||
<v-row class="mb-0" :class="phoneLayout ? 'flex-column' : 'flex-row'">
|
||||
<v-col cols="12" sm="6">
|
||||
<v-subheader>{{ $t('modals.settings.speed.subheader.global') }}</v-subheader>
|
||||
|
||||
<v-row class="mx-1">
|
||||
<v-col cols="12" md="6">
|
||||
<v-text-field v-model="settings.up_limit" dense hide-details class="mb-5" :label="$t('modals.settings.speed.upload')" />
|
||||
</v-col>
|
||||
<v-col cols="12" md="6">
|
||||
<v-text-field v-model="settings.dl_limit" dense hide-details class="mb-5" :label="$t('modals.settings.speed.download')" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
|
||||
<v-list-item>
|
||||
<h5>
|
||||
<i>{{ $t('modals.settings.speed.tip') }}</i>
|
||||
</h5>
|
||||
</v-list-item>
|
||||
</v-col>
|
||||
|
||||
<v-divider :vertical="!phoneLayout" />
|
||||
|
||||
<v-col cols="12" sm="6">
|
||||
<v-subheader>{{ $t('modals.settings.speed.subheader.alternative') }}</v-subheader>
|
||||
|
||||
<v-row class="mx-1">
|
||||
<v-col cols="12" md="6">
|
||||
<v-text-field v-model="settings.alt_up_limit" dense hide-details class="mb-5" :label="$t('modals.settings.speed.upload')" />
|
||||
</v-col>
|
||||
<v-col cols="12" md="6">
|
||||
<v-text-field v-model="settings.alt_dl_limit" dense hide-details class="mb-5" :label="$t('modals.settings.speed.download')" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
|
||||
<v-list-item>
|
||||
<h5>
|
||||
<i>{{ $t('modals.settings.speed.tip') }}</i>
|
||||
</h5>
|
||||
</v-list-item>
|
||||
</v-col>
|
||||
</v-row>
|
||||
|
||||
<v-divider />
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.scheduler_enabled" hide-details class="ma-0 pa-0" :label="$t('modals.settings.speed.scheduler.subheader')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-row class="align-center">
|
||||
<v-col cols="1">
|
||||
<v-subheader>From</v-subheader>
|
||||
</v-col>
|
||||
<v-col cols="1">
|
||||
<v-text-field :disabled="true" v-model="settings.schedule_from_hour" />
|
||||
</v-col>
|
||||
<v-col cols="1">
|
||||
<v-text-field :disabled="true" v-model="settings.schedule_from_min" />
|
||||
</v-col>
|
||||
|
||||
<v-col cols="2">
|
||||
<v-dialog v-model="scheduler.from.modal" persistent width="290px">
|
||||
<template v-slot:activator="{ on, attrs }">
|
||||
<v-btn :disabled="!settings.scheduler_enabled" v-bind="attrs" v-on="on">{{ $t('modals.settings.speed.scheduler.selectButtonLabel') }}</v-btn>
|
||||
</template>
|
||||
<v-time-picker v-if="scheduler.from.modal" v-model="fromTime" full-width ampm-in-title>
|
||||
<v-spacer></v-spacer>
|
||||
<v-btn text color="primary" @click="scheduler.from.modal = false">Cancel</v-btn>
|
||||
<v-btn text color="primary" @click="onDialogCloseFrom()">OK</v-btn>
|
||||
</v-time-picker>
|
||||
</v-dialog>
|
||||
</v-col>
|
||||
|
||||
<v-col cols="1">
|
||||
<v-subheader>To</v-subheader>
|
||||
</v-col>
|
||||
<v-col cols="1">
|
||||
<v-text-field :disabled="true" v-model="settings.schedule_to_hour" />
|
||||
</v-col>
|
||||
<v-col cols="1">
|
||||
<v-text-field :disabled="true" v-model="settings.schedule_to_min" />
|
||||
</v-col>
|
||||
|
||||
<v-col cols="2">
|
||||
<v-dialog v-model="scheduler.to.modal" persistent width="290px">
|
||||
<template v-slot:activator="{ on, attrs }">
|
||||
<v-btn :disabled="!settings.scheduler_enabled" v-bind="attrs" v-on="on">{{ $t('modals.settings.speed.scheduler.selectButtonLabel') }}</v-btn>
|
||||
</template>
|
||||
<v-time-picker v-if="scheduler.to.modal" v-model="toTime" full-width ampm-in-title>
|
||||
<v-spacer></v-spacer>
|
||||
<v-btn text color="primary" @click="scheduler.to.modal = false">Cancel</v-btn>
|
||||
<v-btn text color="primary" @click="onDialogCloseTo()">OK</v-btn>
|
||||
</v-time-picker>
|
||||
</v-dialog>
|
||||
</v-col>
|
||||
</v-row>
|
||||
|
||||
<v-list-item>
|
||||
<v-select
|
||||
:disabled="!settings.scheduler_enabled"
|
||||
v-model="settings.scheduler_days"
|
||||
class="mb-5"
|
||||
height="1"
|
||||
flat
|
||||
dense
|
||||
hide-details
|
||||
outlined
|
||||
:items="schedulerOptions"
|
||||
:label="$t('modals.settings.speed.scheduler.when')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-divider />
|
||||
|
||||
<v-subheader>{{ $t('modals.settings.speed.subheader.settings') }}</v-subheader>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.limit_utp_rate" hide-details class="ma-0 pa-0" :label="$t('modals.settings.speed.settings.applyToUtp')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.limit_tcp_overhead" hide-details class="ma-0 pa-0" :label="$t('modals.settings.speed.settings.applyToTransportOverhead')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.limit_lan_peers" hide-details class="ma-0 pa-0" :label="$t('modals.settings.speed.settings.applyToPeersOnLan')" />
|
||||
</v-list-item>
|
||||
</v-card>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent } from 'vue'
|
||||
import { FullScreenModal, SettingsTab } from '@/mixins'
|
||||
import { SchedulerDays } from '@/enums/qbit/AppPreferences'
|
||||
|
||||
export default defineComponent({
|
||||
name: 'Speed',
|
||||
mixins: [SettingsTab, FullScreenModal],
|
||||
data() {
|
||||
return {
|
||||
scheduler: {
|
||||
from: {
|
||||
modal: false,
|
||||
hours: 0,
|
||||
minutes: 0
|
||||
},
|
||||
to: {
|
||||
modal: false,
|
||||
hours: 0,
|
||||
minutes: 0
|
||||
}
|
||||
},
|
||||
schedulerOptions: [
|
||||
{ text: this.$t('enums.scheduler.everyDay'), value: SchedulerDays.EVERY_DAY },
|
||||
{ text: this.$t('enums.scheduler.everyWeekday'), value: SchedulerDays.EVERY_WEEKDAY },
|
||||
{ text: this.$t('enums.scheduler.everyWeekend'), value: SchedulerDays.EVERY_WEEKEND },
|
||||
{ text: this.$t('enums.scheduler.everyMonday'), value: SchedulerDays.EVERY_MONDAY },
|
||||
{ text: this.$t('enums.scheduler.everyTuesday'), value: SchedulerDays.EVERY_TUESDAY },
|
||||
{ text: this.$t('enums.scheduler.everyWednesday'), value: SchedulerDays.EVERY_WEDNESDAY },
|
||||
{ text: this.$t('enums.scheduler.everyThursday'), value: SchedulerDays.EVERY_THURSDAY },
|
||||
{ text: this.$t('enums.scheduler.everyFriday'), value: SchedulerDays.EVERY_FRIDAY },
|
||||
{ text: this.$t('enums.scheduler.everySaturday'), value: SchedulerDays.EVERY_SATURDAY },
|
||||
{ text: this.$t('enums.scheduler.everySunday'), value: SchedulerDays.EVERY_SUNDAY }
|
||||
]
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
fromTime: {
|
||||
get: function () {
|
||||
return `${this.scheduler.from.hours}:${this.scheduler.from.minutes}`
|
||||
},
|
||||
set: function (newValue: string) {
|
||||
const [hours, minutes] = newValue.split(':')
|
||||
this.scheduler.from.hours = parseInt(hours)
|
||||
this.scheduler.from.minutes = parseInt(minutes)
|
||||
}
|
||||
},
|
||||
toTime: {
|
||||
get: function () {
|
||||
return `${this.scheduler.to.hours}:${this.scheduler.to.minutes}`
|
||||
},
|
||||
set: function (newValue: string) {
|
||||
const [hours, minutes] = newValue.split(':')
|
||||
this.scheduler.to.hours = parseInt(hours)
|
||||
this.scheduler.to.minutes = parseInt(minutes)
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.scheduler.from.hours = this.settings.schedule_from_hour
|
||||
this.scheduler.from.minutes = this.settings.schedule_from_min
|
||||
|
||||
this.scheduler.to.hours = this.settings.schedule_to_hour
|
||||
this.scheduler.to.minutes = this.settings.schedule_to_min
|
||||
},
|
||||
methods: {
|
||||
onDialogCloseFrom() {
|
||||
this.scheduler.from.modal = false
|
||||
this.settings.schedule_from_hour = this.scheduler.from.hours
|
||||
this.settings.schedule_from_min = this.scheduler.from.minutes
|
||||
},
|
||||
onDialogCloseTo() {
|
||||
this.scheduler.to.modal = false
|
||||
this.settings.schedule_to_hour = this.scheduler.to.hours
|
||||
this.settings.schedule_to_min = this.scheduler.to.minutes
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
|
@ -2,7 +2,7 @@
|
|||
<v-card flat>
|
||||
<v-row dense class="ma-0 pa-0">
|
||||
<v-col cols="12" md="6">
|
||||
<v-subheader>{{ $t('modals.settings.pageTagsAndCategories.subHeaderTags') }}</v-subheader>
|
||||
<v-subheader>{{ $t('modals.settings.tagsAndCategories.subHeaderTags') }}</v-subheader>
|
||||
<template v-for="(item, index) in availableTags">
|
||||
<v-list-item :key="item.title">
|
||||
<v-list-item-content>
|
||||
|
@ -18,13 +18,13 @@
|
|||
</template>
|
||||
<v-list-item>
|
||||
<v-btn class="mx-auto accent white--text elevation-0 px-4" @click="createTag">
|
||||
{{ $t('modals.settings.pageTagsAndCategories.btnCreateNew') }}
|
||||
{{ $t('modals.settings.tagsAndCategories.btnCreateNew') }}
|
||||
</v-btn>
|
||||
</v-list-item>
|
||||
</v-col>
|
||||
|
||||
<v-col cols="12" md="6">
|
||||
<v-subheader>{{ $t('modals.settings.pageTagsAndCategories.subHeaderCategories') }}</v-subheader>
|
||||
<v-subheader>{{ $t('modals.settings.tagsAndCategories.subHeaderCategories') }}</v-subheader>
|
||||
<template v-for="(item, index) in availableCategories">
|
||||
<v-list-item :key="item.title">
|
||||
<v-list-item-content>
|
||||
|
@ -46,7 +46,7 @@
|
|||
</template>
|
||||
<v-list-item>
|
||||
<v-btn class="mx-auto accent white--text elevation-0 px-4" @click="createCategory">
|
||||
{{ $t('modals.settings.pageTagsAndCategories.btnCreateNew') }}
|
||||
{{ $t('modals.settings.tagsAndCategories.btnCreateNew') }}
|
||||
</v-btn>
|
||||
</v-list-item>
|
||||
</v-col>
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
<v-card flat>
|
||||
<v-tabs v-model="tab">
|
||||
<v-tab href="#general">
|
||||
{{ $t('modals.settings.pageVueTorrent.tabName.general') }}
|
||||
{{ $t('modals.settings.vueTorrent.tabName.general') }}
|
||||
</v-tab>
|
||||
<v-tab href="#desktopCard">
|
||||
{{ $t('modals.settings.pageVueTorrent.tabName.desktopCard') }}
|
||||
{{ $t('modals.settings.vueTorrent.tabName.desktopCard') }}
|
||||
</v-tab>
|
||||
<v-tab href="#mobileCard">
|
||||
{{ $t('modals.settings.pageVueTorrent.tabName.mobileCard') }}
|
||||
{{ $t('modals.settings.vueTorrent.tabName.mobileCard') }}
|
||||
</v-tab>
|
||||
</v-tabs>
|
||||
<v-tabs-items v-model="tab" touchless>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<v-row dense>
|
||||
<v-col cols="12" md="6">
|
||||
<v-subheader>
|
||||
{{ $t('modals.settings.pageVueTorrent.pageDesktopCard.busyTorrentTip') }}
|
||||
{{ $t('modals.settings.vueTorrent.desktopCard.busyTorrentTip') }}
|
||||
</v-subheader>
|
||||
<v-row dense>
|
||||
<v-list flat class="ma-2 pa-0">
|
||||
|
@ -16,7 +16,7 @@
|
|||
|
||||
<v-col cols="12" md="6">
|
||||
<v-subheader>
|
||||
{{ $t('modals.settings.pageVueTorrent.pageDesktopCard.completedTorrentTip') }}
|
||||
{{ $t('modals.settings.vueTorrent.desktopCard.completedTorrentTip') }}
|
||||
</v-subheader>
|
||||
<v-row dense>
|
||||
<v-list flat class="ma-2 pa-0">
|
||||
|
|
|
@ -1,251 +1,134 @@
|
|||
<template>
|
||||
<v-card flat>
|
||||
<v-subheader>
|
||||
{{ $t('modals.settings.pageVueTorrent.pageGeneral.tip') }}
|
||||
{{ $t('modals.settings.vueTorrent.general.tip') }}
|
||||
</v-subheader>
|
||||
|
||||
<v-list-item>
|
||||
<v-row dense>
|
||||
<v-col>
|
||||
<v-switch
|
||||
v-model="webuiSettings.showCurrentSpeed"
|
||||
class="v-input--reverse pa-0 ma-0"
|
||||
<v-checkbox v-model="settings.showCurrentSpeed" hide-details class="ma-0 pa-0" :label="$t('modals.settings.vueTorrent.general.currentSpeed')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.showSpeedGraph" hide-details class="ma-0 pa-0" :label="$t('modals.settings.vueTorrent.general.speedGraph')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.showAlltimeStat" hide-details class="ma-0 pa-0" :label="$t('modals.settings.vueTorrent.general.allTimeStats')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.showSessionStat" hide-details class="ma-0 pa-0" :label="$t('modals.settings.vueTorrent.general.sessionStats')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.showFreeSpace" hide-details class="ma-0 pa-0" :label="$t('modals.settings.vueTorrent.general.freeSpace')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.showTrackerFilter" hide-details class="ma-0 pa-0" :label="$t('modals.settings.vueTorrent.general.trackerFilter')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.rightDrawer" hide-details class="ma-0 pa-0" :label="$t('modals.settings.vueTorrent.general.rightDrawer')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.topPagination" hide-details class="ma-0 pa-0" :label="$t('modals.settings.vueTorrent.general.topPagination')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.openSideBarOnStart" hide-details class="ma-0 pa-0" :label="$t('modals.settings.vueTorrent.general.openSideBarOnStart')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item class="mb-3">
|
||||
<v-checkbox v-model="settings.showShutdownButton" hide-details class="ma-0 pa-0" :label="$t('modals.settings.vueTorrent.general.showShutdownButton')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item class="mb-3">
|
||||
<v-row>
|
||||
<v-col cols="12" sm="6" md="3">
|
||||
<v-select v-model="settings.lang" height="1" flat dense hide-details outlined :items="languages" :label="$t('modals.settings.vueTorrent.general.language')" />
|
||||
</v-col>
|
||||
<v-col cols="12" sm="6" md="3">
|
||||
<v-select
|
||||
v-model="settings.paginationSize"
|
||||
height="1"
|
||||
flat
|
||||
dense
|
||||
hide-details
|
||||
inset
|
||||
:label="$t('modals.settings.pageVueTorrent.pageGeneral.currentSpeed')"
|
||||
outlined
|
||||
:items="paginationSizes"
|
||||
:label="$t('modals.settings.vueTorrent.general.paginationSize')"
|
||||
/>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-row dense>
|
||||
<v-col>
|
||||
<v-switch
|
||||
v-model="webuiSettings.showSpeedGraph"
|
||||
class="v-input--reverse pa-0 ma-0"
|
||||
hide-details
|
||||
inset
|
||||
:label="$t('modals.settings.pageVueTorrent.pageGeneral.speedGraph')"
|
||||
/>
|
||||
<v-col cols="12" sm="6" md="3">
|
||||
<v-select v-model="settings.title" height="1" flat dense hide-details outlined :items="titleOptions" :label="$t('modals.settings.vueTorrent.general.vueTorrentTitle')" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-row dense>
|
||||
<v-col>
|
||||
<v-switch
|
||||
v-model="webuiSettings.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="webuiSettings.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="webuiSettings.showFreeSpace"
|
||||
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="webuiSettings.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="webuiSettings.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>
|
||||
<v-list-item>
|
||||
<v-row dense>
|
||||
<v-col>
|
||||
<v-switch
|
||||
v-model="webuiSettings.topPagination"
|
||||
class="v-input--reverse pa-0 ma-0"
|
||||
hide-details
|
||||
inset
|
||||
:label="$t('modals.settings.pageVueTorrent.pageGeneral.topPagination')"
|
||||
/>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-row dense>
|
||||
<v-col>
|
||||
<v-switch
|
||||
v-model="webuiSettings.openSideBarOnStart"
|
||||
class="v-input--reverse pa-0 ma-0"
|
||||
hide-details
|
||||
inset
|
||||
:label="$t('modals.settings.pageVueTorrent.pageGeneral.openSideBarOnStart')"
|
||||
/>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-row dense>
|
||||
<v-col>
|
||||
<v-switch
|
||||
v-model="webuiSettings.showShutdownButton"
|
||||
class="v-input--reverse pa-0 ma-0"
|
||||
hide-details
|
||||
inset
|
||||
:label="$t('modals.settings.pageVueTorrent.pageGeneral.showShutdownButton')"
|
||||
/>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-row dense>
|
||||
<v-col cols="8" sm="8" md="10">
|
||||
<p class="subtitle-1 mt-2">
|
||||
{{ $t('modals.settings.pageVueTorrent.pageGeneral.language') }}
|
||||
</p>
|
||||
</v-col>
|
||||
<v-col cols="4" sm="4" md="2">
|
||||
<v-select v-model="webuiSettings.lang" flat solo dense hide-details background-color="background" class="rounded-xl" :items="languages" item-text="caption" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-row dense>
|
||||
<v-col cols="8" sm="8" md="10">
|
||||
<p class="subtitle-1 mt-2">
|
||||
{{ $t('modals.settings.pageVueTorrent.pageGeneral.paginationSize') }}
|
||||
</p>
|
||||
</v-col>
|
||||
<v-col cols="4" sm="4" md="2">
|
||||
<v-select v-model="webuiSettings.paginationSize" flat solo dense hide-details background-color="background" class="rounded-xl" :items="paginationSizes" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-row dense>
|
||||
<v-col cols="8" sm="8" md="10">
|
||||
<p class="subtitle-1 mt-2">
|
||||
{{ $t('modals.settings.pageVueTorrent.pageGeneral.vueTorrentTitle') }}
|
||||
</p>
|
||||
</v-col>
|
||||
<v-col cols="4" sm="4" md="2">
|
||||
<v-select v-model="webuiSettings.title" flat solo dense hide-details background-color="background" class="rounded-xl" :items="titleOptions" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-row dense>
|
||||
<v-col sm="6" md="9">
|
||||
<p class="subtitle-1 mt-2">
|
||||
{{ $t('modals.settings.pageVueTorrent.pageGeneral.dateFormat') }}
|
||||
</p>
|
||||
</v-col>
|
||||
<v-col sm="6" md="3">
|
||||
<v-col cols="12" sm="6" md="3">
|
||||
<v-text-field
|
||||
v-model="webuiSettings.dateFormat"
|
||||
v-model="settings.dateFormat"
|
||||
class="mb-2"
|
||||
outlined
|
||||
dense
|
||||
hide-details
|
||||
:aria-label="$t('modals.settings.pageVueTorrent.pageGeneral.dateFormat')"
|
||||
placeholder="DD/MM/YYYY, HH:mm:ss"
|
||||
label="using Dayjs"
|
||||
hint="using Dayjs"
|
||||
:label="$t('modals.settings.vueTorrent.general.dateFormat')"
|
||||
/>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-row dense>
|
||||
<v-col cols="10" sm="10" md="11">
|
||||
<p class="subtitle-1">
|
||||
{{ $t('modals.settings.pageVueTorrent.pageGeneral.currentVersion') }}
|
||||
</p>
|
||||
<v-row>
|
||||
<v-col cols="6" md="2" class="d-flex align-center justify-end">
|
||||
<h3>{{ $t('modals.settings.vueTorrent.general.currentVersion') }}</h3>
|
||||
</v-col>
|
||||
<v-col cols="2" sm="2" md="1">
|
||||
<a target="_blank" :href="`https://github.com/WDaan/VueTorrent/releases/tag/v${version}`">
|
||||
<p class="mb-2">{{ version }}</p>
|
||||
</a>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-row dense>
|
||||
<v-col cols="10" sm="10" md="11">
|
||||
<p class="subtitle-1">
|
||||
{{ $t('modals.settings.pageVueTorrent.pageGeneral.qbittorrentVersion') }}
|
||||
</p>
|
||||
</v-col>
|
||||
<v-col cols="2" sm="2" md="1">
|
||||
<a target="_blank" :href="`https://github.com/qbittorrent/qBittorrent/releases/tag/release-${Qbitversion}`">
|
||||
<p class="mb-2">
|
||||
{{ Qbitversion }}
|
||||
</p>
|
||||
</a>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-row dense>
|
||||
<v-col cols="7" sm="7" md="10">
|
||||
<p class="subtitle-1">
|
||||
{{ $t('modals.settings.pageVueTorrent.pageGeneral.registerMagnetHeader') }}
|
||||
</p>
|
||||
</v-col>
|
||||
<v-col cols="4" sm="4" md="2">
|
||||
<v-btn @click="registerMagnetHandler">{{ $t('modals.settings.pageVueTorrent.pageGeneral.registerMagnetButton') }}</v-btn>
|
||||
<v-col cols="6" md="2" class="d-flex align-center justify-start">
|
||||
<h3>
|
||||
<a target="_blank" :href="`https://github.com/WDaan/VueTorrent/releases/tag/v${version}`">{{ version }}</a>
|
||||
</h3>
|
||||
</v-col>
|
||||
|
||||
<v-col cols="6" md="2" class="d-flex align-center justify-end">
|
||||
<h3>{{ $t('modals.settings.vueTorrent.general.qbittorrentVersion') }}</h3>
|
||||
</v-col>
|
||||
<v-col cols="6" md="2" class="d-flex align-center justify-start">
|
||||
<h3>
|
||||
<a target="_blank" :href="`https://github.com/qbittorrent/qBittorrent/releases/tag/release-${Qbitversion}`">{{ Qbitversion }}</a>
|
||||
</h3>
|
||||
</v-col>
|
||||
|
||||
<v-col cols="12" md="4" class="d-flex align-center justify-center">
|
||||
<v-btn @click="registerMagnetHandler">{{ $t('modals.settings.vueTorrent.general.registerMagnet') }}</v-btn>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-textarea v-model="settingsField" />
|
||||
</v-list-item>
|
||||
<v-list-item class="remove-after justify-content-evenly">
|
||||
<v-btn @click="importSettings">{{ $t('modals.settings.pageVueTorrent.pageGeneral.importSettings') }}</v-btn>
|
||||
<v-btn @click="exportSettings">{{ $t('modals.settings.pageVueTorrent.pageGeneral.exportSettings') }}</v-btn>
|
||||
</v-list-item>
|
||||
<v-list-item class="justify-center pb-2">
|
||||
<v-btn dark color="red" @click="resetSettings">{{ $t('modals.settings.pageVueTorrent.pageGeneral.resetSettings') }}</v-btn>
|
||||
|
||||
<v-list-item>
|
||||
<v-row>
|
||||
<v-col cols="12" sm="6" class="d-flex align-center justify-center">
|
||||
<v-btn @click="importSettings">{{ $t('modals.settings.vueTorrent.general.importSettings') }}</v-btn>
|
||||
</v-col>
|
||||
|
||||
<v-col cols="12" sm="6" class="d-flex align-center justify-center">
|
||||
<v-btn @click="exportSettings">{{ $t('modals.settings.vueTorrent.general.exportSettings') }}</v-btn>
|
||||
</v-col>
|
||||
|
||||
<v-col cols="12" class="d-flex align-center justify-center">
|
||||
<v-btn dark color="red" @click="resetSettings">{{ $t('modals.settings.vueTorrent.general.resetSettings') }}</v-btn>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
</v-card>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
<script lang="ts">
|
||||
import { defineComponent } from 'vue'
|
||||
import { mapState, mapGetters } from 'vuex'
|
||||
import { Qbit } from '@/services/qbit'
|
||||
import { LOCALES } from '@/lang/locales'
|
||||
|
@ -253,8 +136,9 @@ import { General } from '@/mixins'
|
|||
import { TitleOptions } from '@/enums/vuetorrent'
|
||||
import Ajv from 'ajv'
|
||||
import { StoreStateSchema } from '@/schemas'
|
||||
import WebUISettings from '@/types/vuetorrent/WebUISettings'
|
||||
|
||||
export default {
|
||||
export default defineComponent({
|
||||
name: 'VueTorrent-General',
|
||||
mixins: [General],
|
||||
data() {
|
||||
|
@ -262,7 +146,7 @@ export default {
|
|||
languages: LOCALES,
|
||||
paginationSizes: [5, 15, 30, 50],
|
||||
titleOptions: [TitleOptions.DEFAULT, TitleOptions.GLOBAL_SPEED, TitleOptions.FIRST_TORRENT_STATUS],
|
||||
Qbitversion: 0,
|
||||
Qbitversion: '',
|
||||
settingsField: ''
|
||||
}
|
||||
},
|
||||
|
@ -271,6 +155,9 @@ export default {
|
|||
...mapGetters(['getAppVersion']),
|
||||
version() {
|
||||
return this.getAppVersion()
|
||||
},
|
||||
settings(): WebUISettings {
|
||||
return this.webuiSettings
|
||||
}
|
||||
},
|
||||
created() {
|
||||
|
@ -311,15 +198,15 @@ export default {
|
|||
},
|
||||
registerMagnetHandler() {
|
||||
if (typeof navigator.registerProtocolHandler !== 'function') {
|
||||
this.$toast.error(this.$t("toast.magnetHandlerNotSupported").toString());
|
||||
return;
|
||||
this.$toast.error(this.$t('toast.magnetHandlerNotSupported').toString())
|
||||
return
|
||||
}
|
||||
|
||||
const templateUrl = location.href.replace('/settings', '/download=%s')
|
||||
navigator.registerProtocolHandler('magnet', templateUrl);
|
||||
navigator.registerProtocolHandler('magnet', templateUrl)
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
@ -327,16 +214,4 @@ export default {
|
|||
padding-top: 10px !important;
|
||||
padding-bottom: 10px !important;
|
||||
}
|
||||
// Reversed input variant
|
||||
:deep(.v-input--reverse .v-input__slot) {
|
||||
@import 'src/styles/styles.scss';
|
||||
@include reverse-switch;
|
||||
}
|
||||
|
||||
.justify-content-evenly {
|
||||
justify-content: space-evenly;
|
||||
}
|
||||
.remove-after::after {
|
||||
content: unset;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<v-row dense>
|
||||
<v-col cols="12" md="6">
|
||||
<v-subheader>
|
||||
{{ $t('modals.settings.pageVueTorrent.pageMobileCard.busyTorrentTip') }}
|
||||
{{ $t('modals.settings.vueTorrent.mobileCard.busyTorrentTip') }}
|
||||
</v-subheader>
|
||||
<v-row dense>
|
||||
<v-list flat class="ma-2 pa-0">
|
||||
|
@ -14,7 +14,7 @@
|
|||
|
||||
<v-col cols="12" md="6">
|
||||
<v-subheader>
|
||||
{{ $t('modals.settings.pageVueTorrent.pageMobileCard.completedTorrentTip') }}
|
||||
{{ $t('modals.settings.vueTorrent.mobileCard.completedTorrentTip') }}
|
||||
</v-subheader>
|
||||
<v-row dense>
|
||||
<v-list flat class="ma-2 pa-0">
|
||||
|
|
|
@ -1,102 +1,290 @@
|
|||
<template>
|
||||
<v-card flat>
|
||||
<v-subheader>{{ $t('modals.settings.webUI.interface.subheader') }}</v-subheader>
|
||||
|
||||
<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-row>
|
||||
<v-col cols="9">
|
||||
<v-text-field v-model="settings.web_ui_address" class="mr-1" outlined dense hide-details="true" :label="$t('modals.settings.webUI.interface.ipAddress')" />
|
||||
</v-col>
|
||||
<v-col cols="3">
|
||||
<v-text-field v-model="settings.web_ui_port" class="ml-1" outlined dense type="number" hide-details="true" :label="$t('modals.settings.webUI.interface.port')" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.web_ui_upnp" hide-details class="ma-0 pa-0" :label="$t('modals.settings.connection.listeningPort.useUPnP')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.alternative_webui_enabled" hide-details class="ma-0 pa-0" :label="$t('modals.settings.webUI.interface.useAlternativeWebUI')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
:disabled="!settings.alternative_webui_enabled"
|
||||
v-model="settings.alternative_webui_path"
|
||||
class="mb-2"
|
||||
outlined
|
||||
dense
|
||||
hide-details
|
||||
:label="$t('modals.settings.pageWebUI.filesLocation')"
|
||||
:disabled="!settings.alternative_webui_enabled"
|
||||
:label="$t('modals.settings.webUI.interface.filesLocation')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-divider insert />
|
||||
<v-subheader>{{ $t('modals.settings.pageWebUI.webUserInterface') }}</v-subheader>
|
||||
|
||||
<v-divider class="mt-4" />
|
||||
<v-subheader>{{ $t('modals.settings.webUI.authentication.subheader') }}</v-subheader>
|
||||
|
||||
<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-row>
|
||||
<v-col cols="6">
|
||||
<v-text-field v-model="settings.web_ui_username" outlined dense hide-details="true" :label="$t('modals.settings.webUI.authentication.username')" />
|
||||
</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-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
<v-divider insert />
|
||||
<v-subheader>{{ $t('modals.settings.pageWebUI.authentication') }}</v-subheader>
|
||||
<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-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-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-row class="ml-5 mr-5 pb-4">
|
||||
<v-col cols="6" class="pa-0">
|
||||
<v-col cols="6">
|
||||
<v-text-field
|
||||
v-model="settings.web_ui_max_auth_fail_count"
|
||||
class="mr-1"
|
||||
v-model="settings.web_ui_password"
|
||||
outlined
|
||||
dense
|
||||
type="number"
|
||||
hide-details="true"
|
||||
:label="$t('modals.settings.pageWebUI.maxAttempts')"
|
||||
:label="$t('modals.settings.webUI.authentication.password')"
|
||||
persistent-placeholder
|
||||
:placeholder="$t('modals.settings.webUI.authentication.passwordPlaceholder')"
|
||||
/>
|
||||
</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-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
<v-list-item class="ml-5 mr-4">
|
||||
<v-text-field
|
||||
v-model="settings.web_ui_session_timeout"
|
||||
class="mr-1"
|
||||
outlined
|
||||
dense
|
||||
type="number"
|
||||
hide-details="true"
|
||||
:label="$t('modals.settings.pageWebUI.sessionTimeout')"
|
||||
/>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.bypass_local_auth" hide-details class="ma-0 pa-0" :label="$t('modals.settings.webUI.authentication.bypassLocalhost')" />
|
||||
</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-list-item>
|
||||
<v-checkbox v-model="settings.bypass_auth_subnet_whitelist_enabled" hide-details class="ma-0 pa-0" :label="$t('modals.settings.webUI.authentication.bypassWhitelist')" />
|
||||
</v-list-item>
|
||||
<v-list-item class="ml-4">
|
||||
<v-checkbox
|
||||
v-model="settings.bypass_auth_subnet_whitelist_enabled"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.pageWebUI.bypassAuthenticationForClientsInWhitelisted')"
|
||||
/>
|
||||
</v-list-item>
|
||||
<v-list-item class="ml-4">
|
||||
|
||||
<v-list-item>
|
||||
<v-textarea
|
||||
v-model="settings.bypass_auth_subnet_whitelist"
|
||||
class="mr-1"
|
||||
class="mb-5"
|
||||
outlined
|
||||
dense
|
||||
placeholder="Example: 172.17.32.0/24, fdff:ffff:c8::/40"
|
||||
:placeholder="$t('modals.settings.webUI.authentication.whitelistExamples')"
|
||||
hide-details="true"
|
||||
:disabled="!settings.bypass_auth_subnet_whitelist_enabled"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.web_ui_max_auth_fail_count"
|
||||
class="mb-5"
|
||||
outlined
|
||||
dense
|
||||
type="number"
|
||||
hide-details="true"
|
||||
:label="$t('modals.settings.webUI.authentication.maxAttempts')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.web_ui_ban_duration"
|
||||
outlined
|
||||
dense
|
||||
type="number"
|
||||
persistent-hint
|
||||
:hint="$t('modals.settings.webUI.authentication.banDurationHint')"
|
||||
:label="$t('modals.settings.webUI.authentication.banDuration')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
v-model="settings.web_ui_session_timeout"
|
||||
outlined
|
||||
dense
|
||||
type="number"
|
||||
persistent-hint
|
||||
:hint="$t('modals.settings.webUI.authentication.sessionTimeoutHint')"
|
||||
:label="$t('modals.settings.webUI.authentication.sessionTimeout')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-divider />
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.use_https" hide-details class="ma-0 pa-0" :label="$t('modals.settings.webUI.https.subheader')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
:disabled="!settings.use_https"
|
||||
v-model="settings.web_ui_https_cert_path"
|
||||
class="mb-4"
|
||||
outlined
|
||||
dense
|
||||
hide-details
|
||||
:label="$t('modals.settings.webUI.https.certificate')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-text-field :disabled="!settings.use_https" v-model="settings.web_ui_https_key_path" outlined dense hide-details :label="$t('modals.settings.webUI.https.key')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<a href="https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts" target="_blank">{{ $t('modals.settings.webUI.https.tip') }}</a>
|
||||
</v-list-item>
|
||||
|
||||
<v-divider />
|
||||
<v-subheader>{{ $t('modals.settings.webUI.security.subheader') }}</v-subheader>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.web_ui_clickjacking_protection_enabled" hide-details class="ma-0 pa-0" :label="$t('modals.settings.webUI.security.clickjacking')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.web_ui_csrf_protection_enabled" hide-details class="ma-0 pa-0" :label="$t('modals.settings.webUI.security.csrf')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox
|
||||
:disabled="!settings.use_https"
|
||||
v-model="settings.web_ui_secure_cookie_enabled"
|
||||
hide-details
|
||||
class="ma-0 pa-0"
|
||||
:label="$t('modals.settings.webUI.security.secureCookie')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.web_ui_host_header_validation_enabled" hide-details class="ma-0 pa-0" :label="$t('modals.settings.webUI.security.hostHeaderValidation')" />
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-textarea
|
||||
:disabled="!settings.web_ui_host_header_validation_enabled"
|
||||
v-model="settings.web_ui_domain_list"
|
||||
outlined
|
||||
required
|
||||
auto-grow
|
||||
clearable
|
||||
persistent-hint
|
||||
:hint="$t('modals.settings.webUI.security.hostHeaderValidationHint')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-divider />
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.web_ui_use_custom_http_headers_enabled" hide-details class="ma-0 pa-0" :label="$t('modals.settings.webUI.customHeaders')" />
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-textarea
|
||||
:disabled="!settings.web_ui_use_custom_http_headers_enabled"
|
||||
v-model="settings.web_ui_custom_http_headers"
|
||||
outlined
|
||||
required
|
||||
auto-grow
|
||||
clearable
|
||||
:placeholder="$t('modals.settings.webUI.customHeadersPlaceholder')"
|
||||
persistent-hint
|
||||
:hint="$t('modals.settings.webUI.customHeadersHint')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-divider />
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.web_ui_reverse_proxy_enabled" hide-details class="ma-0 pa-0" :label="$t('modals.settings.webUI.reverseProxySupport')" />
|
||||
</v-list-item>
|
||||
<v-list-item>
|
||||
<v-text-field
|
||||
:disabled="!settings.web_ui_reverse_proxy_enabled"
|
||||
v-model="settings.web_ui_reverse_proxies_list"
|
||||
outlined
|
||||
required
|
||||
auto-grow
|
||||
clearable
|
||||
persistent-hint
|
||||
:hint="$t('modals.settings.webUI.proxiesListHint')"
|
||||
:label="$t('modals.settings.webUI.proxiesList')"
|
||||
/>
|
||||
</v-list-item>
|
||||
|
||||
<v-divider />
|
||||
|
||||
<v-list-item>
|
||||
<v-checkbox v-model="settings.dyndns_enabled" hide-details class="ma-0 pa-0" :label="$t('modals.settings.webUI.dynDns.subheader')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item>
|
||||
<v-row>
|
||||
<v-col cols="8">
|
||||
<v-select :disabled="!settings.dyndns_enabled" class="mb-5" v-model="dynDnsProvider" height="1" flat dense hide-details outlined :items="dynDnsProviderOptions" />
|
||||
</v-col>
|
||||
<v-col cols="4">
|
||||
<v-btn :disabled="!settings.dyndns_enabled" @click="registerDynDNS">{{ $t('modals.settings.webUI.dynDns.registerBtn') }}</v-btn>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item class="mb-4">
|
||||
<v-text-field :disabled="!settings.dyndns_enabled" v-model="settings.dyndns_domain" dense hide-details outlined :label="$t('modals.settings.webUI.dynDns.domainName')" />
|
||||
</v-list-item>
|
||||
|
||||
<v-list-item class="mb-4">
|
||||
<v-row>
|
||||
<v-col cols="12" md="6">
|
||||
<v-text-field :disabled="!settings.dyndns_enabled" v-model="settings.dyndns_username" dense hide-details :label="$t('modals.settings.webUI.dynDns.username')" />
|
||||
</v-col>
|
||||
<v-col cols="12" md="6">
|
||||
<v-text-field
|
||||
:disabled="!settings.dyndns_enabled"
|
||||
v-model="settings.dyndns_password"
|
||||
dense
|
||||
hide-details
|
||||
:label="$t('modals.settings.webUI.dynDns.password')"
|
||||
:type="showPassword ? 'text' : 'password'"
|
||||
:append-icon="!settings.dyndns_enabled ? '' : showPassword ? mdiEye : mdiEyeOff"
|
||||
@click:append="showPassword = !showPassword"
|
||||
/>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-list-item>
|
||||
</v-card>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
<script lang="ts">
|
||||
import { FullScreenModal, SettingsTab } from '@/mixins'
|
||||
import { defineComponent } from 'vue'
|
||||
import { mdiEye, mdiEyeOff } from '@mdi/js'
|
||||
|
||||
export default {
|
||||
export default defineComponent({
|
||||
name: 'WebUI',
|
||||
mixins: [SettingsTab, FullScreenModal]
|
||||
}
|
||||
mixins: [SettingsTab, FullScreenModal],
|
||||
data() {
|
||||
return {
|
||||
dynDnsProvider: 'https://www.dyndns.com/account/services/hosts/add.html',
|
||||
dynDnsProviderOptions: [
|
||||
{
|
||||
text: this.$t('modals.settings.webUI.dynDns.providers.dynDns'),
|
||||
value: 'https://www.dyndns.com/account/services/hosts/add.html'
|
||||
},
|
||||
{
|
||||
text: this.$t('modals.settings.webUI.dynDns.providers.noIp'),
|
||||
value: 'http://www.no-ip.com/services/managed_dns/free_dynamic_dns.html'
|
||||
}
|
||||
],
|
||||
showPassword: false,
|
||||
mdiEye,
|
||||
mdiEyeOff
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
registerDynDNS() {
|
||||
window.open(this.dynDnsProvider)
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
import WebUI from './WebUI.vue'
|
||||
import BitTorrent from './BitTorrent.vue'
|
||||
import Downloads from './Downloads.vue'
|
||||
import VueTorrent from './VueTorrent.vue'
|
||||
import TagsAndCategories from './TagsAndCategories.vue'
|
||||
import Downloads from './Downloads.vue'
|
||||
import Connection from './Connection.vue'
|
||||
import Speed from './Speed.vue'
|
||||
import BitTorrent from './BitTorrent.vue'
|
||||
import Rss from './Rss.vue'
|
||||
import WebUI from './WebUI.vue'
|
||||
import TagsAndCategories from './TagsAndCategories.vue'
|
||||
import Advanced from './Advanced.vue'
|
||||
|
||||
export { WebUI, BitTorrent, Downloads, VueTorrent, TagsAndCategories, Connection, Rss }
|
||||
export { VueTorrent, Downloads, Connection, Speed, BitTorrent, Rss, WebUI, TagsAndCategories, Advanced }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<v-card flat>
|
||||
<v-row dense class="ma-0 pa-0">
|
||||
<v-col cols="12" md="6">
|
||||
<v-subheader>{{ $t('modals.detail.pageTagsAndCategories.subHeaderTag') }}</v-subheader>
|
||||
<v-subheader>{{ $t('modals.detail.tagsAndCategories.subHeaderTag') }}</v-subheader>
|
||||
<v-list-item-group :value="activeTags" active-class="accent--text" multiple>
|
||||
<template v-for="(item, index) in availableTags">
|
||||
<v-list-item link @click="addTag(item)" :key="item.title">
|
||||
|
@ -16,7 +16,7 @@
|
|||
</v-col>
|
||||
|
||||
<v-col cols="12" md="6">
|
||||
<v-subheader>{{ $t('modals.detail.pageTagsAndCategories.subHeaderCategories') }}</v-subheader>
|
||||
<v-subheader>{{ $t('modals.detail.tagsAndCategories.subHeaderCategories') }}</v-subheader>
|
||||
<v-list-item-group :value="activeCategory" active-class="accent--text">
|
||||
<template v-for="(item, index) in availableCategories">
|
||||
<v-list-item link @click="setCategory(item)" :key="item.title">
|
||||
|
|
|
@ -29,12 +29,10 @@ export enum MaxRatioAction {
|
|||
}
|
||||
|
||||
export enum ProxyType {
|
||||
DISABLED = -1,
|
||||
HTTP_WITHOUT_AUTH = 1,
|
||||
SOCKS5_WITHOUT_AUTH,
|
||||
HTTP_WITH_AUTH,
|
||||
SOCKS5_WITH_AUTH,
|
||||
SOCKS4_WITHOUT_AUTH
|
||||
DISABLED = 0,
|
||||
HTTP = 1,
|
||||
SOCKS5 = 2,
|
||||
SOCKS4 = 5
|
||||
}
|
||||
|
||||
enum ScanDirsEnum {
|
||||
|
@ -77,3 +75,15 @@ export enum UtpTcpMixedMode {
|
|||
PREFER_TCP,
|
||||
PEER_PROPORTIONAL
|
||||
}
|
||||
|
||||
export enum DiskIOType {
|
||||
DEFAULT,
|
||||
MEMORY_MAPPED_FILES,
|
||||
POSIX_COMPLIANT
|
||||
}
|
||||
|
||||
export enum DiskIOMode {
|
||||
DISABLE_OS_CACHE,
|
||||
ENABLE_OS_CACHE,
|
||||
WRITE_THROUGH
|
||||
}
|
||||
|
|
468
src/lang/en.json
468
src/lang/en.json
|
@ -206,21 +206,23 @@
|
|||
},
|
||||
"settings": {
|
||||
"tabName": {
|
||||
"VueTorrent": "VueTorrent",
|
||||
"vueTorrent": "VueTorrent",
|
||||
"downloads": "Downloads",
|
||||
"connection": "Connection",
|
||||
"speed": "Speed",
|
||||
"bittorrent": "BitTorrent",
|
||||
"rss": "RSS",
|
||||
"webUI": "WebUI",
|
||||
"tagsAndCategories": "Tags & Categories"
|
||||
"tagsAndCategories": "Tags & Categories",
|
||||
"advanced": "Advanced"
|
||||
},
|
||||
"pageVueTorrent": {
|
||||
"vueTorrent": {
|
||||
"tabName": {
|
||||
"general": "General",
|
||||
"desktopCard": "Desktop Card",
|
||||
"mobileCard": "Mobile Card"
|
||||
},
|
||||
"pageGeneral": {
|
||||
"general": {
|
||||
"tip": "These settings are for the custom WebUI itself",
|
||||
"currentSpeed": "Show Current Speed",
|
||||
"speedGraph": "Show Speed Graph",
|
||||
|
@ -230,148 +232,359 @@
|
|||
"trackerFilter": "Show Tracker Filter",
|
||||
"rightDrawer": "Right Drawer",
|
||||
"topPagination": "Top Pagination",
|
||||
"language": "Language:",
|
||||
"paginationSize": "Pagination size:",
|
||||
"vueTorrentTitle": "VueTorrent title:",
|
||||
"language": "Language",
|
||||
"paginationSize": "Pagination size",
|
||||
"vueTorrentTitle": "VueTorrent title",
|
||||
"dateFormat": "Date Format",
|
||||
"openSideBarOnStart": "Open Side Bar on launch",
|
||||
"showShutdownButton": "Show shutdown button",
|
||||
"currentVersion": "Current Version:",
|
||||
"qbittorrentVersion": "QBittorrent Version:",
|
||||
"registerMagnetHeader": "Register to handle magnet links...",
|
||||
"registerMagnetButton": "Register",
|
||||
"currentVersion": "Current Version",
|
||||
"qbittorrentVersion": "QBittorrent Version",
|
||||
"registerMagnet": "Register magnet links",
|
||||
"importSettings": "Import Settings",
|
||||
"exportSettings": "Export Settings",
|
||||
"resetSettings": "Reset Settings"
|
||||
},
|
||||
"pageDesktopCard": {
|
||||
"desktopCard": {
|
||||
"busyTorrentTip": "Properties to display for busy torrents on desktop",
|
||||
"completedTorrentTip": "Properties to display for completed torrents on desktop"
|
||||
},
|
||||
"pageMobileCard": {
|
||||
"mobileCard": {
|
||||
"busyTorrentTip": "Properties to display for busy torrents on mobile",
|
||||
"completedTorrentTip": "Properties to display for completed torrents on mobile"
|
||||
}
|
||||
},
|
||||
"pageDownloads": {
|
||||
"subHeaderWhenAddTorrent": "When adding a torrent",
|
||||
"downloads": {
|
||||
"whenAddTorrent": {
|
||||
"subheader": "When adding a torrent",
|
||||
"donotAutoStart": "Do not start the download automatically",
|
||||
"autoDeleteMode": "Delete .torrent files afterwards"
|
||||
},
|
||||
"subHeaderPublicSettings": "Public Settings",
|
||||
"publicSettings": {
|
||||
"preAllocateDisk": "Pre-allocate disk space for all files",
|
||||
"appendQBExtension": "Append .!qB extension to incomplete files"
|
||||
},
|
||||
"subHeaderSaveManagement": "Saving Management",
|
||||
"saveManagement": {
|
||||
"autoManagement": "Automatic Torrent Management",
|
||||
"relocate": "Relocate torrent when category changes",
|
||||
"subheader": "Saving Management",
|
||||
"autoTMMEnabled": "Default Torrent Management Mode",
|
||||
"defaultTMMOptions": {
|
||||
"manual": "Manual",
|
||||
"automatic": "Automatic"
|
||||
},
|
||||
"torrentChangedTMM": "When Torrent Category changed",
|
||||
"savePathChangedTMM": "When Default Save Path changed",
|
||||
"categoryChangedTMM": "When Category Save Path changed",
|
||||
"paramChangedTMMOptions": {
|
||||
"relocateTorrent": "Relocate torrent",
|
||||
"switchToManual": "Switch torrent to Manual Mode"
|
||||
},
|
||||
"defaultSavePath": "Default Save Path",
|
||||
"keepIncompleteIn": "Keep incomplete torrents in:",
|
||||
"autoEnabled_onAdded": "Run external program on torrent added:",
|
||||
"autoLabel_onAdded": "Command",
|
||||
"autoEnabled_onFinished": "Run external program on torrent finished:",
|
||||
"autoLabel_onFinished": "Command",
|
||||
"supportParamTitle": "Supported parameters (case sensitive):",
|
||||
"supportParamN": "%N: Torrent name",
|
||||
"supportParamL": "%L: Category",
|
||||
"supportParamG": "%G: Tags (separated by comma)",
|
||||
"supportParamF": "%F: Content path (same as root path for multi-file torrent)",
|
||||
"supportParamR": "%R: Root path (first torrent subdirectory path)",
|
||||
"supportParamD": "%D: Save path",
|
||||
"supportParamC": "%C: Number of files",
|
||||
"supportParamZ": "%Z: Torrent size (bytes)",
|
||||
"supportParamT": "%T: Current tracker",
|
||||
"supportParamI": "%I: Info hash v1",
|
||||
"supportParamJ": "%J: Info hash v2",
|
||||
"supportParamK": "%K: Torrent ID"
|
||||
"keepIncompleteIn": "Keep incomplete torrents in",
|
||||
"exportDir": "Copy .torrent files to",
|
||||
"exportDirFinished": "Copy .torrent files for finished downloads to",
|
||||
"monitoredFolders": {
|
||||
"subheader": "Monitored Folders"
|
||||
},
|
||||
"excludedFileNames": {
|
||||
"label": "Excluded file names",
|
||||
"hint": "One file name per line"
|
||||
},
|
||||
"mailNotification": {
|
||||
"enabled": "Email notification upon download completion",
|
||||
"from": "From",
|
||||
"to": "To",
|
||||
"smtpServer": "SMTP server",
|
||||
"sslEnabled": "This server requires a secure connection (SSL)",
|
||||
"authEnabled": "Authentication",
|
||||
"username": "Username",
|
||||
"password": "Password"
|
||||
},
|
||||
"runExternalProgram": {
|
||||
"subheader": "Run external program",
|
||||
"onAddedEnabled": "Run external program on torrent added:",
|
||||
"onAddedLabel": "Command",
|
||||
"onFinishedEnabled": "Run external program on torrent finished:",
|
||||
"onFinishedLabel": "Command",
|
||||
"supportParamTitle": "Supported parameters (case sensitive):",
|
||||
"supportParamN": "%N: Torrent name",
|
||||
"supportParamL": "%L: Category",
|
||||
"supportParamG": "%G: Tags (separated by comma)",
|
||||
"supportParamF": "%F: Content path (same as root path for multi-file torrent)",
|
||||
"supportParamR": "%R: Root path (first torrent subdirectory path)",
|
||||
"supportParamD": "%D: Save path",
|
||||
"supportParamC": "%C: Number of files",
|
||||
"supportParamZ": "%Z: Torrent size (bytes)",
|
||||
"supportParamT": "%T: Current tracker",
|
||||
"supportParamI": "%I: Info hash v1",
|
||||
"supportParamJ": "%J: Info hash v2",
|
||||
"supportParamK": "%K: Torrent ID",
|
||||
"tip": "Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., \"%N\")"
|
||||
}
|
||||
}
|
||||
},
|
||||
"pageConnection": {
|
||||
"connection": {
|
||||
"protocol": "Peer connection protocol",
|
||||
"listeningSubHeader": "Listening Port",
|
||||
"useUPnP": "Use UPnP / NAT-PMP port forwarding from my router",
|
||||
"incomingConnectionPort": "Port used for incoming connections",
|
||||
"subHeader": "Connection Limits (-1 to disable)",
|
||||
"globalMaxConnection": "Global maximum number of connections",
|
||||
"perTorrentMaxConnection": "Maximum number of connections per torrent",
|
||||
"globalMaxUploadSlots": "Global maximum number of upload slots",
|
||||
"perTorrentMaxUploadSlots": "Maximum number of upload slots per torrent",
|
||||
"proxySubHeader": "Proxy Server",
|
||||
"proxyPeerConnections": "Use proxy for peer connections",
|
||||
"proxyTorrentOnly": "Use proxy only for torrents",
|
||||
"proxyAuth": "Authentication"
|
||||
"listeningPort": {
|
||||
"subheader": "Listening Port",
|
||||
"incomingConnectionPort": "Port used for incoming connections",
|
||||
"randomPort": "Random Port",
|
||||
"useUPnP": "Use UPnP / NAT-PMP port forwarding from my router"
|
||||
},
|
||||
"connectionLimits": {
|
||||
"subheader": "Connection Limits",
|
||||
"globalMaxConnection": "Global maximum number of connections",
|
||||
"perTorrentMaxConnection": "Maximum number of connections per torrent",
|
||||
"globalMaxUploadSlots": "Global maximum number of upload slots",
|
||||
"perTorrentMaxUploadSlots": "Maximum number of upload slots per torrent"
|
||||
},
|
||||
"proxy": {
|
||||
"subheader": "Proxy Server",
|
||||
"host": "Host",
|
||||
"port": "Port",
|
||||
"peerConnections": "Use proxy for peer connections",
|
||||
"torrentOnly": "Use proxy only for torrents",
|
||||
"hostNameLookup": "Use proxy for hostname lookup",
|
||||
"auth": {
|
||||
"subtitle": "Authentication",
|
||||
"username": "Username",
|
||||
"password": "Password",
|
||||
"tip": "Info: The password is saved unencrypted"
|
||||
}
|
||||
},
|
||||
"ipFiltering": {
|
||||
"subheader": "IP Filtering",
|
||||
"filterPath": "Filter path (.dat, .p2p, .p2b)",
|
||||
"applyToTrackers": "Apply to trackers",
|
||||
"bannedIps": "Manually banned IP addresses",
|
||||
"bannedIpsHint": "One on each line"
|
||||
}
|
||||
},
|
||||
"pageBittorrent": {
|
||||
"subHeaderPrivacy": "Privacy",
|
||||
"enableDHT": "Enable DHT (decentralized network) to find more peers",
|
||||
"enablePeX": "Enable Peer Exchange (PeX) to find more peers",
|
||||
"enableLPD": "Enable Local Peer Discovery to find more peers",
|
||||
"enableAnonymous": "Enable anonymous mode",
|
||||
"torrentQueue": "Torrent Queueing",
|
||||
"maxActiveDownload": "Maximum active downloads",
|
||||
"maxActiveUpload": "Maximum active uploads",
|
||||
"maxActiveTorrent": "Maximum active torrents",
|
||||
"excludeSlowTorrent": "Do not count slow torrents in these limits",
|
||||
"downloadRateLimit": "Download rate threshold KiB/s",
|
||||
"uploadRateLimit": "Upload rate threshold KiB/s",
|
||||
"torrentInactivityTimer": "Torrent inactivity timer",
|
||||
"subHeaderSeedLimits": "Seed Limits",
|
||||
"whenRatioReaches": "When ratio reaches",
|
||||
"whenSeedingTimeReaches": "When seeding time reaches",
|
||||
"maxRatioPauseTorrent": "Pause torrent",
|
||||
"maxRatioRemoveTorrent": "Remove torrent",
|
||||
"maxRatioRemoveTorrentAndFiles": "Remove torrent and files",
|
||||
"maxRatioTorrentSuperseeding": "Enable torrent super seeding"
|
||||
"speed": {
|
||||
"subheader": {
|
||||
"global": "Global Rate Limits",
|
||||
"alternative": "Alternative Rate Limits",
|
||||
"settings": "Rate Limits Settings"
|
||||
},
|
||||
"upload": "Upload (in B/s)",
|
||||
"download": "Download (in B/s)",
|
||||
"tip": "0 means unlimited",
|
||||
"scheduler": {
|
||||
"subheader": "Schedule the use of alternative rate limits",
|
||||
"from": "From",
|
||||
"to": "To",
|
||||
"selectButtonLabel": "Select time",
|
||||
"when": "When"
|
||||
},
|
||||
"settings": {
|
||||
"applyToUtp": "Apply rate limit to µTP protocol",
|
||||
"applyToTransportOverhead": "Apply rate limit to transport overhead",
|
||||
"applyToPeersOnLan": "Apply rate limit to peers on LAN"
|
||||
}
|
||||
},
|
||||
"pageRss": {
|
||||
"bittorrent": {
|
||||
"privacy": {
|
||||
"subheader": "Privacy",
|
||||
"enableDHT": "Enable DHT (decentralized network) to find more peers",
|
||||
"enablePeX": "Enable Peer Exchange (PeX) to find more peers",
|
||||
"enableLPD": "Enable Local Peer Discovery to find more peers",
|
||||
"encryptionMode": "Encryption Mode",
|
||||
"enableAnonymous": "Enable anonymous mode",
|
||||
"moreInfo": "More Information"
|
||||
},
|
||||
"maxActiveCheckingTorrents": "Max active checking torrents",
|
||||
"torrentQueueing": {
|
||||
"subheader": "Torrent Queueing",
|
||||
"maxActiveDownload": "Maximum active downloads",
|
||||
"maxActiveUpload": "Maximum active uploads",
|
||||
"maxActiveTorrent": "Maximum active torrents",
|
||||
"excludeSlowTorrent": "Do not count slow torrents in these limits",
|
||||
"downloadRateLimit": "Download rate threshold (in KiB/s)",
|
||||
"uploadRateLimit": "Upload rate threshold (in KiB/s)",
|
||||
"torrentInactivityTimer": "Torrent inactivity timer (in seconds)"
|
||||
},
|
||||
"seedLimits": {
|
||||
"subheader": "Seed Limits",
|
||||
"whenRatioReaches": "When ratio reaches",
|
||||
"whenSeedingTimeReaches": "When seeding time reaches",
|
||||
"then": "Then"
|
||||
},
|
||||
"autoAddTrackers": "Automatically add these trackers to new downloads",
|
||||
"autoAddTrackersHint": "One tracker per line"
|
||||
},
|
||||
"rss": {
|
||||
"tabName": {
|
||||
"general": "General",
|
||||
"feeds": "Feeds",
|
||||
"rules": "Rules"
|
||||
},
|
||||
"pageRules": {
|
||||
"rules": "Rules",
|
||||
"btnCreateNew": "Create Rule"
|
||||
"general": {
|
||||
"reader": {
|
||||
"subheader": "RSS Reader",
|
||||
"enableProcessing": "Enable fetching RSS feeds",
|
||||
"feedsRefreshInterval": "Feeds refresh interval",
|
||||
"feedsRefreshIntervalHint": "In minutes",
|
||||
"maximumArticlesPerFeed": "Maximum number of articles per feed"
|
||||
},
|
||||
"autoDownloader": {
|
||||
"subheader": "RSS Torrent Auto Downloader",
|
||||
"enable": "Enable auto downloading of RSS torrents"
|
||||
},
|
||||
"smartEpisodeFilter": {
|
||||
"subheader": "RSS Smart Episode Filter",
|
||||
"downloadEpisodes": "Download REPACK/PROPER episodes",
|
||||
"filters": "Filters",
|
||||
"filtersHint": "One per line"
|
||||
}
|
||||
},
|
||||
"pageFeeds": {
|
||||
"feeds": {
|
||||
"feeds": "Feeds",
|
||||
"btnCreateNew": "Add feed",
|
||||
"refreshAll": "Refresh All"
|
||||
},
|
||||
"pageGeneral": {
|
||||
"rssAutoProcessing": "RSS Reader",
|
||||
"rssAutoDownloader": "RSS Torrent Auto Downloader",
|
||||
"input": {
|
||||
"enableRssAutoDownload": "Enable auto downloading of RSS torrents",
|
||||
"enableRssProcessing": "Enable fetching RSS feeds",
|
||||
"feedsRefreshInterval": "Feeds refresh interval (in minutes)",
|
||||
"feedsMaxArticles": "Maximum number of articles per feed"
|
||||
}
|
||||
"rules": {
|
||||
"rules": "Rules",
|
||||
"btnCreateNew": "Create Rule"
|
||||
}
|
||||
},
|
||||
"pageWebUI": {
|
||||
"useAlternativeWebUI": "Use Alternative WebUI",
|
||||
"filesLocation": "Files location",
|
||||
"webUserInterface": "Web User Interface (Remote Control)",
|
||||
"ipAddress": "IP Address:",
|
||||
"port": "Port",
|
||||
"authentication": "Authentication",
|
||||
"username": "Username",
|
||||
"password": "Password",
|
||||
"maxAttempts": "Max attempts",
|
||||
"banDuration": "Ban Duration (seconds)",
|
||||
"sessionTimeout": "Session timeout (seconds)",
|
||||
"bypassAuthenticationForClientsOnLocalhost": "Bypass authentication for clients on localhost",
|
||||
"bypassAuthenticationForClientsInWhitelisted": "Bypass authentication for clients in whitelisted IP subnets",
|
||||
"whiteListExample": "Example: 172.17.32.0/24, fdff:ffff:c8::/40"
|
||||
"webUI": {
|
||||
"interface": {
|
||||
"subheader": "Web User Interface (Remote Control)",
|
||||
"ipAddress": "IP Address",
|
||||
"port": "Port",
|
||||
"useAlternativeWebUI": "Use Alternative WebUI",
|
||||
"filesLocation": "Files location"
|
||||
},
|
||||
"authentication": {
|
||||
"subheader": "Authentication",
|
||||
"username": "Username",
|
||||
"password": "Password",
|
||||
"passwordPlaceholder": "(unchanged)",
|
||||
"bypassLocalhost": "Bypass authentication for clients on localhost",
|
||||
"bypassWhitelist": "Bypass authentication for clients in whitelisted IP subnets",
|
||||
"whitelistExamples": "Example: 172.17.32.0/24, fdff:ffff:c8::/40",
|
||||
"maxAttempts": "Max attempts",
|
||||
"banDuration": "Ban Duration",
|
||||
"banDurationHint": "In seconds",
|
||||
"sessionTimeout": "Session timeout",
|
||||
"sessionTimeoutHint": "In seconds"
|
||||
},
|
||||
"https": {
|
||||
"subheader": "Use HTTPS",
|
||||
"certificate": "Certificate",
|
||||
"key": "Key",
|
||||
"tip": "Information about certificates"
|
||||
},
|
||||
"security": {
|
||||
"subheader": "Security",
|
||||
"clickjacking": "Enable clickjacking protection",
|
||||
"csrf": "Enable Cross-Site Request Forgery (CSRF) protection",
|
||||
"secureCookie": "Enable cookie secure flag (requires HTTPS)",
|
||||
"hostHeaderValidation": "Enable Host header validation",
|
||||
"hostHeaderValidationHint": "Seperated with semi-colon ( ; )",
|
||||
"serverDomains": "Server Domains"
|
||||
},
|
||||
"customHeaders": "Add custom HTTP headers",
|
||||
"customHeadersPlaceholder": "Header1: value1\nHeader2: value2\n...",
|
||||
"customHeadersHint": "One per line",
|
||||
"reverseProxySupport": "Enable reverse proxy support",
|
||||
"proxiesList": "Trusted proxies list",
|
||||
"proxiesListHint": "Seperate IPs with semicolon ( ; )",
|
||||
"dynDns": {
|
||||
"subheader": "Update my dynamic domain name",
|
||||
"providers": {
|
||||
"dynDns": "DynDNS",
|
||||
"noIp": "NO-IP"
|
||||
},
|
||||
"registerBtn": "Register",
|
||||
"domainName": "Domain name",
|
||||
"username": "Username",
|
||||
"password": "Password"
|
||||
}
|
||||
},
|
||||
"pageTagsAndCategories": {
|
||||
"tagsAndCategories": {
|
||||
"btnCreateNew": "Create new",
|
||||
"subHeaderTags": "Available Tags:",
|
||||
"subHeaderCategories": "Available Categories:"
|
||||
},
|
||||
"advanced": {
|
||||
"openDoc": "Open documentation",
|
||||
"qbittorrent": {
|
||||
"subheader": "qBittorrent Section",
|
||||
"allocatedRam": "Physical memory (RAM) usage limit (libtorrent >= 2.0)",
|
||||
"allocatedRamHint": "in MiB",
|
||||
"networkInterfaces": {
|
||||
"label": "Network interface",
|
||||
"any": "Any interface"
|
||||
},
|
||||
"ipAddress": {
|
||||
"label": "Optional IP address to bind to",
|
||||
"all": "All addresses",
|
||||
"allIPv4": "All IPv4 addresses",
|
||||
"allIPv6": "All IPv6 addresses"
|
||||
},
|
||||
"saveInterval": "Save resume data interval",
|
||||
"saveIntervalHint": "In minutes",
|
||||
"recheckOnCompletion": "Recheck torrents on completion",
|
||||
"refreshInterval": "Refresh interval",
|
||||
"refreshIntervalHint": "In milliseconds",
|
||||
"resolveCountries": "Resolve peer countries",
|
||||
"reannounceOnIpPortChanged": "Reannounce to all trackers when IP or port changed",
|
||||
"enableEmbeddedTracker": "Enable embedded tracker",
|
||||
"embeddedTrackerPort": "Embedded tracker port",
|
||||
"embeddedTrackerPortForwarding": "Enable port forwarding for embedded tracker"
|
||||
},
|
||||
"libtorrent": {
|
||||
"subheader": "libtorrent Section",
|
||||
"asyncIoThreads": "Asynchronous I/O threads",
|
||||
"hashingThreads": "Hashing threads (libtorrent >= 2.0)",
|
||||
"filePoolSize": "File pool size",
|
||||
"outstandingMemory": "Outstanding memory when checking torrents",
|
||||
"outstandingMemoryHint": "In MiB",
|
||||
"diskCache": "Disk cache (libtorrent < 2.0)",
|
||||
"diskCacheHint": "In MiB",
|
||||
"diskCacheExpiry": "Disk cache expiry interval (libtorrent < 2.0)",
|
||||
"diskCacheExpiryHint": "In seconds",
|
||||
"diskQueueSize": "Disk queue size",
|
||||
"diskQueueSizeHint": "In KiB",
|
||||
"diskIoType": "Disk IO Type (libtorrent >= 2.0; requires restart)",
|
||||
"diskIoReadMode": "Disk IO read mode",
|
||||
"diskIoWriteMode": "Disk IO write mode",
|
||||
"coalesceReadsWrites": "Coalesce reads & writes (libtorrent < 2.0)",
|
||||
"pieceExtentAffinity": "Use piece extent affinity",
|
||||
"sendUploadPieceSuggestions": "Send upload piece suggestions",
|
||||
"sendBufferWatermark": "Send buffer watermark",
|
||||
"sendBufferWatermarkHint": "In KiB",
|
||||
"sendBufferLowWatermark": "Send buffer low watermark",
|
||||
"sendBufferLowWatermarkHint": "In KiB",
|
||||
"sendBufferWatermarkFactor": "Send buffer watermark factor",
|
||||
"sendBufferWatermarkFactorHint": "In %",
|
||||
"outgoingConnectionsPerSecond": "Outgoing connections per second",
|
||||
"socketBacklogSize": "Socket backlog size",
|
||||
"outgoingPortsMin": "Outgoing ports (Min) [0: Disabled]",
|
||||
"outgoingPortsMax": "Outgoing ports (Max) [0: Disabled]",
|
||||
"upnpLeaseDuration": "UPnP lease duration [0: Permanent lease]",
|
||||
"peerTos": "DSCP value for connections to peers",
|
||||
"utpTcpMixedModeAlgorithm": "μTP-TCP mixed mode algorithm",
|
||||
"idnSupport": "Enable Internationalized Domain Name (IDN) support",
|
||||
"allowMultipleConnectionsFromTheSameIPAddress": "Allow multiple connections from the same IP address",
|
||||
"validateHTTPSTrackerCertificate": "Validate HTTPS tracker certificate",
|
||||
"mitigateSSRF": "Server-side request forgery (SSRF) mitigation",
|
||||
"blockPeersOnPrivilegedPorts": "Disallow connection to peers on privileged ports",
|
||||
"uploadSlotsBehavior": "Upload slots behavior",
|
||||
"uploadChokingAlgorithm": "Upload choking algorithm",
|
||||
"announceAllTrackers": "Always announce to all trackers in a tier",
|
||||
"announceAllTiers": "Always announce to all tiers",
|
||||
"announceIP": "IP address reported to trackers (requires restart)",
|
||||
"maxConcurrentHTTPAnnounces": "Max concurrent HTTP announces",
|
||||
"stopTrackerTimeout": "Stop tracker timeout",
|
||||
"peerTurnover": "Peer turnover disconnect percentage",
|
||||
"peerTurnoverHint": "In %",
|
||||
"peerTurnoverCutoff": "Peer turnover threshold percentage",
|
||||
"peerTurnoverCutoffHint": "In %",
|
||||
"peerTurnoverInterval": "Peer turnover disconnect interval",
|
||||
"peerTurnoverIntervalHint": "In seconds",
|
||||
"requestQueueSize": "Maximum outstanding requests to a single peer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"shareLimit": {
|
||||
|
@ -443,7 +656,7 @@
|
|||
"relevance": "Relevance",
|
||||
"files": "Files"
|
||||
},
|
||||
"pageTagsAndCategories": {
|
||||
"tagsAndCategories": {
|
||||
"subHeaderTag": "Available Tags:",
|
||||
"subHeaderCategories": "Available Categories:"
|
||||
},
|
||||
|
@ -603,6 +816,57 @@
|
|||
"none": "None",
|
||||
"metadataReceived": "Metadata Received",
|
||||
"filesChecked": "Files Checked"
|
||||
},
|
||||
"bittorrentProtocols": {
|
||||
"tcp_utp": "TCP and μTP",
|
||||
"tcp": "TCP",
|
||||
"utp": "μTP"
|
||||
},
|
||||
"encryption": {
|
||||
"preferEncryption": "Allow Encryption",
|
||||
"forceOn": "Require Encryption",
|
||||
"forceOff": "Disable Encryption"
|
||||
},
|
||||
"maxRatioAction": {
|
||||
"pauseTorrent": "Pause torrent",
|
||||
"removeTorrent": "Remove torrent",
|
||||
"removeTorrentAndFiles": "Remove torrent and its files",
|
||||
"torrentSuperseeding": "Enable super seeding for torrent"
|
||||
},
|
||||
"scheduler": {
|
||||
"everyDay": "Every day",
|
||||
"everyWeekday": "Weekdays",
|
||||
"everyWeekend": "Weekends",
|
||||
"everyMonday": "Monday",
|
||||
"everyTuesday": "Tuesday",
|
||||
"everyWednesday": "Wednesday",
|
||||
"everyThursday": "Thursday",
|
||||
"everyFriday": "Friday",
|
||||
"everySaturday": "Saturday",
|
||||
"everySunday": "Sunday"
|
||||
},
|
||||
"diskIoType": {
|
||||
"default": "Default",
|
||||
"memoryMappedFiles": "Memory mapped files",
|
||||
"posixCompliant": "POSIX-compliant"
|
||||
},
|
||||
"diskIoMode": {
|
||||
"disableOsCache": "Disable OS cache",
|
||||
"enableOsCache": "Enable OS cache",
|
||||
"writeThrough": "Write-through (libtorrent >= 2.0.6)"
|
||||
},
|
||||
"utpTcpMixedMode": {
|
||||
"preferTcp": "Prefer TCP",
|
||||
"peerProportional": "Peer proportional (throttles TCP)"
|
||||
},
|
||||
"uploadSlotsBehavior": {
|
||||
"fixedSlots": "Fixed slots",
|
||||
"uploadRateBased": "Upload rate based"
|
||||
},
|
||||
"uploadChokingAlgorithm": {
|
||||
"roundRobin": "Round-robin",
|
||||
"fastestUpload": "Fastest upload",
|
||||
"antiLeech": "Anti-leech"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -44,31 +44,31 @@
|
|||
},
|
||||
"settings": {
|
||||
"tabName": {},
|
||||
"pageVueTorrent": {
|
||||
"vueTorrent": {
|
||||
"tabName": {},
|
||||
"pageGeneral": {},
|
||||
"pageDesktopCard": {
|
||||
"general": {},
|
||||
"desktopCard": {
|
||||
"properties": {}
|
||||
},
|
||||
"pageMobileCard": {}
|
||||
"mobileCard": {}
|
||||
},
|
||||
"pageDownloads": {
|
||||
"downloads": {
|
||||
"whenAddTorrent": {},
|
||||
"publicSettings": {},
|
||||
"saveManagement": {}
|
||||
},
|
||||
"pageConnection": {},
|
||||
"pageBittorrent": {},
|
||||
"pageRss": {
|
||||
"connection": {},
|
||||
"bittorrent": {},
|
||||
"rss": {
|
||||
"tabName": {},
|
||||
"pageRules": {},
|
||||
"pageFeeds": {},
|
||||
"pageGeneral": {
|
||||
"rules": {},
|
||||
"feeds": {},
|
||||
"general": {
|
||||
"input": {}
|
||||
}
|
||||
},
|
||||
"pageWebUI": {},
|
||||
"pageTagsAndCategories": {}
|
||||
"webUI": {},
|
||||
"tagsAndCategories": {}
|
||||
},
|
||||
"shareLimit": {
|
||||
"input": {}
|
||||
|
@ -78,7 +78,7 @@
|
|||
"detail": {
|
||||
"pageInfo": {},
|
||||
"pagePeers": {},
|
||||
"pageTagsAndCategories": {},
|
||||
"tagsAndCategories": {},
|
||||
"pageTrackers": {}
|
||||
},
|
||||
"add": {
|
||||
|
|
|
@ -165,11 +165,11 @@
|
|||
"webUI": "WEB UI",
|
||||
"tagsAndCategories": "tags & catégories"
|
||||
},
|
||||
"pageVueTorrent": {
|
||||
"vueTorrent": {
|
||||
"tabName": {
|
||||
"general": "Général"
|
||||
},
|
||||
"pageGeneral": {
|
||||
"general": {
|
||||
"tip": "Ces paramètres concernent la WebUI",
|
||||
"currentSpeed": "Afficher la vitesse actuelle",
|
||||
"speedGraph": "Afficher le graphique de vitesse",
|
||||
|
@ -191,7 +191,7 @@
|
|||
"exportSettings": "Exporter la configuration",
|
||||
"resetSettings": "Réinitialiser la configuration"
|
||||
},
|
||||
"pageDesktopCard": {
|
||||
"desktopCard": {
|
||||
"busyTorrentTip": "Propriétés à afficher pour les torrents occupés",
|
||||
"completedTorrentTip": "Propriétés à afficher pour les torrents terminés",
|
||||
"properties": {
|
||||
|
@ -219,9 +219,9 @@
|
|||
"uploadSpeed": "Vitesse d'upload"
|
||||
}
|
||||
},
|
||||
"pageMobileCard": {}
|
||||
"mobileCard": {}
|
||||
},
|
||||
"pageDownloads": {
|
||||
"downloads": {
|
||||
"subHeaderWhenAddTorrent": "Lors de l'ajout d'un torrent",
|
||||
"whenAddTorrent": {
|
||||
"donotAutoStart": "Ne pas lancer le téléchargement automatiquement",
|
||||
|
@ -255,12 +255,12 @@
|
|||
"supportParamI": "%I: Info hash"
|
||||
}
|
||||
},
|
||||
"pageConnection": {
|
||||
"connection": {
|
||||
"protocol": "Protocol de connexion aux pairs",
|
||||
"listeningSubHeader": "Port d'écoute",
|
||||
"useUPnP": "Utiliser la redirection de port UPnP / NAT-PMP de mon routeur",
|
||||
"incomingConnectionPort": "Port utilisé pour les connexions entrantes",
|
||||
"subHeader": "Limites de connexion (-1 pour désactiver)",
|
||||
"subHeader": "Limites de connexion",
|
||||
"globalMaxConnection": "Nombre max de connexions globales",
|
||||
"perTorrentMaxConnection": "Nombre max de connexions par torrent",
|
||||
"globalMaxUploadSlots": "Nombre maximum de slots d'upload global",
|
||||
|
@ -270,7 +270,7 @@
|
|||
"proxyTorrentOnly": "Utiliser le proxy uniquement pour les torrents",
|
||||
"proxyAuth": "Authentification"
|
||||
},
|
||||
"pageBittorrent": {
|
||||
"bittorrent": {
|
||||
"subHeaderPrivacy": "Vie privée",
|
||||
"enableDHT": "Activer le DHT (réseau décentralisé) pour trouver plus de pairs",
|
||||
"enablePeX": "Activer l'échange de pairs (PeX) pour trouver plus de pairs",
|
||||
|
@ -292,21 +292,21 @@
|
|||
"maxRatioRemoveTorrentAndFiles": "Suprimer le torrent & son contenu",
|
||||
"maxRatioTorrentSuperseeding": "Activer le mode super seeding"
|
||||
},
|
||||
"pageRss": {
|
||||
"rss": {
|
||||
"tabName": {
|
||||
"general": "Général",
|
||||
"feeds": "Flux",
|
||||
"rules": "Règles"
|
||||
},
|
||||
"pageRules": {
|
||||
"rules": {
|
||||
"rules": "Règles",
|
||||
"btnCreateNew": "Créer une règle"
|
||||
},
|
||||
"pageFeeds": {
|
||||
"feeds": {
|
||||
"feeds": "Flux",
|
||||
"btnCreateNew": "Ajouter un flux"
|
||||
},
|
||||
"pageGeneral": {
|
||||
"general": {
|
||||
"rssAutoProcessing": "Lecteur RSS",
|
||||
"rssAutoDownloader": "Downloader automatique des torrents RSS",
|
||||
"input": {
|
||||
|
@ -317,7 +317,7 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"pageWebUI": {
|
||||
"webUI": {
|
||||
"useAlternativeWebUI": "Utiliser une interface Web alternative",
|
||||
"filesLocation": "Emplacement de l'interface",
|
||||
"webUserInterface": "Interface utilisateur Web (accès à distance)",
|
||||
|
@ -333,7 +333,7 @@
|
|||
"bypassAuthenticationForClientsInWhitelisted": "Désactiver 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": {
|
||||
"tagsAndCategories": {
|
||||
"btnCreateNew": "Créer un nouveau",
|
||||
"subHeaderTags": "Tags disponibles :",
|
||||
"subHeaderCategories": "Catégories disponibles :"
|
||||
|
@ -399,7 +399,7 @@
|
|||
"relevance": "Pertinence",
|
||||
"files": "Fichiers"
|
||||
},
|
||||
"pageTagsAndCategories": {
|
||||
"tagsAndCategories": {
|
||||
"subHeaderTag": "Tags disponibles:",
|
||||
"subHeaderCategories": "Catégories disponibles:"
|
||||
},
|
||||
|
|
|
@ -120,11 +120,11 @@
|
|||
"webUI": "WEBUI",
|
||||
"tagsAndCategories": "tag & kategori"
|
||||
},
|
||||
"pageVueTorrent": {
|
||||
"vueTorrent": {
|
||||
"tabName": {
|
||||
"general": "Umum"
|
||||
},
|
||||
"pageGeneral": {
|
||||
"general": {
|
||||
"tip": "Pengaturan berikut hanya untuk WebUI kustom",
|
||||
"currentSpeed": "Tampilkan Kec. Terkini",
|
||||
"speedGraph": "Tampilkan Grafik Kecepatan",
|
||||
|
@ -141,14 +141,14 @@
|
|||
"currentVersion": "Versi saat ini:",
|
||||
"qbittorrentVersion": "Versi qBittorrent:"
|
||||
},
|
||||
"pageDesktopCard": {
|
||||
"desktopCard": {
|
||||
"busyTorrentTip": "Properti ditampilkan pada torrent yang sibuk",
|
||||
"completedTorrentTip": "Properti ditampilkan pada torrent yang selesai",
|
||||
"properties": {}
|
||||
},
|
||||
"pageMobileCard": {}
|
||||
"mobileCard": {}
|
||||
},
|
||||
"pageDownloads": {
|
||||
"downloads": {
|
||||
"subHeaderWhenAddTorrent": "Saat menambahkan torrent",
|
||||
"whenAddTorrent": {
|
||||
"donotAutoStart": "Jangan mengunduh secara otomatis"
|
||||
|
@ -179,7 +179,7 @@
|
|||
"supportParamI": "%I: Info hash"
|
||||
}
|
||||
},
|
||||
"pageConnection": {
|
||||
"connection": {
|
||||
"subHeader": "Batas Koneksi",
|
||||
"globalMaxConnection": "Jumlah maksimum koneksi global",
|
||||
"perTorrentMaxConnection": "Jumlah maksimum koneksi per torrent",
|
||||
|
@ -190,7 +190,7 @@
|
|||
"proxyTorrentOnly": "Gunakan proxy hanya untuk torrent",
|
||||
"proxyAuth": "Autentikasi"
|
||||
},
|
||||
"pageBittorrent": {
|
||||
"bittorrent": {
|
||||
"subHeaderPrivacy": "Privasi",
|
||||
"enableDHT": "Aktifkan DHT (jaringan terdesentralisasi) untuk menemukan banyak peer",
|
||||
"enablePeX": "Aktifkan Peer Exchange (PeX) untuk menemukan banyak peer",
|
||||
|
@ -212,21 +212,21 @@
|
|||
"maxRatioRemoveTorrentAndFiles": "Hapus torrent beserta file",
|
||||
"maxRatioTorrentSuperseeding": "Aktifkan torrent super seeding"
|
||||
},
|
||||
"pageRss": {
|
||||
"rss": {
|
||||
"tabName": {
|
||||
"general": "Umum",
|
||||
"feeds": "Feed",
|
||||
"rules": "Aturan"
|
||||
},
|
||||
"pageRules": {
|
||||
"rules": {
|
||||
"rules": "Aturan",
|
||||
"btnCreateNew": "Buat Aturan"
|
||||
},
|
||||
"pageFeeds": {
|
||||
"feeds": {
|
||||
"feeds": "Feed",
|
||||
"btnCreateNew": "Tambah feed"
|
||||
},
|
||||
"pageGeneral": {
|
||||
"general": {
|
||||
"rssAutoProcessing": "Pembaca RSS",
|
||||
"rssAutoDownloader": "Pengunduh Otomatis RSS Torrent",
|
||||
"input": {
|
||||
|
@ -237,7 +237,7 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"pageWebUI": {
|
||||
"webUI": {
|
||||
"useAlternativeWebUI": "Gunakan WebUI Alternatif",
|
||||
"filesLocation": "Lokasi file",
|
||||
"webUserInterface": "Web User Interface (Remote Control)",
|
||||
|
@ -253,7 +253,7 @@
|
|||
"bypassAuthenticationForClientsInWhitelisted": "Lewati autentikasi untuk klien pada whitelist subnet IP",
|
||||
"whiteListExample": "Contoh: 172.17.32.0/24, fdff:ffff:c8::/40"
|
||||
},
|
||||
"pageTagsAndCategories": {
|
||||
"tagsAndCategories": {
|
||||
"btnCreateNew": "Buat baru",
|
||||
"subHeaderTags": "Tag Tersedia:",
|
||||
"subHeaderCategories": "Kategori Tersedia:"
|
||||
|
@ -319,7 +319,7 @@
|
|||
"relevance": "Relevansi",
|
||||
"files": "File"
|
||||
},
|
||||
"pageTagsAndCategories": {
|
||||
"tagsAndCategories": {
|
||||
"subHeaderTag": "Tag Tersedia:",
|
||||
"subHeaderCategories": "Kategori Tersedia:"
|
||||
},
|
||||
|
|
|
@ -27,31 +27,31 @@
|
|||
},
|
||||
"settings": {
|
||||
"tabName": {},
|
||||
"pageVueTorrent": {
|
||||
"vueTorrent": {
|
||||
"tabName": {},
|
||||
"pageGeneral": {},
|
||||
"pageDesktopCard": {
|
||||
"general": {},
|
||||
"desktopCard": {
|
||||
"properties": {}
|
||||
},
|
||||
"pageMobileCard": {}
|
||||
"mobileCard": {}
|
||||
},
|
||||
"pageDownloads": {
|
||||
"downloads": {
|
||||
"whenAddTorrent": {},
|
||||
"publicSettings": {},
|
||||
"saveManagement": {}
|
||||
},
|
||||
"pageConnection": {},
|
||||
"pageBittorrent": {},
|
||||
"pageRss": {
|
||||
"connection": {},
|
||||
"bittorrent": {},
|
||||
"rss": {
|
||||
"tabName": {},
|
||||
"pageRules": {},
|
||||
"pageFeeds": {},
|
||||
"pageGeneral": {
|
||||
"rules": {},
|
||||
"feeds": {},
|
||||
"general": {
|
||||
"input": {}
|
||||
}
|
||||
},
|
||||
"pageWebUI": {},
|
||||
"pageTagsAndCategories": {}
|
||||
"webUI": {},
|
||||
"tagsAndCategories": {}
|
||||
},
|
||||
"shareLimit": {
|
||||
"input": {}
|
||||
|
@ -61,7 +61,7 @@
|
|||
"detail": {
|
||||
"pageInfo": {},
|
||||
"pagePeers": {},
|
||||
"pageTagsAndCategories": {},
|
||||
"tagsAndCategories": {},
|
||||
"pageTrackers": {}
|
||||
},
|
||||
"add": {
|
||||
|
|
|
@ -121,11 +121,11 @@
|
|||
"webUI": "WEB UI",
|
||||
"tagsAndCategories": "タグ と カテゴリ"
|
||||
},
|
||||
"pageVueTorrent": {
|
||||
"vueTorrent": {
|
||||
"tabName": {
|
||||
"general": "一般"
|
||||
},
|
||||
"pageGeneral": {
|
||||
"general": {
|
||||
"tip": "これらの設定は、このカスタム WebUI に対するものです",
|
||||
"currentSpeed": "現在の速度を表示する",
|
||||
"speedGraph": "速度グラフを表示する",
|
||||
|
@ -140,14 +140,14 @@
|
|||
"currentVersion": "現在のバージョン:",
|
||||
"qbittorrentVersion": "QBittorrentのバージョン:"
|
||||
},
|
||||
"pageDesktopCard": {
|
||||
"desktopCard": {
|
||||
"busyTorrentTip": "稼働中のTorrentに表示されるプロパティ",
|
||||
"completedTorrentTip": "完了したTorrentに表示されるプロパティ",
|
||||
"properties": {}
|
||||
},
|
||||
"pageMobileCard": {}
|
||||
"mobileCard": {}
|
||||
},
|
||||
"pageDownloads": {
|
||||
"downloads": {
|
||||
"subHeaderWhenAddTorrent": "Torrentを追加したとき",
|
||||
"whenAddTorrent": {
|
||||
"donotAutoStart": "自動でダウンロードを開始しない"
|
||||
|
@ -178,7 +178,7 @@
|
|||
"supportParamI": "%I: info ハッシュ"
|
||||
}
|
||||
},
|
||||
"pageConnection": {
|
||||
"connection": {
|
||||
"subHeader": "接続制限",
|
||||
"globalMaxConnection": "全体の最大接続数",
|
||||
"perTorrentMaxConnection": "Torrentあたりの最大接続数",
|
||||
|
@ -189,7 +189,7 @@
|
|||
"proxyTorrentOnly": "Torrentに対してのみプロキシを使う",
|
||||
"proxyAuth": "認証"
|
||||
},
|
||||
"pageBittorrent": {
|
||||
"bittorrent": {
|
||||
"subHeaderPrivacy": "プライバシー",
|
||||
"enableDHT": "より多くのピアを見つけるために DHT (分散ネットワーク) を有効にする",
|
||||
"enablePeX": "より多くのピアを見つけるために ピア交換 (PeX) を有効にする",
|
||||
|
@ -207,21 +207,21 @@
|
|||
"whenRatioReaches": "シード制限する共有比",
|
||||
"whenSeedingTimeReaches": "シード制限するシード時間 (分)"
|
||||
},
|
||||
"pageRss": {
|
||||
"rss": {
|
||||
"tabName": {
|
||||
"general": "一般",
|
||||
"feeds": "フィード",
|
||||
"rules": "ルール"
|
||||
},
|
||||
"pageRules": {
|
||||
"rules": {
|
||||
"rules": "ルール",
|
||||
"btnCreateNew": "ルールを作成"
|
||||
},
|
||||
"pageFeeds": {
|
||||
"feeds": {
|
||||
"feeds": "フィード",
|
||||
"btnCreateNew": "フィードを追加"
|
||||
},
|
||||
"pageGeneral": {
|
||||
"general": {
|
||||
"rssAutoProcessing": "RSSリーダー",
|
||||
"rssAutoDownloader": "RSS Torrent自動ダウンロード",
|
||||
"input": {
|
||||
|
@ -232,7 +232,7 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"pageWebUI": {
|
||||
"webUI": {
|
||||
"useAlternativeWebUI": "カスタム WebUI を使用する",
|
||||
"filesLocation": "ファイルの場所",
|
||||
"webUserInterface": "ウェブユーザーインターフェース (遠隔操作)",
|
||||
|
@ -248,7 +248,7 @@
|
|||
"bypassAuthenticationForClientsInWhitelisted": "ホワイトリストに登録された IP サブネットのクライアントは認証を行わない",
|
||||
"whiteListExample": "例: 172.17.32.0/24, fdff:ffff:c8::/40"
|
||||
},
|
||||
"pageTagsAndCategories": {
|
||||
"tagsAndCategories": {
|
||||
"btnCreateNew": "作成",
|
||||
"subHeaderTags": "利用可能なタグ:",
|
||||
"subHeaderCategories": "利用可能なカテゴリ:"
|
||||
|
@ -314,7 +314,7 @@
|
|||
"relevance": "関連",
|
||||
"files": "ファイル"
|
||||
},
|
||||
"pageTagsAndCategories": {
|
||||
"tagsAndCategories": {
|
||||
"subHeaderTag": "利用可能タグ:",
|
||||
"subHeaderCategories": "利用可能タグ:"
|
||||
},
|
||||
|
|
|
@ -15,22 +15,22 @@ export enum Locales {
|
|||
}
|
||||
|
||||
type LocaleDef = {
|
||||
text: string
|
||||
value: Locales
|
||||
caption: string
|
||||
}
|
||||
|
||||
export const LOCALES: LocaleDef[] = [
|
||||
{ value: Locales.EN, caption: 'English' },
|
||||
{ value: Locales.ES, caption: 'Español' },
|
||||
{ value: Locales.FR, caption: 'Français' },
|
||||
{ value: Locales.ID, caption: 'Bahasa Indonesia' },
|
||||
{ value: Locales.IT, caption: 'Italiano' },
|
||||
{ value: Locales.JA, caption: '日本語' },
|
||||
{ value: Locales.NL, caption: 'Dutch' },
|
||||
{ value: Locales.PT_BR, caption: 'Português' },
|
||||
{ value: Locales.RU, caption: 'Русский язык' },
|
||||
{ value: Locales.UK, caption: 'Українська' },
|
||||
{ value: Locales.VI, caption: 'Tiếng Việt' },
|
||||
{ value: Locales.ZH_HANS, caption: '简体中文' },
|
||||
{ value: Locales.ZH_HANT, caption: '繁體中文' }
|
||||
{ text: 'English', value: Locales.EN },
|
||||
{ text: 'Español', value: Locales.ES },
|
||||
{ text: 'Français', value: Locales.FR },
|
||||
{ text: 'Bahasa Indonesia', value: Locales.ID },
|
||||
{ text: 'Italiano', value: Locales.IT },
|
||||
{ text: '日本語', value: Locales.JA },
|
||||
{ text: 'Dutch', value: Locales.NL },
|
||||
{ text: 'Português', value: Locales.PT_BR },
|
||||
{ text: 'Русский язык', value: Locales.RU },
|
||||
{ text: 'Українська', value: Locales.UK },
|
||||
{ text: 'Tiếng Việt', value: Locales.VI },
|
||||
{ text: '简体中文', value: Locales.ZH_HANS },
|
||||
{ text: '繁體中文', value: Locales.ZH_HANT }
|
||||
]
|
||||
|
|
|
@ -49,31 +49,31 @@
|
|||
},
|
||||
"settings": {
|
||||
"tabName": {},
|
||||
"pageVueTorrent": {
|
||||
"vueTorrent": {
|
||||
"tabName": {},
|
||||
"pageGeneral": {},
|
||||
"pageDesktopCard": {
|
||||
"general": {},
|
||||
"desktopCard": {
|
||||
"properties": {}
|
||||
},
|
||||
"pageMobileCard": {}
|
||||
"mobileCard": {}
|
||||
},
|
||||
"pageDownloads": {
|
||||
"downloads": {
|
||||
"whenAddTorrent": {},
|
||||
"publicSettings": {},
|
||||
"saveManagement": {}
|
||||
},
|
||||
"pageConnection": {},
|
||||
"pageBittorrent": {},
|
||||
"pageRss": {
|
||||
"connection": {},
|
||||
"bittorrent": {},
|
||||
"rss": {
|
||||
"tabName": {},
|
||||
"pageRules": {},
|
||||
"pageFeeds": {},
|
||||
"pageGeneral": {
|
||||
"rules": {},
|
||||
"feeds": {},
|
||||
"general": {
|
||||
"input": {}
|
||||
}
|
||||
},
|
||||
"pageWebUI": {},
|
||||
"pageTagsAndCategories": {}
|
||||
"webUI": {},
|
||||
"tagsAndCategories": {}
|
||||
},
|
||||
"shareLimit": {
|
||||
"input": {}
|
||||
|
@ -83,7 +83,7 @@
|
|||
"detail": {
|
||||
"pageInfo": {},
|
||||
"pagePeers": {},
|
||||
"pageTagsAndCategories": {},
|
||||
"tagsAndCategories": {},
|
||||
"pageTrackers": {}
|
||||
},
|
||||
"add": {
|
||||
|
|
|
@ -49,31 +49,31 @@
|
|||
},
|
||||
"settings": {
|
||||
"tabName": {},
|
||||
"pageVueTorrent": {
|
||||
"vueTorrent": {
|
||||
"tabName": {},
|
||||
"pageGeneral": {},
|
||||
"pageDesktopCard": {
|
||||
"general": {},
|
||||
"desktopCard": {
|
||||
"properties": {}
|
||||
},
|
||||
"pageMobileCard": {}
|
||||
"mobileCard": {}
|
||||
},
|
||||
"pageDownloads": {
|
||||
"downloads": {
|
||||
"whenAddTorrent": {},
|
||||
"publicSettings": {},
|
||||
"saveManagement": {}
|
||||
},
|
||||
"pageConnection": {},
|
||||
"pageBittorrent": {},
|
||||
"pageRss": {
|
||||
"connection": {},
|
||||
"bittorrent": {},
|
||||
"rss": {
|
||||
"tabName": {},
|
||||
"pageRules": {},
|
||||
"pageFeeds": {},
|
||||
"pageGeneral": {
|
||||
"rules": {},
|
||||
"feeds": {},
|
||||
"general": {
|
||||
"input": {}
|
||||
}
|
||||
},
|
||||
"pageWebUI": {},
|
||||
"pageTagsAndCategories": {}
|
||||
"webUI": {},
|
||||
"tagsAndCategories": {}
|
||||
},
|
||||
"shareLimit": {
|
||||
"input": {}
|
||||
|
@ -83,7 +83,7 @@
|
|||
"detail": {
|
||||
"pageInfo": {},
|
||||
"pagePeers": {},
|
||||
"pageTagsAndCategories": {},
|
||||
"tagsAndCategories": {},
|
||||
"pageTrackers": {}
|
||||
},
|
||||
"add": {
|
||||
|
|
|
@ -132,11 +132,11 @@
|
|||
"webUI": "Веб-интерфейс",
|
||||
"tagsAndCategories": "Метки и категории"
|
||||
},
|
||||
"pageVueTorrent": {
|
||||
"vueTorrent": {
|
||||
"tabName": {
|
||||
"general": "Общее"
|
||||
},
|
||||
"pageGeneral": {
|
||||
"general": {
|
||||
"tip": "Общие настройки пользовательского веб-интерфейса",
|
||||
"currentSpeed": "Показывать текущую скорость",
|
||||
"speedGraph": "Показывать график скорости",
|
||||
|
@ -155,7 +155,7 @@
|
|||
"qbittorrentVersion": "Версия QBittorrent:",
|
||||
"resetSettings": "Сбросить настройки"
|
||||
},
|
||||
"pageDesktopCard": {
|
||||
"desktopCard": {
|
||||
"busyTorrentTip": "Свойства для отображения активных торрентов",
|
||||
"completedTorrentTip": "Свойства для отображения завершенных торрентов",
|
||||
"properties": {
|
||||
|
@ -174,9 +174,9 @@
|
|||
"size": "Размер"
|
||||
}
|
||||
},
|
||||
"pageMobileCard": {}
|
||||
"mobileCard": {}
|
||||
},
|
||||
"pageDownloads": {
|
||||
"downloads": {
|
||||
"subHeaderWhenAddTorrent": "При добавлении торрента",
|
||||
"whenAddTorrent": {
|
||||
"donotAutoStart": "Не начинать загрузку автоматически"
|
||||
|
@ -211,7 +211,7 @@
|
|||
"supportParamK": "%K: ID торрента"
|
||||
}
|
||||
},
|
||||
"pageConnection": {
|
||||
"connection": {
|
||||
"subHeader": "Ограничение соединений",
|
||||
"globalMaxConnection": "Глобальное максимальное количество соединений",
|
||||
"perTorrentMaxConnection": "Максимальное количество соединений на торрент",
|
||||
|
@ -222,7 +222,7 @@
|
|||
"proxyTorrentOnly": "Использовать прокси только для торрентов",
|
||||
"proxyAuth": "Аутентификация"
|
||||
},
|
||||
"pageBittorrent": {
|
||||
"bittorrent": {
|
||||
"subHeaderPrivacy": "Конфиденциальность",
|
||||
"enableDHT": "Включить DHT (децентрализованную сеть), чтобы найти больше одноранговых устройств (пиров)",
|
||||
"enablePeX": "Включить Peer Exchange (PeX), чтобы найти больше одноранговых устройств (пиров)",
|
||||
|
@ -240,21 +240,21 @@
|
|||
"whenRatioReaches": "По достижении рейтинга раздачи",
|
||||
"whenSeedingTimeReaches": "По достижении времени раздачи"
|
||||
},
|
||||
"pageRss": {
|
||||
"rss": {
|
||||
"tabName": {
|
||||
"general": "Общие",
|
||||
"feeds": "Каналы",
|
||||
"rules": "Правила"
|
||||
},
|
||||
"pageRules": {
|
||||
"rules": {
|
||||
"rules": "Правила",
|
||||
"btnCreateNew": "Создать правило"
|
||||
},
|
||||
"pageFeeds": {
|
||||
"feeds": {
|
||||
"feeds": "Каналы",
|
||||
"btnCreateNew": "Добавить ленту"
|
||||
},
|
||||
"pageGeneral": {
|
||||
"general": {
|
||||
"rssAutoProcessing": "Чтение RSS",
|
||||
"rssAutoDownloader": "Автозагрузчик Торрентов RSS",
|
||||
"input": {
|
||||
|
@ -265,7 +265,7 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"pageWebUI": {
|
||||
"webUI": {
|
||||
"useAlternativeWebUI": "Использовать альтернативный веб-интерфейс",
|
||||
"filesLocation": "Расположение файла",
|
||||
"webUserInterface": "Веб-интерфейс (удаленное управление)",
|
||||
|
@ -281,7 +281,7 @@
|
|||
"bypassAuthenticationForClientsInWhitelisted": "Пропустить аутентификацию для клиентов в подсетях IP из белого списка",
|
||||
"whiteListExample": "Пример: 172.17.32.0/24, fdff:ffff:c8::/40"
|
||||
},
|
||||
"pageTagsAndCategories": {
|
||||
"tagsAndCategories": {
|
||||
"btnCreateNew": "Создать категорию",
|
||||
"subHeaderTags": "Доступные теги:",
|
||||
"subHeaderCategories": "Доступные категории:"
|
||||
|
@ -347,7 +347,7 @@
|
|||
"relevance": "Актуальность",
|
||||
"files": "Файлы"
|
||||
},
|
||||
"pageTagsAndCategories": {
|
||||
"tagsAndCategories": {
|
||||
"subHeaderTag": "Доступные таги:",
|
||||
"subHeaderCategories": "Доступные категории:"
|
||||
},
|
||||
|
|
|
@ -218,13 +218,13 @@
|
|||
"webUI": "Bеб-інтерфейс",
|
||||
"tagsAndCategories": "Мітки та категорії"
|
||||
},
|
||||
"pageVueTorrent": {
|
||||
"vueTorrent": {
|
||||
"tabName": {
|
||||
"general": "Загальне",
|
||||
"desktopCard": "Десктоп",
|
||||
"mobileCard": "Мобільний"
|
||||
},
|
||||
"pageGeneral": {
|
||||
"general": {
|
||||
"tip": "Ці налаштування призначені для користувацького веб-інтерфейсу",
|
||||
"currentSpeed": "Відображати поточну швидкість",
|
||||
"speedGraph": "Показувати графік швидкості",
|
||||
|
@ -246,16 +246,16 @@
|
|||
"exportSettings": "Експорт налаштувань",
|
||||
"resetSettings": "Скинути налаштування"
|
||||
},
|
||||
"pageDesktopCard": {
|
||||
"desktopCard": {
|
||||
"busyTorrentTip": "Властивості для відображення зайнятих торрентів",
|
||||
"completedTorrentTip": "Властивості для відображення завершених торрентів"
|
||||
},
|
||||
"pageMobileCard": {
|
||||
"mobileCard": {
|
||||
"busyTorrentTip": "Властивості для відображення для зайнятих торрентів на мобільному пристрої",
|
||||
"completedTorrentTip": "Властивості для відображення завершених торрентів на мобільному пристрої"
|
||||
}
|
||||
},
|
||||
"pageDownloads": {
|
||||
"downloads": {
|
||||
"subHeaderWhenAddTorrent": "Коли додається торент",
|
||||
"whenAddTorrent": {
|
||||
"donotAutoStart": "Не запускати завантаження автоматично",
|
||||
|
@ -291,7 +291,7 @@
|
|||
"supportParamK": "%K: ID торренту"
|
||||
}
|
||||
},
|
||||
"pageConnection": {
|
||||
"connection": {
|
||||
"protocol": "Протокол підключення пірів",
|
||||
"listeningSubHeader": "Прослуховуваний порт",
|
||||
"useUPnP": "Використовувати переспрямування портів UPnP / NAT-PMP з мого маршрутизатора",
|
||||
|
@ -306,7 +306,7 @@
|
|||
"proxyTorrentOnly": "Використовувати проксі тільки для торрентів",
|
||||
"proxyAuth": "Аутентифікація"
|
||||
},
|
||||
"pageBittorrent": {
|
||||
"bittorrent": {
|
||||
"subHeaderPrivacy": "Конфіденційність",
|
||||
"enableDHT": "Увімкнути DHT (децентралізовану мережу), щоб знайти більше однорангових пристроїв",
|
||||
"enablePeX": "Увімкнути Peer Exchange (PeX), щоб знайти більше однорангових партнерів",
|
||||
|
@ -328,21 +328,21 @@
|
|||
"maxRatioRemoveTorrentAndFiles": "Видалити торрент та файли",
|
||||
"maxRatioTorrentSuperseeding": "Ввімкнути режим суперсіда"
|
||||
},
|
||||
"pageRss": {
|
||||
"rss": {
|
||||
"tabName": {
|
||||
"general": "Загальні",
|
||||
"feeds": "Стрічки",
|
||||
"rules": "Правила"
|
||||
},
|
||||
"pageRules": {
|
||||
"rules": {
|
||||
"rules": "Правила",
|
||||
"btnCreateNew": "Створити правило"
|
||||
},
|
||||
"pageFeeds": {
|
||||
"feeds": {
|
||||
"feeds": "Стрічки",
|
||||
"btnCreateNew": "Додати стрічку"
|
||||
},
|
||||
"pageGeneral": {
|
||||
"general": {
|
||||
"rssAutoProcessing": "Зчитувач RSS",
|
||||
"rssAutoDownloader": "Автозавантаження торрентів через RSS",
|
||||
"input": {
|
||||
|
@ -353,7 +353,7 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"pageWebUI": {
|
||||
"webUI": {
|
||||
"useAlternativeWebUI": "Використовувати альтернативний веб-інтерфейс",
|
||||
"filesLocation": "Розташування файлів",
|
||||
"webUserInterface": "Веб-інтерфейс користувача (дистанційне керування)",
|
||||
|
@ -369,7 +369,7 @@
|
|||
"bypassAuthenticationForClientsInWhitelisted": "Обійти автентифікацію для клієнтів у підмережах IP із білого списку",
|
||||
"whiteListExample": "Приклад: 172.17.32.0/24, fdff:ffff:c8::/40"
|
||||
},
|
||||
"pageTagsAndCategories": {
|
||||
"tagsAndCategories": {
|
||||
"btnCreateNew": "Створити категорію",
|
||||
"subHeaderTags": "Доступні мітки:",
|
||||
"subHeaderCategories": "Доступні категорії:"
|
||||
|
@ -435,7 +435,7 @@
|
|||
"relevance": "Відповідність",
|
||||
"files": "Файли"
|
||||
},
|
||||
"pageTagsAndCategories": {
|
||||
"tagsAndCategories": {
|
||||
"subHeaderTag": "Доступні мітки:",
|
||||
"subHeaderCategories": "Доступні категорії:"
|
||||
},
|
||||
|
|
|
@ -147,11 +147,11 @@
|
|||
"webUI": "Web UI",
|
||||
"tagsAndCategories": "Thẻ & Danh mục"
|
||||
},
|
||||
"pageVueTorrent": {
|
||||
"vueTorrent": {
|
||||
"tabName": {
|
||||
"general": "Chung"
|
||||
},
|
||||
"pageGeneral": {
|
||||
"general": {
|
||||
"tip": "Đây là các cài đặt dành riêng cho VueTorrent",
|
||||
"currentSpeed": "Hiển thị tốc độ hiện tại",
|
||||
"speedGraph": "Hiển thị biểu đồ tốc độ",
|
||||
|
@ -170,7 +170,7 @@
|
|||
"qbittorrentVersion": "Phiên bản QBittorrent:",
|
||||
"resetSettings": "Đặt lại cài đặt"
|
||||
},
|
||||
"pageDesktopCard": {
|
||||
"desktopCard": {
|
||||
"busyTorrentTip": "Các thuộc tính để hiển thị cho các torrent chưa hoàn thành",
|
||||
"completedTorrentTip": "Các thuộc tính để hiển thị cho các torrent đã hoàn thành",
|
||||
"properties": {
|
||||
|
@ -201,9 +201,9 @@
|
|||
"globalVolume": "Global Volume"
|
||||
}
|
||||
},
|
||||
"pageMobileCard": {}
|
||||
"mobileCard": {}
|
||||
},
|
||||
"pageDownloads": {
|
||||
"downloads": {
|
||||
"subHeaderWhenAddTorrent": "Khi thêm một torrent",
|
||||
"whenAddTorrent": {
|
||||
"donotAutoStart": "Không tự động bắt đầu tải xuống"
|
||||
|
@ -238,12 +238,12 @@
|
|||
"supportParamK": "%K: ID torrent"
|
||||
}
|
||||
},
|
||||
"pageConnection": {
|
||||
"connection": {
|
||||
"protocol": "Giao thức kết nối ngang hàng",
|
||||
"listeningSubHeader": "Cổng",
|
||||
"useUPnP": "Sử dụng chuyển tiếp cổng UPnP/NAT-PMP từ bộ định tuyến của tôi",
|
||||
"incomingConnectionPort": "Cổng được sử dụng cho các kết nối đến",
|
||||
"subHeader": "Giới hạn kết nối (-1 để tắt)",
|
||||
"subHeader": "Giới hạn kết nối",
|
||||
"globalMaxConnection": "Số lượng kết nối tối đa chung",
|
||||
"perTorrentMaxConnection": "Số lượng kết nối tối đa trên mỗi torrent",
|
||||
"globalMaxUploadSlots": "Số vùng tải lên tối đa chung",
|
||||
|
@ -253,7 +253,7 @@
|
|||
"proxyTorrentOnly": "Chỉ sử dụng proxy cho torrent",
|
||||
"proxyAuth": "Xác thực"
|
||||
},
|
||||
"pageBittorrent": {
|
||||
"bittorrent": {
|
||||
"subHeaderPrivacy": "Riêng tư",
|
||||
"enableDHT": "Kích hoạt DHT (mạng phi tập trung) để tìm thêm máy ngang hàng",
|
||||
"enablePeX": "Bật Trao đổi ngang hàng (PeX) để tìm thêm máy ngang hàng",
|
||||
|
@ -275,21 +275,21 @@
|
|||
"maxRatioRemoveTorrentAndFiles": "Xóa torrent và tệp",
|
||||
"maxRatioTorrentSuperseeding": "Kích hoạt tính năng siêu chia sẻ torrent"
|
||||
},
|
||||
"pageRss": {
|
||||
"rss": {
|
||||
"tabName": {
|
||||
"general": "Chung",
|
||||
"feeds": "Nguồn cấp dữ liệu",
|
||||
"rules": "Quy tắc"
|
||||
},
|
||||
"pageRules": {
|
||||
"rules": {
|
||||
"rules": "Quy tắc",
|
||||
"btnCreateNew": "Tạo quy tắc"
|
||||
},
|
||||
"pageFeeds": {
|
||||
"feeds": {
|
||||
"feeds": "Nguồn cấp dữ liệu",
|
||||
"btnCreateNew": "Thêm nguồn cấp dữ liệu"
|
||||
},
|
||||
"pageGeneral": {
|
||||
"general": {
|
||||
"rssAutoProcessing": "RSS",
|
||||
"rssAutoDownloader": "Trình tải xuống tự động RSS Torrent",
|
||||
"input": {
|
||||
|
@ -300,7 +300,7 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"pageWebUI": {
|
||||
"webUI": {
|
||||
"useAlternativeWebUI": "Sử dụng WebUI thay thế",
|
||||
"filesLocation": "Vị trí WebUI",
|
||||
"webUserInterface": "Giao diện người dùng web (Điều khiển từ xa)",
|
||||
|
@ -316,7 +316,7 @@
|
|||
"bypassAuthenticationForClientsInWhitelisted": "Bỏ qua xác thực cho máy khách trong mạng con IP được liệt kê trong danh sách trắng",
|
||||
"whiteListExample": "Ví dụ: 172.17.32.0/24, fdff:ffff:c8::/40"
|
||||
},
|
||||
"pageTagsAndCategories": {
|
||||
"tagsAndCategories": {
|
||||
"btnCreateNew": "Tạo mới",
|
||||
"subHeaderTags": "Thẻ có sẵn:",
|
||||
"subHeaderCategories": "Danh mục có sẵn:"
|
||||
|
@ -382,7 +382,7 @@
|
|||
"relevance": "Mức độ liên quan",
|
||||
"files": "Các tập tin"
|
||||
},
|
||||
"pageTagsAndCategories": {
|
||||
"tagsAndCategories": {
|
||||
"subHeaderTag": "Thẻ có sẵn:",
|
||||
"subHeaderCategories": "Danh mục có sẵn:"
|
||||
},
|
||||
|
|
|
@ -213,13 +213,13 @@
|
|||
"webUI": "WebUI",
|
||||
"tagsAndCategories": "标签&分类"
|
||||
},
|
||||
"pageVueTorrent": {
|
||||
"vueTorrent": {
|
||||
"tabName": {
|
||||
"general": "常规",
|
||||
"desktopCard": "桌面端标签",
|
||||
"mobileCard": "移动端标签"
|
||||
},
|
||||
"pageGeneral": {
|
||||
"general": {
|
||||
"tip": "这些设置适用于 Vuetorrent 本身",
|
||||
"currentSpeed": "显示当前速度",
|
||||
"speedGraph": "显示速度图形化",
|
||||
|
@ -241,16 +241,16 @@
|
|||
"exportSettings": "导出设置",
|
||||
"resetSettings": "重设为默认"
|
||||
},
|
||||
"pageDesktopCard": {
|
||||
"desktopCard": {
|
||||
"busyTorrentTip": "未完成种子显示属性",
|
||||
"completedTorrentTip": "已完成种子显示属性"
|
||||
},
|
||||
"pageMobileCard": {
|
||||
"mobileCard": {
|
||||
"busyTorrentTip": "未完成种子显示属性",
|
||||
"completedTorrentTip": "已完成种子显示属性"
|
||||
}
|
||||
},
|
||||
"pageDownloads": {
|
||||
"downloads": {
|
||||
"subHeaderWhenAddTorrent": "当添加种子时",
|
||||
"whenAddTorrent": {
|
||||
"donotAutoStart": "不要开始自动下载",
|
||||
|
@ -286,7 +286,7 @@
|
|||
"supportParamK": "%K: 种子 ID"
|
||||
}
|
||||
},
|
||||
"pageConnection": {
|
||||
"connection": {
|
||||
"protocol": "对等连接协议",
|
||||
"listeningSubHeader": "监听端口",
|
||||
"useUPnP": "使用路由器的 UPnP/NAT-PMP 端口转发",
|
||||
|
@ -301,7 +301,7 @@
|
|||
"proxyTorrentOnly": "只对 torrents 使用代理",
|
||||
"proxyAuth": "认证"
|
||||
},
|
||||
"pageBittorrent": {
|
||||
"bittorrent": {
|
||||
"subHeaderPrivacy": "隐私",
|
||||
"enableDHT": "启用 DHT (分散网络) 寻找更多终端",
|
||||
"enablePeX": "启用 PeX (对等交换) 寻找更多终端",
|
||||
|
@ -323,21 +323,21 @@
|
|||
"maxRatioRemoveTorrentAndFiles": "移除种子和文件",
|
||||
"maxRatioTorrentSuperseeding": "启用超级做种"
|
||||
},
|
||||
"pageRss": {
|
||||
"rss": {
|
||||
"tabName": {
|
||||
"general": "常规",
|
||||
"feeds": "订阅源",
|
||||
"rules": "规则"
|
||||
},
|
||||
"pageRules": {
|
||||
"rules": {
|
||||
"rules": "规则",
|
||||
"btnCreateNew": "创建规则"
|
||||
},
|
||||
"pageFeeds": {
|
||||
"feeds": {
|
||||
"feeds": "订阅源",
|
||||
"btnCreateNew": "添加订阅"
|
||||
},
|
||||
"pageGeneral": {
|
||||
"general": {
|
||||
"rssAutoProcessing": "RSS 阅读器",
|
||||
"rssAutoDownloader": "RSS Torrent 自动下载器",
|
||||
"input": {
|
||||
|
@ -348,7 +348,7 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"pageWebUI": {
|
||||
"webUI": {
|
||||
"useAlternativeWebUI": "使用自定义WEBUI",
|
||||
"filesLocation": "文件路径",
|
||||
"webUserInterface": "WEBUI设置 (远程控制)",
|
||||
|
@ -364,7 +364,7 @@
|
|||
"bypassAuthenticationForClientsInWhitelisted": "绕过白名单IP子网中客户端的身份验证",
|
||||
"whiteListExample": "示例:172.17.32.0/24, fdff:ffff:c8::/40"
|
||||
},
|
||||
"pageTagsAndCategories": {
|
||||
"tagsAndCategories": {
|
||||
"btnCreateNew": "新增",
|
||||
"subHeaderTags": "可用标签:",
|
||||
"subHeaderCategories": "可用分类:"
|
||||
|
@ -439,7 +439,7 @@
|
|||
"relevance": "关联",
|
||||
"files": "文件"
|
||||
},
|
||||
"pageTagsAndCategories": {
|
||||
"tagsAndCategories": {
|
||||
"subHeaderTag": "可用标签:",
|
||||
"subHeaderCategories": "可用分类:"
|
||||
},
|
||||
|
|
|
@ -213,13 +213,13 @@
|
|||
"webUI": "網頁介面",
|
||||
"tagsAndCategories": "標籤和分類"
|
||||
},
|
||||
"pageVueTorrent": {
|
||||
"vueTorrent": {
|
||||
"tabName": {
|
||||
"general": "一般",
|
||||
"desktopCard": "桌面版卡片",
|
||||
"mobileCard": "行動版卡片"
|
||||
},
|
||||
"pageGeneral": {
|
||||
"general": {
|
||||
"tip": "這些設定適用於自訂WebUI",
|
||||
"currentSpeed": "顯示當前速率",
|
||||
"speedGraph": "顯示速率圖表",
|
||||
|
@ -241,16 +241,16 @@
|
|||
"exportSettings": "匯出設定",
|
||||
"resetSettings": "重置設定"
|
||||
},
|
||||
"pageDesktopCard": {
|
||||
"desktopCard": {
|
||||
"busyTorrentTip": "桌面版上未完成種子所顯示的屬性",
|
||||
"completedTorrentTip": "桌面版上已完成種子所顯示的屬性"
|
||||
},
|
||||
"pageMobileCard": {
|
||||
"mobileCard": {
|
||||
"busyTorrentTip": "行動版上未完成種子所顯示的屬性",
|
||||
"completedTorrentTip": "行動版上未完成種子所顯示的屬性"
|
||||
}
|
||||
},
|
||||
"pageDownloads": {
|
||||
"downloads": {
|
||||
"subHeaderWhenAddTorrent": "當新增種子時",
|
||||
"whenAddTorrent": {
|
||||
"donotAutoStart": "不要自動開始下載",
|
||||
|
@ -286,12 +286,12 @@
|
|||
"supportParamK": "%K: 種子 ID"
|
||||
}
|
||||
},
|
||||
"pageConnection": {
|
||||
"connection": {
|
||||
"protocol": "下載者連線協定",
|
||||
"listeningSubHeader": "監聽埠",
|
||||
"useUPnP": "使用從路由器轉送的 UPnP / NAT-PMP 連接埠",
|
||||
"incomingConnectionPort": "連入連線時使用的埠",
|
||||
"subHeader": "連線限制 (-1 以禁用)",
|
||||
"subHeader": "連線限制",
|
||||
"globalMaxConnection": "全域最大連線數",
|
||||
"perTorrentMaxConnection": "單個種子的最大連線數",
|
||||
"globalMaxUploadSlots": "全域上傳通道最大數",
|
||||
|
@ -301,7 +301,7 @@
|
|||
"proxyTorrentOnly": "只對種子使用代理伺服器",
|
||||
"proxyAuth": "驗證"
|
||||
},
|
||||
"pageBittorrent": {
|
||||
"bittorrent": {
|
||||
"subHeaderPrivacy": "隱私",
|
||||
"enableDHT": "啟用 DHT (分散式網絡) 以尋找更多下載者",
|
||||
"enablePeX": "啟用節點交換 (PeX) 以尋找更多下載者",
|
||||
|
@ -323,21 +323,21 @@
|
|||
"maxRatioRemoveTorrentAndFiles": "移除種子與其檔案",
|
||||
"maxRatioTorrentSuperseeding": "為種子啟用超級做種"
|
||||
},
|
||||
"pageRss": {
|
||||
"rss": {
|
||||
"tabName": {
|
||||
"general": "一般",
|
||||
"feeds": "訂閱源",
|
||||
"rules": "規則"
|
||||
},
|
||||
"pageRules": {
|
||||
"rules": {
|
||||
"rules": "規則",
|
||||
"btnCreateNew": "新增規則"
|
||||
},
|
||||
"pageFeeds": {
|
||||
"feeds": {
|
||||
"feeds": "訂閱源",
|
||||
"btnCreateNew": "新增訂閱"
|
||||
},
|
||||
"pageGeneral": {
|
||||
"general": {
|
||||
"rssAutoProcessing": "RSS 閱讀器",
|
||||
"rssAutoDownloader": "RSS 種子自動下載器",
|
||||
"input": {
|
||||
|
@ -348,7 +348,7 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"pageWebUI": {
|
||||
"webUI": {
|
||||
"useAlternativeWebUI": "使用替補 WebUI",
|
||||
"filesLocation": "檔案路徑",
|
||||
"webUserInterface": "網頁介面 (遠端控制)",
|
||||
|
@ -364,7 +364,7 @@
|
|||
"bypassAuthenticationForClientsInWhitelisted": "跳過白名單內 IP 子網中客戶端的驗證",
|
||||
"whiteListExample": "範例:172.17.32.0/24, fdff:ffff:c8::/40"
|
||||
},
|
||||
"pageTagsAndCategories": {
|
||||
"tagsAndCategories": {
|
||||
"btnCreateNew": "新增",
|
||||
"subHeaderTags": "可用標籤:",
|
||||
"subHeaderCategories": "可用分類:"
|
||||
|
@ -439,7 +439,7 @@
|
|||
"relevance": "關聯",
|
||||
"files": "檔案"
|
||||
},
|
||||
"pageTagsAndCategories": {
|
||||
"tagsAndCategories": {
|
||||
"subHeaderTag": "可用標籤:",
|
||||
"subHeaderCategories": "可用分類:"
|
||||
},
|
||||
|
|
|
@ -1,18 +1,23 @@
|
|||
import { Component, Vue, Watch } from 'vue-property-decorator'
|
||||
import { defineComponent } from 'vue'
|
||||
|
||||
@Component
|
||||
export default class FullScreenModal extends Vue {
|
||||
tab!: string | null
|
||||
|
||||
get phoneLayout() {
|
||||
return this.$vuetify.breakpoint.xsOnly
|
||||
export default defineComponent({
|
||||
name: 'FullScreenModal',
|
||||
data() {
|
||||
return {
|
||||
tab: null as string | null
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
phoneLayout() {
|
||||
return this.$vuetify.breakpoint.xsOnly
|
||||
},
|
||||
dialogWidth() {
|
||||
return this.phoneLayout ? '100%' : '80%'
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
dialog(visible: boolean) {
|
||||
if (!visible) this.tab = null
|
||||
}
|
||||
}
|
||||
get dialogWidth() {
|
||||
return this.phoneLayout ? '100%' : '80%'
|
||||
}
|
||||
|
||||
@Watch('dialog')
|
||||
onDialogChanged(visible: boolean) {
|
||||
if (!visible) this.tab = null
|
||||
}
|
||||
}
|
||||
})
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
import { mapGetters } from 'vuex'
|
||||
import { defineComponent } from 'vue'
|
||||
import qbit from '@/services/qbit'
|
||||
import { AppPreferences } from '@/types/qbit/models'
|
||||
|
||||
export default defineComponent({
|
||||
name: 'SettingsTab',
|
||||
computed: {
|
||||
...mapGetters(['getSettings']),
|
||||
settings() {
|
||||
settings(): AppPreferences {
|
||||
return this.getSettings()
|
||||
}
|
||||
},
|
||||
|
|
|
@ -12,7 +12,8 @@ import type {
|
|||
TorrentFile,
|
||||
TorrentProperties,
|
||||
Tracker,
|
||||
Torrent
|
||||
Torrent,
|
||||
NetworkInterface
|
||||
} from '@/types/qbit/models'
|
||||
import type { MainDataResponse, SearchResultsResponse, TorrentPeersResponse } from '@/types/qbit/responses'
|
||||
import type { AddTorrentPayload, AppPreferencesPayload, CreateFeedPayload, LoginPayload } from '@/types/qbit/payloads'
|
||||
|
@ -532,6 +533,18 @@ export class QBitApi {
|
|||
.then(() => true)
|
||||
.catch(() => false)
|
||||
}
|
||||
|
||||
async getNetworkInterfaces(): Promise<NetworkInterface[]> {
|
||||
return this.axios.get('/app/networkInterfaceList').then(r => r.data)
|
||||
}
|
||||
|
||||
async getAddresses(iface: string = ''): Promise<string[]> {
|
||||
const params = {
|
||||
iface
|
||||
}
|
||||
|
||||
return this.axios.get('/app/networkInterfaceAddressList', { params }).then(r => r.data)
|
||||
}
|
||||
}
|
||||
|
||||
export const Qbit = new QBitApi()
|
||||
|
|
|
@ -10,8 +10,15 @@ import type {
|
|||
StopCondition,
|
||||
UploadChokingAlgorithm,
|
||||
UploadSlotsBehavior,
|
||||
UtpTcpMixedMode
|
||||
UtpTcpMixedMode,
|
||||
DiskIOType
|
||||
} from '@/enums/qbit/AppPreferences'
|
||||
import { DiskIOMode } from '@/enums/qbit/AppPreferences'
|
||||
|
||||
export interface NetworkInterface {
|
||||
name: string
|
||||
value: string
|
||||
}
|
||||
|
||||
export default interface AppPreferences {
|
||||
/** List of trackers to add to new torrent */
|
||||
|
@ -51,6 +58,7 @@ export default interface AppPreferences {
|
|||
banned_IPs: string
|
||||
/** Bittorrent Protocol to use (see list of possible values below) */
|
||||
bittorrent_protocol: BitTorrentProtocol
|
||||
block_peers_on_privileged_ports: boolean
|
||||
/** (White)list of ipv4/ipv6 subnets for which webui authentication should be bypassed; list entries are separated by commas */
|
||||
bypass_auth_subnet_whitelist: string
|
||||
/** True if webui authentication should be bypassed for clients whose ip resides within (at least) one of the subnets on the whitelist */
|
||||
|
@ -61,8 +69,7 @@ export default interface AppPreferences {
|
|||
category_changed_tmm_enabled: boolean
|
||||
/** Outstanding memory when checking torrents in MiB */
|
||||
checking_memory_use: number
|
||||
/** True if a subfolder should be created when adding a torrent */
|
||||
create_subfolder_enabled: boolean
|
||||
connection_speed: number
|
||||
/** IP Address to bind to. Empty String means All addresses */
|
||||
current_interface_address: string
|
||||
/** Network Interface used */
|
||||
|
@ -73,6 +80,10 @@ export default interface AppPreferences {
|
|||
disk_cache: number
|
||||
/** Disk cache expiry interval in seconds */
|
||||
disk_cache_ttl: number
|
||||
disk_io_read_mode: DiskIOMode
|
||||
disk_io_type: DiskIOType
|
||||
disk_io_write_mode: DiskIOMode
|
||||
disk_queue_size: number
|
||||
/** Global download speed limit in KiB/s; -1 means no limit is applied */
|
||||
dl_limit: number
|
||||
/** If true torrents w/o any activity (stalled ones) will not be counted towards max_active_* limits; see dont_count_slow_torrents for more information */
|
||||
|
@ -89,26 +100,29 @@ export default interface AppPreferences {
|
|||
dyndns_username: string
|
||||
/** Port used for embedded tracker */
|
||||
embedded_tracker_port: number
|
||||
embedded_tracker_port_forwarding: boolean
|
||||
/** True enables coalesce reads & writes */
|
||||
enable_coalesce_read_write: boolean
|
||||
/** True enables embedded tracker */
|
||||
enable_embedded_tracker: boolean
|
||||
/** True allows multiple connections from the same IP address */
|
||||
enable_multi_connections_from_same_ip: boolean
|
||||
/** True enables os cache */
|
||||
enable_os_cache: boolean
|
||||
/** True if the advanced libtorrent option piece_extent_affinity is enabled */
|
||||
enable_piece_extent_affinity: boolean
|
||||
/** True enables sending of upload piece suggestions */
|
||||
enable_upload_suggestions: boolean
|
||||
/** See list of possible values here below */
|
||||
encryption: Encryption
|
||||
excluded_file_names: string
|
||||
excluded_file_names_enabled: boolean
|
||||
/** Path to directory to copy .torrent files to. Slashes are used as path separators */
|
||||
export_dir: string
|
||||
/** Path to directory to copy .torrent files of completed downloads to. Slashes are used as path separators */
|
||||
export_dir_fin: string
|
||||
/** File pool size */
|
||||
file_pool_size: number
|
||||
hashing_threads: number
|
||||
idn_support_enabled: boolean
|
||||
/** True if ".!qB" should be appended to incomplete files */
|
||||
incomplete_files_ext: boolean
|
||||
/** True if external IP filter should be enabled */
|
||||
|
@ -145,12 +159,14 @@ export default interface AppPreferences {
|
|||
mail_notification_ssl_enabled: boolean
|
||||
/** Username for smtp authentication */
|
||||
mail_notification_username: string
|
||||
max_active_checking_torrents: number
|
||||
/** Maximum number of active simultaneous downloads */
|
||||
max_active_downloads: number
|
||||
/** Maximum number of active simultaneous downloads and uploads */
|
||||
max_active_torrents: number
|
||||
/** Maximum number of active simultaneous uploads */
|
||||
max_active_uploads: number
|
||||
max_concurrent_http_announces: number
|
||||
/** Maximum global number of simultaneous connections */
|
||||
max_connec: number
|
||||
/** Maximum number of simultaneous connections per torrent */
|
||||
|
@ -169,16 +185,23 @@ export default interface AppPreferences {
|
|||
max_uploads: number
|
||||
/** Maximum number of upload slots per torrent */
|
||||
max_uploads_per_torrent: number
|
||||
memory_working_set_limit: number
|
||||
/** Maximal outgoing port (0: Disabled) */
|
||||
outgoing_ports_max: number
|
||||
/** Minimal outgoing port (0: Disabled) */
|
||||
outgoing_ports_min: number
|
||||
peer_tos: number
|
||||
peer_turnover: number
|
||||
peer_turnover_cutoff: number
|
||||
peer_turnover_interval: number
|
||||
performance_warning: boolean
|
||||
/** True if PeX is enabled */
|
||||
pex: boolean
|
||||
/** True if disk space should be pre-allocated for all files */
|
||||
preallocate_all: boolean
|
||||
/** True proxy requires authentication; doesn't apply to SOCKS4 proxies */
|
||||
proxy_auth_enabled: boolean
|
||||
proxy_hostname_lookup: boolean
|
||||
/** Proxy IP address or domain name */
|
||||
proxy_ip: string
|
||||
/** Password for proxy authentication */
|
||||
|
@ -197,8 +220,11 @@ export default interface AppPreferences {
|
|||
queueing_enabled: boolean
|
||||
/** True if the port is randomly selected */
|
||||
random_port: boolean
|
||||
reannounce_when_address_changed: boolean
|
||||
/** True rechecks torrents on completion */
|
||||
recheck_completed_torrents: boolean
|
||||
refresh_interval: number
|
||||
request_queue_size: number
|
||||
/** True resolves peer countries */
|
||||
resolve_peer_countries: boolean
|
||||
/** Enable auto-downloading of torrents from the RSS feeds */
|
||||
|
@ -247,10 +273,7 @@ export default interface AppPreferences {
|
|||
slow_torrent_ul_rate_threshold: number
|
||||
/** Socket backlog size */
|
||||
socket_backlog_size: number
|
||||
/** For API < v2.0.1: SSL certificate contents (this is a not a path) */
|
||||
ssl_cert: string
|
||||
/** For API < v2.0.1: SSL keyfile contents (this is a not a path) */
|
||||
ssl_key: string
|
||||
ssrf_mitigation: boolean
|
||||
/** True if torrents should be added in a Paused state */
|
||||
start_paused_enabled: boolean
|
||||
/** Timeout in seconds for a stopped announce request to trackers */
|
||||
|
@ -265,7 +288,7 @@ export default interface AppPreferences {
|
|||
torrent_content_layout: ContentLayout
|
||||
/** Default stop condition to select when adding a new torrent */
|
||||
torrent_stop_condition: StopCondition
|
||||
/** Global upload speed limit in KiB/s; -1 means no limit is applied */
|
||||
/** Global upload speed limit in KiB/s; 0 means no limit is applied */
|
||||
up_limit: number
|
||||
/** Upload choking algorithm used (see list of possible values below) */
|
||||
upload_choking_algorithm: UploadChokingAlgorithm
|
||||
|
@ -275,10 +298,12 @@ export default interface AppPreferences {
|
|||
upnp: boolean
|
||||
/** UPnP lease duration (0: Permanent lease) */
|
||||
upnp_lease_duration: number
|
||||
use_category_paths_in_manual_mode: boolean
|
||||
/** True if WebUI HTTPS access is enabled */
|
||||
use_https: boolean
|
||||
/** μTP-TCP mixed mode algorithm (see list of possible values below) */
|
||||
utp_tcp_mixed_mode: UtpTcpMixedMode
|
||||
validate_https_tracker_certificate: boolean
|
||||
/** IP address to use for the WebUI */
|
||||
web_ui_address: string
|
||||
/** WebUI access ban duration in seconds */
|
||||
|
@ -300,9 +325,11 @@ export default interface AppPreferences {
|
|||
/** Maximum number of authentication failures before WebUI access ban */
|
||||
web_ui_max_auth_fail_count: number
|
||||
/** For API ≥ v2.3.0: Plaintext WebUI password, not readable, write-only. For API < v2.3.0: MD5 hash of WebUI password, hash is generated from the following string: username:Web UI Access:plain_text_web_ui_password */
|
||||
web_ui_password: string
|
||||
web_ui_password?: string
|
||||
/** WebUI port */
|
||||
web_ui_port: number
|
||||
web_ui_reverse_proxies_list: string
|
||||
web_ui_reverse_proxy_enabled: boolean
|
||||
/** True if WebUI cookie Secure flag is enabled */
|
||||
web_ui_secure_cookie_enabled: boolean
|
||||
/** Seconds until WebUI is automatically signed off */
|
||||
|
|
|
@ -12,13 +12,15 @@ import type SearchPlugin from './SearchPlugin'
|
|||
import type SearchJob from './SearchJob'
|
||||
import type SearchStatus from './SearchStatus'
|
||||
import type SearchResult from './SearchResult'
|
||||
import { FeedArticle } from '@/types/qbit/models/FeedArticle'
|
||||
import { FeedArticle } from './FeedArticle'
|
||||
import { NetworkInterface } from './AppPreferences'
|
||||
|
||||
type ApplicationVersion = string
|
||||
|
||||
export type {
|
||||
ApplicationVersion,
|
||||
AppPreferences,
|
||||
NetworkInterface,
|
||||
Category,
|
||||
ServerState,
|
||||
Tracker,
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
:item-class="getRowStyle"
|
||||
>
|
||||
<template #top>
|
||||
<div class="mx-4">
|
||||
<div class="mx-4 mb-5">
|
||||
<v-text-field v-model="filter" :label="$t('filter')" />
|
||||
<v-row>
|
||||
<v-col>
|
||||
|
@ -36,11 +36,12 @@
|
|||
</v-col>
|
||||
<v-col>
|
||||
<v-btn style="float: right" small elevation="3" @click="markAllAsRead">
|
||||
{{ $t('modals.rss.markAllAsRead') }}
|
||||
{{ $t('modals.rss.markAllAsRead') }}
|
||||
</v-btn>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</div>
|
||||
<v-divider />
|
||||
</template>
|
||||
<template #[`item.title`]="{ item }">
|
||||
<a :href="item.link" target="_blank" v-text="item.title" />
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<v-row no-gutters class="grey--text" align="center" justify="center">
|
||||
<v-col>
|
||||
<h1 style="font-size: 1.6em !important" class="subtitle-1 ml-2">
|
||||
{{ $t('settings') | titleCase }}
|
||||
{{ $t('settings').toString() | titleCase }}
|
||||
</h1>
|
||||
</v-col>
|
||||
<v-col class="align-center justify-center">
|
||||
|
@ -21,7 +21,7 @@
|
|||
<v-row class="ma-0 pa-0">
|
||||
<v-tabs v-model="tab" align-with-title show-arrows background-color="primary">
|
||||
<v-tab class="white--text" href="#vuetorrent">
|
||||
<h4>{{ $t('modals.settings.tabName.VueTorrent') }}</h4>
|
||||
<h4>{{ $t('modals.settings.tabName.vueTorrent') }}</h4>
|
||||
</v-tab>
|
||||
<v-tab class="white--text" href="#downloads">
|
||||
<h4>{{ $t('modals.settings.tabName.downloads') }}</h4>
|
||||
|
@ -29,6 +29,9 @@
|
|||
<v-tab class="white--text" href="#connection">
|
||||
<h4>{{ $t('modals.settings.tabName.connection') }}</h4>
|
||||
</v-tab>
|
||||
<v-tab class="white--text" href="#speed">
|
||||
<h4>{{ $t('modals.settings.tabName.speed') }}</h4>
|
||||
</v-tab>
|
||||
<v-tab class="white--text" href="#bittorrent">
|
||||
<h4>{{ $t('modals.settings.tabName.bittorrent') }}</h4>
|
||||
</v-tab>
|
||||
|
@ -41,9 +44,11 @@
|
|||
<v-tab class="white--text" href="#tagsAndCategories">
|
||||
<h4>{{ $t('modals.settings.tabName.tagsAndCategories') }}</h4>
|
||||
</v-tab>
|
||||
<v-tab class="white--text" href="#advanced">
|
||||
<h4>{{ $t('modals.settings.tabName.advanced') }}</h4>
|
||||
</v-tab>
|
||||
</v-tabs>
|
||||
|
||||
<!--<v-divider />-->
|
||||
<v-card-text class="pa-0">
|
||||
<v-tabs-items v-model="tab" touchless>
|
||||
<v-tab-item eager value="vuetorrent">
|
||||
|
@ -55,6 +60,9 @@
|
|||
<v-tab-item eager value="connection">
|
||||
<Connection :is-active="tab === 'connection'" />
|
||||
</v-tab-item>
|
||||
<v-tab-item eager value="speed">
|
||||
<Speed :is-active="tab === 'speed'" />
|
||||
</v-tab-item>
|
||||
<v-tab-item eager value="bittorrent">
|
||||
<BitTorrent :is-active="tab === 'bittorrent'" />
|
||||
</v-tab-item>
|
||||
|
@ -67,33 +75,39 @@
|
|||
<v-tab-item eager value="tagsAndCategories">
|
||||
<TagsAndCategories :is-active="tab === 'tagsAndCategories'" />
|
||||
</v-tab-item>
|
||||
<v-tab-item eager value="advanced">
|
||||
<Advanced :is-active="tab === 'advanced'" />
|
||||
</v-tab-item>
|
||||
</v-tabs-items>
|
||||
</v-card-text>
|
||||
</v-row>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
<script lang="ts">
|
||||
import { defineComponent } from 'vue'
|
||||
import { mapGetters } from 'vuex'
|
||||
import { mdiClose, mdiContentSave } from '@mdi/js'
|
||||
import { WebUI, BitTorrent, Downloads, VueTorrent, TagsAndCategories, Connection, Rss } from '../components/Settings/Tabs'
|
||||
import { VueTorrent, Downloads, Connection, Speed, BitTorrent, Rss, WebUI, TagsAndCategories, Advanced } from '../components/Settings/Tabs'
|
||||
import { SettingsTab } from '../mixins'
|
||||
|
||||
export default {
|
||||
export default defineComponent({
|
||||
name: 'Settings',
|
||||
components: {
|
||||
WebUI,
|
||||
BitTorrent,
|
||||
Downloads,
|
||||
VueTorrent,
|
||||
TagsAndCategories,
|
||||
Downloads,
|
||||
Connection,
|
||||
Rss
|
||||
Speed,
|
||||
BitTorrent,
|
||||
Rss,
|
||||
WebUI,
|
||||
TagsAndCategories,
|
||||
Advanced
|
||||
},
|
||||
mixins: [SettingsTab],
|
||||
data() {
|
||||
return {
|
||||
tab: null,
|
||||
tab: 'vuetorrent',
|
||||
items: [],
|
||||
peers: [],
|
||||
mdiClose,
|
||||
|
@ -125,11 +139,11 @@ export default {
|
|||
close() {
|
||||
this.$router.back()
|
||||
},
|
||||
handleKeyboardShortcut(e) {
|
||||
handleKeyboardShortcut(e: KeyboardEvent) {
|
||||
if (e.key === 'Escape') {
|
||||
this.close()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -4,7 +4,7 @@ exports[`DesktopCard > render correctly 1`] = `
|
|||
"<v-card-stub loaderheight=\\"4\\" tag=\\"div\\" flat=\\"true\\">
|
||||
<v-row-stub tag=\\"div\\" dense=\\"true\\">
|
||||
<v-col-stub cols=\\"12\\" md=\\"6\\" tag=\\"div\\">
|
||||
<v-subheader-stub> modals.settings.pageVueTorrent.pageDesktopCard.busyTorrentTip </v-subheader-stub>
|
||||
<v-subheader-stub> modals.settings.vueTorrent.desktopCard.busyTorrentTip </v-subheader-stub>
|
||||
<v-row-stub tag=\\"div\\" dense=\\"true\\">
|
||||
<v-list-stub tag=\\"div\\" flat=\\"true\\" class=\\"ma-2 pa-0\\">
|
||||
<draggable-stub list=\\"[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]\\" clone=\\"[Function]\\" element=\\"div\\" tag=\\"tbody\\">
|
||||
|
@ -48,7 +48,7 @@ exports[`DesktopCard > render correctly 1`] = `
|
|||
</v-row-stub>
|
||||
</v-col-stub>
|
||||
<v-col-stub cols=\\"12\\" md=\\"6\\" tag=\\"div\\">
|
||||
<v-subheader-stub> modals.settings.pageVueTorrent.pageDesktopCard.completedTorrentTip </v-subheader-stub>
|
||||
<v-subheader-stub> modals.settings.vueTorrent.desktopCard.completedTorrentTip </v-subheader-stub>
|
||||
<v-row-stub tag=\\"div\\" dense=\\"true\\">
|
||||
<v-list-stub tag=\\"div\\" flat=\\"true\\" class=\\"ma-2 pa-0\\">
|
||||
<draggable-stub list=\\"[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]\\" clone=\\"[Function]\\" element=\\"div\\" tag=\\"tbody\\">
|
||||
|
|
|
@ -4,141 +4,66 @@ exports[`General > render correctly 1`] = `
|
|||
"<v-card-stub data-v-7da6d3e2=\\"\\" loaderheight=\\"4\\" tag=\\"div\\" flat=\\"true\\">
|
||||
<v-subheader-stub data-v-7da6d3e2=\\"\\"> </v-subheader-stub>
|
||||
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\">
|
||||
<v-row-stub data-v-7da6d3e2=\\"\\" tag=\\"div\\" dense=\\"true\\">
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" tag=\\"div\\">
|
||||
<v-switch-stub data-v-7da6d3e2=\\"\\" errorcount=\\"1\\" errormessages=\\"\\" messages=\\"\\" rules=\\"\\" successmessages=\\"\\" backgroundcolor=\\"\\" hidedetails=\\"true\\" ripple=\\"true\\" valuecomparator=\\"[Function]\\" inputvalue=\\"100\\" inset=\\"true\\" class=\\"v-input--reverse pa-0 ma-0\\"></v-switch-stub>
|
||||
<v-checkbox-stub data-v-7da6d3e2=\\"\\" errorcount=\\"1\\" errormessages=\\"\\" messages=\\"\\" rules=\\"\\" successmessages=\\"\\" backgroundcolor=\\"\\" hidedetails=\\"true\\" ripple=\\"true\\" valuecomparator=\\"[Function]\\" inputvalue=\\"100\\" indeterminateicon=\\"$checkboxIndeterminate\\" officon=\\"$checkboxOff\\" onicon=\\"$checkboxOn\\" class=\\"ma-0 pa-0\\"></v-checkbox-stub>
|
||||
</v-list-item-stub>
|
||||
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\">
|
||||
<v-checkbox-stub data-v-7da6d3e2=\\"\\" errorcount=\\"1\\" errormessages=\\"\\" messages=\\"\\" rules=\\"\\" successmessages=\\"\\" backgroundcolor=\\"\\" hidedetails=\\"true\\" ripple=\\"true\\" valuecomparator=\\"[Function]\\" inputvalue=\\"true\\" indeterminateicon=\\"$checkboxIndeterminate\\" officon=\\"$checkboxOff\\" onicon=\\"$checkboxOn\\" class=\\"ma-0 pa-0\\"></v-checkbox-stub>
|
||||
</v-list-item-stub>
|
||||
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\">
|
||||
<v-checkbox-stub data-v-7da6d3e2=\\"\\" errorcount=\\"1\\" errormessages=\\"\\" messages=\\"\\" rules=\\"\\" successmessages=\\"\\" backgroundcolor=\\"\\" hidedetails=\\"true\\" ripple=\\"true\\" valuecomparator=\\"[Function]\\" inputvalue=\\"true\\" indeterminateicon=\\"$checkboxIndeterminate\\" officon=\\"$checkboxOff\\" onicon=\\"$checkboxOn\\" class=\\"ma-0 pa-0\\"></v-checkbox-stub>
|
||||
</v-list-item-stub>
|
||||
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\">
|
||||
<v-checkbox-stub data-v-7da6d3e2=\\"\\" errorcount=\\"1\\" errormessages=\\"\\" messages=\\"\\" rules=\\"\\" successmessages=\\"\\" backgroundcolor=\\"\\" hidedetails=\\"true\\" ripple=\\"true\\" valuecomparator=\\"[Function]\\" inputvalue=\\"true\\" indeterminateicon=\\"$checkboxIndeterminate\\" officon=\\"$checkboxOff\\" onicon=\\"$checkboxOn\\" class=\\"ma-0 pa-0\\"></v-checkbox-stub>
|
||||
</v-list-item-stub>
|
||||
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\">
|
||||
<v-checkbox-stub data-v-7da6d3e2=\\"\\" errorcount=\\"1\\" errormessages=\\"\\" messages=\\"\\" rules=\\"\\" successmessages=\\"\\" backgroundcolor=\\"\\" hidedetails=\\"true\\" ripple=\\"true\\" valuecomparator=\\"[Function]\\" indeterminateicon=\\"$checkboxIndeterminate\\" officon=\\"$checkboxOff\\" onicon=\\"$checkboxOn\\" class=\\"ma-0 pa-0\\"></v-checkbox-stub>
|
||||
</v-list-item-stub>
|
||||
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\">
|
||||
<v-checkbox-stub data-v-7da6d3e2=\\"\\" errorcount=\\"1\\" errormessages=\\"\\" messages=\\"\\" rules=\\"\\" successmessages=\\"\\" backgroundcolor=\\"\\" hidedetails=\\"true\\" ripple=\\"true\\" valuecomparator=\\"[Function]\\" inputvalue=\\"true\\" indeterminateicon=\\"$checkboxIndeterminate\\" officon=\\"$checkboxOff\\" onicon=\\"$checkboxOn\\" class=\\"ma-0 pa-0\\"></v-checkbox-stub>
|
||||
</v-list-item-stub>
|
||||
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\">
|
||||
<v-checkbox-stub data-v-7da6d3e2=\\"\\" errorcount=\\"1\\" errormessages=\\"\\" messages=\\"\\" rules=\\"\\" successmessages=\\"\\" backgroundcolor=\\"\\" hidedetails=\\"true\\" ripple=\\"true\\" valuecomparator=\\"[Function]\\" inputvalue=\\"10\\" indeterminateicon=\\"$checkboxIndeterminate\\" officon=\\"$checkboxOff\\" onicon=\\"$checkboxOn\\" class=\\"ma-0 pa-0\\"></v-checkbox-stub>
|
||||
</v-list-item-stub>
|
||||
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\">
|
||||
<v-checkbox-stub data-v-7da6d3e2=\\"\\" errorcount=\\"1\\" errormessages=\\"\\" messages=\\"\\" rules=\\"\\" successmessages=\\"\\" backgroundcolor=\\"\\" hidedetails=\\"true\\" ripple=\\"true\\" valuecomparator=\\"[Function]\\" indeterminateicon=\\"$checkboxIndeterminate\\" officon=\\"$checkboxOff\\" onicon=\\"$checkboxOn\\" class=\\"ma-0 pa-0\\"></v-checkbox-stub>
|
||||
</v-list-item-stub>
|
||||
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\">
|
||||
<v-checkbox-stub data-v-7da6d3e2=\\"\\" errorcount=\\"1\\" errormessages=\\"\\" messages=\\"\\" rules=\\"\\" successmessages=\\"\\" backgroundcolor=\\"\\" hidedetails=\\"true\\" ripple=\\"true\\" valuecomparator=\\"[Function]\\" indeterminateicon=\\"$checkboxIndeterminate\\" officon=\\"$checkboxOff\\" onicon=\\"$checkboxOn\\" class=\\"ma-0 pa-0\\"></v-checkbox-stub>
|
||||
</v-list-item-stub>
|
||||
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\" class=\\"mb-3\\">
|
||||
<v-checkbox-stub data-v-7da6d3e2=\\"\\" errorcount=\\"1\\" errormessages=\\"\\" messages=\\"\\" rules=\\"\\" successmessages=\\"\\" backgroundcolor=\\"\\" hidedetails=\\"true\\" ripple=\\"true\\" valuecomparator=\\"[Function]\\" indeterminateicon=\\"$checkboxIndeterminate\\" officon=\\"$checkboxOff\\" onicon=\\"$checkboxOn\\" class=\\"ma-0 pa-0\\"></v-checkbox-stub>
|
||||
</v-list-item-stub>
|
||||
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\" class=\\"mb-3\\">
|
||||
<v-row-stub data-v-7da6d3e2=\\"\\" tag=\\"div\\">
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" cols=\\"12\\" sm=\\"6\\" md=\\"3\\" tag=\\"div\\">
|
||||
<v-select-stub data-v-7da6d3e2=\\"\\" errorcount=\\"1\\" errormessages=\\"\\" messages=\\"\\" rules=\\"\\" successmessages=\\"\\" value=\\"English\\" appendicon=\\"$dropdown\\" backgroundcolor=\\"\\" dense=\\"true\\" height=\\"1\\" hidedetails=\\"true\\" loaderheight=\\"2\\" clearicon=\\"$clear\\" flat=\\"true\\" outlined=\\"true\\" type=\\"text\\" valuecomparator=\\"[Function]\\" nodatatext=\\"$vuetify.noDataText\\" items=\\"[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]\\" itemcolor=\\"primary\\" itemdisabled=\\"disabled\\" itemtext=\\"text\\" itemvalue=\\"value\\" menuprops=\\"[object Object]\\"></v-select-stub>
|
||||
</v-col-stub>
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" cols=\\"12\\" sm=\\"6\\" md=\\"3\\" tag=\\"div\\">
|
||||
<v-select-stub data-v-7da6d3e2=\\"\\" errorcount=\\"1\\" errormessages=\\"\\" messages=\\"\\" rules=\\"\\" successmessages=\\"\\" value=\\"10\\" appendicon=\\"$dropdown\\" backgroundcolor=\\"\\" dense=\\"true\\" height=\\"1\\" hidedetails=\\"true\\" loaderheight=\\"2\\" clearicon=\\"$clear\\" flat=\\"true\\" outlined=\\"true\\" type=\\"text\\" valuecomparator=\\"[Function]\\" nodatatext=\\"$vuetify.noDataText\\" items=\\"5,15,30,50\\" itemcolor=\\"primary\\" itemdisabled=\\"disabled\\" itemtext=\\"text\\" itemvalue=\\"value\\" menuprops=\\"[object Object]\\"></v-select-stub>
|
||||
</v-col-stub>
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" cols=\\"12\\" sm=\\"6\\" md=\\"3\\" tag=\\"div\\">
|
||||
<v-select-stub data-v-7da6d3e2=\\"\\" errorcount=\\"1\\" errormessages=\\"\\" messages=\\"\\" rules=\\"\\" successmessages=\\"\\" value=\\"test\\" appendicon=\\"$dropdown\\" backgroundcolor=\\"\\" dense=\\"true\\" height=\\"1\\" hidedetails=\\"true\\" loaderheight=\\"2\\" clearicon=\\"$clear\\" flat=\\"true\\" outlined=\\"true\\" type=\\"text\\" valuecomparator=\\"[Function]\\" nodatatext=\\"$vuetify.noDataText\\" items=\\"Default,Global Speed,First Torrent Status\\" itemcolor=\\"primary\\" itemdisabled=\\"disabled\\" itemtext=\\"text\\" itemvalue=\\"value\\" menuprops=\\"[object Object]\\"></v-select-stub>
|
||||
</v-col-stub>
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" cols=\\"12\\" sm=\\"6\\" md=\\"3\\" tag=\\"div\\">
|
||||
<v-text-field-stub data-v-7da6d3e2=\\"\\" errorcount=\\"1\\" errormessages=\\"\\" messages=\\"\\" rules=\\"\\" successmessages=\\"\\" backgroundcolor=\\"\\" dense=\\"true\\" hidedetails=\\"true\\" hint=\\"using Dayjs\\" loaderheight=\\"2\\" clearicon=\\"$clear\\" outlined=\\"true\\" placeholder=\\"DD/MM/YYYY, HH:mm:ss\\" type=\\"text\\" class=\\"mb-2\\"></v-text-field-stub>
|
||||
</v-col-stub>
|
||||
</v-row-stub>
|
||||
</v-list-item-stub>
|
||||
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\">
|
||||
<v-row-stub data-v-7da6d3e2=\\"\\" tag=\\"div\\" dense=\\"true\\">
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" tag=\\"div\\">
|
||||
<v-switch-stub data-v-7da6d3e2=\\"\\" errorcount=\\"1\\" errormessages=\\"\\" messages=\\"\\" rules=\\"\\" successmessages=\\"\\" backgroundcolor=\\"\\" hidedetails=\\"true\\" ripple=\\"true\\" valuecomparator=\\"[Function]\\" inputvalue=\\"true\\" inset=\\"true\\" class=\\"v-input--reverse pa-0 ma-0\\"></v-switch-stub>
|
||||
<v-row-stub data-v-7da6d3e2=\\"\\" tag=\\"div\\">
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" cols=\\"6\\" md=\\"2\\" tag=\\"div\\" class=\\"d-flex align-center justify-end\\">
|
||||
<h3 data-v-7da6d3e2=\\"\\"></h3>
|
||||
</v-col-stub>
|
||||
</v-row-stub>
|
||||
</v-list-item-stub>
|
||||
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\">
|
||||
<v-row-stub data-v-7da6d3e2=\\"\\" tag=\\"div\\" dense=\\"true\\">
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" tag=\\"div\\">
|
||||
<v-switch-stub data-v-7da6d3e2=\\"\\" errorcount=\\"1\\" errormessages=\\"\\" messages=\\"\\" rules=\\"\\" successmessages=\\"\\" backgroundcolor=\\"\\" hidedetails=\\"true\\" ripple=\\"true\\" valuecomparator=\\"[Function]\\" inputvalue=\\"true\\" inset=\\"true\\" class=\\"v-input--reverse pa-0 ma-0\\"></v-switch-stub>
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" cols=\\"6\\" md=\\"2\\" tag=\\"div\\" class=\\"d-flex align-center justify-start\\">
|
||||
<h3 data-v-7da6d3e2=\\"\\"><a data-v-7da6d3e2=\\"\\" target=\\"_blank\\" href=\\"https://github.com/WDaan/VueTorrent/releases/tag/vundefined\\"></a></h3>
|
||||
</v-col-stub>
|
||||
</v-row-stub>
|
||||
</v-list-item-stub>
|
||||
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\">
|
||||
<v-row-stub data-v-7da6d3e2=\\"\\" tag=\\"div\\" dense=\\"true\\">
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" tag=\\"div\\">
|
||||
<v-switch-stub data-v-7da6d3e2=\\"\\" errorcount=\\"1\\" errormessages=\\"\\" messages=\\"\\" rules=\\"\\" successmessages=\\"\\" backgroundcolor=\\"\\" hidedetails=\\"true\\" ripple=\\"true\\" valuecomparator=\\"[Function]\\" inputvalue=\\"true\\" inset=\\"true\\" class=\\"v-input--reverse pa-0 ma-0\\"></v-switch-stub>
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" cols=\\"6\\" md=\\"2\\" tag=\\"div\\" class=\\"d-flex align-center justify-end\\">
|
||||
<h3 data-v-7da6d3e2=\\"\\"></h3>
|
||||
</v-col-stub>
|
||||
</v-row-stub>
|
||||
</v-list-item-stub>
|
||||
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\">
|
||||
<v-row-stub data-v-7da6d3e2=\\"\\" tag=\\"div\\" dense=\\"true\\">
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" tag=\\"div\\">
|
||||
<v-switch-stub data-v-7da6d3e2=\\"\\" errorcount=\\"1\\" errormessages=\\"\\" messages=\\"\\" rules=\\"\\" successmessages=\\"\\" backgroundcolor=\\"\\" hidedetails=\\"true\\" ripple=\\"true\\" valuecomparator=\\"[Function]\\" inset=\\"true\\" class=\\"v-input--reverse pa-0 ma-0\\"></v-switch-stub>
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" cols=\\"6\\" md=\\"2\\" tag=\\"div\\" class=\\"d-flex align-center justify-start\\">
|
||||
<h3 data-v-7da6d3e2=\\"\\"><a data-v-7da6d3e2=\\"\\" target=\\"_blank\\" href=\\"https://github.com/qbittorrent/qBittorrent/releases/tag/release-v1.2.3\\">v1.2.3</a></h3>
|
||||
</v-col-stub>
|
||||
</v-row-stub>
|
||||
</v-list-item-stub>
|
||||
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\">
|
||||
<v-row-stub data-v-7da6d3e2=\\"\\" tag=\\"div\\" dense=\\"true\\">
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" tag=\\"div\\">
|
||||
<v-switch-stub data-v-7da6d3e2=\\"\\" errorcount=\\"1\\" errormessages=\\"\\" messages=\\"\\" rules=\\"\\" successmessages=\\"\\" backgroundcolor=\\"\\" hidedetails=\\"true\\" ripple=\\"true\\" valuecomparator=\\"[Function]\\" inputvalue=\\"true\\" inset=\\"true\\" class=\\"v-input--reverse pa-0 ma-0\\"></v-switch-stub>
|
||||
</v-col-stub>
|
||||
</v-row-stub>
|
||||
</v-list-item-stub>
|
||||
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\">
|
||||
<v-row-stub data-v-7da6d3e2=\\"\\" tag=\\"div\\" dense=\\"true\\">
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" tag=\\"div\\">
|
||||
<v-switch-stub data-v-7da6d3e2=\\"\\" errorcount=\\"1\\" errormessages=\\"\\" messages=\\"\\" rules=\\"\\" successmessages=\\"\\" backgroundcolor=\\"\\" hidedetails=\\"true\\" ripple=\\"true\\" valuecomparator=\\"[Function]\\" inputvalue=\\"10\\" inset=\\"true\\" class=\\"v-input--reverse pa-0 ma-0\\"></v-switch-stub>
|
||||
</v-col-stub>
|
||||
</v-row-stub>
|
||||
</v-list-item-stub>
|
||||
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\">
|
||||
<v-row-stub data-v-7da6d3e2=\\"\\" tag=\\"div\\" dense=\\"true\\">
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" tag=\\"div\\">
|
||||
<v-switch-stub data-v-7da6d3e2=\\"\\" errorcount=\\"1\\" errormessages=\\"\\" messages=\\"\\" rules=\\"\\" successmessages=\\"\\" backgroundcolor=\\"\\" hidedetails=\\"true\\" ripple=\\"true\\" valuecomparator=\\"[Function]\\" inset=\\"true\\" class=\\"v-input--reverse pa-0 ma-0\\"></v-switch-stub>
|
||||
</v-col-stub>
|
||||
</v-row-stub>
|
||||
</v-list-item-stub>
|
||||
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\">
|
||||
<v-row-stub data-v-7da6d3e2=\\"\\" tag=\\"div\\" dense=\\"true\\">
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" tag=\\"div\\">
|
||||
<v-switch-stub data-v-7da6d3e2=\\"\\" errorcount=\\"1\\" errormessages=\\"\\" messages=\\"\\" rules=\\"\\" successmessages=\\"\\" backgroundcolor=\\"\\" hidedetails=\\"true\\" ripple=\\"true\\" valuecomparator=\\"[Function]\\" inset=\\"true\\" class=\\"v-input--reverse pa-0 ma-0\\"></v-switch-stub>
|
||||
</v-col-stub>
|
||||
</v-row-stub>
|
||||
</v-list-item-stub>
|
||||
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\">
|
||||
<v-row-stub data-v-7da6d3e2=\\"\\" tag=\\"div\\" dense=\\"true\\">
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" tag=\\"div\\">
|
||||
<v-switch-stub data-v-7da6d3e2=\\"\\" errorcount=\\"1\\" errormessages=\\"\\" messages=\\"\\" rules=\\"\\" successmessages=\\"\\" backgroundcolor=\\"\\" hidedetails=\\"true\\" ripple=\\"true\\" valuecomparator=\\"[Function]\\" inset=\\"true\\" class=\\"v-input--reverse pa-0 ma-0\\"></v-switch-stub>
|
||||
</v-col-stub>
|
||||
</v-row-stub>
|
||||
</v-list-item-stub>
|
||||
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\">
|
||||
<v-row-stub data-v-7da6d3e2=\\"\\" tag=\\"div\\" dense=\\"true\\">
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" cols=\\"8\\" sm=\\"8\\" md=\\"10\\" tag=\\"div\\">
|
||||
<p data-v-7da6d3e2=\\"\\" class=\\"subtitle-1 mt-2\\"> </p>
|
||||
</v-col-stub>
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" cols=\\"4\\" sm=\\"4\\" md=\\"2\\" tag=\\"div\\">
|
||||
<v-select-stub data-v-7da6d3e2=\\"\\" errorcount=\\"1\\" errormessages=\\"\\" messages=\\"\\" rules=\\"\\" successmessages=\\"\\" value=\\"English\\" appendicon=\\"$dropdown\\" backgroundcolor=\\"background\\" dense=\\"true\\" hidedetails=\\"true\\" loaderheight=\\"2\\" clearicon=\\"$clear\\" flat=\\"true\\" solo=\\"true\\" type=\\"text\\" valuecomparator=\\"[Function]\\" nodatatext=\\"$vuetify.noDataText\\" items=\\"[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]\\" itemcolor=\\"primary\\" itemdisabled=\\"disabled\\" itemtext=\\"caption\\" itemvalue=\\"value\\" menuprops=\\"[object Object]\\" class=\\"rounded-xl\\"></v-select-stub>
|
||||
</v-col-stub>
|
||||
</v-row-stub>
|
||||
</v-list-item-stub>
|
||||
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\">
|
||||
<v-row-stub data-v-7da6d3e2=\\"\\" tag=\\"div\\" dense=\\"true\\">
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" cols=\\"8\\" sm=\\"8\\" md=\\"10\\" tag=\\"div\\">
|
||||
<p data-v-7da6d3e2=\\"\\" class=\\"subtitle-1 mt-2\\"> </p>
|
||||
</v-col-stub>
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" cols=\\"4\\" sm=\\"4\\" md=\\"2\\" tag=\\"div\\">
|
||||
<v-select-stub data-v-7da6d3e2=\\"\\" errorcount=\\"1\\" errormessages=\\"\\" messages=\\"\\" rules=\\"\\" successmessages=\\"\\" value=\\"10\\" appendicon=\\"$dropdown\\" backgroundcolor=\\"background\\" dense=\\"true\\" hidedetails=\\"true\\" loaderheight=\\"2\\" clearicon=\\"$clear\\" flat=\\"true\\" solo=\\"true\\" type=\\"text\\" valuecomparator=\\"[Function]\\" nodatatext=\\"$vuetify.noDataText\\" items=\\"5,15,30,50\\" itemcolor=\\"primary\\" itemdisabled=\\"disabled\\" itemtext=\\"text\\" itemvalue=\\"value\\" menuprops=\\"[object Object]\\" class=\\"rounded-xl\\"></v-select-stub>
|
||||
</v-col-stub>
|
||||
</v-row-stub>
|
||||
</v-list-item-stub>
|
||||
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\">
|
||||
<v-row-stub data-v-7da6d3e2=\\"\\" tag=\\"div\\" dense=\\"true\\">
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" cols=\\"8\\" sm=\\"8\\" md=\\"10\\" tag=\\"div\\">
|
||||
<p data-v-7da6d3e2=\\"\\" class=\\"subtitle-1 mt-2\\"> </p>
|
||||
</v-col-stub>
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" cols=\\"4\\" sm=\\"4\\" md=\\"2\\" tag=\\"div\\">
|
||||
<v-select-stub data-v-7da6d3e2=\\"\\" errorcount=\\"1\\" errormessages=\\"\\" messages=\\"\\" rules=\\"\\" successmessages=\\"\\" value=\\"test\\" appendicon=\\"$dropdown\\" backgroundcolor=\\"background\\" dense=\\"true\\" hidedetails=\\"true\\" loaderheight=\\"2\\" clearicon=\\"$clear\\" flat=\\"true\\" solo=\\"true\\" type=\\"text\\" valuecomparator=\\"[Function]\\" nodatatext=\\"$vuetify.noDataText\\" items=\\"Default,Global Speed,First Torrent Status\\" itemcolor=\\"primary\\" itemdisabled=\\"disabled\\" itemtext=\\"text\\" itemvalue=\\"value\\" menuprops=\\"[object Object]\\" class=\\"rounded-xl\\"></v-select-stub>
|
||||
</v-col-stub>
|
||||
</v-row-stub>
|
||||
</v-list-item-stub>
|
||||
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\">
|
||||
<v-row-stub data-v-7da6d3e2=\\"\\" tag=\\"div\\" dense=\\"true\\">
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" sm=\\"6\\" md=\\"9\\" tag=\\"div\\">
|
||||
<p data-v-7da6d3e2=\\"\\" class=\\"subtitle-1 mt-2\\"> </p>
|
||||
</v-col-stub>
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" sm=\\"6\\" md=\\"3\\" tag=\\"div\\">
|
||||
<v-text-field-stub data-v-7da6d3e2=\\"\\" errorcount=\\"1\\" errormessages=\\"\\" messages=\\"\\" rules=\\"\\" successmessages=\\"\\" backgroundcolor=\\"\\" dense=\\"true\\" hidedetails=\\"true\\" label=\\"using Dayjs\\" loaderheight=\\"2\\" clearicon=\\"$clear\\" outlined=\\"true\\" placeholder=\\"DD/MM/YYYY, HH:mm:ss\\" type=\\"text\\" class=\\"mb-2\\"></v-text-field-stub>
|
||||
</v-col-stub>
|
||||
</v-row-stub>
|
||||
</v-list-item-stub>
|
||||
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\">
|
||||
<v-row-stub data-v-7da6d3e2=\\"\\" tag=\\"div\\" dense=\\"true\\">
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" cols=\\"10\\" sm=\\"10\\" md=\\"11\\" tag=\\"div\\">
|
||||
<p data-v-7da6d3e2=\\"\\" class=\\"subtitle-1\\"> </p>
|
||||
</v-col-stub>
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" cols=\\"2\\" sm=\\"2\\" md=\\"1\\" tag=\\"div\\"><a data-v-7da6d3e2=\\"\\" target=\\"_blank\\" href=\\"https://github.com/WDaan/VueTorrent/releases/tag/vundefined\\">
|
||||
<p data-v-7da6d3e2=\\"\\" class=\\"mb-2\\"></p>
|
||||
</a></v-col-stub>
|
||||
</v-row-stub>
|
||||
</v-list-item-stub>
|
||||
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\">
|
||||
<v-row-stub data-v-7da6d3e2=\\"\\" tag=\\"div\\" dense=\\"true\\">
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" cols=\\"10\\" sm=\\"10\\" md=\\"11\\" tag=\\"div\\">
|
||||
<p data-v-7da6d3e2=\\"\\" class=\\"subtitle-1\\"> </p>
|
||||
</v-col-stub>
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" cols=\\"2\\" sm=\\"2\\" md=\\"1\\" tag=\\"div\\"><a data-v-7da6d3e2=\\"\\" target=\\"_blank\\" href=\\"https://github.com/qbittorrent/qBittorrent/releases/tag/release-v1.2.3\\">
|
||||
<p data-v-7da6d3e2=\\"\\" class=\\"mb-2\\"> v1.2.3 </p>
|
||||
</a></v-col-stub>
|
||||
</v-row-stub>
|
||||
</v-list-item-stub>
|
||||
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\">
|
||||
<v-row-stub data-v-7da6d3e2=\\"\\" tag=\\"div\\" dense=\\"true\\">
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" cols=\\"7\\" sm=\\"7\\" md=\\"10\\" tag=\\"div\\">
|
||||
<p data-v-7da6d3e2=\\"\\" class=\\"subtitle-1\\"> </p>
|
||||
</v-col-stub>
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" cols=\\"4\\" sm=\\"4\\" md=\\"2\\" tag=\\"div\\">
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" cols=\\"12\\" md=\\"4\\" tag=\\"div\\" class=\\"d-flex align-center justify-center\\">
|
||||
<v-btn-stub data-v-7da6d3e2=\\"\\" tag=\\"button\\" activeclass=\\"\\" type=\\"button\\"></v-btn-stub>
|
||||
</v-col-stub>
|
||||
</v-row-stub>
|
||||
|
@ -146,12 +71,18 @@ exports[`General > render correctly 1`] = `
|
|||
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\">
|
||||
<v-textarea-stub data-v-7da6d3e2=\\"\\" errorcount=\\"1\\" errormessages=\\"\\" messages=\\"\\" rules=\\"\\" successmessages=\\"\\" value=\\"\\" backgroundcolor=\\"\\" loaderheight=\\"2\\" clearicon=\\"$clear\\" type=\\"text\\" rowheight=\\"24\\" rows=\\"5\\"></v-textarea-stub>
|
||||
</v-list-item-stub>
|
||||
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\" class=\\"remove-after justify-content-evenly\\">
|
||||
<v-btn-stub data-v-7da6d3e2=\\"\\" tag=\\"button\\" activeclass=\\"\\" type=\\"button\\"></v-btn-stub>
|
||||
<v-btn-stub data-v-7da6d3e2=\\"\\" tag=\\"button\\" activeclass=\\"\\" type=\\"button\\"></v-btn-stub>
|
||||
</v-list-item-stub>
|
||||
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\" class=\\"justify-center pb-2\\">
|
||||
<v-btn-stub data-v-7da6d3e2=\\"\\" color=\\"red\\" dark=\\"true\\" tag=\\"button\\" activeclass=\\"\\" type=\\"button\\"></v-btn-stub>
|
||||
<v-list-item-stub data-v-7da6d3e2=\\"\\" activeclass=\\"\\" tag=\\"div\\">
|
||||
<v-row-stub data-v-7da6d3e2=\\"\\" tag=\\"div\\">
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" cols=\\"12\\" sm=\\"6\\" tag=\\"div\\" class=\\"d-flex align-center justify-center\\">
|
||||
<v-btn-stub data-v-7da6d3e2=\\"\\" tag=\\"button\\" activeclass=\\"\\" type=\\"button\\"></v-btn-stub>
|
||||
</v-col-stub>
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" cols=\\"12\\" sm=\\"6\\" tag=\\"div\\" class=\\"d-flex align-center justify-center\\">
|
||||
<v-btn-stub data-v-7da6d3e2=\\"\\" tag=\\"button\\" activeclass=\\"\\" type=\\"button\\"></v-btn-stub>
|
||||
</v-col-stub>
|
||||
<v-col-stub data-v-7da6d3e2=\\"\\" cols=\\"12\\" tag=\\"div\\" class=\\"d-flex align-center justify-center\\">
|
||||
<v-btn-stub data-v-7da6d3e2=\\"\\" color=\\"red\\" dark=\\"true\\" tag=\\"button\\" activeclass=\\"\\" type=\\"button\\"></v-btn-stub>
|
||||
</v-col-stub>
|
||||
</v-row-stub>
|
||||
</v-list-item-stub>
|
||||
</v-card-stub>"
|
||||
`;
|
||||
|
|
|
@ -4,7 +4,7 @@ exports[`MobileCard > render correctly 1`] = `
|
|||
"<v-card-stub loaderheight=\\"4\\" tag=\\"div\\" flat=\\"true\\">
|
||||
<v-row-stub tag=\\"div\\" dense=\\"true\\">
|
||||
<v-col-stub cols=\\"12\\" md=\\"6\\" tag=\\"div\\">
|
||||
<v-subheader-stub> modals.settings.pageVueTorrent.pageMobileCard.busyTorrentTip </v-subheader-stub>
|
||||
<v-subheader-stub> modals.settings.vueTorrent.mobileCard.busyTorrentTip </v-subheader-stub>
|
||||
<v-row-stub tag=\\"div\\" dense=\\"true\\">
|
||||
<v-list-stub tag=\\"div\\" flat=\\"true\\" class=\\"ma-2 pa-0\\">
|
||||
<vdashboarditem-stub property=\\"[object Object]\\"></vdashboarditem-stub>
|
||||
|
@ -24,7 +24,7 @@ exports[`MobileCard > render correctly 1`] = `
|
|||
</v-row-stub>
|
||||
</v-col-stub>
|
||||
<v-col-stub cols=\\"12\\" md=\\"6\\" tag=\\"div\\">
|
||||
<v-subheader-stub> modals.settings.pageVueTorrent.pageMobileCard.completedTorrentTip </v-subheader-stub>
|
||||
<v-subheader-stub> modals.settings.vueTorrent.mobileCard.completedTorrentTip </v-subheader-stub>
|
||||
<v-row-stub tag=\\"div\\" dense=\\"true\\">
|
||||
<v-list-stub tag=\\"div\\" flat=\\"true\\" class=\\"ma-2 pa-0\\">
|
||||
<vdashboarditem-stub property=\\"[object Object]\\"></vdashboarditem-stub>
|
||||
|
|
Loading…
Add table
Reference in a new issue