mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2025-12-24 01:08:06 -06:00
195 lines
8.9 KiB
HTML
195 lines
8.9 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="${LANG}">
|
|
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<title>QBT_TR(Torrent Upload/Download Ratio Limiting)QBT_TR[CONTEXT=UpDownRatioDialog]</title>
|
|
<link rel="stylesheet" href="css/style.css?v=${CACHEID}" type="text/css" />
|
|
<script src="scripts/lib/MooTools-Core-1.6.0-compat-compressed.js"></script>
|
|
<script src="scripts/lib/MooTools-More-1.6.0-compat-compressed.js"></script>
|
|
<script src="scripts/misc.js?locale=${LANG}&v=${CACHEID}"></script>
|
|
<script>
|
|
"use strict";
|
|
|
|
const UseGlobalLimit = -2;
|
|
const NoLimit = -1;
|
|
|
|
new Keyboard({
|
|
defaultEventType: "keydown",
|
|
events: {
|
|
"Enter": function(event) {
|
|
$("save").click();
|
|
event.preventDefault();
|
|
},
|
|
"Escape": function(event) {
|
|
window.parent.qBittorrent.Client.closeWindows();
|
|
event.preventDefault();
|
|
},
|
|
"Esc": function(event) {
|
|
window.parent.qBittorrent.Client.closeWindows();
|
|
event.preventDefault();
|
|
}
|
|
}
|
|
}).activate();
|
|
|
|
window.addEvent("domready", () => {
|
|
const hashesList = new URI().getData("hashes").split("|");
|
|
const origValues = new URI().getData("orig").split("|");
|
|
|
|
const values = {
|
|
ratioLimit: window.qBittorrent.Misc.friendlyFloat(origValues[0], 2),
|
|
seedingTimeLimit: parseInt(origValues[1], 10),
|
|
inactiveSeedingTimeLimit: parseInt(origValues[2], 10),
|
|
maxRatio: window.qBittorrent.Misc.friendlyFloat(origValues[3], 2),
|
|
maxSeedingTime: parseInt(origValues[4], 10),
|
|
maxInactiveSeedingTime: parseInt(origValues[5], 10)
|
|
};
|
|
|
|
// select default when orig values not passed. using double equals to compare string and int
|
|
if ((origValues[0] === "")
|
|
|| ((values.ratioLimit === UseGlobalLimit)
|
|
&& (values.seedingTimeLimit === UseGlobalLimit)
|
|
&& (values.inactiveSeedingTimeLimit === UseGlobalLimit))) {
|
|
// use default option
|
|
setSelectedRadioValue("shareLimit", "default");
|
|
}
|
|
else if ((values.maxRatio === NoLimit) && (values.maxSeedingTime === NoLimit) && (values.maxInactiveSeedingTime === NoLimit)) {
|
|
setSelectedRadioValue("shareLimit", "none");
|
|
// TODO set input boxes to *global* max ratio and seeding time
|
|
}
|
|
else {
|
|
setSelectedRadioValue("shareLimit", "custom");
|
|
if (values.ratioLimit >= 0) {
|
|
$("setRatio").set("checked", true);
|
|
$("ratio").set("value", values.ratioLimit);
|
|
}
|
|
if (values.seedingTimeLimit >= 0) {
|
|
$("setTotalMinutes").set("checked", true);
|
|
$("totalMinutes").set("value", values.seedingTimeLimit);
|
|
}
|
|
if (values.inactiveSeedingTimeLimit >= 0) {
|
|
$("setInactiveMinutes").set("checked", true);
|
|
$("inactiveMinutes").set("value", values.inactiveSeedingTimeLimit);
|
|
}
|
|
}
|
|
|
|
shareLimitChanged();
|
|
|
|
$("default").focus();
|
|
$("save").addEvent("click", (e) => {
|
|
new Event(e).stop();
|
|
|
|
if (!isFormValid())
|
|
return false;
|
|
|
|
const shareLimit = getSelectedRadioValue("shareLimit");
|
|
let ratioLimitValue = 0.00;
|
|
let seedingTimeLimitValue = 0;
|
|
let inactiveSeedingTimeLimitValue = 0;
|
|
|
|
if (shareLimit === "default") {
|
|
ratioLimitValue = seedingTimeLimitValue = inactiveSeedingTimeLimitValue = UseGlobalLimit;
|
|
}
|
|
else if (shareLimit === "none") {
|
|
ratioLimitValue = seedingTimeLimitValue = inactiveSeedingTimeLimitValue = NoLimit;
|
|
}
|
|
else if (shareLimit === "custom") {
|
|
ratioLimitValue = $("setRatio").get("checked") ? $("ratio").get("value") : -1;
|
|
seedingTimeLimitValue = $("setTotalMinutes").get("checked") ? $("totalMinutes").get("value") : -1;
|
|
inactiveSeedingTimeLimitValue = $("setInactiveMinutes").get("checked") ? $("inactiveMinutes").get("value") : -1;
|
|
}
|
|
else {
|
|
return false;
|
|
}
|
|
|
|
new Request({
|
|
url: "api/v2/torrents/setShareLimits",
|
|
method: "post",
|
|
data: {
|
|
hashes: hashesList.join("|"),
|
|
ratioLimit: ratioLimitValue,
|
|
seedingTimeLimit: seedingTimeLimitValue,
|
|
inactiveSeedingTimeLimit: inactiveSeedingTimeLimitValue
|
|
},
|
|
onComplete: function() {
|
|
window.parent.qBittorrent.Client.closeWindows();
|
|
}
|
|
}).send();
|
|
});
|
|
});
|
|
|
|
function getSelectedRadioValue(name) {
|
|
const radios = document.getElementsByName(name);
|
|
|
|
for (let i = 0; i < radios.length; ++i) {
|
|
const radio = radios[i];
|
|
if (radio.checked)
|
|
return (radio).get("value");
|
|
}
|
|
}
|
|
|
|
function setSelectedRadioValue(name, value) {
|
|
const radios = document.getElementsByName(name);
|
|
|
|
for (let i = 0; i < radios.length; ++i) {
|
|
const radio = radios[i];
|
|
if (radio.value === value)
|
|
radio.checked = true;
|
|
}
|
|
}
|
|
|
|
function shareLimitChanged() {
|
|
const customShareLimit = getSelectedRadioValue("shareLimit") === "custom";
|
|
$("setRatio").set("disabled", !customShareLimit);
|
|
$("setTotalMinutes").set("disabled", !customShareLimit);
|
|
$("setInactiveMinutes").set("disabled", !customShareLimit);
|
|
|
|
enableInputBoxes();
|
|
|
|
$("save").set("disabled", !isFormValid());
|
|
}
|
|
|
|
function enableInputBoxes() {
|
|
$("ratio").set("disabled", ($("setRatio").get("disabled") || !$("setRatio").get("checked")));
|
|
$("totalMinutes").set("disabled", ($("setTotalMinutes").get("disabled") || !$("setTotalMinutes").get("checked")));
|
|
$("inactiveMinutes").set("disabled", ($("setInactiveMinutes").get("disabled") || !$("setInactiveMinutes").get("checked")));
|
|
|
|
$("save").set("disabled", !isFormValid());
|
|
}
|
|
|
|
function isFormValid() {
|
|
return !((getSelectedRadioValue("shareLimit") === "custom") && !$("setRatio").get("checked")
|
|
&& !$("setTotalMinutes").get("checked") && !$("setInactiveMinutes").get("checked"));
|
|
}
|
|
</script>
|
|
</head>
|
|
|
|
<body>
|
|
<div style="padding: 10px 10px 0px 10px;">
|
|
<input type="radio" name="shareLimit" id="default" value="default" onchange="shareLimitChanged()" checked style="margin-bottom: 5px;" />QBT_TR(Use global share limit)QBT_TR[CONTEXT=UpDownRatioDialog]<br />
|
|
<input type="radio" name="shareLimit" value="none" onchange="shareLimitChanged()" style="margin-bottom: 5px;" />QBT_TR(Set no share limit)QBT_TR[CONTEXT=UpDownRatioDialog]<br />
|
|
<input type="radio" name="shareLimit" value="custom" onchange="shareLimitChanged()" style="margin-bottom: 5px;" />QBT_TR(Set share limit to)QBT_TR[CONTEXT=UpDownRatioDialog]<br />
|
|
|
|
<div style="margin-left: 40px; margin-bottom: 5px;">
|
|
<input type="checkbox" id="setRatio" class="shareLimitInput" onclick="enableInputBoxes()" />
|
|
<label for="setRatio">QBT_TR(ratio)QBT_TR[CONTEXT=UpDownRatioDialog]</label>
|
|
<input type="number" id="ratio" value="0.00" step=".01" min="0" max="9999" class="shareLimitInput" />
|
|
</div>
|
|
<div style="margin-left: 40px; margin-bottom: 5px;">
|
|
<input type="checkbox" id="setTotalMinutes" class="shareLimitInput" onclick="enableInputBoxes()" />
|
|
<label for="setTotalMinutes">QBT_TR(total minutes)QBT_TR[CONTEXT=UpDownRatioDialog]</label>
|
|
<input type="number" id="totalMinutes" value="0" step="1" min="0" max="525600" class="shareLimitInput" />
|
|
</div>
|
|
<div style="margin-left: 40px; margin-bottom: 5px;">
|
|
<input type="checkbox" id="setInactiveMinutes" class="shareLimitInput" onclick="enableInputBoxes()" />
|
|
<label for="setInactiveMinutes">QBT_TR(inactive minutes)QBT_TR[CONTEXT=UpDownRatioDialog]</label>
|
|
<input type="number" id="inactiveMinutes" value="0" step="1" min="0" max="525600" class="shareLimitInput" />
|
|
</div>
|
|
<div style="text-align: center; padding-top: 10px;">
|
|
<input type="button" value="QBT_TR(Save)QBT_TR[CONTEXT=HttpServer]" id="save" />
|
|
</div>
|
|
</div>
|
|
</body>
|
|
|
|
</html>
|