diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 517fa327c..c8b272480 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -319,9 +319,25 @@ class ProjectsController < ApplicationController else @events_pages = ForgeActivity.includes(:project).where("forge_activities.project_id = ? and projects.is_public = ? and forge_act_type != ? ",@project,1, "Document").order("created_at desc").page(params['page'|| 1]).per(10); end - g = Gitlab.client + # g = Gitlab.client unless @project.gpid.nil? || @project.project_score.changeset_num == 0 - @static_total_per_user = g.rep_stats(@project.gpid) + # rep_statics_commit = @project.rep_statics.order("commits_num desc") + rep_statics_commit = RepStatics.find_by_sql("SELECT * FROM `rep_statics` where project_id = #{@project.id} order by commits_num desc limit 10") + rep_statics_code = RepStatics.find_by_sql("SELECT * FROM `rep_statics` where project_id = #{@project.id} order by changeset desc limit 10") + # rep_statics_code = @project.rep_statics.sort_by {|u| u.changeset}.reverse + @a_uname = rep_statics_commit.map {|s| s.uname } + @a_uname_code = rep_statics_code.map {|s| s.uname } + @a_commits_num = rep_statics_commit.map {|s| s.commits_num.to_i } + @a_commits_add = rep_statics_code.map {|s| s.add.to_i } + @a_commits_del = rep_statics_code.map {|s| s.del.to_i } + @a_commits_changeset = rep_statics_code.map {|s| s.changeset.to_i } + g = Gitlab.client + begin + g_branch = g.project(@project.gpid).default_branch.to_s + rescue + logger.error("get gitlab project failed!") + end + @rev = g_branch.nil? ? "master" : g_branch end # 根据对应的请求,返回对应的数据 respond_to do |format| diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index 82a6196cb..380e880ad 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -348,8 +348,10 @@ update # (show_error_not_found; return) unless @entries g = Gitlab.client @changesets = g.commits(@project.gpid, :ref_name => @rev) + g_project = g.project(@project.gpid) # 总的提交数 - @changesets_all_count = @project.gpid.nil? ? 0 : g.project(@project.gpid).commit_count + @changesets_all_count = @project.gpid.nil? ? 0 : g_project.commit_count + @g_default_branch = g_project.default_branch.nil? ? "master" : g_project.default_branch # 访问该页面的是会后则刷新 if @project.project_score.nil? ProjectScore.create(:project_id => @project.id, :score => false) @@ -573,7 +575,17 @@ update g = Gitlab.client begin @static_total_per_user = g.rep_stats(project_id, :rev => rev) - @static_total_per_user + # 更新rep_statics统计数 + @static_total_per_user.each do |static| + rep_static = RepStatics.where("project_id =? and email =?", @project.id, static.email.to_s).first + if rep_static.nil? + RepStatics.create(:project_id => @project.id, :uname => static.uname, :commits_num => static.commits_num, :email => static.email, :add => static.add, :del => static.del, :changeset => static.changes) + else + if @rev == params[:default_branch] + rep_static.update_attributes(:uname => static.uname, :commits_num => static.commits_num, :email => static.email, :add => static.add, :del => static.del, :changeset => static.changes) + end + end + end # @static_month__per_user = g.rep_stats(project_id, :rev => rev, :creator => creator, :period => 2) # @static_week_per_user = g.rep_stats(project_id, :rev => rev, :creator => creator, :period => 3) rescue diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb index 424ddd71f..8f70cced5 100644 --- a/app/controllers/student_work_controller.rb +++ b/app/controllers/student_work_controller.rb @@ -5,7 +5,7 @@ class StudentWorkController < ApplicationController include ApplicationHelper require 'bigdecimal' require "base64" - before_filter :find_homework, :only => [:new, :index, :create, :student_work_absence_penalty, :absence_penalty_list, :evaluation_list, :program_test,:program_test_ex,:code_repeattest,:set_score_rule,:forbidden_anonymous_comment,:delete_work,:new_student_work_project,:student_work_project,:cancel_relate_project,:search_course_students] + before_filter :find_homework, :only => [:new, :index, :create, :student_work_absence_penalty, :absence_penalty_list, :evaluation_list, :program_test,:program_test_ex,:code_repeattest,:work_canrepeat,:set_score_rule,:forbidden_anonymous_comment,:delete_work,:new_student_work_project,:student_work_project,:cancel_relate_project,:search_course_students] before_filter :find_work, :only => [:edit, :update, :show, :destroy, :add_score, :praise_student_work,:retry_work,:revise_attachment] before_filter :member_of_course, :only => [:new, :create, :show, :add_score, :praise_student_work] before_filter :author_of_work, :only => [:edit, :update, :destroy] @@ -188,7 +188,7 @@ class StudentWorkController < ApplicationController #找出该作业的所有提交作业 def find_all_student_work_by_homeid() - all_studentwork = StudentWork.where("homework_common_id =?", @homework.id) + all_studentwork = StudentWork.where("homework_common_id =#{@homework.id} and is_test = 0 ") all_studentwork end @@ -222,6 +222,15 @@ class StudentWorkController < ApplicationController JSON.parse(res.body) end + def work_canrepeat + @homework_id = params[:homework] + @course_id = params[:course_id] + + all_studentwork = find_all_student_work_by_homeid() + + @work_count = all_studentwork.count + end + #代码查重 status: 0完成 -2不需要查重 -1查重失败不支持该语言 def code_repeattest tStarttime = Time.now diff --git a/app/models/project.rb b/app/models/project.rb index 184b3c7af..ceec0e182 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -115,6 +115,7 @@ class Project < ActiveRecord::Base has_many :org_projects,:dependent => :destroy has_many :organization,:through => :org_projects + has_many :rep_statics, :class_name => 'RepStatics' # has_many :journals diff --git a/app/models/rep_statics.rb b/app/models/rep_statics.rb new file mode 100644 index 000000000..584af6560 --- /dev/null +++ b/app/models/rep_statics.rb @@ -0,0 +1,4 @@ +class RepStatics < ActiveRecord::Base + belongs_to :project + attr_accessible :add, :commits_num, :del, :email, :project_id, :uname, :changeset +end diff --git a/app/views/courses/_compare_code_tips_1.html.erb b/app/views/courses/_compare_code_tips_1.html.erb index 4dc073797..a2230bd46 100644 --- a/app/views/courses/_compare_code_tips_1.html.erb +++ b/app/views/courses/_compare_code_tips_1.html.erb @@ -37,11 +37,12 @@ console.log(data); if (data.status == 0) { - $("#ajax-modal").html('<%= escape_javascript( render :partial => 'courses/compare_code_tips_2',:locals => {:des=>"查重完成,是否立即查看结果?",:status=>1, :homework=> homework,:courseid=> courseid})%>'); + $("#ajax-modal").html('<%= escape_javascript( render :partial => 'courses/compare_code_tips_2',:locals => {:des=>"查重完成,是否立即查看结果?",:status=>1, :homework=> homework,:courseid=> courseid})%>'); showModal('ajax-modal', '580px'); $('#ajax-modal').siblings().remove(); - $('#ajax-modal').before(""); - $('#ajax-modal').parent().css("top","40%").css("left","50%"); + $('#ajax-modal').before(""); + //$('#ajax-modal').parent().css("top","40%").css("left","50%"); + $('#ajax-modal').parent().css("top","30%").css("left","50%").css("padding-top","10px").css("position","fixed"); $('#ajax-modal').parent().addClass("resourceUploadPopup"); $('#ajax-modal').css("padding-left","16px").css("padding-bottom","16px"); @@ -54,8 +55,8 @@ $("#ajax-modal").html('<%= escape_javascript( render :partial => 'courses/compare_code_tips_2',:locals => {:des=>"对不起目前只支持java/c/c++的代码查重!",:status=>0, :homework=> homework,:courseid=> courseid})%>'); showModal('ajax-modal', '580px'); $('#ajax-modal').siblings().remove(); - $('#ajax-modal').before(""); - $('#ajax-modal').parent().css("top","40%").css("left","50%"); + $('#ajax-modal').before(""); + $('#ajax-modal').parent().css("top","30%").css("left","50%").css("padding-top","10px").css("position","fixed"); $('#ajax-modal').parent().addClass("resourceUploadPopup"); $('#ajax-modal').css("padding-left","16px").css("padding-bottom","16px"); @@ -69,8 +70,8 @@ $("#ajax-modal").html('<%= escape_javascript( render :partial => 'courses/compare_code_tips_2',:locals => {:des=>"对不起该作业的作品过少不能查重!",:status=>0, :homework=> homework,:courseid=> courseid})%>'); showModal('ajax-modal', '580px'); $('#ajax-modal').siblings().remove(); - $('#ajax-modal').before(""); - $('#ajax-modal').parent().css("top","40%").css("left","50%"); + $('#ajax-modal').before(""); + $('#ajax-modal').parent().css("top","30%").css("left","50%").css("padding-top","10px").css("position","fixed"); $('#ajax-modal').parent().addClass("resourceUploadPopup"); $('#ajax-modal').css("padding-left","16px").css("padding-bottom","16px"); @@ -85,8 +86,8 @@ $("#ajax-modal").html('<%= escape_javascript( render :partial => 'courses/compare_code_tips_2',:locals => {:des=>"对不起,服务器繁忙请稍后再试!",:status=>0, :homework=> homework,:courseid=> courseid})%>'); showModal('ajax-modal', '580px'); $('#ajax-modal').siblings().remove(); - $('#ajax-modal').before(""); - $('#ajax-modal').parent().css("top","40%").css("left","50%"); + $('#ajax-modal').before(""); + $('#ajax-modal').parent().css("top","30%").css("left","50%").css("padding-top","10px").css("position","fixed"); $('#ajax-modal').parent().addClass("resourceUploadPopup"); $('#ajax-modal').css("padding-left","16px").css("padding-bottom","16px"); diff --git a/app/views/courses/_show_compare_code.html.erb b/app/views/courses/_show_compare_code.html.erb index 00bea362e..0d5dd36ec 100644 --- a/app/views/courses/_show_compare_code.html.erb +++ b/app/views/courses/_show_compare_code.html.erb @@ -12,7 +12,7 @@ <% if @simi_value.to_i >= 90 %>
相似度<%=@simi_value.to_i%>%
<% else %> -
相似度<%=@simi_valu.to_i%>%
+
相似度<%=@simi_value.to_i%>%
<% end %>

<%=dst_name%>

diff --git a/app/views/courses/code_repeat.html.erb b/app/views/courses/code_repeat.html.erb index ccca72a20..0748dc30f 100644 --- a/app/views/courses/code_repeat.html.erb +++ b/app/views/courses/code_repeat.html.erb @@ -48,7 +48,7 @@ <%= link_to("查看", show_comparecode_course_path(:homework_id => @homework.id,:src_id => student_work.id,:dst_id => student_work.simi_id.to_i),:class => "cha-btn",:remote => true ) %> <%else%> -
  • +
  • --
  • --
  • --
  • --
  • diff --git a/app/views/projects/_rep_static.html.erb b/app/views/projects/_rep_static.html.erb index 0522fd34e..9ebf68d0c 100644 --- a/app/views/projects/_rep_static.html.erb +++ b/app/views/projects/_rep_static.html.erb @@ -10,14 +10,18 @@ type: 'line' }, title: { - text: '版本库代码提交量' + text: '版本库代码提交行数', + style:{ + fontSize: '14px' + } + }, subtitle: { // text: 'Source: WorldClimate.com' }, xAxis: { // categories: ["Jan", "Jan", "Jan", 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] - categories: <%= raw(@static_total_per_user.map{|c| c.uname}) %> + categories: <%= raw(@a_uname_code) %> }, yAxis: { title: { @@ -34,6 +38,12 @@ } }, plotOptions: { + series: { + marker: { + radius: 3, //曲线点半径,默认是4 + symbol: 'circle' //曲线点类型:"circle", "square", "diamond", "triangle","triangle-down",默认是"circle" + } + }, line: { dataLabels: { enabled: true @@ -41,21 +51,55 @@ enableMouseTracking: false } }, - series: [{ - name: '改动或增加', - color: '#fd9e04', - -// data: [7.0, 6.9, 9.5, 14.5, 18.4, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6] - data: <%= @static_total_per_user.map{|c| c.add.to_i} %> + series: [ + { + name: '总变更', + color: '#d05d5a', + fontWeight: 'normal', + data: <%= @a_commits_changeset %>, + dataLabels: { + enabled: false, + style: { + fontSize: '13px', + color: '#aaa', + fontFamily: 'Arial', + textShadow: '0px 0px 6px rgb(0, 0, 0), 0px 0px 3px rgb(f, f, f)', + fontWeight: 'normal' + } + }, + lineWidth: 1.5 + }, + { + name: '改动或增加', + color: '#5b6b76', + data: <%= @a_commits_add %>, + dataLabels: { + enabled: false, + style: { + fontSize: '13px', + color: '#aaa', + fontFamily: 'Arial', + textShadow: '0px 0px 6px rgb(0, 0, 0), 0px 0px 3px rgb(f, f, f)', + fontWeight: 'normal' + } + }, + lineWidth: 1.5 }, { - name: '删除', - color: '#46baed ', - data: <%= @static_total_per_user.map{|c| c.del.to_i} %> - },{ - name: '总变更', - color: '#d397d5', - data: <%= @static_total_per_user.map{|c| c.changes.to_i} %> + name: '删除', + color: '#84b5bb', + data: <%= @a_commits_del %>, + dataLabels: { + enabled: false, + style: { + fontSize: '13px', + color: '#aaa', + fontFamily: 'Arial', + textShadow: '0px 0px 6px rgb(0, 0, 0), 0px 0px 3px rgb(f, f, f)', + fontWeight: 'normal' + } + }, + lineWidth: 1.5 }] }); @@ -68,14 +112,18 @@ enabled: false }, title: { - text: '版本库代码提交次数' + text: '版本库代码提交次数', + style:{ + fontSize: '14px' + } + }, subtitle: { // text: 'Source: WorldClimate.com' }, xAxis: { // categories: ["Jan", "Jan", "Jan", 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] - categories: <%= raw(@static_total_per_user.map{|c| c.uname}) %> + categories: <%= raw(@a_uname) %> }, yAxis: { title: { @@ -89,6 +137,12 @@ } }, plotOptions: { + series: { + marker: { + radius: 3, //曲线点半径,默认是4 + symbol: 'circle' //曲线点类型:"circle", "square", "diamond", "triangle","triangle-down",默认是"circle" + } + }, line: { dataLabels: { enabled: true @@ -97,9 +151,24 @@ } }, series: [{ - name: '提交次数', + name: '提交次数', + fontWeight: 'normal', + color: '#d05d5a', // data: [7.0, 6.9, 9.5, 14.5, 18.4, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6] - data: <%= @static_total_per_user.map{|c| c.commits_num.to_i} %> + data: <%= @a_commits_num %>, + dataLabels: { + enabled: false, + + style: { + fontSize: '13px', + color: '#aaa', + fontFamily: 'Arial', + textShadow: '0px 0px 6px rgb(0, 0, 0), 0px 0px 3px rgb(f, f, f)', + fontWeight: 'normal' + } + }, + lineWidth: 1.5 + } // { // name: 'London', @@ -108,4 +177,5 @@ ] }); }); - \ No newline at end of file + +
    当前分支:<%= @rev %>
    \ No newline at end of file diff --git a/app/views/repositories/show.html.erb b/app/views/repositories/show.html.erb index b3cad6ced..329dee898 100644 --- a/app/views/repositories/show.html.erb +++ b/app/views/repositories/show.html.erb @@ -25,7 +25,7 @@
    - <%=link_to "统计", stats_repository_project_path(:id => @project.id, :repository_id => @repository.identifier, :rev => @rev, :creator => @creator ), :class => "fl vl_zip" %> + <%=link_to "统计", stats_repository_project_path(:id => @project.id, :repository_id => @repository.identifier, :rev => @rev, :creator => @creator, :default_branch => @g_default_branch ), :class => "fl vl_zip" %>
    <%# 针对公开项目:用户必须创建了项目,否则用户无法同步 %> <% if User.current.id != @project.user_id %> diff --git a/app/views/repositories/stats.html.erb b/app/views/repositories/stats.html.erb index 4a8bd9217..4b35e64f6 100644 --- a/app/views/repositories/stats.html.erb +++ b/app/views/repositories/stats.html.erb @@ -14,6 +14,7 @@
    +