From 9c2c64312771673012b3143a073bb6c227f4745f Mon Sep 17 00:00:00 2001
From: Simon Rettberg
Date: Tue, 17 Nov 2020 13:07:09 +0100
Subject: [sysconfig] Dynamically update warnings button
As we use AJAX to query build state for configs that don't have
state === 'OK', the warnings list might be out of date. Hide the
warnings button for all modules that aren't up to date, and dynamically
load their warnings. The warnings button will be shown when the module
finished building, assuming any warnings were generated.
---
modules-available/sysconfig/clientscript.js | 38 +++++++++++++++++------------
1 file changed, 22 insertions(+), 16 deletions(-)
(limited to 'modules-available/sysconfig/clientscript.js')
diff --git a/modules-available/sysconfig/clientscript.js b/modules-available/sysconfig/clientscript.js
index cafe7b02..a9b85251 100644
--- a/modules-available/sysconfig/clientscript.js
+++ b/modules-available/sysconfig/clientscript.js
@@ -5,7 +5,7 @@
var boldItem = false;
var revList = false;
- var $ct = $('#conftable').find('.confrow');
+ var $ct = $('#conftable').find('.confrow .title');
$ct.click(function () {
showmod(this, 'bold');
}).mouseenter(function () {
@@ -13,7 +13,7 @@
}).mouseleave(function () {
showmod(this, 'reset');
});
- var $mt = $('#modtable').find('.modrow');
+ var $mt = $('#modtable').find('.modrow .title');
$mt.click(function () {
showconf(this, 'bold');
}).mouseenter(function () {
@@ -33,7 +33,7 @@
var $msgs = $confirm.find('ul').empty();
for (var i = 0; i < list.length; ++i) {
$msgs.append($('
').text(
- $('.confrow[data-id="' + list[i] + '"]').text()
+ $('.confrow[data-id="' + list[i] + '"] .title').text()
));
}
$confirm.removeClass('hidden');
@@ -56,7 +56,7 @@
function buildRevList() {
revList = {};
$ct.each(function () {
- var elem = $(this);
+ var elem = $(this).parent();
var cid = elem.data('id') + '';
var list = (elem.data('modlist') + '').split(',');
for (var i = 0; i < list.length; ++i) {
@@ -71,11 +71,11 @@
if (action === 'reset') return;
var $e = $(e);
if (!revList) buildRevList();
- var mid = $e.data('id') + '';
+ var mid = $e.parent().data('id') + '';
var list = revList[mid];
if (list && list.length > 0) $ct.each(function () {
var elem = $(this);
- var cid = elem.data('id') + '';
+ var cid = elem.parent().data('id') + '';
if (list.indexOf(cid) === -1)
elem.addClass('slx-fade');
else if (action === 'bold')
@@ -91,10 +91,10 @@
action = showpre(e, action);
if (action === 'reset') return;
var $e = $(e);
- var list = ($e.data('modlist') + '').split(',');
+ var list = ($e.parent().data('modlist') + '').split(',');
$mt.each(function () {
var elem = $(this);
- if (list.indexOf(elem.data('id') + '') === -1)
+ if (list.indexOf(elem.parent().data('id') + '') === -1)
elem.addClass("slx-fade");
else if (action === 'bold')
elem.addClass("slx-bold");
@@ -113,23 +113,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');
+ }
+ }
}
--
cgit v1.2.3-55-g7522