Commit 4dbcf672 authored by Alfredo Sumaran's avatar Alfredo Sumaran

Add overview view for Cycle Analytics

parent 8a26021b
...@@ -425,3 +425,25 @@ ...@@ -425,3 +425,25 @@
} }
} }
} }
.cycle-analytics-overview {
padding-top: 100px;
.overview-details {
display: flex;
align-items: center;
}
.overview-text {
}
.overview-image {
text-align: right;
}
.overview-icon {
svg {
width: 365px;
height: 227px;
}
}
}
%p There is nothing happened
= icon("times", class: "dismiss-icon", "@click" => "dismissEmptyDialog()")
.cycle-analytics-overview
.container
.row
.col-md-10.col-md-offset-1
.row.overview-details
.col-md-6.overview-text
%h4 Introducing Cycle Analytics
%p
Cycle Analytics gives an overview of how much time it takes to go from idea to production in your project.
To set up CA, you must first define a production environment by setting up your CI and then deploy to production.
%p
%a.btn{ href: help_page_path('user/project/cycle_analytics'), target: "_blank" } Read more
.col-md-6.overview-image
%span.overview-icon
= custom_icon ('icon_cycle_analytics_overview')
- @no_container = true - @no_container = true
- @cycle_analytics_not_set_up = false
- page_title "Cycle Analytics" - page_title "Cycle Analytics"
- content_for :page_specific_javascripts do
= page_specific_javascript_tag("cycle_analytics/cycle_analytics_bundle.js")
= render "projects/pipelines/head" = render "projects/pipelines/head"
#cycle-analytics{ class: container_class, "v-cloak" => "true", data: { request_path: project_cycle_analytics_path(@project) } } - if @cycle_analytics_not_set_up
.empty-dialog-message{ "v-if" => "!isEmptyDialogDismissed" } = render partial: "overview"
%p There is nothing happened - else
= icon("times", class: "dismiss-icon", "@click" => "dismissEmptyDialog()") - content_for :page_specific_javascripts do
= page_specific_javascript_tag("cycle_analytics/cycle_analytics_bundle.js")
.bordered-box.landing.content-block{"v-if" => "!isOverviewDialogDismissed"} #cycle-analytics{ class: container_class, "v-cloak" => "true", data: { request_path: project_cycle_analytics_path(@project) } }
= icon("times", class: "dismiss-icon", "@click" => "dismissOverviewDialog()") .empty-dialog-message{ "v-if" => "!isEmptyDialogDismissed" }
.row = render partial: "empty_cycle_analytics"
.col-sm-3.col-xs-12.svg-container .bordered-box.landing.content-block{"v-if" => "!isOverviewDialogDismissed"}
= custom_icon('icon_cycle_analytics_splash') = icon("times", class: "dismiss-icon", "@click" => "dismissOverviewDialog()")
.col-sm-8.col-xs-12.inner-content .row
%h4 .col-sm-3.col-xs-12.svg-container
Introducing Cycle Analytics = custom_icon('icon_cycle_analytics_splash')
%p .col-sm-8.col-xs-12.inner-content
Cycle Analytics gives an overview of how much time it takes to go from idea to production in your project. %h4
Introducing Cycle Analytics
%p
Cycle Analytics gives an overview of how much time it takes to go from idea to production in your project.
= link_to "Read more", help_page_path('user/project/cycle_analytics'), target: '_blank', class: 'btn' = link_to "Read more", help_page_path('user/project/cycle_analytics'), target: '_blank', class: 'btn'
= icon("spinner spin", "v-show" => "isLoading") = icon("spinner spin", "v-show" => "isLoading")
.wrapper{"v-show" => "!isLoading && !hasError"} .wrapper{"v-show" => "!isLoading && !hasError"}
.panel.panel-default .panel.panel-default
.panel-heading .panel-heading
Pipeline Health Pipeline Health
.content-block .content-block
.container-fluid .container-fluid
.row .row
.col-sm-3.col-xs-12.column{"v-for" => "item in state.summary"} .col-sm-3.col-xs-12.column{"v-for" => "item in state.summary"}
%h3.header {{item.value}} %h3.header {{item.value}}
%p.text {{item.title}} %p.text {{item.title}}
.col-sm-3.col-xs-12.column .col-sm-3.col-xs-12.column
.dropdown.inline.js-ca-dropdown .dropdown.inline.js-ca-dropdown
%button.dropdown-menu-toggle{"data-toggle" => "dropdown", :type => "button"} %button.dropdown-menu-toggle{"data-toggle" => "dropdown", :type => "button"}
%span.dropdown-label Last 30 days %span.dropdown-label Last 30 days
%i.fa.fa-chevron-down %i.fa.fa-chevron-down
%ul.dropdown-menu.dropdown-menu-align-right %ul.dropdown-menu.dropdown-menu-align-right
%li %li
%a{ "href" => "#", "data-value" => "30" } %a{ "href" => "#", "data-value" => "30" }
Last 30 days Last 30 days
%li %li
%a{ "href" => "#", "data-value" => "90" } %a{ "href" => "#", "data-value" => "90" }
Last 90 days Last 90 days
.panel.panel-default.stage-panel .panel.panel-default.stage-panel
.panel-heading .panel-heading
%nav.col-headers %nav.col-headers
%ul %ul
%li.stage-header %li.stage-header
%span.stage-name %span.stage-name
Stage Stage
%i.has-tooltip.fa.fa-question-circle{ "data-placement" => "top", title: "The phase of the development lifecycle.", "aria-hidden" => "true" } %i.has-tooltip.fa.fa-question-circle{ "data-placement" => "top", title: "The phase of the development lifecycle.", "aria-hidden" => "true" }
%li.median-header %li.median-header
%span.stage-name %span.stage-name
Median Median
%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" } %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" }
%li.event-header %li.event-header
%span.stage-name %span.stage-name
{{ currentStage ? currentStage.legend : 'Related Issues' }} {{ currentStage ? currentStage.legend : 'Related Issues' }}
%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" } %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" }
%li.total-time-header %li.total-time-header
%span.stage-name %span.stage-name
Total Time Total Time
%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" } %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" }
.stage-panel-body .stage-panel-body
%nav.stage-nav %nav.stage-nav
%ul %ul
%li.stage-nav-item{ ':class' => '{ active: stage.active }', '@click' => 'selectStage(stage)', "v-for" => "stage in state.stages" } %li.stage-nav-item{ ':class' => '{ active: stage.active }', '@click' => 'selectStage(stage)', "v-for" => "stage in state.stages" }
.stage-name .stage-name
{{ stage.title }} {{ stage.title }}
.stage-median .stage-median
%template{ "v-if" => "stage.value" } %template{ "v-if" => "stage.value" }
{{ stage.value }} {{ stage.value }}
%template{ "v-else" => true } %template{ "v-else" => true }
%span.stage-empty %span.stage-empty
No enough data No enough data
.section.stage-events .section.stage-events
%template{ "v-if" => "isLoadingStage" } %template{ "v-if" => "isLoadingStage" }
= icon("spinner spin", "v-show" => "isLoadingStage") = icon("spinner spin", "v-show" => "isLoadingStage")
%template{ "v-if" => "isEmptyStage && !isLoadingStage" } %template{ "v-if" => "isEmptyStage && !isLoadingStage" }
= render partial: "empty_stage" = render partial: "empty_stage"
%template{ "v-if" => "state.events.length && !isLoadingStage && !isEmptyStage" } %template{ "v-if" => "state.events.length && !isLoadingStage && !isEmptyStage" }
%component{ ":is" => "currentStage.component", ":stage" => "currentStage", ":items" => "state.events" } %component{ ":is" => "currentStage.component", ":stage" => "currentStage", ":items" => "state.events" }
This diff is collapsed.
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