Add a link to group page in groups section of settings
Change-Id: If1313fbfdfdaaa60c569c7602b3ae77e30b36234
(cherry picked from commit 51a1cc0dc4c6e34dc59a74df4633f7f0d40798ef)
diff --git a/polygerrit-ui/app/elements/settings/gr-group-list/gr-group-list.html b/polygerrit-ui/app/elements/settings/gr-group-list/gr-group-list.html
index bcae0bf..c26ac87 100644
--- a/polygerrit-ui/app/elements/settings/gr-group-list/gr-group-list.html
+++ b/polygerrit-ui/app/elements/settings/gr-group-list/gr-group-list.html
@@ -15,9 +15,11 @@
-->
<link rel="import" href="../../../bower_components/polymer/polymer.html">
-<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
+<link rel="import" href="../../../behaviors/base-url-behavior/base-url-behavior.html">
+<link rel="import" href="../../../behaviors/gr-url-encoding-behavior.html">
<link rel="import" href="../../../styles/shared-styles.html">
<link rel="import" href="../../../styles/gr-form-styles.html">
+<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
<dom-module id="gr-group-list">
<template>
@@ -47,7 +49,11 @@
<tbody>
<template is="dom-repeat" items="[[_groups]]">
<tr>
- <td class="nameColumn">[[item.name]]</td>
+ <td class="nameColumn">
+ <a href$="[[_computeGroupPath(item)]]">
+ [[item.name]]
+ </a>
+ </td>
<td>[[item.description]]</td>
<td class="visibleCell">[[_computeVisibleToAll(item)]]</td>
</tr>
diff --git a/polygerrit-ui/app/elements/settings/gr-group-list/gr-group-list.js b/polygerrit-ui/app/elements/settings/gr-group-list/gr-group-list.js
index d26482d..d294a9b 100644
--- a/polygerrit-ui/app/elements/settings/gr-group-list/gr-group-list.js
+++ b/polygerrit-ui/app/elements/settings/gr-group-list/gr-group-list.js
@@ -21,6 +21,11 @@
_groups: Array,
},
+ behaviors: [
+ Gerrit.BaseUrlBehavior,
+ Gerrit.URLEncodingBehavior,
+ ],
+
loadData() {
return this.$.restAPI.getAccountGroups().then(groups => {
this._groups = groups.sort((a, b) => {
@@ -32,5 +37,13 @@
_computeVisibleToAll(group) {
return group.options.visible_to_all ? 'Yes' : 'No';
},
+
+ _computeGroupPath(group) {
+ if (!group || !group.id) { return; }
+
+ const encodeGroup = this.encodeURL(group.id, true);
+
+ return `${this.getBaseUrl()}/admin/groups/${encodeGroup}`;
+ },
});
})();
diff --git a/polygerrit-ui/app/elements/settings/gr-group-list/gr-group-list_test.html b/polygerrit-ui/app/elements/settings/gr-group-list/gr-group-list_test.html
index 3c4eff2..582ed6c 100644
--- a/polygerrit-ui/app/elements/settings/gr-group-list/gr-group-list_test.html
+++ b/polygerrit-ui/app/elements/settings/gr-group-list/gr-group-list_test.html
@@ -33,10 +33,12 @@
<script>
suite('gr-group-list tests', () => {
+ let sandbox;
let element;
let groups;
setup(done => {
+ sandbox = sinon.sandbox.create();
groups = [{
url: 'some url',
options: {},
@@ -65,13 +67,15 @@
element.loadData().then(() => { flush(done); });
});
+ teardown(() => { sandbox.restore(); });
+
test('renders', () => {
const rows = Polymer.dom(element.root).querySelectorAll('tbody tr');
assert.equal(rows.length, 3);
const nameCells = rows.map(row =>
- row.querySelectorAll('td')[0].textContent
+ row.querySelectorAll('td a')[0].textContent.trim()
);
assert.equal(nameCells[0], 'Group 1');
@@ -83,5 +87,18 @@
assert.equal(element._computeVisibleToAll(groups[0]), 'No');
assert.equal(element._computeVisibleToAll(groups[1]), 'Yes');
});
+
+ test('_computeGroupPath', () => {
+ let group = {
+ id: 'e2cd66f88a2db4d391ac068a92d987effbe872f5',
+ };
+ assert.equal(element._computeGroupPath(group),
+ '/admin/groups/e2cd66f88a2db4d391ac068a92d987effbe872f5');
+
+ group = {
+ name: 'admin',
+ };
+ assert.isUndefined(element._computeGroupPath(group));
+ });
});
</script>