anjlab-widgets 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +18 -0
- data/Gemfile +13 -0
- data/LICENSE +22 -0
- data/README.md +29 -0
- data/Rakefile +2 -0
- data/anjlab-widgets.gemspec +23 -0
- data/lib/anjlab-widgets.rb +7 -0
- data/lib/anjlab-widgets/engine.rb +8 -0
- data/lib/anjlab-widgets/version.rb +5 -0
- data/spec/dummy/README.rdoc +261 -0
- data/spec/dummy/Rakefile +7 -0
- data/spec/dummy/app/assets/javascripts/application.js +17 -0
- data/spec/dummy/app/assets/stylesheets/application.css.scss +3 -0
- data/spec/dummy/app/controllers/application_controller.rb +3 -0
- data/spec/dummy/app/controllers/widgets_controller.rb +10 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/mailers/.gitkeep +0 -0
- data/spec/dummy/app/models/.gitkeep +0 -0
- data/spec/dummy/app/views/layouts/application.html.erb +20 -0
- data/spec/dummy/app/views/widgets/all.html.erb +7 -0
- data/spec/dummy/app/views/widgets/datepicker.html.erb +5 -0
- data/spec/dummy/app/views/widgets/timepicker.html.erb +1 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +61 -0
- data/spec/dummy/config/boot.rb +10 -0
- data/spec/dummy/config/database.yml +25 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +37 -0
- data/spec/dummy/config/environments/production.rb +67 -0
- data/spec/dummy/config/environments/test.rb +37 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/inflections.rb +15 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +7 -0
- data/spec/dummy/config/initializers/session_store.rb +8 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +5 -0
- data/spec/dummy/config/routes.rb +7 -0
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/lib/assets/.gitkeep +0 -0
- data/spec/dummy/log/.gitkeep +0 -0
- data/spec/dummy/log/development.log +11308 -0
- data/spec/dummy/public/404.html +26 -0
- data/spec/dummy/public/422.html +26 -0
- data/spec/dummy/public/500.html +25 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/spec_helper.rb +9 -0
- data/spec/views/widgets/datepicker_spec.rb +9 -0
- data/vendor/assets/javascripts/anjlab/datepicker.js.coffee +369 -0
- data/vendor/assets/javascripts/anjlab/timepicker.js.coffee +135 -0
- data/vendor/assets/stylesheets/anjlab/datepicker.css.scss +85 -0
- data/vendor/assets/stylesheets/anjlab/timepicker.css.scss +34 -0
- metadata +225 -0
@@ -0,0 +1,135 @@
|
|
1
|
+
TimeTools =
|
2
|
+
|
3
|
+
template: "<div class='timepicker dropdown-menu'><div class='times'></div></div>"
|
4
|
+
|
5
|
+
class Timepicker
|
6
|
+
|
7
|
+
constructor: (element, options)->
|
8
|
+
@element = $(element)
|
9
|
+
@picker = $(TimeTools.template).appendTo('body').on({
|
10
|
+
click: $.proxy(@click, this)
|
11
|
+
mousedown: $.proxy(@mousedown, this)
|
12
|
+
}, "a")
|
13
|
+
|
14
|
+
@element.on {
|
15
|
+
focus: $.proxy(@show, this)
|
16
|
+
blur: $.proxy(@hide, this)
|
17
|
+
keyup: $.proxy(@update, this)
|
18
|
+
}
|
19
|
+
|
20
|
+
@step = options.step || @element.data('date-time-step') || 30
|
21
|
+
@minTime = options.minTime || @element.data('date-time-min') || 9 * 60
|
22
|
+
@maxTime = options.maxTime || @element.data('date-time-max') || 20 * 60
|
23
|
+
|
24
|
+
@fillTimes()
|
25
|
+
@update()
|
26
|
+
@scrollPlaced = false
|
27
|
+
|
28
|
+
initialScroll: ->
|
29
|
+
return if @scrollPlaced
|
30
|
+
time = @picker.find('.active')
|
31
|
+
if time.length > 0
|
32
|
+
@picker.find('.times').scrollTop(time.position().top - time.height())
|
33
|
+
@scrollPlaced = true
|
34
|
+
|
35
|
+
click: (e)->
|
36
|
+
e.stopPropagation()
|
37
|
+
e.preventDefault()
|
38
|
+
target = $(e.target)
|
39
|
+
|
40
|
+
if target.is 'a'
|
41
|
+
@time = target.data('time')
|
42
|
+
@setValue()
|
43
|
+
@update()
|
44
|
+
@element.trigger {
|
45
|
+
type: 'changeDate'
|
46
|
+
date: @time
|
47
|
+
}
|
48
|
+
|
49
|
+
mousedown: (e)->
|
50
|
+
e.stopPropagation()
|
51
|
+
e.preventDefault()
|
52
|
+
|
53
|
+
update: ->
|
54
|
+
@time = this.element.val()
|
55
|
+
@picker.find('a.active').removeClass('active')
|
56
|
+
@picker.find("a[data-time='#{@time}']").addClass('active')
|
57
|
+
|
58
|
+
setValue: ->
|
59
|
+
@element.prop('value', @time)
|
60
|
+
|
61
|
+
fillTimes: ->
|
62
|
+
timeCnt = 0
|
63
|
+
html = []
|
64
|
+
while timeCnt < 24 * 60
|
65
|
+
mm = timeCnt % 60
|
66
|
+
hh = Math.floor(timeCnt / 60)
|
67
|
+
mm = (if mm < 10 then '0' else '') + mm
|
68
|
+
hh = (if hh < 10 then '0' else '') + hh
|
69
|
+
time = "#{hh}:#{mm}"
|
70
|
+
html.push "<a href='#' data-time='#{time}'"
|
71
|
+
html.push " class='night'" if timeCnt <= @minTime || timeCnt >= @maxTime
|
72
|
+
html.push ">"
|
73
|
+
html.push time
|
74
|
+
html.push "</a>"
|
75
|
+
timeCnt += @step
|
76
|
+
|
77
|
+
@picker.find('.times').append(html.join(''))
|
78
|
+
|
79
|
+
show: (e) ->
|
80
|
+
@picker.show()
|
81
|
+
@height = @element.outerHeight()
|
82
|
+
@place()
|
83
|
+
@initialScroll()
|
84
|
+
$(window).on('resize', $.proxy(@place, this))
|
85
|
+
if e
|
86
|
+
e.stopPropagation()
|
87
|
+
e.preventDefault()
|
88
|
+
|
89
|
+
@element.trigger {
|
90
|
+
type: 'show'
|
91
|
+
date: @time
|
92
|
+
}
|
93
|
+
|
94
|
+
place: ->
|
95
|
+
offset = @element.offset()
|
96
|
+
@picker.css {
|
97
|
+
top: offset.top + @height
|
98
|
+
left: offset.left
|
99
|
+
}
|
100
|
+
|
101
|
+
hide: ->
|
102
|
+
@picker.hide()
|
103
|
+
$(window).off 'resize', @place
|
104
|
+
|
105
|
+
@setValue()
|
106
|
+
@element.trigger {
|
107
|
+
type: 'hide'
|
108
|
+
date: @time
|
109
|
+
}
|
110
|
+
|
111
|
+
nativePicker = false
|
112
|
+
|
113
|
+
$.fn.timepicker = (option) ->
|
114
|
+
@each ->
|
115
|
+
$this = $(this)
|
116
|
+
if nativePicker
|
117
|
+
$this.prop("type", "time")
|
118
|
+
else
|
119
|
+
data = $this.data('timepicker')
|
120
|
+
options = typeof option == 'object' && option
|
121
|
+
if !data
|
122
|
+
$this.data('timepicker', (data = new Timepicker(this, $.extend({}, $.fn.timepicker.defaults,options))))
|
123
|
+
data[option]() if typeof option == 'string'
|
124
|
+
|
125
|
+
$.fn.timepicker.defaults = { }
|
126
|
+
$.fn.timepicker.Constructor = Timepicker
|
127
|
+
|
128
|
+
$ ->
|
129
|
+
input = document.createElement("input")
|
130
|
+
input.setAttribute("type", "time")
|
131
|
+
nativePicker = input.type == "time"
|
132
|
+
|
133
|
+
$("input[data-widget=timepicker]").timepicker()
|
134
|
+
|
135
|
+
|
@@ -0,0 +1,85 @@
|
|
1
|
+
.datepicker {
|
2
|
+
top: 0;
|
3
|
+
left: 0;
|
4
|
+
padding: 4px;
|
5
|
+
margin-top: 1px;
|
6
|
+
@include border-radius(4px);
|
7
|
+
|
8
|
+
>div {
|
9
|
+
display: none;
|
10
|
+
}
|
11
|
+
.datepicker-days,
|
12
|
+
.datepicker-months,
|
13
|
+
.datepicker-years {
|
14
|
+
display: block;
|
15
|
+
}
|
16
|
+
|
17
|
+
table{
|
18
|
+
width: 100%;
|
19
|
+
margin: 0;
|
20
|
+
}
|
21
|
+
td,
|
22
|
+
th {
|
23
|
+
text-align: center;
|
24
|
+
@include square(20px);
|
25
|
+
@include border-radius(4px);
|
26
|
+
}
|
27
|
+
td {
|
28
|
+
&.day:hover {
|
29
|
+
background: $grayLighter;
|
30
|
+
cursor: pointer;
|
31
|
+
}
|
32
|
+
&.old,
|
33
|
+
&.new {
|
34
|
+
color: $grayLight;
|
35
|
+
}
|
36
|
+
&.active,
|
37
|
+
&.active:hover {
|
38
|
+
@include button-background($btnPrimaryBackground, adjust-hue($btnPrimaryBackground, 20));
|
39
|
+
color: #fff;
|
40
|
+
text-shadow: 0 -1px 0 rgba(0,0,0,.25);
|
41
|
+
}
|
42
|
+
span {
|
43
|
+
display: block;
|
44
|
+
width: 47px;
|
45
|
+
height: 54px;
|
46
|
+
line-height: 54px;
|
47
|
+
float: left;
|
48
|
+
margin: 2px;
|
49
|
+
cursor: pointer;
|
50
|
+
@include border-radius(4px);
|
51
|
+
&:hover {
|
52
|
+
background: $grayLighter;
|
53
|
+
}
|
54
|
+
&.active {
|
55
|
+
@include button-background($btnPrimaryBackground, adjust-hue($btnPrimaryBackground, 20));
|
56
|
+
color: #fff;
|
57
|
+
text-shadow: 0 -1px 0 rgba(0,0,0,.25);
|
58
|
+
}
|
59
|
+
&.old {
|
60
|
+
color: $grayLight;
|
61
|
+
}
|
62
|
+
}
|
63
|
+
}
|
64
|
+
|
65
|
+
th.switch {
|
66
|
+
width: 145px;
|
67
|
+
}
|
68
|
+
|
69
|
+
thead tr:first-child th {
|
70
|
+
cursor: pointer;
|
71
|
+
&:hover {
|
72
|
+
background: $grayLighter;
|
73
|
+
}
|
74
|
+
}
|
75
|
+
}
|
76
|
+
.input-append,
|
77
|
+
.input-prepend {
|
78
|
+
&.date {
|
79
|
+
.add-on i {
|
80
|
+
display: block;
|
81
|
+
cursor: pointer;
|
82
|
+
@include square(16px);
|
83
|
+
}
|
84
|
+
}
|
85
|
+
}
|
@@ -0,0 +1,34 @@
|
|
1
|
+
.timepicker {
|
2
|
+
top: 0;
|
3
|
+
left: 0;
|
4
|
+
padding: 4px;
|
5
|
+
margin-top: 1px;
|
6
|
+
@include border-radius(4px);
|
7
|
+
height:224px;
|
8
|
+
width:70px !important;
|
9
|
+
min-width:70px;
|
10
|
+
|
11
|
+
.times {
|
12
|
+
overflow: auto;
|
13
|
+
height: 224px;
|
14
|
+
}
|
15
|
+
|
16
|
+
a {
|
17
|
+
@include border-radius(4px);
|
18
|
+
|
19
|
+
&:hover {
|
20
|
+
background: $grayLighter;
|
21
|
+
cursor: pointer;
|
22
|
+
}
|
23
|
+
&.night {
|
24
|
+
color: $grayLight;
|
25
|
+
}
|
26
|
+
&.active,
|
27
|
+
&.active:hover {
|
28
|
+
@include button-background($btnPrimaryBackground, adjust-hue($btnPrimaryBackground, 20));
|
29
|
+
color: #fff;
|
30
|
+
text-shadow: 0 -1px 0 rgba(0,0,0,.25);
|
31
|
+
}
|
32
|
+
}
|
33
|
+
|
34
|
+
}
|
metadata
ADDED
@@ -0,0 +1,225 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: anjlab-widgets
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Yury Korolev
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-04-26 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: anjlab-bootstrap-rails
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 2.0.3
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 2.0.3
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rails
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '3.2'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '3.2'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: bundler
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '1.0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: sqlite3
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: rspec-rails
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 2.9.0
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 2.9.0
|
94
|
+
description: Collection of UI widgets on top of anjlab-bootstrap-rails. Datepicker
|
95
|
+
and Timepicker for now.
|
96
|
+
email:
|
97
|
+
- yury.korolev@gmail.com
|
98
|
+
executables: []
|
99
|
+
extensions: []
|
100
|
+
extra_rdoc_files: []
|
101
|
+
files:
|
102
|
+
- .gitignore
|
103
|
+
- Gemfile
|
104
|
+
- LICENSE
|
105
|
+
- README.md
|
106
|
+
- Rakefile
|
107
|
+
- anjlab-widgets.gemspec
|
108
|
+
- lib/anjlab-widgets.rb
|
109
|
+
- lib/anjlab-widgets/engine.rb
|
110
|
+
- lib/anjlab-widgets/version.rb
|
111
|
+
- spec/dummy/README.rdoc
|
112
|
+
- spec/dummy/Rakefile
|
113
|
+
- spec/dummy/app/assets/javascripts/application.js
|
114
|
+
- spec/dummy/app/assets/stylesheets/application.css.scss
|
115
|
+
- spec/dummy/app/controllers/application_controller.rb
|
116
|
+
- spec/dummy/app/controllers/widgets_controller.rb
|
117
|
+
- spec/dummy/app/helpers/application_helper.rb
|
118
|
+
- spec/dummy/app/mailers/.gitkeep
|
119
|
+
- spec/dummy/app/models/.gitkeep
|
120
|
+
- spec/dummy/app/views/layouts/application.html.erb
|
121
|
+
- spec/dummy/app/views/widgets/all.html.erb
|
122
|
+
- spec/dummy/app/views/widgets/datepicker.html.erb
|
123
|
+
- spec/dummy/app/views/widgets/timepicker.html.erb
|
124
|
+
- spec/dummy/config.ru
|
125
|
+
- spec/dummy/config/application.rb
|
126
|
+
- spec/dummy/config/boot.rb
|
127
|
+
- spec/dummy/config/database.yml
|
128
|
+
- spec/dummy/config/environment.rb
|
129
|
+
- spec/dummy/config/environments/development.rb
|
130
|
+
- spec/dummy/config/environments/production.rb
|
131
|
+
- spec/dummy/config/environments/test.rb
|
132
|
+
- spec/dummy/config/initializers/backtrace_silencers.rb
|
133
|
+
- spec/dummy/config/initializers/inflections.rb
|
134
|
+
- spec/dummy/config/initializers/mime_types.rb
|
135
|
+
- spec/dummy/config/initializers/secret_token.rb
|
136
|
+
- spec/dummy/config/initializers/session_store.rb
|
137
|
+
- spec/dummy/config/initializers/wrap_parameters.rb
|
138
|
+
- spec/dummy/config/locales/en.yml
|
139
|
+
- spec/dummy/config/routes.rb
|
140
|
+
- spec/dummy/db/development.sqlite3
|
141
|
+
- spec/dummy/lib/assets/.gitkeep
|
142
|
+
- spec/dummy/log/.gitkeep
|
143
|
+
- spec/dummy/log/development.log
|
144
|
+
- spec/dummy/public/404.html
|
145
|
+
- spec/dummy/public/422.html
|
146
|
+
- spec/dummy/public/500.html
|
147
|
+
- spec/dummy/public/favicon.ico
|
148
|
+
- spec/dummy/script/rails
|
149
|
+
- spec/spec_helper.rb
|
150
|
+
- spec/views/widgets/datepicker_spec.rb
|
151
|
+
- vendor/assets/javascripts/anjlab/datepicker.js.coffee
|
152
|
+
- vendor/assets/javascripts/anjlab/timepicker.js.coffee
|
153
|
+
- vendor/assets/stylesheets/anjlab/datepicker.css.scss
|
154
|
+
- vendor/assets/stylesheets/anjlab/timepicker.css.scss
|
155
|
+
homepage: https://github.com/anjlab/anjlab-widgets
|
156
|
+
licenses: []
|
157
|
+
post_install_message:
|
158
|
+
rdoc_options: []
|
159
|
+
require_paths:
|
160
|
+
- lib
|
161
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
162
|
+
none: false
|
163
|
+
requirements:
|
164
|
+
- - ! '>='
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
segments:
|
168
|
+
- 0
|
169
|
+
hash: 1507446788624259173
|
170
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
171
|
+
none: false
|
172
|
+
requirements:
|
173
|
+
- - ! '>='
|
174
|
+
- !ruby/object:Gem::Version
|
175
|
+
version: '0'
|
176
|
+
segments:
|
177
|
+
- 0
|
178
|
+
hash: 1507446788624259173
|
179
|
+
requirements: []
|
180
|
+
rubyforge_project:
|
181
|
+
rubygems_version: 1.8.22
|
182
|
+
signing_key:
|
183
|
+
specification_version: 3
|
184
|
+
summary: Collection of UI widgets on top of anjlab-bootstrap-rails
|
185
|
+
test_files:
|
186
|
+
- spec/dummy/README.rdoc
|
187
|
+
- spec/dummy/Rakefile
|
188
|
+
- spec/dummy/app/assets/javascripts/application.js
|
189
|
+
- spec/dummy/app/assets/stylesheets/application.css.scss
|
190
|
+
- spec/dummy/app/controllers/application_controller.rb
|
191
|
+
- spec/dummy/app/controllers/widgets_controller.rb
|
192
|
+
- spec/dummy/app/helpers/application_helper.rb
|
193
|
+
- spec/dummy/app/mailers/.gitkeep
|
194
|
+
- spec/dummy/app/models/.gitkeep
|
195
|
+
- spec/dummy/app/views/layouts/application.html.erb
|
196
|
+
- spec/dummy/app/views/widgets/all.html.erb
|
197
|
+
- spec/dummy/app/views/widgets/datepicker.html.erb
|
198
|
+
- spec/dummy/app/views/widgets/timepicker.html.erb
|
199
|
+
- spec/dummy/config.ru
|
200
|
+
- spec/dummy/config/application.rb
|
201
|
+
- spec/dummy/config/boot.rb
|
202
|
+
- spec/dummy/config/database.yml
|
203
|
+
- spec/dummy/config/environment.rb
|
204
|
+
- spec/dummy/config/environments/development.rb
|
205
|
+
- spec/dummy/config/environments/production.rb
|
206
|
+
- spec/dummy/config/environments/test.rb
|
207
|
+
- spec/dummy/config/initializers/backtrace_silencers.rb
|
208
|
+
- spec/dummy/config/initializers/inflections.rb
|
209
|
+
- spec/dummy/config/initializers/mime_types.rb
|
210
|
+
- spec/dummy/config/initializers/secret_token.rb
|
211
|
+
- spec/dummy/config/initializers/session_store.rb
|
212
|
+
- spec/dummy/config/initializers/wrap_parameters.rb
|
213
|
+
- spec/dummy/config/locales/en.yml
|
214
|
+
- spec/dummy/config/routes.rb
|
215
|
+
- spec/dummy/db/development.sqlite3
|
216
|
+
- spec/dummy/lib/assets/.gitkeep
|
217
|
+
- spec/dummy/log/.gitkeep
|
218
|
+
- spec/dummy/log/development.log
|
219
|
+
- spec/dummy/public/404.html
|
220
|
+
- spec/dummy/public/422.html
|
221
|
+
- spec/dummy/public/500.html
|
222
|
+
- spec/dummy/public/favicon.ico
|
223
|
+
- spec/dummy/script/rails
|
224
|
+
- spec/spec_helper.rb
|
225
|
+
- spec/views/widgets/datepicker_spec.rb
|