summaryrefslogtreecommitdiffstats
path: root/webapp
diff options
context:
space:
mode:
Diffstat (limited to 'webapp')
-rw-r--r--webapp/components/analytics/system_analytics.jsx34
-rw-r--r--webapp/i18n/en.json2
-rw-r--r--webapp/utils/async_client.jsx8
-rw-r--r--webapp/utils/constants.jsx4
4 files changed, 47 insertions, 1 deletions
diff --git a/webapp/components/analytics/system_analytics.jsx b/webapp/components/analytics/system_analytics.jsx
index dd7b90260..89cc98f0b 100644
--- a/webapp/components/analytics/system_analytics.jsx
+++ b/webapp/components/analytics/system_analytics.jsx
@@ -358,6 +358,32 @@ class SystemAnalytics extends React.Component {
/>
);
+ const dailyActiveUsers = (
+ <StatisticCount
+ title={
+ <FormattedMessage
+ id='analytics.system.dailyActiveUsers'
+ defaultMessage='Daily Active Users'
+ />
+ }
+ icon='fa-users'
+ count={stats[StatTypes.DAILY_ACTIVE_USERS]}
+ />
+ );
+
+ const monthlyActiveUsers = (
+ <StatisticCount
+ title={
+ <FormattedMessage
+ id='analytics.system.monthlyActiveUsers'
+ defaultMessage='Monthly Active Users'
+ />
+ }
+ icon='fa-users'
+ count={stats[StatTypes.MONTHLY_ACTIVE_USERS]}
+ />
+ );
+
let firstRow;
let secondRow;
if (isLicensed && skippedIntensiveQueries) {
@@ -406,6 +432,13 @@ class SystemAnalytics extends React.Component {
);
}
+ const thirdRow = (
+ <div className='row'>
+ {dailyActiveUsers}
+ {monthlyActiveUsers}
+ </div>
+ );
+
return (
<div className='wrapper--fixed team_statistics'>
<h3>
@@ -417,6 +450,7 @@ class SystemAnalytics extends React.Component {
{banner}
{firstRow}
{secondRow}
+ {thirdRow}
{advancedStats}
{advancedGraphs}
{postTotalGraph}
diff --git a/webapp/i18n/en.json b/webapp/i18n/en.json
index 1513a4afe..daa0434dc 100644
--- a/webapp/i18n/en.json
+++ b/webapp/i18n/en.json
@@ -945,6 +945,8 @@
"analytics.system.textPosts": "Posts with Text-only",
"analytics.system.title": "System Statistics",
"analytics.system.totalChannels": "Total Channels",
+ "analytics.system.dailyActiveUsers": "Daily Active Users",
+ "analytics.system.monthlyActiveUsers": "Monthly Active Users",
"analytics.system.totalCommands": "Total Commands",
"analytics.system.totalFilePosts": "Posts with Files",
"analytics.system.totalHashtagPosts": "Posts with Hashtags",
diff --git a/webapp/utils/async_client.jsx b/webapp/utils/async_client.jsx
index 25724ec5e..cd38be811 100644
--- a/webapp/utils/async_client.jsx
+++ b/webapp/utils/async_client.jsx
@@ -1039,6 +1039,14 @@ export function getStandardAnalytics(teamId) {
if (data[index].name === 'total_read_db_connections') {
stats[StatTypes.TOTAL_READ_DB_CONNECTIONS] = data[index].value;
}
+
+ if (data[index].name === 'daily_active_users') {
+ stats[StatTypes.DAILY_ACTIVE_USERS] = data[index].value;
+ }
+
+ if (data[index].name === 'monthly_active_users') {
+ stats[StatTypes.MONTHLY_ACTIVE_USERS] = data[index].value;
+ }
}
AppDispatcher.handleServerAction({
diff --git a/webapp/utils/constants.jsx b/webapp/utils/constants.jsx
index b1c188d89..86147ee8c 100644
--- a/webapp/utils/constants.jsx
+++ b/webapp/utils/constants.jsx
@@ -260,7 +260,9 @@ export const Constants = {
NEWLY_CREATED_USERS: null,
TOTAL_WEBSOCKET_CONNECTIONS: null,
TOTAL_MASTER_DB_CONNECTIONS: null,
- TOTAL_READ_DB_CONNECTIONS: null
+ TOTAL_READ_DB_CONNECTIONS: null,
+ DAILY_ACTIVE_USERS: null,
+ MONTHLY_ACTIVE_USERS: null
}),
STAT_MAX_ACTIVE_USERS: 20,
STAT_MAX_NEW_USERS: 20,