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 * Module for displaying the contents of a connection group, allowing the user
* to select individual connections or groups. * 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. * 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 * 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, * 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() { this.getActiveConnections = template.getActiveConnections || (function getActiveConnections() {
return null; 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 * The connection, connection group, or sharing profile whose data is
* exposed within this GroupListItem. If the type of this GroupListItem * 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 // Get required types
var ConnectionGroup = $injector.get('ConnectionGroup'); var ConnectionGroup = $injector.get('ConnectionGroup');
var ClientIdentifier = $injector.get('ClientIdentifier');
var GroupListItem = $injector.get('GroupListItem'); var GroupListItem = $injector.get('GroupListItem');
// Get required services // 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 // Retrieve root groups and all descendants
dataSourceService.apply( dataSourceService.apply(
connectionGroupService.getConnectionGroupTree, connectionGroupService.getConnectionGroupTree,

View File

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

View File

@@ -1,4 +1,4 @@
<span class="home-connection-group name"> <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 ng-show="!item.balancing">{{item.name}}</span>
</span> </span>

View File

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