mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-11-03 20:48:07 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			52 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import { mapGetters } from 'vuex';
 | 
						|
import { formatTime } from '@chatwoot/utils';
 | 
						|
 | 
						|
export default {
 | 
						|
  computed: {
 | 
						|
    ...mapGetters({
 | 
						|
      accountSummary: 'getAccountSummary',
 | 
						|
      accountReport: 'getAccountReports',
 | 
						|
    }),
 | 
						|
    calculateTrend() {
 | 
						|
      return metric_key => {
 | 
						|
        if (!this.accountSummary.previous[metric_key]) return 0;
 | 
						|
        return Math.round(
 | 
						|
          ((this.accountSummary[metric_key] -
 | 
						|
            this.accountSummary.previous[metric_key]) /
 | 
						|
            this.accountSummary.previous[metric_key]) *
 | 
						|
            100
 | 
						|
        );
 | 
						|
      };
 | 
						|
    },
 | 
						|
    displayMetric() {
 | 
						|
      return metric_key => {
 | 
						|
        if (this.isAverageMetricType(metric_key)) {
 | 
						|
          return formatTime(this.accountSummary[metric_key]);
 | 
						|
        }
 | 
						|
        return this.accountSummary[metric_key];
 | 
						|
      };
 | 
						|
    },
 | 
						|
    displayInfoText() {
 | 
						|
      return metric_key => {
 | 
						|
        if (this.metrics[this.currentSelection].KEY !== metric_key) {
 | 
						|
          return '';
 | 
						|
        }
 | 
						|
        if (this.isAverageMetricType(metric_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() {
 | 
						|
      return metric_key => {
 | 
						|
        return ['avg_first_response_time', 'avg_resolution_time'].includes(
 | 
						|
          metric_key
 | 
						|
        );
 | 
						|
      };
 | 
						|
    },
 | 
						|
  },
 | 
						|
};
 |