d795595a85
Change-Id: I27892f39cb9908f1c4b5a45eb337a16be2103aec
159 lines
4.4 KiB
HTML
159 lines
4.4 KiB
HTML
<!--
|
|
Copyright (C) 2015 The Android Open Source Project
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
-->
|
|
|
|
<link rel="import" href="../bower_components/polymer/polymer.html">
|
|
<link rel="import" href="gr-ajax.html">
|
|
|
|
<dom-module id="gr-file-list">
|
|
<template>
|
|
<style>
|
|
:host {
|
|
display: block;
|
|
}
|
|
.tableContainer {
|
|
overflow-x: auto;
|
|
}
|
|
table {
|
|
border-collapse: collapse;
|
|
width: 100%;
|
|
}
|
|
table a {
|
|
display: block;
|
|
}
|
|
td {
|
|
padding: 2px 0;
|
|
white-space: nowrap;
|
|
}
|
|
th {
|
|
text-align: left;
|
|
}
|
|
.status {
|
|
width: 20px;
|
|
}
|
|
.drafts {
|
|
color: #C62828;
|
|
font-weight: bold;
|
|
}
|
|
</style>
|
|
<gr-ajax id="filesXHR"
|
|
url="[[_computeFilesURL(changeNum, patchNum)]]"
|
|
on-response="_handleResponse"></gr-ajax>
|
|
<gr-ajax id="draftsXHR"
|
|
url="[[_computeDraftsURL(changeNum, patchNum)]]"
|
|
last-response="{{_drafts}}"></gr-ajax>
|
|
</gr-ajax>
|
|
<div class="tableContainer">
|
|
<table>
|
|
<tr>
|
|
<th></th>
|
|
<th></th>
|
|
<th>Path</th>
|
|
<th>Comments</th>
|
|
<th>Stats</th>
|
|
</tr>
|
|
<template is="dom-repeat" items="{{files}}" as="file">
|
|
<tr>
|
|
<td></td>
|
|
<td class="status">[[file.status]]</td>
|
|
<td class="path">
|
|
<a class="file"
|
|
href$="[[_computeDiffURL(changeNum, patchNum, file.__path)]]">[[file.__path]]</a>
|
|
</td>
|
|
<td>
|
|
<span class="drafts">[[_computeDraftsString(_drafts, file.__path)]]</span>
|
|
<span class="comments">[[_computeCommentsString(comments, patchNum, file.__path)]]</span>
|
|
</td>
|
|
<td>
|
|
+<span>[[file.lines_inserted]]</span> lines,
|
|
-<span>[[file.lines_deleted]]</span> lines
|
|
</td>
|
|
</tr>
|
|
</template>
|
|
</table>
|
|
</div>
|
|
</template>
|
|
<script>
|
|
(function() {
|
|
'use strict';
|
|
|
|
Polymer({
|
|
is: 'gr-file-list',
|
|
|
|
properties: {
|
|
patchNum: String,
|
|
changeNum: String,
|
|
comments: Object,
|
|
|
|
_drafts: Object,
|
|
},
|
|
|
|
reload: function() {
|
|
if (!!this.changeNum && !!this.patchNum) {
|
|
this.$.filesXHR.generateRequest();
|
|
app.accountReady.then(function() {
|
|
if (!app.loggedIn) { return; }
|
|
this.$.draftsXHR.generateRequest();
|
|
}.bind(this));
|
|
}
|
|
},
|
|
|
|
_computeFilesURL: function(changeNum, patchNum) {
|
|
return Changes.baseURL(changeNum, patchNum) + '/files';
|
|
},
|
|
|
|
_computeCommentsString: function(comments, patchNum, path) {
|
|
var patchComments = (comments[path] || []).filter(function(c) {
|
|
return c.patch_set == patchNum;
|
|
});
|
|
var num = patchComments.length;
|
|
if (num == 0) { return ''; }
|
|
if (num == 1) { return '1 comment'; }
|
|
if (num > 1) { return num + ' comments'; };
|
|
},
|
|
|
|
_computeDraftsURL: function(changeNum, patchNum) {
|
|
return Changes.baseURL(changeNum, patchNum) + '/drafts';
|
|
},
|
|
|
|
_computeDraftsString: function(drafts, path) {
|
|
var num = (drafts[path] || []).length;
|
|
if (num == 0) { return ''; }
|
|
if (num == 1) { return '1 draft'; }
|
|
if (num > 1) { return num + ' drafts'; };
|
|
},
|
|
|
|
_handleResponse: function(e, req) {
|
|
var result = e.detail.response;
|
|
var paths = Object.keys(result).sort();
|
|
var files = [];
|
|
for (var i = 0; i < paths.length; i++) {
|
|
var info = result[paths[i]];
|
|
info.__path = paths[i];
|
|
info.lines_inserted = info.lines_inserted || 0;
|
|
info.lines_deleted = info.lines_deleted || 0;
|
|
files.push(info)
|
|
}
|
|
this.files = files;
|
|
},
|
|
|
|
_computeDiffURL: function(changeNum, patchNum, path) {
|
|
return '/c/' + changeNum + '/' + patchNum + '/' + path;
|
|
},
|
|
});
|
|
})();
|
|
</script>
|
|
</dom-module>
|