1
0
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:
Carlos Martín 2015-06-05 16:55:44 +02:00
parent df3f2427b4
commit b0eb8f1f19
7 changed files with 231 additions and 6 deletions

View File

@ -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 = [

View File

@ -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;
})
});

View 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>&emsp;' + Locale.tr("Marketplace"),
listHeader: '<i class="fa fa-fw fa-shopping-cart"></i>&emsp;'+Locale.tr("OpenNebula Marketplace"),
infoHeader: '<i class="fa fa-fw fa-shopping-cart"></i>&emsp;'+Locale.tr("Appliance"),
subheader: '<span/> <small></small>&emsp;',
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;
});

View 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;
});

View 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;
});

View 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
];
}
});

View File

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