diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-05-05 12:10:33 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-05-05 12:10:33 +0000 |
commit | 023e050d82ed11d9060ce5bdaec99c3871b98164 (patch) | |
tree | ee89e2c83c2771c635a0c1daaa88fcce25f18612 /lib/sidebars/projects | |
parent | 1c568d834d0cbe1bbbf558ac9a45940f6dbda37a (diff) | |
download | gitlab-ce-023e050d82ed11d9060ce5bdaec99c3871b98164.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib/sidebars/projects')
-rw-r--r-- | lib/sidebars/projects/menus/analytics_menu.rb | 89 | ||||
-rw-r--r-- | lib/sidebars/projects/panel.rb | 1 |
2 files changed, 90 insertions, 0 deletions
diff --git a/lib/sidebars/projects/menus/analytics_menu.rb b/lib/sidebars/projects/menus/analytics_menu.rb new file mode 100644 index 00000000000..b8a4e0171a7 --- /dev/null +++ b/lib/sidebars/projects/menus/analytics_menu.rb @@ -0,0 +1,89 @@ +# frozen_string_literal: true + +module Sidebars + module Projects + module Menus + class AnalyticsMenu < ::Sidebars::Menu + include Gitlab::Utils::StrongMemoize + + override :configure_menu_items + def configure_menu_items + return false unless can?(context.current_user, :read_analytics, context.project) + + add_item(ci_cd_analytics_menu_item) + add_item(repository_analytics_menu_item) + add_item(cycle_analytics_menu_item) + + true + end + + override :link + def link + return cycle_analytics_menu_item.link if cycle_analytics_menu_item + + items.first.link + end + + override :extra_container_html_options + def extra_container_html_options + { + class: 'shortcuts-analytics' + } + end + + override :title + def title + _('Analytics') + end + + override :sprite_icon + def sprite_icon + 'chart' + end + + private + + def ci_cd_analytics_menu_item + return if context.project.empty_repo? + return unless context.project.feature_available?(:builds, context.current_user) + return unless can?(context.current_user, :read_build, context.project) + + ::Sidebars::MenuItem.new( + title: _('CI/CD'), + link: charts_project_pipelines_path(context.project), + active_routes: { path: 'pipelines#charts' }, + item_id: :ci_cd_analytics + ) + end + + def repository_analytics_menu_item + return if context.project.empty_repo? + + ::Sidebars::MenuItem.new( + title: _('Repository'), + link: charts_project_graph_path(context.project, context.current_ref), + container_html_options: { class: 'shortcuts-repository-charts' }, + active_routes: { path: 'graphs#charts' }, + item_id: :repository_analytics + ) + end + + def cycle_analytics_menu_item + strong_memoize(:cycle_analytics_menu_item) do + next unless can?(context.current_user, :read_cycle_analytics, context.project) + + ::Sidebars::MenuItem.new( + title: _('Value Stream'), + link: project_cycle_analytics_path(context.project), + container_html_options: { class: 'shortcuts-project-cycle-analytics' }, + active_routes: { path: 'cycle_analytics#show' }, + item_id: :cycle_analytics + ) + end + end + end + end + end +end + +Sidebars::Projects::Menus::AnalyticsMenu.prepend_if_ee('EE::Sidebars::Projects::Menus::AnalyticsMenu') diff --git a/lib/sidebars/projects/panel.rb b/lib/sidebars/projects/panel.rb index 58f2e9e7fb4..8d81c197f71 100644 --- a/lib/sidebars/projects/panel.rb +++ b/lib/sidebars/projects/panel.rb @@ -18,6 +18,7 @@ module Sidebars add_menu(Sidebars::Projects::Menus::SecurityComplianceMenu.new(context)) add_menu(Sidebars::Projects::Menus::OperationsMenu.new(context)) add_menu(Sidebars::Projects::Menus::PackagesRegistriesMenu.new(context)) + add_menu(Sidebars::Projects::Menus::AnalyticsMenu.new(context)) end override :render_raw_menus_partial |