diff options
| author | Robert Speicher <robert@gitlab.com> | 2015-12-08 16:56:39 +0000 | 
|---|---|---|
| committer | Robert Speicher <robert@gitlab.com> | 2015-12-08 16:56:39 +0000 | 
| commit | befff32ecba3cd5fa634ea90ce2fc365a1b5e34e (patch) | |
| tree | db3a466f879dcb258db63ef7148b9bb2daa53b31 /app | |
| parent | 038c9a65fbe814927e9c9fa12f1bda660249e8b0 (diff) | |
| parent | 9b20731d4aa2b6ffce614cd77606809ad0e2a832 (diff) | |
| download | gitlab-ce-befff32ecba3cd5fa634ea90ce2fc365a1b5e34e.tar.gz | |
Merge branch 'languages-graph' into 'master'
Languages graph
See merge request !2009
Diffstat (limited to 'app')
| -rw-r--r-- | app/controllers/projects/graphs_controller.rb | 20 | ||||
| -rw-r--r-- | app/views/projects/graphs/_head.html.haml | 2 | ||||
| -rw-r--r-- | app/views/projects/graphs/languages.html.haml | 32 | 
3 files changed, 54 insertions, 0 deletions
| diff --git a/app/controllers/projects/graphs_controller.rb b/app/controllers/projects/graphs_controller.rb index 418b92040bc..c3942c52c6c 100644 --- a/app/controllers/projects/graphs_controller.rb +++ b/app/controllers/projects/graphs_controller.rb @@ -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 diff --git a/app/views/projects/graphs/_head.html.haml b/app/views/projects/graphs/_head.html.haml index 03d0733f913..a47643bd09c 100644 --- a/app/views/projects/graphs/_head.html.haml +++ b/app/views/projects/graphs/_head.html.haml @@ -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 diff --git a/app/views/projects/graphs/languages.html.haml b/app/views/projects/graphs/languages.html.haml new file mode 100644 index 00000000000..a7fab5b6d72 --- /dev/null +++ b/app/views/projects/graphs/languages.html.haml @@ -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); | 
