diff --git a/Gemfile.lock b/Gemfile.lock index 3723a738c..bec62cc75 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -784,6 +784,7 @@ GEM PLATFORMS arm64-darwin-20 + arm64-darwin-22 arm64-darwin-21 ruby x86_64-darwin-18 diff --git a/app/controllers/api/v1/accounts/csat_survey_responses_controller.rb b/app/controllers/api/v1/accounts/csat_survey_responses_controller.rb index 9495bbfa8..f5bed6c34 100644 --- a/app/controllers/api/v1/accounts/csat_survey_responses_controller.rb +++ b/app/controllers/api/v1/accounts/csat_survey_responses_controller.rb @@ -34,9 +34,12 @@ class Api::V1::Accounts::CsatSurveyResponsesController < Api::V1::Accounts::Base end def set_csat_survey_responses - @csat_survey_responses = filtrate( - Current.account.csat_survey_responses.includes([:conversation, :assigned_agent, :contact]) - ).filter_by_created_at(range).filter_by_assigned_agent_id(params[:user_ids]) + base_query = Current.account.csat_survey_responses.includes([:conversation, :assigned_agent, :contact]) + @csat_survey_responses = filtrate(base_query).filter_by_created_at(range) + .filter_by_assigned_agent_id(params[:user_ids]) + .filter_by_inbox_id(params[:inbox_id]) + .filter_by_team_id(params[:team_id]) + .filter_by_rating(params[:rating]) end def set_current_page_surveys diff --git a/app/javascript/dashboard/api/csatReports.js b/app/javascript/dashboard/api/csatReports.js index 4decc8de3..46d5decd4 100644 --- a/app/javascript/dashboard/api/csatReports.js +++ b/app/javascript/dashboard/api/csatReports.js @@ -6,7 +6,7 @@ class CSATReportsAPI extends ApiClient { super('csat_survey_responses', { accountScoped: true }); } - get({ page, from, to, user_ids } = {}) { + get({ page, from, to, user_ids, inbox_id, team_id, rating } = {}) { return axios.get(this.url, { params: { page, @@ -14,24 +14,31 @@ class CSATReportsAPI extends ApiClient { until: to, sort: '-created_at', user_ids, + inbox_id, + team_id, + rating, }, }); } - download({ from, to, user_ids } = {}) { + download({ from, to, user_ids, inbox_id, team_id, rating } = {}) { return axios.get(`${this.url}/download`, { params: { since: from, until: to, sort: '-created_at', user_ids, + inbox_id, + team_id, + rating, }, }); } - getMetrics({ from, to, user_ids } = {}) { + getMetrics({ from, to, user_ids, inbox_id, team_id } = {}) { + // no ratings for metrics return axios.get(`${this.url}/metrics`, { - params: { since: from, until: to, user_ids }, + params: { since: from, until: to, user_ids, inbox_id, team_id }, }); } } diff --git a/app/javascript/dashboard/assets/scss/_date-picker.scss b/app/javascript/dashboard/assets/scss/_date-picker.scss index ece12c999..4377480c9 100644 --- a/app/javascript/dashboard/assets/scss/_date-picker.scss +++ b/app/javascript/dashboard/assets/scss/_date-picker.scss @@ -5,12 +5,20 @@ } .date-picker { - .mx-datepicker { - width: 100%; + &.no-margin { + .mx-input { + margin-bottom: 0; + } } - .mx-datepicker-range { - width: 320px; + &:not(.auto-width) { + .mx-datepicker-range { + width: 320px; + } + } + + .mx-datepicker { + width: 100%; } .mx-input { diff --git a/app/javascript/dashboard/assets/scss/plugins/_multiselect.scss b/app/javascript/dashboard/assets/scss/plugins/_multiselect.scss index 3167b2085..f111a414f 100644 --- a/app/javascript/dashboard/assets/scss/plugins/_multiselect.scss +++ b/app/javascript/dashboard/assets/scss/plugins/_multiselect.scss @@ -13,7 +13,9 @@ } .multiselect { - margin-bottom: var(--space-normal); + &:not(.no-margin) { + margin-bottom: var(--space-normal); + } &.multiselect--disabled { opacity: 0.8; diff --git a/app/javascript/dashboard/i18n/locale/en/csatMgmt.json b/app/javascript/dashboard/i18n/locale/en/csatMgmt.json index d7d2efc2a..9e16dc2b3 100644 --- a/app/javascript/dashboard/i18n/locale/en/csatMgmt.json +++ b/app/javascript/dashboard/i18n/locale/en/csatMgmt.json @@ -1,6 +1,13 @@ { "CSAT": { "TITLE": "Rate your conversation", - "PLACEHOLDER": "Tell us more..." + "PLACEHOLDER": "Tell us more...", + "RATINGS": { + "POOR": "😞 Poor", + "FAIR": "😑 Fair", + "AVERAGE": "😐 Average", + "GOOD": "😀 Good", + "EXCELLENT": "😍 Excellent" + } } } diff --git a/app/javascript/dashboard/i18n/locale/en/report.json b/app/javascript/dashboard/i18n/locale/en/report.json index 6ff093260..5858605a0 100644 --- a/app/javascript/dashboard/i18n/locale/en/report.json +++ b/app/javascript/dashboard/i18n/locale/en/report.json @@ -4,6 +4,8 @@ "LOADING_CHART": "Loading chart data...", "NO_ENOUGH_DATA": "We've not received enough data points to generate report, Please try again later.", "DOWNLOAD_AGENT_REPORTS": "Download agent reports", + "DATA_FETCHING_FAILED": "Failed to fetch data, please try again later.", + "SUMMARY_FETCHING_FAILED": "Failed to fetch summary, please try again later.", "METRICS": { "CONVERSATIONS": { "NAME": "Conversations", @@ -34,6 +36,14 @@ "DESC": "( Total )" } }, + "DATE_RANGE_OPTIONS": { + "LAST_7_DAYS": "Last 7 days", + "LAST_30_DAYS": "Last 30 days", + "LAST_3_MONTHS": "Last 3 months", + "LAST_6_MONTHS": "Last 6 months", + "LAST_YEAR": "Last year", + "CUSTOM_DATE_RANGE": "Custom date range" + }, "DATE_RANGE": [ { "id": 0, @@ -66,6 +76,12 @@ }, "GROUP_BY_FILTER_DROPDOWN_LABEL": "Group By", "DURATION_FILTER_LABEL": "Duration", + "GROUPING_OPTIONS": { + "DAY": "Day", + "WEEK": "Week", + "MONTH": "Month", + "YEAR": "Year" + }, "GROUP_BY_DAY_OPTIONS": [{ "id": 1, "groupBy": "Day" }], "GROUP_BY_WEEK_OPTIONS": [ { "id": 1, "groupBy": "Day" }, @@ -356,6 +372,7 @@ "HEADER": "CSAT Reports", "NO_RECORDS": "There are no CSAT survey responses available.", "DOWNLOAD": "Download CSAT Reports", + "DOWNLOAD_FAILED": "Failed to download CSAT Reports", "FILTERS": { "AGENTS": { "PLACEHOLDER": "Choose Agents" diff --git a/app/javascript/dashboard/routes/dashboard/settings/reports/CsatResponses.vue b/app/javascript/dashboard/routes/dashboard/settings/reports/CsatResponses.vue index f72ad8bad..501dc5a7c 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/reports/CsatResponses.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/reports/CsatResponses.vue @@ -1,11 +1,12 @@