diff --git a/src/sunstone/public/app/sunstone.js b/src/sunstone/public/app/sunstone.js index 5291e5bb5e..4087c0abe5 100644 --- a/src/sunstone/public/app/sunstone.js +++ b/src/sunstone/public/app/sunstone.js @@ -571,8 +571,17 @@ define(function(require) { $('.top_button, .list_button', context).attr('disabled', false); } + // Returns the element that is currently shown in the right info + var _getElementRightInfo = function(tabName, context) { + var context = context || $(".right-info", $("#" + tabName)); + return context.data('element'); + } + var _insertPanels = function(tabName, info, contextTabId, context) { var context = context || $(".right-info", $("#" + tabName)); + + context.data('element', info[Object.keys(info)[0]]); + var containerId = tabName + '-panels'; var activaTab = $("dd.active a", $("#" + containerId)); if (activaTab) { @@ -1006,6 +1015,7 @@ define(function(require) { "insertTabs": _insertTabs, "insertPanels": _insertPanels, + "getElementRightInfo": _getElementRightInfo, 'showTab': _showTab, "showElement" : _showElement, diff --git a/src/sunstone/public/app/tabs/marketplaceapps-tab/actions.js b/src/sunstone/public/app/tabs/marketplaceapps-tab/actions.js index c43ac57ce8..4793e9a167 100644 --- a/src/sunstone/public/app/tabs/marketplaceapps-tab/actions.js +++ b/src/sunstone/public/app/tabs/marketplaceapps-tab/actions.js @@ -20,6 +20,7 @@ define(function(require) { var Locale = require('utils/locale'); var CommonActions = require('utils/common-actions'); var OpenNebulaResource = require('opennebula/marketplaceapp'); + var OpenNebulaAction = require('opennebula/action'); var RESOURCE = "MarketPlaceApp"; var XML_ROOT = "MARKETPLACEAPP"; diff --git a/src/sunstone/public/app/utils/labels/utils.js b/src/sunstone/public/app/utils/labels/utils.js index c63e722923..35e863610b 100644 --- a/src/sunstone/public/app/utils/labels/utils.js +++ b/src/sunstone/public/app/utils/labels/utils.js @@ -334,9 +334,19 @@ define(function(require) { } function _getLabel(dataTable, labelsColumn, resourceId) { - var nodes = dataTable.fnGetNodes(); - var tr = $('.check_item[value="' + resourceId + '"]', nodes).closest('tr'); - var aData = dataTable.fnGetData(tr); - return aData[labelsColumn]; + var tab = dataTable.parents(".tab") + if (Sunstone.rightInfoVisible(tab)) { + var element = Sunstone.getElementRightInfo(tab.attr('id')); + if (element && element.TEMPLATE) { + return element.TEMPLATE[LABELS_ATTR]||''; + } else { + return ''; + } + } else { + var nodes = dataTable.fnGetNodes(); + var tr = $('.check_item[value="' + resourceId + '"]', nodes).closest('tr'); + var aData = dataTable.fnGetData(tr); + return aData[labelsColumn]; + } } }); diff --git a/src/sunstone/public/app/utils/tab-datatable.js b/src/sunstone/public/app/utils/tab-datatable.js index ee100b77b8..4d2aea0ee3 100644 --- a/src/sunstone/public/app/utils/tab-datatable.js +++ b/src/sunstone/public/app/utils/tab-datatable.js @@ -497,20 +497,19 @@ define(function(require) { } //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; - var element = this.elementArray(element_json); - var tag = '#' + this.resource.toLowerCase() + '_' + id; - // fnGetData should be used instead, otherwise it depends on the visible columns - var nodes = this.dataTable.fnGetNodes(); - var tr = $(tag, nodes).parents('tr')[0]; - if (tr) { - var checked_val = $('input.check_item', tr).prop('checked'); - var position = this.dataTable.fnGetPosition(tr); - this.dataTable.fnUpdate(element, position, undefined, false); - $('input.check_item', tr).prop('checked', checked_val); - this.recountCheckboxes(); - } + function _updateElement(request, elementJSON) { + var that = this; + var elementId = elementJSON[that.xmlRoot].ID; + var element = that.elementArray(elementJSON); + + $.each(that.dataTable.fnGetData(), function(index, aData) { + if (aData[that.selectOptions.id_index] === elementId) { + element[0] = aData[0]; + that.dataTable.fnUpdate(element, index, undefined, false); + that.recountCheckboxes(); + return false; + } + }); } function _getElementData(id, resource_tag) {