From ac6f4d1791471582820b32e8e83949ae91da5c9e Mon Sep 17 00:00:00 2001 From: Erwin Dondorp Date: Tue, 30 Apr 2024 03:11:39 +0200 Subject: [PATCH 1/2] provide hint for click on table row --- saltgui/static/scripts/panels/Beacons.js | 2 +- .../static/scripts/panels/BeaconsMinion.js | 2 +- saltgui/static/scripts/panels/Grains.js | 2 +- saltgui/static/scripts/panels/GrainsMinion.js | 2 +- saltgui/static/scripts/panels/HighState.js | 2 +- saltgui/static/scripts/panels/Issues.js | 2 +- saltgui/static/scripts/panels/JobsDetails.js | 2 +- saltgui/static/scripts/panels/JobsSummary.js | 2 +- saltgui/static/scripts/panels/Minions.js | 2 +- saltgui/static/scripts/panels/Nodegroups.js | 2 +- saltgui/static/scripts/panels/Panel.js | 20 ++++++++++++++++++- saltgui/static/scripts/panels/Pillars.js | 2 +- saltgui/static/scripts/panels/Schedules.js | 2 +- .../static/scripts/panels/SchedulesMinion.js | 2 +- saltgui/static/scripts/panels/Templates.js | 2 +- 15 files changed, 33 insertions(+), 15 deletions(-) diff --git a/saltgui/static/scripts/panels/Beacons.js b/saltgui/static/scripts/panels/Beacons.js index 3298d3512..28f5e4cde 100644 --- a/saltgui/static/scripts/panels/Beacons.js +++ b/saltgui/static/scripts/panels/Beacons.js @@ -13,7 +13,7 @@ export class BeaconsPanel extends Panel { this.addSearchButton(); this.addTable(["Minion", "Status", "Beacons", "-menu-"]); this.setTableSortable("Minion", "asc"); - this.setTableClickable(); + this.setTableClickable("page"); this.addMsg(); } diff --git a/saltgui/static/scripts/panels/BeaconsMinion.js b/saltgui/static/scripts/panels/BeaconsMinion.js index d0a6d1503..afed18529 100644 --- a/saltgui/static/scripts/panels/BeaconsMinion.js +++ b/saltgui/static/scripts/panels/BeaconsMinion.js @@ -32,7 +32,7 @@ export class BeaconsMinionPanel extends Panel { ]); this.addTable(["Name", "-menu-", "Config", "Timestamp", "Value", "-help-"]); this.setTableSortable("Name", "asc"); - this.setTableClickable(); + this.setTableClickable("cmd"); this.addMsg(); } diff --git a/saltgui/static/scripts/panels/Grains.js b/saltgui/static/scripts/panels/Grains.js index 24f67662e..4fa312092 100644 --- a/saltgui/static/scripts/panels/Grains.js +++ b/saltgui/static/scripts/panels/Grains.js @@ -19,7 +19,6 @@ export class GrainsPanel extends Panel { ]); this.addWarningField(); this.addTable(["Minion", "Status", "Salt version", "OS version", "Grains", "-menu-"]); - this.setTableClickable(); // cannot initialize sorting before all columns are present // this.setTableSortable("Minion", "asc"); @@ -41,6 +40,7 @@ export class GrainsPanel extends Panel { tr.appendChild(th); } this.previewColumsAdded = true; + this.setTableClickable("page"); } // initialize sorting after all columns are present diff --git a/saltgui/static/scripts/panels/GrainsMinion.js b/saltgui/static/scripts/panels/GrainsMinion.js index 3405a9d44..ceba43eca 100644 --- a/saltgui/static/scripts/panels/GrainsMinion.js +++ b/saltgui/static/scripts/panels/GrainsMinion.js @@ -23,7 +23,7 @@ export class GrainsMinionPanel extends Panel { this.addWarningField(); this.addTable(["Name", "-menu-", "Value"]); this.setTableSortable("Name", "asc"); - this.setTableClickable(); + this.setTableClickable("cmd"); this.addMsg(); } diff --git a/saltgui/static/scripts/panels/HighState.js b/saltgui/static/scripts/panels/HighState.js index 44e56edfd..e16d84e1b 100644 --- a/saltgui/static/scripts/panels/HighState.js +++ b/saltgui/static/scripts/panels/HighState.js @@ -38,7 +38,7 @@ export class HighStatePanel extends Panel { this.addWarningField(); this.addTable(["Minion", "State", "Latest JID", "Target", "Function", "Start Time", "-menu-", "States"]); this.setTableSortable("Minion", "asc"); - this.setTableClickable(); + this.setTableClickable("cmd"); this.addMsg(); // collect the list of hidden/shown environments diff --git a/saltgui/static/scripts/panels/Issues.js b/saltgui/static/scripts/panels/Issues.js index 901e0577c..d1911a760 100644 --- a/saltgui/static/scripts/panels/Issues.js +++ b/saltgui/static/scripts/panels/Issues.js @@ -22,7 +22,7 @@ export class IssuesPanel extends Panel { "that are observed in various categories." ]); this.addTable(["-menu-", "Description"]); - this.setTableClickable(); + this.setTableClickable("cmd"); this.addMsg(); // keep the list of "loading..." messages diff --git a/saltgui/static/scripts/panels/JobsDetails.js b/saltgui/static/scripts/panels/JobsDetails.js index 138c7bfc5..245467166 100644 --- a/saltgui/static/scripts/panels/JobsDetails.js +++ b/saltgui/static/scripts/panels/JobsDetails.js @@ -40,7 +40,7 @@ export class JobsDetailsPanel extends JobsPanel { ]); this.addTable(["JID", "Target", "Function", "Start Time", "-menu-", "Status", "Details"], "data-list-jobs"); this.setTableSortable("JID", "desc"); - this.setTableClickable(); + this.setTableClickable("page"); this.addMsg(); } diff --git a/saltgui/static/scripts/panels/JobsSummary.js b/saltgui/static/scripts/panels/JobsSummary.js index 471d1666e..cac358f03 100644 --- a/saltgui/static/scripts/panels/JobsSummary.js +++ b/saltgui/static/scripts/panels/JobsSummary.js @@ -18,7 +18,7 @@ export class JobsSummaryPanel extends JobsPanel { this.addTitle("Recent Jobs"); this.addSearchButton(); this.addTable(null); - this.setTableClickable(); + this.setTableClickable("page"); this.addMsg(); } diff --git a/saltgui/static/scripts/panels/Minions.js b/saltgui/static/scripts/panels/Minions.js index cf39ada49..8bd0eb47d 100644 --- a/saltgui/static/scripts/panels/Minions.js +++ b/saltgui/static/scripts/panels/Minions.js @@ -25,7 +25,7 @@ export class MinionsPanel extends Panel { this.addWarningField(); this.addTable(["Minion", "Status", "Salt version", "OS version", "-menu-"]); this.setTableSortable("Minion", "asc"); - this.setTableClickable(); + this.setTableClickable("cmd"); this.addMsg(); } diff --git a/saltgui/static/scripts/panels/Nodegroups.js b/saltgui/static/scripts/panels/Nodegroups.js index 0ba632dbe..0394cce4b 100644 --- a/saltgui/static/scripts/panels/Nodegroups.js +++ b/saltgui/static/scripts/panels/Nodegroups.js @@ -18,7 +18,7 @@ export class NodegroupsPanel extends Panel { this.addPlayPauseButton(); this.addWarningField(); this.addTable(["Minion", "Status", "Salt version", "OS version", "-menu-"]); - this.setTableClickable(); + this.setTableClickable("cmd"); this.addMsg(); } diff --git a/saltgui/static/scripts/panels/Panel.js b/saltgui/static/scripts/panels/Panel.js index 67d1cd7cc..68ec7e731 100644 --- a/saltgui/static/scripts/panels/Panel.js +++ b/saltgui/static/scripts/panels/Panel.js @@ -224,9 +224,27 @@ export class Panel { } } - setTableClickable () { + setTableClickable (pType) { // this function is only called when the table is clickable + // pType is "cmd" or "page" this.table.classList.add("highlight-rows"); + if (!this.table.tHead) { + return; + } + const tr = this.table.tHead.children[0]; + const nrColumns = tr.children.length; + const th = tr.children[nrColumns - 1]; + th.innerHTML = "" + Character.CIRCLED_INFORMATION_SOURCE + "" + th.innerHTML; + const tableinfo = this.table.querySelector("#tableinfo"); + switch (pType) { + case "cmd": + Utils.addToolTip (tableinfo, "Click row to show Manual Run for that row", "bottom-right"); + break; + case "page": + Utils.addToolTip (tableinfo, "Click row to navigate to details page\nCTRL-click to open in a new tab and stay here\nALT-click to open in a new tab and go to it", "bottom-right"); + break; + default: + } } setTableSortable (pColumnName, pDirection = "asc") { diff --git a/saltgui/static/scripts/panels/Pillars.js b/saltgui/static/scripts/panels/Pillars.js index f14ce6d51..fe3ceb37b 100644 --- a/saltgui/static/scripts/panels/Pillars.js +++ b/saltgui/static/scripts/panels/Pillars.js @@ -14,7 +14,7 @@ export class PillarsPanel extends Panel { this.addWarningField(); this.addTable(["Minion", "Status", "Pillars", "-menu-"]); this.setTableSortable("Minion", "asc"); - this.setTableClickable(); + this.setTableClickable("page"); this.addMsg(); } diff --git a/saltgui/static/scripts/panels/Schedules.js b/saltgui/static/scripts/panels/Schedules.js index db6508c5b..0c7c31567 100644 --- a/saltgui/static/scripts/panels/Schedules.js +++ b/saltgui/static/scripts/panels/Schedules.js @@ -13,7 +13,7 @@ export class SchedulesPanel extends Panel { this.addSearchButton(); this.addTable(["Minion", "Status", "Schedules", "-menu-"]); this.setTableSortable("Minion", "asc"); - this.setTableClickable(); + this.setTableClickable("page"); this.addMsg(); } diff --git a/saltgui/static/scripts/panels/SchedulesMinion.js b/saltgui/static/scripts/panels/SchedulesMinion.js index 749daee6e..b7b1b485b 100644 --- a/saltgui/static/scripts/panels/SchedulesMinion.js +++ b/saltgui/static/scripts/panels/SchedulesMinion.js @@ -25,7 +25,7 @@ export class SchedulesMinionPanel extends Panel { } this.addTable(["Name", "-menu-", "Details"]); this.setTableSortable("Name", "asc"); - this.setTableClickable(); + this.setTableClickable("cmd"); this.addMsg(); } diff --git a/saltgui/static/scripts/panels/Templates.js b/saltgui/static/scripts/panels/Templates.js index 7d8304c71..f8438e617 100644 --- a/saltgui/static/scripts/panels/Templates.js +++ b/saltgui/static/scripts/panels/Templates.js @@ -14,7 +14,7 @@ export class TemplatesPanel extends Panel { this.addSearchButton(); this.addTable(["Name", "Category", "Key", "Description", "Target", "Command", "-menu-"], "data-list-templates"); this.setTableSortable("Name", "asc"); - this.setTableClickable(); + this.setTableClickable("cmd"); this.addMsg(); } From cc0fe32aead37e47606576aec4e587bfa805bf1a Mon Sep 17 00:00:00 2001 From: Erwin Dondorp Date: Tue, 30 Apr 2024 20:38:10 +0200 Subject: [PATCH 2/2] also for the Recent Job table --- saltgui/static/scripts/panels/JobsSummary.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/saltgui/static/scripts/panels/JobsSummary.js b/saltgui/static/scripts/panels/JobsSummary.js index cac358f03..d7b226f3d 100644 --- a/saltgui/static/scripts/panels/JobsSummary.js +++ b/saltgui/static/scripts/panels/JobsSummary.js @@ -17,7 +17,7 @@ export class JobsSummaryPanel extends JobsPanel { this.addTitle("Recent Jobs"); this.addSearchButton(); - this.addTable(null); + this.addTable(["-dummy-", "-dummy-"]); this.setTableClickable("page"); this.addMsg(); }