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> |