From: Jo-Philipp Wich Date: Fri, 21 Feb 2020 20:09:45 +0000 (+0100) Subject: luci-mod-network: wifi scan: add button to start/stop refreshes X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=29c29a6b441cf492ce6e2ad86bb5eabff8896a3d;p=oweals%2Fluci.git luci-mod-network: wifi scan: add button to start/stop refreshes Fixes: #3662 Signed-off-by: Jo-Philipp Wich (cherry picked from commit a2fe3d9fc4f967b9d79346f358aaaf12eeb1e040) --- diff --git a/modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js b/modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js index 2519a68ae..ce30eb196 100644 --- a/modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js +++ b/modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js @@ -1666,27 +1666,37 @@ return L.view.extend({ ]) ]); + var stop = E('button', { + 'class': 'btn', + 'click': L.bind(this.handleScanStartStop, this), + 'style': 'display:none', + 'data-state': 'stop' + }, _('Stop refresh')); + cbi_update_table(table, [], E('em', { class: 'spinning' }, _('Starting wireless scan...'))); var md = ui.showModal(_('Join Network: Wireless Scan'), [ table, - E('div', { 'class': 'right' }, + E('div', { 'class': 'right' }, [ + stop, + ' ', E('button', { 'class': 'btn', 'click': L.bind(this.handleScanAbort, this) - }, _('Dismiss'))) + }, _('Dismiss')) + ]) ]); md.style.maxWidth = '90%'; md.style.maxHeight = 'none'; - this.pollFn = L.bind(this.handleScanRefresh, this, radioDev, {}, table); + this.pollFn = L.bind(this.handleScanRefresh, this, radioDev, {}, table, stop); L.Poll.add(this.pollFn); L.Poll.start(); }; - s.handleScanRefresh = function(radioDev, scanCache, table) { + s.handleScanRefresh = function(radioDev, scanCache, table, stop) { return radioDev.getScanList().then(L.bind(function(results) { var rows = []; @@ -1738,9 +1748,30 @@ return L.view.extend({ } cbi_update_table(table, rows); + + stop.disabled = false; + stop.style.display = ''; + stop.classList.remove('spinning'); }, this)); }; + s.handleScanStartStop = function(ev) { + var btn = ev.currentTarget; + + if (btn.getAttribute('data-state') == 'stop') { + L.Poll.remove(this.pollFn); + btn.firstChild.data = _('Start refresh'); + btn.setAttribute('data-state', 'start'); + } + else { + L.Poll.add(this.pollFn); + btn.firstChild.data = _('Stop refresh'); + btn.setAttribute('data-state', 'stop'); + btn.classList.add('spinning'); + btn.disabled = true; + } + }; + s.handleScanAbort = function(ev) { var md = L.dom.parent(ev.target, 'div[aria-modal="true"]'); if (md) {