Commit 84e1cc55 authored by Sean McGivern's avatar Sean McGivern

Merge branch 'fix/cycle-analytics-events-limit' into 'master'

Add limit to the number of events showed in cycle analytics

See merge request !7743
parents 85349c96 dff411d7
...@@ -13,6 +13,12 @@ ...@@ -13,6 +13,12 @@
<div> <div>
<div class="events-description"> <div class="events-description">
{{ stage.description }} {{ stage.description }}
<span v-if="items.length === 50" class="events-info pull-right">
<i class="fa fa-warning has-tooltip"
title="Limited to showing 50 events at most"
data-placement="top"></i>
Showing 50 events
</span>
</div> </div>
<ul class="stage-event-list"> <ul class="stage-event-list">
<li v-for="commit in items" class="stage-event-item"> <li v-for="commit in items" class="stage-event-item">
......
...@@ -284,7 +284,11 @@ ...@@ -284,7 +284,11 @@
.events-description { .events-description {
line-height: 65px; line-height: 65px;
padding-left: $gl-padding; padding: 0 $gl-padding;
}
.events-info {
color: $gl-text-color-secondary;
} }
} }
......
---
title: Add limit to the number of events showed in cycle analytics
merge_request:
author:
...@@ -5,6 +5,8 @@ module Gitlab ...@@ -5,6 +5,8 @@ module Gitlab
attr_reader :projections, :query, :stage, :order attr_reader :projections, :query, :stage, :order
MAX_EVENTS = 50
def initialize(project:, stage:, options:) def initialize(project:, stage:, options:)
@project = project @project = project
@stage = stage @stage = stage
...@@ -38,7 +40,7 @@ module Gitlab ...@@ -38,7 +40,7 @@ module Gitlab
def events_query def events_query
diff_fn = subtract_datetimes_diff(base_query, @options[:start_time_attrs], @options[:end_time_attrs]) diff_fn = subtract_datetimes_diff(base_query, @options[:start_time_attrs], @options[:end_time_attrs])
base_query.project(extract_diff_epoch(diff_fn).as('total_time'), *projections).order(order.desc) base_query.project(extract_diff_epoch(diff_fn).as('total_time'), *projections).order(order.desc).take(MAX_EVENTS)
end end
def default_order def default_order
......
require 'spec_helper'
describe Gitlab::CycleAnalytics::BaseEventFetcher do
let(:max_events) { 2 }
let(:project) { create(:project) }
let(:user) { create(:user, :admin) }
let(:start_time_attrs) { Issue.arel_table[:created_at] }
let(:end_time_attrs) { [Issue::Metrics.arel_table[:first_associated_with_milestone_at]] }
let(:options) do
{ start_time_attrs: start_time_attrs,
end_time_attrs: end_time_attrs,
from: 30.days.ago }
end
subject do
described_class.new(project: project,
stage: :issue,
options: options).fetch
end
before do
allow_any_instance_of(Gitlab::ReferenceExtractor).to receive(:issues).and_return(Issue.all)
allow_any_instance_of(Gitlab::CycleAnalytics::BaseEventFetcher).to receive(:serialize) do |event|
event
end
stub_const('Gitlab::CycleAnalytics::BaseEventFetcher::MAX_EVENTS', max_events)
setup_events(count: 3)
end
it 'limits the rows to the max number' do
expect(subject.count).to eq(max_events)
end
def setup_events(count:)
count.times do
issue = create(:issue, project: project, created_at: 2.days.ago)
milestone = create(:milestone, project: project)
issue.update(milestone: milestone)
create_merge_request_closing_issue(issue)
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