From 443d1c4fbecd8fa0b99580e4e29feff8329fa5c5 Mon Sep 17 00:00:00 2001 From: iCross Date: Wed, 22 May 2013 18:03:46 +0800 Subject: [PATCH] csv stats & required start --- app/assets/stylesheets/questionnaire.css | 6 ++++ .../survey/back_end/surveys_controller.rb | 30 +++++++++++++++++-- .../survey/front_end/surveys/show.html.erb | 4 ++- 3 files changed, 37 insertions(+), 3 deletions(-) diff --git a/app/assets/stylesheets/questionnaire.css b/app/assets/stylesheets/questionnaire.css index eab2710b6..adedca5bc 100644 --- a/app/assets/stylesheets/questionnaire.css +++ b/app/assets/stylesheets/questionnaire.css @@ -27,6 +27,12 @@ margin: 0 0 0 40px; padding: 16px 0; 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 { border: 0; diff --git a/vendor/built_in_modules/survey/app/controllers/panel/survey/back_end/surveys_controller.rb b/vendor/built_in_modules/survey/app/controllers/panel/survey/back_end/surveys_controller.rb index b262116d5..ca830672e 100644 --- a/vendor/built_in_modules/survey/app/controllers/panel/survey/back_end/surveys_controller.rb +++ b/vendor/built_in_modules/survey/app/controllers/panel/survey/back_end/surveys_controller.rb @@ -87,14 +87,40 @@ class Panel::Survey::BackEnd::SurveysController < OrbitBackendController def export @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| format.csv do csv = CSV.generate do |csv| 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 = [] @survey_questions.each do |question| if question.type == ::SurveyQuestion::Radiogroup diff --git a/vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/show.html.erb b/vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/show.html.erb index b013e0078..3e9df01fe 100644 --- a/vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/show.html.erb +++ b/vendor/built_in_modules/survey/app/views/panel/survey/front_end/surveys/show.html.erb @@ -9,7 +9,9 @@ <% @questions.each_with_index do |question, i| %>
  • <% label = question.title %> - <% label += ' (*)' if question.is_required %> + <% if question.is_required %> + (*) + <% end %> <%= f.label question.id, label, :class => "o-question-title" %>
    <%= question.description %>