csv stats & required start
This commit is contained in:
parent
7ba0977e16
commit
443d1c4fbe
|
@ -27,6 +27,12 @@
|
||||||
margin: 0 0 0 40px;
|
margin: 0 0 0 40px;
|
||||||
padding: 16px 0;
|
padding: 16px 0;
|
||||||
border-top: solid 1px #eee;
|
border-top: solid 1px #eee;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.o-question-list > li .required-star {
|
||||||
|
position: absolute;
|
||||||
|
left: -42px;
|
||||||
|
padding-top: 4px;
|
||||||
}
|
}
|
||||||
.o-question-list > li:first-child {
|
.o-question-list > li:first-child {
|
||||||
border: 0;
|
border: 0;
|
||||||
|
|
|
@ -87,14 +87,40 @@ class Panel::Survey::BackEnd::SurveysController < OrbitBackendController
|
||||||
|
|
||||||
def export
|
def export
|
||||||
@survey = ::Survey.find(params[:id])
|
@survey = ::Survey.find(params[:id])
|
||||||
@survey_questions = @survey.survey_questions.all
|
@chart_data, @survey_questions, @survey_answers = @survey.generate_chart_data
|
||||||
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.csv do
|
format.csv do
|
||||||
|
|
||||||
csv = CSV.generate do |csv|
|
csv = CSV.generate do |csv|
|
||||||
csv << @survey_questions.map(&:title)
|
csv << @survey_questions.map(&:title)
|
||||||
@survey.survey_answers.each do |answer|
|
csv_stats = []
|
||||||
|
csv_stats = @survey_questions.map do |question|
|
||||||
|
case question.type
|
||||||
|
when ::SurveyQuestion::Radio, ::SurveyQuestion::Select, ::SurveyQuestion::Check
|
||||||
|
question.survey_question_options.map do |option|
|
||||||
|
"#{option.name} : #{(@chart_data[question.id.to_s][option.name] || 0 rescue 0)}"
|
||||||
|
end
|
||||||
|
when ::SurveyQuestion::Radiogroup
|
||||||
|
question.survey_question_options.map do |option|
|
||||||
|
question.survey_question_radiogroups.map do |group|
|
||||||
|
"#{option.name} - #{group.name} : #{(@chart_data[question.id.to_s][option.name][group.name] || 0 rescue 0)}"
|
||||||
|
end
|
||||||
|
end.flatten
|
||||||
|
else
|
||||||
|
' '
|
||||||
|
end
|
||||||
|
end
|
||||||
|
max_length = csv_stats.map(&:length).max
|
||||||
|
csv_stats.map do |l|
|
||||||
|
while l.length < max_length
|
||||||
|
l.push ' '
|
||||||
|
end
|
||||||
|
l
|
||||||
|
end.transpose.each do |l|
|
||||||
|
csv << l
|
||||||
|
end
|
||||||
|
@survey_answers.each do |answer|
|
||||||
row = []
|
row = []
|
||||||
@survey_questions.each do |question|
|
@survey_questions.each do |question|
|
||||||
if question.type == ::SurveyQuestion::Radiogroup
|
if question.type == ::SurveyQuestion::Radiogroup
|
||||||
|
|
|
@ -9,7 +9,9 @@
|
||||||
<% @questions.each_with_index do |question, i| %>
|
<% @questions.each_with_index do |question, i| %>
|
||||||
<li class="question-item question-<%= question.id.to_s %> hide" data-index="<%= i %>" data-type="<%= question.type%>" data-custom="<%= question.custom_option.to_s %>">
|
<li class="question-item question-<%= question.id.to_s %> hide" data-index="<%= i %>" data-type="<%= question.type%>" data-custom="<%= question.custom_option.to_s %>">
|
||||||
<% label = question.title %>
|
<% label = question.title %>
|
||||||
<% label += ' (*)' if question.is_required %>
|
<% if question.is_required %>
|
||||||
|
<span class="required-star">(*)</span>
|
||||||
|
<% end %>
|
||||||
<%= f.label question.id, label, :class => "o-question-title" %>
|
<%= f.label question.id, label, :class => "o-question-title" %>
|
||||||
<div class="o-question-description">
|
<div class="o-question-description">
|
||||||
<%= question.description %>
|
<%= question.description %>
|
||||||
|
|
Reference in New Issue