bootbox_crud 0.1.1.7 → 0.2.0
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 +4 -4
- data/README.md +24 -9
- data/lib/bootbox_crud/version.rb +1 -1
- data/lib/templates/haml/scaffold/index.html.haml +2 -2
- data/screenshots/bbcrud.gif +0 -0
- data/test/dummy/app/views/blocks/index.html.haml +2 -2
- data/test/dummy/spec/javascripts/alert_spec.js.es6 +3 -0
- data/test/dummy/spec/javascripts/modals_spec.js.es6 +7 -0
- data/test/dummy/spec/javascripts/models_spec.js.es6 +20 -0
- data/vendor/assets/javascripts/bootbox_crud_modals.js +6 -7
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ccbdc14dcd7da2f93390a0d66070dd0dab61464a
|
4
|
+
data.tar.gz: 9bd017ce47ff303ab88fc40deffb6a3011a6231f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7e4a066583e3a4cd8956e7afb3dc69ffe18505912f96d80b6859103ffb35183f132739a24f4fe8992f12890b2e9f58b42bc2b9d8444d211e3536e7fce0eab8b5
|
7
|
+
data.tar.gz: 14e85e099a16b8a9bd7852c4c717e4ed69dd3c7bd0afdaa1a92d3b5f9675127260bfe10e03e8ae6777db56ba4f2ad19f54b92257b86e1d1956f600c0fd93d04d
|
data/README.md
CHANGED
@@ -5,6 +5,14 @@
|
|
5
5
|
|
6
6
|
Provides Rails modal CRUD scaffolding powered by bootstrap & bootbox & simple_form. Built for use with Turbolinks, jQuery and Twitter Bootstrap 3.
|
7
7
|
|
8
|
+

|
9
|
+
|
10
|
+
This is what you get after running ```rails g model Block name width:integer height:integer depth:integer``` with this gem setup in your rails application.
|
11
|
+
|
12
|
+
All modal views are using AJAX and template partials, which makes it behave faster compared to full page reloads.
|
13
|
+
|
14
|
+
Makes it easy to open up a modal for selected action and model on click by [setting](#user-content-links-to-modals) data attributes to HTML tags, no additional javascript needed.
|
15
|
+
|
8
16
|
## Initial setup
|
9
17
|
|
10
18
|
Set custom scaffolding generators in your ```config/application.rb```
|
@@ -193,24 +201,24 @@ Adding ```class='show'``` to root node with ```id='content'``` is mandatory to g
|
|
193
201
|
Making links modal enabled is done via data attributes.
|
194
202
|
|
195
203
|
data-entity='Model'
|
196
|
-
data-action='
|
204
|
+
data-action='edit'
|
197
205
|
data-id='1'
|
198
206
|
|
199
207
|
In haml:
|
200
208
|
|
201
|
-
= link_to '#', :class => 'btn btn-primary btn-sm', data: { id: @model.id, entity: 'Model', action: '
|
209
|
+
= link_to '#', :class => 'btn btn-primary btn-sm', data: { id: @model.id, entity: 'Model', action: 'edit' } do
|
202
210
|
%i.fa.fa-edit
|
203
211
|
edit
|
204
212
|
|
205
213
|
There is a global button handler searching for any DOM nodes with 'data-entity' attribute. Click events of such nodes lead to modals.
|
206
214
|
The logic is simple, clicking on a node with the above values will lead to this function invocation:
|
207
215
|
|
208
|
-
BBCrud.Model.
|
216
|
+
BBCrud.Model.edit({id: 1})
|
209
217
|
|
210
218
|
Available actions are:
|
211
219
|
|
212
|
-
*
|
213
|
-
*
|
220
|
+
* new
|
221
|
+
* edit
|
214
222
|
* show
|
215
223
|
|
216
224
|
#### Adding a new model to modals on the client side
|
@@ -229,9 +237,9 @@ Filled in for unipolars:
|
|
229
237
|
|
230
238
|
The above function invocation creates these functions:
|
231
239
|
|
232
|
-
BBCrud.Unipolar.
|
233
|
-
BBCrud.Unipolar.
|
234
|
-
BBCrud.Unipolar.show
|
240
|
+
BBCrud.Models.Unipolar.new
|
241
|
+
BBCrud.Models.Unipolar.edit
|
242
|
+
BBCrud.Models.Unipolar.show
|
235
243
|
|
236
244
|
Now you should be all set to click your data-entity links and call the functions from your scripts if needed.
|
237
245
|
|
@@ -266,7 +274,7 @@ The important detail to notice is the use of ```modals/form``` partial, which wa
|
|
266
274
|
* Make sure your form has ```remote: true``` or preferably ```remote_form_options``` with simple\_form, the layout should be the same as in the example in form section of this README
|
267
275
|
* Add create, update and destroy .js.erb files to the view directory and fill them according to this guide
|
268
276
|
* Add your model definition as a new line to models.js
|
269
|
-
* Add ```data-entity```, ```data-action``` and ```data-id``` with the right values to an element on the page and click it, or call ``BBCrud.ModelName.
|
277
|
+
* Add ```data-entity```, ```data-action``` and ```data-id``` with the right values to an element on the page and click it, or call ``BBCrud.Models.ModelName.new/edit/show()`` from your javascript to show the modal
|
270
278
|
|
271
279
|
|
272
280
|
## Custom scaffold source files
|
@@ -297,6 +305,13 @@ If you want have a peek or override some of the scaffolding templates, here is a
|
|
297
305
|
|
298
306
|
lib/templates/rails/scaffold_controller/controller.rb
|
299
307
|
|
308
|
+
# Changelog
|
309
|
+
**0.2.0** - some breaking changes
|
310
|
+
|
311
|
+
* defined model actions moved to BBCrud.Models.<ModelName>, declaring them directly on BBCrud.<ModelName> was dangerous, new models could overwrite basic functionality [Models, Modals, Alert]
|
312
|
+
* renamed actions on models to new, edit, show [previously was create, update, show]
|
313
|
+
* added a few more jasmine specs
|
314
|
+
|
300
315
|
# TODOs
|
301
316
|
|
302
317
|
* I18n support on client side
|
data/lib/bootbox_crud/version.rb
CHANGED
@@ -40,12 +40,12 @@
|
|
40
40
|
%td= <%= singular_table_name %>.<%= attribute.name %>
|
41
41
|
<% end -%>
|
42
42
|
%td
|
43
|
-
= link_to '#', :class => 'btn-sm btn-primary', data: { entity: '<%= class_name %>', action: '
|
43
|
+
= link_to '#', :class => 'btn-sm btn-primary', data: { entity: '<%= class_name %>', action: 'edit', id: (<%= singular_table_name %>.id) } do
|
44
44
|
%i.fa.fa-edit
|
45
45
|
EDIT
|
46
46
|
|
47
47
|
%hr
|
48
48
|
%p
|
49
|
-
= link_to '#', :class => 'btn btn-success', data: { entity: '<%= class_name %>', action: '
|
49
|
+
= link_to '#', :class => 'btn btn-success', data: { entity: '<%= class_name %>', action: 'new' } do
|
50
50
|
%i.fa.fa-plus
|
51
51
|
= 'New <%= human_name %>'
|
Binary file
|
@@ -27,12 +27,12 @@
|
|
27
27
|
%td= block.height
|
28
28
|
%td= block.depth
|
29
29
|
%td
|
30
|
-
= link_to '#', :class => 'btn-sm btn-primary', data: { entity: 'Block', action: '
|
30
|
+
= link_to '#', :class => 'btn-sm btn-primary', data: { entity: 'Block', action: 'edit', id: (block.id) } do
|
31
31
|
%i.fa.fa-edit
|
32
32
|
EDIT
|
33
33
|
|
34
34
|
%hr
|
35
35
|
%p
|
36
|
-
= link_to '#', :class => 'btn btn-success', data: { entity: 'Block', action: '
|
36
|
+
= link_to '#', :class => 'btn btn-success', data: { entity: 'Block', action: 'new' } do
|
37
37
|
%i.fa.fa-plus
|
38
38
|
= 'New Block'
|
@@ -1,5 +1,12 @@
|
|
1
1
|
describe("BBCrud.Modals", () => {
|
2
2
|
it("BBCrud.Modals is defined", () => {
|
3
3
|
expect(BBCrud.Modals).toBeDefined();
|
4
|
+
expect(BBCrud.Modals.create).toBeDefined();
|
5
|
+
expect(BBCrud.Modals.update).toBeDefined();
|
6
|
+
expect(BBCrud.Modals.show).toBeDefined();
|
7
|
+
expect(BBCrud.Modals.delete).toBeDefined();
|
8
|
+
expect(BBCrud.Modals.form).toBeDefined();
|
9
|
+
expect(BBCrud.Modals.other).toBeDefined();
|
10
|
+
expect(BBCrud.Modals.initBtnHandler).toBeDefined();
|
4
11
|
});
|
5
12
|
});
|
@@ -1,5 +1,25 @@
|
|
1
1
|
describe("BBCrud.Models", () => {
|
2
2
|
it("BBCrud.Models is defined", () => {
|
3
3
|
expect(BBCrud.Models).toBeDefined();
|
4
|
+
expect(BBCrud.Models.add).toBeDefined();
|
5
|
+
expect(BBCrud.Models.addAction).toBeDefined();
|
6
|
+
});
|
7
|
+
});
|
8
|
+
|
9
|
+
describe("BBCrud.Models.add", () => {
|
10
|
+
it("Creates new model object on BBCrud.Models", () => {
|
11
|
+
BBCrud.Models.add('Box', '/boxes/', 'box');
|
12
|
+
expect(BBCrud.Models.Box).toBeDefined();
|
13
|
+
expect(BBCrud.Models.Box.create).toBeDefined();
|
14
|
+
expect(BBCrud.Models.Box.update).toBeDefined();
|
15
|
+
expect(BBCrud.Models.Box.show).toBeDefined();
|
16
|
+
});
|
17
|
+
});
|
18
|
+
|
19
|
+
describe("BBCrud.Models.addAction", () => {
|
20
|
+
it("Creates a new model, if it wasn't previously defined and adds a function to it", () => {
|
21
|
+
BBCrud.Models.addAction('Sphere', '/spheres/', 'sphere', 'tessellate');
|
22
|
+
expect(BBCrud.Models.Sphere).toBeDefined();
|
23
|
+
expect(BBCrud.Models.Sphere.tessellate).toBeDefined();
|
4
24
|
});
|
5
25
|
});
|
@@ -149,7 +149,7 @@ BBCrud.Modals = (function () {
|
|
149
149
|
var args = $.extend({}, link.data());
|
150
150
|
delete args['entity'];
|
151
151
|
delete args['action'];
|
152
|
-
BBCrud[link.data('entity')][link.data('action')].call(link, args);
|
152
|
+
BBCrud.Models[link.data('entity')][link.data('action')].call(link, args);
|
153
153
|
return false;
|
154
154
|
});
|
155
155
|
}
|
@@ -161,10 +161,10 @@ BBCrud.Modals.initBtnHandler();
|
|
161
161
|
|
162
162
|
BBCrud.Models = (function () {
|
163
163
|
function defineModelActions(modelName, actions) {
|
164
|
-
if (typeof BBCrud[modelName] === 'undefined') {
|
165
|
-
BBCrud[modelName] = actions;
|
164
|
+
if (typeof BBCrud.Models[modelName] === 'undefined') {
|
165
|
+
BBCrud.Models[modelName] = actions;
|
166
166
|
} else {
|
167
|
-
$.extend(BBCrud[modelName], actions);
|
167
|
+
$.extend(BBCrud.Models[modelName], actions);
|
168
168
|
}
|
169
169
|
}
|
170
170
|
|
@@ -174,10 +174,10 @@ BBCrud.Models = (function () {
|
|
174
174
|
var baseUrl = url;
|
175
175
|
|
176
176
|
return {
|
177
|
-
|
177
|
+
new: function (data) {
|
178
178
|
BBCrud.Modals.create('Create ' + titleName, baseUrl, null, data);
|
179
179
|
},
|
180
|
-
|
180
|
+
edit: function (data) {
|
181
181
|
BBCrud.Modals.update(data.id, 'Edit ' + titleName, baseUrl, undefined, false, undefined, undefined, data);
|
182
182
|
},
|
183
183
|
show: function (data) {
|
@@ -200,7 +200,6 @@ BBCrud.Models = (function () {
|
|
200
200
|
}());
|
201
201
|
defineModelActions(modelName, action);
|
202
202
|
}
|
203
|
-
|
204
203
|
};
|
205
204
|
}());
|
206
205
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bootbox_crud
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jiri Kaipr
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-03-
|
11
|
+
date: 2016-03-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -256,6 +256,7 @@ files:
|
|
256
256
|
- lib/templates/haml/scaffold/new.html.haml
|
257
257
|
- lib/templates/haml/scaffold/show.html.haml
|
258
258
|
- lib/templates/rails/scaffold_controller/controller.rb
|
259
|
+
- screenshots/bbcrud.gif
|
259
260
|
- test/dummy/README.rdoc
|
260
261
|
- test/dummy/Rakefile
|
261
262
|
- test/dummy/app/assets/images/.keep
|