diff options
author | Young Gyu Park <younggyu@google.com> | 2018-07-06 11:03:54 +0900 |
---|---|---|
committer | Young Gyu Park <younggyu@google.com> | 2018-07-10 14:40:59 +0900 |
commit | 1a483b6bad4e9effd2eeb3ab691f2ccfb0611d43 (patch) | |
tree | db35679dd6a0cf4cc4ee79474ba019ff0546f56d /src/main/webapp | |
parent | d747ca6e4b4f1e59c0e098dd33669a36f28ce00b (diff) | |
download | dashboard-1a483b6bad4e9effd2eeb3ab691f2ccfb0611d43.tar.gz |
Code coverage recalculation
Test: go/vts-web-staging
Bug: 111187342
Change-Id: I21c89cfb323ad5d432b38fc11cfcf0b1e78acab5
Diffstat (limited to 'src/main/webapp')
-rw-r--r-- | src/main/webapp/WEB-INF/jsp/show_coverage.jsp | 146 | ||||
-rw-r--r-- | src/main/webapp/WEB-INF/web.xml | 10 | ||||
-rw-r--r-- | src/main/webapp/css/show_coverage.css | 15 |
3 files changed, 114 insertions, 57 deletions
diff --git a/src/main/webapp/WEB-INF/jsp/show_coverage.jsp b/src/main/webapp/WEB-INF/jsp/show_coverage.jsp index 6858c7b..ea163ae 100644 --- a/src/main/webapp/WEB-INF/jsp/show_coverage.jsp +++ b/src/main/webapp/WEB-INF/jsp/show_coverage.jsp @@ -20,10 +20,12 @@ <html> <%@ include file="header.jsp" %> <link rel="stylesheet" href="/css/show_coverage.css"> - <script src="https://apis.google.com/js/api.js" type="text/javascript"></script> + <script async defer src="https://apis.google.com/js/api.js" + onload="this.onload=function(){};handleClientLoad()" + onreadystatechange="if (this.readyState === 'complete') this.onload()"> + </script> <body> <script type="text/javascript"> - var coverageVectors = ${coverageVectors}; $(document).ready(function() { // Initialize AJAX for CORS $.ajaxSetup({ @@ -32,16 +34,57 @@ } }); - // Initialize auth2 client and scope for requests to Gerrit - gapi.load('auth2', function() { - var auth2 = gapi.auth2.init({ - client_id: ${clientId}, - scope: ${gerritScope} - }); - auth2.then(displayEntries); + $('.collapsible.popout').collapsible({ + accordion : true + }).find('.collapsible-header').click(onClick); + + + $("div.collapsible-header > span.indicator.waves-effect").click(function(evt) { + evt.preventDefault(); + + $("#loader-indicator").show(); + + var cmd = $(evt.target).text(); + var testRunId = $(evt.target).data("id"); + var postData = { coverageId: testRunId, testName: "${testName}", testRunId: "${startTime}", cmd: cmd}; + $.post("/api/coverage", postData, function() { + // success + console.log("success"); + var detachedLi = $(evt.target).parent().parent().detach(); + if (cmd == "enable") { + $(evt.target).text("disable"); + $(evt.target).parent().removeClass("grey"); + $('ul.collapsible.popout').prepend(detachedLi); + } else { + $(evt.target).text("enable"); + $(evt.target).parent().addClass("grey"); + $('ul.collapsible.popout').append(detachedLi); + } + }) + .done(function() { + // Done + $("#loader-indicator").fadeOut("slow"); + }) + .fail(function() { + alert( "Error occurred during changing the status" ); + }); }); }); + function handleClientLoad() { + // Load the API client and auth2 library + gapi.load('client:auth2', initClient); + } + + function initClient() { + gapi.client.init({ + client_id: ${clientId}, + scope: ${gerritScope} + }).then(function () { + // displayEntries(); + }); + } + /* Open a window to Gerrit so that user can login. Minimize the previously clicked entry. */ @@ -122,57 +165,46 @@ }); } } - - /* Appends a row to the display with test name and aggregated coverage - information. On expansion, source code is loaded with coverage - highlighted by calling 'onClick'. - */ - var displayEntries = function() { - var sourceFilenames = ${sourceFiles}; - var sectionMap = ${sectionMap}; - var gerritURI = ${gerritURI}; - var projects = ${projects}; - var commits = ${commits}; - var indicators = ${indicators}; - Object.keys(sectionMap).forEach(function(section) { - var indices = sectionMap[section]; - var html = String(); - indices.forEach(function(i) { - var url = gerritURI + '/projects/' + - encodeURIComponent(projects[i]) + '/commits/' + - encodeURIComponent(commits[i]) + '/files/' + - encodeURIComponent(sourceFilenames[i]) + - '/content'; - html += '<li url="' + url + '" index="' + i + '">' + - '<div class="collapsible-header">' + - '<i class="material-icons">library_books</i>' + - '<div class="truncate">' + - '<b>' + projects[i] + '/</b>' + - sourceFilenames[i] + - '</div>' + - indicators[i] + - '</div>'; - html += '<div class="collapsible-body row">' + - '<div class="html-container">' + - '<div class="table-container"></div>' + - '</div>' + - '</div>' + - '</li>'; - }); - if (html) { - html = '<h4 class="section-title"><b>Coverage:</b> ' + - section + '</h4><ul class="collapsible popout" ' + - 'data-collapsible="accordion">' + html + '</ul>'; - $('#coverage-container').append(html); - } - }); - $('.collapsible.popout').collapsible({ - accordion : true - }).find('.collapsible-header').click(onClick); - } </script> <div id='coverage-container' class='wide container'> + <h4 class="section-title"><b>Coverage:</b> </h4> + <ul class="collapsible popout" data-collapsible="accordion"> + <c:forEach var="coverageEntity" items="${coverageEntityList}" varStatus="loop"> + <li url="<c:url value="${coverageEntity.gerritUrl}"/>" data-index="${loop.index}"> + <div class="collapsible-header <c:out value='${coverageEntity.isIgnored ? "grey" : ""}'/>"> + <i class="material-icons">library_books</i> + <div class="truncate"><b>${coverageEntity.projectName}</b>${coverageEntity.filePath}</div> + <div class="right total-count">${coverageEntity.coveredCount}/${coverageEntity.totalCount}</div> + <div class="indicator ${coverageEntity.percentage >= 70 ? "green" : "red"}">${coverageEntity.percentage}%</div> + <c:if test="${isModerator}"> + <span data-id="${coverageEntity.ID}" class="indicator waves-effect blue lighten-1" style="margin-left: 5px;"><c:out value='${coverageEntity.isIgnored ? "enable" : "disable"}'/></span> + </c:if> + </div> + <div class="collapsible-body row"> + <div class="html-container"> + <div class="table-container"></div> + </div> + </div> + </li> + </c:forEach> + </ul> </div> + + <div id="loader-indicator" class="loader-background" style="display: none"> + <div class="preloader-wrapper big active"> + <div class="spinner-layer spinner-blue-only"> + <div class="circle-clipper left"> + <div class="circle"></div> + </div> + <div class="gap-patch"> + <div class="circle"></div> + </div> + <div class="circle-clipper right"> + <div class="circle"></div> + </div> + </div> + </div> + </div> <%@ include file="footer.jsp" %> </body> </html> diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index f5ff208..be4fb26 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -116,6 +116,11 @@ Copyright 2016 Google Inc. All Rights Reserved. </servlet> <servlet> + <servlet-name>coverage_api</servlet-name> + <servlet-class>com.android.vts.api.CoverageRestServlet</servlet-class> +</servlet> + +<servlet> <servlet-name>test_run_api</servlet-name> <servlet-class>com.android.vts.api.TestRunRestServlet</servlet-class> </servlet> @@ -261,6 +266,11 @@ Copyright 2016 Google Inc. All Rights Reserved. </servlet-mapping> <servlet-mapping> + <servlet-name>coverage_api</servlet-name> + <url-pattern>/api/coverage/*</url-pattern> +</servlet-mapping> + +<servlet-mapping> <servlet-name>test_run_api</servlet-name> <url-pattern>/api/test_run/*</url-pattern> </servlet-mapping> diff --git a/src/main/webapp/css/show_coverage.css b/src/main/webapp/css/show_coverage.css index ee6d7b4..7178ec3 100644 --- a/src/main/webapp/css/show_coverage.css +++ b/src/main/webapp/css/show_coverage.css @@ -100,3 +100,18 @@ td { margin-top: -25px; padding-left: 45px; } + +.loader-background { + display: flex; + align-items: center; + justify-content: center; + background-color: #000; + + position: fixed; + z-index: 100; + top: 0; + left: 0; + right: 0; + bottom: 0; + opacity: 0.5; +}
\ No newline at end of file |