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

B #5134: Fix sunstone labels normalization (#803)

This commit is contained in:
Sergio Betanzos 2021-02-12 14:22:49 +01:00 committed by GitHub
parent 832a387873
commit febb605c43
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -296,10 +296,12 @@ define(function (require) {
var key = ev.keyCode;
var labelName = $(this).val().trim();
if (key == 13 && !ev.altKey && labelName != '') {
var labelsArray, labelIndex;
var selectedItems = tabTable.elements();
$.each(selectedItems, function (index, resourceId) {
if (key == 13 && !ev.altKey && labelName !== '') {
var labelsArray;
var labelClean = transformLabelToCleanFormat(labelName)
var selectedItems = tabTable.elements()
$.each(selectedItems, function (_, resourceId) {
labelsStr = _getLabel(tabName, dataTable, labelsColumn, resourceId);
if (labelsStr != '') {
labelsArray = labelsStr.split(',');
@ -307,8 +309,8 @@ define(function (require) {
labelsArray = [];
}
if (!existInArrInsensitive(labelName, labelsArray)) {
labelsArray.push(labelName);
if (!existInArrInsensitive(labelClean, labelsArray)) {
labelsArray.push(labelClean);
_updateResouceLabels(tabName, resourceId, labelsArray);
}
});
@ -405,6 +407,7 @@ define(function (require) {
};
var keys = Object.keys(indexedLabels).sort();
for (var i = 0; i < keys.length; i++) {
var folderName = keys[i];
var childs = indexedLabels[folderName];
@ -552,4 +555,48 @@ define(function (require) {
return aData[labelsColumn];
}
}
});
/**
* Returns the label with a clean format
* @param {string} label
*
* Eg: ubuntu linux/alpine => Ubuntu Linux/Alpine
*/
function transformLabelToCleanFormat(label) {
let SEPARATOR_SUB_TREE = '/'
return $.map(label.split(SEPARATOR_SUB_TREE), function(tree) {
return firstLetterToUppercase(tree);
}).join(SEPARATOR_SUB_TREE)
}
/**
* Returns the same string but with first letter in uppercase
* @param {string} phrase
*/
function firstLetterToUppercase(phrase) {
let words = splitPhraseWithSpaces(phrase)
return $.map(words, function(word) {
return capitalize(word.toLowerCase());
}).join(' ')
}
/**
* Separate words from phrase using regex to split with white spaces
* @param {string} [phrase] - Phrase
*/
function splitPhraseWithSpaces(phrase = '') {
let validRegex = /[^ ]+/g
return String(phrase).match(validRegex)
}
/**
* Convert first letter to upper case
* @param {string} string
*/
function capitalize(string) {
return string[0].toUpperCase() + string.slice(1)
}
});