Show file weblinks (e.g. gitles) in diff view
Bug: Issue 4205
Change-Id: Ib5c832bb29453aa51ebe73732c7b8e6885e7e12f
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.html b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.html
index 6ed6cf7..2573ad1 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.html
+++ b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.html
@@ -172,6 +172,7 @@
path="[[_path]]"
change-num="[[_changeNum]]"
patch-range="[[_patchRange]]"
+ files-weblinks="[[_filesWeblinks]]"
available-patches="[[_computeAvailablePatches(_change.revisions)]]">
</gr-patch-range-select>
<div>
@@ -199,10 +200,12 @@
on-save="_handlePrefsSave"
on-cancel="_handlePrefsCancel"></gr-diff-preferences>
</gr-overlay>
- <gr-diff id="diff"
+ <gr-diff
+ id="diff"
project="[[_change.project]]"
commit="[[_change.current_revision]]"
is-image-diff="{{_isImageDiff}}"
+ files-weblinks="{{_filesWeblinks}}"
change-num="[[_changeNum]]"
patch-range="[[_patchRange]]"
path="[[_path]]"
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.js b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.js
index f7a73cf..3c3536b 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.js
@@ -81,9 +81,10 @@
_userPrefs: Object,
_diffMode: {
type: String,
- computed: '_getDiffViewMode(changeViewState.diffMode, _userPrefs)'
+ computed: '_getDiffViewMode(changeViewState.diffMode, _userPrefs)',
},
_isImageDiff: Boolean,
+ _filesWeblinks: Object,
},
behaviors: [
diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js
index b0c1731..3e0bc33 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js
@@ -51,6 +51,11 @@
computed: '_computeIsImageDiff(_diff)',
notify: true,
},
+ filesWeblinks: {
+ type: Object,
+ value: function() { return {}; },
+ notify: true,
+ },
_loggedIn: {
type: Boolean,
@@ -353,7 +358,13 @@
this.patchRange.basePatchNum,
this.patchRange.patchNum,
this.path,
- this._handleGetDiffError.bind(this));
+ this._handleGetDiffError.bind(this)).then(function(diff) {
+ this.filesWeblinks = {
+ meta_a: diff.meta_a && diff.meta_a.web_links,
+ meta_b: diff.meta_b && diff.meta_b.web_links,
+ };
+ return diff;
+ }.bind(this));
},
_getDiffComments: function() {
diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.html b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.html
index b2481c7..00cced6 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.html
+++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.html
@@ -56,6 +56,27 @@
});
});
+ test('loads files weblinks', function(done) {
+ var diffStub = sinon.stub(element.$.restAPI, 'getDiff').returns(
+ Promise.resolve({
+ meta_a: {
+ web_links: 'foo',
+ },
+ meta_b: {
+ web_links: 'bar',
+ },
+ }));
+ element.patchRange = {};
+ element._getDiff().then(function() {
+ assert.deepEqual(element.filesWeblinks, {
+ meta_a: 'foo',
+ meta_b: 'bar',
+ });
+ done();
+ });
+ diffStub.restore();
+ });
+
test('remove comment', function() {
element._comments = {
meta: {
diff --git a/polygerrit-ui/app/elements/diff/gr-patch-range-select/gr-patch-range-select.html b/polygerrit-ui/app/elements/diff/gr-patch-range-select/gr-patch-range-select.html
index b0ee0b73..c496703 100644
--- a/polygerrit-ui/app/elements/diff/gr-patch-range-select/gr-patch-range-select.html
+++ b/polygerrit-ui/app/elements/diff/gr-patch-range-select/gr-patch-range-select.html
@@ -38,6 +38,12 @@
</template>
</select>
</span>
+ <span is="dom-if" if="[[filesWeblinks.meta_a]]">
+ <template is="dom-repeat" items="[[filesWeblinks.meta_a]]" as="weblink">
+ <a target="_blank"
+ href$="[[weblink.url]]">[[weblink.name]]</a>
+ </template>
+ </span>
→
<span class="patchRange">
<select id="rightPatchSelect" on-change="_handlePatchChange">
@@ -47,6 +53,12 @@
disabled$="[[_computeRightDisabled(patchNum, patchRange)]]">[[patchNum]]</option>
</template>
</select>
+ <span is="dom-if" if="[[filesWeblinks.meta_b]]">
+ <template is="dom-repeat" items="[[filesWeblinks.meta_b]]" as="weblink">
+ <a target="_blank"
+ href$="[[weblink.url]]">[[weblink.name]]</a>
+ </template>
+ </span>
</span>
</template>
<script src="gr-patch-range-select.js"></script>
diff --git a/polygerrit-ui/app/elements/diff/gr-patch-range-select/gr-patch-range-select.js b/polygerrit-ui/app/elements/diff/gr-patch-range-select/gr-patch-range-select.js
index 3439ecd..24d36c4 100644
--- a/polygerrit-ui/app/elements/diff/gr-patch-range-select/gr-patch-range-select.js
+++ b/polygerrit-ui/app/elements/diff/gr-patch-range-select/gr-patch-range-select.js
@@ -20,6 +20,7 @@
properties: {
availablePatches: Array,
changeNum: String,
+ filesWeblinks: Object,
patchRange: Object,
path: String,
},
diff --git a/polygerrit-ui/app/elements/diff/gr-patch-range-select/gr-patch-range-select_test.html b/polygerrit-ui/app/elements/diff/gr-patch-range-select/gr-patch-range-select_test.html
index a7d909e..c7e1196 100644
--- a/polygerrit-ui/app/elements/diff/gr-patch-range-select/gr-patch-range-select_test.html
+++ b/polygerrit-ui/app/elements/diff/gr-patch-range-select/gr-patch-range-select_test.html
@@ -89,5 +89,28 @@
rightSelectEl.value = '3';
element.fire('change', {}, {node: leftSelectEl});
});
+
+ test('filesWeblinks', function() {
+ element.filesWeblinks = {
+ meta_a: [
+ {
+ name: 'foo',
+ url: 'f.oo',
+ }
+ ],
+ meta_b: [
+ {
+ name: 'bar',
+ url: 'ba.r',
+ }
+ ],
+ };
+ flushAsynchronousOperations();
+ var domApi = Polymer.dom(element.root);
+ assert.equal(
+ domApi.querySelector('a[href="f.oo"]').textContent, 'foo');
+ assert.equal(
+ domApi.querySelector('a[href="ba.r"]').textContent, 'bar');
+ });
});
</script>