diff --git a/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/server_list.htm b/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/server_list.htm index ca9b70db8..f1eb640d1 100644 --- a/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/server_list.htm +++ b/package/lean/luci-app-ssr-plus/luasrc/view/shadowsocksr/server_list.htm @@ -48,4 +48,70 @@ local dsp = require "luci.dispatcher" for (let i = 0; i < 10; i++) { thread() } - \ No newline at end of file + + // move + function cbi_row_drop(fromId, toId, store) { + var fromNode = document.getElementById(fromId); + var toNode = document.getElementById(toId); + if (!fromNode || !toNode) return false; + + var table = fromNode.parentNode; + while (table && table.nodeName.toLowerCase() != "table") + table = table.parentNode; + if (!table) return false; + + var ids = []; + for (var idx = 2; idx < table.rows.length; idx++) { + if (table.rows[idx] === fromNode) { + toNode.parentNode.insertBefore(toNode, fromNode); + } else if (table.rows[idx] === toNode) { + fromNode.parentNode.insertBefore(fromNode, toNode); + } + + table.rows[idx].className = table.rows[idx].className.replace( + /cbi-rowstyle-[12]/, + "cbi-rowstyle-" + (1 + (idx % 2)) + ); + + if (table.rows[idx].id && table.rows[idx].id.match(/-([^\-]+)$/)) + ids.push(RegExp.$1); + } + + var input = document.getElementById(store); + if (input) input.value = ids.join(" "); + + return false; + } + + // set tr draggable + function enableDragForTable(table_selecter, store) { + var trs = document.querySelectorAll(table_selecter + " tr"); + + function ondragstart(ev) { + ev.dataTransfer.setData("Text", ev.target.id); + } + + function ondrop(ev) { + var from = ev.dataTransfer.getData("Text"); + cbi_row_drop(from, this.id, store); + } + + function ondragover(ev) { + ev.preventDefault(); + ev.dataTransfer.dropEffect = "move"; + } + + for (let index = 2; index < trs.length; index++) { + const el = trs[index]; + el.setAttribute("draggable", true); + el.ondragstart = ondragstart; + el.ondrop = ondrop; + el.ondragover = ondragover; + } + } + // enable + enableDragForTable( + "#cbi-shadowsocksr-servers table", + "cbi.sts.shadowsocksr.servers" + ); +