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:
parent
893fdefc0f
commit
13d05f2184
@ -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 = [
|
||||
|
@ -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,
|
||||
|
11
src/sunstone/public/app/tabs/oneflow-dashboard.js
Normal file
11
src/sunstone/public/app/tabs/oneflow-dashboard.js
Normal 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> OneFlow',
|
||||
no_content: true
|
||||
};
|
||||
|
||||
return Tab;
|
||||
});
|
47
src/sunstone/public/app/tabs/oneflow-templates-tab.js
Normal file
47
src/sunstone/public/app/tabs/oneflow-templates-tab.js
Normal 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> '+Locale.tr("OneFlow - Templates"),
|
||||
infoHeader: '<i class="fa fa-fw fa-file-o"></i> '+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;
|
||||
});
|
119
src/sunstone/public/app/tabs/oneflow-templates-tab/actions.js
Normal file
119
src/sunstone/public/app/tabs/oneflow-templates-tab/actions.js
Normal 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;
|
||||
});
|
@ -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;
|
||||
});
|
@ -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
|
||||
];
|
||||
}
|
||||
});
|
@ -0,0 +1,3 @@
|
||||
define(function(require){
|
||||
return 'oneflow-templates';
|
||||
});
|
Loading…
x
Reference in New Issue
Block a user