Browse Source

更新构建结果的数据显示

reghao 1 year ago
parent
commit
636e422618

+ 6 - 1
web/src/main/java/cn/reghao/devops/web/mgr/app/controller/page/BuildDeployPageController.java

@@ -13,6 +13,7 @@ import cn.reghao.devops.web.mgr.app.service.bd.BuildApp;
 import cn.reghao.devops.web.util.DefaultSetting;
 import cn.reghao.devops.web.util.PageSort;
 import cn.reghao.devops.common.util.NotAvailable;
+import cn.reghao.devops.web.util.StringUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -95,15 +96,19 @@ public class BuildDeployPageController {
     @GetMapping("/build/result")
     public String buildLogResultPage(@RequestParam("buildLogId") String buildLogId, Model model) {
         List<String> list = new ArrayList<>();
+        String content;
         if (NotAvailable.na.getDesc().equals(buildLogId)) {
+            content = "构建结果暂不可用";
             list.add("构建结果暂不可用");
         } else {
             String msg = appBuildQuery.getBuildResult(buildLogId);
+            content = msg;
             list = Arrays.stream(msg.split(System.lineSeparator()))
                     .collect(Collectors.toList());
         }
 
-        model.addAttribute("list", list);
+        String html = StringUtil.txtToHtml(content);
+        model.addAttribute("content", html);
         return "/devops/app/bd/log/buildresult";
     }
 

+ 2 - 48
web/src/main/java/cn/reghao/devops/web/mgr/builds/service/impl/CompilerConfigServiceImpl.java

@@ -7,6 +7,7 @@ import cn.reghao.devops.web.mgr.app.model.po.config.AppConfig;
 import cn.reghao.devops.web.mgr.builds.model.po.CompilerConfig;
 import cn.reghao.devops.web.mgr.build.chain.BuildTools;
 import cn.reghao.devops.web.mgr.builds.service.CompilerConfigService;
+import cn.reghao.devops.web.util.StringUtil;
 import cn.reghao.jutil.jdk.result.Result;
 import cn.reghao.jutil.jdk.result.ResultStatus;
 import cn.reghao.jutil.jdk.shell.ShellExecutor;
@@ -97,54 +98,7 @@ public class CompilerConfigServiceImpl implements CompilerConfigService {
 
         String versionCmd = compilerConfig.getVersionCmd();
         ShellResult shellResult = shellExecutor.exec(versionCmd.split("\\s+"));
-        String html = txtToHtml(shellResult.getResult());
+        String html = StringUtil.txtToHtml(shellResult.getResult());
         return html;
     }
-
-    private String txtToHtml(String s) {
-        StringBuilder builder = new StringBuilder();
-        boolean previousWasASpace = false;
-        for (char c : s.toCharArray()) {
-            if (c == ' ') {
-                if (previousWasASpace) {
-                    builder.append("&nbsp;");
-                    previousWasASpace = false;
-                    continue;
-                }
-                previousWasASpace = true;
-            } else {
-                previousWasASpace = false;
-            }
-            switch (c) {
-                case '<':
-                    builder.append("&lt;");
-                    break;
-                case '>':
-                    builder.append("&gt;");
-                    break;
-                case '&':
-                    builder.append("&amp;");
-                    break;
-                case '"':
-                    builder.append("&quot;");
-                    break;
-                case '\n':
-                    builder.append("<br>");
-                    break;
-                // We need Tab support here, because we print StackTraces as HTML
-                case '\t':
-                    builder.append("&nbsp; &nbsp; &nbsp;");
-                    break;
-                default:
-                    builder.append(c);
-
-            }
-        }
-        String converted = builder.toString();
-        String str = "(?i)\\b((?:https?://|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}/)(?:[^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(?:\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:\'\".,<>?«»“”‘’]))";
-        Pattern patt = Pattern.compile(str);
-        Matcher matcher = patt.matcher(converted);
-        converted = matcher.replaceAll("<a href=\"$1\">$1</a>");
-        return converted;
-    }
 }

+ 57 - 0
web/src/main/java/cn/reghao/devops/web/util/StringUtil.java

@@ -0,0 +1,57 @@
+package cn.reghao.devops.web.util;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * @author reghao
+ * @date 2024-08-07 10:39:38
+ */
+public class StringUtil {
+    public static String txtToHtml(String s) {
+        StringBuilder builder = new StringBuilder();
+        boolean previousWasASpace = false;
+        for (char c : s.toCharArray()) {
+            if (c == ' ') {
+                if (previousWasASpace) {
+                    builder.append("&nbsp;");
+                    previousWasASpace = false;
+                    continue;
+                }
+                previousWasASpace = true;
+            } else {
+                previousWasASpace = false;
+            }
+            switch (c) {
+                case '<':
+                    builder.append("&lt;");
+                    break;
+                case '>':
+                    builder.append("&gt;");
+                    break;
+                case '&':
+                    builder.append("&amp;");
+                    break;
+                case '"':
+                    builder.append("&quot;");
+                    break;
+                case '\n':
+                    builder.append("<br>");
+                    break;
+                // We need Tab support here, because we print StackTraces as HTML
+                case '\t':
+                    builder.append("&nbsp; &nbsp; &nbsp;");
+                    break;
+                default:
+                    builder.append(c);
+
+            }
+        }
+        String converted = builder.toString();
+        String str = "(?i)\\b((?:https?://|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}/)(?:[^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(?:\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:\'\".,<>?«»“”‘’]))";
+        Pattern patt = Pattern.compile(str);
+        Matcher matcher = patt.matcher(converted);
+        converted = matcher.replaceAll("<a href=\"$1\">$1</a>");
+        return converted;
+    }
+}

+ 22 - 14
web/src/main/resources/templates/devops/app/bd/log/buildresult.html

@@ -1,21 +1,29 @@
 <!DOCTYPE html>
 <html xmlns:th="http://www.thymeleaf.org">
 <head th:replace="/common/template :: header(~{::title},~{::link},~{::style})">
+    <style>
+        .page-error {
+            display: -webkit-box;
+            display: -ms-flexbox;
+            display: flex;
+            -webkit-box-align: center;
+            -ms-flex-align: center;
+            align-items: center;
+            -webkit-box-pack: center;
+            -ms-flex-pack: center;
+            justify-content: center;
+            -webkit-box-orient: vertical;
+            -webkit-box-direction: normal;
+            -ms-flex-direction: column;
+            flex-direction: column;
+            min-height: calc(100vh - 110px);
+            margin-bottom: 0;
+        }
+    </style>
 </head>
 <body class="timo-layout-page">
-<table class="layui-table timo-detail-table">
-    <thead>
-    <tr>
-        <th class="sortable" data-field="changeType">行号</th>
-        <th class="sortable" data-field="oldFilePath">内容</th>
-    </tr>
-    </thead>
-    <tbody>
-    <tr th:each="item,stat:${list}">
-        <td th:text="${stat.index}">行号</td>
-        <td th:text="${item}">内容</td>
-    </tr>
-    </tbody>
-</table>
+<div class="layui-table timo-detail-table" style="color: #009688">
+    <div style="font-size: 16px" th:utext="${content}"></div>
+</div>
 </body>
 </html>