Browse Source

尝试解决idea卡顿问题

insomniaLee 6 năm trước cách đây
mục cha
commit
3d3574f1ca

+ 59 - 15
src/main/java/com/mooctest/controller/HistoryController.java

@@ -86,25 +86,14 @@ public class HistoryController {
 		JSONObject result = new JSONObject(); // 用来存放树状结构信息的reuslt;
 		List<String> treeRootids = hisservice.getTreeRoots(caseId+"-"+examId); // 获得所有的根结点的id
 		TaskDTO task = taskService.getByExamIdAndCaseId(examId, caseId); //  infomation of task
-		List<List<String>> list = new ArrayList<List<String>>();
-		for(String id: treeRootids) {
-			list.add(hisservice.getDetail(id));
-		} // 获得树的信息。
+//		List<List<String>> list = new ArrayList<List<String>>();
+//		for(String id: treeRootids) {
+//			list.add(hisservice.getDetail(id));
+//		} // 获得树的信息。
 		//获得每份报告的具体信息
-
         //history 报告对应的report列表列
         Map<String , List<String >> tree2BugIdsMap = hisservice.getTree2BugIdsMap(treeRootids);
         Map<String, BugDTO> bugsMap = bugReportService.getAllBugsMap(examId, caseId); //得到所有bug的对应map
-
-//		List<List<String>> lists = hisservice.getDepth(treeRootids.get(0));
-//		Set<String> filter = hisservice.filter(lists);
-//		result.put("path", new JSONArray(lists));
-//		result.put("invalid", new JSONArray(hisservice.getInvalid(filter)));
-//		List<String> ids = new ArrayList<String>(filter);
-//		result.put("score", new JSONArray(aservice.getScores(ids)));
-//		System.out.println("/getPath path = " + result);
-//		System.out.println("result.toString() = " + result.toString());
-
 		model.addAttribute("tree2BugIdsMap", tree2BugIdsMap); //
 		model.addAttribute("bugMap", bugsMap); //
 		model.addAttribute("examId", examId);
@@ -121,6 +110,61 @@ public class HistoryController {
 	    return "managerCheck";
     }
 
+    @GetMapping(value = "/report")
+    public String showAggrReport(@RequestParam("treeId") String treeId,
+                                 @RequestParam("examId") long examId,
+                                 @RequestParam("caseId") long caseId,
+                                 @RequestParam(value = "finalReportId", required = false) Long finalReportId,
+                                 Model model) {
+        Map<String, BugDTO> bugMap = bugReportService.getAllBugsMap(examId, caseId);
+        BugDTO masterReport = bugMap.get(treeId);  // 从bugmap中取得主报告的信息
+		List<String> treeRootids = hisservice.getTreeRoots(caseId+"-"+examId); // 获得所有的根结点的id
+//		Map<String,List<String>> root2ReportIds = hisservice.getTree2BugIdsMap()
+
+
+//        List<BugDTO> bugs = new LinkedList<>();
+//        supplements.forEach(supplementDTO -> bugs.addAll(supplementDTO.getBugs()));
+//        List<BugDTO> sourceReports = bugs.stream().distinct().collect(Collectors.toList());
+//        Map<String, Long> categoryCounts = sourceReports.stream().collect(Collectors.groupingBy(BugDTO::getBugCategory, Collectors.counting()));
+//        Map<String, Long> pageCounts =  sourceReports.stream().collect(Collectors.groupingBy(BugDTO::getBug_page,Collectors.counting()));
+//        Map<String, Long> recurrentCounts = sourceReports.stream()
+//                .map(BugDTO::getRecurrent)
+//                .map((recurrentNum) -> ReportUtil.recurrent2String.get(recurrentNum))
+//                .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
+//        Map<String, Long> severityCounts = sourceReports.stream()
+//                .map(BugDTO::getSeverity)
+//                .map((severityNum) -> ReportUtil.severity2String.get(severityNum))
+//                .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
+//
+//        List<FinalReportDTO> finalReports = finalReportService.getBySourceId(masterId);
+//
+//        model.addAttribute("wordList", getWordCloudList(sourceReports));
+//        model.addAttribute("categoryCounts", categoryCounts);
+//        model.addAttribute("severityCounts", severityCounts);
+//        model.addAttribute("pageCounts",pageCounts);
+//        model.addAttribute("recurrentCounts",recurrentCounts);
+//        model.addAttribute("aggReportId", "ML-AG-" + masterId.substring(10));
+//        model.addAttribute("masterReport", masterReport);
+//        model.addAttribute("createTime", new Date(Long.parseLong(masterReport.getCreateTimeMillis())));
+//        model.addAttribute("supplements", supplements);
+//        model.addAttribute("finalReports", finalReports);
+//        model.addAttribute("category2String", ReportUtil.category2String);
+//        model.addAttribute("recurrent2String", ReportUtil.recurrent2String);
+//        model.addAttribute("severity2String", ReportUtil.severity2String);
+//        model.addAttribute("examId", examId);
+//        model.addAttribute("caseId", caseId);
+//
+//        boolean bugReviewed = bugReviewService.isBugReviewed(masterId);
+//        model.addAttribute("reviewed", bugReviewed);
+//        if (finalReportId != null) {
+//            Optional<FinalReportDTO> finalReportDTO = finalReports.stream().filter(finalReport -> finalReport.getId()==finalReportId).findFirst();
+//            model.addAttribute("finalReportId", finalReportId);
+//            model.addAttribute("editReport", finalReportDTO.get());
+//
+//        }
+        return "agg_report_new";
+    }
+
 
 	//获取所有形成树状结构的bug根节点
 //	case_take_id=1281-2724&start=0&count=10&page=null&identity=0&report_id=5cbc1a9f825a8960cdc7bd4f&worker_id=22383

+ 0 - 2
src/main/java/com/mooctest/controller/ReportController.java

@@ -69,9 +69,7 @@ public class ReportController {
                                  Model model) {
         Map<String, BugDTO> bugMap = bugReportService.getAllBugsMap(examId, caseId);
         BugDTO masterReport = bugMap.get(masterId);
-
         List<SupplementDTO> supplements = supplementService.getSupplementByMasterId(masterId, bugMap);
-
         List<BugDTO> bugs = new LinkedList<>();
         supplements.forEach(supplementDTO -> bugs.addAll(supplementDTO.getBugs()));
         List<BugDTO> sourceReports = bugs.stream().distinct().collect(Collectors.toList());

+ 5 - 0
src/main/java/com/mooctest/dao3/BugHistoryDao.java

@@ -40,6 +40,11 @@ public class BugHistoryDao {
 		List<BugHistory> res = mongoOps.find(query,BugHistory.class);
 		return res;
 	}
+
+
+	public List<String> findSingleRootReports(){
+		return null;
+	}
 	
 	//查找所有指定的根
 	public List<String> findRoots(List<String> lists) {

+ 632 - 0
src/main/resources/templates/tree_report_new.html

@@ -0,0 +1,632 @@
+<!DOCTYPE html>
+<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org"
+      xmlns:layout="http://www.ultraq.net.nz/web/thymeleaf/layout"
+      layout:decorator="main">
+<head>
+    <link rel="stylesheet" type="text/css" href="/static/css/main.css"/>
+    <link rel="stylesheet" type="text/css" href="/static/css/agg_report_new.css"/>
+    <link rel="stylesheet" type="text/css" href="/static/css/word_cloud.css"/>
+</head>
+<body>
+<th:block layout:fragment="sidebar">
+
+    <li>
+        <a th:href="'/final_reports?examId=' + ${examId} + '&amp;caseId=' + ${caseId}">
+            <i class="fa fa-calendar-check-o"></i>
+            <span>预交付报告</span>
+        </a>
+    </li>
+    <li class="treeview">
+        <a href="#">
+            <i class="fa fa-list"></i>
+            <span>Reports</span>
+            <span class="pull-right-container">
+			<i class="fa fa-angle-left pull-right"></i>
+		</span>
+        </a>
+        <ul class="treeview-menu" style="display: block;">
+            <li>
+                <a th:href="'/task_detail?examId='+${examId}+'&amp;caseId='+${caseId}">
+                    <i class="fa fa-sticky-note text-success"></i>
+                    <span>默认视图</span>
+                </a>
+            </li>
+            <li>
+                <a th:href="'/agg_report_list?examId='+${examId}+'&amp;caseId='+${caseId}">
+                    <i class="fa fa-sitemap text-warning"></i>
+                    <span>聚合视图</span>
+                </a>
+            </li>
+
+
+        </ul>
+    </li>
+</th:block>
+<th:block layout:fragment="maincontent">
+
+    <section class="content-header">
+        <h1>融合报告详情
+            <small th:text="${aggReportId}"></small>
+        </h1>
+        <!-- <h1>Summary for report 0-5</h1> -->
+        <!-- <small style="font-style: italic;">at 50% report-level and 25% supplementary level</small> -->
+
+        <ol class="breadcrumb">
+            <!-- style="margin-right: 173px;" -->
+            <li>
+                <a href="/home">
+                    <i class="fa fa-dashboard"></i>
+                    全部任务
+                </a>
+            </li>
+            <li>
+                <a th:href="'/agg_report_list?examId='+${examId}+'&amp;caseId='+${caseId}">
+                    审核列表
+                </a>
+            </li>
+            <li class="active" th:text="${aggReportId}">
+
+            </li>
+        </ol>
+    </section>
+    <section class="content container-fluid">
+        <div style="overflow: auto;" class="row">
+            <div class="col-md-8" id="summary">
+                <div class="box box-info detail-table">
+                    <div class="box-header with-border" style="padding: 4px;">
+                        <i class="fa fa-object-group" style="color: #00c0ef;"></i>
+                        <h3 class="box-title" th:text="${aggReportId}">
+
+                        </h3>
+                        <button  class="btn-xs btn-primary pull-right" id="create_bug" style="margin-left: 5px;display: none" onclick="showCreateBlock()" >
+                            创建缺陷报告
+                        </button>
+                        <button class="btn-xs btn-primary pull-right" id="review_confirm" th:unless="${reviewed}" onclick="reviewConfirm()">确认审核</button>
+
+                        <span th:if="${reviewed}" class="pull-right label label-success">
+                            <span class="glyphicon glyphicon-ok"></span>
+                            已审核
+                        </span>
+                    </div>
+                    <table class="table table-reponsive">
+                        <tbody>
+                        <tr>
+                            <td class="attr-title">创建时间&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
+                            <td class="dup-create-time" th:text="${#dates.format(createTime, 'yyyy-MM-dd')}"></td>
+                            <td class="attr-title">Bug 严重性</td>
+                            <td class="dup-severity">
+                                <span th:each="severityCount : ${severityCounts}" >
+                                    <span th:text="${severityCount.key}"></span>
+                                    <span class="badge" th:text="${severityCount.value}"></span>
+                                </span>
+                                <span th:if="${severityCounts.size()}==0">
+                                    该报告没有补充报告
+                                </span>
+                            </td>
+                        </tr>
+
+                        <tr>
+                            <td class="attr-title">Bug分类&nbsp;&nbsp;&nbsp;&nbsp;</td>
+                            <td class="dup-category" colspan="3">
+                                <!--<i class="fa fa-square" style="color: {{ category.category_color  }};"></i>-->
+                                <span th:each="categoryCount : ${categoryCounts}">
+                                    <span th:text="${categoryCount.key}"></span>
+                                    <span class="badge" th:text="${categoryCount.value}"></span>
+                                </span>
+                                <span th:if="${categoryCounts.size()}==0">
+                                    该报告没有补充报告
+                                </span>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td class="attr-title">三级页面&nbsp;&nbsp;&nbsp;&nbsp;</td>
+                            <td class="dup-category" colspan="3">
+
+                                <!--<i class="fa fa-square" style="color: {{ category.category_color  }};"></i>-->
+                                <span th:each="pageCount : ${pageCounts}">
+                                    <span th:text="${pageCount.key}"></span>
+                                    <span class="badge" th:text="${pageCount.value}"></span>
+                                </span>
+                                <span th:if="${pageCounts.size()}==0">
+                                    该报告没有补充报告
+                                </span>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td class="attr-title">复现程度&nbsp;&nbsp;&nbsp;&nbsp;</td>
+                            <td class="dup-category" colspan="3">
+
+                                <!--<i class="fa fa-square" style="color: {{ category.category_color  }};"></i>-->
+                                <span th:each="recurrentCount : ${recurrentCounts}">
+                                    <span th:text="${recurrentCount.key}"></span>
+                                    <span class="badge" th:text="${recurrentCount.value}"></span>
+                                </span>
+                                <span th:if="${recurrentCounts.size()}==0">
+                                    该报告没有补充报告
+                                </span>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td class="attr-title">审核人</td>
+                            <td class="dup-assignee" colspan="3">
+
+                                <a href="#" style="margin-right: 5px;">
+                                    <i class="fa fa-vcard"></i>
+                                    admin
+                                </a>
+
+
+                            </td>
+                        </tr><!-- Attribute -->
+
+                        <!-- Start Content -->
+                        <tr>
+                            <td class="attr-title">主要点<span class="glyphicon glyphicon-star"
+                                                            style="margin-left: 5px;"></span></td>
+                            <td class="dup-master" colspan="3">
+                                <span th:text="${masterReport.getDescription()}"></span><br/>
+                                <img class="my-img-thumbnail pointer to-add" th:src="${imgUrl}"
+                                     th:each="imgUrl,iterStat : ${masterReport.getImgUrls()}"
+                                     th:onclick="'javascript:showimage(\''+${imgUrl}+'\');'"/>
+
+                            </td>
+                        </tr>
+                        <tr>
+                            <td class="attr-title">补充点</td>
+                            <td class="dup-supplementary" colspan="3">
+                                <ul id="sup-list" class="list-group"
+                                    style="max-height: 450px; margin-bottom: 0px; overflow: scroll;">
+
+                                    <li class="list-group-item" style="padding: 3px 3px;"
+                                        th:each="supplement, iterStat : ${supplements}">
+
+                                        <p style="border-bottom: 1px solid #ddd; margin: 0 0 1px;">
+                                            <b><a href="#" th:text="'补充点 ' + ${iterStat.count}"> </a></b>
+                                            <a th:href="'#sup-' + ${iterStat.count}"
+                                               class="glyphicon glyphicon-menu-hamburger pull-right sup-collapse"
+                                               data-toggle="collapse" style="color: #000;"></a>
+                                        </p>
+                                        <div class="sup-title">
+                                            <!-- 如果有文字,则仅显示top 1的diff_sentence,并且不展示图片 -->
+
+                                            <span th:if="${supplement.hasTxt}"
+                                                  th:text="'...' + ${supplement.topTxt} + '...'"></span>
+
+                                            <img th:if="${!supplement.hasTxt}" class="my-img-thumbnail pointer to-add"
+                                                 th:src="${imgUrl}" th:each="imgUrl,iterStat : ${supplement.top3Img}"
+                                                 th:onclick="'javascript:showimage(\''+${imgUrl}+'\');'"/>
+
+
+                                        </div>
+                                        <div th:id="'sup-' + ${iterStat.count}" class="collapse">
+                                            <ul class="list-group" style="margin-bottom: 0px;">
+                                                <li class="list-group-item" style="padding: 3px 3px;"
+                                                    th:each="report : ${supplement.bugs}">
+                                                <span class="glyphicon glyphicon-file"
+                                                      style="color: #3c8dbc; margin-right: 5px;"></span>
+                                                    <a href="#" style="margin-right: 5px;" th:text="${report.id}"></a>
+                                                    <!--查看树状报告-->
+                                                    <span class="glyphicon glyphicon-tree-conifer"
+                                                          style="color: #07b309; margin-right: 5px;" >
+                                                    </span>
+
+                                                    <!-- de scription -->
+
+                                                    <th:block th:each="sent, iterStat : ${report.taggedSentences}">
+                                                        <span th:if="${sent.isDiff()}" th:text="${sent.sentence}"
+                                                              style="color: red; font-weight: bold;"></span>
+                                                        <span th:unless="${sent.isDiff()}"
+                                                              th:text="${sent.sentence}"></span>
+                                                    </th:block>
+
+                                                    <br/>
+
+                                                    <!-- imgs -->
+                                                    <th:block th:each="img, iterStat : ${report.taggedImgs}">
+
+                                                        <img class="my-img-thumbnail pointer to-add"
+                                                             th:style="${img.isDiff()? 'border: 2px solid red;' : ''}"
+                                                             th:src="${img.imgUrl}"
+                                                             th:onclick="'javascript:showimage(\''+${img.imgUrl}+'\');'"/>
+
+                                                    </th:block>
+                                                </li>
+                                            </ul>
+                                        </div>
+                                    </li>
+
+
+                                </ul>
+                            </td>
+                        </tr>
+                        </tbody>
+                    </table>
+                </div>
+
+            </div>
+
+            <div class="col-md-4 pull-right" >
+                <!--<div id="my_favorite_latin_words" class="box box-info" style="margin-bottom: 5px; min-height: 182px;"></div>-->
+
+                <div th:fragment="create_reports" class="box box-danger source-table" id="new-report-create-block" style="display: none">
+                    <div class="box-header" style="border-bottom: 1px #f4f4f4 solid;">
+                        <h3 class="box-title">
+                            编辑报告
+                        </h3>
+                        <button class="btn-xs btn-primary pull-right" style="margin-left: 5px"
+                                onclick="createOrUpdateFinalReport()">保存
+                        </button>
+                        <button class="btn-xs btn-primary pull-right" onclick="hideCreateBlock()">取消</button>
+                    </div>
+                    <div id="new-report" class="box-body"
+                         style="font-size: 12px; max-height: 340px; overflow: scroll;">
+                        <form role="form">
+
+                            <!-- select -->
+                            <div class="form-group">
+                                <label>Bug 复现程度</label>
+                                <select id="recurrent" name="recurrent" class="form-control">
+                                    <option th:each="mapItem : ${recurrent2String}"
+                                            th:value="${mapItem.key}" th:text="${mapItem.value}">必现</option>
+
+                                </select>
+                            </div>
+                            <!-- select -->
+                            <div class="form-group">
+                                <label>Bug 严重性</label>
+                                <select id="severity" name="severity" class="form-control">
+                                    <option th:each="mapItem : ${severity2String}"
+                                            th:value="${mapItem.key}" th:text="${mapItem.value}">必现</option>
+                                </select>
+                            </div>
+
+                            <!-- select -->
+                            <div class="form-group">
+                                <label>Bug 分类</label>
+                                <select id="category" class="form-control">
+                                    <option th:each="mapItem : ${category2String}"
+                                            th:value="${mapItem.key}" th:text="${mapItem.value}">必现</option>
+                                </select>
+                            </div>
+
+                            <!-- textarea -->
+                            <div class="form-group">
+                                <label>Bug 描述</label>
+                                <textarea id="bug-description" name="description" class="form-control" rows="3"
+                                          placeholder="Enter ..."></textarea>
+                            </div>
+                            <div class="form-group">
+                                <label>Bug 截图</label>
+                                <div id="new-report-img"></div>
+                            </div>
+
+                        </form>
+
+                    </div>
+                </div>
+
+
+                <div class="box box-info source-table" id="new-report-list-block" >
+                    <div class="box-header">
+                        <h3 class="box-title">
+                            已创建报告
+
+                        </h3>
+                    </div>
+                    <div th:fragment="ul_reports" id="new-created-reports-panel">
+                        <div  id="new-created-reports" class="box-body"
+                              style="font-size: 12px; max-height: 340px; overflow: scroll;">
+                            <div th:if="${finalReports.size() == 0}" style="font-size: 20px">
+                                暂无 <a onclick="showCreateBlock()" style="cursor: pointer">立即创建报告</a>
+                            </div>
+                            <ul class="list-group">
+
+                                <!-- other reports -->
+                                <th:block th:each="finalReport : ${finalReports}">
+                                    <li class="list-group-item">
+                                        <div style="overflow: auto;">
+                                            <span th:text="${finalReport.id}"></span>
+                                            <span class="pull-right">
+                                            <a href="#" th:onclick="'editReport('+${finalReport.id}+')'" >编辑</a>
+                                            <a href="#" th:onclick="'deleteReport('+ ${finalReport.id} +')'">删除</a>
+                                        </span>
+                                        </div>
+
+                                        <div>
+                                        <span>
+                                            复现程度:<span th:text="${recurrent2String.get(finalReport.recurrent)}"></span>
+                                        </span>
+                                            <span class="pull-right">
+                                            分类:<span th:text="${category2String.get(finalReport.category)}"></span>
+                                        </span>
+                                        </div>
+                                        <div>
+                                            严重程度:<span th:text="${severity2String.get(finalReport.severity)}"></span>
+                                        </div>
+                                        <br/>
+                                        <span th:text="${finalReport.description}"></span>
+                                        <br/>
+                                        <img class="my-img-thumbnail pointer to-add" th:src="${imgUrl}"
+                                             th:each="imgUrl,iterStat : ${finalReport.getImgUrls()}"
+                                             th:onclick="'javascript:showimage(\''+${imgUrl}+'\');'"/>
+                                    </li>
+
+                                </th:block>
+
+                            </ul>
+                        </div>
+
+                    </div>
+                </div>
+
+            </div>
+        </div>
+
+        <div style="overflow: auto;" class="row tree-container">
+            <div class="col-md-8 tree-wrapper">
+
+                <div class="box box-info pull-left svg-div" style="background-color: rgb(247, 247, 247); ">
+                    <h4 style="padding-left: 10px;" class="pull-left">聚合图</h4>
+                    <svg class="graph" id="tree" width="100%" height="420" viewBox="0 0 700 350">
+                        <g transform="translate(10,20)" id="tree-g">
+                            <g class="links"></g>
+                            <g class="nodes"></g>
+                        </g>
+                    </svg>
+
+                </div>
+            </div>
+            <div class="col-md-4">
+
+                <div class="detail-div"
+                     style="height: 459px; max-height: 459px; font-size: 10px; overflow: scroll;">
+
+                </div>
+            </div>
+        </div>
+
+
+    </section>
+</th:block>
+
+
+</body>
+</html>
+
+
+<div class="modal fade bs-example-modal-lg text-center" id="imgModal" tabindex="-1" role="dialog"
+     aria-labelledby="myLargeModalLabel">
+
+    <div class="modal-dialog modal-lg" style="display: inline-block; max-width: 900px; max-height: 600px">
+        <div class="modal-content" style="background:  transparent">
+            <center>
+                <img id="imgInModalID"
+                     class="carousel-inner img-responsive "
+                     onclick="closeImageViewer()"
+                     onmouseover="this.style.cursor='pointer';this.style.cursor='hand'"
+                     onmouseout="this.style.cursor='default'"
+                     style="max-height: 90vh;
+                     max-width: 90vw;
+                     object-fit: contain;"
+                />
+            </center>
+        </div>
+    </div>
+</div>
+<script type="text/javascript">
+    //显示大图
+    function showimage(source) {
+        $("#imgModal").find("#imgInModalID").attr("src", source);
+        $("#imgModal").modal();
+    }
+
+    //关闭
+    function closeImageViewer() {
+        $("#imgModal").modal('hide');
+    }
+</script>
+<script src="https://d3js.org/d3.v4.min.js"></script>
+<script type="text/javascript" src="/static/js/agg_report_new.js"></script>
+<script type="text/javascript" src="/static/js/jqcloud-1.0.4.min.js"></script>
+<!--<script type="text/javascript" src="/static/js/partload.js"></script>-->
+<script type="text/javascript" xmlns:th="http://www.thymeleaf.org" th:inline="javascript">
+    /*<![CDATA[*/
+
+    var word_list = /*[[${wordList}]]*/;  //源代码如此
+    var urlParams = new URLSearchParams(window.location.search);
+    var masterId = urlParams.get('masterId');
+    var examId = urlParams.get('examId');
+    var caseId = urlParams.get('caseId');
+    var finalReportId = urlParams.get('finalReportId');
+    /*]]>*/
+    word_list = JSON.parse(word_list)
+
+    var images = [];
+    $(function () {
+        // $("#my_favorite_latin_words").jQCloud(word_list,
+        //     {
+        //         shape: "rectangular",
+        //         autoResize: true
+        //     });
+        //去除掉报告详情界面的词云
+        var urlParams = new URLSearchParams(window.location.search);
+        if (urlParams.get("finalReportId")) {
+            showCreateBlock()
+            /*<![CDATA[*/
+            var editReport = /*[[${editReport}]]*/;
+            /*]]>*/
+            fillNewReportBlock(editReport);
+        }
+        if(finalReportId == null){
+            $('#create_bug').css('display','block');
+        }
+    });
+
+    function createOrUpdateFinalReport() {
+
+        var report = {
+            'description': $("#bug-description").val(),
+            'severity': $("#severity").val(),
+            'recurrent': $("#recurrent").val(),
+            'category': $("#category").val(),
+            'sourceId': masterId,
+            'reviewerId': 1,
+            'examId': examId,
+            'caseId': caseId,
+            'imgUrls': images
+        }
+        if (finalReportId) {
+            report.id = finalReportId
+            $.ajax({
+                type: "PUT",
+                url: '/final_report/'+finalReportId,
+                data: JSON.stringify(report),
+                contentType: "application/json",
+                success: function (data) {
+                    //修改成功的情况
+                    console.log("修改报告")
+                    loadPartReports();
+
+                    /*<![CDATA[*/
+                    // window.location.href='report?masterId='+masterId+'&examId='+examId+'&caseId='+caseId
+                    /*]]>*/
+                }
+            });
+        } else {
+            //  向服务器新建一个
+            $.ajax({
+                type: "POST",
+                url: '/final_report',
+                data: JSON.stringify(report),
+                contentType: "application/json",
+                success: function (data) {
+                    console.log("新建报告")
+                    // location.reload()
+                    loadPartReports();
+                }
+            });
+        }
+    }
+
+    function showCreateButton() {
+        $("#create_bug").show()
+
+    }
+
+    function loadPartReports() {
+        console.log("局部刷新")
+        /*<![CDATA[*/
+        $('#new-created-reports-panel').load("/created_reports?masterId="+ masterId +"&caseId="+ caseId +"&examId="+ examId );
+        //$('#new-report-create-block').load("/created_reports_form");
+        finalReportId = null
+
+        /*]]>*/
+        showCreateButton()
+        $("#new-report-create-block").hide()
+        $("#new-report-list-block").show()
+    }
+
+
+    // function  syncCreatedReports(){
+    //     syncCreatedReportsWithParams(masterId,examId,caseId);
+    // }
+
+
+    function showCreateBlock() {
+        // console.log("show create block")
+        $("#new-report-create-block").show()
+        // console.log("show create yse")
+        $("#new-report-list-block").hide()
+        console.log("show create three")
+
+    }
+    function hideCreateBlock() {
+        if (finalReportId){
+            h          /*<![CDATA[*/
+            // window.location.href='report?masterId='+masterId+'&examId='+examId+'&caseId='+caseId
+            // loadPartReports()
+            $("#create_bug").show()
+            $("#bug-description").text("")
+            finalReportId = null
+            /*]]>*/
+        }
+        $("#new-report-create-block").hide()
+        $("#new-report-list-block").show()
+
+    }
+
+
+
+    function fillNewReportBlock(editReport) {
+        console.log(editReport);
+        console.log("开始填充报告页面。")
+        $("#recurrent").val(editReport.recurrent);
+        $("#severity").val(editReport.severity);
+        $("#category").val(editReport.category);
+        $("#bug-description").val(editReport.description);
+        var $new_report_img = $("#new-report-img");
+        $new_report_img.empty()
+        images = [];
+        /*<![CDATA[*/
+        for (var i=0;editReport.imgUrls!=null&&i<editReport.imgUrls.length;i++) {
+            var src = editReport.imgUrls[i]
+            images.push(src);
+            var $img = $('<img />')
+            $img.attr("src", src);
+            $img.attr("class", "my-img-thumbnail pointer to-delete");
+            $img.on("click", function (){
+                showimage(src);
+            });
+            $img.on("dragend", function (e) {
+                var src = $(e.target).attr("src");
+                var idx = images.indexOf(src);
+                if (idx >= 0) {
+                    images.splice(idx, 1);
+                }
+
+                $(e.target).remove();
+            });
+            $new_report_img.append($img)
+        }
+        /*]]>*/
+    }
+    function deleteReport(finalReportId) {
+        $.ajax({
+            url: '/final_report/' + finalReportId,
+            type: 'DELETE',
+            success: function (result) {
+                // Do something with the result
+                alert("删除成功");
+                loadPartReports();
+            }
+        });
+    }
+
+    function editReport (finalId){
+        //填充编辑表单页面。
+        /*<![CDATA[*/
+        $.ajax({
+            url: '/editReportData?masterId='+masterId+'&finalReportId='+finalId,
+            type: 'GET',
+            success: function (result) {
+                console.log(result); //
+                finalReportId = finalId;
+                fillNewReportBlock(result)
+                showCreateBlock();
+            }
+        });
+        /*]]>*/
+
+    }
+
+    function reviewConfirm() {
+        $.ajax({
+            url: '/bug_review?masterId='+masterId,
+            type: 'PUT',
+            success: function (result) {
+                alert("确认审核成功,修改报告状态为已审核");
+                location.reload();
+            }
+        });
+    }
+</script>