Refactor code structure for improved readability and maintainability
Playwright Tests / test (push) Canceled after 0s

This commit is contained in:
2026-09-10 21:17:35 +02:00
parent f407341f5f
commit 22d2ef9c1a
8 changed files with 89 additions and 13 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
namespace Fuchs.intranet; namespace Fuchs.intranet;
/// <summary> /// <summary>
/// Computes hierarchical invoice position labels ("1", "1.1", "1.2", "2", …) from a /// Computes hierarchical invoice position labels ("1", "1.1", "1.2", "2", …) from a
+27
View File
@@ -86,6 +86,33 @@ main nav ul > li a[role=button] {
} }
} }
.wdg_loading_ind {
color: #999;
font-size: 0.8rem;
margin-bottom: 10px;
padding-left: 1.3rem;
position: relative;
&::before {
animation: wdg_loading_spin 0.8s linear infinite;
border: 2px solid #ddd;
border-top-color: $fuchs_blau;
border-radius: 50%;
content: '';
height: 0.85rem;
left: 0;
position: absolute;
top: 0.05rem;
width: 0.85rem;
}
}
@keyframes wdg_loading_spin {
to {
transform: rotate(360deg);
}
}
.wdg_frame { .wdg_frame {
background-color: #FFF; background-color: #FFF;
border: 1px solid #ccc; border: 1px solid #ccc;
+16 -5
View File
@@ -39,7 +39,7 @@ $fis.db = function () {
$ocms.postXT({ $ocms.postXT({
url: $ocms.url('wdg/my'), success: function (wx) { url: $ocms.url('wdg/my'), success: function (wx) {
$.each(wx, function (ii, wi) { $.each(wx, function (ii, wi) {
var wf = $$.dc('wdg_frame', ovf, { 'data-wdg': wi }).ldng(1); var wf = $$.dc('wdg_frame', ovf, { 'data-wdg': wi }).hide();
$ocms.wdg.call(wf, { wdg: wi }); $ocms.wdg.call(wf, { wdg: wi });
}); });
}, loading: ovf }, loading: ovf
@@ -210,12 +210,17 @@ $fis.wdg = function (options) {
if ($.inArray('reload_30min', wx.rendering_options) > -1 && wx.type !== 'html') { if ($.inArray('reload_30min', wx.rendering_options) > -1 && wx.type !== 'html') {
setTimeout(function () { $fis.wdg.call(wf, { wdg: wi }); }, (30 * 60 * 1000)); setTimeout(function () { $fis.wdg.call(wf, { wdg: wi }); }, (30 * 60 * 1000));
} }
wct.slideDown(150); if (wf.is(':visible')) {
wct.slideDown(150);
} else {
wct.show();
wf.fadeIn(150);
}
}, error: function (jqXHR) { }, error: function (jqXHR) {
wf.slideUp(150); if (wf.is(':visible')) { wf.slideUp(150); }
$fis.failure.call(this, jqXHR); $fis.failure.call(this, jqXHR);
}, complete: function () { }, complete: function () {
wf.ldng(0); wf.ldng(0).trigger('wdg:settled');
} }
}); });
}; };
@@ -225,8 +230,14 @@ $fis.ov = function () {
let cf = $('#contentframe').empty(), ovf = $$.d({ id: 'dashboard_frame' }).appendTo(cf); let cf = $('#contentframe').empty(), ovf = $$.d({ id: 'dashboard_frame' }).appendTo(cf);
$ocms.postXT({ $ocms.postXT({
url: $ocms.url('wdg/my'), success: function (wx) { url: $ocms.url('wdg/my'), success: function (wx) {
let ind = $$.dc('wdg_loading_ind', ovf).text($t.wldg || '').hide();
let pending = wx.length;
let settle = function () {
if (--pending <= 0) { ind.fadeOut(150); }
};
if (pending > 0) { ind.show(); }
$.each(wx, function (ii, wi) { $.each(wx, function (ii, wi) {
var wf = $$.dc('wdg_frame', ovf, { 'data-wdg': wi }).ldng(1); var wf = $$.dc('wdg_frame', ovf, { 'data-wdg': wi }).hide().one('wdg:settled', settle);
$fis.wdg.call(wf, { wdg: wi }); $fis.wdg.call(wf, { wdg: wi });
}); });
}, loading: ovf }, loading: ovf
+1
View File
@@ -13,6 +13,7 @@
, pwr: 'Bitte wählen Sie ein starkes Passwort (min 8 Zeichen, davon jeweils min 2 Zahlen, kleine und große Buchstaben, Sonderzeichen sind optional).' , pwr: 'Bitte wählen Sie ein starkes Passwort (min 8 Zeichen, davon jeweils min 2 Zahlen, kleine und große Buchstaben, Sonderzeichen sind optional).'
, smsc: 'Sie beötigen für diese Funktion einen SMS-Code.\nSoll dieser nun versandt werden?' , smsc: 'Sie beötigen für diese Funktion einen SMS-Code.\nSoll dieser nun versandt werden?'
, wdc: 'Doppelt klicken, um die Box zu aktualisieren.' , wdc: 'Doppelt klicken, um die Box zu aktualisieren.'
, wldg: 'Widgets werden geladen…'
, wdg: {} , wdg: {}
}); });
$t.rspf = { sms: 'Der SMS-Code konnte nicht bestätigt werden', valid: 'Das alte Passwort ist nicht korrekt', requirements: 'Das Passwort entspricht nicht den Anforderungen.\n' + $t.pwr} $t.rspf = { sms: 'Der SMS-Code konnte nicht bestätigt werden', valid: 'Das alte Passwort ist nicht korrekt', requirements: 'Das Passwort entspricht nicht den Anforderungen.\n' + $t.pwr}
+25
View File
@@ -2282,6 +2282,31 @@ main nav ul > li a[role=button]:hover::after, main nav ul > li a[role=button].fb
padding: 0 0.25rem; padding: 0 0.25rem;
} }
.wdg_loading_ind {
color: #999;
font-size: 0.8rem;
margin-bottom: 10px;
padding-left: 1.3rem;
position: relative;
}
.wdg_loading_ind::before {
animation: wdg_loading_spin 0.8s linear infinite;
border: 2px solid #ddd;
border-top-color: rgb(27, 67, 121);
border-radius: 50%;
content: "";
height: 0.85rem;
left: 0;
position: absolute;
top: 0.05rem;
width: 0.85rem;
}
@keyframes wdg_loading_spin {
to {
transform: rotate(360deg);
}
}
.wdg_frame { .wdg_frame {
background-color: #FFF; background-color: #FFF;
border: 1px solid #ccc; border: 1px solid #ccc;
+17 -5
View File
@@ -2851,6 +2851,7 @@ $.extend($t, {
, pwr: 'Bitte wählen Sie ein starkes Passwort (min 8 Zeichen, davon jeweils min 2 Zahlen, kleine und große Buchstaben, Sonderzeichen sind optional).' , pwr: 'Bitte wählen Sie ein starkes Passwort (min 8 Zeichen, davon jeweils min 2 Zahlen, kleine und große Buchstaben, Sonderzeichen sind optional).'
, smsc: 'Sie beötigen für diese Funktion einen SMS-Code.\nSoll dieser nun versandt werden?' , smsc: 'Sie beötigen für diese Funktion einen SMS-Code.\nSoll dieser nun versandt werden?'
, wdc: 'Doppelt klicken, um die Box zu aktualisieren.' , wdc: 'Doppelt klicken, um die Box zu aktualisieren.'
, wldg: 'Widgets werden geladen…'
, wdg: {} , wdg: {}
}); });
$t.rspf = { sms: 'Der SMS-Code konnte nicht bestätigt werden', valid: 'Das alte Passwort ist nicht korrekt', requirements: 'Das Passwort entspricht nicht den Anforderungen.\n' + $t.pwr} $t.rspf = { sms: 'Der SMS-Code konnte nicht bestätigt werden', valid: 'Das alte Passwort ist nicht korrekt', requirements: 'Das Passwort entspricht nicht den Anforderungen.\n' + $t.pwr}
@@ -2904,7 +2905,7 @@ $fis.db = function () {
$ocms.postXT({ $ocms.postXT({
url: $ocms.url('wdg/my'), success: function (wx) { url: $ocms.url('wdg/my'), success: function (wx) {
$.each(wx, function (ii, wi) { $.each(wx, function (ii, wi) {
var wf = $$.dc('wdg_frame', ovf, { 'data-wdg': wi }).ldng(1); var wf = $$.dc('wdg_frame', ovf, { 'data-wdg': wi }).hide();
$ocms.wdg.call(wf, { wdg: wi }); $ocms.wdg.call(wf, { wdg: wi });
}); });
}, loading: ovf }, loading: ovf
@@ -3075,12 +3076,17 @@ $fis.wdg = function (options) {
if ($.inArray('reload_30min', wx.rendering_options) > -1 && wx.type !== 'html') { if ($.inArray('reload_30min', wx.rendering_options) > -1 && wx.type !== 'html') {
setTimeout(function () { $fis.wdg.call(wf, { wdg: wi }); }, (30 * 60 * 1000)); setTimeout(function () { $fis.wdg.call(wf, { wdg: wi }); }, (30 * 60 * 1000));
} }
wct.slideDown(150); if (wf.is(':visible')) {
wct.slideDown(150);
} else {
wct.show();
wf.fadeIn(150);
}
}, error: function (jqXHR) { }, error: function (jqXHR) {
wf.slideUp(150); if (wf.is(':visible')) { wf.slideUp(150); }
$fis.failure.call(this, jqXHR); $fis.failure.call(this, jqXHR);
}, complete: function () { }, complete: function () {
wf.ldng(0); wf.ldng(0).trigger('wdg:settled');
} }
}); });
}; };
@@ -3090,8 +3096,14 @@ $fis.ov = function () {
let cf = $('#contentframe').empty(), ovf = $$.d({ id: 'dashboard_frame' }).appendTo(cf); let cf = $('#contentframe').empty(), ovf = $$.d({ id: 'dashboard_frame' }).appendTo(cf);
$ocms.postXT({ $ocms.postXT({
url: $ocms.url('wdg/my'), success: function (wx) { url: $ocms.url('wdg/my'), success: function (wx) {
let ind = $$.dc('wdg_loading_ind', ovf).text($t.wldg || '').hide();
let pending = wx.length;
let settle = function () {
if (--pending <= 0) { ind.fadeOut(150); }
};
if (pending > 0) { ind.show(); }
$.each(wx, function (ii, wi) { $.each(wx, function (ii, wi) {
var wf = $$.dc('wdg_frame', ovf, { 'data-wdg': wi }).ldng(1); var wf = $$.dc('wdg_frame', ovf, { 'data-wdg': wi }).hide().one('wdg:settled', settle);
$fis.wdg.call(wf, { wdg: wi }); $fis.wdg.call(wf, { wdg: wi });
}); });
}, loading: ovf }, loading: ovf
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long