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"}} + + +