mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-10 21:26:07 +10:00
Merge branch 'languages-graph' into 'master'
Languages graph See merge request !2009
This commit is contained in:
@@ -20,6 +20,7 @@ v 8.3.0 (unreleased)
|
||||
- Fix 500 error when creating a merge request that removes a submodule
|
||||
- Run custom Git hooks when branch is created or deleted.
|
||||
- Fix bug when simultaneously accepting multiple MRs results in MRs that are of "merged" status, but not merged to the target branch
|
||||
- Add languages page to graphs
|
||||
|
||||
v 8.2.3
|
||||
- Fix application settings cache not expiring after changes (Stan Hu)
|
||||
|
||||
@@ -34,6 +34,26 @@ class Projects::GraphsController < Projects::ApplicationController
|
||||
@charts[:build_times] = Ci::Charts::BuildTime.new(ci_project)
|
||||
end
|
||||
|
||||
def languages
|
||||
@languages = Linguist::Repository.new(@repository.rugged, @repository.rugged.head.target_id).languages
|
||||
total = @languages.map(&:last).sum
|
||||
|
||||
@languages = @languages.map do |language|
|
||||
name, share = language
|
||||
color = Digest::SHA256.hexdigest(name)[0...6]
|
||||
{
|
||||
value: (share.to_f * 100 / total).round(2),
|
||||
label: name,
|
||||
color: "##{color}",
|
||||
highlight: "##{color}"
|
||||
}
|
||||
end
|
||||
|
||||
@languages.sort! do |x, y|
|
||||
y[:value] <=> x[:value]
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def fetch_graph
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
= link_to 'Contributors', namespace_project_graph_path
|
||||
= nav_link(action: :commits) do
|
||||
= link_to 'Commits', commits_namespace_project_graph_path
|
||||
= nav_link(action: :languages) do
|
||||
= link_to 'Languages', languages_namespace_project_graph_path
|
||||
- if @project.builds_enabled?
|
||||
= nav_link(action: :ci) do
|
||||
= link_to ci_namespace_project_graph_path do
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
- page_title "Languages", "Graphs"
|
||||
= render "header_title"
|
||||
= render 'head'
|
||||
|
||||
.gray-content-block.append-bottom-default
|
||||
.oneline
|
||||
Programming languages used in this repository
|
||||
|
||||
.row
|
||||
.col-md-8
|
||||
%canvas#languages-chart{ height: 400 }
|
||||
.col-md-4
|
||||
%ul.bordered-list
|
||||
- @languages.each do |language|
|
||||
%li
|
||||
%span{ style: "color: #{language[:color]}" }
|
||||
= icon('circle')
|
||||
|
||||
= language[:label]
|
||||
.pull-right
|
||||
= language[:value]
|
||||
\%
|
||||
|
||||
:javascript
|
||||
var data = #{@languages.to_json};
|
||||
var ctx = $("#languages-chart").get(0).getContext("2d");
|
||||
var options = {
|
||||
scaleOverlay: true,
|
||||
responsive: true,
|
||||
maintainAspectRatio: false
|
||||
}
|
||||
var myPieChart = new Chart(ctx).Pie(data, options);
|
||||
@@ -500,6 +500,7 @@ Rails.application.routes.draw do
|
||||
member do
|
||||
get :commits
|
||||
get :ci
|
||||
get :languages
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -18,3 +18,8 @@ Feature: Project Graph
|
||||
Given project "Shop" has CI enabled
|
||||
When I visit project "Shop" CI graph page
|
||||
Then page should have CI graphs
|
||||
|
||||
@javascript
|
||||
Scenario: I should see project languages graphs
|
||||
When I visit project "Shop" languages graph page
|
||||
Then page should have languages graphs
|
||||
|
||||
@@ -14,6 +14,15 @@ class Spinach::Features::ProjectGraph < Spinach::FeatureSteps
|
||||
visit commits_namespace_project_graph_path(project.namespace, project, "master")
|
||||
end
|
||||
|
||||
step 'I visit project "Shop" languages graph page' do
|
||||
visit languages_namespace_project_graph_path(project.namespace, project, "master")
|
||||
end
|
||||
|
||||
step 'page should have languages graphs' do
|
||||
expect(page).to have_content "Ruby 66.63 %"
|
||||
expect(page).to have_content "JavaScript 22.96 %"
|
||||
end
|
||||
|
||||
step 'page should have commits graphs' do
|
||||
expect(page).to have_content "Commit statistics for master"
|
||||
expect(page).to have_content "Commits per day of month"
|
||||
|
||||
Reference in New Issue
Block a user