Merge branch 'fix/cycle-analytics-events-limit' into 'master'
Add limit to the number of events showed in cycle analytics See merge request !7743
This commit is contained in:
commit
84e1cc5592
5 changed files with 63 additions and 2 deletions
|
@ -13,6 +13,12 @@
|
|||
<div>
|
||||
<div class="events-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>
|
||||
<ul class="stage-event-list">
|
||||
<li v-for="commit in items" class="stage-event-item">
|
||||
|
|
|
@ -284,7 +284,11 @@
|
|||
|
||||
.events-description {
|
||||
line-height: 65px;
|
||||
padding-left: $gl-padding;
|
||||
padding: 0 $gl-padding;
|
||||
}
|
||||
|
||||
.events-info {
|
||||
color: $gl-text-color-secondary;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
title: Add limit to the number of events showed in cycle analytics
|
||||
merge_request:
|
||||
author:
|
|
@ -5,6 +5,8 @@ module Gitlab
|
|||
|
||||
attr_reader :projections, :query, :stage, :order
|
||||
|
||||
MAX_EVENTS = 50
|
||||
|
||||
def initialize(project:, stage:, options:)
|
||||
@project = project
|
||||
@stage = stage
|
||||
|
@ -38,7 +40,7 @@ module Gitlab
|
|||
def events_query
|
||||
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
|
||||
|
||||
def default_order
|
||||
|
|
45
spec/lib/gitlab/cycle_analytics/base_event_fetcher_spec.rb
Normal file
45
spec/lib/gitlab/cycle_analytics/base_event_fetcher_spec.rb
Normal file
|
@ -0,0 +1,45 @@
|
|||
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
|
Loading…
Reference in a new issue