mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
UX: new site setting to define activity metrics displayed on dashboard
This commit is contained in:
@@ -19,16 +19,9 @@ export default Ember.Controller.extend(PeriodComputationMixin, {
|
|||||||
logSearchQueriesEnabled: setting("log_search_queries"),
|
logSearchQueriesEnabled: setting("log_search_queries"),
|
||||||
basePath: Discourse.BaseUri,
|
basePath: Discourse.BaseUri,
|
||||||
|
|
||||||
@computed
|
@computed("siteSettings.dashboard_general_tab_activity_metrics")
|
||||||
activityMetrics() {
|
activityMetrics(metrics) {
|
||||||
return [
|
return (metrics || "").split("|").filter(m => m);
|
||||||
"page_view_total_reqs",
|
|
||||||
"visits",
|
|
||||||
"time_to_first_response",
|
|
||||||
"likes",
|
|
||||||
"flags",
|
|
||||||
"user_to_user_private_messages_with_replies"
|
|
||||||
];
|
|
||||||
},
|
},
|
||||||
|
|
||||||
@computed
|
@computed
|
||||||
|
|||||||
@@ -112,17 +112,15 @@
|
|||||||
{{#if showFilteringUI}}
|
{{#if showFilteringUI}}
|
||||||
<div class="filters">
|
<div class="filters">
|
||||||
{{#if showModes}}
|
{{#if showModes}}
|
||||||
<ul class="modes">
|
<div class="modes">
|
||||||
{{#each displayedModes as |displayedMode|}}
|
{{#each displayedModes as |displayedMode|}}
|
||||||
<li class="mode">
|
{{d-button
|
||||||
{{d-button
|
action="changeMode"
|
||||||
action="changeMode"
|
actionParam=displayedMode.mode
|
||||||
actionParam=displayedMode.mode
|
class=displayedMode.cssClass
|
||||||
class=displayedMode.cssClass
|
icon=displayedMode.icon}}
|
||||||
icon=displayedMode.icon}}
|
|
||||||
</li>
|
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{#if showDatesOptions}}
|
{{#if showDatesOptions}}
|
||||||
|
|||||||
@@ -56,36 +56,38 @@
|
|||||||
|
|
||||||
<div class="section-columns">
|
<div class="section-columns">
|
||||||
<div class="section-column">
|
<div class="section-column">
|
||||||
<div class="admin-report activity-metrics">
|
{{#if activityMetrics.length}}
|
||||||
<div class="header">
|
<div class="admin-report activity-metrics">
|
||||||
<ul class="breadcrumb">
|
<div class="header">
|
||||||
<li class="item report">
|
<ul class="breadcrumb">
|
||||||
{{#link-to "adminReports" class="report-url"}}
|
<li class="item report">
|
||||||
{{i18n "admin.dashboard.activity_metrics"}}
|
{{#link-to "adminReports" class="report-url"}}
|
||||||
{{/link-to}}
|
{{i18n "admin.dashboard.activity_metrics"}}
|
||||||
</li>
|
{{/link-to}}
|
||||||
</ul>
|
</li>
|
||||||
</div>
|
</ul>
|
||||||
<div class="report-body">
|
</div>
|
||||||
<div class="counters-list">
|
<div class="report-body">
|
||||||
<div class="counters-header">
|
<div class="counters-list">
|
||||||
<div class="counters-cell"></div>
|
<div class="counters-header">
|
||||||
<div class="counters-cell">{{i18n 'admin.dashboard.reports.today'}}</div>
|
<div class="counters-cell"></div>
|
||||||
<div class="counters-cell">{{i18n 'admin.dashboard.reports.yesterday'}}</div>
|
<div class="counters-cell">{{i18n 'admin.dashboard.reports.today'}}</div>
|
||||||
<div class="counters-cell">{{i18n 'admin.dashboard.reports.last_7_days'}}</div>
|
<div class="counters-cell">{{i18n 'admin.dashboard.reports.yesterday'}}</div>
|
||||||
<div class="counters-cell">{{i18n 'admin.dashboard.reports.last_30_days'}}</div>
|
<div class="counters-cell">{{i18n 'admin.dashboard.reports.last_7_days'}}</div>
|
||||||
</div>
|
<div class="counters-cell">{{i18n 'admin.dashboard.reports.last_30_days'}}</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
{{#each activityMetrics as |metric|}}
|
{{#each activityMetrics as |metric|}}
|
||||||
{{admin-report
|
{{admin-report
|
||||||
showHeader=false
|
showHeader=false
|
||||||
filters=activityMetricsFilters
|
filters=activityMetricsFilters
|
||||||
forcedModes="counters"
|
forcedModes="counters"
|
||||||
dataSourceName=metric}}
|
dataSourceName=metric}}
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
{{/if}}
|
||||||
|
|
||||||
<div class="user-metrics">
|
<div class="user-metrics">
|
||||||
{{#conditional-loading-section isLoading=isLoading}}
|
{{#conditional-loading-section isLoading=isLoading}}
|
||||||
|
|||||||
@@ -246,6 +246,8 @@ class Report
|
|||||||
def self.report_signups(report)
|
def self.report_signups(report)
|
||||||
report.group_filtering = true
|
report.group_filtering = true
|
||||||
|
|
||||||
|
report.icon = 'user-plus'
|
||||||
|
|
||||||
if report.group_id
|
if report.group_id
|
||||||
basic_report_about report, User.real, :count_by_signup_date, report.start_date, report.end_date, report.group_id
|
basic_report_about report, User.real, :count_by_signup_date, report.start_date, report.end_date, report.group_id
|
||||||
add_counts report, User.real, 'users.created_at'
|
add_counts report, User.real, 'users.created_at'
|
||||||
|
|||||||
@@ -3993,6 +3993,7 @@ en:
|
|||||||
tags: "Tags"
|
tags: "Tags"
|
||||||
search: "Search"
|
search: "Search"
|
||||||
groups: "Groups"
|
groups: "Groups"
|
||||||
|
dashboard: "Dashboard"
|
||||||
secret_list:
|
secret_list:
|
||||||
invalid_input: "Input fields cannot be empty or contain vertical bar character."
|
invalid_input: "Input fields cannot be empty or contain vertical bar character."
|
||||||
|
|
||||||
|
|||||||
@@ -1903,6 +1903,8 @@ en:
|
|||||||
|
|
||||||
short_title: "The short title will be used on the user's home screen, launcher, or other places where space may be limited. A maximum of 12 characters is recommended."
|
short_title: "The short title will be used on the user's home screen, launcher, or other places where space may be limited. A maximum of 12 characters is recommended."
|
||||||
|
|
||||||
|
dashboard_general_tab_activity_metrics: "Choose reports to be displayed as activity metrics on the general tab."
|
||||||
|
|
||||||
errors:
|
errors:
|
||||||
invalid_email: "Invalid email address."
|
invalid_email: "Invalid email address."
|
||||||
invalid_username: "There's no user with that username."
|
invalid_username: "There's no user with that username."
|
||||||
|
|||||||
@@ -1898,3 +1898,19 @@ tags:
|
|||||||
force_lowercase_tags:
|
force_lowercase_tags:
|
||||||
default: true
|
default: true
|
||||||
client: true
|
client: true
|
||||||
|
|
||||||
|
dashboard:
|
||||||
|
dashboard_general_tab_activity_metrics:
|
||||||
|
client: true
|
||||||
|
type: list
|
||||||
|
list_type: compact
|
||||||
|
default: "page_view_total_reqs|visits|time_to_first_response|likes|flags|user_to_user_private_messages_with_replies"
|
||||||
|
allow_any: false
|
||||||
|
choices:
|
||||||
|
- page_view_total_reqs
|
||||||
|
- visits
|
||||||
|
- time_to_first_response
|
||||||
|
- likes
|
||||||
|
- flags
|
||||||
|
- user_to_user_private_messages_with_replies
|
||||||
|
- signups
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
import { acceptance } from "helpers/qunit-helpers";
|
import { acceptance } from "helpers/qunit-helpers";
|
||||||
|
|
||||||
acceptance("Dashboard Next", {
|
acceptance("Dashboard Next", {
|
||||||
loggedIn: true
|
loggedIn: true,
|
||||||
|
settings: {
|
||||||
|
dashboard_general_tab_activity_metrics: "page_view_total_reqs"
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
QUnit.test("Dashboard", async assert => {
|
QUnit.test("Dashboard", async assert => {
|
||||||
@@ -26,7 +29,6 @@ QUnit.test("tabs", async assert => {
|
|||||||
|
|
||||||
QUnit.test("general tab", async assert => {
|
QUnit.test("general tab", async assert => {
|
||||||
await visit("/admin");
|
await visit("/admin");
|
||||||
|
|
||||||
assert.ok(exists(".admin-report.signups"), "signups report");
|
assert.ok(exists(".admin-report.signups"), "signups report");
|
||||||
assert.ok(exists(".admin-report.posts"), "posts report");
|
assert.ok(exists(".admin-report.posts"), "posts report");
|
||||||
assert.ok(exists(".admin-report.dau-by-mau"), "dau-by-mau report");
|
assert.ok(exists(".admin-report.dau-by-mau"), "dau-by-mau report");
|
||||||
@@ -46,6 +48,10 @@ QUnit.test("general tab", async assert => {
|
|||||||
"Houston...",
|
"Houston...",
|
||||||
"displays problems"
|
"displays problems"
|
||||||
);
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
QUnit.test("general tab - activity metrics", async assert => {
|
||||||
|
await visit("/admin");
|
||||||
|
|
||||||
assert.equal(
|
assert.equal(
|
||||||
$(".admin-report.page-view-total-reqs .today-count")
|
$(".admin-report.page-view-total-reqs .today-count")
|
||||||
|
|||||||
Reference in New Issue
Block a user