| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671 |
- <div class="easyui-layout" data-options="fit:true" style="width:100%;height:100%;" id="torrent-attribute-layout">
- <div data-options="region:'center'" style="padding:0px;border:0px;">
- <div id="torrent-attribute-tabs" class="easyui-tabs" style="width:100%;height:100%;" data-options="fit:true,plain:true,tabPosition:'left',border:0,headerWidth:105">
- <div title="常规" style="padding:2px;" class="dialog">
- <table style="width:100%;">
- <tr>
- <td class="title"><span id="torrent-attribute-label-name"></span></td>
- <td colspan="3"><span id="torrent-attribute-value-name"></span></td>
- </tr>
- <tr>
- <td class="title"><span id="torrent-attribute-label-downloadDir"></span></td>
- <td colspan="3">
- <span id="torrent-attribute-value-downloadDir"></span>
- <a id="torrent-attribute-config-button-changeDownloadDir" class="easyui-linkbutton" data-options="iconCls:'iconfont tr-icon-folder-change',plain:true" href="javascript:void(0);" system-tip-lang="toolbar.tip['change-download-dir']"></a>
- <a id="torrent-attribute-config-button-copyPath" class="easyui-linkbutton" data-options="iconCls:'iconfont tr-icon-clippy',plain:true" href="javascript:void(0);" data-clipboard-action="copy" data-clipboard-target="#torrent-attribute-value-downloadDir" system-tip-lang="toolbar.tip['copy-path-to-clipboard']"></a>
- </td>
- </tr>
- <tr>
- <td class="title"><span id="torrent-attribute-label-status"></span></td>
- <td><span id="torrent-attribute-value-status"></span></td>
- <td class="title"><span id="torrent-attribute-label-hashString"></span></td>
- <td><span id="torrent-attribute-value-hashString"></span></td>
- </tr>
- <tr id="torrent-attribute-tr-error" style="display:none;">
- <td class="title" style="color:red;"><span id="torrent-attribute-label-errorString"></span></td>
- <td colspan="3" style="color:red;"><span id="torrent-attribute-value-errorString"></span> (<span id="torrent-attribute-value-error"></span>)</td>
- </tr>
- <tr>
- <td width="12%" class="title"><span id="torrent-attribute-label-totalSize"></span></td>
- <td width="38%"><span id="torrent-attribute-value-totalSize"></span></td>
- <td width="12%" class="title"><span id="torrent-attribute-label-addedDate"></span></td>
- <td width="38%"><span id="torrent-attribute-value-addedDate"></span></td>
- </tr>
- <tr>
- <td class="title"><span id="torrent-attribute-label-leftUntilDone"></span></td>
- <td><span id="torrent-attribute-value-leftUntilDone"></span> (<span id="torrent-attribute-value-remainingTime"></span>)</td>
- <td class="title"><span id="torrent-attribute-label-completeSize"></span></td>
- <td><span id="torrent-attribute-value-completeSize"></span></td>
- </tr>
- <tr>
- <td class="title"><span id="torrent-attribute-label-rateDownload"></span></td>
- <td><span id="torrent-attribute-value-rateDownload"></span></td>
- <td class="title"><span id="torrent-attribute-label-rateUpload"></span></td>
- <td><span id="torrent-attribute-value-rateUpload"></span></td>
- </tr>
- <tr>
- <td class="title"><span id="torrent-attribute-label-leecherCount"></span></td>
- <td><span id="torrent-attribute-value-leecherCount"></span></td>
- <td class="title"><span id="torrent-attribute-label-seederCount"></span></td>
- <td><span id="torrent-attribute-value-seederCount"></span></td>
- </tr>
- <tr>
- <td class="title"><span id="torrent-attribute-label-uploadedEver"></span></td>
- <td><span id="torrent-attribute-value-uploadedEver"></span></td>
- <td class="title"><span id="torrent-attribute-label-uploadRatio"></span></td>
- <td><span id="torrent-attribute-value-uploadRatio"></span></td>
- </tr>
- <tr>
- <td class="title"><span id="torrent-attribute-label-creator"></span></td>
- <td><span id="torrent-attribute-value-creator"></span></td>
- <td class="title"><span id="torrent-attribute-label-dateCreated"></span></td>
- <td><span id="torrent-attribute-value-dateCreated"></span></td>
- </tr>
- <tr>
- <td class="title"><span id="torrent-attribute-label-comment"></span></td>
- <td colspan="3"><span id="torrent-attribute-value-comment"></span></td>
- </tr>
- <tr>
- <td colspan="4">
- <hr/>
- <div id="torrent-attribute-pieces">
- <i style="filter:saturate(0)" title="100MB x 0%"></i><i style="filter:saturate(0.5)" title="100MB x 50%"></i><br/>
- <i style="filter:saturate(1)" title="100MB x 100%"></i>
- </div>
- </td>
- </tr>
- </table>
- </div>
- <div title="服务器" style="padding:0px;" id="torrent-attribute-servers">
- </div>
- <div title="文件" style="padding:0px;" id="torrent-attribute-files">
- </div>
- <div title="用户" style="padding:0px;" id="torrent-attribute-peers">
- </div>
- <div title="设置" style="padding:0px;" id="torrent-attribute-config" class="dialog">
- <div class="easyui-layout" data-options="fit:true" style="width:100%;">
- <div data-options="region:'center'" style="padding:2px;border:0px;">
- <table style="width:100%;">
- <tr>
- <td width="30%" class="title">
- <input id="downloadLimited" type="checkbox" style="width:16px;"/><label id="torrent-attribute-label-downloadLimited" for="downloadLimited"></label>
- </td>
- <td width="20%"><input id="downloadLimit" type="text" class="easyui-numberspinner" enabledof="downloadLimited"/> KB/s</td>
- <td width="30%" class="title">
- <input id="seedRatioMode" type="checkbox" style="width:16px;"/><label id="torrent-attribute-label-seedRatioMode" for="seedRatioMode"></label>
- </td>
- <td width="20%"><input id="seedRatioLimit" type="text" class="easyui-numberspinner" enabledof="seedRatioMode"/></td>
- </tr>
- <tr>
- <td class="title">
- <input id="uploadLimited" type="checkbox" style="width:16px;"/><label id="torrent-attribute-label-uploadLimited" for="uploadLimited"></label>
- </td>
- <td><input id="uploadLimit" type="text" class="easyui-numberspinner" enabledof="uploadLimited"/> KB/s</td>
- <td class="title">
- <input id="seedIdleMode" type="checkbox" style="width:16px;"/><label id="torrent-attribute-label-seedIdleMode" for="seedIdleMode"></label>
- </td>
- <td><input id="seedIdleLimit" type="text" class="easyui-numberspinner" enabledof="seedIdleMode"/> <span name="system-config-minutes"></span></td>
- </tr>
- <tr>
- <td class="title">
- <span id="torrent-attribute-label-peer-limit"></span>
- </td>
- <td>
- <input id="peer-limit" value="" type="text" class="easyui-numberspinner"/>
- </td>
- <td></td>
- <td></td>
- </tr>
- </table>
- </div>
- <div data-options="region:'south'" style="padding:2px;height:32px;">
- <a id="torrent-attribute-config-button-save" class="easyui-linkbutton" data-options="iconCls:'icon-save',plain:true" href="javascript:void(0);">Ok</a>
- <span id="torrent-attribute-config-nochange" style="display:none;"></span>
- <span id="torrent-attribute-config-saved" style="display:none;"></span>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- <script type="text/javascript">
- (function(thisLayout){
- var labels = system.lang.torrent.attribute.label;
- system.resetLangText(thisLayout);
- var clipboard = new ClipboardJS('#torrent-attribute-config-button-copyPath');
- $.each(labels, function(key, item){
- thisLayout.find("#torrent-attribute-label-"+key).html(item);
- });
- thisLayout.find("#torrent-attribute-config-button-save").html(system.lang.dialog["public"]["button-save"]);
- thisLayout.find("#torrent-attribute-config-nochange").html(system.lang["public"]["text-nochange"]);
- thisLayout.find("#torrent-attribute-config-saved").html(system.lang["public"]["text-saved"]);
- thisLayout.find(".title").css({
- // background:"#e6e6e6"
- "border-bottom": "1px solid #ccc"
- });
- var tabs = thisLayout.find("#torrent-attribute-tabs");
- tabs.tabs();
- tabs.tabs("update",{
- tab:tabs.tabs("getTab",0)
- ,options:{
- title:system.lang.torrent["attribute"]["tabs"].base
- }
- });
- tabs.tabs("update",{
- tab:tabs.tabs("getTab",1)
- ,options:{
- title:system.lang.torrent["attribute"]["tabs"].servers
- }
- });
- tabs.tabs("update",{
- tab:tabs.tabs("getTab",2)
- ,options:{
- title:system.lang.torrent["attribute"]["tabs"].files
- }
- });
- tabs.tabs("update",{
- tab:tabs.tabs("getTab",3)
- ,options:{
- title:system.lang.torrent["attribute"]["tabs"].users
- }
- });
- tabs.tabs("update",{
- tab:tabs.tabs("getTab",4)
- ,options:{
- title:system.lang.torrent["attribute"]["tabs"]["config"]
- }
- });
- tabs.tabs({
- onSelect:function(title,index){
- thisLayout.find("#torrent-attribute-tabs").data("selectedIndex",index);
- switch (index)
- {
- // 设置
- case 4:
- if (system.currentTorrentId==0)
- {
- return;
- }
- system.fillTorrentConfig(transmission.torrents.all[system.currentTorrentId]);
-
- break;
-
- }
- }
- });
- var title = ("downloadLimited,seedIdleMode,seedRatioMode,uploadLimited").split(",");
- $.each(title, function(i, item){
- thisLayout.find("#"+item)
- .click(function(){
- var checked = this.checked;
- var indeterminate = false;
- var tag = $(this).data("_tag");
- // 用作3态
- switch (tag)
- {
- case 0:
- tag = 1;
- checked = true;
- break;
- case 1:
- tag = 2;
- checked = false;
- break;
- case 2:
- tag = 0;
- indeterminate = true;
- checked = false;
- break;
- }
- $(this).prop("checked",checked).prop("indeterminate",indeterminate).data("_tag",tag);
- thisLayout.find("input[enabledof='"+this.id+"']").prop("disabled",!checked);
- });
- });
-
- // 初始化文件显示列表
- var filelist = $("<table/>").attr("class","torrent-list").attr("id","torrent-files-table").appendTo(thisLayout.find("#torrent-attribute-files"));
- $.get(system.rootPath+"template/torrent-attribute-files-fields.json?time="+(new Date()),function(data){
- var fields = data.fields;
- var config = data.config;
- for (var key in fields)
- {
- fields[key].title = system.lang.torrent.attribute["files-fields"][fields[key].field];
- system.setFieldFormat(fields[key]);
- }
- config.pageSize = system.config.pageSize;
- config.columns = [fields];
- config.fit = true;
- filelist.datagrid(config);
- var pager = filelist.datagrid("getPager");
- var buttons = [{
- id:"pager-button-allow",
- iconCls:'icon-allow',
- title: system.lang.torrent.attribute["tip"]["button-allow"],
- handler:function(){
- changeSelectedFilesWanted(true,$(this));
- }
- },'-',{
- id:"pager-button-deny",
- iconCls:'icon-deny',
- title: system.lang.torrent.attribute["tip"]["button-deny"],
- handler:function(){
- changeSelectedFilesWanted(false,$(this));
- }
- },'-',{
- id:"pager-button-priority",
- iconCls:'icon-flag-edit',
- title: system.lang.torrent.attribute["tip"]["button-priority"],
- handler:function(){
- priorityMenu.menu("show",$(this).offset());
- }
- },'-',{
- id:"torrent-files-filter",
- iconCls:"icon-filter",
- title: system.lang.torrent.attribute["tip"]["button-filter"],
- handler:function(){
- filelist.datagrid("getPager").find(".pagination-load").click();
- }
- }];
- var priorityMenu = $("<div/>").attr("id","priorityMenu").appendTo(thisLayout.find("#torrent-attribute-files"));
- priorityMenu.menu({
- onClick:function(item)
- {
- changeSelectedFilesPriority(item.id);
- }
- });
- priorityMenu.menu("appendItem",{
- id: "0",
- text: system.lang.torrent.attribute["priority"]["0"],
- iconCls: 'iconlabel icon-flag-0'
- });
- priorityMenu.menu("appendItem",{
- id: "1",
- text: system.lang.torrent.attribute["priority"]["1"],
- iconCls: 'iconlabel icon-flag-1'
- });
- priorityMenu.menu("appendItem",{
- id: "-1",
- text: system.lang.torrent.attribute["priority"]["-1"],
- iconCls: 'iconlabel icon-flag--1'
- });
- filelist.data("buttons",buttons);
- //system.debug("pager",pager);
- pager.pagination({
- buttons:buttons
- });
-
- // pager.find("#pager-button-allow").attr({"title":system.lang.torrent.attribute["tip"]["button-allow"],"alt":system.lang.torrent.attribute["tip"]["button-allow"]});
- // pager.find("#pager-button-deny").attr({"title":system.lang.torrent.attribute["tip"]["button-deny"],"alt":system.lang.torrent.attribute["tip"]["button-deny"]});
- // pager.find("#pager-button-priority").attr({"title":system.lang.torrent.attribute["tip"]["button-priority"],"alt":system.lang.torrent.attribute["tip"]["button-priority"]});
- },"json");
- // 设置已选中的文件是否下载
- function changeSelectedFilesWanted(wanted,button)
- {
- var rows = filelist.datagrid("getChecked");
- var files = new Array();
- var arguments = null;
- for (var i in rows)
- {
- files.push(parseInt(rows[i].index));
- }
- if (files.length>0)
- {
- if (wanted)
- {
- arguments = {
- ids:system.currentTorrentId
- ,"files-wanted":files
- };
- }
- else
- {
- arguments = {
- ids:system.currentTorrentId
- ,"files-unwanted":files
- };
- }
- var icon = button.linkbutton("options").iconCls;
- button.linkbutton({disabled:true,iconCls:"icon-loading"});
- transmission.exec({
- method:"torrent-set"
- ,arguments:arguments
- }
- ,function(data){
- if (data.result=="success")
- {
- system.getTorrentInfos(system.currentTorrentId);
- }
- button.linkbutton({iconCls:icon,disabled:false});
- }
- );
- }
- }
- // 设置已选中的文件优先级别
- function changeSelectedFilesPriority(priority)
- {
- var rows = filelist.datagrid("getChecked");
- var files = new Array();
- var arguments = null;
- for (var i in rows)
- {
- files.push(parseInt(rows[i].index));
- }
- if (files.length>0)
- {
- switch (priority)
- {
- case "0":
- arguments = {
- ids:system.currentTorrentId
- ,"priority-normal":files
- };
- break;
- case "1":
- arguments = {
- ids:system.currentTorrentId
- ,"priority-high":files
- };
- break;
- case "-1":
- arguments = {
- ids:system.currentTorrentId
- ,"priority-low":files
- };
- break;
- }
- transmission.exec({
- method:"torrent-set"
- ,arguments:arguments
- }
- ,function(data){
- if (data.result=="success")
- {
- system.getTorrentInfos(system.currentTorrentId);
- }
- }
- );
- }
- }
-
- // 服务器列表
- var serverlist = $("<table/>").attr("class","torrent-list").attr("id","torrent-servers-table").appendTo(thisLayout.find("#torrent-attribute-servers"));
- $.get(system.rootPath+"template/torrent-attribute-servers-fields.json?time="+(new Date()),function(data){
- var fields = data.fields;
- var config = data.config;
-
- for (var key in fields)
- {
- var title = system.lang.torrent.attribute["servers-fields"][fields[key].field];
- if (!title)
- title = fields[key].field;
- fields[key].title = title;
- system.setFieldFormat(fields[key]);
- }
- config.pageSize = system.config.pageSize;
- config.columns = [fields];
- config.fit = true;
- serverlist.datagrid(config);
- var pager = serverlist.datagrid("getPager");
- var buttons = [{
- id:"pager-button-trackerAdd",
- iconCls:'icon-tracker-add',
- title: system.lang.torrent.attribute["tip"]["button-tracker-add"],
- handler:function(){
- addTracker();
- }
- },'-',{
- id:"pager-button-trackerReplace",
- iconCls:'icon-tracker-edit',
- title: system.lang.torrent.attribute["tip"]["button-tracker-edit"],
- handler:function(){
- changeSelectedTracker($(this));
- }
- },'-',{
- id:"pager-button-trackerRemove",
- iconCls:'icon-tracker-remove',
- title: system.lang.torrent.attribute["tip"]["button-tracker-remove"],
- handler:function(){
- var tracker = serverlist.datagrid("getSelected");
- if (tracker)
- {
- if (confirm(system.lang.torrent.attribute["other"]["tracker-remove-confim"])==false)
- {
- return;
- }
- var button = $(this);
- var icon = button.linkbutton("options").iconCls;
- button.linkbutton({disabled:true,iconCls:"icon-loading"});
- transmission.exec({
- method:"torrent-set"
- ,arguments:{
- ids:system.currentTorrentId
- ,trackerRemove:[tracker.id]
- }
- }
- ,function(data){
- if (data.result=="success")
- {
- system.getTorrentInfos(system.currentTorrentId);
- }
- button.linkbutton({iconCls:icon,disabled:false});
- }
- );
- }
- }
- }];
- serverlist.data("buttons",buttons);
- //system.debug("pager",pager);
- pager.pagination({
- buttons:buttons
- });
- },"json");
-
- // 替换已选中的服务器地址
- function changeSelectedTracker(button)
- {
- var tracker = serverlist.datagrid("getSelected");
- if (tracker)
- {
- var URL = prompt("Tracker:",tracker.announce);
- if (URL!=""&&URL!=tracker.announce)
- {
- var icon = button.linkbutton("options").iconCls;
- button.linkbutton({disabled:true,iconCls:"icon-loading"});
- transmission.exec({
- method:"torrent-set"
- ,arguments:{
- ids:system.currentTorrentId
- ,trackerReplace:[tracker.id,URL]
- }
- }
- ,function(data){
- if (data.result=="success")
- {
- system.getTorrentInfos(system.currentTorrentId);
- }
- button.linkbutton({iconCls:icon,disabled:false});
- }
- );
- }
- }
- }
- /**
- * 添加Tracker
- */
- function addTracker() {
- if (system.currentTorrentId==0) return;
-
- var dialog = $("#dialog-torrent-attribute-add-tracker");
- if (dialog.length)
- {
- dialog.dialog("open");
- dialog.data("ids",system.currentTorrentId);
- dialog.dialog({content:system.templates["dialog-torrent-attribute-add-tracker.html"]});
- return;
- }
-
- $("<div/>").attr("id","dialog-torrent-attribute-add-tracker").appendTo(document.body).dialog({
- title: system.lang.dialog["torrent-attribute-add-tracker"].title,
- width: 520,
- height: 240,
- resizable: false,
- cache: true,
- content:"loading...",
- modal: true
- });
-
- $.get(system.rootPath+"template/dialog-torrent-attribute-add-tracker.html?time="+(new Date()),function(data){
- system.templates["dialog-torrent-attribute-add-tracker.html"] = data;
- $("#dialog-torrent-attribute-add-tracker").data("ids",system.currentTorrentId);
- $("#dialog-torrent-attribute-add-tracker").dialog({content:data});
- });
- }
- // 用户列表
- var peerslist = $("<table/>").attr("class","torrent-list").attr("id","torrent-peers-table").appendTo(thisLayout.find("#torrent-attribute-peers"));
- $.get(system.rootPath+"template/torrent-attribute-users-fields.json?time="+(new Date()),function(data){
- var fields = data.fields;
- var config = data.config;
-
- for (var key in fields)
- {
- var title = system.lang.torrent.attribute["peers-fields"][fields[key].field];
- if (!title)
- title = fields[key].field;
- fields[key].title = title;
- system.setFieldFormat(fields[key]);
- }
- config.pageSize = system.config.pageSize;
- config.columns = [fields];
- config.fit = true;
- peerslist.datagrid(config);
- },"json");
- // 变更保存目录
- thisLayout.find("#torrent-attribute-config-button-changeDownloadDir").click(function(){
- if (system.currentTorrentId==0) return;
-
- var dialog = $("#dialog-torrent-changeDownloadDir");
- if (dialog.length)
- {
- dialog.dialog("open");
- dialog.data("ids",system.currentTorrentId);
- dialog.dialog({content:system.templates["dialog-torrent-changeDownloadDir.html"]});
- return;
- }
-
- $("<div/>").attr("id","dialog-torrent-changeDownloadDir").appendTo(document.body).dialog({
- title: system.lang.dialog["torrent-changeDownloadDir"].title,
- width: 600,
- height: 200,
- resizable: false,
- cache: true,
- content:"loading...",
- modal: true
- });
-
- $.get(system.rootPath+"template/dialog-torrent-changeDownloadDir.html?time="+(new Date()),function(data){
- system.templates["dialog-torrent-changeDownloadDir.html"] = data;
- $("#dialog-torrent-changeDownloadDir").data("ids",system.currentTorrentId);
- $("#dialog-torrent-changeDownloadDir").dialog({content:data});
- });
- });
-
- // 保存参数
- thisLayout.find("#torrent-attribute-config-button-save").click(function()
- {
- if (system.currentTorrentId==0)
- {
- return;
- }
- var torrent = transmission.torrents.all[system.currentTorrentId];
- var inputs = thisLayout.find("#torrent-attribute-config").find("input");
- var config = {};
- var value = null;
- for (var key in inputs)
- {
- var input = inputs[key];
- value = null;
- if (input.id!=undefined&&input.id!="")
- {
- switch (input.type)
- {
- case "checkbox":
- switch (input.id)
- {
- //
- case "seedIdleMode":
- case "seedRatioMode":
- value = $(input).data("_tag");
- break;
- default:
- value = input.checked;
- break;
- }
- break;
- default:
- value = ($.isNumeric(input.value)?parseFloat(input.value):input.value);
- break;
- }
- if (value!=torrent[input.id]&&value!=null)
- {
- config[input.id] = value;
- }
- }
- }
-
- // 如果参数有改变则保存
- if (!$.isEmptyObject(config))
- {
- jQuery.extend(torrent,config);
- config["ids"] = torrent.id;
- $(this).linkbutton({text:system.lang.dialog["system-config"].saving,disabled:true});
- // 开始设置参数
- transmission.exec(
- {
- method:"torrent-set"
- ,arguments:config
- }
- ,function(data){
- thisLayout.find("#torrent-attribute-config-button-save").linkbutton({text:system.lang.dialog["public"]["button-save"],disabled:false});
- if (data.result=="success")
- {
- thisLayout.find("#torrent-attribute-config-saved").fadeInAndOut();
- }
- }
- );
- }
- else
- {
- thisLayout.find("#torrent-attribute-config-nochange").fadeInAndOut();
- }
- //console.log("config:",config);
- });
- })($("#torrent-attribute-layout"));
- </script>
|