diff --git a/src/sunstone/public/app/tabs/templates-tab/actions.js b/src/sunstone/public/app/tabs/templates-tab/actions.js index 25e5e5d891..4db151c948 100644 --- a/src/sunstone/public/app/tabs/templates-tab/actions.js +++ b/src/sunstone/public/app/tabs/templates-tab/actions.js @@ -2,16 +2,23 @@ define(function(require) { var Sunstone = require('sunstone'); var Notifier = require('utils/notifier'); var Locale = require('utils/locale'); - var DataTable = require('./datatable'); var OpenNebulaTemplate = require('opennebula/template'); + var CommonActions = require('utils/common-actions'); var TAB_ID = require('./tabId'); var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId'); var CLONE_DIALOG_ID = require('./dialogs/clone/dialogId'); var INSTANTIATE_DIALOG_ID = require('./dialogs/instantiate/dialogId'); var XML_ROOT = "VMTEMPLATE" + var RESOURCE = "Template" + + var _commonActions = new CommonActions(OpenNebulaTemplate, RESOURCE, TAB_ID); var _actions = { + "Template.list" : _commonActions.list(), + "Template.show" : _commonActions.show(), + "Template.refresh" : _commonActions.refresh(), + "Template.delete" : _commonActions.delete(), "Template.create" : { type: "create", call: OpenNebulaTemplate.create, @@ -74,38 +81,6 @@ define(function(require) { Notifier.onError(request, response); } }, - "Template.list" : { - type: "list", - call: OpenNebulaTemplate.list, - callback: function(request, response) { - Sunstone.getDataTable(TAB_ID).updateView(request, response); - }, - error: Notifier.onError - }, - "Template.show" : { - type: "single", - call: OpenNebulaTemplate.show, - callback: function(request, response) { - Sunstone.getDataTable(TAB_ID).updateElement(request, response); - if (Sunstone.rightInfoVisible($('#' + TAB_ID))) { - Sunstone.insertPanels(TAB_ID, response); - } - }, - error: Notifier.onError - }, - "Template.refresh" : { - type: "custom", - call: function() { - var tab = $('#' + TAB_ID); - if (Sunstone.rightInfoVisible(tab)) { - Sunstone.runAction("Template.show", Sunstone.rightInfoResourceId(tab)); - } else { - Sunstone.getDataTable(TAB_ID).waitingNodes(); - Sunstone.runAction("Template.list", {force: true}); - } - }, - error: Notifier.onError - }, "Template.rename" : { type: "single", call: OpenNebulaTemplate.rename, @@ -115,18 +90,6 @@ define(function(require) { error: Notifier.onError, notify: true }, - "Template.delete" : { - type: "multiple", - call : OpenNebulaTemplate.del, - callback : function(request, response) { - Sunstone.getDataTable(TAB_ID).deleteElement(request, response); - }, - elements: function() { - return Sunstone.getDataTable(TAB_ID).elements(); - }, - error: Notifier.onError, - notify: true - }, "Template.instantiate" : { type: "multiple", call: OpenNebulaTemplate.instantiate, diff --git a/src/sunstone/public/app/utils/common-actions.js b/src/sunstone/public/app/utils/common-actions.js new file mode 100644 index 0000000000..acb42be1a1 --- /dev/null +++ b/src/sunstone/public/app/utils/common-actions.js @@ -0,0 +1,82 @@ +define(function(require) { + var Sunstone = require('sunstone'); + var Notifier = require('utils/notifier'); + var Locale = require('utils/locale'); + + /* + CONSTRUCTOR + */ + + function CommonActions(openNebulaResource, resourceStr, tabId) { + this.openNebulaResource = openNebulaResource; + this.tabId = tabId; + this.resourceStr = resourceStr; + } + + CommonActions.prototype.list = _list; + CommonActions.prototype.show = _show; + CommonActions.prototype.refresh = _refresh; + CommonActions.prototype.delete = _delete; + + return CommonActions; + + function _list() { + var that = this; + return { + type: "list", + call: that.openNebulaResource.list, + callback: function(request, response) { + Sunstone.getDataTable(that.tabId).updateView(request, response); + }, + error: Notifier.onError + } + } + + function _show() { + var that = this; + return { + type: "single", + call: that.openNebulaResource.show, + callback: function(request, response) { + Sunstone.getDataTable(that.tabId).updateElement(request, response); + if (Sunstone.rightInfoVisible($('#' + that.tabId))) { + Sunstone.insertPanels(that.tabId, response); + } + }, + error: Notifier.onError + } + } + + function _refresh() { + var that = this; + return { + type: "custom", + call: function() { + var tab = $('#' + that.tabId); + if (Sunstone.rightInfoVisible(tab)) { + Sunstone.runAction(that.resourceStr + ".show", Sunstone.rightInfoResourceId(tab)); + } else { + Sunstone.getDataTable(that.tabId).waitingNodes(); + Sunstone.runAction(that.resourceStr + ".list", {force: true}); + } + }, + error: Notifier.onError + } + } + + function _delete() { + var that = this; + return { + type: "multiple", + call : that.openNebulaResource.del, + callback : function(request, response) { + Sunstone.getDataTable(that.tabId).deleteElement(request, response); + }, + elements: function() { + return Sunstone.getDataTable(that.tabId).elements(); + }, + error: Notifier.onError, + notify: true + } + } +});