mirror of
https://github.com/lingble/chatwoot.git
synced 2025-10-30 18:47:51 +00:00
fix: Convert seconds based metric tooltips to readable format (#10938)
# Pull Request Template ## Description Fixes https://linear.app/chatwoot/issue/CW-4064/convert-average-metric-tooltips-from-seconds-to-readable-time-format #### **Cause** Chart tooltip configuration was using outdated Chart.js structure, causing the time formatting function to not be applied correctly to tooltip values in time-based metrics. #### **Solution** Updated tooltip configuration to use correct Chart.js Vue 3 plugin structure ## Type of change - [x] Bug fix (non-breaking change which fixes an issue) ## How Has This Been Tested? ### **Screenshots** #### **Before** <img width="496" alt="image" src="https://github.com/user-attachments/assets/a70cbfe6-f179-43dc-a8f4-93951b257e81" /> #### **After** <img width="496" alt="image" src="https://github.com/user-attachments/assets/ed5d0c6c-2404-43ae-82fa-bbe5c42cecca" /> ## Checklist: - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my code - [x] I have commented on my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published in downstream modules
This commit is contained in:
@@ -112,21 +112,32 @@ export default {
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
getChartOptions(metric) {
|
getChartOptions(metric) {
|
||||||
let tooltips = {};
|
const baseOptions = METRIC_CHART[metric.KEY].scales;
|
||||||
if (this.isAverageMetricType(metric.KEY)) {
|
|
||||||
tooltips.callbacks = {
|
// If not an average metric type, return base options early
|
||||||
label: tooltipItem => {
|
if (!this.isAverageMetricType(metric.KEY)) {
|
||||||
return this.$t(metric.TOOLTIP_TEXT, {
|
return baseOptions;
|
||||||
metricValue: formatTime(tooltipItem.yLabel),
|
|
||||||
conversationCount:
|
|
||||||
this.accountReport.data[metric.KEY][tooltipItem.index].count,
|
|
||||||
});
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Only create tooltip config for time-based metrics
|
||||||
return {
|
return {
|
||||||
scales: METRIC_CHART[metric.KEY].scales,
|
...baseOptions,
|
||||||
tooltips: tooltips,
|
plugins: {
|
||||||
|
tooltip: {
|
||||||
|
callbacks: {
|
||||||
|
label: ({ raw, dataIndex }) => {
|
||||||
|
const value = raw || 0;
|
||||||
|
const count =
|
||||||
|
this.accountReport.data[metric.KEY][dataIndex]?.count || 0;
|
||||||
|
|
||||||
|
return this.$t(metric.TOOLTIP_TEXT, {
|
||||||
|
metricValue: formatTime(value),
|
||||||
|
conversationCount: count,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user