From c3e6d81d88344070f1a738d89e61fc7f325a6346 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn?= Date: Wed, 17 Jun 2015 18:54:33 +0200 Subject: [PATCH] Feature #3748: Group quotas in settings --- src/sunstone/etc/sunstone-views/admin.yaml | 1 + .../etc/sunstone-views/admin_vcenter.yaml | 1 + src/sunstone/etc/sunstone-views/user.yaml | 1 + src/sunstone/public/app/tabs/settings-tab.js | 14 +- .../tabs/settings-tab/panels/group-quotas.js | 120 ++++++++++++++++++ .../panels/group-quotas/panelId.js | 3 + 6 files changed, 134 insertions(+), 6 deletions(-) create mode 100644 src/sunstone/public/app/tabs/settings-tab/panels/group-quotas.js create mode 100644 src/sunstone/public/app/tabs/settings-tab/panels/group-quotas/panelId.js diff --git a/src/sunstone/etc/sunstone-views/admin.yaml b/src/sunstone/etc/sunstone-views/admin.yaml index 825d935fee..b4adf55ef6 100644 --- a/src/sunstone/etc/sunstone-views/admin.yaml +++ b/src/sunstone/etc/sunstone-views/admin.yaml @@ -534,6 +534,7 @@ tabs: panel_tabs: user_info_tab: true user_quotas_tab: true + group_quotas_tab: true user_accounting_tab: true user_showback_tab: true actions: diff --git a/src/sunstone/etc/sunstone-views/admin_vcenter.yaml b/src/sunstone/etc/sunstone-views/admin_vcenter.yaml index 5bfb7752cd..4dc760b5b9 100644 --- a/src/sunstone/etc/sunstone-views/admin_vcenter.yaml +++ b/src/sunstone/etc/sunstone-views/admin_vcenter.yaml @@ -534,6 +534,7 @@ tabs: panel_tabs: user_info_tab: true user_quotas_tab: true + group_quotas_tab: true user_accounting_tab: true user_showback_tab: true actions: diff --git a/src/sunstone/etc/sunstone-views/user.yaml b/src/sunstone/etc/sunstone-views/user.yaml index 67e1b570bd..f24dcd6ecd 100644 --- a/src/sunstone/etc/sunstone-views/user.yaml +++ b/src/sunstone/etc/sunstone-views/user.yaml @@ -535,6 +535,7 @@ tabs: panel_tabs: user_info_tab: true user_quotas_tab: true + group_quotas_tab: true user_accounting_tab: true user_showback_tab: true actions: diff --git a/src/sunstone/public/app/tabs/settings-tab.js b/src/sunstone/public/app/tabs/settings-tab.js index 14a56cbd5d..a57b05424b 100644 --- a/src/sunstone/public/app/tabs/settings-tab.js +++ b/src/sunstone/public/app/tabs/settings-tab.js @@ -1,6 +1,6 @@ define(function(require) { var Locale = require('utils/locale'); - var OpenNebulaUser = require('opennebula/user') + var OpenNebulaUser = require('opennebula/user'); var Sunstone = require('sunstone'); var TAB_ID = require('./settings-tab/tabId'); @@ -19,14 +19,15 @@ define(function(require) { type: "custom", call: _onShow }, - } + }; var _dialogs = [ ]; - var _userPanels = [ + var _panels = [ require('tabs/users-tab/panels/info'), require('tabs/users-tab/panels/quotas'), + require('tabs/settings-tab/panels/group-quotas'), require('tabs/users-tab/panels/accounting'), require('tabs/users-tab/panels/showback') ]; @@ -45,7 +46,8 @@ define(function(require) { '' + '' + '', - dialogs: _dialogs + dialogs: _dialogs, + panels: _panels, }; return Tab; @@ -56,8 +58,8 @@ define(function(require) { id: -1 }, success: function(request, user_json) { - Sunstone.insertPanels(USERS_TAB_ID, user_json, TAB_ID, $(".right-list", $("#" + TAB_ID))) + Sunstone.insertPanels(TAB_ID, user_json, TAB_ID, $(".right-list", $("#" + TAB_ID))) } - }) + }); } }); diff --git a/src/sunstone/public/app/tabs/settings-tab/panels/group-quotas.js b/src/sunstone/public/app/tabs/settings-tab/panels/group-quotas.js new file mode 100644 index 0000000000..8f81fbf2ab --- /dev/null +++ b/src/sunstone/public/app/tabs/settings-tab/panels/group-quotas.js @@ -0,0 +1,120 @@ +define(function(require) { + /* + DEPENDENCIES + */ + + var Locale = require('utils/locale'); + var Config = require('sunstone-config'); + var QuotaDefaults = require('utils/quotas/quota-defaults'); + var QuotaWidgets = require('utils/quotas/quota-widgets'); + var OpenNebulaGroup = require('opennebula/group'); + var Sunstone = require('sunstone'); + + /* + CONSTANTS + */ + + var TAB_ID = require('../tabId'); + var PANEL_ID = require('./group-quotas/panelId'); + var RESOURCE = "User"; + var XML_ROOT = "USER"; + + var GROUP_TAB_ID = require('tabs/groups-tab/tabId'); + + /* + CONSTRUCTOR + */ + + function Panel(info, tabId) { + this.tabId = tabId || TAB_ID; + this.title = Locale.tr("Group Quotas"); + this.icon = "fa-align-left"; + + this.element = info[XML_ROOT]; + + return this; + } + + Panel.PANEL_ID = PANEL_ID; + Panel.prototype.html = _html; + Panel.prototype.setup = _setup; + + return Panel; + + /* + FUNCTION DEFINITIONS + */ + + function _html() { + return '
\ +
\ + \ +
\ +
\ +
\ +
'; + } + + function _setup(context) { + + var groups = this.element.GROUPS.ID; + + if (!$.isArray(groups)){ + groups = [groups]; + } + + var groupDropdownOptions = ""; + $.each(groups, function(){ + groupDropdownOptions += + ''; + }); + + // TODO bug Sunstone.getDataTable(GROUP_TAB_ID) fails for user.yaml, groups-tab does not exist + + $('select#quota_group_sel', context).html(groupDropdownOptions); + + $("#quota_group_sel", context).off("change"); + $("#quota_group_sel", context).on("change", function() { + var value_str = $('select#quota_group_sel').val(); + if(value_str!="") + { + fillGroupQuotas(value_str, context); + } + }); + + fillGroupQuotas('-1', context); + + return false; + } + + function fillGroupQuotas(group_id, context){ + OpenNebulaGroup.show({ + data : { + id: group_id + }, + success: function(request,group_json){ + var info = group_json.GROUP; + + var quotas_tab_html = QuotaWidgets.initQuotasPanel( + info, + QuotaDefaults.getDefaultQuotas("Group"), + false); + + $("#group_quotasTabBody", context).html(quotas_tab_html); + + QuotaWidgets.setupQuotasPanel( + info, + $("#group_quotasTabBody", context), + false, + "Group"); + + $("select#quota_group_sel", context).val(info.ID); + } + }); + } +}); diff --git a/src/sunstone/public/app/tabs/settings-tab/panels/group-quotas/panelId.js b/src/sunstone/public/app/tabs/settings-tab/panels/group-quotas/panelId.js new file mode 100644 index 0000000000..444fa8ec13 --- /dev/null +++ b/src/sunstone/public/app/tabs/settings-tab/panels/group-quotas/panelId.js @@ -0,0 +1,3 @@ +define(function(require){ + return 'group_quotas_tab'; +}); \ No newline at end of file