diff options
Diffstat (limited to 'modules-available/sysconfig/clientscript.js')
-rw-r--r-- | modules-available/sysconfig/clientscript.js | 195 |
1 files changed, 113 insertions, 82 deletions
diff --git a/modules-available/sysconfig/clientscript.js b/modules-available/sysconfig/clientscript.js index 1553d678..9dbb0745 100644 --- a/modules-available/sysconfig/clientscript.js +++ b/modules-available/sysconfig/clientscript.js @@ -1,88 +1,113 @@ // Mouseover and clicking -var $ct = $('#conftable').find('.confrow'); -$ct.click(function() { - showmod(this, 'bold'); -}).mouseenter(function() { - showmod(this, 'fade'); -}).mouseleave(function() { - showmod(this, 'reset'); -}); -var $mt = $('#modtable').find('.modrow'); -$mt.click(function() { - showconf(this, 'bold'); -}).mouseenter(function() { - showconf(this, 'fade'); -}).mouseleave(function() { - showconf(this, 'reset'); -}); +(function() { + var boldItem = false; + var modToConf = false; -var boldItem = false; -var revList = false; - -function showpre(e, action) { - if (boldItem && action !== 'bold') return 'reset'; - if (boldItem) { - if (e === boldItem) action = 'fade'; - boldItem = false; - } - $mt.removeClass("slx-bold slx-fade"); - $ct.removeClass("slx-bold slx-fade"); - return action; -} - -function buildRevList() { - revList = {}; - $ct.each(function() { - var elem = $(this); - var cid = elem.data('id')+''; - var list = (elem.data('modlist')+'').split(','); + var $ct = $('#conftable').find('.confrow .title'); + $ct.click(function () { + showmod(this, 'bold'); + }).mouseenter(function () { + showmod(this, 'fade'); + }).mouseleave(function () { + showmod(this, 'reset'); + }); + var $mt = $('#modtable').find('.modrow .title'); + $mt.click(function () { + showconf(this, 'bold'); + }).mouseenter(function () { + showconf(this, 'fade'); + }).mouseleave(function () { + showconf(this, 'reset'); + }); + var $confirm = $('#delete-item-list'); + $('.btn-del-module').click(function() { + var mid = $(this).val() + ''; + var list = modToConf[mid]; + if (!list || !list.length) { + $confirm.append($msgs).addClass('hidden'); + return; + } + var $msgs = $confirm.find('ul').empty(); for (var i = 0; i < list.length; ++i) { - if (!revList[list[i]]) revList[list[i]] = []; - revList[list[i]].push(cid); + $msgs.append($('<li>').text( + $('.confrow[data-id="' + list[i] + '"] .title').text() + )); } + $confirm.removeClass('hidden'); }); -} + $('.btn-del-config').click(function() { + $confirm.addClass('hidden'); + }); + + buildRevList(); + var mods = []; + $('#modtable .modrow').each(function() { mods.push($(this).data('id')) }); + mods.forEach(function(e) { if (modToConf[e] === undefined) $('.modrow[data-id=' + e + '] .icon-unused').removeClass('hidden') }); + + function showpre(e, action) { + if (boldItem && action !== 'bold') return 'reset'; + if (boldItem) { + if (e === boldItem) action = 'fade'; + boldItem = false; + } + $mt.removeClass("slx-bold slx-fade"); + $ct.removeClass("slx-bold slx-fade"); + return action; + } -function showconf(e, action) { - action = showpre(e, action); - if (action === 'reset') return; - var $e = $(e); - if (!revList) buildRevList(); - var mid = $e.data('id')+''; - var list = revList[mid]; - if (list && list.length > 0) $ct.each(function() { - var elem = $(this); - var cid = elem.data('id')+''; - if (list.indexOf(cid) === -1) - elem.addClass('slx-fade'); - else if (action === 'bold') - elem.addClass('slx-bold'); - }); else $ct.addClass('slx-fade'); - if (action === 'bold') { - boldItem = e; - $e.addClass("slx-bold"); + function buildRevList() { + modToConf = {}; + $ct.each(function () { + var elem = $(this).parent(); + var cid = elem.data('id') + ''; + var list = (elem.data('modlist') + '').split(','); + for (var i = 0; i < list.length; ++i) { + if (!modToConf[list[i]]) modToConf[list[i]] = []; + modToConf[list[i]].push(cid); + } + }); } -} -function showmod(e, action) { - action = showpre(e, action); - if (action === 'reset') return; - var $e = $(e); - var list = ($e.data('modlist')+'').split(','); - $mt.each(function () { - var elem = $(this); - if (list.indexOf(elem.data('id')+'') === -1) - elem.addClass("slx-fade"); - else if (action === 'bold') - elem.addClass("slx-bold"); - }); - if (action === 'bold') { - boldItem = e; - $e.addClass("slx-bold"); + function showconf(e, action) { + action = showpre(e, action); + if (action === 'reset') return; + var $e = $(e); + var mid = $e.parent().data('id') + ''; + var list = modToConf[mid]; + if (list && list.length > 0) $ct.each(function () { + var elem = $(this); + var cid = elem.parent().data('id') + ''; + if (list.indexOf(cid) === -1) + elem.addClass('slx-fade'); + else if (action === 'bold') + elem.addClass('slx-bold'); + }); else $ct.addClass('slx-fade'); + if (action === 'bold') { + boldItem = e; + $e.addClass("slx-bold"); + } } -} + + function showmod(e, action) { + action = showpre(e, action); + if (action === 'reset') return; + var $e = $(e); + var list = ($e.parent().data('modlist') + '').split(','); + $mt.each(function () { + var elem = $(this); + if (list.indexOf(elem.parent().data('id') + '') === -1) + elem.addClass("slx-fade"); + else if (action === 'bold') + elem.addClass("slx-bold"); + }); + if (action === 'bold') { + boldItem = e; + $e.addClass("slx-bold"); + } + } +})(); // Polling for updated status (outdated, missing, ok) @@ -91,23 +116,29 @@ var statusChecks = 0; function checkBuildStatus() { var mods = []; var confs = []; - $(".refmod.btn-primary").each(function (index) { + $(".modrow .btn-rebuild.btn-primary").each(function (index) { mods.push($(this).val()); }); - $(".refconf.btn-primary").each(function (index) { + $(".confrow .btn-rebuild.btn-primary").each(function (index) { confs.push($(this).val()); }); if (mods.length === 0 && confs.length === 0) return; if (++statusChecks < 10) setTimeout(checkBuildStatus, 150 + 100 * statusChecks); $.post('?do=SysConfig', { mods: mods.join(), confs: confs.join(), token: TOKEN, action: 'status' }, function (data) { if (typeof data === 'undefined') return; - if (typeof data.mods === 'object') updateButtonColor($(".refmod.btn-primary"), data.mods); - if (typeof data.confs === 'object') updateButtonColor($(".refconf.btn-primary"), data.confs); + if (typeof data.mods === 'object') updateButtonColor('.modrow', data.mods); + if (typeof data.confs === 'object') updateButtonColor('.confrow', data.confs); }, 'json'); } -function updateButtonColor(list,ids) { - list.each(function() { - if (ids.indexOf($(this).val()) >= 0) $(this).removeClass('btn-primary').addClass('btn-default'); - }); +function updateButtonColor(rowclass,ids) { + for (var i = 0; i < ids.length; ++i) { + var e = ids[i]; + var $row = $(rowclass + '[data-id=' + e.id + ']'); + $row.find('.btn-rebuild').removeClass('btn-primary').addClass('btn-default'); + if (e.warnings && (typeof e.warnings === 'string') && e.warnings.length > 0) { + $row.find('.row-warnings').text(e.warnings); + $row.find('.btn-warnings').removeClass('hidden'); + } + } } |