Commit 20e0c9b1 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Rewrite graphs feature

* remove commits stats page (will be replaced by graphs)
* remove additions/deletions from graph because of bad performance
* keep graph logic in gitlab
Signed-off-by: default avatarDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
parent 633d42a3
......@@ -24,22 +24,7 @@ class window.ContributorsStatGraph
class: 'graph-author-commits-count'
})
commits.text(author.commits + " commits")
additions = $('<span/>', {
class: 'graph-additions'
})
additions.text(author.additions + " ++")
deletions = $('<span/>', {
class: 'graph-deletions'
})
deletions.text(author.deletions + " --")
$('<span/>').append(commits)
.append(" / ")
.append(additions)
.append(" / ")
.append(deletions)
create_author_header: (author) ->
list_item = $('<li/>', {
......
......@@ -7,7 +7,7 @@ class Projects::GraphsController < Projects::ApplicationController
def show
respond_to do |format|
format.html
format.js do
format.json do
fetch_graph
end
end
......@@ -16,10 +16,17 @@ class Projects::GraphsController < Projects::ApplicationController
private
def fetch_graph
@log = @project.repository.graph_log.to_json
@success = true
rescue => ex
@commits = @project.repository.commits(nil, nil, 6000, 0, true)
@log = []
@success = false
@commits.each do |commit|
@log << {
author_name: commit.author_name.force_encoding('UTF-8'),
author_email: commit.author_email.force_encoding('UTF-8'),
date: commit.committed_date.strftime("%Y-%m-%d")
}
end
render json: @log.to_json
end
end
......@@ -4,11 +4,6 @@ class Projects::RepositoriesController < Projects::ApplicationController
before_filter :authorize_code_access!
before_filter :require_non_empty_project
def stats
@stats = Gitlab::Git::Stats.new(@repository.raw_repository, @repository.root_ref)
@graph = @stats.graph
end
def archive
unless can?(current_user, :download_code, @project)
render_404 and return
......
......@@ -32,7 +32,7 @@ class Repository
commit
end
def commits(ref, path = nil, limit = nil, offset = nil)
def commits(ref, path = nil, limit = nil, offset = nil, skip_merges = false)
commits = Gitlab::Git::Commit.where(
repo: raw_repository,
ref: ref,
......
......@@ -13,7 +13,3 @@
= link_to project_tags_path(@project) do
Tags
%span.badge.js-totaltags-count= @repository.tags.length
= nav_link(controller: :repositories, action: :stats) do
= link_to stats_project_repository_path(@project) do
Stats
......@@ -3,15 +3,10 @@
%h3.page-title
%i.icon-spinner.icon-spin
Building repository graph.
%p Please wait a moment, this page will automatically refresh when ready.
%p.slead Please wait a moment, this page will automatically refresh when ready.
.stat-graph
.stat-graph.hide
.header.clearfix
.pull-right
%select
%option{:value => "commits"} Commits
%option{:value => "additions"} Additions
%option{:value => "deletions"} Deletions
%h3#date_header.page-title
%p.light
Commits to #{@project.default_branch}, excluding merge commits. Limited by 6,000 commits
......@@ -21,15 +16,21 @@
#contributors.clearfix
%ol.contributors-list.clearfix
:javascript
$(".stat-graph").hide();
$.ajax({
:coffeescript
$.ajax
type: "GET",
url: location.href,
complete: function() {
success: (data) ->
graph = new ContributorsStatGraph()
graph.init(data)
$("#brush_change").change ->
graph.change_date_header()
graph.redraw_authors()
$(".stat-graph").fadeIn();
$(".loading-graph").hide();
},
dataType: "script"
});
dataType: "json"
- if @success
:plain
controller = new ContributorsStatGraph
controller.init(#{@log})
$("select").change( function () {
var field = $(this).val()
controller.set_current_field(field)
controller.redraw_master()
controller.redraw_authors()
})
$("#brush_change").change( function () {
controller.change_date_header()
controller.redraw_authors()
})
- else
:plain
$('.stat-graph').replaceWith('<div class="alert alert-danger">Failed to load graph</div>')
= render "projects/commits/head"
.row
.col-md-6
%div#activity-chart.chart
%hr
%p
%b Total commits:
%span= @repository.commit_count
%p
%b Total files in #{@repository.root_ref}:
%span= @stats.files_count
%p
%b Authors:
%span= @stats.authors_count
.col-md-6
%h4 Top 50 Committers:
%ol.styled
- @stats.authors[0...50].each do |author|
%li
= image_tag avatar_icon(author.email, 16), class: 'avatar s16', alt: ''
= author.name
%small.light= author.email
.pull-right
= author.commits
:javascript
var labels = [#{@graph.labels.to_json}];
var commits = [#{@graph.commits.join(', ')}];
var title = "Commit activity for last #{@graph.weeks} weeks";
Chart.init(labels, commits, title);
......@@ -230,7 +230,6 @@ Gitlab::Application.routes.draw do
resource :repository, only: [:show] do
member do
get "stats"
get "archive", constraints: { format: Gitlab::Regex.archive_formats_regex }
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