1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-02-10 13:57:22 +03:00

feature #4184: Move labels methods to tab-datatable

This commit is contained in:
Daniel Molina 2015-12-16 18:12:57 +01:00 committed by Ruben S. Montero
parent fd36bb5a10
commit 840ed18210
4 changed files with 50 additions and 43 deletions

View File

@ -25,9 +25,9 @@ define(function(require) {
var OpenNebula = require('opennebula');
var Locale = require('utils/locale');
var Humanize = require('utils/humanize');
var LabelsUtils = require('utils/labels/utils');
var Tree = require('utils/labels/tree');
var Notifier = require('utils/notifier');
var LabelsUtils = require('utils/labels/utils');
/*
CONSTANTS
@ -37,6 +37,7 @@ define(function(require) {
var XML_ROOT = "VMTEMPLATE";
var TAB_NAME = require('./tabId');
var LABELS_COLUMN = 6;
var TEMPLATE_ATTR = 'TEMPLATE';
/*
CONSTRUCTOR
@ -48,6 +49,7 @@ define(function(require) {
this.dataTableId = dataTableId;
this.resource = RESOURCE;
this.xmlRoot = XML_ROOT;
this.labelsColumn = LABELS_COLUMN;
this.dataTableOptions = {
"bAutoWidth": false,
@ -89,11 +91,6 @@ define(function(require) {
Table.prototype.elementArray = _elementArray;
Table.prototype.preUpdateView = _preUpdateView;
Table.prototype.postUpdateView = _postUpdateView;
Table.prototype.clearLabelsFilter = _clearLabelsFilter;
Table.prototype.setLabelsFilter = _setLabelsFilter;
Table.prototype.getLabels = _getLabels;
Table.prototype.getLabel = _getLabel;
Table.prototype.LABELS_COLUMN = LABELS_COLUMN;
return Table;
@ -104,8 +101,6 @@ define(function(require) {
function _elementArray(element_json) {
var element = element_json[XML_ROOT];
var labelsStr = LabelsUtils.labelsStr(element);
return [
'<input class="check_item" type="checkbox" id="' + RESOURCE.toLowerCase() + '_' +
element.ID + '" name="selected_items" value="' +
@ -115,7 +110,7 @@ define(function(require) {
element.GNAME,
element.NAME,
Humanize.prettyTime(element.REGTIME),
(labelsStr||'')
(LabelsUtils.labelsStr(element[TEMPLATE_ATTR])||'')
];
}
@ -123,30 +118,5 @@ define(function(require) {
}
function _postUpdateView() {
LabelsUtils.insertLabelsMenu(TAB_NAME);
LabelsUtils.insertLabelsDropdown(TAB_NAME);
}
function _setLabelsFilter(regExp) {
this.dataTable.fnFilter(regExp, LABELS_COLUMN, true, false);
}
function _clearLabelsFilter() {
this.dataTable.fnFilter('', LABELS_COLUMN, true, false);
}
function _getLabels() {
var labels = [];
$.each(this.dataTable.fnGetData(), function() {
if (this[LABELS_COLUMN] != '') {
labels.push(this[LABELS_COLUMN]);
}
})
return LabelsUtils.deserializeLabels(labels.join(','));
}
function _getLabel(resourceId) {
var aData = this.getElementData(resourceId, RESOURCE.toLowerCase());
return aData[this.LABELS_COLUMN];
}
});

View File

@ -38,7 +38,7 @@ define(function(require) {
this.element = opts.element;
this.resource = opts.resource;
this.xmlRoot = opts.xmlRoot;
this.labels = LabelsUtils.deserializeLabels(LabelsUtils.labelsStr(this.element));
this.labels = LabelsUtils.deserializeLabels(LabelsUtils.labelsStr(this.element[TEMPLATE_ATTR]));
return this;
};
@ -51,7 +51,7 @@ define(function(require) {
/* FUNCTION DEFINITIONS */
function _html() {
var labelsTreeHTML = Tree.html(LabelsUtils.makeTree(this.labels));
var labelsTreeHTML = Tree.html(LabelsUtils.makeTree(this.labels, true));
return TableTemplate({
'labelsTreeHTML': labelsTreeHTML
})

View File

@ -23,12 +23,9 @@ define(function(require) {
var Locale = require('utils/locale');
var Notifier = require('utils/notifier');
var TEMPLATE_ATTR = 'TEMPLATE';
var LABELS_ATTR = 'LABELS';
return {
'TEMPLATE_ATTR': TEMPLATE_ATTR,
'LABELS_ATTR': LABELS_ATTR,
'labelsStr': _labelsStr,
'deserializeLabels': _deserializeLabels,
'makeTree': _makeTree,
@ -227,7 +224,9 @@ define(function(require) {
if (Sunstone.rightInfoVisible($('#' + tabName))) {
Sunstone.insertPanels(tabName, response);
}
dataTable.postUpdateView();
_insertLabelsMenu(tabName);
_insertLabelsDropdown(tabName);
},
error: Notifier.onError
});
@ -236,8 +235,8 @@ define(function(require) {
})
}
function _labelsStr(element) {
return element[TEMPLATE_ATTR][LABELS_ATTR];
function _labelsStr(elementTemplate) {
return elementTemplate[LABELS_ATTR];
}
function _deserializeLabels(labelsStr) {

View File

@ -28,6 +28,7 @@ define(function(require) {
var OpenNebula = require('opennebula');
var Notifier = require('utils/notifier');
var OpenNebulaUser = require('opennebula/user');
var LabelsUtils = require('utils/labels/utils');
/*
TEMPLATES
@ -153,7 +154,11 @@ define(function(require) {
'idInput': _idInput,
'initSelectResourceTableSelect': _initSelectResourceTableSelect,
'updateFn': _updateFn,
'list': _list
'list': _list,
'clearLabelsFilter': _clearLabelsFilter,
'setLabelsFilter': _setLabelsFilter,
'getLabels': _getLabels,
'getLabel': _getLabel
}
return TabDatatable;
@ -481,11 +486,44 @@ define(function(require) {
});
}
if (that.labelsColumn) {
LabelsUtils.insertLabelsMenu(that.tabId);
LabelsUtils.insertLabelsDropdown(that.tabId);
}
if (that.postUpdateView) {
that.postUpdateView();
}
}
/*
LABELS
*/
function _setLabelsFilter(regExp) {
this.dataTable.fnFilter(regExp, this.labelsColumn, true, false);
}
function _clearLabelsFilter() {
this.dataTable.fnFilter('', this.labelsColumn, true, false);
}
function _getLabels() {
var that = this;
var labels = [];
$.each(this.dataTable.fnGetData(), function() {
if (this[that.labelsColumn] != '') {
labels.push(this[that.labelsColumn]);
}
})
return LabelsUtils.deserializeLabels(labels.join(','));
}
function _getLabel(resourceId) {
var aData = this.getElementData(resourceId, this.resource.toLowerCase());
return aData[this.labelsColumn];
}
//replaces an element with id 'tag' in a dataTable with a new one
function _updateElement(request, element_json) {
var id = element_json[this.xmlRoot].ID;