diff --git a/src/sunstone/public/app/app.js b/src/sunstone/public/app/app.js
index 37bc96f5d5..b3465b99d0 100644
--- a/src/sunstone/public/app/app.js
+++ b/src/sunstone/public/app/app.js
@@ -37,6 +37,7 @@ define(function(require) {
var Notifier = require('utils/notifier');
var Menu = require('utils/menu');
var Locale = require('utils/locale');
+ var OpenNebulaGroup = require('opennebula/group');
var UserAndZoneTemplate = require('hbs!sunstone/user_and_zone');
@@ -97,6 +98,10 @@ define(function(require) {
}
function _insertUserAndZoneSelector() {
+
+ this.idGroup = -2; /*All*/
+ Config.changeFilter(false);
+
$(".user-zone-info").html(UserAndZoneTemplate({
displayName: config['display_name'],
settingsTabEnabled: Config.isTabEnabled(SETTINGS_TAB_ID),
@@ -104,6 +109,8 @@ define(function(require) {
zoneName: config['zone_name']
})).foundation();
+ groupsRefresh();
+
$('.quickconf_view[view="' + config['user_config']["default_view"] + '"] i').addClass('fa-check');
$(".user-zone-info a.quickconf_view_header").click(function() {
var context = $(this).closest('ul');
@@ -117,6 +124,73 @@ define(function(require) {
Sunstone.runAction("User.append_sunstone_setting_refresh", -1, sunstone_setting);
});
+ function groupsRefresh() {
+
+ OpenNebula.User.show({
+ timeout: true,
+ data : {
+ id: config['user_id']
+ },
+ success: function (request, obj_user) {
+ var groups = obj_user.USER.GROUPS.ID;
+ var groupsHTML = "
\
+ " + Locale.tr("All") + "";
+ if(this.idGroup == -2){
+ var groupsHTML = " \
+ " + Locale.tr("All") + "";
+ }
+
+ if (!$.isArray(groups)){
+ groups = groups.toString();
+ groups = [groups];
+ }
+
+ that = this;
+ OpenNebula.Group.list({
+ timeout: true,
+ success: function(request, group_list) {
+ var group_list_aux = group_list;
+ $.each(groups, function(key, value){
+ var id = value;
+ $.each(group_list_aux, function(key, value){
+ if(id == value.GROUP.ID){
+ if(id == that.idGroup){
+ groupsHTML += " \
+ " + value.GROUP.NAME + "\
+ ";
+ } else {
+ groupsHTML += " \
+ " + value.GROUP.NAME + "\
+ ";
+ }
+ return false;
+ }
+ });
+ });
+ },
+ error: Notifier.onError
+ });
+
+ $('#userselector').on('click', function(){
+ $('.groups-menu').empty();
+ $('.groups-menu').append(groupsHTML);
+ $('.groups').on('click', function(){
+ that.idGroup = $(this).attr('value');
+ $('.groups-menu a i').removeClass('fa-check');
+ $('a i', this).addClass('fa-check');
+ groupsRefresh();
+ if(that.idGroup != -2){
+ Config.changeFilter(true);
+ } else {
+ Config.changeFilter(false);
+ }
+ });
+ });
+ },
+ error: Notifier.onError
+ });
+ }
+
function zoneRefresh() {
// Populate Zones dropdown
OpenNebula.Zone.list({
diff --git a/src/sunstone/public/app/sunstone-config.js b/src/sunstone/public/app/sunstone-config.js
index a6c1f9a576..a3c7146e72 100644
--- a/src/sunstone/public/app/sunstone-config.js
+++ b/src/sunstone/public/app/sunstone-config.js
@@ -26,6 +26,10 @@ define(function(require) {
return enabled;
},
+ "changeFilter": function(bool) {
+ _config['pool_filter'] = bool;
+ },
+
"isTabActionEnabled": function(tabName, actionName, panelName) {
var enabled = false;
var configTab = _config['view']['tabs'][tabName];
diff --git a/src/sunstone/public/app/sunstone/user_and_zone.hbs b/src/sunstone/public/app/sunstone/user_and_zone.hbs
index 922feb3b89..59101ad5aa 100644
--- a/src/sunstone/public/app/sunstone/user_and_zone.hbs
+++ b/src/sunstone/public/app/sunstone/user_and_zone.hbs
@@ -16,7 +16,7 @@
{{/if}}
+
+
+
+ {{tr "Groups"}}
+
+
+