validate-response 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +10 -0
- data/Gemfile +14 -0
- data/Gemfile.lock +100 -0
- data/MIT-LICENSE +20 -0
- data/README.md +235 -0
- data/Rakefile +32 -0
- data/app/assets/javascripts/validate-response/index.js +1 -0
- data/app/assets/javascripts/validate-response/validate_response_client.js.coffee +91 -0
- data/lib/tasks/validate_response_tasks.rake +4 -0
- data/lib/validate-response.rb +137 -0
- data/lib/validate-response/version.rb +3 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/images/.keep +0 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +13 -0
- data/test/dummy/app/controllers/application_controller.rb +5 -0
- data/test/dummy/app/controllers/concerns/.keep +0 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/mailers/.keep +0 -0
- data/test/dummy/app/models/.keep +0 -0
- data/test/dummy/app/models/concerns/.keep +0 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +23 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +29 -0
- data/test/dummy/config/environments/production.rb +80 -0
- data/test/dummy/config/environments/test.rb +36 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +12 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/routes.rb +56 -0
- data/test/dummy/lib/assets/.keep +0 -0
- data/test/dummy/log/.keep +0 -0
- data/test/dummy/public/404.html +58 -0
- data/test/dummy/public/422.html +58 -0
- data/test/dummy/public/500.html +57 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/test_helper.rb +15 -0
- data/test/validate_response_test.rb +7 -0
- data/validate_response.gemspec +22 -0
- metadata +139 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 91e7b7e133902415a50dcebaeac0245c1b051ac9
|
4
|
+
data.tar.gz: ccb7aa9688e674989eade76de31b35b454bed2d7
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 92661d94472777c380758311a31bd4ccf817b13e44216dcf76faf16a030961c31e3fa69362d7f6fc8e56c60677f6d58a44c510eb6924b7570cfa969958bb41b4
|
7
|
+
data.tar.gz: 8f4f91a97aa37b03747f9a8a2afaf87cc138797f59ba3f0d965c5c9b90d716dd13901c826d9bb24e4c0164fa739e71c7e40353caa3b613f3a64ef2a0bf4588ed
|
data/.gitignore
ADDED
data/Gemfile
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
source "https://rubygems.org"
|
2
|
+
|
3
|
+
# Declare your gem's dependencies in validate_response.gemspec.
|
4
|
+
# Bundler will treat runtime dependencies like base dependencies, and
|
5
|
+
# development dependencies will be added by default to the :development group.
|
6
|
+
gemspec
|
7
|
+
|
8
|
+
# Declare any dependencies that are still in development here instead of in
|
9
|
+
# your gemspec. These might include edge Rails or gems from your path or
|
10
|
+
# Git. Remember to move these dependencies to your gemspec before releasing
|
11
|
+
# your gem to rubygems.org.
|
12
|
+
|
13
|
+
# To use debugger
|
14
|
+
# gem 'debugger'
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,100 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
validate-response (0.0.5)
|
5
|
+
coffee-rails (>= 3.2)
|
6
|
+
rails (>= 3.2)
|
7
|
+
railties (>= 3.0)
|
8
|
+
|
9
|
+
GEM
|
10
|
+
remote: https://rubygems.org/
|
11
|
+
specs:
|
12
|
+
actionmailer (4.1.0)
|
13
|
+
actionpack (= 4.1.0)
|
14
|
+
actionview (= 4.1.0)
|
15
|
+
mail (~> 2.5.4)
|
16
|
+
actionpack (4.1.0)
|
17
|
+
actionview (= 4.1.0)
|
18
|
+
activesupport (= 4.1.0)
|
19
|
+
rack (~> 1.5.2)
|
20
|
+
rack-test (~> 0.6.2)
|
21
|
+
actionview (4.1.0)
|
22
|
+
activesupport (= 4.1.0)
|
23
|
+
builder (~> 3.1)
|
24
|
+
erubis (~> 2.7.0)
|
25
|
+
activemodel (4.1.0)
|
26
|
+
activesupport (= 4.1.0)
|
27
|
+
builder (~> 3.1)
|
28
|
+
activerecord (4.1.0)
|
29
|
+
activemodel (= 4.1.0)
|
30
|
+
activesupport (= 4.1.0)
|
31
|
+
arel (~> 5.0.0)
|
32
|
+
activesupport (4.1.0)
|
33
|
+
i18n (~> 0.6, >= 0.6.9)
|
34
|
+
json (~> 1.7, >= 1.7.7)
|
35
|
+
minitest (~> 5.1)
|
36
|
+
thread_safe (~> 0.1)
|
37
|
+
tzinfo (~> 1.1)
|
38
|
+
arel (5.0.1.20140414130214)
|
39
|
+
builder (3.2.2)
|
40
|
+
coffee-rails (4.0.1)
|
41
|
+
coffee-script (>= 2.2.0)
|
42
|
+
railties (>= 4.0.0, < 5.0)
|
43
|
+
coffee-script (2.2.0)
|
44
|
+
coffee-script-source
|
45
|
+
execjs
|
46
|
+
coffee-script-source (1.7.0)
|
47
|
+
erubis (2.7.0)
|
48
|
+
execjs (2.0.2)
|
49
|
+
hike (1.2.3)
|
50
|
+
i18n (0.6.9)
|
51
|
+
json (1.8.1)
|
52
|
+
mail (2.5.4)
|
53
|
+
mime-types (~> 1.16)
|
54
|
+
treetop (~> 1.4.8)
|
55
|
+
mime-types (1.25.1)
|
56
|
+
minitest (5.3.3)
|
57
|
+
multi_json (1.9.2)
|
58
|
+
polyglot (0.3.4)
|
59
|
+
rack (1.5.2)
|
60
|
+
rack-test (0.6.2)
|
61
|
+
rack (>= 1.0)
|
62
|
+
rails (4.1.0)
|
63
|
+
actionmailer (= 4.1.0)
|
64
|
+
actionpack (= 4.1.0)
|
65
|
+
actionview (= 4.1.0)
|
66
|
+
activemodel (= 4.1.0)
|
67
|
+
activerecord (= 4.1.0)
|
68
|
+
activesupport (= 4.1.0)
|
69
|
+
bundler (>= 1.3.0, < 2.0)
|
70
|
+
railties (= 4.1.0)
|
71
|
+
sprockets-rails (~> 2.0)
|
72
|
+
railties (4.1.0)
|
73
|
+
actionpack (= 4.1.0)
|
74
|
+
activesupport (= 4.1.0)
|
75
|
+
rake (>= 0.8.7)
|
76
|
+
thor (>= 0.18.1, < 2.0)
|
77
|
+
rake (10.3.0)
|
78
|
+
sprockets (2.12.0)
|
79
|
+
hike (~> 1.2)
|
80
|
+
multi_json (~> 1.0)
|
81
|
+
rack (~> 1.0)
|
82
|
+
tilt (~> 1.1, != 1.3.0)
|
83
|
+
sprockets-rails (2.1.3)
|
84
|
+
actionpack (>= 3.0)
|
85
|
+
activesupport (>= 3.0)
|
86
|
+
sprockets (~> 2.8)
|
87
|
+
thor (0.19.1)
|
88
|
+
thread_safe (0.3.3)
|
89
|
+
tilt (1.4.1)
|
90
|
+
treetop (1.4.15)
|
91
|
+
polyglot
|
92
|
+
polyglot (>= 0.3.1)
|
93
|
+
tzinfo (1.1.0)
|
94
|
+
thread_safe (~> 0.1)
|
95
|
+
|
96
|
+
PLATFORMS
|
97
|
+
ruby
|
98
|
+
|
99
|
+
DEPENDENCIES
|
100
|
+
validate-response!
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2014 Alexander Gorbunov (lexgorbunov@gmail.com)
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,235 @@
|
|
1
|
+
# ValidationResponse
|
2
|
+
|
3
|
+
ValidationResponse это библиотека для приведения к единообразной структуре сообщения об ошибках одного или нескольких объектов ActiveRecord
|
4
|
+
|
5
|
+
+ Подсветка полей с ошибками в формах
|
6
|
+
|
7
|
+
## Установка (Installation)
|
8
|
+
|
9
|
+
Add this line to your application's Gemfile:
|
10
|
+
|
11
|
+
gem 'validate-response', '~> 0.0.5'
|
12
|
+
|
13
|
+
And then execute:
|
14
|
+
|
15
|
+
$ bundle install
|
16
|
+
|
17
|
+
Add this line to your application.js
|
18
|
+
|
19
|
+
//= require validate-response
|
20
|
+
|
21
|
+
## Как использовать (Usage)
|
22
|
+
|
23
|
+
__(!)__ ```nil``` - Используется для обозначения *new_record* записей (еще не сохраненных в базе)
|
24
|
+
|
25
|
+
### Пример использования (Usage example):
|
26
|
+
#### Сервер (Server):
|
27
|
+
|
28
|
+
```ruby
|
29
|
+
room = Room.create(params[:room])
|
30
|
+
render json: {
|
31
|
+
result: room.valid?,
|
32
|
+
validates: ValidateResponse.new(room)
|
33
|
+
}
|
34
|
+
```
|
35
|
+
#### Клиент (Client):
|
36
|
+
|
37
|
+
##### Код
|
38
|
+
|
39
|
+
```coffeescreept
|
40
|
+
# dom element containing the highlightable fields
|
41
|
+
$form = $('.my-form')
|
42
|
+
$.ajax
|
43
|
+
url: '/'
|
44
|
+
type: 'POST'
|
45
|
+
dataType: 'json'
|
46
|
+
success: (data) ->
|
47
|
+
$(document).trigger ValidateResponse.EVENT_SHOW_ERRORS, [$form, data.validates] if data.validates
|
48
|
+
```
|
49
|
+
|
50
|
+
##### DOM
|
51
|
+
|
52
|
+
```haml
|
53
|
+
.my-form
|
54
|
+
%div
|
55
|
+
%label{data: {vr_field: "rooms|#{@room.id}|field1"}} Label 1
|
56
|
+
%input{type: 'text', value: @room.field1, name: 'room[field1]'}
|
57
|
+
%div
|
58
|
+
%label{data: {vr_field: "rooms||field2", vr_way: 'border'}} Label 2
|
59
|
+
%input{type: 'text', value: @room.field2, name: 'room[field2]'}
|
60
|
+
```
|
61
|
+
|
62
|
+
### Привила настройки форм (Form settings rules)
|
63
|
+
|
64
|
+
#### data-vr-field:
|
65
|
+
|
66
|
+
# @room => Модель Room
|
67
|
+
# @room.id => 1
|
68
|
+
|
69
|
+
vr-field:
|
70
|
+
|
71
|
+
vr-field: 'rooms|1|field_name'
|
72
|
+
---
|
73
|
+
|
74
|
+
#@room => Модель Room
|
75
|
+
#@room.id => nil
|
76
|
+
|
77
|
+
vr-field:
|
78
|
+
|
79
|
+
vr-field: 'rooms||field_name'
|
80
|
+
|
81
|
+
#### data-vr-way:
|
82
|
+
data-vr-way: 'color'
|
83
|
+
Вслучае ошибки цвет текста станет красным
|
84
|
+
'title'
|
85
|
+
Вслучае ошибки текст всплывающей подсказки будет содержать сообщение об ошибке
|
86
|
+
'outline'
|
87
|
+
Вслучае ошибки цвет внешней рамки станет красным
|
88
|
+
'border'
|
89
|
+
Вслучае ошибки цвет рамки станет красным
|
90
|
+
'background'
|
91
|
+
Вслучае ошибки цвет фона станет красным
|
92
|
+
|
93
|
+
После устранения ошибок для каждого поля все измененные свойства восстанавливаются до первоначального состояния
|
94
|
+
|
95
|
+
__Свойства vr-way можно группировать__
|
96
|
+
|
97
|
+
``` vr-way: 'color|title' ```
|
98
|
+
### Другие примеры (More examples):
|
99
|
+
|
100
|
+
```ruby
|
101
|
+
render json: {
|
102
|
+
result: @user.update_attributes(params[:user]),
|
103
|
+
validates: ValidateResponse.new(@user.contacts)
|
104
|
+
}
|
105
|
+
```
|
106
|
+
-- or --
|
107
|
+
```ruby
|
108
|
+
ValidateResponse.new(
|
109
|
+
Room.create,
|
110
|
+
User.create,
|
111
|
+
User.last.tap{|u| u.email = nil; u.valid?}
|
112
|
+
)
|
113
|
+
```
|
114
|
+
вернет (return)
|
115
|
+
```
|
116
|
+
{
|
117
|
+
:rooms => {
|
118
|
+
nil => {
|
119
|
+
:location_id => [
|
120
|
+
[0] "не может быть пустым"
|
121
|
+
],
|
122
|
+
:user => [
|
123
|
+
[0] "не может быть пустым"
|
124
|
+
],
|
125
|
+
:floor => [
|
126
|
+
[0] "не является числом"
|
127
|
+
],
|
128
|
+
:sq => [
|
129
|
+
[0] "не является числом"
|
130
|
+
],
|
131
|
+
:price_psm => [
|
132
|
+
[0] "не является числом"
|
133
|
+
],
|
134
|
+
:total_cost => [
|
135
|
+
[0] "не является числом"
|
136
|
+
]
|
137
|
+
}
|
138
|
+
},
|
139
|
+
:users => {
|
140
|
+
nil => {
|
141
|
+
:email => [
|
142
|
+
[0] "не может быть пустым"
|
143
|
+
],
|
144
|
+
:password => [
|
145
|
+
[0] "не может быть пустым"
|
146
|
+
],
|
147
|
+
:city_id => [
|
148
|
+
[0] "не может быть пустым"
|
149
|
+
],
|
150
|
+
:company => [
|
151
|
+
[0] "не может быть пустым"
|
152
|
+
]
|
153
|
+
},
|
154
|
+
242 => {
|
155
|
+
:email => [
|
156
|
+
[0] "не может быть пустым"
|
157
|
+
]
|
158
|
+
}
|
159
|
+
}
|
160
|
+
}
|
161
|
+
```
|
162
|
+
### Поддерживаются объекты разных моделей (Supported object of different AR models at the same time)
|
163
|
+
|
164
|
+
```ruby
|
165
|
+
a.update_attributes(...)
|
166
|
+
b.update_attributes(...)
|
167
|
+
ValidateResponse.new(a, b)
|
168
|
+
```
|
169
|
+
|
170
|
+
### Примеры заполнения (Filling examples):
|
171
|
+
|
172
|
+
#### Пример 1 (Example 1):
|
173
|
+
|
174
|
+
```ruby
|
175
|
+
ValidateResponse.new(@user.contacts)
|
176
|
+
```
|
177
|
+
|
178
|
+
#### Пример 2 (Example 2):
|
179
|
+
```ruby
|
180
|
+
ValidateResponse.new(@room1, @room2)
|
181
|
+
```
|
182
|
+
|
183
|
+
#### Пример 3 (Example 3):
|
184
|
+
|
185
|
+
```ruby
|
186
|
+
x = ValidateResponse.new()
|
187
|
+
x << contact1
|
188
|
+
x << contact2
|
189
|
+
x << contact3 << contact4
|
190
|
+
```
|
191
|
+
|
192
|
+
#### Пример 4. Ручное заполнение (Example 4 Manual filling):
|
193
|
+
|
194
|
+
```ruby
|
195
|
+
x = ValidateResponse.new()
|
196
|
+
x[:users, 1] = {
|
197
|
+
name: 'ошибка такая-то',
|
198
|
+
age: ['несоответствие 1', 'несоответствие 2']
|
199
|
+
}
|
200
|
+
x[:users, nil] = {
|
201
|
+
name: 'ошибка такая-то',
|
202
|
+
age: ['несоответствие 1', 'несоответствие 2']
|
203
|
+
}
|
204
|
+
```
|
205
|
+
|
206
|
+
#### Пример 5. Ручное заполнение (Example 5 Manual filling):
|
207
|
+
|
208
|
+
```ruby
|
209
|
+
x = ValidateResponse.new()
|
210
|
+
x[:users] = {
|
211
|
+
1 => {
|
212
|
+
name: 'ошибка такая-то',
|
213
|
+
age: ['несоответствие 1', 'несоответствие 2']
|
214
|
+
},
|
215
|
+
nil => {
|
216
|
+
name: 'ошибка такая-то',
|
217
|
+
age: ['несоответствие 1', 'несоответствие 2']
|
218
|
+
}
|
219
|
+
}
|
220
|
+
```
|
221
|
+
|
222
|
+
#### Пример 6. Ручное заполнение (Example 6 Manual filling):
|
223
|
+
|
224
|
+
```ruby
|
225
|
+
x = ValidateResponse.new()
|
226
|
+
x[:users, nil][:name] = ['несоответствие 1', 'несоответствие 2']
|
227
|
+
```
|
228
|
+
|
229
|
+
## Для разработчиков (Contributing)
|
230
|
+
|
231
|
+
1. Fork it
|
232
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
233
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
234
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
235
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
begin
|
2
|
+
require 'bundler/setup'
|
3
|
+
rescue LoadError
|
4
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'rdoc/task'
|
8
|
+
|
9
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
10
|
+
rdoc.rdoc_dir = 'rdoc'
|
11
|
+
rdoc.title = 'ValidateResponse'
|
12
|
+
rdoc.options << '--line-numbers'
|
13
|
+
rdoc.rdoc_files.include('README.rdoc')
|
14
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
Bundler::GemHelper.install_tasks
|
21
|
+
|
22
|
+
require 'rake/testtask'
|
23
|
+
|
24
|
+
Rake::TestTask.new(:test) do |t|
|
25
|
+
t.libs << 'lib'
|
26
|
+
t.libs << 'test'
|
27
|
+
t.pattern = 'test/**/*_test.rb'
|
28
|
+
t.verbose = false
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
task default: :test
|
@@ -0,0 +1 @@
|
|
1
|
+
//= require ./validate_response_client
|
@@ -0,0 +1,91 @@
|
|
1
|
+
(($) ->
|
2
|
+
# $.fn.validate
|
3
|
+
|
4
|
+
$ ->
|
5
|
+
class ValidateResponse
|
6
|
+
WAY_EXPR = /^css:\w+/
|
7
|
+
DEFAULT_WAY: 'color|title'
|
8
|
+
# Events
|
9
|
+
EVENT_SHOW_ERRORS: 'validate-response:show-errors'
|
10
|
+
|
11
|
+
constructor: ->
|
12
|
+
# @EVENT_SHOW_ERRORS = EVENT_SHOW_ERRORS
|
13
|
+
# subscribe on show errors event
|
14
|
+
$(document).on @.EVENT_SHOW_ERRORS, (e, form, validation_data) => @show_errors(form, validation_data)
|
15
|
+
|
16
|
+
show_errors: (form, validation_data) =>
|
17
|
+
$form = $(form)
|
18
|
+
summary = $form.find('[role="vr-summary"]').empty()
|
19
|
+
need_summary = !!summary.length
|
20
|
+
# Adding summary
|
21
|
+
if need_summary
|
22
|
+
summary.addClass('vr-empty-summary')
|
23
|
+
for record_type, records_validations of validation_data
|
24
|
+
record_type_errors = $('<div class="vr-record-type-errors">').addClass("vr-record-type-#{record_type}")
|
25
|
+
for record_id, validations_fields of records_validations
|
26
|
+
record_errors = $('<div class="vr-record-errors">').addClass("vr-record-id-#{record_type}")
|
27
|
+
for field_id, validation_messages of validations_fields
|
28
|
+
field_errors = $('<div class="vr-field-errors">').addClass("vr-field-id-#{field_id}").append($('<div>').html(field_id)).append(field_errors_messages = $('<div>'))
|
29
|
+
for message in validation_messages
|
30
|
+
field_errors_messages.append $('<div class="vr-error-message">').html(message)
|
31
|
+
record_errors.append field_errors
|
32
|
+
record_type_errors.append record_errors
|
33
|
+
summary.append record_type_errors
|
34
|
+
else
|
35
|
+
summary.removeClass('vr-empty-summary')
|
36
|
+
# Highlight fields
|
37
|
+
@reset_highlight($form)
|
38
|
+
for record_type, records_validations of validation_data
|
39
|
+
for record_id, validations_fields of records_validations
|
40
|
+
for field_id, validation_messages of validations_fields
|
41
|
+
for message in validation_messages
|
42
|
+
field_selector = [record_type, record_id, field_id].join('|')
|
43
|
+
fields = $form.find("[data-vr-field=\"#{field_selector}\"]")
|
44
|
+
for field_element in fields
|
45
|
+
field = $(field_element)
|
46
|
+
for way in (field.data('vr-way') || @.DEFAULT_WAY).split('|')
|
47
|
+
switch way
|
48
|
+
when 'color'
|
49
|
+
field.data('vr-backstore-color', (field.css('color') || '#000'))
|
50
|
+
field.css('color', '#D0413B')
|
51
|
+
when 'title'
|
52
|
+
field.data('vr-backstore-title', (field.attr('title') || ''))
|
53
|
+
field.attr('title', message)
|
54
|
+
when 'outline'
|
55
|
+
field.data('vr-backstore-outline', (field.css('outline') || 'none'))
|
56
|
+
field.css('outline', '1px solid #D0413B')
|
57
|
+
when 'border'
|
58
|
+
field.data('vr-backstore-border', (field.css('border') || 'none'))
|
59
|
+
field.css('border', '1px solid #D0413B')
|
60
|
+
when 'background'
|
61
|
+
field.data('vr-backstore-background', (field.css('background') || 'none'))
|
62
|
+
field.css('background', '1px solid #D0413B')
|
63
|
+
else
|
64
|
+
continue
|
65
|
+
# --- end of show_errors ---
|
66
|
+
|
67
|
+
reset_highlight: (form) =>
|
68
|
+
$form = $(form)
|
69
|
+
vr_fields = $form.find('[data-vr-field]')
|
70
|
+
for field in vr_fields
|
71
|
+
$fields = $(field)
|
72
|
+
for field in $fields
|
73
|
+
$field = $(field)
|
74
|
+
for way in ($field.data('vr-way') || @.DEFAULT_WAY).split('|')
|
75
|
+
switch way
|
76
|
+
when 'color'
|
77
|
+
$field.css('color', vr_backval) if (vr_backval = $field.data('vr-backstore-color'))?
|
78
|
+
when 'title'
|
79
|
+
$field.attr('title', vr_backval) if (vr_backval = $field.data('vr-backstore-title'))?
|
80
|
+
when 'outline'
|
81
|
+
$field.css('outline', vr_backval) if (vr_backval = $field.data('vr-backstore-outline'))?
|
82
|
+
when 'border'
|
83
|
+
$field.css('border', vr_backval) if (vr_backval = $field.data('vr-backstore-border'))?
|
84
|
+
when 'background'
|
85
|
+
$field.css('background', vr_backval) if (vr_backval = $field.data('vr-backstore-background'))?
|
86
|
+
else
|
87
|
+
continue
|
88
|
+
# --- end of reset_highlight ---
|
89
|
+
|
90
|
+
window.ValidateResponse = new ValidateResponse()
|
91
|
+
)(jQuery)
|