Merge "Show user status in autocomplete suggestions and account-label"
diff --git a/polygerrit-ui/app/elements/change/gr-account-entry/gr-account-entry.js b/polygerrit-ui/app/elements/change/gr-account-entry/gr-account-entry.js
index 5dea33d..46f2ed2 100644
--- a/polygerrit-ui/app/elements/change/gr-account-entry/gr-account-entry.js
+++ b/polygerrit-ui/app/elements/change/gr-account-entry/gr-account-entry.js
@@ -69,28 +69,27 @@
     },
 
     _makeSuggestion: function(reviewer) {
+      var name;
+      var value;
+      var generateStatusStr = function(account) {
+        return account.status ? ' (' + account.status + ')' : '';
+      };
       if (reviewer.account) {
         // Reviewer is an account suggestion from getChangeSuggestedReviewers.
-        return {
-          name: reviewer.account.name + ' (' + reviewer.account.email + ')',
-          value: reviewer,
-        };
+        name = reviewer.account.name + ' <' + reviewer.account.email + '>' +
+            generateStatusStr(reviewer.account);
+        value = reviewer;
       } else if (reviewer.group) {
         // Reviewer is a group suggestion from getChangeSuggestedReviewers.
-        return {
-          name: reviewer.group.name + ' (group)',
-          value: reviewer,
-        };
+        name = reviewer.group.name + ' (group)';
+        value = reviewer;
       } else if (reviewer._account_id) {
         // Reviewer is an account suggestion from getSuggestedAccounts.
-        return {
-          name: reviewer.name + ' (' + reviewer.email + ')',
-          value: {
-            account: reviewer,
-            count: 1,
-          },
-        };
+        name = reviewer.name + ' <' + reviewer.email + '>' +
+            generateStatusStr(reviewer);
+        value = {account: reviewer, count: 1};
       }
+      return {name: name, value: value};
     },
 
     _getReviewerSuggestions: function(input) {
@@ -104,7 +103,7 @@
         if (!this.filter) { return reviewers.map(this._makeSuggestion); }
         return reviewers
             .filter(this.filter)
-            .map(this._makeSuggestion);
+            .map(this._makeSuggestion.bind(this));
       }.bind(this));
     },
   });
diff --git a/polygerrit-ui/app/elements/change/gr-account-entry/gr-account-entry_test.html b/polygerrit-ui/app/elements/change/gr-account-entry/gr-account-entry_test.html
index a4635d5..71e84d0 100644
--- a/polygerrit-ui/app/elements/change/gr-account-entry/gr-account-entry_test.html
+++ b/polygerrit-ui/app/elements/change/gr-account-entry/gr-account-entry_test.html
@@ -35,12 +35,13 @@
   suite('gr-account-entry tests', function() {
     var sandbox;
     var _nextAccountId = 0;
-    var makeAccount = function() {
+    var makeAccount = function(opt_status) {
       var accountId = ++_nextAccountId;
       return {
         _account_id: accountId,
         name: 'name ' + accountId,
         email: 'email ' + accountId,
+        status: opt_status,
       };
     };
 
@@ -97,7 +98,7 @@
         var account = makeAccount();
         var suggestion = element._makeSuggestion({account: account});
         assert.deepEqual(suggestion, {
-          name: account.name + ' (' + account.email + ')',
+          name: account.name + ' <' + account.email + '>',
           value: {account: account},
         });
 
@@ -110,7 +111,21 @@
 
         suggestion = element._makeSuggestion(account);
         assert.deepEqual(suggestion, {
-          name: account.name + ' (' + account.email + ')',
+          name: account.name + ' <' + account.email + '>',
+          value: {account: account, count: 1},
+        });
+
+        account = makeAccount('OOO');
+
+        suggestion = element._makeSuggestion({account: account});
+        assert.deepEqual(suggestion, {
+          name: account.name + ' <' + account.email + '> (OOO)',
+          value: {account: account},
+        });
+
+        suggestion = element._makeSuggestion(account);
+        assert.deepEqual(suggestion, {
+          name: account.name + ' <' + account.email + '> (OOO)',
           value: {account: account, count: 1},
         });
       });
diff --git a/polygerrit-ui/app/elements/shared/gr-account-label/gr-account-label.html b/polygerrit-ui/app/elements/shared/gr-account-label/gr-account-label.html
index 1d2beab..43721fe 100644
--- a/polygerrit-ui/app/elements/shared/gr-account-label/gr-account-label.html
+++ b/polygerrit-ui/app/elements/shared/gr-account-label/gr-account-label.html
@@ -44,6 +44,9 @@
         <span hidden$="[[!_computeShowEmail(showEmail, account)]]">
           [[_computeEmailStr(account)]]
         </span>
+        <template is="dom-if" if="[[account.status]]">
+          <span>([[account.status]])</span>
+        </template>
       </span>
     </span>
   </template>