From 7d4374a3bfa03e423e4e6193dd12fa3b279164f9 Mon Sep 17 00:00:00 2001 From: Pranav Date: Tue, 13 Feb 2024 12:26:48 -0800 Subject: [PATCH] Added a section for group by teams --- .../dashboard/i18n/locale/en/report.json | 58 +++++- .../settings/reports/LiveReports.vue | 16 ++ .../reports/components/overview/TeamTable.vue | 177 ++++++++++++++++++ .../dashboard/store/modules/reports.js | 26 +++ .../dashboard/store/mutation-types.js | 3 + 5 files changed, 271 insertions(+), 9 deletions(-) create mode 100644 app/javascript/dashboard/routes/dashboard/settings/reports/components/overview/TeamTable.vue diff --git a/app/javascript/dashboard/i18n/locale/en/report.json b/app/javascript/dashboard/i18n/locale/en/report.json index 0b234ec16..ba7af3120 100644 --- a/app/javascript/dashboard/i18n/locale/en/report.json +++ b/app/javascript/dashboard/i18n/locale/en/report.json @@ -86,20 +86,49 @@ "MONTH": "Month", "YEAR": "Year" }, - "GROUP_BY_DAY_OPTIONS": [{ "id": 1, "groupBy": "Day" }], + "GROUP_BY_DAY_OPTIONS": [ + { + "id": 1, + "groupBy": "Day" + } + ], "GROUP_BY_WEEK_OPTIONS": [ - { "id": 1, "groupBy": "Day" }, - { "id": 2, "groupBy": "Week" } + { + "id": 1, + "groupBy": "Day" + }, + { + "id": 2, + "groupBy": "Week" + } ], "GROUP_BY_MONTH_OPTIONS": [ - { "id": 1, "groupBy": "Day" }, - { "id": 2, "groupBy": "Week" }, - { "id": 3, "groupBy": "Month" } + { + "id": 1, + "groupBy": "Day" + }, + { + "id": 2, + "groupBy": "Week" + }, + { + "id": 3, + "groupBy": "Month" + } ], "GROUP_BY_YEAR_OPTIONS": [ - { "id": 2, "groupBy": "Week" }, - { "id": 3, "groupBy": "Month" }, - { "id": 4, "groupBy": "Year" } + { + "id": 2, + "groupBy": "Week" + }, + { + "id": 3, + "groupBy": "Month" + }, + { + "id": 4, + "groupBy": "Year" + } ], "BUSINESS_HOURS": "Business Hours" }, @@ -431,6 +460,17 @@ "STATUS": "Status" } }, + "TEAM_CONVERSATIONS": { + "HEADER": "Conversations by teams", + "LOADING_MESSAGE": "Loading team metrics...", + "NO_AGENTS": "There is no data available", + "TABLE_HEADER": { + "AGENT": "Team", + "OPEN": "open", + "UNATTENDED": "Unattended", + "STATUS": "Status" + } + }, "AGENT_STATUS": { "HEADER": "Agent status", "ONLINE": "Online", diff --git a/app/javascript/dashboard/routes/dashboard/settings/reports/LiveReports.vue b/app/javascript/dashboard/routes/dashboard/settings/reports/LiveReports.vue index 8a5a001bb..2cf0668ba 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/reports/LiveReports.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/reports/LiveReports.vue @@ -65,11 +65,22 @@ /> +
+ + + +
+ + diff --git a/app/javascript/dashboard/store/modules/reports.js b/app/javascript/dashboard/store/modules/reports.js index c5969e554..3e92486c7 100644 --- a/app/javascript/dashboard/store/modules/reports.js +++ b/app/javascript/dashboard/store/modules/reports.js @@ -47,10 +47,12 @@ const state = { isFetchingAccountConversationMetric: false, isFetchingAccountConversationsHeatmap: false, isFetchingAgentConversationMetric: false, + isFetchingTeamConversationMetric: false, }, accountConversationMetric: {}, accountConversationHeatmap: [], agentConversationMetric: [], + teamConversationMetric: [], }, }; @@ -70,6 +72,9 @@ const getters = { getAgentConversationMetric(_state) { return _state.overview.agentConversationMetric; }, + getTeamConversationMetric(_state) { + return _state.overview.teamConversationMetric; + }, getOverviewUIFlags($state) { return $state.overview.uiFlags; }, @@ -156,6 +161,21 @@ export const actions = { commit(types.default.TOGGLE_AGENT_CONVERSATION_METRIC_LOADING, false); }); }, + fetchTeamConversationMetric({ commit }) { + commit(types.default.TOGGLE_TEAM_CONVERSATION_METRIC_LOADING, true); + liveReports + .getGroupedConversations({ groupBy: 'team_id' }) + .then(agentConversationMetric => { + commit( + types.default.SET_TEAM_CONVERSATION_METRIC, + agentConversationMetric.data + ); + commit(types.default.TOGGLE_TEAM_CONVERSATION_METRIC_LOADING, false); + }) + .catch(() => { + commit(types.default.TOGGLE_TEAM_CONVERSATION_METRIC_LOADING, false); + }); + }, downloadAgentReports(_, reportObj) { return Report.getAgentReports(reportObj) .then(response => { @@ -255,9 +275,15 @@ const mutations = { [types.default.SET_AGENT_CONVERSATION_METRIC](_state, metricData) { _state.overview.agentConversationMetric = metricData; }, + [types.default.SET_TEAM_CONVERSATION_METRIC](_state, metricData) { + _state.overview.teamConversationMetric = metricData; + }, [types.default.TOGGLE_AGENT_CONVERSATION_METRIC_LOADING](_state, flag) { _state.overview.uiFlags.isFetchingAgentConversationMetric = flag; }, + [types.default.TOGGLE_TEAM_CONVERSATION_METRIC_LOADING](_state, flag) { + _state.overview.uiFlags.isFetchingTeamConversationMetric = flag; + }, }; export default { diff --git a/app/javascript/dashboard/store/mutation-types.js b/app/javascript/dashboard/store/mutation-types.js index 0d4f0c010..235d6b6ad 100644 --- a/app/javascript/dashboard/store/mutation-types.js +++ b/app/javascript/dashboard/store/mutation-types.js @@ -171,8 +171,11 @@ export default { TOGGLE_ACCOUNT_CONVERSATION_METRIC_LOADING: 'TOGGLE_ACCOUNT_CONVERSATION_METRIC_LOADING', SET_AGENT_CONVERSATION_METRIC: 'SET_AGENT_CONVERSATION_METRIC', + SET_TEAM_CONVERSATION_METRIC: 'SET_TEAM_CONVERSATION_METRIC', TOGGLE_AGENT_CONVERSATION_METRIC_LOADING: 'TOGGLE_AGENT_CONVERSATION_METRIC_LOADING', + TOGGLE_TEAM_CONVERSATION_METRIC_LOADING: + 'TOGGLE_TEAM_CONVERSATION_METRIC_LOADING', // Conversation Metadata SET_CONVERSATION_METADATA: 'SET_CONVERSATION_METADATA',