in engine/src/main/java/org/apache/hop/www/GetStatusServlet.java [89:1191]
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
if (isJettyMode() && !request.getContextPath().startsWith(CONTEXT_PATH)) {
return;
}
if (log.isDebug()) {
logDebug(BaseMessages.getString(PKG, "GetStatusServlet.StatusRequested"));
}
response.setStatus(HttpServletResponse.SC_OK);
String root =
request.getRequestURI() == null
? StatusServletUtils.HOP_ROOT
: request.getRequestURI().substring(0, request.getRequestURI().indexOf(CONTEXT_PATH));
String prefix =
isJettyMode() ? StatusServletUtils.STATIC_PATH : root + StatusServletUtils.RESOURCES_PATH;
boolean useXml = "Y".equalsIgnoreCase(request.getParameter("xml"));
boolean useJson = "Y".equalsIgnoreCase(request.getParameter("json"));
boolean useLightTheme = "Y".equalsIgnoreCase(request.getParameter("useLightTheme"));
if (useXml) {
response.setContentType("text/xml");
response.setCharacterEncoding(Const.XML_ENCODING);
}
if (useJson) {
response.setContentType("application/json");
response.setCharacterEncoding(Const.XML_ENCODING);
} else {
response.setContentType("text/html;charset=UTF-8");
}
PrintWriter out = response.getWriter();
List<HopServerObjectEntry> pipelineEntries = getPipelineMap().getPipelineObjects();
List<HopServerObjectEntry> actions = getWorkflowMap().getWorkflowObjects();
if (useXml || useJson) {
HopServerStatus serverStatus = new HopServerStatus();
serverStatus.setStatusDescription("Online");
getSystemInfo(serverStatus);
for (HopServerObjectEntry entry : pipelineEntries) {
IPipelineEngine<PipelineMeta> pipeline = getPipelineMap().getPipeline(entry);
String statusDescription = pipeline.getStatusDescription();
HopServerPipelineStatus pipelineStatus =
new HopServerPipelineStatus(entry.getName(), entry.getId(), statusDescription);
pipelineStatus.setLogDate(new Date());
pipelineStatus.setExecutionStartDate(pipeline.getExecutionStartDate());
pipelineStatus.setExecutionEndDate(pipeline.getExecutionEndDate());
pipelineStatus.setPaused(pipeline.isPaused());
serverStatus.getPipelineStatusList().add(pipelineStatus);
}
for (HopServerObjectEntry entry : actions) {
IWorkflowEngine<WorkflowMeta> workflow = getWorkflowMap().getWorkflow(entry);
String status = workflow.getStatusDescription();
HopServerWorkflowStatus workflowStatus =
new HopServerWorkflowStatus(entry.getName(), entry.getId(), status);
workflowStatus.setLogDate(new Date());
workflowStatus.setExecutionStartDate(workflow.getExecutionStartDate());
workflowStatus.setExecutionEndDate(workflow.getExecutionEndDate());
serverStatus.getWorkflowStatusList().add(workflowStatus);
}
if (useXml) {
// XML
try {
out.print(XmlHandler.getXmlHeader(Const.XML_ENCODING));
out.println(serverStatus.getXml());
} catch (HopException e) {
throw new ServletException("Unable to get the server status in XML format", e);
}
} else {
// JSON
//
ObjectMapper mapper = HopJson.newMapper();
String jsonString =
mapper.writerWithDefaultPrettyPrinter().writeValueAsString(serverStatus);
out.println(jsonString);
}
} else {
out.println("<HTML>");
out.println(
"<HEAD><TITLE>"
+ BaseMessages.getString(PKG, "GetStatusServlet.HopServerStatus")
+ "</TITLE>");
out.println("<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">");
out.println("<link rel=\"icon\" type=\"image/svg+xml\" href=\"/static/images/favicon.svg\">");
int tableBorder = 1;
if (!useLightTheme) {
if (isJettyMode()) {
out.println(
"<link rel=\"stylesheet\" type=\"text/css\" href=\"/static/css/hop-server.css\" />");
} else {
out.println("<style>");
out.println(
".hop-table td, tr.cellTableRow, td.gwt-MenuItem, .toolbar-button:not(.toolbar-button-disabled) {");
out.println(" cursor: pointer;");
out.println(CONST_CLOSE_BRACKET);
out.println(".toolbar-button-disabled {");
out.println(" opacity: 0.4;");
out.println(CONST_CLOSE_BRACKET);
out.println("div#messageDialogBody:first-letter {");
out.println(" text-transform: capitalize;");
out.println(CONST_CLOSE_BRACKET);
out.println("</style>");
}
tableBorder = 0;
}
out.println("</HEAD>");
out.println(
"<BODY class=\"hop-page-background dragdrop-dropTarget dragdrop-boundary\" style=\"overflow: auto;\">");
// Empty div for containing currently selected item
out.println("<div id=\"selectedTableItem\">");
out.println("<value></value>"); // initialize to none
out.println(CONST_DIV);
out.println("<div class=\"row\" id=\"pucHeader\">");
String htmlClass = useLightTheme ? "h1" : "div";
out.println(
"<"
+ htmlClass
+ " class=\"workspaceHeading\" style=\"padding: 0px 0px 0px 10px;\">"
+ BaseMessages.getString(PKG, "GetStatusServlet.TopStatus")
+ "</"
+ htmlClass
+ ">");
out.println(CONST_DIV);
try {
// Tooltips
String run = BaseMessages.getString(PKG, "HopServerStatusServlet.Run");
String stop = BaseMessages.getString(PKG, "HopServerStatusServlet.StopPipeline");
String cleanup = BaseMessages.getString(PKG, "HopServerStatusServlet.CleanupPipeline");
String view = BaseMessages.getString(PKG, "HopServerStatusServlet.ViewPipelineDetails");
String remove = BaseMessages.getString(PKG, "HopServerStatusServlet.RemovePipeline");
out.println("<div class=\"row\" style=\"padding: 0px 0px 0px 30px\">");
htmlClass = useLightTheme ? "h2" : "div";
out.println("<div class=\"row\" style=\"padding: 25px 30px 75px 0px;\">");
out.println(
"<"
+ htmlClass
+ " class=\"workspaceHeading\" style=\"padding: 0px 0px 0px 0px;\">Pipelines</"
+ htmlClass
+ ">");
out.println(
"<table id=\"pipeline-table\" cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td align=\"left\" width=\"100%\" style=\"vertical-align:middle;\">");
out.println(
"<table cellspacing=\"0\" cellpadding=\"0\" class=\"toolbar\" style=\"width: 100%; height: 26px; margin-bottom: 2px; border: 0;\">");
out.println("<tbody><tr>");
out.println(
"<td align=\"left\" style=\"vertical-align: middle; width: 100%\" id=\"pipeline-align\"></td>");
out.println(
"<td "
+ setupIconEnterLeaveJavascript("pause")
+ " align=\"left\" style=\"vertical-align: middle;\"><div style=\"padding: 2px;\" onClick=\"resumeFunction( this )\" class=\"toolbar-button toolbar-button-disabled\" id=\"pause\"><img "
+ "style=\"width: 22px; height: 22px\" src=\""
+ prefix
+ "/images/run.svg\" title=\""
+ run
+ CONST_DIV_CLOSE);
out.println(
"<td "
+ setupIconEnterLeaveJavascript("stop")
+ " align=\"left\" style=\"vertical-align: middle;\"><div style=\"padding: 2px;\" onClick=\"stopFunction( this )\" class=\"toolbar-button toolbar-button-disabled\" id=\"stop\"><img "
+ "style=\"width: 22px; height: 22px\"src=\""
+ prefix
+ "/images/stop.svg\" title=\""
+ stop
+ CONST_DIV_CLOSE);
out.println(
"<td "
+ setupIconEnterLeaveJavascript("cleanup")
+ " align=\"left\" style=\"vertical-align: middle;\"><div style=\"padding: 2px; margin-left: 10px !important;\" onClick=\"cleanupFunction( this )\" class=\"toolbar-button "
+ "toolbar-button-disabled\" id=\"cleanup\"><img style=\"width: 22px; height: 22px\"src=\""
+ prefix
+ "/images/cleanup.svg\" title=\""
+ cleanup
+ CONST_DIV_CLOSE);
out.println(
"<td "
+ setupIconEnterLeaveJavascript("view")
+ " align=\"left\" style=\"vertical-align: middle;\"><div style=\"padding: 2px; margin-left: 0 !important;\" onClick=\"viewFunction( this )\" class=\"toolbar-button "
+ "toolbar-button-disabled\" id=\"view\"><img style=\"width: 22px; height: 22px\" src=\""
+ prefix
+ "/images/view.svg\" title=\""
+ view
+ CONST_DIV_CLOSE);
out.println(
"<td "
+ setupIconEnterLeaveJavascript("close")
+ " align=\"left\" style=\"vertical-align: middle;\"><div style=\"padding: 2px; margin-right: 10px;\" onClick=\"removeFunction( this )\" class=\"toolbar-button toolbar-button-disabled\" "
+ "id=\"close\"><img style=\"width: 22px; height: 22px\" src=\""
+ prefix
+ "/images/close.svg\" title=\""
+ remove
+ CONST_DIV_CLOSE);
out.println("</tr></tbody></table>");
out.println(
"<div id=\"runActions\" class=\"custom-dropdown-popup\" style=\"visibility: hidden; overflow: visible; position: fixed;\" onLoad=\"repositionActions( this, document.getElementById( "
+ "'pause' ) )\" onMouseLeave=\"this.style='visibility: hidden; overflow: visible; position: fixed;'\"><div class=\"popupContent\"><div style=\"padding: 0;\" class=\"gwt-MenuBar "
+ "gwt-MenuBar-vertical\"><table><tbody><tr><td class=\"gwt-MenuItem\" onClick=\"runPipelineSelector( this )\" onMouseEnter=\"this.className='gwt-MenuItem gwt-MenuItem-selected'\" "
+ "onMouseLeave=\"this.className='gwt-MenuItem'\">Prepare the execution</td></tr><tr><td class=\"gwt-MenuItem\" onClick=\"runPipelineSelector( this )\" onMouseEnter=\"this"
+ ".className='gwt-MenuItem gwt-MenuItem-selected'\" onMouseLeave=\"this.className='gwt-MenuItem'\">Run</td></tr></tbody></table></div></div></div>");
out.println(
"<div id=\"stopActions\" class=\"custom-dropdown-popup\" style=\"visibility: hidden; overflow: visible; position: fixed;\" onLoad=\"repositionActions( this, document.getElementById( "
+ "'stop' ) )\" onMouseLeave=\"this.style='visibility: hidden; overflow: visible; position: fixed;'\"><div class=\"popupContent\"><div style=\"padding: 0;\" class=\"gwt-MenuBar "
+ "gwt-MenuBar-vertical\"><table><tbody><tr><td class=\"gwt-MenuItem\" onClick=\"stopPipelineSelector( this )\" onMouseEnter=\"this.className='gwt-MenuItem gwt-MenuItem-selected'\" "
+ "onMouseLeave=\"this.className='gwt-MenuItem'\">Stop pipeline</td></tr><tr><td class=\"gwt-MenuItem\" onClick=\"stopPipelineSelector( this )\" onMouseEnter=\"this"
+ ".className='gwt-MenuItem gwt-MenuItem-selected'\" onMouseLeave=\"this.className='gwt-MenuItem'\">Stop input processing</td></tr></tbody></table></div></div></div>");
out.println(messageDialog());
out.println("<table class=\"hop-table\" border=\"" + tableBorder + "\">");
out.print(
"<tr> <th class=\"cellTableHeader\">"
+ BaseMessages.getString(PKG, "GetStatusServlet.PipelineName")
+ CONST_TABLE_HEADER
+ BaseMessages.getString(PKG, "GetStatusServlet.ServerId")
+ CONST_TABLE_HEADER
+ BaseMessages.getString(PKG, "GetStatusServlet.Status")
+ CONST_TABLE_HEADER
+ BaseMessages.getString(PKG, "GetStatusServlet.StartDate")
+ CONST_TABLE_HEADER
+ BaseMessages.getString(PKG, "GetStatusServlet.LastLogTime")
+ "</th> </tr>");
Comparator<HopServerObjectEntry> pipelineComparator =
(o1, o2) -> {
IPipelineEngine<PipelineMeta> t1 = getPipelineMap().getPipeline(o1);
IPipelineEngine<PipelineMeta> t2 = getPipelineMap().getPipeline(o2);
Date d1 = t1.getExecutionStartDate();
Date d2 = t2.getExecutionStartDate();
// if both pipelines have last log date, desc sort by log date
if (d1 != null && d2 != null) {
int logDateCompare = d2.compareTo(d1);
if (logDateCompare != 0) {
return logDateCompare;
}
}
return o1.compareTo(o2);
};
Collections.sort(pipelineEntries, pipelineComparator);
boolean evenRow = true;
for (int i = 0; i < pipelineEntries.size(); i++) {
String name = pipelineEntries.get(i).getName();
String id = pipelineEntries.get(i).getId();
IPipelineEngine<PipelineMeta> pipeline =
getPipelineMap().getPipeline(pipelineEntries.get(i));
String statusDescription = pipeline.getStatusDescription();
String trClass =
evenRow ? "cellTableEvenRow" : "cellTableOddRow"; // alternating row color
String tdClass = evenRow ? "cellTableEvenRowCell" : "cellTableOddRowCell";
evenRow = !evenRow; // flip
out.print(
"<tr onMouseEnter=\"mouseEnterFunction( this, '"
+ trClass
+ "' )\" "
+ "onMouseLeave=\"mouseLeaveFunction( this, '"
+ trClass
+ "' )\" "
+ "onClick=\"clickFunction( this, '"
+ trClass
+ "' )\" "
+ "id=\"cellTableRow_"
+ i
+ "\" class=\""
+ trClass
+ "\">");
out.print(
CONST_TD_MOUSE_EVENT
+ tdClass
+ "' )\" "
+ "onMouseLeave=\"mouseLeaveFunction( this, '"
+ tdClass
+ "' )\" "
+ "onClick=\"clickFunction( this, '"
+ tdClass
+ "' )\" "
+ "id=\"cellTableFirstCell_"
+ i
+ "\" class=\"cellTableCell cellTableFirstColumn "
+ tdClass
+ "\">"
+ name
+ CONST_TD);
out.print(
CONST_TD_MOUSE_EVENT
+ tdClass
+ "' )\" "
+ "onMouseLeave=\"mouseLeaveFunction( this, '"
+ tdClass
+ "' )\" "
+ "onClick=\"clickFunction( this, '"
+ tdClass
+ "' )\" "
+ "id=\"cellTableCell_"
+ i
+ CONST_TABLE_CELL
+ tdClass
+ "\">"
+ id
+ CONST_TD);
out.print(
CONST_TD_MOUSE_EVENT
+ tdClass
+ "' )\" "
+ "onMouseLeave=\"mouseLeaveFunction( this, '"
+ tdClass
+ "' )\" "
+ "onClick=\"clickFunction( this, '"
+ tdClass
+ "' )\" "
+ "id=\"cellTableCellStatus_"
+ i
+ CONST_TABLE_CELL
+ tdClass
+ "\">"
+ statusDescription
+ CONST_TD);
String dateStr = XmlHandler.date2string(pipeline.getExecutionStartDate());
out.print(
CONST_TD_MOUSE_EVENT
+ tdClass
+ "' )\" "
+ "onMouseLeave=\"mouseLeaveFunction( this, '"
+ tdClass
+ "' )\" "
+ "onClick=\"clickFunction( this, '"
+ tdClass
+ "' )\" "
+ "id=\"cellTableCell_"
+ i
+ CONST_TABLE_CELL
+ tdClass
+ "\">"
+ (dateStr != null ? dateStr.substring(0, dateStr.indexOf(' ')) : "-")
+ CONST_TD);
out.print(
CONST_TD_MOUSE_EVENT
+ tdClass
+ "' )\" "
+ "onMouseLeave=\"mouseLeaveFunction( this, '"
+ tdClass
+ "' )\" "
+ "onClick=\"clickFunction( this, '"
+ tdClass
+ "' )\" "
+ "id=\"cellTableLastCell_"
+ i
+ "\" class=\"cellTableCell cellTableLastColumn "
+ tdClass
+ "\">"
+ (dateStr != null ? dateStr.substring(dateStr.indexOf(' ')) : "-")
+ CONST_TD);
out.print("</tr>");
}
out.print("</table></table>");
out.print(CONST_DIV); // end div
// Tooltips
String runJ = BaseMessages.getString(PKG, "HopServerStatusServlet.Run");
String stopJ = BaseMessages.getString(PKG, "HopServerStatusServlet.StopWorkflow");
String viewJ = BaseMessages.getString(PKG, "HopServerStatusServlet.ViewWorkflowDetails");
String removeJ = BaseMessages.getString(PKG, "HopServerStatusServlet.RemoveWorkflow");
out.println("<div class=\"row\" style=\"padding: 0px 30px 75px 0px;\">");
out.println(
"<"
+ htmlClass
+ " class=\"workspaceHeading\" style=\"padding: 0px 0px 0px 0px;\">Workflows</"
+ htmlClass
+ ">");
out.println(
"<table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td align=\"left\" width=\"100%\" style=\"vertical-align:middle;\">");
out.println(
"<table cellspacing=\"0\" cellpadding=\"0\" class=\"toolbar\" style=\"width: 100%; height: 26px; margin-bottom: 2px; border: 0;\">");
out.println("<tbody><tr>");
out.println("<td align=\"left\" style=\"vertical-align: middle; width: 100%\"></td>");
out.println(
"<td "
+ setupIconEnterLeaveJavascript("j-pause")
+ " align=\"left\" style=\"vertical-align: middle;\"><div style=\"padding: 2px;\" onClick=\"resumeFunction( this )\" class=\"toolbar-button toolbar-button-disabled\" id=\"j-pause\"><img "
+ "style=\"width: 22px; height: 22px\" src=\""
+ prefix
+ "/images/run.svg\" title=\""
+ runJ
+ CONST_DIV_CLOSE);
out.println(
"<td "
+ setupIconEnterLeaveJavascript("j-stop")
+ " align=\"left\" style=\"vertical-align: middle;\"><div style=\"padding: 2px;\" onClick=\"stopFunction( this )\" class=\"toolbar-button toolbar-button-disabled\" id=\"j-stop\"><img "
+ "style=\"width: 22px; height: 22px\"src=\""
+ prefix
+ "/images/stop.svg\" title=\""
+ stopJ
+ CONST_DIV_CLOSE);
out.println(
"<td "
+ setupIconEnterLeaveJavascript("j-view")
+ " align=\"left\" style=\"vertical-align: middle;\"><div style=\"padding: 2px;\" onClick=\"viewFunction( this )\" class=\"toolbar-button toolbar-button-disabled\" id=\"j-view\"><img "
+ "style=\"width: 22px; height: 22px\" src=\""
+ prefix
+ "/images/view.svg\" title=\""
+ viewJ
+ CONST_DIV_CLOSE);
out.println(
"<td "
+ setupIconEnterLeaveJavascript("j-close")
+ " align=\"left\" style=\"vertical-align: middle;\"><div style=\"padding: 2px; margin-right: 10px;\" onClick=\"removeFunction( this )\" class=\"toolbar-button toolbar-button-disabled\" "
+ "id=\"j-close\"><img style=\"width: 22px; height: 22px\" src=\""
+ prefix
+ "/images/close.svg\" title=\""
+ removeJ
+ CONST_DIV_CLOSE);
out.println("</tr></tbody></table>");
out.println("<table class=\"hop-table\" border=\"" + tableBorder + "\">");
out.print(
"<tr> <th class=\"cellTableHeader\">"
+ BaseMessages.getString(PKG, "GetStatusServlet.WorkflowName")
+ CONST_TABLE_HEADER
+ BaseMessages.getString(PKG, "GetStatusServlet.ServerId")
+ CONST_TABLE_HEADER
+ BaseMessages.getString(PKG, "GetStatusServlet.Status")
+ CONST_TABLE_HEADER
+ BaseMessages.getString(PKG, "GetStatusServlet.StartDate")
+ CONST_TABLE_HEADER
+ BaseMessages.getString(PKG, "GetStatusServlet.LastLogTime")
+ "</th> </tr>");
Comparator<HopServerObjectEntry> jobComparator =
(o1, o2) -> {
IWorkflowEngine<WorkflowMeta> t1 = getWorkflowMap().getWorkflow(o1);
IWorkflowEngine<WorkflowMeta> t2 = getWorkflowMap().getWorkflow(o2);
Date d1 = t1.getExecutionStartDate();
Date d2 = t2.getExecutionStartDate();
// if both workflows have last log date, desc sort by log date
if (d1 != null && d2 != null) {
int logDateCompare = d2.compareTo(d1);
if (logDateCompare != 0) {
return logDateCompare;
}
}
return o1.compareTo(o2);
};
Collections.sort(actions, jobComparator);
evenRow = true;
for (int i = 0; i < actions.size(); i++) {
String name = actions.get(i).getName();
String id = actions.get(i).getId();
IWorkflowEngine<WorkflowMeta> workflow = getWorkflowMap().getWorkflow(actions.get(i));
String status = workflow.getStatusDescription();
String trClass =
evenRow ? "cellTableEvenRow" : "cellTableOddRow"; // alternating row color
String tdClass = evenRow ? "cellTableEvenRowCell" : "cellTableOddRowCell";
evenRow = !evenRow; // flip
out.print(
"<tr onMouseEnter=\"mouseEnterFunction( this, '"
+ trClass
+ "' )\" "
+ "onMouseLeave=\"mouseLeaveFunction( this, '"
+ trClass
+ "' )\" "
+ "onClick=\"clickFunction( this, '"
+ trClass
+ "' )\" "
+ "id=\"j-cellTableRow_"
+ i
+ CONST_TABLE_CELL
+ trClass
+ "\">");
out.print(
CONST_TD_MOUSE_EVENT
+ tdClass
+ "' )\" "
+ "onMouseLeave=\"mouseLeaveFunction( this, '"
+ tdClass
+ "' )\" "
+ "onClick=\"clickFunction( this, '"
+ tdClass
+ "' )\" "
+ "id=\"j-cellTableFirstCell_"
+ i
+ "\" class=\"cellTableCell cellTableFirstColumn "
+ tdClass
+ "\">"
+ name
+ "</a></td>");
out.print(
CONST_TD_MOUSE_EVENT
+ tdClass
+ "' )\" "
+ "onMouseLeave=\"mouseLeaveFunction( this, '"
+ tdClass
+ "' )\" "
+ "onClick=\"clickFunction( this, '"
+ tdClass
+ "' )\" "
+ "id=\"j-cellTableCell_"
+ i
+ CONST_TABLE_CELL
+ tdClass
+ "\">"
+ id
+ CONST_TD);
out.print(
CONST_TD_MOUSE_EVENT
+ tdClass
+ "' )\" "
+ "onMouseLeave=\"mouseLeaveFunction( this, '"
+ tdClass
+ "' )\" "
+ "onClick=\"clickFunction( this, '"
+ tdClass
+ "' )\" "
+ "id=\"j-cellTableCell_"
+ i
+ CONST_TABLE_CELL
+ tdClass
+ "\">"
+ status
+ CONST_TD);
String dateStr = XmlHandler.date2string(workflow.getExecutionStartDate());
out.print(
CONST_TD_MOUSE_EVENT
+ tdClass
+ "' )\" "
+ "onMouseLeave=\"mouseLeaveFunction( this, '"
+ tdClass
+ "' )\" "
+ "onClick=\"clickFunction( this, '"
+ tdClass
+ "' )\" "
+ "id=\"j-cellTableCell_"
+ i
+ CONST_TABLE_CELL
+ tdClass
+ "\">"
+ (dateStr != null ? dateStr.substring(0, dateStr.indexOf(' ')) : "-")
+ CONST_TD);
out.print(
CONST_TD_MOUSE_EVENT
+ tdClass
+ "' )\" "
+ "onMouseLeave=\"mouseLeaveFunction( this, '"
+ tdClass
+ "' )\" "
+ "onClick=\"clickFunction( this, '"
+ tdClass
+ "' )\" "
+ "id=\"j-cellTableLastCell_"
+ i
+ "\" class=\"cellTableCell cellTableLastColumn "
+ tdClass
+ "\">"
+ (dateStr != null ? dateStr.substring(dateStr.indexOf(' ')) : "-")
+ CONST_TD);
out.print("</tr>");
}
out.print("</table></table>");
out.print(CONST_DIV); // end div
} catch (Exception ex) {
out.println("<pre>");
ex.printStackTrace(out);
out.println("</pre>");
}
out.println("<div class=\"row\" style=\"padding: 0px 0px 30px 0px;\">");
htmlClass = useLightTheme ? "h3" : "div";
out.println(
"<div><"
+ htmlClass
+ " class=\"workspaceHeading\">"
+ BaseMessages.getString(PKG, "GetStatusServlet.ConfigurationDetails.Title")
+ "</"
+ htmlClass
+ "></div>");
out.println("<table border=\"" + tableBorder + "\">");
// The max number of log lines in the back-end
//
HopServerConfig serverConfig = getPipelineMap().getHopServerConfig();
if (serverConfig != null) {
String maxLines = "";
if (serverConfig.getMaxLogLines() == 0) {
maxLines = BaseMessages.getString(PKG, CONST_NO_LIMIT);
} else {
maxLines =
serverConfig.getMaxLogLines() + BaseMessages.getString(PKG, "GetStatusServlet.Lines");
}
out.print(
CONST_TABLE_ROW
+ BaseMessages.getString(PKG, "GetStatusServlet.Parameter.MaxLogLines")
+ CONST_END_TABLE_DATA_AND_OPEN
+ maxLines
+ CONST_END_TABLE_ROW);
// The max age of log lines
//
String maxAge = "";
if (serverConfig.getMaxLogTimeoutMinutes() == 0) {
maxAge = BaseMessages.getString(PKG, CONST_NO_LIMIT);
} else {
maxAge =
serverConfig.getMaxLogTimeoutMinutes()
+ BaseMessages.getString(PKG, "GetStatusServlet.Minutes");
}
out.print(
CONST_TABLE_ROW
+ BaseMessages.getString(PKG, "GetStatusServlet.Parameter.MaxLogLinesAge")
+ CONST_END_TABLE_DATA_AND_OPEN
+ maxAge
+ CONST_END_TABLE_ROW);
// The max age of stale objects
//
String maxObjAge = "";
if (serverConfig.getObjectTimeoutMinutes() == 0) {
maxObjAge = BaseMessages.getString(PKG, CONST_NO_LIMIT);
} else {
maxObjAge =
serverConfig.getObjectTimeoutMinutes()
+ BaseMessages.getString(PKG, "GetStatusServlet.Minutes");
}
out.print(
CONST_TABLE_ROW
+ BaseMessages.getString(PKG, "GetStatusServlet.Parameter.MaxObjectsAge")
+ CONST_END_TABLE_DATA_AND_OPEN
+ maxObjAge
+ CONST_END_TABLE_ROW);
out.print("</table>");
String filename = serverConfig.getFilename();
if (filename == null) {
filename =
BaseMessages.getString(PKG, "GetStatusServlet.ConfigurationDetails.UsingDefaults");
}
out.println(CONST_DIV); // end div
out.print("<div class=\"row\">");
out.println(
"<i>"
+ BaseMessages.getString(
PKG, "GetStatusServlet.ConfigurationDetails.Advice", filename)
+ "</i>");
out.print(CONST_DIV);
out.print(CONST_DIV);
out.print(CONST_DIV);
}
out.println("<script type=\"text/javascript\">");
out.println("if (!String.prototype.endsWith) {");
out.println(" String.prototype.endsWith = function(suffix) {");
out.println(" return this.indexOf(suffix, this.length - suffix.length) !== -1;");
out.println(" };");
out.println(CONST_CLOSE_BRACKET);
out.println("if (!String.prototype.startsWith) {");
out.println(" String.prototype.startsWith = function(searchString, position) {");
out.println(" position = position || 0;");
out.println(" return this.indexOf(searchString, position) === position;");
out.println(" };");
out.println(CONST_CLOSE_BRACKET);
out.println("var selectedPipelineRowIndex = -1;"); // currently selected table item
out.println("var selectedWorkflowRowIndex = -1;"); // currently selected table item
out.println("var removeElement = null;"); // element of remove button clicked
out.println("var selectedPipelineName = \"\";");
out.println("var selectedWorkflowName = \"\";");
// Click function for stop button
out.println("function repositionActions( element, elementFrom ) {");
out.println("element.style.left = ( 10 + elementFrom.getBoundingClientRect().left ) + 'px';");
out.println(CONST_CLOSE_BRACKET);
// Click function for resume button
out.println("function resumeFunction( element ) {");
out.println(CONST_BUTTON_DISABLED);
out.println(CONST_ELEMENT_STARTS_WITH);
out.println(
setupAjaxCall(
setupWorkflowURI(convertContextPath(StartWorkflowServlet.CONTEXT_PATH)),
BaseMessages.getString(PKG, "GetStatusServlet.StartWorkflow.Title"),
CONST_SINGLE_QUOTE
+ BaseMessages.getString(PKG, CONST_WORKFLOW_LABEL)
+ CONST_SELECTED_WORKFLOW
+ BaseMessages.getString(PKG, "GetStatusServlet.StartWorkflow.Success.Body")
+ CONST_SINGLE_QUOTE,
CONST_SINGLE_QUOTE
+ BaseMessages.getString(PKG, CONST_WORKFLOW_LABEL)
+ CONST_SELECTED_WORKFLOW
+ BaseMessages.getString(PKG, "GetStatusServlet.StartWorkflow.Failure.Body")
+ CONST_SINGLE_QUOTE));
out.println(
"} else if ( !element.id.startsWith( 'j-' ) && selectedPipelineRowIndex != -1 && document.getElementById( 'cellTableCellStatus_' + selectedPipelineRowIndex ).innerHTML == 'Running') {");
out.println(
setupAjaxCall(
setupPipelineURI(convertContextPath(PausePipelineServlet.CONTEXT_PATH)),
BaseMessages.getString(PKG, "GetStatusServlet.PausePipeline.Title"),
CONST_SINGLE_QUOTE
+ BaseMessages.getString(PKG, CONST_PIPELINE_LABEL)
+ CONST_SELECTED_PIPELINE
+ BaseMessages.getString(PKG, "GetStatusServlet.PausePipeline.Success.Body")
+ CONST_SINGLE_QUOTE,
CONST_SINGLE_QUOTE
+ BaseMessages.getString(PKG, CONST_PIPELINE_LABEL)
+ CONST_SELECTED_PIPELINE
+ BaseMessages.getString(PKG, "GetStatusServlet.PausePipeline.Failure.Body")
+ CONST_SINGLE_QUOTE));
out.println(
"} else if( !element.id.startsWith( 'j-' ) && selectedPipelineRowIndex != -1 && document.getElementById( 'cellTableCellStatus_' + selectedPipelineRowIndex ).innerHTML == 'Paused') {");
out.println(
setupAjaxCall(
setupPipelineURI(convertContextPath(PausePipelineServlet.CONTEXT_PATH)),
BaseMessages.getString(PKG, "GetStatusServlet.ResumePipeline.Title"),
CONST_SINGLE_QUOTE
+ BaseMessages.getString(PKG, CONST_PIPELINE_LABEL)
+ CONST_SELECTED_PIPELINE
+ BaseMessages.getString(PKG, "GetStatusServlet.ResumePipeline.Success.Body")
+ CONST_SINGLE_QUOTE,
CONST_SINGLE_QUOTE
+ BaseMessages.getString(PKG, CONST_PIPELINE_LABEL)
+ CONST_SELECTED_PIPELINE
+ BaseMessages.getString(PKG, "GetStatusServlet.ResumePipeline.Failure.Body")
+ CONST_SINGLE_QUOTE));
out.println("} else if( !element.id.startsWith( 'j-' ) && selectedPipelineRowIndex != -1 ){");
out.println("repositionActions( document.getElementById( 'runActions' ), element );");
out.println("document.getElementById( 'runActions' ).style.visibility = 'visible';");
out.println(CONST_CLOSE_BRACKET);
out.println(CONST_CLOSE_BRACKET);
out.println(CONST_CLOSE_BRACKET);
// Click function for stop button
out.println("function stopFunction( element ) {");
out.println(CONST_BUTTON_DISABLED);
out.println(CONST_ELEMENT_STARTS_WITH);
out.println(
setupAjaxCall(
setupWorkflowURI(convertContextPath(StopWorkflowServlet.CONTEXT_PATH)),
BaseMessages.getString(PKG, "GetStatusServlet.StopWorkflow.Title"),
CONST_SINGLE_QUOTE
+ BaseMessages.getString(PKG, "GetStatusServlet.StopWorkflow.Success.Body1")
+ " "
+ BaseMessages.getString(PKG, CONST_WORKFLOW_LABEL)
+ CONST_SELECTED_WORKFLOW
+ BaseMessages.getString(PKG, "GetStatusServlet.StopWorkflow.Success.Body2")
+ CONST_SINGLE_QUOTE,
CONST_SINGLE_QUOTE
+ BaseMessages.getString(PKG, CONST_WORKFLOW_LABEL)
+ CONST_SELECTED_WORKFLOW
+ BaseMessages.getString(PKG, "GetStatusServlet.StopWorkflow.Failure.Body")
+ CONST_SINGLE_QUOTE));
out.println(
"} else if ( !element.id.startsWith( 'j-' ) && selectedPipelineRowIndex != -1 ) {");
out.println("repositionActions( document.getElementById( 'stopActions' ), element );");
out.println("document.getElementById( 'stopActions' ).style.visibility = 'visible';");
out.println(CONST_CLOSE_BRACKET);
out.println(CONST_CLOSE_BRACKET);
out.println(CONST_CLOSE_BRACKET);
out.println("function runPipelineSelector( element ) {");
out.println("if( element.innerHTML == 'Prepare the execution' ){");
out.println(
setupAjaxCall(
setupPipelineURI(convertContextPath(PrepareExecutionPipelineServlet.CONTEXT_PATH)),
BaseMessages.getString(PKG, "GetStatusServlet.PreparePipeline.Title"),
CONST_SINGLE_QUOTE
+ BaseMessages.getString(PKG, CONST_PIPELINE_LABEL)
+ CONST_SELECTED_PIPELINE
+ BaseMessages.getString(PKG, "GetStatusServlet.PreparePipeline.Success.Body")
+ CONST_SINGLE_QUOTE,
CONST_SINGLE_QUOTE
+ BaseMessages.getString(PKG, CONST_PIPELINE_LABEL)
+ CONST_SELECTED_PIPELINE
+ BaseMessages.getString(PKG, "GetStatusServlet.PreparePipeline.Failure.Body")
+ CONST_SINGLE_QUOTE));
out.println(CONST_ELSE);
out.println(
setupAjaxCall(
setupPipelineURI(convertContextPath(StartPipelineServlet.CONTEXT_PATH)),
BaseMessages.getString(PKG, "GetStatusServlet.StartPipeline.Title"),
CONST_SINGLE_QUOTE
+ BaseMessages.getString(PKG, CONST_PIPELINE_LABEL)
+ CONST_SELECTED_PIPELINE
+ BaseMessages.getString(PKG, "GetStatusServlet.StartPipeline.Success.Body")
+ CONST_SINGLE_QUOTE,
CONST_SINGLE_QUOTE
+ BaseMessages.getString(PKG, CONST_PIPELINE_LABEL)
+ CONST_SELECTED_PIPELINE
+ BaseMessages.getString(PKG, "GetStatusServlet.StartPipeline.Failure.Body")
+ CONST_SINGLE_QUOTE));
out.println(CONST_CLOSE_BRACKET);
out.println(CONST_CLOSE_BRACKET);
// Click function for stop button
out.println("function stopPipelineSelector( element ) {");
out.println("if( element.innerHTML == 'Stop pipeline' ) {");
out.println(
setupAjaxCall(
setupPipelineURI(convertContextPath(StopPipelineServlet.CONTEXT_PATH)),
BaseMessages.getString(PKG, "GetStatusServlet.StopPipeline.Title"),
CONST_SINGLE_QUOTE
+ BaseMessages.getString(PKG, "GetStatusServlet.PipelineStop.Success.Body1")
+ " "
+ BaseMessages.getString(PKG, CONST_PIPELINE_LABEL)
+ CONST_SELECTED_PIPELINE
+ BaseMessages.getString(PKG, "GetStatusServlet.PipelineStop.Success.Body2")
+ CONST_SINGLE_QUOTE,
CONST_SINGLE_QUOTE
+ BaseMessages.getString(PKG, CONST_PIPELINE_LABEL)
+ CONST_SELECTED_PIPELINE
+ BaseMessages.getString(PKG, "GetStatusServlet.StopPipeline.Failure.Body")
+ CONST_SINGLE_QUOTE));
out.println("} else if( element.innerHTML == 'Stop input processing' ) {");
out.println(
setupAjaxCall(
setupPipelineURI(convertContextPath(StopPipelineServlet.CONTEXT_PATH))
+ " + '&inputOnly=Y'",
BaseMessages.getString(PKG, "GetStatusServlet.StopInputPipeline.Title"),
CONST_SINGLE_QUOTE
+ BaseMessages.getString(PKG, "GetStatusServlet.StopInputPipeline.Success.Body1")
+ " "
+ BaseMessages.getString(PKG, CONST_PIPELINE_LABEL)
+ CONST_SELECTED_PIPELINE
+ BaseMessages.getString(PKG, "GetStatusServlet.StopInputPipeline.Success.Body2")
+ CONST_SINGLE_QUOTE,
CONST_SINGLE_QUOTE
+ BaseMessages.getString(PKG, CONST_PIPELINE_LABEL)
+ CONST_SELECTED_PIPELINE
+ BaseMessages.getString(PKG, "GetStatusServlet.StopInputPipeline.Failure.Body")
+ CONST_SINGLE_QUOTE));
out.println(CONST_CLOSE_BRACKET);
out.println("document.getElementById( 'stopActions' ).style.visibility = 'hidden';");
out.println(CONST_CLOSE_BRACKET);
// Click function for view button
out.println("function viewFunction( element ) {");
out.println(CONST_BUTTON_DISABLED);
out.println(CONST_ELEMENT_STARTS_WITH);
out.println(
"window.location.replace( '"
+ convertContextPath(GetWorkflowStatusServlet.CONTEXT_PATH)
+ CONST_SINGLE_QUOTE
+ " + '?name=' + document.getElementById( 'j-cellTableFirstCell_' + selectedWorkflowRowIndex ).innerHTML"
+ " + '&id=' + document.getElementById( 'j-cellTableCell_' + selectedWorkflowRowIndex ).innerHTML );");
out.println(CONST_SELECTED_PIPELINE_ROW);
out.println(
"window.location.replace( '"
+ convertContextPath(GetPipelineStatusServlet.CONTEXT_PATH)
+ CONST_SINGLE_QUOTE
+ " + '?name=' + document.getElementById( 'cellTableFirstCell_' + selectedPipelineRowIndex ).innerHTML"
+ " + '&id=' + document.getElementById( 'cellTableCell_' + selectedPipelineRowIndex ).innerHTML );");
out.println(CONST_CLOSE_BRACKET);
out.println(CONST_CLOSE_BRACKET);
out.println(CONST_CLOSE_BRACKET);
// Click function for remove button
out.println("function removeFunction( element ) {");
out.println(CONST_BUTTON_DISABLED);
out.println("removeElement = element;");
out.println(CONST_ELEMENT_STARTS_WITH);
out.println(
"openMessageDialog( '"
+ BaseMessages.getString(PKG, "GetStatusServlet.RemoveWorkflow.Title")
+ "',"
+ CONST_SINGLE_QUOTE
+ BaseMessages.getString(PKG, "GetStatusServlet.RemoveWorkflow.Confirm.Body")
+ " "
+ BaseMessages.getString(PKG, CONST_WORKFLOW_LABEL)
+ " ' + selectedWorkflowName + '?"
+ CONST_SINGLE_QUOTE
+ ", false );");
out.println(CONST_SELECTED_PIPELINE_ROW);
out.println(
"openMessageDialog( '"
+ BaseMessages.getString(PKG, "GetStatusServlet.RemovePipeline.Title")
+ "',"
+ CONST_SINGLE_QUOTE
+ BaseMessages.getString(PKG, "GetStatusServlet.RemovePipeline.Confirm.Body")
+ " "
+ BaseMessages.getString(PKG, CONST_PIPELINE_LABEL)
+ " ' + selectedPipelineName + '?"
+ CONST_SINGLE_QUOTE
+ ", false );");
out.println(CONST_CLOSE_BRACKET);
out.println(CONST_CLOSE_BRACKET);
out.println(CONST_CLOSE_BRACKET);
// OnClick function for table element
out.println("function clickFunction( element, tableClass ) {");
out.println("var prefix = element.id.startsWith( 'j-' ) ? 'j-' : '';");
out.println(CONST_VAR_ROWNUM);
out.println(CONST_END_WITH_ROW);
out.println("element.className='cellTableRow ' + tableClass + ' cellTableSelectedRow';");
out.println(CONST_ELSE);
out.println(
"document.getElementById( prefix + 'cellTableFirstCell_' + rowNum ).className='cellTableCell cellTableFirstColumn ' + tableClass + ' cellTableSelectedRowCell';");
out.println("element.className='cellTableCell ' + tableClass + ' cellTableSelectedRowCell';");
out.println(CONST_CLOSE_BRACKET);
out.println(CONST_ELEMENT_STARTS_WITH2);
out.println(
"document.getElementById( \"j-pause\" ).classList.remove( \"toolbar-button-disabled\" )");
out.println(
"document.getElementById( \"j-stop\" ).classList.remove( \"toolbar-button-disabled\" )");
out.println(
"document.getElementById( \"j-view\" ).classList.remove( \"toolbar-button-disabled\" )");
out.println(
"document.getElementById( \"j-close\" ).classList.remove( \"toolbar-button-disabled\" )");
out.println("if( selectedWorkflowRowIndex != -1 && rowNum != selectedWorkflowRowIndex ) {");
out.println(
"document.getElementById( prefix + 'cellTableRow_' + selectedWorkflowRowIndex ).className='cellTableRow ' + tableClass;");
out.println(
"document.getElementById( prefix + 'cellTableFirstCell_' + selectedWorkflowRowIndex ).className='cellTableCell cellTableFirstColumn ' + tableClass;");
out.println(
"document.getElementById( prefix + 'cellTableCell_' + selectedWorkflowRowIndex ).className='cellTableCell ' + tableClass;");
out.println(
"document.getElementById( prefix + 'cellTableLastCell_' + selectedWorkflowRowIndex ).className='cellTableCell cellTableLastColumn ' + tableClass;");
out.println(CONST_CLOSE_BRACKET);
out.println("selectedWorkflowRowIndex = rowNum;");
out.println(CONST_ELSE);
out.println(
"document.getElementById( \"pause\" ).classList.remove( \"toolbar-button-disabled\" )");
out.println(
"document.getElementById( \"stop\" ).classList.remove( \"toolbar-button-disabled\" )");
out.println(
"document.getElementById( \"cleanup\" ).classList.remove( \"toolbar-button-disabled\" )");
out.println(
"document.getElementById( \"view\" ).classList.remove( \"toolbar-button-disabled\" )");
out.println(
"document.getElementById( \"close\" ).classList.remove( \"toolbar-button-disabled\" )");
out.println("if( selectedPipelineRowIndex != -1 && rowNum != selectedPipelineRowIndex ) {");
out.println(
"document.getElementById( prefix + 'cellTableRow_' + selectedPipelineRowIndex ).className='cellTableRow ' + tableClass;");
out.println(
"document.getElementById( prefix + 'cellTableFirstCell_' + selectedPipelineRowIndex ).className='cellTableCell cellTableFirstColumn ' + tableClass;");
out.println(
"document.getElementById( prefix + 'cellTableCell_' + selectedPipelineRowIndex ).className='cellTableCell ' + tableClass;");
out.println(
"document.getElementById( prefix + 'cellTableLastCell_' + selectedPipelineRowIndex ).className='cellTableCell cellTableLastColumn ' + tableClass;");
out.println(CONST_CLOSE_BRACKET);
out.println("selectedPipelineRowIndex = rowNum;");
out.println(
"if( document.getElementById( 'cellTableCellStatus_' + selectedPipelineRowIndex ).innerHTML == 'Running' ) {");
out.println(
"document.getElementById( 'pause' ).innerHTML = '<img style=\"width: 22px; height: 22px\" src=\""
+ prefix
+ "/images/pause.svg\"/ title=\"Pause pipeline\">';");
out.println(
"} else if( document.getElementById( 'cellTableCellStatus_' + selectedPipelineRowIndex ).innerHTML == 'Paused' ) {");
out.println(
"document.getElementById( 'pause' ).innerHTML = '<img style=\"width: 22px; height: 22px\" src=\""
+ prefix
+ "/images/pause.svg\" title=\"Resume pipeline\"/>';");
out.println(CONST_CLOSE_BRACKET);
out.println(CONST_CLOSE_BRACKET);
out.println("setSelectedNames();");
out.println(CONST_CLOSE_BRACKET);
// Function to set the pipeline or workflow name of the selected pipeline or workflow
out.println("function setSelectedNames() {");
out.println(" selectedWorkflowName = selectedPipelineName = \"\";");
out.println(
" var selectedElementNames = document.getElementsByClassName( \"cellTableFirstColumn cellTableSelectedRowCell\" );");
out.println(" if( selectedElementNames ) {");
out.println(" for(var i = 0; i < selectedElementNames.length; i++) {");
out.println(" if(selectedElementNames[i].id.startsWith(\"j-\")) {");
out.println(" selectedWorkflowName = selectedElementNames[i].innerHTML;");
out.println(" } else {");
out.println(" selectedPipelineName = selectedElementNames[i].innerHTML;");
out.println(" }");
out.println(" }");
out.println(" }");
out.println(CONST_CLOSE_BRACKET);
// OnMouseEnter function
out.println("function mouseEnterFunction( element, tableClass ) {");
out.println("var prefix = '';");
out.println(CONST_VAR_ROWNUM);
out.println("var selectedIndex = selectedPipelineRowIndex;");
out.println(CONST_ELEMENT_STARTS_WITH2);
out.println("prefix = 'j-';");
out.println("selectedIndex = selectedWorkflowRowIndex;");
out.println(CONST_CLOSE_BRACKET);
out.println("if( rowNum != selectedIndex ) {");
out.println(CONST_END_WITH_ROW);
out.println("element.className='cellTableRow ' + tableClass + ' cellTableHoveredRow';");
out.println(CONST_ELSE);
out.println(
"document.getElementById( prefix + 'cellTableFirstCell_' + element.id.charAt( element.id.length - 1 ) ).className='cellTableCell cellTableFirstColumn ' + tableClass + ' "
+ "cellTableHoveredRowCell';");
out.println(
"document.getElementById( prefix + 'cellTableCell_' + element.id.charAt( element.id.length - 1 ) ).className='cellTableCell ' + tableClass + ' cellTableHoveredRowCell';");
out.println(
"document.getElementById( prefix + 'cellTableLastCell_' + element.id.charAt( element.id.length - 1 ) ).className='cellTableCell cellTableLastColumn ' + tableClass + ' "
+ "cellTableHoveredRowCell';");
out.println(CONST_CLOSE_BRACKET);
out.println(CONST_CLOSE_BRACKET);
out.println(CONST_CLOSE_BRACKET);
// OnMouseLeave function
out.println("function mouseLeaveFunction( element, tableClass ) {");
out.println("var prefix = '';");
out.println(CONST_VAR_ROWNUM);
out.println("var selectedIndex = selectedPipelineRowIndex;");
out.println(CONST_ELEMENT_STARTS_WITH2);
out.println("prefix = 'j-';");
out.println("selectedIndex = selectedWorkflowRowIndex;");
out.println(CONST_CLOSE_BRACKET);
out.println("if( rowNum != selectedIndex ) {");
out.println(CONST_END_WITH_ROW);
out.println("element.className='cellTableRow ' + tableClass;");
out.println(CONST_ELSE);
out.println(
"document.getElementById( prefix + 'cellTableFirstCell_' + element.id.charAt( element.id.length - 1 ) ).className='cellTableCell cellTableFirstColumn ' + tableClass;");
out.println(
"document.getElementById( prefix + 'cellTableCell_' + element.id.charAt( element.id.length - 1 ) ).className='cellTableCell ' + tableClass;");
out.println(
"document.getElementById( prefix + 'cellTableLastCell_' + element.id.charAt( element.id.length - 1 ) ).className='cellTableCell cellTableLastColumn ' + tableClass;");
out.println(CONST_CLOSE_BRACKET);
out.println(CONST_CLOSE_BRACKET);
out.println(CONST_CLOSE_BRACKET);
// Onclick function for closing message dialog-->make it hidden
out.println("function closeMessageDialog( refresh ) {");
out.println(
" document.getElementById( \"messageDialogBackdrop\" ).style.visibility = 'hidden';");
out.println(" document.getElementById( \"messageDialog\" ).style.visibility = 'hidden';");
out.println(" if( refresh ) {");
out.println(" window.location.reload();");
out.println(" }");
out.println(CONST_CLOSE_BRACKET);
// Function to open the message dialog--> make it visible
out.println("function openMessageDialog( title, body, single ) {");
out.println(
" document.getElementById( \"messageDialogBackdrop\" ).style.visibility = 'visible';");
out.println(" document.getElementById( \"messageDialog\" ).style.visibility = 'visible';");
out.println(" document.getElementById( \"messageDialogTitle\" ).innerHTML = title;");
out.println(" document.getElementById( \"messageDialogBody\" ).innerHTML = body;");
out.println(" if( single ) {");
out.println(" document.getElementById( \"singleButton\" ).style.display = 'block';");
out.println(" document.getElementById( \"doubleButton\" ).style.display = 'none';");
out.println(" } else {");
out.println(" document.getElementById( \"singleButton\" ).style.display = 'none';");
out.println(" document.getElementById( \"doubleButton\" ).style.display = 'block';");
out.println(" }");
out.println(CONST_CLOSE_BRACKET);
// Function to remove selected pipeline/workflow after user confirms
out.println("function removeSelection() {");
out.println(" if( removeElement !== null ) {");
out.println(
" if( removeElement.id.startsWith( 'j-' ) && selectedWorkflowRowIndex != -1 ) {");
out.println(
setupAjaxCall(
setupWorkflowURI(convertContextPath(RemoveWorkflowServlet.CONTEXT_PATH)),
BaseMessages.getString(PKG, "GetStatusServlet.RemoveWorkflow.Title"),
CONST_SINGLE_QUOTE
+ BaseMessages.getString(PKG, CONST_WORKFLOW_LABEL)
+ CONST_SELECTED_WORKFLOW
+ BaseMessages.getString(PKG, "GetStatusServlet.RemoveWorkflow.Success.Body")
+ CONST_SINGLE_QUOTE,
CONST_SINGLE_QUOTE
+ BaseMessages.getString(PKG, CONST_WORKFLOW_LABEL)
+ CONST_SELECTED_WORKFLOW
+ BaseMessages.getString(PKG, "GetStatusServlet.RemoveWorkflow.Failure.Body")
+ CONST_SINGLE_QUOTE));
out.println(CONST_SELECTED_PIPELINE_ROW);
out.println(
setupAjaxCall(
setupPipelineURI(convertContextPath(RemovePipelineServlet.CONTEXT_PATH)),
BaseMessages.getString(PKG, "GetStatusServlet.RemovePipeline.Title"),
CONST_SINGLE_QUOTE
+ BaseMessages.getString(PKG, CONST_PIPELINE_LABEL)
+ CONST_SELECTED_PIPELINE
+ BaseMessages.getString(PKG, "GetStatusServlet.RemovePipeline.Success.Body")
+ CONST_SINGLE_QUOTE,
CONST_SINGLE_QUOTE
+ BaseMessages.getString(PKG, CONST_PIPELINE_LABEL)
+ CONST_SELECTED_PIPELINE
+ BaseMessages.getString(PKG, "GetStatusServlet.RemovePipeline.Failure.Body")
+ CONST_SINGLE_QUOTE));
out.println(" }");
out.println(" }");
out.println(CONST_CLOSE_BRACKET);
out.println("function getRowNum( id ) {");
out.println(" return id.substring( id.indexOf('_') + 1, id.length);");
out.println(CONST_CLOSE_BRACKET);
out.println("</script>");
out.println("</BODY>");
out.println("</HTML>");
}
}