bug fix and add feature
This commit is contained in:
parent
515185d87c
commit
b659c7021d
|
@ -114,11 +114,6 @@ class Panel::Survey::BackEnd::SurveysController < OrbitBackendController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def chart
|
|
||||||
@survey = ::Survey.find(params[:id])
|
|
||||||
@chart_data, @survey_questions, @survey_answers = @survey.generate_chart_data
|
|
||||||
end
|
|
||||||
|
|
||||||
def set_answers
|
def set_answers
|
||||||
@survey = ::Survey.find(params[:id])
|
@survey = ::Survey.find(params[:id])
|
||||||
end
|
end
|
||||||
|
|
|
@ -85,6 +85,7 @@ class Panel::Survey::FrontEnd::SurveysController < OrbitWidgetController
|
||||||
def result
|
def result
|
||||||
redirect_standalone result_panel_survey_front_end_survey_path(params[:id], :standalone => 'true') do
|
redirect_standalone result_panel_survey_front_end_survey_path(params[:id], :standalone => 'true') do
|
||||||
@survey = ::Survey.find params[:id]
|
@survey = ::Survey.find params[:id]
|
||||||
|
@survey.result_type = ::Survey::ResultChart if params[:force_chart]
|
||||||
case @survey.result_type
|
case @survey.result_type
|
||||||
when ::Survey::ResultChart
|
when ::Survey::ResultChart
|
||||||
@chart_data, @survey_questions, @survey_answers = @survey.generate_chart_data
|
@chart_data, @survey_questions, @survey_answers = @survey.generate_chart_data
|
||||||
|
|
|
@ -75,6 +75,17 @@ class Survey
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
when ::SurveyQuestion::Radiogroup
|
||||||
|
chart_data[qid] = {}
|
||||||
|
answers = survey_answers.each do |answer|
|
||||||
|
if answer[qid]
|
||||||
|
answer[qid].each do |option, group|
|
||||||
|
chart_data[qid][option] ||= {}
|
||||||
|
chart_data[qid][option][group] ||= 0
|
||||||
|
chart_data[qid][option][group] += 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
<li><%= link_to t('survey.set_answers'), set_answers_panel_survey_back_end_survey_path(survey, :page => params[:page]) %></li>
|
<li><%= link_to t('survey.set_answers'), set_answers_panel_survey_back_end_survey_path(survey, :page => params[:page]) %></li>
|
||||||
<li><%= link_to t('survey.answers_list'), panel_survey_back_end_survey_answers_path(survey, :page => params[:page]) %></li>
|
<li><%= link_to t('survey.answers_list'), panel_survey_back_end_survey_answers_path(survey, :page => params[:page]) %></li>
|
||||||
<li><%= link_to t('survey.export_csv'), export_panel_survey_back_end_survey_path(survey, :format => :csv), :target => '_blank' %></li>
|
<li><%= link_to t('survey.export_csv'), export_panel_survey_back_end_survey_path(survey, :format => :csv), :target => '_blank' %></li>
|
||||||
<li><%= link_to t('survey.chart'), chart_panel_survey_back_end_survey_path(survey, :page => params[:page]) %></li>
|
<li><%= link_to t('survey.chart'), result_panel_survey_front_end_survey_path(survey, :force_chart => true, :standalone => true), :target => '_blank' %></li>
|
||||||
<li><%= link_to t(:delete_), panel_survey_back_end_survey_path(survey), :confirm => t('sure?'), :method => :delete, :remote => true %></li>
|
<li><%= link_to t(:delete_), panel_survey_back_end_survey_path(survey), :confirm => t('sure?'), :method => :delete, :remote => true %></li>
|
||||||
<% end -%>
|
<% end -%>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -1,40 +0,0 @@
|
||||||
<h1><%= @survey.title %> <%= t('survey.chart') %></h1>
|
|
||||||
|
|
||||||
<% @survey_questions.each do |question| %>
|
|
||||||
|
|
||||||
<h3><%= question.title %></h3>
|
|
||||||
<% case question.type %>
|
|
||||||
<% when ::SurveyQuestion::Radio, ::SurveyQuestion::Check, ::SurveyQuestion::Select %>
|
|
||||||
<div id="question_chart_<%= question.id.to_s %>" style="width: 600px; height: 300px;"></div>
|
|
||||||
<% else %>
|
|
||||||
<p><%= t('survey_question.have_not_chart') %></p>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
<div class="form-actions form-fixed">
|
|
||||||
<%= link_to t('back'), get_go_back, :class=>"btn" %>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<% content_for :page_specific_javascript do %>
|
|
||||||
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
google.load("visualization", "1", {packages:["corechart"]});
|
|
||||||
google.setOnLoadCallback(function(){
|
|
||||||
<% @survey_questions.each do |question| %>
|
|
||||||
<% qid = question.id.to_s %>
|
|
||||||
<% case question.type %>
|
|
||||||
<% when ::SurveyQuestion::Radio, ::SurveyQuestion::Check, ::SurveyQuestion::Select %>
|
|
||||||
var data_<%= qid %> = google.visualization.arrayToDataTable([
|
|
||||||
['<%= t("survey_question.option") %>', ''],
|
|
||||||
<% @chart_data[qid].each do |option, count| %>
|
|
||||||
['<%= option %>', <%= count %>],
|
|
||||||
<% end %>
|
|
||||||
]);
|
|
||||||
var chart_<%= qid %> = new google.visualization.PieChart(document.getElementById('question_chart_<%= qid %>'));
|
|
||||||
chart_<%= qid %>.draw(data_<%= qid %>, {title: '<%= question.title %>'});
|
|
||||||
<% end %>
|
|
||||||
<% end %>
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
<% end %>
|
|
|
@ -7,9 +7,10 @@
|
||||||
<% qid = question.id %>
|
<% qid = question.id %>
|
||||||
<% case question.type %>
|
<% case question.type %>
|
||||||
<% when ::SurveyQuestion::Check %>
|
<% when ::SurveyQuestion::Check %>
|
||||||
<%= answer[qid].join(', ') %>
|
<%= ( answer[qid] || [] ).join(', ') %>
|
||||||
<% when ::SurveyQuestion::Radiogroup %>
|
<% when ::SurveyQuestion::Radiogroup %>
|
||||||
<%= answer[qid].map{|key, value| key + ': ' + value}.join('; ') unless answer[qid].blank? %>
|
<% options = Hash[question.survey_question_options.collect{|o| [ o.id.to_s, o.name ] }] %>
|
||||||
|
<%= ( answer[qid] || {} ).map{|key, value| ( options[key] || key ) + ': ' + value}.join('; ') unless answer[qid].blank? %>
|
||||||
<% else %>
|
<% else %>
|
||||||
<%= answer[qid] %>
|
<%= answer[qid] %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
@ -2,16 +2,32 @@
|
||||||
<% when ::Survey::ResultChart %>
|
<% when ::Survey::ResultChart %>
|
||||||
|
|
||||||
<h1><%= @survey.title %> <%= t('survey.chart') %></h1>
|
<h1><%= @survey.title %> <%= t('survey.chart') %></h1>
|
||||||
<section>
|
<div>
|
||||||
<% @survey_questions.each do |question| %>
|
<section>
|
||||||
|
<div class="o-question">
|
||||||
|
<div class="o-question-description">
|
||||||
|
<%= t 'survey.results_count' %>: <%= @survey_questions.count %>
|
||||||
|
</div>
|
||||||
|
<ol class="o-question-list">
|
||||||
|
<% @survey_questions.each do |question| %>
|
||||||
|
<% case question.type %>
|
||||||
|
<% when ::SurveyQuestion::Radio, ::SurveyQuestion::Check, ::SurveyQuestion::Select %>
|
||||||
|
<li>
|
||||||
|
<div id="question_chart_<%= question.id.to_s %>" style="width: 600px; height: 300px;"></div>
|
||||||
|
</li>
|
||||||
|
<% when ::SurveyQuestion::Radiogroup %>
|
||||||
|
<% question.survey_question_options.each do |option| %>
|
||||||
|
<li>
|
||||||
|
<div id="question_chart_<%= question.id.to_s %>_<%= option.id.to_s %>" style="width: 600px; height: 300px;"></div>
|
||||||
|
</li>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
<% case question.type %>
|
<% end %>
|
||||||
<% when ::SurveyQuestion::Radio, ::SurveyQuestion::Check, ::SurveyQuestion::Select %>
|
</ol>
|
||||||
<div id="question_chart_<%= question.id.to_s %>" style="width: 600px; height: 300px;"></div>
|
</div>
|
||||||
<% end %>
|
</section>
|
||||||
|
</div>
|
||||||
<% end %>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
|
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
@ -30,6 +46,18 @@
|
||||||
]);
|
]);
|
||||||
var chart_<%= qid %> = new google.visualization.PieChart(document.getElementById('question_chart_<%= qid %>'));
|
var chart_<%= qid %> = new google.visualization.PieChart(document.getElementById('question_chart_<%= qid %>'));
|
||||||
chart_<%= qid %>.draw(data_<%= qid %>, {title: '<%= question.title %>'});
|
chart_<%= qid %>.draw(data_<%= qid %>, {title: '<%= question.title %>'});
|
||||||
|
<% when ::SurveyQuestion::Radiogroup %>
|
||||||
|
<% options = Hash[question.survey_question_options.collect{|o| [ o.id.to_s, o.name ] }] %>
|
||||||
|
<% @chart_data[qid].each do |option, groups| %>
|
||||||
|
var data_<%= qid %>_<%= option %> = google.visualization.arrayToDataTable([
|
||||||
|
['<%= t("survey_question.option") %>', ''],
|
||||||
|
<% groups.each do |group, count| %>
|
||||||
|
['<%= group %>', <%= count %>],
|
||||||
|
<% end %>
|
||||||
|
]);
|
||||||
|
var chart_<%= qid %>_<%= option %> = new google.visualization.PieChart(document.getElementById('question_chart_<%= qid %>_<%= option %>'));
|
||||||
|
chart_<%= qid %>_<%= option %>.draw(data_<%= qid %>_<%= option %>, {title: '<%= question.title %> - <%= options[option] %>'});
|
||||||
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
});
|
});
|
||||||
|
|
|
@ -9,7 +9,7 @@ zh_tw:
|
||||||
start_deadline: 開始/結束時間
|
start_deadline: 開始/結束時間
|
||||||
no_postdate: 沒有開始時間
|
no_postdate: 沒有開始時間
|
||||||
no_deadline: 沒有結束時間
|
no_deadline: 沒有結束時間
|
||||||
results_count: 回覆數
|
results_count: 填寫人數
|
||||||
update_user: 最後更新者
|
update_user: 最後更新者
|
||||||
question: 問題
|
question: 問題
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,6 @@ Rails.application.routes.draw do
|
||||||
end
|
end
|
||||||
member do
|
member do
|
||||||
get 'export'
|
get 'export'
|
||||||
get 'chart'
|
|
||||||
get 'set_answers'
|
get 'set_answers'
|
||||||
get 'jump'
|
get 'jump'
|
||||||
get 'duplicate_it'
|
get 'duplicate_it'
|
||||||
|
|
Reference in New Issue