tableficate 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. data/README.markdown +6 -4
  2. data/app/views/tableficate/_data.html.erb +7 -1
  3. data/app/views/tableficate/_header.html.erb +2 -2
  4. data/app/views/tableficate/_table.html.erb +16 -23
  5. data/app/views/tableficate/_table_for.html.erb +9 -0
  6. data/app/views/tableficate/filters/_check_box_choice.html.erb +3 -0
  7. data/app/views/tableficate/filters/_form.html.erb +16 -0
  8. data/app/views/tableficate/filters/_radio_choice.html.erb +3 -0
  9. data/changelog.markdown +17 -0
  10. data/lib/generators/tableficate/theme/theme_generator.rb +17 -1
  11. data/lib/tableficate.rb +3 -0
  12. data/lib/tableficate/action_column.rb +2 -2
  13. data/lib/tableficate/caption.rb +29 -0
  14. data/lib/tableficate/column.rb +13 -7
  15. data/lib/tableficate/empty.rb +34 -0
  16. data/lib/tableficate/filters/base.rb +7 -5
  17. data/lib/tableficate/filters/check_box.rb +1 -1
  18. data/lib/tableficate/filters/choice.rb +2 -2
  19. data/lib/tableficate/filters/collection_base.rb +13 -0
  20. data/lib/tableficate/filters/input.rb +2 -2
  21. data/lib/tableficate/filters/input_range.rb +6 -6
  22. data/lib/tableficate/filters/radio.rb +1 -1
  23. data/lib/tableficate/filters/select.rb +1 -1
  24. data/lib/tableficate/filters/select_range.rb +4 -4
  25. data/lib/tableficate/finder.rb +70 -28
  26. data/lib/tableficate/helper.rb +44 -47
  27. data/lib/tableficate/table.rb +64 -24
  28. data/lib/tableficate/utils.rb +27 -2
  29. data/lib/tableficate/version.rb +1 -1
  30. data/spec/action_column_spec.rb +9 -1
  31. data/spec/base_spec.rb +10 -0
  32. data/spec/caption_spec.rb +33 -0
  33. data/spec/column_spec.rb +29 -0
  34. data/spec/empty_spec.rb +45 -0
  35. data/spec/filters/base_spec.rb +6 -5
  36. data/spec/filters/choice_spec.rb +5 -2
  37. data/spec/filters/collection_spec.rb +4 -4
  38. data/spec/filters/input_range_spec.rb +10 -8
  39. data/spec/filters/select_range_spec.rb +79 -0
  40. data/spec/finder_spec.rb +48 -1
  41. data/spec/generators/tableficate_theme_spec.rb +14 -0
  42. data/spec/table_spec.rb +114 -3
  43. data/spec/test_app/app/controllers/filters_controller.rb +1 -1
  44. data/spec/test_app/app/controllers/tests_controller.rb +5 -0
  45. data/spec/test_app/app/controllers/themes_controller.rb +7 -0
  46. data/spec/test_app/app/views/filters/html5_input_types.html.erb +31 -0
  47. data/spec/test_app/app/views/tableficate/custom_check_box_block/filters/_check_box_choice.html.erb +2 -0
  48. data/spec/test_app/app/views/tableficate/custom_radio_block/filters/_radio_choice.html.erb +2 -0
  49. data/spec/test_app/app/views/tests/index.html.erb +13 -0
  50. data/spec/test_app/app/views/themes/caption.html.erb +9 -0
  51. data/spec/test_app/app/views/themes/column_attrs.html.erb +7 -0
  52. data/spec/test_app/app/views/themes/column_cell_attrs.html.erb +7 -0
  53. data/spec/test_app/app/views/themes/column_cell_attrs_with_proc.html.erb +7 -0
  54. data/spec/test_app/app/views/themes/column_header_attrs.html.erb +7 -0
  55. data/spec/test_app/app/views/themes/empty_with_data.html.erb +9 -0
  56. data/spec/test_app/app/views/themes/empty_with_no_data.html.erb +9 -0
  57. data/spec/test_app/app/views/themes/no_caption.html.erb +7 -0
  58. data/spec/test_app/app/views/themes/no_column_attrs.html.erb +7 -0
  59. data/spec/test_app/config/application.rb +1 -1
  60. data/spec/test_app/config/routes.rb +2 -0
  61. data/spec/test_app/db/migrate/20111227224959_additional_columns.rb +73 -0
  62. data/spec/test_app/db/migrate/20111230203456_created_at_specific_dates.rb +11 -0
  63. data/spec/test_app/db/schema.rb +10 -3
  64. data/spec/test_app/db/test.sqlite3 +0 -0
  65. data/spec/theme/caption_spec.rb +15 -0
  66. data/spec/theme/column_spec.rb +35 -0
  67. data/spec/theme/empty_spec.rb +15 -0
  68. data/spec/utils_spec.rb +44 -4
  69. metadata +69 -58
  70. data/spec/test_app/app/views/tableficate/custom_check_box_block/_data.html.erb +0 -1
  71. data/spec/test_app/app/views/tableficate/custom_check_box_block/_header.html.erb +0 -8
  72. data/spec/test_app/app/views/tableficate/custom_check_box_block/_row.html.erb +0 -5
  73. data/spec/test_app/app/views/tableficate/custom_check_box_block/_table.html.erb +0 -36
  74. data/spec/test_app/app/views/tableficate/custom_check_box_block/filters/_check_box.html.erb +0 -7
  75. data/spec/test_app/app/views/tableficate/custom_check_box_block/filters/_input.html.erb +0 -4
  76. data/spec/test_app/app/views/tableficate/custom_check_box_block/filters/_input_range.html.erb +0 -6
  77. data/spec/test_app/app/views/tableficate/custom_check_box_block/filters/_radio.html.erb +0 -4
  78. data/spec/test_app/app/views/tableficate/custom_check_box_block/filters/_select.html.erb +0 -4
  79. data/spec/test_app/app/views/tableficate/custom_check_box_block/filters/_select_range_filter.html.erb +0 -6
  80. data/spec/test_app/app/views/tableficate/custom_radio_block/_data.html.erb +0 -1
  81. data/spec/test_app/app/views/tableficate/custom_radio_block/_header.html.erb +0 -8
  82. data/spec/test_app/app/views/tableficate/custom_radio_block/_row.html.erb +0 -5
  83. data/spec/test_app/app/views/tableficate/custom_radio_block/_table.html.erb +0 -36
  84. data/spec/test_app/app/views/tableficate/custom_radio_block/filters/_check_box.html.erb +0 -4
  85. data/spec/test_app/app/views/tableficate/custom_radio_block/filters/_input.html.erb +0 -4
  86. data/spec/test_app/app/views/tableficate/custom_radio_block/filters/_input_range.html.erb +0 -6
  87. data/spec/test_app/app/views/tableficate/custom_radio_block/filters/_radio.html.erb +0 -7
  88. data/spec/test_app/app/views/tableficate/custom_radio_block/filters/_select.html.erb +0 -4
  89. data/spec/test_app/app/views/tableficate/custom_radio_block/filters/_select_range_filter.html.erb +0 -6
  90. data/spec/test_app/public/index.html +0 -241
@@ -1 +0,0 @@
1
- <td><%= column.value(row) %></td>
@@ -1,8 +0,0 @@
1
- <th>
2
- <%= column.header %>
3
- <% table_params = (params[column.table.as] || {}) %>
4
- <% if column.show_sort? %>
5
- <%= link_to 'A', url_for(params.merge(column.table.as => table_params.merge({sort: column.name.to_s, dir: 'asc'}))) %><% if column.is_sorted?('asc') %>*<% end %>
6
- <%= link_to 'D', url_for(params.merge(column.table.as => table_params.merge({sort: column.name.to_s, dir: 'desc'}))) %><% if column.is_sorted?('desc') %>*<% end %>
7
- <% end %>
8
- </th>
@@ -1,5 +0,0 @@
1
- <tr>
2
- <% columns.each do |column| %>
3
- <%= tableficate_data_tag row, column %>
4
- <% end %>
5
- </tr>
@@ -1,36 +0,0 @@
1
- <% if table.filters.any? %>
2
- <%= form_tag '', method: :get do %>
3
- <% if params[table.as] and params[table.as][:sort] %>
4
- <%= hidden_field_tag("#{table.as}[sort]", params[table.as][:sort]) %>
5
- <% end %>
6
- <% if params[table.as] and params[table.as][:dir] %>
7
- <%= hidden_field_tag("#{table.as}[dir]", params[table.as][:dir]) %>
8
- <% end %>
9
- <% table.filters.each do |filter| %>
10
- <%= tableficate_filter_tag filter %>
11
- <% end %>
12
-
13
- <%= submit_tag('Filter') %>
14
- <% end %>
15
- <% end %>
16
-
17
- <% if defined? ::Kaminari %>
18
- <%= paginate(table.rows, param_name: "#{table.as}_page") %>
19
- <% elsif defined? ::WillPaginate %>
20
- <%= will_paginate(table.rows, param_name: "#{table.as}_page") %>
21
- <% end %>
22
-
23
- <%= content_tag(:table, table.options[:html]) do %>
24
- <thead>
25
- <tr>
26
- <% table.columns.each do |column| %>
27
- <%= tableficate_header_tag column %>
28
- <% end %>
29
- </tr>
30
- </thead>
31
- <tbody>
32
- <% table.rows.each do |row| %>
33
- <%= tableficate_row_tag row, table.columns %>
34
- <% end %>
35
- </tbody>
36
- <% end %>
@@ -1,7 +0,0 @@
1
- <div>
2
- <%= tableficate_label_tag(filter) %>
3
- <%= tableficate_check_box_tags(filter) do |choice| %>
4
- <%= label_tag("#{filter.field_name}[#{choice.value}]", choice.name) %>
5
- <%= check_box_tag("#{filter.field_name}[#{choice.value}]", choice.value, choice.checked?, choice.options.reverse_merge(name: "#{filter.field_name}[]")) %>
6
- <% end %>
7
- </div>
@@ -1,4 +0,0 @@
1
- <div>
2
- <%= tableficate_label_tag(filter) %>
3
- <%= tableficate_text_field_tag(filter) %>
4
- </div>
@@ -1,6 +0,0 @@
1
- <div>
2
- <%= tableficate_label_tag(filter.start) %>
3
- <%= tableficate_text_field_tag(filter.start) %>
4
- <%= tableficate_label_tag(filter.stop) %>
5
- <%= tableficate_text_field_tag(filter.stop) %>
6
- </div>
@@ -1,4 +0,0 @@
1
- <div>
2
- <%= tableficate_label_tag(filter) %>
3
- <%= tableficate_radio_tags(filter) %>
4
- </div>
@@ -1,4 +0,0 @@
1
- <div>
2
- <%= tableficate_label_tag(filter) %>
3
- <%= tableficate_select_tag(filter) %>
4
- </div>
@@ -1,6 +0,0 @@
1
- <div>
2
- <%= tableficate_label_tag(filter.start) %>
3
- <%= tableficate_select_tag(filter.start) %>
4
- <%= tableficate_label_tag(filter.stop) %>
5
- <%= tableficate_select_tag(filter.stop) %>
6
- </div>
@@ -1 +0,0 @@
1
- <td><%= column.value(row) %></td>
@@ -1,8 +0,0 @@
1
- <th>
2
- <%= column.header %>
3
- <% table_params = (params[column.table.as] || {}) %>
4
- <% if column.show_sort? %>
5
- <%= link_to 'A', url_for(params.merge(column.table.as => table_params.merge({sort: column.name.to_s, dir: 'asc'}))) %><% if column.is_sorted?('asc') %>*<% end %>
6
- <%= link_to 'D', url_for(params.merge(column.table.as => table_params.merge({sort: column.name.to_s, dir: 'desc'}))) %><% if column.is_sorted?('desc') %>*<% end %>
7
- <% end %>
8
- </th>
@@ -1,5 +0,0 @@
1
- <tr>
2
- <% columns.each do |column| %>
3
- <%= tableficate_data_tag row, column %>
4
- <% end %>
5
- </tr>
@@ -1,36 +0,0 @@
1
- <% if table.filters.any? %>
2
- <%= form_tag '', method: :get do %>
3
- <% if params[table.as] and params[table.as][:sort] %>
4
- <%= hidden_field_tag("#{table.as}[sort]", params[table.as][:sort]) %>
5
- <% end %>
6
- <% if params[table.as] and params[table.as][:dir] %>
7
- <%= hidden_field_tag("#{table.as}[dir]", params[table.as][:dir]) %>
8
- <% end %>
9
- <% table.filters.each do |filter| %>
10
- <%= tableficate_filter_tag filter %>
11
- <% end %>
12
-
13
- <%= submit_tag('Filter') %>
14
- <% end %>
15
- <% end %>
16
-
17
- <% if defined? ::Kaminari %>
18
- <%= paginate(table.rows, param_name: "#{table.as}_page") %>
19
- <% elsif defined? ::WillPaginate %>
20
- <%= will_paginate(table.rows, param_name: "#{table.as}_page") %>
21
- <% end %>
22
-
23
- <%= content_tag(:table, table.options[:html]) do %>
24
- <thead>
25
- <tr>
26
- <% table.columns.each do |column| %>
27
- <%= tableficate_header_tag column %>
28
- <% end %>
29
- </tr>
30
- </thead>
31
- <tbody>
32
- <% table.rows.each do |row| %>
33
- <%= tableficate_row_tag row, table.columns %>
34
- <% end %>
35
- </tbody>
36
- <% end %>
@@ -1,4 +0,0 @@
1
- <div>
2
- <%= tableficate_label_tag(filter) %>
3
- <%= tableficate_check_box_tags(filter) %>
4
- </div>
@@ -1,4 +0,0 @@
1
- <div>
2
- <%= tableficate_label_tag(filter) %>
3
- <%= tableficate_text_field_tag(filter) %>
4
- </div>
@@ -1,6 +0,0 @@
1
- <div>
2
- <%= tableficate_label_tag(filter.start) %>
3
- <%= tableficate_text_field_tag(filter.start) %>
4
- <%= tableficate_label_tag(filter.stop) %>
5
- <%= tableficate_text_field_tag(filter.stop) %>
6
- </div>
@@ -1,7 +0,0 @@
1
- <div>
2
- <%= tableficate_label_tag(filter) %>
3
- <%= tableficate_radio_tags(filter) do |choice| %>
4
- <%= label_tag("#{filter.field_name}[#{choice.value}]", choice.name) %>
5
- <%= radio_button_tag(filter.field_name, choice.value, choice.checked?, choice.options) %>
6
- <% end %>
7
- </div>
@@ -1,4 +0,0 @@
1
- <div>
2
- <%= tableficate_label_tag(filter) %>
3
- <%= tableficate_select_tag(filter) %>
4
- </div>
@@ -1,6 +0,0 @@
1
- <div>
2
- <%= tableficate_label_tag(filter.start) %>
3
- <%= tableficate_select_tag(filter.start) %>
4
- <%= tableficate_label_tag(filter.stop) %>
5
- <%= tableficate_select_tag(filter.stop) %>
6
- </div>
@@ -1,241 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <title>Ruby on Rails: Welcome aboard</title>
5
- <style type="text/css" media="screen">
6
- body {
7
- margin: 0;
8
- margin-bottom: 25px;
9
- padding: 0;
10
- background-color: #f0f0f0;
11
- font-family: "Lucida Grande", "Bitstream Vera Sans", "Verdana";
12
- font-size: 13px;
13
- color: #333;
14
- }
15
-
16
- h1 {
17
- font-size: 28px;
18
- color: #000;
19
- }
20
-
21
- a {color: #03c}
22
- a:hover {
23
- background-color: #03c;
24
- color: white;
25
- text-decoration: none;
26
- }
27
-
28
-
29
- #page {
30
- background-color: #f0f0f0;
31
- width: 750px;
32
- margin: 0;
33
- margin-left: auto;
34
- margin-right: auto;
35
- }
36
-
37
- #content {
38
- float: left;
39
- background-color: white;
40
- border: 3px solid #aaa;
41
- border-top: none;
42
- padding: 25px;
43
- width: 500px;
44
- }
45
-
46
- #sidebar {
47
- float: right;
48
- width: 175px;
49
- }
50
-
51
- #footer {
52
- clear: both;
53
- }
54
-
55
- #header, #about, #getting-started {
56
- padding-left: 75px;
57
- padding-right: 30px;
58
- }
59
-
60
-
61
- #header {
62
- background-image: url("/assets/rails.png");
63
- background-repeat: no-repeat;
64
- background-position: top left;
65
- height: 64px;
66
- }
67
- #header h1, #header h2 {margin: 0}
68
- #header h2 {
69
- color: #888;
70
- font-weight: normal;
71
- font-size: 16px;
72
- }
73
-
74
-
75
- #about h3 {
76
- margin: 0;
77
- margin-bottom: 10px;
78
- font-size: 14px;
79
- }
80
-
81
- #about-content {
82
- background-color: #ffd;
83
- border: 1px solid #fc0;
84
- margin-left: -55px;
85
- margin-right: -10px;
86
- }
87
- #about-content table {
88
- margin-top: 10px;
89
- margin-bottom: 10px;
90
- font-size: 11px;
91
- border-collapse: collapse;
92
- }
93
- #about-content td {
94
- padding: 10px;
95
- padding-top: 3px;
96
- padding-bottom: 3px;
97
- }
98
- #about-content td.name {color: #555}
99
- #about-content td.value {color: #000}
100
-
101
- #about-content ul {
102
- padding: 0;
103
- list-style-type: none;
104
- }
105
-
106
- #about-content.failure {
107
- background-color: #fcc;
108
- border: 1px solid #f00;
109
- }
110
- #about-content.failure p {
111
- margin: 0;
112
- padding: 10px;
113
- }
114
-
115
-
116
- #getting-started {
117
- border-top: 1px solid #ccc;
118
- margin-top: 25px;
119
- padding-top: 15px;
120
- }
121
- #getting-started h1 {
122
- margin: 0;
123
- font-size: 20px;
124
- }
125
- #getting-started h2 {
126
- margin: 0;
127
- font-size: 14px;
128
- font-weight: normal;
129
- color: #333;
130
- margin-bottom: 25px;
131
- }
132
- #getting-started ol {
133
- margin-left: 0;
134
- padding-left: 0;
135
- }
136
- #getting-started li {
137
- font-size: 18px;
138
- color: #888;
139
- margin-bottom: 25px;
140
- }
141
- #getting-started li h2 {
142
- margin: 0;
143
- font-weight: normal;
144
- font-size: 18px;
145
- color: #333;
146
- }
147
- #getting-started li p {
148
- color: #555;
149
- font-size: 13px;
150
- }
151
-
152
-
153
- #sidebar ul {
154
- margin-left: 0;
155
- padding-left: 0;
156
- }
157
- #sidebar ul h3 {
158
- margin-top: 25px;
159
- font-size: 16px;
160
- padding-bottom: 10px;
161
- border-bottom: 1px solid #ccc;
162
- }
163
- #sidebar li {
164
- list-style-type: none;
165
- }
166
- #sidebar ul.links li {
167
- margin-bottom: 5px;
168
- }
169
-
170
- .filename {
171
- font-style: italic;
172
- }
173
- </style>
174
- <script type="text/javascript">
175
- function about() {
176
- info = document.getElementById('about-content');
177
- if (window.XMLHttpRequest)
178
- { xhr = new XMLHttpRequest(); }
179
- else
180
- { xhr = new ActiveXObject("Microsoft.XMLHTTP"); }
181
- xhr.open("GET","rails/info/properties",false);
182
- xhr.send("");
183
- info.innerHTML = xhr.responseText;
184
- info.style.display = 'block'
185
- }
186
- </script>
187
- </head>
188
- <body>
189
- <div id="page">
190
- <div id="sidebar">
191
- <ul id="sidebar-items">
192
- <li>
193
- <h3>Browse the documentation</h3>
194
- <ul class="links">
195
- <li><a href="http://guides.rubyonrails.org/">Rails Guides</a></li>
196
- <li><a href="http://api.rubyonrails.org/">Rails API</a></li>
197
- <li><a href="http://www.ruby-doc.org/core/">Ruby core</a></li>
198
- <li><a href="http://www.ruby-doc.org/stdlib/">Ruby standard library</a></li>
199
- </ul>
200
- </li>
201
- </ul>
202
- </div>
203
-
204
- <div id="content">
205
- <div id="header">
206
- <h1>Welcome aboard</h1>
207
- <h2>You&rsquo;re riding Ruby on Rails!</h2>
208
- </div>
209
-
210
- <div id="about">
211
- <h3><a href="rails/info/properties" onclick="about(); return false">About your application&rsquo;s environment</a></h3>
212
- <div id="about-content" style="display: none"></div>
213
- </div>
214
-
215
- <div id="getting-started">
216
- <h1>Getting started</h1>
217
- <h2>Here&rsquo;s how to get rolling:</h2>
218
-
219
- <ol>
220
- <li>
221
- <h2>Use <code>rails generate</code> to create your models and controllers</h2>
222
- <p>To see all available options, run it without parameters.</p>
223
- </li>
224
-
225
- <li>
226
- <h2>Set up a default route and remove <span class="filename">public/index.html</span></h2>
227
- <p>Routes are set up in <span class="filename">config/routes.rb</span>.</p>
228
- </li>
229
-
230
- <li>
231
- <h2>Create your database</h2>
232
- <p>Run <code>rake db:create</code> to create your database. If you're not using SQLite (the default), edit <span class="filename">config/database.yml</span> with your username and password.</p>
233
- </li>
234
- </ol>
235
- </div>
236
- </div>
237
-
238
- <div id="footer">&nbsp;</div>
239
- </div>
240
- </body>
241
- </html>