mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-21 14:50:08 +03:00
Feature #3748: Oneflow service tab
This commit is contained in:
parent
13d05f2184
commit
19ed2a1c4b
@ -23,6 +23,7 @@ define(function(require) {
|
||||
require('tabs/zones-tab'),
|
||||
require('tabs/marketplace-tab'),
|
||||
require('tabs/oneflow-dashboard'),
|
||||
require('tabs/oneflow-services-tab'),
|
||||
require('tabs/oneflow-templates-tab')
|
||||
];
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
define(function(require) {
|
||||
var OpenNebulaAction = require('./action');
|
||||
var Locale = require('utils/locale');
|
||||
|
||||
var RESOURCE = "DOCUMENT";
|
||||
var PATH = 'service';
|
||||
@ -42,17 +43,17 @@ define(function(require) {
|
||||
},
|
||||
"state" : function(state_int) {
|
||||
var state = [
|
||||
tr("PENDING"),
|
||||
tr("DEPLOYING"),
|
||||
tr("RUNNING"),
|
||||
tr("UNDEPLOYING"),
|
||||
tr("WARNING"),
|
||||
tr("DONE"),
|
||||
tr("FAILED_UNDEPLOYING"),
|
||||
tr("FAILED_DEPLOYING"),
|
||||
tr("SCALING"),
|
||||
tr("FAILED_SCALING"),
|
||||
tr("COOLDOWN")
|
||||
Locale.tr("PENDING"),
|
||||
Locale.tr("DEPLOYING"),
|
||||
Locale.tr("RUNNING"),
|
||||
Locale.tr("UNDEPLOYING"),
|
||||
Locale.tr("WARNING"),
|
||||
Locale.tr("DONE"),
|
||||
Locale.tr("FAILED_UNDEPLOYING"),
|
||||
Locale.tr("FAILED_DEPLOYING"),
|
||||
Locale.tr("SCALING"),
|
||||
Locale.tr("FAILED_SCALING"),
|
||||
Locale.tr("COOLDOWN")
|
||||
][state_int]
|
||||
return state ? state : state_int;
|
||||
}
|
||||
|
43
src/sunstone/public/app/tabs/oneflow-services-tab.js
Normal file
43
src/sunstone/public/app/tabs/oneflow-services-tab.js
Normal file
@ -0,0 +1,43 @@
|
||||
define(function(require) {
|
||||
var Locale = require('utils/locale');
|
||||
var Buttons = require('./oneflow-services-tab/buttons');
|
||||
var Actions = require('./oneflow-services-tab/actions');
|
||||
var Table = require('./oneflow-services-tab/datatable');
|
||||
|
||||
var TAB_ID = require('./oneflow-services-tab/tabId');
|
||||
var DATATABLE_ID = "dataTableService";
|
||||
var RESOURCE = "Service";
|
||||
|
||||
var _dialogs = [
|
||||
];
|
||||
|
||||
var _panels = [
|
||||
];
|
||||
|
||||
var _formPanels = [
|
||||
];
|
||||
|
||||
var Tab = {
|
||||
tabId: TAB_ID,
|
||||
title: Locale.tr("Services"),
|
||||
tabClass: "subTab",
|
||||
parentTab: "oneflow-dashboard",
|
||||
listHeader: '<i class="fa fa-fw fa-cubes"></i> '+Locale.tr("OneFlow - Services"),
|
||||
infoHeader: '<i class="fa fa-fw fa-cubes"></i> '+Locale.tr("OneFlow - Service"),
|
||||
subheader: '',
|
||||
content: '<div class="row oneflow_services_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;
|
||||
});
|
56
src/sunstone/public/app/tabs/oneflow-services-tab/actions.js
Normal file
56
src/sunstone/public/app/tabs/oneflow-services-tab/actions.js
Normal file
@ -0,0 +1,56 @@
|
||||
define(function(require) {
|
||||
var Sunstone = require('sunstone');
|
||||
var Notifier = require('utils/notifier');
|
||||
var Locale = require('utils/locale');
|
||||
var OpenNebulaResource = require('opennebula/service');
|
||||
var CommonActions = require('utils/common-actions');
|
||||
|
||||
var TAB_ID = require('./tabId');
|
||||
var XML_ROOT = "DOCUMENT";
|
||||
var RESOURCE = "Service";
|
||||
|
||||
var _commonActions = new CommonActions(OpenNebulaResource, RESOURCE, TAB_ID);
|
||||
|
||||
var _actions = {
|
||||
"Service.show" : _commonActions.show(),
|
||||
"Service.refresh" : _commonActions.refresh(),
|
||||
"Service.delete" : _commonActions.delete(),
|
||||
"Service.chown": _commonActions.multipleAction('chown'),
|
||||
"Service.chgrp": _commonActions.multipleAction('chgrp'),
|
||||
"Service.chmod": _commonActions.singleAction('chmod'),
|
||||
|
||||
"Service.list" : {
|
||||
type: "list",
|
||||
call: OpenNebulaResource.list,
|
||||
callback: function(request, response) {
|
||||
$(".oneflow_services_error_message").hide();
|
||||
Sunstone.getDataTable(TAB_ID).updateView(request, response);
|
||||
},
|
||||
error: function(request, error_json) {
|
||||
Notifier.onError(request, error_json, $(".oneflow_services_error_message"));
|
||||
}
|
||||
},
|
||||
|
||||
/* TODO
|
||||
|
||||
"Service.shutdown" : {
|
||||
type: "multiple",
|
||||
call: OpenNebula.Service.shutdown,
|
||||
elements: serviceElements,
|
||||
error: onError,
|
||||
notify: true
|
||||
},
|
||||
|
||||
"Service.recover" : {
|
||||
type: "multiple",
|
||||
call: OpenNebula.Service.recover,
|
||||
elements: serviceElements,
|
||||
error: onError,
|
||||
notify: true
|
||||
}
|
||||
|
||||
*/
|
||||
};
|
||||
|
||||
return _actions;
|
||||
});
|
43
src/sunstone/public/app/tabs/oneflow-services-tab/buttons.js
Normal file
43
src/sunstone/public/app/tabs/oneflow-services-tab/buttons.js
Normal file
@ -0,0 +1,43 @@
|
||||
define(function(require) {
|
||||
var Locale = require('utils/locale');
|
||||
|
||||
var Buttons = {
|
||||
"Service.refresh" : {
|
||||
type: "action",
|
||||
layout: "refresh",
|
||||
alwaysActive: true
|
||||
},
|
||||
"Service.chown" : {
|
||||
type: "confirm_with_select",
|
||||
text: Locale.tr("Change owner"),
|
||||
select: "User",
|
||||
tip: Locale.tr("Select the new owner")+":",
|
||||
layout: "user_select"
|
||||
},
|
||||
"Service.chgrp" : {
|
||||
type: "confirm_with_select",
|
||||
text: Locale.tr("Change group"),
|
||||
select: "Group",
|
||||
tip: Locale.tr("Select the new group")+":",
|
||||
layout: "user_select"
|
||||
},
|
||||
"Service.shutdown" : {
|
||||
type: "action",
|
||||
layout: "main",
|
||||
text: Locale.tr("Shutdown")
|
||||
},
|
||||
"Service.recover" : {
|
||||
type: "action",
|
||||
layout: "main",
|
||||
text: Locale.tr("Recover")
|
||||
},
|
||||
"Service.delete" : {
|
||||
type: "confirm",
|
||||
text: Locale.tr("Delete"),
|
||||
layout: "del",
|
||||
tip: Locale.tr("This will delete the selected services")
|
||||
}
|
||||
};
|
||||
|
||||
return Buttons;
|
||||
});
|
@ -0,0 +1,86 @@
|
||||
define(function(require) {
|
||||
/*
|
||||
DEPENDENCIES
|
||||
*/
|
||||
|
||||
var TabDataTable = require('utils/tab-datatable');
|
||||
var SunstoneConfig = require('sunstone-config');
|
||||
var Locale = require('utils/locale');
|
||||
var OpenNebulaService = require('opennebula/service');
|
||||
|
||||
/*
|
||||
CONSTANTS
|
||||
*/
|
||||
|
||||
var RESOURCE = "Service";
|
||||
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"),
|
||||
Locale.tr("State")
|
||||
];
|
||||
|
||||
this.selectOptions = {
|
||||
"id_index": 1,
|
||||
"name_index": 4,
|
||||
"select_resource": Locale.tr("Please select a Service from the list"),
|
||||
"you_selected": Locale.tr("You selected the following Service:"),
|
||||
"select_resource_multiple": Locale.tr("Please select one or more Services from the list"),
|
||||
"you_selected_multiple": Locale.tr("You selected the following Services:")
|
||||
};
|
||||
|
||||
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,
|
||||
OpenNebulaService.state(element.TEMPLATE.BODY.state)
|
||||
];
|
||||
}
|
||||
});
|
@ -0,0 +1,3 @@
|
||||
define(function(require){
|
||||
return 'oneflow-services';
|
||||
});
|
Loading…
x
Reference in New Issue
Block a user