Thomas Piccirello
7 years ago
committed by
Chocobo1
11 changed files with 240 additions and 0 deletions
@ -0,0 +1,167 @@
@@ -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