GUACAMOLE-338: Allow guacGroupList and guacGroupListFilter to accept GroupListItems in addition to ConnectionGroups.

This commit is contained in:
Michael Jumper
2017-07-03 16:07:24 -07:00
parent 303be24cc1
commit 5648c36c26
2 changed files with 19 additions and 6 deletions

View File

@@ -32,7 +32,7 @@ angular.module('groupList').directive('guacGroupList', [function guacGroupList()
* The connection groups to display as a map of data source * The connection groups to display as a map of data source
* identifier to corresponding root group. * identifier to corresponding root group.
* *
* @type Object.<String, ConnectionGroup> * @type Object.<String, ConnectionGroup|GroupListItem>
*/ */
connectionGroups : '=', connectionGroups : '=',
@@ -167,15 +167,23 @@ angular.module('groupList').directive('guacGroupList', [function guacGroupList()
// Add each provided connection group // Add each provided connection group
angular.forEach(connectionGroups, function addConnectionGroup(connectionGroup, dataSource) { angular.forEach(connectionGroups, function addConnectionGroup(connectionGroup, dataSource) {
var rootItem;
// Prepare data source for active connection counting // Prepare data source for active connection counting
dataSources.push(dataSource); dataSources.push(dataSource);
connectionCount[dataSource] = {}; connectionCount[dataSource] = {};
// If the provided connection group is already a
// GroupListItem, no need to create a new item
if (connectionGroup instanceof GroupListItem)
rootItem = connectionGroup;
// Create root item for current connection group // Create root item for current connection group
var rootItem = GroupListItem.fromConnectionGroup(dataSource, connectionGroup, else
$scope.isVisible(GroupListItem.Type.CONNECTION), rootItem = GroupListItem.fromConnectionGroup(dataSource, connectionGroup,
$scope.isVisible(GroupListItem.Type.SHARING_PROFILE), $scope.isVisible(GroupListItem.Type.CONNECTION),
countActiveConnections); $scope.isVisible(GroupListItem.Type.SHARING_PROFILE),
countActiveConnections);
// If root group is to be shown, add it as a root item // If root group is to be shown, add it as a root item
if ($scope.showRootGroup) if ($scope.showRootGroup)

View File

@@ -49,7 +49,7 @@ angular.module('groupList').directive('guacGroupListFilter', [function guacGroup
* identifier to corresponding root group. A subset of this map * identifier to corresponding root group. A subset of this map
* will be exposed as filteredConnectionGroups. * will be exposed as filteredConnectionGroups.
* *
* @type Object.<String, ConnectionGroup> * @type Object.<String, ConnectionGroup|GroupListItem>
*/ */
connectionGroups : '&', connectionGroups : '&',
@@ -81,6 +81,7 @@ angular.module('groupList').directive('guacGroupListFilter', [function guacGroup
// Required types // Required types
var ConnectionGroup = $injector.get('ConnectionGroup'); var ConnectionGroup = $injector.get('ConnectionGroup');
var FilterPattern = $injector.get('FilterPattern'); var FilterPattern = $injector.get('FilterPattern');
var GroupListItem = $injector.get('GroupListItem');
/** /**
* The pattern object to use when filtering connections. * The pattern object to use when filtering connections.
@@ -176,6 +177,10 @@ angular.module('groupList').directive('guacGroupListFilter', [function guacGroup
if (connectionGroups) { if (connectionGroups) {
angular.forEach(connectionGroups, function updateFilteredConnectionGroup(connectionGroup, dataSource) { angular.forEach(connectionGroups, function updateFilteredConnectionGroup(connectionGroup, dataSource) {
// Unwrap GroupListItem
if (connectionGroup instanceof GroupListItem)
connectionGroup = connectionGroup.wrappedItem;
// Flatten hierarchy of connection group // Flatten hierarchy of connection group
var filteredGroup = flattenConnectionGroup(connectionGroup); var filteredGroup = flattenConnectionGroup(connectionGroup);