Repository: guacamole-client
Updated Branches:
  refs/heads/master c170612cd -> e7cb654c2


GUACAMOLE-394: List users in a table displaying last active time.

Project: http://git-wip-us.apache.org/repos/asf/guacamole-client/repo
Commit: http://git-wip-us.apache.org/repos/asf/guacamole-client/commit/138ea40d
Tree: http://git-wip-us.apache.org/repos/asf/guacamole-client/tree/138ea40d
Diff: http://git-wip-us.apache.org/repos/asf/guacamole-client/diff/138ea40d

Branch: refs/heads/master
Commit: 138ea40dc947f8ff32f82737e7c2d74adcc07718
Parents: 67fc77a
Author: Michael Jumper <mjum...@apache.org>
Authored: Mon Sep 18 12:36:35 2017 -0700
Committer: Michael Jumper <mjum...@apache.org>
Committed: Mon Dec 11 20:44:28 2017 -0800

----------------------------------------------------------------------
 .../settings/directives/guacSettingsUsers.js    | 33 ++++++++++++++-
 .../webapp/app/settings/styles/user-list.css    | 42 ++++++++++++++++++++
 .../app/settings/templates/settingsUsers.html   | 35 +++++++++++-----
 guacamole/src/main/webapp/translations/de.json  |  6 ++-
 guacamole/src/main/webapp/translations/en.json  |  7 +++-
 guacamole/src/main/webapp/translations/fr.json  |  6 ++-
 guacamole/src/main/webapp/translations/it.json  |  6 ++-
 guacamole/src/main/webapp/translations/nl.json  |  6 ++-
 guacamole/src/main/webapp/translations/no.json  |  6 ++-
 guacamole/src/main/webapp/translations/ru.json  |  6 ++-
 10 files changed, 134 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/guacamole-client/blob/138ea40d/guacamole/src/main/webapp/app/settings/directives/guacSettingsUsers.js
----------------------------------------------------------------------
diff --git 
a/guacamole/src/main/webapp/app/settings/directives/guacSettingsUsers.js 
b/guacamole/src/main/webapp/app/settings/directives/guacSettingsUsers.js
index cc134fa..1ac9fad 100644
--- a/guacamole/src/main/webapp/app/settings/directives/guacSettingsUsers.js
+++ b/guacamole/src/main/webapp/app/settings/directives/guacSettingsUsers.js
@@ -36,9 +36,11 @@ angular.module('settings').directive('guacSettingsUsers', 
[function guacSettings
             // Required types
             var ManageableUser  = $injector.get('ManageableUser');
             var PermissionSet   = $injector.get('PermissionSet');
+            var SortOrder       = $injector.get('SortOrder');
 
             // Required services
             var $location              = $injector.get('$location');
+            var $translate             = $injector.get('$translate');
             var authenticationService  = 
$injector.get('authenticationService');
             var dataSourceService      = $injector.get('dataSourceService');
             var guacNotification       = $injector.get('guacNotification');
@@ -98,10 +100,38 @@ angular.module('settings').directive('guacSettingsUsers', 
[function guacSettings
              * @type String[]
              */
             $scope.filteredUserProperties = [
+                'user.lastActive',
                 'user.username'
             ];
 
             /**
+             * The date format for use for the last active date.
+             *
+             * @type String
+             */
+            $scope.dateFormat = null;
+
+            /**
+             * SortOrder instance which stores the sort order of the listed
+             * users.
+             *
+             * @type SortOrder
+             */
+            $scope.order = new SortOrder([
+                'user.username',
+                '-user.lastActive'
+            ]);
+
+            // Get session date format
+            $translate('SETTINGS_USERS.FORMAT_DATE')
+            .then(function dateFormatReceived(retrievedDateFormat) {
+
+                // Store received date format
+                $scope.dateFormat = retrievedDateFormat;
+
+            });
+
+            /**
              * Returns whether critical data has completed being loaded.
              *
              * @returns {Boolean}
@@ -110,7 +140,8 @@ angular.module('settings').directive('guacSettingsUsers', 
[function guacSettings
              */
             $scope.isLoaded = function isLoaded() {
 
-                return $scope.manageableUsers !== null
+                return $scope.dateFormat      !== null
+                    && $scope.manageableUsers !== null
                     && $scope.permissions     !== null;
 
             };

http://git-wip-us.apache.org/repos/asf/guacamole-client/blob/138ea40d/guacamole/src/main/webapp/app/settings/styles/user-list.css
----------------------------------------------------------------------
diff --git a/guacamole/src/main/webapp/app/settings/styles/user-list.css 
b/guacamole/src/main/webapp/app/settings/styles/user-list.css
new file mode 100644
index 0000000..6c0edd5
--- /dev/null
+++ b/guacamole/src/main/webapp/app/settings/styles/user-list.css
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+.settings.users table.user-list {
+    width: 100%;
+}
+
+.settings.users table.user-list th.last-active,
+.settings.users table.user-list td.last-active {
+    white-space: nowrap;
+    width: 0;
+}
+
+.settings.users table.user-list th.username,
+.settings.users table.user-list td.username {
+    width: 100%;
+}
+
+.settings.users table.user-list tr.user td.username a[href] {
+    display: block;
+    padding: .5em 1em;
+}
+
+.settings.users table.user-list tr.user td.username {
+    padding: 0;
+}

http://git-wip-us.apache.org/repos/asf/guacamole-client/blob/138ea40d/guacamole/src/main/webapp/app/settings/templates/settingsUsers.html
----------------------------------------------------------------------
diff --git 
a/guacamole/src/main/webapp/app/settings/templates/settingsUsers.html 
b/guacamole/src/main/webapp/app/settings/templates/settingsUsers.html
index 41dac6c..67f6760 100644
--- a/guacamole/src/main/webapp/app/settings/templates/settingsUsers.html
+++ b/guacamole/src/main/webapp/app/settings/templates/settingsUsers.html
@@ -21,19 +21,32 @@
     </div>
 
     <!-- List of users this user has access to -->
-    <div class="user-list">
-        <div ng-repeat="manageableUser in manageableUserPage" class="user 
list-item">
-            <a 
ng-href="#/manage/{{manageableUser.dataSource}}/users/{{manageableUser.user.username}}">
-                <div class="caption">
-                    <div class="icon user"></div>
-                    <span class="name">{{manageableUser.user.username}}</span>
-                </div>
-            </a>
-        </div>
-    </div>
+    <table class="sorted user-list">
+        <thead>
+            <tr>
+                <th guac-sort-order="order" 
guac-sort-property="'user.username'" class="username">
+                    {{'SETTINGS_USERS.TABLE_HEADER_USERNAME' | translate}}
+                </th>
+                <th guac-sort-order="order" 
guac-sort-property="'user.lastActive'" class="last-active">
+                    {{'SETTINGS_USERS.TABLE_HEADER_LAST_ACTIVE' | translate}}
+                </th>
+            </tr>
+        </thead>
+        <tbody ng-class="{loading: !isLoaded()}">
+            <tr ng-repeat="manageableUser in manageableUserPage" class="user">
+                <td class="username">
+                    <a 
ng-href="#/manage/{{manageableUser.dataSource}}/users/{{manageableUser.user.username}}">
+                        <div class="icon user"></div>
+                        <span 
class="name">{{manageableUser.user.username}}</span>
+                    </a>
+                </td>
+                <td class="last-active">{{manageableUser.user.lastActive | 
date : dateFormat}}</td>
+            </tr>
+        </tbody>
+    </table>
 
     <!-- Pager controls for user list -->
     <guac-pager page="manageableUserPage" page-size="25"
-                items="filteredManageableUsers | orderBy : 
'user.username'"></guac-pager>
+                items="filteredManageableUsers | orderBy : 
order.predicate"></guac-pager>
 
 </div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/guacamole-client/blob/138ea40d/guacamole/src/main/webapp/translations/de.json
----------------------------------------------------------------------
diff --git a/guacamole/src/main/webapp/translations/de.json 
b/guacamole/src/main/webapp/translations/de.json
index 9403402..90953e5 100644
--- a/guacamole/src/main/webapp/translations/de.json
+++ b/guacamole/src/main/webapp/translations/de.json
@@ -598,9 +598,13 @@
 
         "FIELD_PLACEHOLDER_FILTER" : "@:APP.FIELD_PLACEHOLDER_FILTER",
 
+        "FORMAT_DATE" : "@:APP.FORMAT_DATE_TIME_PRECISE",
+
         "HELP_USERS" : "Klicke oder Tippe auf einen Benutzer um diesen zu 
verwalten. Abhänig von Ihrer Zugriffsebene können Benutzer hinzugefügt, 
gelöscht bzw. dessen Passwort geändert werden.",
 
-        "SECTION_HEADER_USERS"       : "Benutzer"
+        "SECTION_HEADER_USERS"       : "Benutzer",
+
+        "TABLE_HEADER_USERNAME" : "Benutzername"
 
     },
     

http://git-wip-us.apache.org/repos/asf/guacamole-client/blob/138ea40d/guacamole/src/main/webapp/translations/en.json
----------------------------------------------------------------------
diff --git a/guacamole/src/main/webapp/translations/en.json 
b/guacamole/src/main/webapp/translations/en.json
index 2b4fb5d..a64f64c 100644
--- a/guacamole/src/main/webapp/translations/en.json
+++ b/guacamole/src/main/webapp/translations/en.json
@@ -675,9 +675,14 @@
 
         "FIELD_PLACEHOLDER_FILTER" : "@:APP.FIELD_PLACEHOLDER_FILTER",
 
+        "FORMAT_DATE" : "@:APP.FORMAT_DATE_TIME_PRECISE",
+
         "HELP_USERS" : "Click or tap on a user below to manage that user. 
Depending on your access level, users can be added and deleted, and their 
passwords can be changed.",
 
-        "SECTION_HEADER_USERS"       : "Users"
+        "SECTION_HEADER_USERS"       : "Users",
+
+        "TABLE_HEADER_LAST_ACTIVE" : "Last active",
+        "TABLE_HEADER_USERNAME"    : "Username"
 
     },
     

http://git-wip-us.apache.org/repos/asf/guacamole-client/blob/138ea40d/guacamole/src/main/webapp/translations/fr.json
----------------------------------------------------------------------
diff --git a/guacamole/src/main/webapp/translations/fr.json 
b/guacamole/src/main/webapp/translations/fr.json
index d59c384..8ebbd36 100644
--- a/guacamole/src/main/webapp/translations/fr.json
+++ b/guacamole/src/main/webapp/translations/fr.json
@@ -601,9 +601,13 @@
 
         "FIELD_PLACEHOLDER_FILTER" : "@:APP.FIELD_PLACEHOLDER_FILTER",
 
+        "FORMAT_DATE" : "@:APP.FORMAT_DATE_TIME_PRECISE",
+
         "HELP_USERS" : "Cliquer ou appuyer sur un utilisateur en dessous pour 
le gérer. Selon vos permissions, les utilisateurs peuvent être ajoutés, 
supprimés, leur mot de passe changé.",
 
-        "SECTION_HEADER_USERS"       : "Utilisateur"
+        "SECTION_HEADER_USERS"       : "Utilisateur",
+
+        "TABLE_HEADER_USERNAME" : "Identifiant"
 
     },
     

http://git-wip-us.apache.org/repos/asf/guacamole-client/blob/138ea40d/guacamole/src/main/webapp/translations/it.json
----------------------------------------------------------------------
diff --git a/guacamole/src/main/webapp/translations/it.json 
b/guacamole/src/main/webapp/translations/it.json
index e84e67f..5b3f641 100644
--- a/guacamole/src/main/webapp/translations/it.json
+++ b/guacamole/src/main/webapp/translations/it.json
@@ -543,9 +543,13 @@
 
         "FIELD_PLACEHOLDER_FILTER" : "@:APP.FIELD_PLACEHOLDER_FILTER",
 
+        "FORMAT_DATE" : "@:APP.FORMAT_DATE_TIME_PRECISE",
+
         "HELP_USERS" : "Click or tap on a user below to manage that user. 
Depending on your access level, users can be added and deleted, and their 
passwords can be changed.",
 
-        "SECTION_HEADER_USERS"       : "Utenti"
+        "SECTION_HEADER_USERS"       : "Utenti",
+
+        "TABLE_HEADER_USERNAME" : "Username"
 
     },
     

http://git-wip-us.apache.org/repos/asf/guacamole-client/blob/138ea40d/guacamole/src/main/webapp/translations/nl.json
----------------------------------------------------------------------
diff --git a/guacamole/src/main/webapp/translations/nl.json 
b/guacamole/src/main/webapp/translations/nl.json
index 7cc867b..69a789a 100644
--- a/guacamole/src/main/webapp/translations/nl.json
+++ b/guacamole/src/main/webapp/translations/nl.json
@@ -631,9 +631,13 @@
 
         "FIELD_PLACEHOLDER_FILTER" : "@:APP.FIELD_PLACEHOLDER_FILTER",
 
+        "FORMAT_DATE" : "@:APP.FORMAT_DATE_TIME_PRECISE",
+
         "HELP_USERS" : "Klik of tik op een van de onderstaande gebruikers om 
die te beheren. Afhankelijk van uw toegangsniveau kunnen gebruikers worden 
toegevoegd, verwijderd en hun wachtwoorden gewijzigd.",
 
-        "SECTION_HEADER_USERS"       : "Gebruikers"
+        "SECTION_HEADER_USERS"       : "Gebruikers",
+
+        "TABLE_HEADER_USERNAME" : "Gebruikersnaam"
 
     },
 

http://git-wip-us.apache.org/repos/asf/guacamole-client/blob/138ea40d/guacamole/src/main/webapp/translations/no.json
----------------------------------------------------------------------
diff --git a/guacamole/src/main/webapp/translations/no.json 
b/guacamole/src/main/webapp/translations/no.json
index 8b20b5d..30ea871 100644
--- a/guacamole/src/main/webapp/translations/no.json
+++ b/guacamole/src/main/webapp/translations/no.json
@@ -612,9 +612,13 @@
 
         "FIELD_PLACEHOLDER_FILTER" : "@:APP.FIELD_PLACEHOLDER_FILTER",
 
+        "FORMAT_DATE" : "@:APP.FORMAT_DATE_TIME_PRECISE",
+
         "HELP_USERS" : "Klikk på en bruker under for å administrere den 
brukeren. Avhengig av din tilgang kan brukere legges til, slettes og passordet 
kan endres.",
 
-        "SECTION_HEADER_USERS"       : "Brukere"
+        "SECTION_HEADER_USERS"       : "Brukere",
+
+        "TABLE_HEADER_USERNAME" : "Brukernavn"
 
     },
     

http://git-wip-us.apache.org/repos/asf/guacamole-client/blob/138ea40d/guacamole/src/main/webapp/translations/ru.json
----------------------------------------------------------------------
diff --git a/guacamole/src/main/webapp/translations/ru.json 
b/guacamole/src/main/webapp/translations/ru.json
index 0e47f60..4f04525 100644
--- a/guacamole/src/main/webapp/translations/ru.json
+++ b/guacamole/src/main/webapp/translations/ru.json
@@ -524,9 +524,13 @@
 
         "FIELD_PLACEHOLDER_FILTER" : "@:APP.FIELD_PLACEHOLDER_FILTER",
 
+        "FORMAT_DATE" : "@:APP.FORMAT_DATE_TIME_PRECISE",
+
         "HELP_USERS" : "Нажмите на пользователя, 
чтобы управлять им. В зависимости от прав 
доступа возможно добавление и удаление 
пользователей, а также изменение паролей.",
 
-        "SECTION_HEADER_USERS"       : "Пользователи"
+        "SECTION_HEADER_USERS"       : "Пользователи",
+
+        "TABLE_HEADER_USERNAME" : "Имя пользователя"
 
     },
 

Reply via email to