Bug fixes for gr-group-audit-log
* This uses gr-account-link where possible except if the rest api returns id
which only groups return.
* This will not add a url if it is not a user or does not include url in
the rest api.
* This makes gr-group-audit-log show users avatars thus makes the page
look alot better.
Change-Id: I1d227953a997ebe7ab72ce0dd12cbf6c5105bbc5
diff --git a/polygerrit-ui/app/elements/admin/gr-group-audit-log/gr-group-audit-log.html b/polygerrit-ui/app/elements/admin/gr-group-audit-log/gr-group-audit-log.html
index 48f4ecc..eb6a708 100644
--- a/polygerrit-ui/app/elements/admin/gr-group-audit-log/gr-group-audit-log.html
+++ b/polygerrit-ui/app/elements/admin/gr-group-audit-log/gr-group-audit-log.html
@@ -19,6 +19,7 @@
<link rel="import" href="../../../bower_components/polymer/polymer.html">
<link rel="import" href="../../../styles/gr-table-styles.html">
<link rel="import" href="../../../styles/shared-styles.html">
+<link rel="import" href="../../core/gr-navigation/gr-navigation.html">
<link rel="import" href="../../shared/gr-date-formatter/gr-date-formatter.html">
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
@@ -47,11 +48,20 @@
</td>
<td class="type">[[itemType(item.type)]]</td>
<td class="member">
- <a href$="[[_computeGroupUrl(item.member.group_id)]]">
- [[_getNameForMember(item.member)]]
- </a>
+ <template is="dom-if" if="[[_isGroupEvent(item.type)]]">
+ <a href$="[[_computeGroupUrl(item.member)]]">
+ [[_getNameForGroup(item.member)]]
+ </a>
+ </template>
+ <template is="dom-if" if="[[!_isGroupEvent(item.type)]]">
+ <gr-account-link account="[[item.member]]"></gr-account-link>
+ [[_getIdForUser(item.member)]]
+ </template>
</td>
- <td class="by-user">[[_getNameForUser(item.user)]]</td>
+ <td class="by-user">
+ <gr-account-link account="[[item.user]]"></gr-account-link>
+ [[_getIdForUser(item.user)]]
+ </td>
</tr>
</template>
</table>
diff --git a/polygerrit-ui/app/elements/admin/gr-group-audit-log/gr-group-audit-log.js b/polygerrit-ui/app/elements/admin/gr-group-audit-log/gr-group-audit-log.js
index b150d68..bc6a5d0 100644
--- a/polygerrit-ui/app/elements/admin/gr-group-audit-log/gr-group-audit-log.js
+++ b/polygerrit-ui/app/elements/admin/gr-group-audit-log/gr-group-audit-log.js
@@ -17,12 +17,14 @@
(function() {
'use strict';
+ const GROUP_EVENTS = ['ADD_GROUP', 'REMOVE_GROUP'];
+
Polymer({
is: 'gr-group-audit-log',
properties: {
- groupId: Object,
- _auditLog: Object,
+ groupId: String,
+ _auditLog: Array,
_loading: {
type: Boolean,
value: true,
@@ -63,12 +65,6 @@
return item.disabled ? 'Disabled' : 'Enabled';
},
- _computeGroupUrl(id) {
- if (!id) { return ''; }
-
- return this.getBaseUrl() + '/admin/groups/' + id;
- },
-
itemType(type) {
let item;
switch (type) {
@@ -86,20 +82,31 @@
return item;
},
- _getNameForUser(account) {
- const accountId = account._account_id ? ' (' +
- account._account_id + ')' : '';
- return this._getNameForMember(account) + accountId;
+ _isGroupEvent(type) {
+ return GROUP_EVENTS.indexOf(type) !== -1;
},
- _getNameForMember(account) {
- if (account && account.name) {
- return account.name;
- } else if (account && account.username) {
- return account.username;
- } else if (account && account.email) {
- return account.email.split('@')[0];
+ _computeGroupUrl(group) {
+ if (group && group.url && group.id) {
+ return Gerrit.Nav.getUrlForGroup(group.id);
}
+
+ return '';
+ },
+
+ _getIdForUser(account) {
+ return account._account_id ? ' (' + account._account_id + ')' : '';
+ },
+
+ _getNameForGroup(group) {
+ if (group && group.name) {
+ return group.name;
+ } else if (group && group.id) {
+ // The URL encoded id of the member
+ return decodeURIComponent(group.id);
+ }
+
+ return '';
},
});
})();
diff --git a/polygerrit-ui/app/elements/admin/gr-group-audit-log/gr-group-audit-log_test.html b/polygerrit-ui/app/elements/admin/gr-group-audit-log/gr-group-audit-log_test.html
index 86e8a25..59a665b 100644
--- a/polygerrit-ui/app/elements/admin/gr-group-audit-log/gr-group-audit-log_test.html
+++ b/polygerrit-ui/app/elements/admin/gr-group-audit-log/gr-group-audit-log_test.html
@@ -47,81 +47,49 @@
});
suite('members', () => {
- test('test getNameForMember', () => {
- let account = {
- member: {
- username: 'test-user',
- _account_id: 12,
- },
- };
- assert.equal(element._getNameForMember(account.member, false),
- 'test-user');
-
- account = {
+ test('test _getNameForGroup', () => {
+ let group = {
member: {
name: 'test-name',
- _account_id: 12,
},
};
- assert.equal(element._getNameForMember(account.member), 'test-name');
+ assert.equal(element._getNameForGroup(group.member), 'test-name');
- account = {
- user: {
- email: 'test-email@gmail.com',
+ group = {
+ member: {
+ id: 'test-id',
},
};
- assert.equal(element._getNameForMember(account.user), 'test-email');
+ assert.equal(element._getNameForGroup(group.member), 'test-id');
+ });
+
+ test('test _isGroupEvent', () => {
+ assert.isTrue(element._isGroupEvent('ADD_GROUP'));
+ assert.isTrue(element._isGroupEvent('REMOVE_GROUP'));
+
+ assert.isFalse(element._isGroupEvent('ADD_USER'));
+ assert.isFalse(element._isGroupEvent('REMOVE_USER'));
});
});
suite('users', () => {
- test('test _getName', () => {
- let account = {
+ test('test _getIdForUser', () => {
+ const account = {
user: {
username: 'test-user',
_account_id: 12,
},
};
- assert.equal(element._getNameForUser(account.user), 'test-user (12)');
-
- account = {
- user: {
- name: 'test-name',
- _account_id: 12,
- },
- };
- assert.equal(element._getNameForUser(account.user), 'test-name (12)');
-
- account = {
- user: {
- email: 'test-email@gmail.com',
- _account_id: 12,
- },
- };
- assert.equal(element._getNameForUser(account.user), 'test-email (12)');
+ assert.equal(element._getIdForUser(account.user), ' (12)');
});
test('test _account_id not present', () => {
- let account = {
+ const account = {
user: {
username: 'test-user',
},
};
- assert.equal(element._getNameForUser(account.user), 'test-user');
-
- account = {
- user: {
- name: 'test-name',
- },
- };
- assert.equal(element._getNameForUser(account.user), 'test-name');
-
- account = {
- user: {
- email: 'test-email@gmail.com',
- },
- };
- assert.equal(element._getNameForUser(account.user), 'test-email');
+ assert.equal(element._getIdForUser(account.user), '');
});
});