From 9ec22c3487b89ab3e0031bac4f047e70e4092819 Mon Sep 17 00:00:00 2001 From: BOHUNG Date: Mon, 17 Feb 2020 21:52:00 +0800 Subject: [PATCH] fix bugs in version 1 --- Gemfile.lock | 3 +- .../javascripts/admin/olympiamanagement.js | 38 ------------------- app/assets/javascripts/olympiamanagement.js | 23 +++++++++++ .../admin/olympiamanagements_controller.rb | 21 ++++++---- .../olympiamanagements_controller.rb | 9 +++-- .../olympiamanagements/class_setting.html.erb | 28 +++++++------- 6 files changed, 60 insertions(+), 62 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 80fdb84..5e3c30d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,13 +1,14 @@ PATH remote: . specs: - cancerpredict (0.0.1) + olympiamanagement (0.0.1) mongoid (= 4.0.0.beta1) rails (~> 4.1.0.rc2) GEM remote: https://rubygems.org/ specs: + rubyXL (~> 3.4.6) actionmailer (4.1.0.rc2) actionpack (= 4.1.0.rc2) actionview (= 4.1.0.rc2) diff --git a/app/assets/javascripts/admin/olympiamanagement.js b/app/assets/javascripts/admin/olympiamanagement.js index 497a847..b410db5 100644 --- a/app/assets/javascripts/admin/olympiamanagement.js +++ b/app/assets/javascripts/admin/olympiamanagement.js @@ -1,42 +1,4 @@ $(document).ready(function(){ - $('.class_setting_block input[type="reset"]').off('click').on('click',function(){ - $('.col_input').val(''); - }); - $('.class_setting_block input[type="submit"]').off('click').on('click',function(){ - var class_number_range = []; - class_number_range.push(Number($('.class_setting_block .col_input[name="MinClass"]').val())); - class_number_range.push(Number($('.class_setting_block .col_input[name="MaxClass"]').val())); - var enrollment_available = $('.class_setting_block .col_input#Person').val(); - class_number_range.sort(); - var params_array = (window.location.search.substring(1)=="") ? [] : window.location.search.substring(1).split('&').map(function(el){return el.split('=')}); - var params = {}; - params_array.forEach(function(el){params[el[0]] = el[1]}); - var params_to_send = {'type':'class_setting','class_number_range':class_number_range,'enrollment_available':enrollment_available}; - params_to_send = Object.assign(params,params_to_send); - var post_data = $.post('/admin/olympiamanagements/update_school_data',params_to_send); - post_data.done(function(){ - window.location.search=""; - }); - }); - $('.class_setting_block input').keypress(function(event){ - var keycode = event['keyCode'] || event['which']; - if(Number(keycode) == 13){ - var class_number_range = []; - class_number_range.push(Number($('.class_setting_block .col_input[name="MinClass"]').val())); - class_number_range.push(Number($('.class_setting_block .col_input[name="MaxClass"]').val())); - var enrollment_available = $('.class_setting_block .col_input#Person').val(); - class_number_range.sort(); - var params_array = (window.location.search.substring(1)=="") ? [] : window.location.search.substring(1).split('&').map(function(el){return el.split('=')}); - var params = {}; - params_array.forEach(function(el){params[el[0]] = el[1]}); - var params_to_send = {'type':'class_setting','class_number_range':class_number_range,'enrollment_available':enrollment_available}; - params_to_send = Object.assign(params,params_to_send); - var post_data = $.post('/admin/olympiamanagements/update_school_data',params_to_send); - post_data.done(function(){ - window.location.search=""; - }); - }; - }); $('.fieldset_block input[type="submit"]').click(function(){ $el = $('.fieldset_block li.required'); for(var i = 0; i< $el.length ; i++){ diff --git a/app/assets/javascripts/olympiamanagement.js b/app/assets/javascripts/olympiamanagement.js index c96b23b..b59d1f2 100644 --- a/app/assets/javascripts/olympiamanagement.js +++ b/app/assets/javascripts/olympiamanagement.js @@ -143,5 +143,28 @@ $(document).ready(function(){ }else{ $('#StudentFile').addClass('required'); }; + $el = $('.fieldset_block li[for="StudentFile"]'); + if($el.siblings('.col_r').find('.required').val() == ""){ + $el.addClass('errFld'); + if($el.siblings('.col_r').find('.errMsg').length == 0) + $el.siblings('.col_r').append('
'+((I18n.locale == "en") ? 'Required field': '必填欄位')+'
'); + }else{ + $el.removeClass('errFld'); + $el.siblings('.col_r').find('.errMsg').remove(); + }; + }); + $('#StudentFile').on('input',function(){ + if($(this).val() != ''){ + $('[for="StudentFile"]').removeClass('errFld'); + $('[for="StudentFile"]').siblings('.col_r').find('.errMsg').remove(); + }; + }); + $('[data-dismiss="fileupload"]').click(function(){ + if($('#StudentFile').hasClass('required')){ + $el = $('.fieldset_block li[for="StudentFile"]'); + $el.addClass('errFld'); + if($el.siblings('.col_r').find('.errMsg').length == 0) + $el.siblings('.col_r').append('
'+((I18n.locale == "en") ? 'Required field': '必填欄位')+'
'); + }; }); }); \ No newline at end of file diff --git a/app/controllers/admin/olympiamanagements_controller.rb b/app/controllers/admin/olympiamanagements_controller.rb index 4912f1c..596a02a 100644 --- a/app/controllers/admin/olympiamanagements_controller.rb +++ b/app/controllers/admin/olympiamanagements_controller.rb @@ -66,6 +66,12 @@ class Admin::OlympiamanagementsController < OrbitAdminController @ClassSettingField.enrollment_available = params[:enrollment_available].to_i @ClassSettingField.save render :json => {'success'=>true} and return + elsif params[:type] == 'class_setting_for_form' + @ClassSettingField = (params[:id].nil? ? ClassSettingFields.new : ((ClassSettingFields.find(params[:id]).nil? rescue true) ? ClassSettingFields.new : ClassSettingFields.find(params[:id]))) + @ClassSettingField.class_number_range = [params[:MinClass],params[:MaxClass]].map{|str| str.to_i}.sort + @ClassSettingField.enrollment_available = params[:Person].to_i + @ClassSettingField.save + redirect_to admin_olympiamanagements_class_setting_path elsif params[:type] == 'delete_class_setting' if !params[:id].to_s.blank? begin @@ -197,12 +203,10 @@ class Admin::OlympiamanagementsController < OrbitAdminController flag = 0 else #@error_msg << @row_index_hash and return false - @olympia_school_data_field = OlympiaSchoolDataFields.where(:school_code=> row[@row_index_hash["school_code"]]).first + @olympia_school_data_field = OlympiaSchoolDataFields.where(:school_code=> row[@row_index_hash["school_code"]],:sign_up_setting_id=>@sign_up_setting.id).first @olympia_school_data_field = OlympiaSchoolDataFields.new() if @olympia_school_data_field.nil? - @row_index_hash.each do |key,index| - @olympia_school_data_field[key] = row[index] - end - @olympia_school_data_field.save + @update_attributes = @row_index_hash.map{|key,index| [key,row[index]]}.to_h + @olympia_school_data_field.update_attributes(@update_attributes) end end return true @@ -428,7 +432,10 @@ class Admin::OlympiamanagementsController < OrbitAdminController @olympia_school_data_field = OlympiaSchoolDataFields.find(params[:school_id]) rescue nil @enrollment_limited = ((@olympia_school_data_field.enrollment_limited.nil? || @olympia_school_data_field.enrollment_limited == 0) ? ClassSettingFields.all.select{|class_setting_field| class_setting_field.class_number_range[0] <= @olympia_school_data_field.class_number.to_i && class_setting_field.class_number_range[1] >= @olympia_school_data_field.class_number.to_i}.first.enrollment_available.to_i : @olympia_school_data_field.enrollment_limited.to_i) @student_fields = OlympiaStudentDataField.where(:olympia_school_data_fields_id=>params[:school_id],:sign_up_setting_id=>@sign_up_setting_id) - if @student_fields.length > @enrollment_limited + @olympia_student_data = OlympiaStudentDataField.find(params[:id]) rescue nil + extra_num = 0 + extra_num = 1 if(@olympia_student_data.nil? && @student_params['StudentIdentity'] != '1') + if (@student_fields.length + extra_num) > @enrollment_limited @error_msg << ((I18n.locale.to_s == "zh_tw") ? ("一般身分報名人數上限為 #{@enrollment_limited} 人。") : ("Enrollment limited of General identity is #{@enrollment_limited} people.")) @error_msg << I18n.t('olympiamanagement.already_exceed_enrollment_limited') end @@ -474,7 +481,7 @@ class Admin::OlympiamanagementsController < OrbitAdminController end end def download_import_file - @OlympiaSchoolDataFields = OlympiaSchoolDataFields.all.asc(:id) + @OlympiaSchoolDataFields = OlympiaSchoolDataFields.where(:sign_up_setting_id=>@sign_up_setting.id).asc(:id) dir_path = 'tmp/olypiamanagement/' #FileUtils.rm_r(dir_path, :force => true) if Dir.exist?(dir_path) FileUtils.mkdir dir_path if !Dir.exist?(dir_path) #create dir for storing tmp_file if dir doesn't exist diff --git a/app/controllers/olympiamanagements_controller.rb b/app/controllers/olympiamanagements_controller.rb index 8084cb4..f35a83b 100644 --- a/app/controllers/olympiamanagements_controller.rb +++ b/app/controllers/olympiamanagements_controller.rb @@ -677,13 +677,16 @@ class OlympiamanagementsController < ApplicationController if @id_error_msg.length != 0 @error_msg << I18n.t('olympiamanagement.id_number_error') end - if @student_params['StudentIdentity'] == '1' && (@student_params['olympia_student_images']['0']['StudentFile'].nil? rescue true) + if @student_params['StudentIdentity'] == '1' && (@student_params['olympia_student_images']['0']['student_file'].nil? rescue true) @error_msg << I18n.t('olympiamanagement.StudentFile') end @olympia_school_data_field = OlympiaSchoolDataFields.where(:account_number=>session[:olympia_login_id],:sign_up_setting_id=>@sign_up_setting.id,:approved=>true).first @enrollment_limited = ((@olympia_school_data_field.enrollment_limited.nil? || @olympia_school_data_field.enrollment_limited == 0) ? ClassSettingFields.all.select{|class_setting_field| class_setting_field.class_number_range[0] <= @olympia_school_data_field.class_number.to_i && class_setting_field.class_number_range[1] >= @olympia_school_data_field.class_number.to_i}.first.enrollment_available.to_i : @olympia_school_data_field.enrollment_limited.to_i) - @student_fields = OlympiaStudentDataField.where(:olympia_school_data_fields_id=>@olympia_school_data_field.id,:sign_up_setting_id=>@sign_up_setting.id) - if @student_fields.length > @enrollment_limited + @student_fields = OlympiaStudentDataField.where(:olympia_school_data_fields_id=>@olympia_school_data_field.id,:sign_up_setting_id=>@sign_up_setting.id,:StudentIdentity=>'0') + @olympia_student_data = OlympiaStudentDataField.find(params[:id]) rescue nil + extra_num = 0 + extra_num = 1 if(@olympia_student_data.nil? && @student_params['StudentIdentity'] != '1') + if (@student_fields.length + extra_num) > @enrollment_limited @error_msg << ((I18n.locale.to_s == "zh_tw") ? ("一般身分報名人數上限為 #{@enrollment_limited} 人。") : ("Enrollment limited of General identity is #{@enrollment_limited} people.")) @error_msg << I18n.t('olympiamanagement.already_exceed_enrollment_limited') end diff --git a/app/views/admin/olympiamanagements/class_setting.html.erb b/app/views/admin/olympiamanagements/class_setting.html.erb index 4e67302..212db6c 100644 --- a/app/views/admin/olympiamanagements/class_setting.html.erb +++ b/app/views/admin/olympiamanagements/class_setting.html.erb @@ -2,19 +2,21 @@
- <%=t('olympiamanagement.class_setting')%> -
-
  • <%= t('olympiamanagement.class_number')+"(#{t('olympiamanagement.spacing')})"%>
  • -
  • >
  • - ~ -
  • >
  • -
    -
    -
  • <%= t('olympiamanagement.enrollment_available') %>
  • >
  • -
    -
    - - + <%= form_tag admin_olympiamanagements_update_school_data_path(:type => "class_setting_for_form") do %> + <%=t('olympiamanagement.class_setting')%> +
    +
  • <%= t('olympiamanagement.class_number')+"(#{t('olympiamanagement.spacing')})"%>
  • +
  • >
  • + ~ +
  • >
  • +
    +
    +
  • <%= t('olympiamanagement.enrollment_available') %>
  • >
  • +
    +
    + + + <% end %>