This commit is contained in:
sw 2015-01-16 15:57:58 +08:00
commit 17b96bdb14
7 changed files with 145 additions and 190 deletions

View File

@ -85,10 +85,22 @@ class PollController < ApplicationController
end end
def statistics_result def statistics_result
@poll = Poll.find(params[:id])
poll_questions = @poll.poll_questions
@poll_questions = paginateHelper poll_questions, 5
respond_to do |format| respond_to do |format|
format.html{render :layout => 'base_courses'} format.html{render :layout => 'base_courses'}
end end
end end
def get_poll_totalcount poll_question
@total_questions_count = poll_question.poll_votes.count
end
def get_poll_everycount poll_answer
@every_answer_count = poll_answer.poll_votes.count
end
#添加题目 #添加题目
def create_poll_question def create_poll_question
@ -182,20 +194,26 @@ class PollController < ApplicationController
#单选题 #单选题
pv = PollVote.find_by_poll_question_id_and_user_id(params[:poll_question_id],User.current.id) pv = PollVote.find_by_poll_question_id_and_user_id(params[:poll_question_id],User.current.id)
if pv.nil? if pv.nil?
#尚未答该题,添加答案
pv = PollVote.new pv = PollVote.new
pv.user_id = User.current.id pv.user_id = User.current.id
pv.poll_question_id = params[:poll_question_id] pv.poll_question_id = params[:poll_question_id]
end end
#修改该题对应答案
pv.poll_answer_id = params[:poll_answer_id] pv.poll_answer_id = params[:poll_answer_id]
if pv.save if pv.save
#保存成功返回成功信息及当前以答题百分比
@percent = get_percent(@poll,User.current) @percent = get_percent(@poll,User.current)
render :json => {:text => "ok" ,:percent => format("%.2f" ,@percent)} render :json => {:text => "ok" ,:percent => format("%.2f" ,@percent)}
else else
#返回失败信息
render :json => {:text => "failure"} render :json => {:text => "failure"}
end end
elsif pq.question_type == 2 elsif pq.question_type == 2
#多选题
pv = PollVote.find_by_poll_answer_id_and_user_id(params[:poll_answer_id],User.current.id) pv = PollVote.find_by_poll_answer_id_and_user_id(params[:poll_answer_id],User.current.id)
if pv.nil? if pv.nil?
#尚未答该题,添加答案
pv = PollVote.new pv = PollVote.new
pv.user_id = User.current.id pv.user_id = User.current.id
pv.poll_question_id = params[:poll_question_id] pv.poll_question_id = params[:poll_question_id]
@ -207,6 +225,7 @@ class PollController < ApplicationController
render :json => {:text => "failure"} render :json => {:text => "failure"}
end end
else else
#pv不为空则当前选项之前已被选择再次点击则是不再选择该项故删除该答案
if pv.delete if pv.delete
@percent = get_percent(@poll,User.current) @percent = get_percent(@poll,User.current)
render :json => {:text => "false" ,:percent => format("%.2f" ,@percent)} render :json => {:text => "false" ,:percent => format("%.2f" ,@percent)}
@ -215,12 +234,16 @@ class PollController < ApplicationController
end end
end end
elsif pq.question_type == 3 || pq.question_type == 4 elsif pq.question_type == 3 || pq.question_type == 4
#单行文本,多行文本题
pv = PollVote.find_by_poll_question_id_and_user_id(params[:poll_question_id],User.current.id) pv = PollVote.find_by_poll_question_id_and_user_id(params[:poll_question_id],User.current.id)
if pv.nil? if pv.nil?
#pv为空之前尚未答题添加答案
if params[:vote_text].nil? || params[:vote_text].blank? if params[:vote_text].nil? || params[:vote_text].blank?
#用户提交空答案,视作不作答
@percent = get_percent(@poll,User.current) @percent = get_percent(@poll,User.current)
render :json => {:text => pv.vote_text,:percent => format("%.2f" ,@percent)} render :json => {:text => pv.vote_text,:percent => format("%.2f" ,@percent)}
else else
#添加答案
pv = PollVote.new pv = PollVote.new
pv.user_id = User.current.id pv.user_id = User.current.id
pv.poll_question_id = params[:poll_question_id] pv.poll_question_id = params[:poll_question_id]
@ -233,7 +256,9 @@ class PollController < ApplicationController
end end
end end
else else
#pv不为空说明用户之前已作答
if params[:vote_text].nil? || params[:vote_text].blank? if params[:vote_text].nil? || params[:vote_text].blank?
#用户提交空答案,视为删除答案
if pv.delete if pv.delete
@percent = get_percent(@poll,User.current) @percent = get_percent(@poll,User.current)
render :json => {:text => pv.vote_text,:percent => format("%.2f" ,@percent)} render :json => {:text => pv.vote_text,:percent => format("%.2f" ,@percent)}
@ -241,6 +266,7 @@ class PollController < ApplicationController
render :json => {:text => "failure"} render :json => {:text => "failure"}
end end
else else
#用户修改答案
pv.vote_text = params[:vote_text] pv.vote_text = params[:vote_text]
if pv.save if pv.save
@percent = get_percent(@poll,User.current) @percent = get_percent(@poll,User.current)
@ -339,7 +365,11 @@ class PollController < ApplicationController
def get_percent poll,user def get_percent poll,user
complete_count = get_complete_question(poll,user).count complete_count = get_complete_question(poll,user).count
(complete_count.to_f / poll.poll_questions.count.to_f)*100 if poll.poll_questions.count == 0
return 0
else
return (complete_count.to_f / poll.poll_questions.count.to_f)*100
end
end end
#PollUser记录用户是否已提交问卷有对应的记录则已提交没有则新建一个 #PollUser记录用户是否已提交问卷有对应的记录则已提交没有则新建一个

View File

@ -116,8 +116,8 @@ class ProjectsController < ApplicationController
joins("LEFT JOIN #{ProjectStatus.table_name} ON #{Project.table_name}.id = #{ProjectStatus.table_name}.project_id").joins("LEFT JOIN #{ProjectScore.table_name} ON #{Project.table_name}.id = #{ProjectScore.table_name}.project_id"). joins("LEFT JOIN #{ProjectStatus.table_name} ON #{Project.table_name}.id = #{ProjectStatus.table_name}.project_id").joins("LEFT JOIN #{ProjectScore.table_name} ON #{Project.table_name}.id = #{ProjectScore.table_name}.project_id").
where("#{Project.table_name}.project_type = ? ", Project::ProjectType_project) where("#{Project.table_name}.project_type = ? ", Project::ProjectType_project)
@project_count = @projects_all.count @poll_questions_count = @projects_all.count
@project_pages = Paginator.new @project_count, per_page_option, params['page'] @poll_questions_pages = Paginator.new @project_count, per_page_option, params['page']
#gcm activity count #gcm activity count

View File

@ -27,7 +27,7 @@ module PollHelper
false false
end end
end end
#获取文本题答案 #获取文本题答案
def get_anwser_vote_text(question_id,user_id) def get_anwser_vote_text(question_id,user_id)
pv = PollVote.find_by_poll_question_id_and_user_id(question_id,user_id) pv = PollVote.find_by_poll_question_id_and_user_id(question_id,user_id)
@ -47,4 +47,20 @@ module PollHelper
true true
end end
end end
#统计答题百分比
def statistics_result_percentage(e, t)
return e*100/t
end
def options_show p
case p
when 1
"单选题"
when 2
"多选题"
else
"问答题"
end
end
end end

View File

@ -0,0 +1,28 @@
<div class="ur_table_result">
<table border="0" cellspacing="0" cellpadding="0" >
<tbody>
<tr class="table_bluebg">
<td class="td327"><%= l(:label_poll_options) %> </td>
<td class="td42"><%= l(:label_poll_subtotal) %> </td>
<td class="td287"><%= l(:label_poll_proportion) %> </td>
</tr>
<% poll_question.poll_answers.each do |poll_answer| %>
<tr>
<td class="td327"><%= poll_answer.answer_text %> </td>
<td class="td42"><%= poll_answer.poll_votes.count %> </td>
<td class="td287">
<div class="Bar">
<span style="width:<%= statistics_result_percentage(poll_answer.poll_votes.count, @poll.users.count) %>%;" id="choice_percentage_<%= poll_answer.id %>"></span>
</div>
<%= statistics_result_percentage(poll_answer.poll_votes.count, @poll.users.count) %>%</td>
</tr>
<% end %>
<tr class="table_bluebg">
<td class="td327"><%= l(:label_poll_valid_commit) %> </td>
<td class="td42"><%= poll_question.poll_votes.count %></td>
<td class="td287">&nbsp; </td>
</tr>
</tbody>
</table>
</div>

View File

@ -2,211 +2,37 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>问卷调查_问卷结果</title> <title><%= l(:label_poll_result) %></title>
<%= stylesheet_link_tag 'polls', :media => 'all' %> <%= stylesheet_link_tag 'polls', :media => 'all' %>
</head> </head>
<body> <body>
<div class="polls_content polls_box" id="polls"> <div class="polls_content polls_box" id="polls">
<div class="ur_page_head" > <div class="ur_page_head" >
<h1 class="ur_page_title">某问卷统计</h1> <h1 class="ur_page_title"><%= @poll.polls_name %> <%= l(:label_poll) %></h1>
</div> </div>
<% @poll_questions.each do |poll_question| %>
<div class=""> <div class="">
<ol> <ol>
<li class="ur_question_item"> <li class="ur_question_item">
<div class="ur_title_result"> <div class="ur_title_result">
<span class="title_index">第1题</span>问题描述问题描述 <span class="title_index">[单选题]</span> <span class="title_index">第<%= poll_question.question_number %>题:</span><%= poll_question.question_title %>
<span class="title_index">[<%= options_show(poll_question.question_type) %>]</span>
</div> </div>
<div class="ur_table_result"> <%= render :partial =>'choice_show', :locals =>{ :poll_question => poll_question } %>
<table border="0" cellspacing="0" cellpadding="0" > </li>
<tbody>
<tr class="table_bluebg">
<td class="td327">选项 </td>
<td class="td42">小计 </td>
<td class="td287">比例 </td>
</tr>
<tr>
<td class="td327">第一选项 </td>
<td class="td42">24 </td>
<td class="td287"><div class="Bar"><span style="width:75%;"></span></div> 75% </td>
</tr>
<tr>
<td class="td327">第二选项 </td>
<td class="td42">1 </td>
<td class="td287"><div class="Bar"><span style="width:3.13%;"></span></div>3.13% </td>
</tr>
<tr>
<td class="td327">第三选项 </td>
<td class="td42">1</td>
<td class="td287"><div class="Bar"><span style="width:3.13%;"></span></div>3.13% </td>
</tr>
<tr class="table_bluebg">
<td class="td327">本题有效填写人次 </td>
<td class="td42">26</td>
<td class="td287">&nbsp; </td>
</tr>
</tbody>
</table>
</div>
</li>
<li class="ur_question_item">
<div class="ur_title_result">
<span class="title_index">第1题</span>问题描述问题描述 <span class="title_index">[单选题]</span>
</div>
<div class="ur_table_result">
<table border="0" cellspacing="0" cellpadding="0" >
<tbody>
<tr class="table_bluebg">
<td class="td327">选项 </td>
<td class="td42">小计 </td>
<td class="td287">比例 </td>
</tr>
<tr>
<td class="td327">第一选项 </td>
<td class="td42">24 </td>
<td class="td287"><div class="Bar"><span style="width:75%;"></span></div> 75% </td>
</tr>
<tr>
<td class="td327">第二选项 </td>
<td class="td42">1 </td>
<td class="td287"><div class="Bar"><span style="width:3.13%;"></span></div>3.13% </td>
</tr>
<tr>
<td class="td327">第三选项 </td>
<td class="td42">1</td>
<td class="td287"><div class="Bar"><span style="width:3.13%;"></span></div>3.13% </td>
</tr>
<tr class="table_bluebg">
<td class="td327">本题有效填写人次 </td>
<td class="td42">26</td>
<td class="td287">&nbsp; </td>
</tr>
</tbody>
</table>
</div>
</li>
<li class="ur_question_item">
<div class="ur_title_result">
<span class="title_index">第1题</span>问题描述问题描述 <span class="title_index">[单选题]</span>
</div>
<div class="ur_table_result">
<table border="0" cellspacing="0" cellpadding="0" >
<tbody>
<tr class="table_bluebg">
<td class="td327">选项 </td>
<td class="td42">小计 </td>
<td class="td287">比例 </td>
</tr>
<tr>
<td class="td327">第一选项 </td>
<td class="td42">24 </td>
<td class="td287"><div class="Bar"><span style="width:75%;"></span></div> 75% </td>
</tr>
<tr>
<td class="td327">第二选项 </td>
<td class="td42">1 </td>
<td class="td287"><div class="Bar"><span style="width:3.13%;"></span></div>3.13% </td>
</tr>
<tr>
<td class="td327">第三选项 </td>
<td class="td42">1</td>
<td class="td287"><div class="Bar"><span style="width:3.13%;"></span></div>3.13% </td>
</tr>
<tr class="table_bluebg">
<td class="td327">本题有效填写人次 </td>
<td class="td42">26</td>
<td class="td287">&nbsp; </td>
</tr>
</tbody>
</table>
</div>
</li>
<li class="ur_question_item">
<div class="ur_title_result">
<span class="title_index">第1题</span>问题描述问题描述 <span class="title_index">[单选题]</span>
</div>
<div class="ur_table_result">
<table border="0" cellspacing="0" cellpadding="0" >
<tbody>
<tr class="table_bluebg">
<td class="td327">选项 </td>
<td class="td42">小计 </td>
<td class="td287">比例 </td>
</tr>
<tr>
<td class="td327">第一选项 </td>
<td class="td42">24 </td>
<td class="td287"><div class="Bar"><span style="width:75%;"></span></div> 75% </td>
</tr>
<tr>
<td class="td327">第二选项 </td>
<td class="td42">1 </td>
<td class="td287"><div class="Bar"><span style="width:3.13%;"></span></div>3.13% </td>
</tr>
<tr>
<td class="td327">第三选项 </td>
<td class="td42">1</td>
<td class="td287"><div class="Bar"><span style="width:3.13%;"></span></div>3.13% </td>
</tr>
<tr class="table_bluebg">
<td class="td327">本题有效填写人次 </td>
<td class="td42">26</td>
<td class="td287">&nbsp; </td>
</tr>
</tbody>
</table>
</div>
</li>
<li class="ur_question_item">
<div class="ur_title_result">
<span class="title_index">第1题</span>问题描述问题描述 <span class="title_index">[单选题]</span>
</div>
<div class="ur_table_result">
<table border="0" cellspacing="0" cellpadding="0" >
<tbody>
<tr class="table_bluebg">
<td class="td327">选项 </td>
<td class="td42">小计 </td>
<td class="td287">比例 </td>
</tr>
<tr>
<td class="td327">第一选项 </td>
<td class="td42">24 </td>
<td class="td287"><div class="Bar"><span style="width:75%;"></span></div> 75% </td>
</tr>
<tr>
<td class="td327">第二选项 </td>
<td class="td42">1 </td>
<td class="td287"><div class="Bar"><span style="width:3.13%;"></span></div>3.13% </td>
</tr>
<tr>
<td class="td327">第三选项 </td>
<td class="td42">1</td>
<td class="td287"><div class="Bar"><span style="width:3.13%;"></span></div>3.13% </td>
</tr>
<tr class="table_bluebg">
<td class="td327">本题有效填写人次 </td>
<td class="td42">26</td>
<td class="td287">&nbsp; </td>
</tr>
</tbody>
</table>
</div>
</li>
</ol> </ol>
<% end %>
<ul class="wlist">
<%= pagination_links_full @obj_pages, @obj_count, :per_page_links => false, :remote => false, :flag => true%>
</ul>
<div class="cl"></div>
<div class="ur_buttons"> <div class="ur_buttons">
<!--<a href="#" class=" ur_button" >上一页</a>-->
<!--<a href="#" class="ur_button" >下一页</a>-->
</div> </div>
<div class="cl"></div> <div class="cl"></div>
<div class="ur_progress_text">答题已完成 <strong class="ur_progress_number">0%</strong> </div>
</div> </div>
</div><!--问卷内容end--> </div><!--问卷内容end-->
</body> </body>
</html> </html>

View File

@ -2253,5 +2253,10 @@ zh:
label_new_answer: 新建选项 label_new_answer: 新建选项
label_poll_title: 问卷标题 label_poll_title: 问卷标题
label_poll_description: 问卷描述 label_poll_description: 问卷描述
label_poll_options: 选项
label_poll_subtotal: 小计
label_poll_proportion: 比例
label_poll_valid_commit: 本题有效填写人次
label_poll_result: 问卷调查_问卷统计

View File

@ -23,6 +23,18 @@ ActiveRecord::Schema.define(:version => 20150114022710) do
add_index "activities", ["user_id", "act_type"], :name => "index_activities_on_user_id_and_act_type" add_index "activities", ["user_id", "act_type"], :name => "index_activities_on_user_id_and_act_type"
add_index "activities", ["user_id"], :name => "index_activities_on_user_id" add_index "activities", ["user_id"], :name => "index_activities_on_user_id"
create_table "api_keys", :force => true do |t|
t.string "access_token"
t.datetime "expires_at"
t.integer "user_id"
t.boolean "active", :default => true
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
add_index "api_keys", ["access_token"], :name => "index_api_keys_on_access_token"
add_index "api_keys", ["user_id"], :name => "index_api_keys_on_user_id"
create_table "applied_projects", :force => true do |t| create_table "applied_projects", :force => true do |t|
t.integer "project_id", :null => false t.integer "project_id", :null => false
t.integer "user_id", :null => false t.integer "user_id", :null => false
@ -1056,6 +1068,14 @@ ActiveRecord::Schema.define(:version => 20150114022710) do
t.string "description" t.string "description"
end end
create_table "social_groups", :force => true do |t|
t.string "name"
t.text "description"
t.integer "user_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "softapplications", :force => true do |t| create_table "softapplications", :force => true do |t|
t.string "name" t.string "name"
t.text "description" t.text "description"
@ -1271,6 +1291,36 @@ ActiveRecord::Schema.define(:version => 20150114022710) do
add_index "versions", ["project_id"], :name => "versions_project_id" add_index "versions", ["project_id"], :name => "versions_project_id"
add_index "versions", ["sharing"], :name => "index_versions_on_sharing" add_index "versions", ["sharing"], :name => "index_versions_on_sharing"
create_table "voting_choices", :force => true do |t|
t.integer "poll_id", :null => false
t.string "text", :null => false
t.datetime "created_on", :null => false
t.integer "position", :default => 1
end
add_index "voting_choices", ["poll_id"], :name => "choices_poll_id"
create_table "voting_polls", :force => true do |t|
t.integer "project_id", :null => false
t.string "question", :null => false
t.datetime "created_on", :null => false
t.boolean "revote"
end
add_index "voting_polls", ["project_id"], :name => "polls_project_id"
create_table "voting_votes", :force => true do |t|
t.integer "user_id", :null => false
t.integer "poll_id", :null => false
t.integer "choice_id", :null => false
t.datetime "created_on", :null => false
end
add_index "voting_votes", ["choice_id"], :name => "votes_choice_id"
add_index "voting_votes", ["poll_id"], :name => "votes_poll_id"
add_index "voting_votes", ["user_id", "poll_id"], :name => "votes_user_poll_unique", :unique => true
add_index "voting_votes", ["user_id"], :name => "votes_user_id"
create_table "watchers", :force => true do |t| create_table "watchers", :force => true do |t|
t.string "watchable_type", :default => "", :null => false t.string "watchable_type", :default => "", :null => false
t.integer "watchable_id", :default => 0, :null => false t.integer "watchable_id", :default => 0, :null => false