2016-09-20 16:12:48 -04:00
- @no_container = true
- page_title "Cycle Analytics"
2016-10-28 10:56:12 -04:00
2016-11-21 12:51:34 -05:00
#cycle-analytics{ class: container_class, "v-cloak" => "true", data: { request_path: project_cycle_analytics_path(@project) } }
2017-04-26 12:26:07 -04:00
- if @cycle_analytics_no_data
2017-10-09 03:45:51 -04:00
%banner{ "v-if" => "!isOverviewDialogDismissed",
"documentation-link": help_page_path('user/project/cycle_analytics'),
"v-on:dismiss-overview-dialog" => "dismissOverviewDialog()" }
2016-11-21 12:51:34 -05:00
= icon("spinner spin", "v-show" => "isLoading")
2016-12-26 05:47:16 -05:00
.wrapper{ "v-show" => "!isLoading && !hasError" }
2018-04-10 13:11:34 -04:00
.card
.card-header
2017-04-26 12:03:06 -04:00
{{ __('Pipeline Health') }}
2016-11-21 12:51:34 -05:00
.content-block
.container-fluid
.row
2018-04-09 12:45:38 -04:00
.col-sm-3.col-12.column{ "v-for" => "item in state.summary" }
2016-11-24 18:00:50 -05:00
%h3.header {{ item.value }}
2017-05-04 18:05:14 -04:00
%p.text {{ item.title }}
2018-04-09 12:45:38 -04:00
.col-sm-3.col-12.column
2016-11-21 12:51:34 -05:00
.dropdown.inline.js-ca-dropdown
2016-12-26 05:47:16 -05:00
%button.dropdown-menu-toggle{ "data-toggle" => "dropdown", :type => "button" }
2017-05-03 07:02:26 -04:00
%span.dropdown-label {{ n__('Last %d day', 'Last %d days', 30) }}
2016-11-21 12:51:34 -05:00
%i.fa.fa-chevron-down
2018-04-17 13:18:41 -04:00
%ul.dropdown-menu.dropdown-menu-right
2016-11-21 12:51:34 -05:00
%li
2017-08-10 02:42:28 -04:00
%a{ "href" => "#", "data-value" => "7" }
{{ n__('Last %d day', 'Last %d days', 7) }}
%li
2016-11-21 12:51:34 -05:00
%a{ "href" => "#", "data-value" => "30" }
2017-05-03 07:02:26 -04:00
{{ n__('Last %d day', 'Last %d days', 30) }}
2016-11-21 12:51:34 -05:00
%li
%a{ "href" => "#", "data-value" => "90" }
2017-05-03 07:02:26 -04:00
{{ n__('Last %d day', 'Last %d days', 90) }}
2016-11-21 16:31:12 -05:00
.stage-panel-container
2018-04-10 13:11:34 -04:00
.card.stage-panel
.card-header
2016-11-21 16:31:12 -05:00
%nav.col-headers
%ul
%li.stage-header
%span.stage-name
2017-05-10 11:40:46 -04:00
{{ s__('ProjectLifecycle|Stage') }}
2017-04-27 09:47:00 -04:00
%i.has-tooltip.fa.fa-question-circle{ "data-placement" => "top", title: _("The phase of the development lifecycle."), "aria-hidden" => "true" }
2016-11-21 16:31:12 -05:00
%li.median-header
%span.stage-name
2017-04-26 12:03:06 -04:00
{{ __('Median') }}
2017-04-27 09:47:00 -04:00
%i.has-tooltip.fa.fa-question-circle{ "data-placement" => "top", title: _("The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6."), "aria-hidden" => "true" }
2016-11-21 16:31:12 -05:00
%li.event-header
%span.stage-name
2017-04-27 18:56:21 -04:00
{{ currentStage ? __(currentStage.legend) : __('Related Issues') }}
2017-04-27 09:47:00 -04:00
%i.has-tooltip.fa.fa-question-circle{ "data-placement" => "top", title: _("The collection of events added to the data gathered for that stage."), "aria-hidden" => "true" }
2016-11-21 16:31:12 -05:00
%li.total-time-header
%span.stage-name
2017-04-26 12:03:06 -04:00
{{ __('Total Time') }}
2017-04-27 09:47:00 -04:00
%i.has-tooltip.fa.fa-question-circle{ "data-placement" => "top", title: _("The time taken by each data entry gathered by that stage."), "aria-hidden" => "true" }
2016-11-21 16:31:12 -05:00
.stage-panel-body
%nav.stage-nav
%ul
%li.stage-nav-item{ ':class' => '{ active: stage.active }', '@click' => 'selectStage(stage)', "v-for" => "stage in state.stages" }
.stage-nav-item-cell.stage-name
2017-05-03 22:05:38 -04:00
{{ stage.title }}
2016-11-21 16:31:12 -05:00
.stage-nav-item-cell.stage-median
%template{ "v-if" => "stage.isUserAllowed" }
%span{ "v-if" => "stage.value" }
{{ stage.value }}
%span.stage-empty{ "v-else" => true }
2017-04-26 12:03:06 -04:00
{{ __('Not enough data') }}
2016-11-21 16:31:12 -05:00
%template{ "v-else" => true }
%span.not-available
2017-04-26 12:03:06 -04:00
{{ __('Not available') }}
2016-11-21 16:31:12 -05:00
.section.stage-events
%template{ "v-if" => "isLoadingStage" }
= icon("spinner spin")
%template{ "v-if" => "currentStage && !currentStage.isUserAllowed" }
= render partial: "no_access"
%template{ "v-else" => true }
%template{ "v-if" => "isEmptyStage && !isLoadingStage" }
= render partial: "empty_stage"
%template{ "v-if" => "state.events.length && !isLoadingStage && !isEmptyStage" }
%component{ ":is" => "currentStage.component", ":stage" => "currentStage", ":items" => "state.events" }