mirror of
https://github.com/lingble/chatwoot.git
synced 2026-03-20 03:52:43 +00:00
* feat: add heatmap component * feat: add heatmap component * feat: add dummy heatmap * refactor: compact tiles * feat: allow hour * feat: wire up heatmap query * feat: allow arbritrary number of weeks * feat: update position of the widget * chore: update heatmap title * refactor: move traffic heatmap to overview * chore: add comment for perf * feat: add reconcile logic for heatmap fetching Fetching the data for the last 6 days all the time is wasteful So we fetch only the data for today and reconcile it with the data we already have * refactor: re-org code for new utils * feat: add translations * feat: translate days of the week * chore: update chatwoot utils * feat: add markers to heatmap * refactor: update class names * refactor: move flatten as a separate method * test: Heatmap Helpers * chore: add comments * refactor: method naming * refactor: use heatmap-level mixin * refactor: cleanup css * chore: remove log * refactor: reports.js to use object instead of separate params * refactor: report store to use new API design * refactor: rename HeatmapHelper -> ReportsDataHelper * refactor: separate clampDataBetweenTimeline * feat: add tests * fix: group by hour * feat: add scroll for smaller screens * refactor: add base data to reconcile with * fix: tests * fix: overflow only on smaller screens * feat: translate tooltip * refactor: simplify reconcile * chore: add docs * chore: remoev heatmap from account report * feat: let Heatmap handle loading state * chore: Apply suggestions from code review Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> * feat: update css * refactor: color assignment to range * feat: add short circuit * Update app/javascript/dashboard/routes/dashboard/settings/reports/components/Heatmap.vue --------- Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com> Co-authored-by: Nithin David Thomas <1277421+nithindavid@users.noreply.github.com> Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com>
82 lines
1.8 KiB
JavaScript
82 lines
1.8 KiB
JavaScript
/* global axios */
|
|
import ApiClient from './ApiClient';
|
|
|
|
const getTimeOffset = () => -new Date().getTimezoneOffset() / 60;
|
|
|
|
class ReportsAPI extends ApiClient {
|
|
constructor() {
|
|
super('reports', { accountScoped: true, apiVersion: 'v2' });
|
|
}
|
|
|
|
getReports({
|
|
metric,
|
|
since,
|
|
until,
|
|
type = 'account',
|
|
id,
|
|
group_by,
|
|
business_hours,
|
|
}) {
|
|
return axios.get(`${this.url}`, {
|
|
params: {
|
|
metric,
|
|
since,
|
|
until,
|
|
type,
|
|
id,
|
|
group_by,
|
|
business_hours,
|
|
timezone_offset: getTimeOffset(),
|
|
},
|
|
});
|
|
}
|
|
|
|
getSummary(since, until, type = 'account', id, group_by, business_hours) {
|
|
return axios.get(`${this.url}/summary`, {
|
|
params: {
|
|
since,
|
|
until,
|
|
type,
|
|
id,
|
|
group_by,
|
|
business_hours,
|
|
},
|
|
});
|
|
}
|
|
|
|
getConversationMetric(type = 'account', page = 1) {
|
|
return axios.get(`${this.url}/conversations`, {
|
|
params: {
|
|
type,
|
|
page,
|
|
},
|
|
});
|
|
}
|
|
|
|
getAgentReports({ from: since, to: until, businessHours }) {
|
|
return axios.get(`${this.url}/agents`, {
|
|
params: { since, until, business_hours: businessHours },
|
|
});
|
|
}
|
|
|
|
getLabelReports({ from: since, to: until, businessHours }) {
|
|
return axios.get(`${this.url}/labels`, {
|
|
params: { since, until, business_hours: businessHours },
|
|
});
|
|
}
|
|
|
|
getInboxReports({ from: since, to: until, businessHours }) {
|
|
return axios.get(`${this.url}/inboxes`, {
|
|
params: { since, until, business_hours: businessHours },
|
|
});
|
|
}
|
|
|
|
getTeamReports({ from: since, to: until, businessHours }) {
|
|
return axios.get(`${this.url}/teams`, {
|
|
params: { since, until, business_hours: businessHours },
|
|
});
|
|
}
|
|
}
|
|
|
|
export default new ReportsAPI();
|