GUACAMOLE-723: Move getClientIdentifier() to GroupListItem for convenience of other uses of the guacGroupList directive.

This commit is contained in:
Michael Jumper
2018-11-12 10:08:36 -08:00
parent 2d0bc70214
commit f92bf9c35f
6 changed files with 50 additions and 53 deletions

View File

@@ -21,4 +21,8 @@
* Module for displaying the contents of a connection group, allowing the user
* to select individual connections or groups.
*/
angular.module('groupList', ['list', 'rest']);
angular.module('groupList', [
'navigation',
'list',
'rest'
]);

View File

@@ -20,7 +20,11 @@
/**
* Provides the GroupListItem class definition.
*/
angular.module('groupList').factory('GroupListItem', ['ConnectionGroup', function defineGroupListItem(ConnectionGroup) {
angular.module('groupList').factory('GroupListItem', ['$injector', function defineGroupListItem($injector) {
// Required types
var ClientIdentifier = $injector.get('ClientIdentifier');
var ConnectionGroup = $injector.get('ConnectionGroup');
/**
* Creates a new GroupListItem, initializing the properties of that
@@ -109,14 +113,50 @@ angular.module('groupList').factory('GroupListItem', ['ConnectionGroup', functio
/**
* Returns the number of currently active users for this connection,
* connection group, or sharing profile, if known.
* connection group, or sharing profile, if known. If unknown, null may
* be returned.
*
* @type Number
* @returns {Number}
* The number of currently active users for this connection,
* connection group, or sharing profile.
*/
this.getActiveConnections = template.getActiveConnections || (function getActiveConnections() {
return null;
});
/**
* Returns the unique string identifier that must be used when
* connecting to a connection or connection group represented by this
* GroupListItem.
*
* @returns {String}
* The client identifier associated with the connection or
* connection group represented by this GroupListItem, or null if
* this GroupListItem cannot have an associated client identifier.
*/
this.getClientIdentifier = template.getClientIdentifier || function getClientIdentifier() {
// If the item is a connection, generate a connection identifier
if (this.type === GroupListItem.Type.CONNECTION)
return ClientIdentifier.toString({
dataSource : this.dataSource,
type : ClientIdentifier.Types.CONNECTION,
id : this.identifier
});
// If the item is a connection group, generate a connection group identifier
if (this.type === GroupListItem.Type.CONNECTION_GROUP)
return ClientIdentifier.toString({
dataSource : this.dataSource,
type : ClientIdentifier.Types.CONNECTION_GROUP,
id : this.identifier
});
// Otherwise, no such identifier can exist
return null;
};
/**
* The connection, connection group, or sharing profile whose data is
* exposed within this GroupListItem. If the type of this GroupListItem

View File

@@ -25,7 +25,6 @@ angular.module('home').controller('homeController', ['$scope', '$injector',
// Get required types
var ConnectionGroup = $injector.get('ConnectionGroup');
var ClientIdentifier = $injector.get('ClientIdentifier');
var GroupListItem = $injector.get('GroupListItem');
// Get required services
@@ -74,51 +73,6 @@ angular.module('home').controller('homeController', ['$scope', '$injector',
};
/**
* Object passed to the guacGroupList directive, providing context-specific
* functions or data.
*/
$scope.context = {
/**
* Returns the unique string identifier which must be used when
* connecting to a connection or connection group represented by the
* given GroupListItem.
*
* @param {GroupListItem} item
* The GroupListItem to determine the client identifier of.
*
* @returns {String}
* The client identifier associated with the connection or
* connection group represented by the given GroupListItem, or null
* if the GroupListItem cannot have an associated client
* identifier.
*/
getClientIdentifier : function getClientIdentifier(item) {
// If the item is a connection, generate a connection identifier
if (item.type === GroupListItem.Type.CONNECTION)
return ClientIdentifier.toString({
dataSource : item.dataSource,
type : ClientIdentifier.Types.CONNECTION,
id : item.identifier
});
// If the item is a connection group, generate a connection group identifier
if (item.type === GroupListItem.Type.CONNECTION_GROUP)
return ClientIdentifier.toString({
dataSource : item.dataSource,
type : ClientIdentifier.Types.CONNECTION_GROUP,
id : item.identifier
});
// Otherwise, no such identifier can exist
return null;
}
};
// Retrieve root groups and all descendants
dataSourceService.apply(
connectionGroupService.getConnectionGroupTree,

View File

@@ -1,5 +1,5 @@
<a class="home-connection"
ng-href="#/client/{{context.getClientIdentifier(item)}}"
ng-href="#/client/{{ item.getClientIdentifier() }}"
ng-class="{active: item.getActiveConnections()}">
<!-- Connection icon -->

View File

@@ -1,4 +1,4 @@
<span class="home-connection-group name">
<a ng-show="item.balancing" ng-href="#/client/{{context.getClientIdentifier(item)}}">{{item.name}}</a>
<a ng-show="item.balancing" ng-href="#/client/{{ getClientIdentifier() }}">{{item.name}}</a>
<span ng-show="!item.balancing">{{item.name}}</span>
</span>

View File

@@ -23,7 +23,6 @@
</div>
<div class="all-connections">
<guac-group-list
context="context"
connection-groups="filteredRootConnectionGroups"
templates="{
'connection' : 'app/home/templates/connection.html',