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

Feature #3748: Files info panel

This commit is contained in:
Carlos Martín 2015-06-02 17:12:59 +02:00
parent 494d6c39e4
commit c3b794470f
5 changed files with 172 additions and 3 deletions

View File

@ -12,7 +12,7 @@ define(function(require) {
];
var _panels = [
//require('./files-tab/panels/info')
require('./files-tab/panels/info')
];
var Tab = {

View File

@ -14,7 +14,7 @@ define(function(require) {
CONSTANTS
*/
var RESOURCE = "Image";
var RESOURCE = "File";
var XML_ROOT = "IMAGE";
var TAB_NAME = require('./tabId');
var COLUMN_IDS = {
@ -124,7 +124,9 @@ define(function(require) {
}
return [
'<input class="check_item" type="checkbox" id="image_' + element.ID + '" name="selected_items" value="' + element.ID + '"/>',
'<input class="check_item" type="checkbox" id="'+RESOURCE.toLowerCase()+'_' +
element.ID + '" name="selected_items" value="' +
element.ID + '"/>',
element.ID,
element.UNAME,
element.GNAME,

View File

@ -0,0 +1,103 @@
define(function(require) {
/*
DEPENDENCIES
*/
var Locale = require('utils/locale');
var Humanize = require('utils/humanize');
var RenameTr = require('utils/panel/rename-tr');
var TemplateTable = require('utils/panel/template-table');
var PermissionsTable = require('utils/panel/permissions-table');
var OpenNebulaImage = require('opennebula/image');
var Config = require('sunstone-config');
var Sunstone = require('sunstone');
/*
TEMPLATES
*/
var TemplateInfo = require('hbs!./info/html');
/*
CONSTANTS
*/
var TAB_ID = require('../tabId');
var PANEL_ID = require('./info/panelId');
var RESOURCE = "File";
var XML_ROOT = "IMAGE";
/*
CONSTRUCTOR
*/
function Panel(info) {
this.title = Locale.tr("Info");
this.icon = "fa-info-circle";
this.element = info[XML_ROOT];
return this;
}
Panel.PANEL_ID = PANEL_ID;
Panel.prototype.html = _html;
Panel.prototype.setup = _setup;
return Panel;
/*
FUNCTION DEFINITIONS
*/
function _html() {
var renameTrHTML = RenameTr.html(RESOURCE, this.element.NAME);
var templateTableHTML = TemplateTable.html(this.element.TEMPLATE, RESOURCE, Locale.tr("Attributes"));
var permissionsTableHTML = PermissionsTable.html(TAB_ID, RESOURCE, this.element);
var stateStr = Locale.tr(OpenNebulaImage.stateStr(this.element.STATE));
var prettyRegTime = Humanize.prettyTime(this.element.REGTIME);
var fsTypeStr = this.element.FS_TYPE != undefined ? this.element.FS_TYPE : '-';
var sizeStr = Humanize.sizeFromMB(this.element.SIZE);
var typeStr = Locale.tr(OpenNebulaImage.typeStr(this.element.TYPE));
return TemplateInfo({
'element': this.element,
'renameTrHTML': renameTrHTML,
'templateTableHTML': templateTableHTML,
'permissionsTableHTML': permissionsTableHTML,
'stateStr': stateStr,
'prettyRegTime': prettyRegTime,
'fsTypeStr': fsTypeStr,
'typeStr': typeStr,
'sizeStr': sizeStr
});
}
function _setup(context) {
RenameTr.setup(RESOURCE, this.element.ID, context);
TemplateTable.setup(this.element.TEMPLATE, RESOURCE, this.element.ID, context);
PermissionsTable.setup(TAB_ID, RESOURCE, this.element, context);
// Listener for edit link for type change
var that = this;
context.off("click", "#div_edit_chg_type_link")
context.on("click", "#div_edit_chg_type_link", function() {
$(".value_td_type", context).html(
'<select id="chg_type_select">\
<option value="KERNEL">KERNEL</option>\
<option value="RAMDISK">RAMDISK</option>\
<option value="CONTEXT">CONTEXT</option>\
</select>');
$('#chg_type_select', context).val(OpenNebulaImage.typeStr(that.element.TYPE));
});
context.off("change", "#chg_type_select");
context.on("change", "#chg_type_select", function() {
var new_value = $(this).val();
Sunstone.runAction("File.chtype", that.element.ID, new_value);
});
return false;
}
});

View File

@ -0,0 +1,61 @@
<div class="row">
<div class="large-6 columns">
<table class="dataTable extended_table">
<thead>
<tr>
<th colspan="3">{{tr "Information"}}</th>
</tr>
</thead>
<tbody>
<tr>
<td class="key_td">{{tr "ID"}}</td>
<td class="value_td" colspan="2">{{element.ID}}</td>
</tr>
{{{renameTrHTML}}}
<tr>
<td class="key_td">{{tr "Datastore"}}</td>
<td class="value_td">{{element.DATASTORE}}</td>
<td></td>
</tr>
<tr>
<td class="key_td">{{tr "Register time"}}</td>
<td class="value_td">{{prettyRegTime}}</td>
<td></td>
</tr>
<tr>
<td class="key_td">{{tr "Type"}}</td>
<td class="value_td_type">{{typeStr}}</td>
<td>
<div id="div_edit_chg_type">
<a id="div_edit_chg_type_link" class="edit_e" href="#"> <i class="fa fa-pencil-square-o right"/></a>
</div>
</td>
</tr>
<tr>
<td class="key_td">{{tr "Filesystem type"}}</td>
<td class="value_td">{{fsTypeStr}}</td>
<td></td>
</tr>
<tr>
<td class="key_td">{{tr "Size"}}</td>
<td class="value_td">{{sizeStr}}</td>
<td></td>
</tr>
<tr>
<td class="key_td">{{tr "State"}}</td>
<td class="value_td">{{stateStr}}</td>
<td></td>
</tr>
<tr>
<td class="key_td">{{tr "Running VMS"}}</td>
<td class="value_td">{{element.RUNNING_VMS}}</td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div class="large-6 columns">{{{permissionsTableHTML}}}</div>
</div>
<div class="row">
<div class="large-9 columns">{{{templateTableHTML}}}</div>
</div>

View File

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