diff --git a/src/sunstone/public/app/tabs/vms-tab.js b/src/sunstone/public/app/tabs/vms-tab.js index 56d5d10d72..f83d36ea80 100644 --- a/src/sunstone/public/app/tabs/vms-tab.js +++ b/src/sunstone/public/app/tabs/vms-tab.js @@ -10,7 +10,8 @@ define(function(require) { var _dialogs = [ require('./vms-tab/dialogs/deploy'), require('./vms-tab/dialogs/migrate'), - require('./vms-tab/dialogs/resize') + require('./vms-tab/dialogs/resize'), + require('./vms-tab/dialogs/attach-disk') ]; var _panels = [ diff --git a/src/sunstone/public/app/tabs/vms-tab/dialogs/attach-disk.js b/src/sunstone/public/app/tabs/vms-tab/dialogs/attach-disk.js new file mode 100644 index 0000000000..3b734a76c9 --- /dev/null +++ b/src/sunstone/public/app/tabs/vms-tab/dialogs/attach-disk.js @@ -0,0 +1,85 @@ +define(function(require) { + /* + DEPENDENCIES + */ + + var BaseDialog = require('utils/dialogs/dialog'); + var TemplateHTML = require('hbs!./attach-disk/html'); + var Sunstone = require('sunstone'); + var Notifier = require('utils/notifier'); + var Tips = require('utils/tips'); + var DiskTab = require('tabs/templates-tab/form-panels/create/wizard-tabs/storage/disk-tab'); + var WizardFields = require('utils/wizard-fields'); + + /* + CONSTANTS + */ + + var DIALOG_ID = require('./attach-disk/dialogId'); + var TAB_ID = require('../tabId') + + /* + CONSTRUCTOR + */ + + function Dialog() { + this.dialogId = DIALOG_ID; + + this.diskTab = new DiskTab(DIALOG_ID + 'DiskTab'); + + BaseDialog.call(this); + }; + + Dialog.DIALOG_ID = DIALOG_ID; + Dialog.prototype = Object.create(BaseDialog.prototype); + Dialog.prototype.constructor = Dialog; + Dialog.prototype.html = _html; + Dialog.prototype.onShow = _onShow; + Dialog.prototype.setup = _setup; + Dialog.prototype.setElement = _setElement; + + return Dialog; + + /* + FUNCTION DEFINITIONS + */ + + function _html() { + return TemplateHTML({ + 'dialogId': this.dialogId, + 'diskTabHTML': this.diskTab.html() + }); + } + + function _setup(context) { + var that = this; + that.diskTab.setup(); + + Tips.setup(context); + + $('#' + DIALOG_ID + 'Form', context).submit(function() { + var templateJSON = that.diskTab.retrieve(context); + var obj = { + "DISK": templateJSON + } + + Sunstone.runAction('VM.attachdisk', that.element.ID, obj); + + Sunstone.getDialog(DIALOG_ID).hide(); + Sunstone.getDialog(DIALOG_ID).reset(); + return false; + }); + + return false; + } + + function _onShow(context) { + this.diskTab.onShow(context); + $("#vm_id", context).val(this.element.ID); + return false; + } + + function _setElement(element) { + this.element = element + } +}); diff --git a/src/sunstone/public/app/tabs/vms-tab/dialogs/attach-disk/dialogId.js b/src/sunstone/public/app/tabs/vms-tab/dialogs/attach-disk/dialogId.js new file mode 100644 index 0000000000..133229a580 --- /dev/null +++ b/src/sunstone/public/app/tabs/vms-tab/dialogs/attach-disk/dialogId.js @@ -0,0 +1,3 @@ +define(function(require) { + return 'attachDiskVMDialog'; +}) diff --git a/src/sunstone/public/app/tabs/vms-tab/dialogs/attach-disk/html.hbs b/src/sunstone/public/app/tabs/vms-tab/dialogs/attach-disk/html.hbs new file mode 100644 index 0000000000..44c0c1acdb --- /dev/null +++ b/src/sunstone/public/app/tabs/vms-tab/dialogs/attach-disk/html.hbs @@ -0,0 +1,24 @@ + \ No newline at end of file