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

Feature #3748: Oneflow template tab

This commit is contained in:
Carlos Martín 2015-06-09 11:23:19 +02:00
parent 893fdefc0f
commit 13d05f2184
8 changed files with 314 additions and 2 deletions

View File

@ -21,7 +21,9 @@ define(function(require) {
require('tabs/vnets-tab'),
require('tabs/secgroups-tab'),
require('tabs/zones-tab'),
require('tabs/marketplace-tab')
require('tabs/marketplace-tab'),
require('tabs/oneflow-dashboard'),
require('tabs/oneflow-templates-tab')
];
var _commonDialogs = [

View File

@ -3,7 +3,7 @@ define(function(require) {
var RESOURCE = "DOCUMENT";
var PATH = 'service_template';
var CACHE_NAME = CACHE_NAME;
var CACHE_NAME = "SERVICE_TEMPLATE";
var ServiceTemplate = {
"resource": RESOURCE,

View File

@ -0,0 +1,11 @@
define(function(require) {
var TAB_ID = 'oneflow-dashboard';
var Tab = {
tabId: TAB_ID,
title: '<i class="fa fa-lg fa-fw fa-cubes"></i>&emsp;OneFlow',
no_content: true
};
return Tab;
});

View File

@ -0,0 +1,47 @@
define(function(require) {
var Locale = require('utils/locale');
var Buttons = require('./oneflow-templates-tab/buttons');
var Actions = require('./oneflow-templates-tab/actions');
var Table = require('./oneflow-templates-tab/datatable');
var TAB_ID = require('./oneflow-templates-tab/tabId');
var DATATABLE_ID = "dataTableServiceTemplates";
var RESOURCE = "ServiceTemplate";
var _dialogs = [
//require('./oneflow-templates-tab/dialogs/instantiate')
];
var _panels = [
//require('./oneflow-templates-tab/panels/info'),
//require('./oneflow-templates-tab/panels/roles')
];
var _formPanels = [
//require('./oneflow-templates-tab/form-panels/create')
];
var Tab = {
tabId: TAB_ID,
title: Locale.tr("Templates"),
tabClass: "subTab",
parentTab: "oneflow-dashboard",
listHeader: '<i class="fa fa-fw fa-file-o"></i>&emsp;'+Locale.tr("OneFlow - Templates"),
infoHeader: '<i class="fa fa-fw fa-file-o"></i>&emsp;'+Locale.tr("OneFlow - Template"),
subheader: '',
content: '<div class="row oneflow_templates_error_message" hidden>\
<div class="small-6 columns small-centered text-center">\
<div class="alert-box alert radius">'+Locale.tr("Cannot connect to OneFlow server")+'</div>\
</div>\
</div>',
resource: RESOURCE,
buttons: Buttons,
actions: Actions,
dataTable: new Table(DATATABLE_ID, {actions: true, info: true}),
panels: _panels,
formPanels: _formPanels,
dialogs: _dialogs
};
return Tab;
});

View File

@ -0,0 +1,119 @@
define(function(require) {
var Sunstone = require('sunstone');
var Notifier = require('utils/notifier');
var Locale = require('utils/locale');
var OpenNebulaResource = require('opennebula/servicetemplate');
var CommonActions = require('utils/common-actions');
var TAB_ID = require('./tabId');
//var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');
//var INSTANTIATE_DIALOG_ID = require('./dialogs/instantiate/dialogId');
var XML_ROOT = "DOCUMENT";
var RESOURCE = "ServiceTemplate";
var _commonActions = new CommonActions(OpenNebulaResource, RESOURCE, TAB_ID);
var _actions = {
"ServiceTemplate.show" : _commonActions.show(),
"ServiceTemplate.refresh" : _commonActions.refresh(),
"ServiceTemplate.delete" : _commonActions.delete(),
"ServiceTemplate.chown": _commonActions.multipleAction('chown'),
"ServiceTemplate.chgrp": _commonActions.multipleAction('chgrp'),
"ServiceTemplate.chmod": _commonActions.singleAction('chmod'),
"ServiceTemplate.list" : {
type: "list",
call: OpenNebulaResource.list,
callback: function(request, response) {
$(".oneflow_templates_error_message").hide();
Sunstone.getDataTable(TAB_ID).updateView(request, response);
},
error: function(request, error_json) {
Notifier.onError(request, error_json, $(".oneflow_templates_error_message"));
}
},
"ServiceTemplate.create" : {
type: "create",
call: OpenNebulaResource.create,
callback: function(request, response){
Sunstone.resetFormPanel(TAB_ID, CREATE_DIALOG_ID);
Sunstone.hideFormPanel(TAB_ID);
Sunstone.getDataTable(TAB_ID).addElement(request, response);
},
error: function(request, response){
Sunstone.hideFormPanelLoading(TAB_ID);
Notifier.onError(request, response);
}
},
"ServiceTemplate.create_dialog" : {
type: "custom",
call: function() {
Sunstone.showFormPanel(TAB_ID, CREATE_DIALOG_ID, "create");
}
},
"ServiceTemplate.update_dialog" : {
type: "custom",
call: function() {
var selected_nodes = Sunstone.getDataTable(TAB_ID).elements();
if (selected_nodes.length != 1) {
Notifier.notifyMessage("Please select one (and just one) template to update.");
return false;
}
var resource_id = "" + selected_nodes[0];
Sunstone.runAction(RESOURCE+".show_to_update", resource_id);
}
},
"ServiceTemplate.show_to_update" : {
type: "single",
call: OpenNebulaResource.show,
callback: function(request, response) {
Sunstone.showFormPanel(TAB_ID, CREATE_DIALOG_ID, "update",
function(formPanelInstance, context) {
formPanelInstance.fill(context, response[XML_ROOT]);
});
},
error: Notifier.onError
},
"ServiceTemplate.update" : {
type: "single",
call: OpenNebulaResource.update,
callback: function(request, response){
Sunstone.hideFormPanel(TAB_ID);
Notifier.notifyMessage(Locale.tr("ServiceTemplate updated correctly"));
},
error: function(request, response) {
Sunstone.hideFormPanelLoading(TAB_ID);
Notifier.onError(request, response);
}
},
/* TODO
"ServiceTemplate.instantiate" : {
type: "multiple",
call: OpenNebula.ServiceTemplate.instantiate,
callback: function(req){
OpenNebula.Helper.clear_cache("SERVICE");
},
elements: serviceTemplateElements,
error: onError,
notify: true
},
"ServiceTemplate.instantiate_dialog" : {
type: "custom",
call: function(){
popUpInstantiateServiceTemplateDialog();
}
},
*/
};
return _actions;
});

View File

@ -0,0 +1,47 @@
define(function(require) {
var Locale = require('utils/locale');
var Buttons = {
"ServiceTemplate.refresh" : {
type: "action",
layout: "refresh",
alwaysActive: true
},
"ServiceTemplate.create_dialog" : {
type: "create_dialog",
layout: "create"
},
"ServiceTemplate.instantiate_dialog" : {
type: "action",
layout: "main",
text: Locale.tr("Instantiate")
},
"ServiceTemplate.update_dialog" : {
type: "action",
layout: "main",
text: Locale.tr("Update")
},
"ServiceTemplate.chown" : {
type: "confirm_with_select",
text: Locale.tr("Change owner"),
select: "User",
layout: "user_select",
tip: Locale.tr("Select the new owner")+":"
},
"ServiceTemplate.chgrp" : {
type: "confirm_with_select",
text: Locale.tr("Change group"),
select: "Group",
layout: "user_select",
tip: Locale.tr("Select the new group")+":"
},
"ServiceTemplate.delete" : {
type: "confirm",
text: Locale.tr("Delete"),
layout: "del",
tip: Locale.tr("This will delete the selected templates")
}
};
return Buttons;
});

View File

@ -0,0 +1,83 @@
define(function(require) {
/*
DEPENDENCIES
*/
var TabDataTable = require('utils/tab-datatable');
var SunstoneConfig = require('sunstone-config');
var Locale = require('utils/locale');
/*
CONSTANTS
*/
var RESOURCE = "ServiceTemplate";
var XML_ROOT = "DOCUMENT";
var TAB_NAME = require('./tabId');
/*
CONSTRUCTOR
*/
function Table(dataTableId, conf) {
this.conf = conf || {};
this.tabId = TAB_NAME;
this.dataTableId = dataTableId;
this.resource = RESOURCE;
this.xmlRoot = XML_ROOT;
this.dataTableOptions = {
"bAutoWidth": false,
"bSortClasses" : false,
"bDeferRender": true,
"aoColumnDefs": [
{"bSortable": false, "aTargets": ["check"]},
{"sWidth": "35px", "aTargets": [0]},
{"bVisible": true, "aTargets": SunstoneConfig.tabTableColumns(TAB_NAME)},
{"bVisible": false, "aTargets": ['_all']}
]
};
this.columns = [
Locale.tr("ID") ,
Locale.tr("Owner") ,
Locale.tr("Group"),
Locale.tr("Name")
];
this.selectOptions = {
"id_index": 1,
"name_index": 4,
"select_resource": Locale.tr("Please select a Template from the list"),
"you_selected": Locale.tr("You selected the following Template:"),
"select_resource_multiple": Locale.tr("Please select one or more Templates from the list"),
"you_selected_multiple": Locale.tr("You selected the following Templates:")
};
TabDataTable.call(this);
}
Table.prototype = Object.create(TabDataTable.prototype);
Table.prototype.constructor = Table;
Table.prototype.elementArray = _elementArray;
return Table;
/*
FUNCTION DEFINITIONS
*/
function _elementArray(element_json) {
var element = element_json[XML_ROOT];
return [
'<input class="check_item" type="checkbox" id="' + RESOURCE.toLowerCase() + '_' +
element.ID + '" name="selected_items" value="' +
element.ID + '"/>',
element.ID,
element.UNAME,
element.GNAME,
element.NAME
];
}
});

View File

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