mirror of
https://github.com/lingble/chatwoot.git
synced 2025-11-02 20:18:08 +00:00
44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
import { mapGetters } from 'vuex';
|
|
import { formatTime } from '@chatwoot/utils';
|
|
|
|
export default {
|
|
computed: {
|
|
...mapGetters({
|
|
accountSummary: 'getAccountSummary',
|
|
accountReport: 'getAccountReports',
|
|
}),
|
|
},
|
|
methods: {
|
|
calculateTrend(key) {
|
|
if (!this.accountSummary.previous[key]) return 0;
|
|
const diff = this.accountSummary[key] - this.accountSummary.previous[key];
|
|
return Math.round((diff / this.accountSummary.previous[key]) * 100);
|
|
},
|
|
displayMetric(key) {
|
|
if (this.isAverageMetricType(key)) {
|
|
return formatTime(this.accountSummary[key]);
|
|
}
|
|
return Number(this.accountSummary[key] || '').toLocaleString();
|
|
},
|
|
displayInfoText(key) {
|
|
if (this.metrics[this.currentSelection].KEY !== key) {
|
|
return '';
|
|
}
|
|
if (this.isAverageMetricType(key)) {
|
|
const total = this.accountReport.data
|
|
.map(item => item.count)
|
|
.reduce((prev, curr) => prev + curr, 0);
|
|
return `${this.metrics[this.currentSelection].INFO_TEXT} ${total}`;
|
|
}
|
|
return '';
|
|
},
|
|
isAverageMetricType(key) {
|
|
return [
|
|
'avg_first_response_time',
|
|
'avg_resolution_time',
|
|
'reply_time',
|
|
].includes(key);
|
|
},
|
|
},
|
|
};
|