Addded export feature in Survey_b, By Spen
This commit is contained in:
parent
6230bc3d36
commit
852166dabb
|
@ -5,3 +5,5 @@
|
|||
# Mime::Type.register_alias "text/html", :iphone
|
||||
|
||||
Mime::Type.register_alias "text/html", :mobile
|
||||
|
||||
Mime::Type.register 'application/vnd.ms-excel',:xls
|
|
@ -89,4 +89,64 @@ class Panel::SurveyB::BackEnd::SurveyBController < OrbitBackendController
|
|||
end
|
||||
end
|
||||
|
||||
def export
|
||||
|
||||
if params[:period] && @period = SurveyBPeriod.find(params[:period])
|
||||
@answers = ::SurveyBAnswer.where(:created_at.gte => @period.start_date, :created_at.lte => @period.end_date)
|
||||
@comment_question = ::SurveyBAnswer.where(:created_at.gte => @period.start_date, :created_at.lte => @period.end_date, :comment_question.nin => [''])
|
||||
else
|
||||
@answers = ::SurveyBAnswer.all
|
||||
@comment_question = ::SurveyBAnswer.where(:comment_question.nin => [''])
|
||||
end
|
||||
@results = Hash[(t('survey_b.institutions').keys + [ 'all' ]).map do |i_key|
|
||||
[i_key, Hash[(t('survey_b.questions').keys + ['count', 'sum', 'sum7'] ).map{|q_key| [q_key, 0] }].merge({ 'count' => 0, 'sum' => 0, 'sum7' => 0 })]
|
||||
end]
|
||||
[:good_institutions, :bad_institutions].each do |item|
|
||||
@results[item] = Hash[t('survey_b.institutions').map{|k, i| [k, 0] }]
|
||||
end
|
||||
[:person_question, :rate_question, :quality_question].each do |item|
|
||||
@results[item] = t("survey_b.#{item}_options").map{|o| 0 }
|
||||
end
|
||||
@answers.each do |answer|
|
||||
t('survey_b.institutions').each do |i_key, institution|
|
||||
if answer[i_key.to_s]
|
||||
@results[i_key]['count'] += 1
|
||||
t('survey_b.questions').keys.each do |q_key|
|
||||
point = 10 - ( answer[i_key.to_s][q_key.to_s].to_i * 2 )
|
||||
@results[i_key][q_key] += point
|
||||
@results[i_key]['sum'] += point
|
||||
if q_key != :question6
|
||||
@results[i_key]['sum7'] += point
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
[:good_institutions, :bad_institutions].each do |item|
|
||||
if answer[item.to_s]
|
||||
answer[item.to_s].each do |institution|
|
||||
@results[item][institution] += 1
|
||||
end
|
||||
end
|
||||
end
|
||||
[:person_question, :rate_question, :quality_question].each do |item|
|
||||
if answer[item.to_s]
|
||||
@results[item][answer[item.to_s].to_i] += 1
|
||||
end
|
||||
end
|
||||
end
|
||||
t('survey_b.institutions').each do |i_key, institution|
|
||||
(t('survey_b.questions').keys + ['count', 'sum', 'sum7'] ).each do |q_key|
|
||||
@results['all'][q_key] += @results[i_key][q_key]
|
||||
end
|
||||
end
|
||||
|
||||
@setting = SurveyBSetting.first
|
||||
|
||||
headers['Content-Type'] = "application/vnd.ms-excel"
|
||||
headers['Content-Disposition'] = "attachment; filename=#{@period.title}.xls"
|
||||
headers['Cache-Control'] = ''
|
||||
|
||||
render :layout => false
|
||||
end
|
||||
|
||||
end
|
|
@ -14,6 +14,7 @@
|
|||
<li><%= link_to t(:list_), panel_survey_b_back_end_survey_b_index_path(:period => period, :page => params[:page]) %></li>
|
||||
<li><%= link_to t('edit'), edit_panel_survey_b_back_end_period_path(period, :page => params[:page]) %></li>
|
||||
<li><%= link_to t(:delete_), panel_survey_b_back_end_period_path(period), :confirm => t('sure?'), :method => :delete %></li>
|
||||
<li><%= link_to t('survey_b.export'), export_panel_survey_b_back_end_survey_b_index_path(:period => period, :page => params[:page]) %></li>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
|
|
257
vendor/built_in_modules/survey_b/app/views/panel/survey_b/back_end/survey_b/export.html.erb
vendored
Normal file
257
vendor/built_in_modules/survey_b/app/views/panel/survey_b/back_end/survey_b/export.html.erb
vendored
Normal file
|
@ -0,0 +1,257 @@
|
|||
<table border="1">
|
||||
<tr>
|
||||
<td>標題</td>
|
||||
<td><%= @period.title rescue '' %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>問卷前言</td>
|
||||
<td><%= @setting.description rescue '' %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>填答人數</td>
|
||||
<td><%= @answers.count rescue '' %></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br /><br />
|
||||
|
||||
一 、 顧客滿意填表人身分分析
|
||||
<table border="1">
|
||||
<tr>
|
||||
<td>身份</td>
|
||||
<% @results[:person_question].each_with_index do |count, option| %>
|
||||
<td><%= t("survey_b.person_question_options")[option] %></td>
|
||||
<% end %>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>填答人數</td>
|
||||
<% @results[:person_question].each_with_index do |count, option| %>
|
||||
<td><%= count %></td>
|
||||
<% end %>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>比例</td>
|
||||
<% @results[:person_question].each_with_index do |count, option| %>
|
||||
<% @pcount = count.to_f / @answers.count %>
|
||||
<td><%= @pcount == 0 ? "0" : sprintf("%.2f", @pcount * 100 ) %>%</td>
|
||||
<% end %>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br /><br />
|
||||
|
||||
二、 整體行政品質表現比較分析
|
||||
|
||||
<br /><br />
|
||||
對於總務處這一、二年之行政品質表現,您感覺是
|
||||
<table border="1">
|
||||
<tr>
|
||||
<td>行政品質表現</td>
|
||||
<% @results[:quality_question].each_with_index do |count, option| %>
|
||||
<td><%= t("survey_b.quality_question_options")[option] %></td>
|
||||
<% end %>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>填答人數</td>
|
||||
<% @qcount = 0 %>
|
||||
<% @results[:quality_question].each_with_index do |count, option| %>
|
||||
<td><%= count %></td>
|
||||
<% @qcount = @qcount + count %>
|
||||
<% end %>
|
||||
<td><%= @qcount %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>比例</td>
|
||||
<% @tqcount = 0 %>
|
||||
<% @results[:quality_question].each_with_index do |count, option| %>
|
||||
<% @pcount = count.to_f / @qcount %>
|
||||
<td><%= @pcount == 0 ? "0" : sprintf("%.2f", @pcount * 100 ) %>%</td>
|
||||
<% @tqcount = @tqcount + @pcount %>
|
||||
<% end %>
|
||||
<td><%= @tqcount %></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br />
|
||||
對本處整體行政品質表現給予評鑑分數
|
||||
<table border="1">
|
||||
<tr>
|
||||
<td>行政品質表現</td>
|
||||
<% @results[:rate_question].each_with_index do |count, option| %>
|
||||
<td><%= t("survey_b.rate_question_options")[option] %></td>
|
||||
<% end %>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>填答人數</td>
|
||||
<% @rcount = 0 %>
|
||||
<% @results[:rate_question].each_with_index do |count, option| %>
|
||||
<td><%= count %></td>
|
||||
<% @rcount = @rcount + count %>
|
||||
<% end %>
|
||||
<td><%= @rcount %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>比例</td>
|
||||
<% @tqcount = 0 %>
|
||||
<% @results[:rate_question].each_with_index do |count, option| %>
|
||||
<% @pcount = count.to_f / @rcount %>
|
||||
<td><%= @pcount == 0 ? "0" : sprintf("%.2f", @pcount * 100 ) %>%</td>
|
||||
<% @tqcount = @tqcount + @pcount %>
|
||||
<% end %>
|
||||
<td><%= @tqcount %></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br />
|
||||
以您與總務處各單位接觸之經驗,您覺得以下哪一組的服務品質較優。 (可複選)
|
||||
<table border="1">
|
||||
<tr>
|
||||
<td>組別</td>
|
||||
<% @results[:good_institutions].each do |institution, count| %>
|
||||
<td><%= t("survey_b.institutions.#{institution}") %></td>
|
||||
<% end %>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>人數</td>
|
||||
<% @gcount = 0 %>
|
||||
<% @results[:good_institutions].each do |institution, count| %>
|
||||
<td><%= count %></td>
|
||||
<% @gcount = @gcount + count %>
|
||||
<% end %>
|
||||
<td><%= @gcount %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>比例</td>
|
||||
<% @tqcount = 0 %>
|
||||
<% @results[:good_institutions].each do |institution, count| %>
|
||||
<% @pcount = count.to_f / @gcount %>
|
||||
<td><%= @pcount == 0 ? "0" : sprintf("%.2f", @pcount * 100 ) %>%</td>
|
||||
<% @tqcount = @tqcount + @pcount %>
|
||||
<% end %>
|
||||
<td><%= @tqcount %></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br />
|
||||
以您與總務處各單位接觸之經驗,您覺得以下哪一組的服務品質尚待改進。 (可複選)
|
||||
<table border="1">
|
||||
<tr>
|
||||
<td>組別</td>
|
||||
<% @results[:bad_institutions].each do |institution, count| %>
|
||||
<td><%= t("survey_b.institutions.#{institution}") %></td>
|
||||
<% end %>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>人數</td>
|
||||
<% @bcount = 0 %>
|
||||
<% @results[:bad_institutions].each do |institution, count| %>
|
||||
<td><%= count %></td>
|
||||
<% @bcount = @bcount + count %>
|
||||
<% end %>
|
||||
<td><%= @bcount %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>比例</td>
|
||||
<% @tqcount = 0 %>
|
||||
<% @results[:bad_institutions].each do |institution, count| %>
|
||||
<% @pcount = count.to_f / @bcount %>
|
||||
<td><%= @pcount == 0 ? "0" : sprintf("%.2f", @pcount * 100 ) %>%</td>
|
||||
<% @tqcount = @tqcount + @pcount %>
|
||||
<% end %>
|
||||
<td><%= @tqcount %></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br /><br />
|
||||
三、 各單位顧客滿意度調查分析
|
||||
<table border="1">
|
||||
<tr>
|
||||
<td>組別</td>
|
||||
<% @results[:bad_institutions].each do |institution, count| %>
|
||||
<td><%= t("survey_b.institutions.#{institution}") %></td>
|
||||
<% end %>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<% @tcount = 0 %>
|
||||
<td><%= t('survey_b.answered_sum') %></td>
|
||||
<% t('survey_b.institutions').each do |i_key, institution| %>
|
||||
<% if @results[i_key]['count'] == 0 %>
|
||||
<td><%= t('survey_b.no_data') %></td>
|
||||
<% @tcount = @tcount + @results[i_key]['count'] %>
|
||||
<% else %>
|
||||
<td><%= ( ( @results[i_key]['sum'].to_f / t('survey_b.questions').count.to_f ) / @results[i_key]['count'].to_f ).round(2) %></td>
|
||||
<% @tcount = @tcount + (( @results[i_key]['sum'].to_f / t('survey_b.questions').count.to_f ) / @results[i_key]['count'].to_f ) %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<td><%= @tcount %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<% @tcount = 0 %>
|
||||
<td><%= t('survey_b.answered_sum7') %></td>
|
||||
<% t('survey_b.institutions').each do |i_key, institution| %>
|
||||
<% if @results[i_key]['count'] == 0 %>
|
||||
<td><%= t('survey_b.no_data') %></td>
|
||||
<% @tcount = @tcount + @results[i_key]['count'] %>
|
||||
<% else %>
|
||||
<td><%= ( ( @results[i_key]['sum7'].to_f / 7.0 ) / @results[i_key]['count'].to_f ).round(2) %></td>
|
||||
<% @tcount = @tcount + ( ( @results[i_key]['sum7'].to_f / 7.0 ) / @results[i_key]['count'].to_f ) %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<td><%= @tcount %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<% @tcount = 0 %>
|
||||
<td><%= t('survey_b.answered_count') %></td>
|
||||
<% t('survey_b.institutions').each do |i_key, institution| %>
|
||||
<td><%= @results[i_key]['count'] %></td>
|
||||
<% @tcount = @tcount + @results[i_key]['count'] %>
|
||||
<% end %>
|
||||
<td><%= @tcount %></td>
|
||||
</tr>
|
||||
<% t('survey_b.questions').each do |q_key, question| %>
|
||||
<% @tcount = 0 %>
|
||||
<tr>
|
||||
<td><%= question.sub /\d\./, '' %></td>
|
||||
|
||||
<% t('survey_b.institutions').each do |i_key, institution| %>
|
||||
<% if @results[i_key]['count'] == 0 %>
|
||||
<td><%= t('survey_b.no_data') %></td>
|
||||
<% @tcount = @tcount + @results[i_key]['count'] %>
|
||||
<% else %>
|
||||
<td><%= ( @results[i_key][q_key].to_f / @results[i_key]['count'].to_f ).round(2) %></td>
|
||||
<% @tcount = @tcount + ( @results[i_key][q_key].to_f / @results[i_key]['count'].to_f ) %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<td><%= @tcount %></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</table>
|
||||
|
||||
|
||||
<br /><br />
|
||||
您覺得本處之行政品質有那些地方尚待改進嗎?
|
||||
<table border="1">
|
||||
<tr>
|
||||
<td>填答人數</td>
|
||||
<td><%= @comment_question.count %></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
<br /><br />
|
||||
<table border="0">
|
||||
<tr>
|
||||
<td>發佈日期</td>
|
||||
<td><%= display_date_time @period.start_date %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>截止日期</td>
|
||||
<td><%= display_date_time @period.end_date %></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -56,36 +56,77 @@
|
|||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<ul>
|
||||
<% [:good_institutions, :bad_institutions, :person_question, :rate_question, :quality_question].each do |item| %>
|
||||
<li>
|
||||
<div id="<%= item.to_s %>_chart" style="width: 700px; height: 300px;"></div>
|
||||
<table>
|
||||
<tr>
|
||||
<td><div id="<%= item.to_s %>_chart" style="width: 600px; height: 300px;"></div>
|
||||
</td>
|
||||
<td><div id="<%= item.to_s %>_bar_chart" style="width: 600px; height: 300px;"></div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
|
||||
<script type="text/javascript">
|
||||
window.google.load("visualization", "1", {packages: ["columnchart"]});
|
||||
window.google.load("visualization", "1", {packages:["corechart"]});
|
||||
window.google.setOnLoadCallback(function(){
|
||||
<% [:good_institutions, :bad_institutions].each do |item| %>
|
||||
|
||||
<% @tcount = 0 %>
|
||||
var data_<%= item %> = google.visualization.arrayToDataTable([
|
||||
['<%= t("survey_b.#{item}_label") %>', ''],
|
||||
<% @results[item].each do |institution, count| %>
|
||||
['<%= t("survey_b.institutions.#{institution}") %>', <%= count %>],
|
||||
<% @tcount = @tcount + count %>
|
||||
<% end %>
|
||||
]);
|
||||
var chart_<%= item %> = new google.visualization.PieChart(document.getElementById('<%= item.to_s %>_chart'));
|
||||
chart_<%= item %>.draw(data_<%= item %>, {title: '<%= t("survey_b.#{item}_label") %>'});
|
||||
|
||||
//bar
|
||||
|
||||
|
||||
var data_bar_<%= item %> = google.visualization.arrayToDataTable([
|
||||
['<%= t("survey_b.#{item}_label") %>', '%'],
|
||||
<% @results[item].each do |institution, count| %>
|
||||
['<%= t("survey_b.institutions.#{institution}") %>', <%= count == 0 ? "0" : sprintf("%.2f", (count.to_f / @tcount ) * 100 ) %>],
|
||||
<% end %>
|
||||
]);
|
||||
var bar_chart_<%= item %> = new google.visualization.ColumnChart(document.getElementById("<%= item.to_s %>_bar_chart"));
|
||||
bar_chart_<%= item %>.draw(data_bar_<%= item %>, {title: '<%= t("survey_b.#{item}_label") %>'});
|
||||
<% end %>
|
||||
|
||||
<% [:person_question, :rate_question, :quality_question].each do |item| %>
|
||||
|
||||
<% @tcount = 0 %>
|
||||
var data_<%= item %> = google.visualization.arrayToDataTable([
|
||||
['<%= t("survey_b.#{item}_label") %>', ''],
|
||||
<% @results[item].each_with_index do |count, option| %>
|
||||
['<%= t("survey_b.#{item}_options")[option] %>', <%= count %>],
|
||||
<% @tcount = @tcount + count %>
|
||||
<% end %>
|
||||
]);
|
||||
var chart_<%= item %> = new google.visualization.PieChart(document.getElementById('<%= item.to_s %>_chart'));
|
||||
chart_<%= item %>.draw(data_<%= item %>, {title: '<%= t("survey_b.#{item}_label") %>'});
|
||||
|
||||
//bar
|
||||
|
||||
var data_bar_<%= item %> = google.visualization.arrayToDataTable([
|
||||
['<%= t("survey_b.#{item}_label") %>', '%'],
|
||||
<% @results[item].each_with_index do |count, option| %>
|
||||
['<%= t("survey_b.#{item}_options")[option] %>', <%= count == 0 ? "0" : sprintf("%.2f", (count.to_f / @tcount ) * 100 ) %>],
|
||||
<% end %>
|
||||
]);
|
||||
|
||||
var bar_chart_<%= item %> = new google.visualization.ColumnChart(document.getElementById("<%= item.to_s %>_bar_chart"));
|
||||
bar_chart_<%= item %>.draw(data_bar_<%= item %>, {title: '<%= t("survey_b.#{item}_label") %>'});
|
||||
<% end %>
|
||||
});
|
||||
</script>
|
|
@ -3,6 +3,7 @@ en:
|
|||
survey_b:
|
||||
survey_b: 滿意度調查
|
||||
result: 結果
|
||||
export: 匯出
|
||||
|
||||
setting: 設定
|
||||
description: 前言
|
||||
|
|
|
@ -3,6 +3,7 @@ zh_tw:
|
|||
survey_b:
|
||||
survey_b: 滿意度調查
|
||||
result: 結果
|
||||
export: 匯出
|
||||
|
||||
setting: 設定
|
||||
description: 前言
|
||||
|
|
|
@ -7,6 +7,7 @@ Rails.application.routes.draw do
|
|||
collection do
|
||||
get 'result'
|
||||
get 'delete'
|
||||
get 'export'
|
||||
end
|
||||
end
|
||||
resources :periods
|
||||
|
|
Loading…
Reference in New Issue