mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-23 22:50:09 +03:00
ture #3748: Marketplace tab
This commit is contained in:
parent
df3f2427b4
commit
b0eb8f1f19
@ -10,17 +10,18 @@ define(function(require) {
|
||||
require('tabs/vdcs-tab'),
|
||||
require('tabs/acls-tab'),
|
||||
require('tabs/vresources-tab'),
|
||||
require('tabs/vms-tab'),
|
||||
require('tabs/templates-tab'),
|
||||
require('tabs/images-tab'),
|
||||
require('tabs/files-tab'),
|
||||
require('tabs/vms-tab'),
|
||||
require('tabs/infra-tab'),
|
||||
require('tabs/clusters-tab'),
|
||||
require('tabs/hosts-tab'),
|
||||
require('tabs/datastores-tab'),
|
||||
require('tabs/vnets-tab'),
|
||||
require('tabs/secgroups-tab'),
|
||||
require('tabs/zones-tab')
|
||||
require('tabs/zones-tab'),
|
||||
require('tabs/marketplace-tab')
|
||||
];
|
||||
|
||||
var _commonDialogs = [
|
||||
|
@ -1,6 +1,7 @@
|
||||
define(function(require) {
|
||||
var OpenNebulaAction = require('./action');
|
||||
var OpenNebulaError = require('./error');
|
||||
var OpenNebulaHelper = require('./helper');
|
||||
|
||||
var RESOURCE = "MARKETPLACE";
|
||||
|
||||
@ -8,7 +9,7 @@ define(function(require) {
|
||||
"resource": RESOURCE,
|
||||
"show" : function(params) {
|
||||
params.error = function() {
|
||||
return notifyError("Cannot connect to OpenNebula Marketplace")
|
||||
return notifyError(Locale.tr("Cannot connect to OpenNebula Marketplace"));
|
||||
};
|
||||
OpenNebulaAction.show(params, RESOURCE);
|
||||
},
|
||||
@ -18,7 +19,7 @@ define(function(require) {
|
||||
var callback = params.success;
|
||||
var callback_error = params.error;
|
||||
var timeout = params.timeout || false;
|
||||
var request = OpenNebula.Helper.request('MARKETPLACE', 'list');
|
||||
var request = OpenNebulaHelper.request('MARKETPLACE', 'list');
|
||||
|
||||
$.ajax({
|
||||
url: 'marketplace',
|
||||
@ -35,7 +36,7 @@ define(function(require) {
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
return Marketplace;
|
||||
})
|
||||
});
|
41
src/sunstone/public/app/tabs/marketplace-tab.js
Normal file
41
src/sunstone/public/app/tabs/marketplace-tab.js
Normal file
@ -0,0 +1,41 @@
|
||||
define(function(require) {
|
||||
var Locale = require('utils/locale');
|
||||
var Buttons = require('./marketplace-tab/buttons');
|
||||
var Actions = require('./marketplace-tab/actions');
|
||||
var Table = require('./marketplace-tab/datatable');
|
||||
|
||||
var TAB_ID = require('./marketplace-tab/tabId');
|
||||
var DATATABLE_ID = "dataTableMarketplace";
|
||||
|
||||
var _dialogs = [
|
||||
];
|
||||
|
||||
var _panels = [
|
||||
//require('./marketplace-tab/panels/info')
|
||||
];
|
||||
|
||||
var _formPanels = [
|
||||
];
|
||||
|
||||
var Tab = {
|
||||
tabId: TAB_ID,
|
||||
title: '<i class="fa fa-lg fa-fw fa-shopping-cart"></i> ' + Locale.tr("Marketplace"),
|
||||
listHeader: '<i class="fa fa-fw fa-shopping-cart"></i> '+Locale.tr("OpenNebula Marketplace"),
|
||||
infoHeader: '<i class="fa fa-fw fa-shopping-cart"></i> '+Locale.tr("Appliance"),
|
||||
subheader: '<span/> <small></small> ',
|
||||
resource: 'Marketplace',
|
||||
content: '<div class="row marketplace_error_message" hidden>\
|
||||
<div class="small-6 columns small-centered text-center">\
|
||||
<div class="alert-box alert radius">'+Locale.tr("Cannot connect to OpenNebula Marketplace")+'</div>\
|
||||
</div>\
|
||||
</div>',
|
||||
buttons: Buttons,
|
||||
actions: Actions,
|
||||
dataTable: new Table(DATATABLE_ID, {actions: true, info: true}),
|
||||
panels: _panels,
|
||||
formPanels: _formPanels,
|
||||
dialogs: _dialogs
|
||||
};
|
||||
|
||||
return Tab;
|
||||
});
|
51
src/sunstone/public/app/tabs/marketplace-tab/actions.js
Normal file
51
src/sunstone/public/app/tabs/marketplace-tab/actions.js
Normal file
@ -0,0 +1,51 @@
|
||||
define(function(require) {
|
||||
var Sunstone = require('sunstone');
|
||||
var Notifier = require('utils/notifier');
|
||||
var Locale = require('utils/locale');
|
||||
var DataTable = require('./datatable');
|
||||
var OpenNebulaResource = require('opennebula/marketplace');
|
||||
|
||||
var RESOURCE = "Marketplace";
|
||||
var TAB_ID = require('./tabId');
|
||||
//var IMPORT_DIALOG_ID = require('./dialogs/import/dialogId');
|
||||
|
||||
var _actions = {
|
||||
"Marketplace.list" : {
|
||||
type: "list",
|
||||
call: OpenNebulaResource.list,
|
||||
callback: function(request, response) {
|
||||
Sunstone.getDataTable(TAB_ID).updateView(request, response.appliances);
|
||||
}
|
||||
},
|
||||
|
||||
"Marketplace.refresh" : {
|
||||
type: "custom",
|
||||
call: function() {
|
||||
var tab = $('#' + TAB_ID);
|
||||
if (Sunstone.rightInfoVisible(tab)) {
|
||||
Sunstone.runAction(RESOURCE+".show", Sunstone.rightInfoResourceId(tab));
|
||||
} else {
|
||||
Sunstone.getDataTable(TAB_ID).waitingNodes();
|
||||
Sunstone.runAction(RESOURCE+".list", {force: true});
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
"Marketplace.import" : {
|
||||
// TODO
|
||||
},
|
||||
|
||||
"Marketplace.show" : {
|
||||
type: "single",
|
||||
call: OpenNebulaResource.show,
|
||||
callback: function(request, response) {
|
||||
if (Sunstone.rightInfoVisible($('#'+TAB_ID))) {
|
||||
Sunstone.insertPanels(TAB_ID, response);
|
||||
}
|
||||
},
|
||||
error: Notifier.onError
|
||||
}
|
||||
};
|
||||
|
||||
return _actions;
|
||||
});
|
18
src/sunstone/public/app/tabs/marketplace-tab/buttons.js
Normal file
18
src/sunstone/public/app/tabs/marketplace-tab/buttons.js
Normal file
@ -0,0 +1,18 @@
|
||||
define(function(require) {
|
||||
var Locale = require('utils/locale');
|
||||
|
||||
var Buttons = {
|
||||
"Marketplace.refresh" : {
|
||||
type: "action",
|
||||
layout: "refresh",
|
||||
alwaysActive: true
|
||||
},
|
||||
"Marketplace.import" : {
|
||||
type: "action",
|
||||
layout: "main",
|
||||
text: Locale.tr('Import')
|
||||
}
|
||||
};
|
||||
|
||||
return Buttons;
|
||||
});
|
110
src/sunstone/public/app/tabs/marketplace-tab/datatable.js
Normal file
110
src/sunstone/public/app/tabs/marketplace-tab/datatable.js
Normal file
@ -0,0 +1,110 @@
|
||||
define(function(require) {
|
||||
/*
|
||||
DEPENDENCIES
|
||||
*/
|
||||
|
||||
var TabDataTable = require('utils/tab-datatable');
|
||||
var SunstoneConfig = require('sunstone-config');
|
||||
var Locale = require('utils/locale');
|
||||
|
||||
/*
|
||||
CONSTANTS
|
||||
*/
|
||||
|
||||
var RESOURCE = "Marketplace";
|
||||
//var XML_ROOT = "";
|
||||
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("Name"),
|
||||
Locale.tr("Publisher"),
|
||||
Locale.tr("Hypervisor"),
|
||||
Locale.tr("Arch"),
|
||||
Locale.tr("Format"),
|
||||
Locale.tr("Tags")
|
||||
];
|
||||
/*
|
||||
this.selectOptions = {
|
||||
};
|
||||
*/
|
||||
TabDataTable.call(this);
|
||||
}
|
||||
|
||||
Table.prototype = Object.create(TabDataTable.prototype);
|
||||
Table.prototype.constructor = Table;
|
||||
Table.prototype.elementArray = _elementArray;
|
||||
|
||||
return Table;
|
||||
|
||||
/*
|
||||
FUNCTION DEFINITIONS
|
||||
*/
|
||||
|
||||
function _elementArray(element) {
|
||||
var publisher = '-';
|
||||
var hypervisor = '-';
|
||||
var arch = '-';
|
||||
var format = '-';
|
||||
var tags = '-';
|
||||
|
||||
if(element.publisher != undefined){
|
||||
publisher = element.publisher;
|
||||
}
|
||||
|
||||
if(element.files != undefined && element.files.length > 0){
|
||||
if(element.files[0]["hypervisor"] != undefined){
|
||||
hypervisor = element.files[0]["hypervisor"];
|
||||
}
|
||||
|
||||
if(element.files[0]["os-arch"] != undefined){
|
||||
arch = element.files[0]["os-arch"];
|
||||
}
|
||||
|
||||
if(element.files[0]["format"] != undefined){
|
||||
format = element.files[0]["format"];
|
||||
}
|
||||
}
|
||||
|
||||
if(element.tags != undefined){
|
||||
tags = element.tags;
|
||||
}
|
||||
|
||||
return [
|
||||
'<input class="check_item" type="checkbox" id="'+
|
||||
RESOURCE.toLowerCase()+'_' +
|
||||
element._id.$oid + '" name="selected_items" value="' +
|
||||
element._id.$oid + '"/>',
|
||||
element._id.$oid,
|
||||
element.name,
|
||||
publisher,
|
||||
hypervisor,
|
||||
arch,
|
||||
format,
|
||||
tags
|
||||
];
|
||||
}
|
||||
});
|
3
src/sunstone/public/app/tabs/marketplace-tab/tabId.js
Normal file
3
src/sunstone/public/app/tabs/marketplace-tab/tabId.js
Normal file
@ -0,0 +1,3 @@
|
||||
define(function(require){
|
||||
return 'marketplace-tab';
|
||||
});
|
Loading…
x
Reference in New Issue
Block a user