diff --git a/client/src/views/preferences/fields/dashboard-tab-list.js b/client/src/views/preferences/fields/dashboard-tab-list.js index 50c90938d6..82ac0477c0 100644 --- a/client/src/views/preferences/fields/dashboard-tab-list.js +++ b/client/src/views/preferences/fields/dashboard-tab-list.js @@ -26,7 +26,7 @@ * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ -define('views/preferences/fields/dashboard-tab-list', 'views/fields/array', function (Dep) { +define('views/preferences/fields/dashboard-tab-list', ['views/fields/array'], function (Dep) { return Dep.extend({ @@ -34,40 +34,71 @@ define('views/preferences/fields/dashboard-tab-list', 'views/fields/array', func Dep.prototype.setup.call(this); this.translatedOptions = {}; - var list = this.model.get(this.name) || []; - list.forEach(function (value) { + + let list = this.model.get(this.name) || []; + + list.forEach(value => { this.translatedOptions[value] = value; - }, this); + }); }, + getItemHtml: function (value) { value = value.toString(); - var valueSanitized = this.escapeValue(value); - var translatedValue = this.escapeValue(this.translatedOptions[value] || value); - var html = '' + - ''; + let translatedValue = this.translatedOptions[value] || value; - return html; + return $('
') + .addClass('list-group-item link-with-role form-inline') + .attr('data-value', value) + .append( + $('
') + .addClass('pull-left') + .css('width', '92%') + .css('display', 'inline-block') + .append( + $('') + .attr('data-name', 'translatedValue') + .attr('data-value', value) + .addClass('role form-control input-sm') + .attr('value', translatedValue) + ) + ) + .append( + $('
') + .css('width', '8%') + .css('display', 'inline-block') + .css('vertical-align', 'top') + .append( + $('') + .attr('href', 'javascript:') + .addClass('pull-right') + .attr('data-value', value) + .attr('data-action', 'removeValue') + .append( + $('').addClass('fas fa-times') + ) + ) + ) + .append( + $('
').css('clear', 'both') + ) + .get(0).outerHTML; }, fetch: function () { - var data = Dep.prototype.fetch.call(this); + let data = Dep.prototype.fetch.call(this); + data.translatedOptions = {}; - (data[this.name] || []).forEach(function (value) { - var valueInternal = value.replace(/"/g, '\\"'); - data.translatedOptions[value] = this.$el.find('input[data-name="translatedValue"][data-value="'+valueInternal+'"]').val() || value; - }, this); + + (data[this.name] || []).forEach(value => { + let valueInternal = value.replace(/"/g, '\\"'); + + data.translatedOptions[value] = this.$el + .find('input[data-name="translatedValue"][data-value="'+valueInternal+'"]') + .val() || value; + }); return data; - } - + }, }); - }); diff --git a/client/src/views/settings/fields/dashboard-layout.js b/client/src/views/settings/fields/dashboard-layout.js index 3637b6e5b6..22d00bee0a 100644 --- a/client/src/views/settings/fields/dashboard-layout.js +++ b/client/src/views/settings/fields/dashboard-layout.js @@ -182,8 +182,6 @@ define('views/settings/fields/dashboard-layout', ['views/fields/base', 'lib!grid layout.forEach((o, i) => { if (o.id === id) { layout.splice(i, 1); - - return; } }); @@ -204,7 +202,6 @@ define('views/settings/fields/dashboard-layout', ['views/fields/base', 'lib!grid var dashboardLayout = []; - (data.dashboardTabList).forEach((name) => { var layout = []; var id = this.generateId(); @@ -371,37 +368,52 @@ define('views/settings/fields/dashboard-layout', ['views/fields/base', 'lib!grid var actionsHtml = ''; var actions2Html = ''; - if (this.mode === 'edit') { - actionsHtml += - '
'+ - ''+ - ''; + if (this.isEditMode()) { + actionsHtml += $('') + .attr('href', 'javascript:') + .addClass('pull-right') + .attr('data-action', 'removeDashlet') + .attr('data-id', id) + .append( + $('').addClass('fas fa-times') + ) + .get(0) + .outerHTML; - actions2Html += - ''+ - this.translate('Edit') + - ''; + actions2Html += $('') + .attr('href', 'javascript:') + .addClass('pull-right') + .attr('data-action', 'editDashlet') + .attr('data-id', id) + .attr('data-name', name) + .text(this.translate('Edit')) + .get(0) + .outerHTML; } - var title = this.getOption(id, 'title'); - - if (title) { - title = this.getHelper().escapeString(title); - } + let title = this.getOption(id, 'title'); if (!title) { title = this.translate(name, 'dashlets'); } - var headerHtml = - '
' + - actionsHtml + '

' + title + '

' + - '
'; + let headerHtml = $('
') + .addClass('panel-heading') + .append(actionsHtml) + .append( + $('

').addClass('panel-title').text(title) + ) + .get(0).outerHTML; - var $container = $( - '
' + headerHtml + - '
'+actions2Html+'
' - ); + let $container = + $('
') + .addClass('grid-stack-item-content panel panel-default') + .append(headerHtml) + .append( + $('
') + .addClass('panel-body') + .append(actions2Html) + ); $container.attr('data-id', id); $container.attr('data-name', name);