Commit 49da2048 authored by Mayra Cabrera's avatar Mayra Cabrera

Merge branch 'fix-cohorts-dependencies' into 'master'

Remove Cohorts limit by dropping false dependency on Usage Ping

See merge request gitlab-org/gitlab!44916
parents 3d839df9 0c774e86
<script>
import { GlEmptyState, GlSprintf, GlLink } from '@gitlab/ui';
export default {
components: {
GlEmptyState,
GlSprintf,
GlLink,
},
inject: {
svgPath: {
default: '',
},
docsLink: {
default: '',
},
primaryButtonPath: {
default: '',
},
},
};
</script>
<template>
<gl-empty-state
class="js-empty-state"
:title="__('Activate user activity analysis')"
:svg-path="svgPath"
:primary-button-text="__('Turn on usage ping')"
:primary-button-link="primaryButtonPath"
>
<template #description>
<gl-sprintf
:message="
__(
'Turn on %{strongStart}usage ping%{strongEnd} to activate analysis of user activity, known as %{docLinkStart}Cohorts%{docLinkEnd}.',
)
"
>
<template #docLink="{ content }">
<gl-link :href="docsLink" target="_blank">{{ content }}</gl-link>
</template>
<template #strong="{ content }"
><strong>{{ content }}</strong></template
>
</gl-sprintf>
</template>
</gl-empty-state>
</template>
import Vue from 'vue'; import Vue from 'vue';
import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils'; import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils';
import AdminUsersApp from './components/app.vue'; import AdminUsersApp from './components/app.vue';
import UsagePingDisabled from './components/usage_ping_disabled.vue';
export const initAdminUsersApp = (el = document.querySelector('#js-admin-users-app')) => { export const initAdminUsersApp = (el = document.querySelector('#js-admin-users-app')) => {
if (!el) { if (!el) {
...@@ -21,23 +20,3 @@ export const initAdminUsersApp = (el = document.querySelector('#js-admin-users-a ...@@ -21,23 +20,3 @@ export const initAdminUsersApp = (el = document.querySelector('#js-admin-users-a
}), }),
}); });
}; };
export const initCohortsEmptyState = (el = document.querySelector('#js-cohorts-empty-state')) => {
if (!el) {
return false;
}
const { emptyStateSvgPath, enableUsagePingLink, docsLink } = el.dataset;
return new Vue({
el,
provide: {
svgPath: emptyStateSvgPath,
primaryButtonPath: enableUsagePingLink,
docsLink,
},
render(h) {
return h(UsagePingDisabled);
},
});
};
import Vue from 'vue'; import Vue from 'vue';
import { initAdminUsersApp, initCohortsEmptyState } from '~/admin/users'; import { initAdminUsersApp } from '~/admin/users';
import initTabs from '~/admin/users/tabs'; import initTabs from '~/admin/users/tabs';
import initConfirmModal from '~/confirm_modal'; import initConfirmModal from '~/confirm_modal';
import csrf from '~/lib/utils/csrf'; import csrf from '~/lib/utils/csrf';
...@@ -62,6 +62,5 @@ document.addEventListener('DOMContentLoaded', () => { ...@@ -62,6 +62,5 @@ document.addEventListener('DOMContentLoaded', () => {
}); });
initConfirmModal(); initConfirmModal();
initCohortsEmptyState();
initTabs(); initTabs();
}); });
...@@ -318,13 +318,11 @@ class Admin::UsersController < Admin::ApplicationController ...@@ -318,13 +318,11 @@ class Admin::UsersController < Admin::ApplicationController
end end
def load_cohorts def load_cohorts
if Gitlab::CurrentSettings.usage_ping_enabled cohorts_results = Rails.cache.fetch('cohorts', expires_in: 1.day) do
cohorts_results = Rails.cache.fetch('cohorts', expires_in: 1.day) do CohortsService.new.execute
CohortsService.new.execute
end
CohortsSerializer.new.represent(cohorts_results)
end end
CohortsSerializer.new.represent(cohorts_results)
end end
def track_cohorts_visit def track_cohorts_visit
......
- if @cohorts = render 'cohorts_table'
= render 'cohorts_table'
- else
#js-cohorts-empty-state{ data: { empty_state_svg_path: image_path('illustrations/convdev/convdev_no_index.svg'), enable_usage_ping_link: metrics_and_profiling_admin_application_settings_path(anchor: 'js-usage-settings'), docs_link: help_page_path('user/admin_area/analytics/user_cohorts') } }
...@@ -6,8 +6,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w ...@@ -6,8 +6,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w
# Cohorts **(FREE)** # Cohorts **(FREE)**
As a benefit of having the [usage ping active](settings/usage_statistics.md), You can analyze your users' GitLab activities over time.
you can analyze your users' GitLab activities over time.
To see user cohorts, go to **Admin Area > Overview > Users**. To see user cohorts, go to **Admin Area > Overview > Users**.
......
...@@ -11,6 +11,7 @@ RSpec.describe 'admin/users/index' do ...@@ -11,6 +11,7 @@ RSpec.describe 'admin/users/index' do
allow(view).to receive(:container_class).and_return('ignored') allow(view).to receive(:container_class).and_return('ignored')
create(:user) # to have at least one usser create(:user) # to have at least one usser
assign(:users, User.all.page(1)) assign(:users, User.all.page(1))
assign(:cohorts, { months_included: 0, cohorts: [] })
render render
end end
......
...@@ -1799,9 +1799,6 @@ msgstr "" ...@@ -1799,9 +1799,6 @@ msgstr ""
msgid "Activate Service Desk" msgid "Activate Service Desk"
msgstr "" msgstr ""
msgid "Activate user activity analysis"
msgstr ""
msgid "Active" msgid "Active"
msgstr "" msgstr ""
...@@ -33363,9 +33360,6 @@ msgstr "" ...@@ -33363,9 +33360,6 @@ msgstr ""
msgid "Turn on" msgid "Turn on"
msgstr "" msgstr ""
msgid "Turn on %{strongStart}usage ping%{strongEnd} to activate analysis of user activity, known as %{docLinkStart}Cohorts%{docLinkEnd}."
msgstr ""
msgid "Turn on usage ping" msgid "Turn on usage ping"
msgstr "" msgstr ""
......
...@@ -44,27 +44,14 @@ RSpec.describe "Admin::Users" do ...@@ -44,27 +44,14 @@ RSpec.describe "Admin::Users" do
end end
describe 'Cohorts tab content' do describe 'Cohorts tab content' do
context 'with usage ping enabled' do it 'shows users count per month' do
it 'shows users count per month' do stub_application_setting(usage_ping_enabled: false)
stub_application_setting(usage_ping_enabled: true)
create_list(:user, 2) create_list(:user, 2)
visit admin_users_path(tab: 'cohorts') visit admin_users_path(tab: 'cohorts')
expect(page).to have_content("#{Time.now.strftime('%b %Y')} 3 0")
end
end
context 'with usage ping disabled' do
it 'shows empty state', :js do
stub_application_setting(usage_ping_enabled: false)
visit admin_users_path(tab: 'cohorts')
expect(page).to have_selector(".js-empty-state") expect(page).to have_content("#{Time.now.strftime('%b %Y')} 3 0")
expect(page).to have_content("Activate user activity analysis")
end
end end
end end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment