<!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" 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?locale=${LANG}"></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=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" class="leftLabelLarge">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="setMinutes" class="shareLimitInput" onclick="enableInputBoxes()" /> <label for="setMinutes" class="leftLabelLarge">QBT_TR(minutes)QBT_TR[CONTEXT=UpDownRatioDialog]</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>