Mike Tzou
7 years ago
committed by
GitHub
12 changed files with 245 additions and 8 deletions
@ -0,0 +1,167 @@ |
|||||||
|
<!DOCTYPE html> |
||||||
|
<html lang="${LANG}"> |
||||||
|
|
||||||
|
<head> |
||||||
|
<meta charset="UTF-8" /> |
||||||
|
<title>QBT_TR(Torrent Upload/Download Ratio Limiting)QBT_TR[CONTEXT=UpDownRatioDlg]</title> |
||||||
|
<link rel="stylesheet" href="css/style.css" type="text/css" /> |
||||||
|
<script src="scripts/lib/mootools-1.2-core-yc.js"></script> |
||||||
|
<script src="scripts/lib/mootools-1.2-more.js"></script> |
||||||
|
<script src="scripts/misc.js"></script> |
||||||
|
<script> |
||||||
|
var UseGlobalLimit = -2; |
||||||
|
var NoLimit = -1; |
||||||
|
|
||||||
|
var keyboardEvents = new Keyboard({ |
||||||
|
defaultEventType: 'keydown', |
||||||
|
events: { |
||||||
|
'enter': function(event) { |
||||||
|
$('save').click(); |
||||||
|
event.preventDefault(); |
||||||
|
} |
||||||
|
} |
||||||
|
}); |
||||||
|
keyboardEvents.activate(); |
||||||
|
|
||||||
|
window.addEvent('domready', function() { |
||||||
|
var hashesList = new URI().getData('hashes').split('|'); |
||||||
|
var origValues = new URI().getData('orig').split('|'); |
||||||
|
|
||||||
|
var values = { |
||||||
|
ratioLimit: friendlyFloat(origValues[0], 2), |
||||||
|
seedingTimeLimit: parseInt(origValues[1]), |
||||||
|
maxRatio: friendlyFloat(origValues[2], 2), |
||||||
|
maxSeedingTime: parseInt(origValues[3]) |
||||||
|
}; |
||||||
|
|
||||||
|
// select default when orig values not passed. using double equals to compare string and int |
||||||
|
if ((origValues[0] === "") || ((values.ratioLimit == UseGlobalLimit) && (values.seedingTimeLimit == UseGlobalLimit))) { |
||||||
|
// use default option |
||||||
|
setSelectedRadioValue('shareLimit', 'default'); |
||||||
|
} |
||||||
|
else if ((values.maxRatio == NoLimit) && (values.maxSeedingTime == 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) { |
||||||
|
$('setMinutes').set('checked', true); |
||||||
|
$('minutes').set('value', values.seedingTimeLimit); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
shareLimitChanged(); |
||||||
|
|
||||||
|
$('default').focus(); |
||||||
|
$('save').addEvent('click', function(e) { |
||||||
|
new Event(e).stop(); |
||||||
|
|
||||||
|
if (!isFormValid()) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
var shareLimit = getSelectedRadioValue('shareLimit'); |
||||||
|
var ratioLimitValue = 0.00; |
||||||
|
var seedingTimeLimitValue = 0; |
||||||
|
|
||||||
|
if (shareLimit === 'default') { |
||||||
|
ratioLimitValue = seedingTimeLimitValue = UseGlobalLimit; |
||||||
|
} |
||||||
|
else if (shareLimit === 'none') { |
||||||
|
ratioLimitValue = seedingTimeLimitValue = NoLimit; |
||||||
|
} |
||||||
|
else if (shareLimit === 'custom') { |
||||||
|
ratioLimitValue = $('setRatio').get('checked') ? $('ratio').get('value') : -1; |
||||||
|
seedingTimeLimitValue = $('setMinutes').get('checked') ? $('minutes').get('value') : -1; |
||||||
|
} |
||||||
|
else { |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
new Request({ |
||||||
|
url: 'api/v2/torrents/setShareLimits', |
||||||
|
method: 'post', |
||||||
|
data: { |
||||||
|
hashes: hashesList.join('|'), |
||||||
|
ratioLimit: ratioLimitValue, |
||||||
|
seedingTimeLimit: seedingTimeLimitValue |
||||||
|
}, |
||||||
|
onComplete: function() { |
||||||
|
window.parent.closeWindows(); |
||||||
|
} |
||||||
|
}).send(); |
||||||
|
}); |
||||||
|
}); |
||||||
|
|
||||||
|
function getSelectedRadioValue(name) { |
||||||
|
var radios = document.getElementsByName(name); |
||||||
|
|
||||||
|
for (var i = 0; i < radios.length; ++i) { |
||||||
|
var radio = radios[i]; |
||||||
|
if (radio.checked) { |
||||||
|
return (radio).get('value'); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
function setSelectedRadioValue(name, value) { |
||||||
|
var radios = document.getElementsByName(name); |
||||||
|
|
||||||
|
for (var i = 0; i < radios.length; ++i) { |
||||||
|
var radio = radios[i]; |
||||||
|
if (radio.value === value) |
||||||
|
radio.checked = true; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
function shareLimitChanged() { |
||||||
|
var customShareLimit = getSelectedRadioValue('shareLimit') === 'custom'; |
||||||
|
$('setRatio').set('disabled', !customShareLimit); |
||||||
|
$('setMinutes').set('disabled', !customShareLimit); |
||||||
|
|
||||||
|
enableInputBoxes(); |
||||||
|
|
||||||
|
$('save').set('disabled', !isFormValid()); |
||||||
|
} |
||||||
|
|
||||||
|
function enableInputBoxes() { |
||||||
|
$('ratio').set('disabled', ($('setRatio').get('disabled') || !$('setRatio').get('checked'))); |
||||||
|
$('minutes').set('disabled', ($('setMinutes').get('disabled') || !$('setMinutes').get('checked'))); |
||||||
|
|
||||||
|
$('save').set('disabled', !isFormValid()); |
||||||
|
} |
||||||
|
|
||||||
|
function isFormValid() { |
||||||
|
return !((getSelectedRadioValue('shareLimit') === 'custom') && !$('setRatio').get('checked') && !$('setMinutes').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=UpDownRatioDlg]</br> |
||||||
|
<input type="radio" name="shareLimit" value="none" onchange="shareLimitChanged()" style="margin-bottom: 5px;" />QBT_TR(Set no share limit)QBT_TR[CONTEXT=UpDownRatioDlg]</br> |
||||||
|
<input type="radio" name="shareLimit" value="custom" onchange="shareLimitChanged()" style="margin-bottom: 5px;" />QBT_TR(Set share limit to)QBT_TR[CONTEXT=UpDownRatioDlg]</br> |
||||||
|
|
||||||
|
<div style="margin-left: 40px; margin-bottom: 5px;"> |
||||||
|
<input type="checkbox" id="setRatio" class="shareLimitInput" onclick="enableInputBoxes()" /> |
||||||
|
<label for="setRatio" class="leftLabelLarge">QBT_TR(ratio)QBT_TR[CONTEXT=UpDownRatioDlg]</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="setMinutes" class="shareLimitInput" onclick="enableInputBoxes()" /> |
||||||
|
<label for="setMinutes" class="leftLabelLarge">QBT_TR(minutes)QBT_TR[CONTEXT=UpDownRatioDlg]</label> |
||||||
|
<input type="number" id="minutes" 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> |
Loading…
Reference in new issue