diff --git a/client/modules/crm/src/views/dashlets/abstract/chart.js b/client/modules/crm/src/views/dashlets/abstract/chart.js index d2cffda46a..5901abc992 100644 --- a/client/modules/crm/src/views/dashlets/abstract/chart.js +++ b/client/modules/crm/src/views/dashlets/abstract/chart.js @@ -87,13 +87,20 @@ Espo.define('crm:views/dashlets/abstract/chart', ['views/dashlets/abstract/base' if (!this.isRendered()) return; setTimeout(function () { this.adjustContainer(); + if (this.isNoData()) { + this.showNoData(); + return; + } this.draw(); }.bind(this), 50); }, this); - $(window).on('resize.chart' + this.id, function () { this.adjustContainer(); + if (this.isNoData()) { + this.showNoData(); + return; + } this.draw(); }.bind(this)); @@ -212,13 +219,13 @@ Espo.define('crm:views/dashlets/abstract/chart', ['views/dashlets/abstract/base' this.fetch(function (data) { this.chartData = this.prepareData(data); + this.adjustContainer(); + if (this.isNoData()) { this.showNoData(); return; } - this.adjustContainer(); - setTimeout(function () { if (!this.$container.length || !this.$container.is(":visible")) return; this.draw(); diff --git a/client/modules/crm/src/views/dashlets/opportunities-by-stage.js b/client/modules/crm/src/views/dashlets/opportunities-by-stage.js index 2dad515563..b09a4bd5d2 100644 --- a/client/modules/crm/src/views/dashlets/opportunities-by-stage.js +++ b/client/modules/crm/src/views/dashlets/opportunities-by-stage.js @@ -58,9 +58,12 @@ Espo.define('crm:views/dashlets/opportunities-by-stage', 'crm:views/dashlets/abs this.stageList = []; + this.isEmpty = true; + var data = []; var i = 0; d.forEach(function (item) { + if (item.value) this.isEmpty = false; var o = { data: [[item.value, d.length - i]], label: this.getLanguage().translateOption(item.stage, 'stage', 'Opportunity'), @@ -91,6 +94,10 @@ Espo.define('crm:views/dashlets/opportunities-by-stage', 'crm:views/dashlets/abs this.currencySymbol = this.getMetadata().get(['app', 'currency', 'symbolMap', this.currency]) || ''; }, + isNoData: function () { + return this.isEmpty; + }, + draw: function () { var self = this; this.flotr.draw(this.$container.get(0), this.chartData, { diff --git a/client/modules/crm/src/views/dashlets/sales-by-month.js b/client/modules/crm/src/views/dashlets/sales-by-month.js index 48359f5d79..ceb4bf8dfd 100644 --- a/client/modules/crm/src/views/dashlets/sales-by-month.js +++ b/client/modules/crm/src/views/dashlets/sales-by-month.js @@ -53,7 +53,7 @@ Espo.define('crm:views/dashlets/sales-by-month', 'crm:views/dashlets/abstract/ch }, isNoData: function () { - return !this.monthList.length; + return this.isEmpty; }, prepareData: function (response) { @@ -69,6 +69,8 @@ Espo.define('crm:views/dashlets/sales-by-month', 'crm:views/dashlets/abstract/ch this.chartData = []; + this.isEmpty = true; + var mid = 0; if (values.length) { mid = values.reduce(function(a, b) {return a + b}) / values.length; @@ -79,6 +81,7 @@ Espo.define('crm:views/dashlets/sales-by-month', 'crm:views/dashlets/abstract/ch var max = 0; values.forEach(function (value, i) { + if (value) this.isEmpty = false; if (value && value > max) { max = value; } diff --git a/client/modules/crm/src/views/dashlets/sales-pipeline.js b/client/modules/crm/src/views/dashlets/sales-pipeline.js index 43c6cf7cf9..fa6c4154d7 100644 --- a/client/modules/crm/src/views/dashlets/sales-pipeline.js +++ b/client/modules/crm/src/views/dashlets/sales-pipeline.js @@ -50,10 +50,17 @@ Espo.define('crm:views/dashlets/sales-pipeline', 'crm:views/dashlets/abstract/ch return url; }, + isNoData: function () { + return this.isEmpty; + }, + prepareData: function (response) { var d = []; + this.isEmpty = true; + response.dataList.forEach(function (item) { + if (item.value) this.isEmpty = false; d.push({ stageTranslated: this.getLanguage().translateOption(item.stage, 'stage', 'Opportunity'), value: item.value,