From 485dfd32fdbd9d688c3ff9a446f85527f9bb0eb0 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Tue, 22 Mar 2022 11:11:47 +0200 Subject: [PATCH] collapsed modal changes and fixes --- client/src/views/collapsed-modal-bar.js | 33 +++++++++++++++++++++++-- client/src/views/collapsed-modal.js | 9 ++++++- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/client/src/views/collapsed-modal-bar.js b/client/src/views/collapsed-modal-bar.js index c9c5fbf65f..15b33a82de 100644 --- a/client/src/views/collapsed-modal-bar.js +++ b/client/src/views/collapsed-modal-bar.js @@ -30,7 +30,7 @@ define('views/collapsed-modal-bar', 'view', function (Dep) { return Dep.extend({ - maxNumberToDisplay: 2, + maxNumberToDisplay: 3, templateContent: ` {{#each dataList}} @@ -62,7 +62,7 @@ define('views/collapsed-modal-bar', 'view', function (Dep) { getDataList: function () { let list = []; - let numberList = this.numberList; + let numberList = Espo.Utils.clone(this.numberList); if (this.numberList.length > this.maxNumberToDisplay) { numberList = numberList.slice(this.numberList.length - this.maxNumberToDisplay); @@ -81,6 +81,34 @@ define('views/collapsed-modal-bar', 'view', function (Dep) { return list; }, + calculateDuplicateNumber: function (title) { + let duplicateNumber = 0; + + this.numberList.forEach(number => { + let view = this.getModalViewByNumber(number); + + if (!view) { + return; + } + + if (view.title === title) { + duplicateNumber++; + } + }); + + if (duplicateNumber === 0) { + return null; + } + + return duplicateNumber; + }, + + getModalViewByNumber: function (number) { + let key = 'key-' + number; + + return this.getView(key); + }, + addModalView: function (modalView, options) { let number = this.lastNumber; @@ -90,6 +118,7 @@ define('views/collapsed-modal-bar', 'view', function (Dep) { this.createView(key, 'views/collapsed-modal', { title: options.title, + duplicateNumber: this.calculateDuplicateNumber(options.title), el: this.getSelector() + ' [data-number="' + number + '"]', }) .then(view => { diff --git a/client/src/views/collapsed-modal.js b/client/src/views/collapsed-modal.js index bfb8d7a6ff..d9dfdbe5d1 100644 --- a/client/src/views/collapsed-modal.js +++ b/client/src/views/collapsed-modal.js @@ -49,13 +49,20 @@ define('views/collapsed-modal', 'view', function (Dep) { }, data: function () { + let title = this.title; + + if (this.duplicateNumber) { + title = this.title + ' ' + this.duplicateNumber; + } + return { - title: this.title, + title: title, }; }, setup: function () { this.title = this.options.title || 'no-title'; + this.duplicateNumber = this.options.duplicateNumber || null; }, expand: function () {