From 48b7b7f3c967d7dcd56e4f176f2f075091e77f5b Mon Sep 17 00:00:00 2001 From: Will Gunter <74369489+wcgunter@users.noreply.github.com> Date: Thu, 6 Jul 2023 11:47:27 -0700 Subject: [PATCH] UI - Update history page for clarity and interactability (#157) * Display more detail on status on history page * Add "mark as resolved" button to history page * Update processes test * Remove unnecessary API call --- .../java/jpl/cws/controller/RestService.java | 16 +- .../test/integration/ui/ProcessesTestIT.java | 6 +- install/cws-ui/history.ftl | 199 +++++++++++++----- 3 files changed, 161 insertions(+), 60 deletions(-) diff --git a/cws-service/src/main/java/jpl/cws/controller/RestService.java b/cws-service/src/main/java/jpl/cws/controller/RestService.java index 79325599..12cd6d70 100644 --- a/cws-service/src/main/java/jpl/cws/controller/RestService.java +++ b/cws-service/src/main/java/jpl/cws/controller/RestService.java @@ -1120,7 +1120,20 @@ public GsonUTCDateAdapter() { } return size; } - + + @RequestMapping(value="/history/getStatus/{procInstId}", method = GET) + public @ResponseBody String getStatusByProcInstId( + @PathVariable String procInstId) { + List instances = null; + instances = cwsConsoleService.getFilteredProcessInstancesCamunda( + null, procInstId, null, null, null, null, "DESC", 1); + if (instances.size() == 0) { + return null; + } else { + return instances.get(0).getStatus(); + } + } + /** * REST method used to get Processes table JSON @@ -1306,7 +1319,6 @@ public GsonUTCDateAdapter() { return ResponseEntity.ok("{ \"status\" : \"success\", \"message\" : \"Updated " + numRowsUpdated + " rows.\"}"); } - /** * * diff --git a/cws-test/src/test/java/jpl/cws/test/integration/ui/ProcessesTestIT.java b/cws-test/src/test/java/jpl/cws/test/integration/ui/ProcessesTestIT.java index fd3d3c69..14f4d18a 100644 --- a/cws-test/src/test/java/jpl/cws/test/integration/ui/ProcessesTestIT.java +++ b/cws-test/src/test/java/jpl/cws/test/integration/ui/ProcessesTestIT.java @@ -64,7 +64,7 @@ public void runStatusCompleteTest() throws IOException { log.info("------ START ProcessesTestIT:runStatusCompleteTest ------"); goToPage("processes"); - + log.info("Getting info from table..."); wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.tagName("table"))); WebElement myTable = driver.findElement(By.tagName("table")); @@ -72,7 +72,7 @@ public void runStatusCompleteTest() throws IOException { List myRows = myTable.findElements(By.tagName("tr")); sleep(8000); - + log.info("Locating Test Processes Page from table rows and verifying that it completed."); waitForElementXPath("//div[@id=\'processes-table_filter\']/label/input"); @@ -92,7 +92,7 @@ public void runStatusCompleteTest() throws IOException { scriptPass = false; } log.info("------ END ProcessesTestIT:runStatusCompleteTest:runStatusCompleteTest ------"); - } + } catch (Throwable e) { System.out.println(e.toString()); scriptPass = false; diff --git a/install/cws-ui/history.ftl b/install/cws-ui/history.ftl index a4277297..4c7f644e 100644 --- a/install/cws-ui/history.ftl +++ b/install/cws-ui/history.ftl @@ -14,7 +14,8 @@ @@ -224,16 +225,76 @@ $('#procDuration').html(convertMillis(data.duration)); } - var status = data.state; - - if (data.state === "COMPLETED") { - status = "Complete"; - } - else if (data.state === "ACTIVE") { - status = "Running"; + $.ajax({ + type: "GET", + url: "/${base}/rest/history/getStatus/" + data.procInstId, + success: function(data) { + var status = data; + switch (data) { + case "pending": + status = "Pending"; + $("#procStatus").css("color", "blue"); + break; + case "disabled": + status = "Disabled"; + $("#procStatus").css("color", "red"); + break; + case "failedToSchedule": + status = "Failed to schedule"; + $("#procStatus").css("color", "red"); + break; + case "claimedByWorker": + status = "Claimed by Worker"; + $("#procStatus").css("color", "blue"); + break; + case "failedToStart": + status = "Failed to start"; + $("#procStatus").css("color", "red"); + break; + case "running": + status = "Running"; + $("#procStatus").css("color", "blue"); + break; + case "complete": + status = "Complete"; + $("#procStatus").css("color", "green"); + break; + case "resolved": + status = "Resolved"; + $("#procStatus").css("color", "green"); + break; + case "fail": + status = "Failed"; + $("#procStatus").css("color", "red"); + break; + case "incident": + status = "Incident"; + $("#procStatus").css("color", "red"); + break; + default: + status = "Unknown"; + $("#procStatus").css("color", "red"); + break; + } + $('#procStatus').html(status); + if ($("#procStatus").text() == "Failed") { + $("#resolveButtonDiv").show(); + $("#resolveButton").show(); + $("#retryIncidentButton").hide(); + } else if ($("#procStatus").text() == "Incident") { + $("#resolveButtonDiv").show(); + $("#retryIncidentButton").show(); + $("#resolveButton").hide(); + } else { + $("#resolveButtonDiv").hide(); + $("#resolveButton").hide(); + $("#retryIncidentButton").hide(); + } + }, + error: function(e) { + $("procStatus").html("Error fetching status - please try again later."); } - - $('#procStatus').html(status); + }); } setInputVariableTable(inputVarRows); @@ -429,24 +490,62 @@ $("#procInstId").text() + '.json' ); } + + function retryIncident(procInstId) { + var idArr = [procInstId]; + $.ajax({ + type: "POST", + url: "/${base}/rest/processes/retryIncidentRows", + Accept : "application/json", + contentType: "application/json", + dataType: "json", + data: JSON.stringify(idArr), + }) + .done(function(msg) { + console.log(msg); + location.reload(); + }) + .fail(function(xhr, err) { + console.err(msg); + }); + } + + function markAsResolved(procInstId) { + var idArr = [procInstId]; + $.ajax({ + type: "POST", + url: "/${base}/rest/processes/markResolved", + Accept : "application/json", + contentType: "application/json", + dataType: "json", + data: JSON.stringify(idArr), + }) + .done(function(msg) { + console.log(msg); + location.reload(); + }) + .fail(function(xhr, err) { + console.err(xhr.responseTextmsg.message); + }); + } $( document ).ready(function() { $("#logData").DataTable({ - order: [[0, 'asc']], + order: [[0, 'desc']], paging: false, - dom: "<'row'<'col-sm-2 button'><'col-sm-auto filter'f>>" + "ti", + dom: "<'row'<'col-sm-2 download-button'><'col-sm-10 filter'f>>" + "tip", }); - $(``).appendTo("div.button"); + $('').appendTo(".download-button"); // Get query string values params = getQueryString(); @@ -554,26 +653,26 @@

History

- - - - - - - - - - - - - - - - - - - -
Process DefinitionUnknown
Process Instance IDUnknown
Start TimeN/A
End TimeN/A
DurationN/A
StatusUnknown
+ + + + + + + + + + + + + + + + + + + +
Process DefinitionUnknown
Process Instance IDUnknown
Start TimeN/A
End TimeN/A
DurationN/A
Status
@@ -585,20 +684,10 @@
- +