Commit 9caca45fd8ece2d0e27abd667ac6beacfac55e0c
Committed by
Paulo Meireles
1 parent
09f2a25b
Exists in
master
and in
29 other branches
[Mezuro] New validations for readings.
Showing
4 changed files
with
45 additions
and
1 deletions
Show diff stats
plugins/mezuro/controllers/myprofile/mezuro_plugin_reading_controller.rb
| @@ -4,6 +4,10 @@ class MezuroPluginReadingController < MezuroPluginMyprofileController | @@ -4,6 +4,10 @@ class MezuroPluginReadingController < MezuroPluginMyprofileController | ||
| 4 | 4 | ||
| 5 | def new | 5 | def new |
| 6 | @reading_group_content = profile.articles.find(params[:id]) | 6 | @reading_group_content = profile.articles.find(params[:id]) |
| 7 | + | ||
| 8 | + readings = Kalibro::Reading.readings_of @reading_group_content.reading_group_id | ||
| 9 | + @parser="|*|" | ||
| 10 | + @labels_and_grades = readings.map {|reading| "#{reading.label}#{@parser}#{reading.grade}#{@parser}"} | ||
| 7 | end | 11 | end |
| 8 | 12 | ||
| 9 | def save | 13 | def save |
| @@ -20,6 +24,15 @@ class MezuroPluginReadingController < MezuroPluginMyprofileController | @@ -20,6 +24,15 @@ class MezuroPluginReadingController < MezuroPluginMyprofileController | ||
| 20 | def edit | 24 | def edit |
| 21 | @reading_group_content = profile.articles.find(params[:id]) | 25 | @reading_group_content = profile.articles.find(params[:id]) |
| 22 | @reading = Kalibro::Reading.find params[:reading_id] | 26 | @reading = Kalibro::Reading.find params[:reading_id] |
| 27 | + | ||
| 28 | + readings = Kalibro::Reading.readings_of @reading_group_content.reading_group_id | ||
| 29 | + readings = readings.select {|reading| (reading.id != @reading.id)} | ||
| 30 | + @parser="|*|" | ||
| 31 | + @labels_and_grades = readings.map do |reading| | ||
| 32 | + if(reading.id != @reading.id) | ||
| 33 | + "#{reading.label}#{@parser}#{reading.grade}#{@parser}" | ||
| 34 | + end | ||
| 35 | + end | ||
| 23 | end | 36 | end |
| 24 | 37 | ||
| 25 | def destroy | 38 | def destroy |
| @@ -32,5 +45,4 @@ class MezuroPluginReadingController < MezuroPluginMyprofileController | @@ -32,5 +45,4 @@ class MezuroPluginReadingController < MezuroPluginMyprofileController | ||
| 32 | redirect_to_error_page reading.errors[0].message | 45 | redirect_to_error_page reading.errors[0].message |
| 33 | end | 46 | end |
| 34 | end | 47 | end |
| 35 | - | ||
| 36 | end | 48 | end |
plugins/mezuro/public/javascripts/validations.js
| @@ -24,10 +24,30 @@ function validate_new_reading() { | @@ -24,10 +24,30 @@ function validate_new_reading() { | ||
| 24 | var name = jQuery('#reading_label').val(); | 24 | var name = jQuery('#reading_label').val(); |
| 25 | var grade = jQuery('#reading_grade').val(); | 25 | var grade = jQuery('#reading_grade').val(); |
| 26 | var color = jQuery('#reading_color').val(); | 26 | var color = jQuery('#reading_color').val(); |
| 27 | + | ||
| 27 | if (is_null(name) || is_null(grade) || is_null(color)){ | 28 | if (is_null(name) || is_null(grade) || is_null(color)){ |
| 28 | alert("Please fill all fields marked with (*)."); | 29 | alert("Please fill all fields marked with (*)."); |
| 29 | return false; | 30 | return false; |
| 30 | } | 31 | } |
| 32 | + | ||
| 33 | + var parser = jQuery('#labels_and_grades').attr('data-parser'); | ||
| 34 | + var labels_and_grades = jQuery('#labels_and_grades').attr('data-list').split(parser); | ||
| 35 | + for (var id = 0; id < labels_and_grades.length; id = id + 2) { | ||
| 36 | + if (labels_and_grades[id] == name) { | ||
| 37 | + alert("This label already exists! Please, choose another one."); | ||
| 38 | + return false; | ||
| 39 | + } | ||
| 40 | + | ||
| 41 | + if (labels_and_grades[id+1] == grade || labels_and_grades[id+1] == grade + ".0") { | ||
| 42 | + alert("This grade already exists! Please, choose another one."); | ||
| 43 | + return false; | ||
| 44 | + } | ||
| 45 | + } | ||
| 46 | + | ||
| 47 | + if (!color.match(/^[a-fA-F0-9]{6}$/)) { | ||
| 48 | + alert("This is not a valid color."); | ||
| 49 | + return false; | ||
| 50 | + } | ||
| 31 | return true; | 51 | return true; |
| 32 | } | 52 | } |
| 33 | 53 |
plugins/mezuro/test/functional/myprofile/mezuro_plugin_reading_controller_test.rb
| @@ -21,7 +21,11 @@ class MezuroPluginReadingControllerTest < ActionController::TestCase | @@ -21,7 +21,11 @@ class MezuroPluginReadingControllerTest < ActionController::TestCase | ||
| 21 | end | 21 | end |
| 22 | 22 | ||
| 23 | should 'set variables to create a new reading' do | 23 | should 'set variables to create a new reading' do |
| 24 | + parser = "|*|" | ||
| 25 | + Kalibro::Reading.expects(:readings_of).with(@content.reading_group_id).returns([@reading]) | ||
| 24 | get :new, :profile => @profile.identifier, :id => @content.id | 26 | get :new, :profile => @profile.identifier, :id => @content.id |
| 27 | + assert_equal parser, assigns(:parser) | ||
| 28 | + assert_equal ["#{@reading.label}#{parser}#{@reading.grade}#{parser}"], assigns(:labels_and_grades) | ||
| 25 | assert_equal @content.id, assigns(:reading_group_content).id | 29 | assert_equal @content.id, assigns(:reading_group_content).id |
| 26 | assert_response :success | 30 | assert_response :success |
| 27 | end | 31 | end |
| @@ -44,10 +48,16 @@ class MezuroPluginReadingControllerTest < ActionController::TestCase | @@ -44,10 +48,16 @@ class MezuroPluginReadingControllerTest < ActionController::TestCase | ||
| 44 | end | 48 | end |
| 45 | 49 | ||
| 46 | should 'set variables to edit a reading' do | 50 | should 'set variables to edit a reading' do |
| 51 | + parser = "|*|" | ||
| 52 | + another_reading = ReadingFixtures.reading | ||
| 53 | + another_reading.id = 10 | ||
| 54 | + Kalibro::Reading.expects(:readings_of).with(@content.reading_group_id).returns([@reading, another_reading]) | ||
| 47 | Kalibro::Reading.expects(:find).with(@reading.id.to_s).returns(@reading) | 55 | Kalibro::Reading.expects(:find).with(@reading.id.to_s).returns(@reading) |
| 48 | get :edit, :profile => @profile.identifier, :id => @content.id, :reading_id => @reading.id | 56 | get :edit, :profile => @profile.identifier, :id => @content.id, :reading_id => @reading.id |
| 49 | assert_equal @content.id, assigns(:reading_group_content).id | 57 | assert_equal @content.id, assigns(:reading_group_content).id |
| 50 | assert_equal @reading, assigns(:reading) | 58 | assert_equal @reading, assigns(:reading) |
| 59 | + assert_equal parser, assigns(:parser) | ||
| 60 | + assert_equal ["#{another_reading.label}#{parser}#{another_reading.grade}#{parser}"], assigns(:labels_and_grades) | ||
| 51 | assert_response :success | 61 | assert_response :success |
| 52 | end | 62 | end |
| 53 | 63 |
plugins/mezuro/views/mezuro_plugin_reading/_form.html.erb
| @@ -8,4 +8,6 @@ | @@ -8,4 +8,6 @@ | ||
| 8 | <%= required labelled_form_field _('Color:'), | 8 | <%= required labelled_form_field _('Color:'), |
| 9 | colorpicker_field(:reading, :color) %>Click in the field to change Color | 9 | colorpicker_field(:reading, :color) %>Click in the field to change Color |
| 10 | 10 | ||
| 11 | +<div id="labels_and_grades" data-list="<%= @labels_and_grades %>" data-parser="<%= @parser %>"/> | ||
| 12 | + | ||
| 11 | <p><%= f.submit "Save" %></p> | 13 | <p><%= f.submit "Save" %></p> |