1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-20 10:50:08 +03:00

Feature #3748: Oneflow service scale dialog

This commit is contained in:
Carlos Martín 2015-06-15 13:00:04 +02:00
parent 64248d53e8
commit c46fcc0283
7 changed files with 151 additions and 8 deletions

View File

@ -1,6 +1,7 @@
define(function(require) {
var OpenNebulaAction = require('./action');
var OpenNebulaError = require('./error');
var OpenNebulaHelper = require('./helper');
var Locale = require('utils/locale');
var RESOURCE = "DOCUMENT";
@ -165,7 +166,7 @@ define(function(require) {
PATH);
},
"update" : function(params) {
var request = OpenNebula.Helper.request(RESOURCE, "update", params.data.id);
var request = OpenNebulaHelper.request(RESOURCE, "update", params.data.id);
$.ajax({
url: PATH + "/" + params.data.id,

View File

@ -9,6 +9,7 @@ define(function(require) {
var RESOURCE = "Service";
var _dialogs = [
require('./oneflow-services-tab/dialogs/scale'),
];
var _panels = [

View File

@ -12,6 +12,7 @@ define(function(require) {
var RESOURCE = "Service";
var ROLES_PANEL_ID = require('./panels/roles/panelId');
var SCALE_DIALOG_ID = require('./dialogs/scale/dialogId');
var _commonActions = new CommonActions(OpenNebulaResource, RESOURCE, TAB_ID);
@ -85,21 +86,32 @@ define(function(require) {
//--------------------------------------------------------------------------
/* TODO
"Role.update_dialog" : {
"Role.scale_dialog" : {
type: "custom",
call: popUpScaleDialog
call: function(){
selected = roleElements();
if(selected.lenght == 0){
return;
}
Sunstone.getDialog(SCALE_DIALOG_ID).setParams({roleIds: selected});
Sunstone.getDialog(SCALE_DIALOG_ID).reset();
Sunstone.getDialog(SCALE_DIALOG_ID).show();
}
},
"Role.update" : {
type: "multiple",
call: OpenNebulaRole.update,
callback: roleCallback,
callback: function() {
Sunstone.getDialog(SCALE_DIALOG_ID).hide();
roleCallback();
},
elements: roleElements,
error: Notifier.onError,
notify: true
},
*/
"Role.hold" : {
type: "multiple",

View File

@ -0,0 +1,98 @@
define(function(require) {
/*
DEPENDENCIES
*/
var BaseDialog = require('utils/dialogs/dialog');
var TemplateHTML = require('hbs!./scale/html');
var Sunstone = require('sunstone');
var Notifier = require('utils/notifier');
var Locale = require('utils/locale');
var Tips = require('utils/tips');
/*
CONSTANTS
*/
var DIALOG_ID = require('./scale/dialogId');
var TAB_ID = require('../tabId');
/*
CONSTRUCTOR
*/
function Dialog() {
this.dialogId = DIALOG_ID;
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.setParams = _setParams;
return Dialog;
/*
FUNCTION DEFINITIONS
*/
function _html() {
return TemplateHTML({
'dialogId': this.dialogId
});
}
function _onShow(context) {
}
function _setup(context) {
var that = this;
context.off('invalid.fndtn.abide', '#' + DIALOG_ID + 'Form');
context.off('valid.fndtn.abide', '#' + DIALOG_ID + 'Form');
context.on('invalid.fndtn.abide', '#' + DIALOG_ID + 'Form', function(e) {
// Fix for valid event firing twice
if (e.namespace != 'abide.fndtn') { return; }
Notifier.notifyError(Locale.tr("One or more required fields are missing or malformed."));
}).on('valid.fndtn.abide', '#' + DIALOG_ID + 'Form', function(e) {
// Fix for valid event firing twice
if (e.namespace != 'abide.fndtn') { return; }
var force = false;
if ($("#force", context).is(":checked")) {
force = true;
}
var obj = {
"force": force,
"cardinality": $("#cardinality", context).val(),
};
Sunstone.runAction('Role.update', that.roleIds, obj);
return false;
});
context.foundation('reflow', 'abide');
Tips.setup(context);
return false;
}
/**
* @param {object} params
* - params.roleIds : Array of selected role IDs
*/
function _setParams(params) {
this.roleIds = params.roleIds;
}
});

View File

@ -0,0 +1,3 @@
define(function(require){
return 'scaleServiceRoleDialog';
});

View File

@ -0,0 +1,29 @@
<div id="{{dialogId}}" class="reveal-modal" role="dialog" data-reveal >
<div class="row">
<h3 class="subheader">{{tr "Scale"}}</h3>
</div>
<form data-abide="ajax" id="{{dialogId}}Form">
<div class="row">
<div class="large-12 columns">
<label for="cardinality">{{tr "Cardinality"}}
<span class="tip">{{tr "Number of VMs to instantiate with this role"}}</span>
</label>
<input type="text" name="cardinality" id="cardinality"/>
</div>
</div>
<div class="row">
<div class="large-12 columns">
<input type="checkbox" name="force" id="force"/>
<label class="inline" for="force">{{tr "Force"}}
<span class="tip">{{tr "Force the new cardinality even if it is outside the limits"}}</span>
</label>
</div>
</div>
<div class="form_buttons row">
<button type="submit" class="button radius right">
{{tr "Scale"}}
</button>
</div>
<a class="close-reveal-modal">&#215;</a>
</form>
</div>

View File

@ -2,10 +2,9 @@ define(function(require) {
var Locale = require('utils/locale');
var Buttons = {
"Role.update_dialog" : {
"Role.scale_dialog" : {
type: "action",
text: Locale.tr("Scale"),
tip: Locale.tr("This will hold selected pending VMs from being deployed"),
layout: "create"
},
"Role.hold" : {