activeadmin_draggable 0.0.4 → 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.
- data/Gemfile +1 -1
- data/activeadmin_draggable.gemspec +0 -1
- data/app/assets/images/activeadmin_draggable/indicator.gif +0 -0
- data/app/assets/javascripts/activeadmin_draggable/activeadmin_draggable.js +8 -16
- data/app/assets/javascripts/activeadmin_draggable/jquery.table_tree.js +1 -1
- data/app/assets/javascripts/activeadmin_draggable/jquery.tablednd_0_5.js +12 -1
- data/lib/activeadmin_draggable.rb +2 -0
- data/lib/activeadmin_draggable/draggable_list_item.rb +46 -0
- data/lib/activeadmin_draggable/sortable_tree.rb +70 -0
- data/lib/activeadmin_draggable/version.rb +1 -1
- metadata +7 -18
data/Gemfile
CHANGED
Binary file
|
@@ -3,28 +3,20 @@
|
|
3
3
|
//= require activeadmin_draggable/jquery.tablednd_0_5
|
4
4
|
|
5
5
|
$(document).ready(function(){
|
6
|
-
//
|
6
|
+
//enabling and disaabling reorder mode of resources table
|
7
7
|
$('a.reorder').click(function(event) {
|
8
8
|
event.preventDefault();
|
9
|
+
var link = $(this)
|
9
10
|
var url = this.href
|
10
11
|
TableTree.toggle($('table.list'), url);
|
12
|
+
if (link.text() == link.data('on_text')){
|
13
|
+
link.text(link.data('off_text'));
|
14
|
+
} else {
|
15
|
+
link.text(link.data('on_text'));
|
16
|
+
}
|
17
|
+
|
11
18
|
return false;
|
12
19
|
});
|
13
20
|
|
14
|
-
$('#add_product_button').click(function(event) {
|
15
|
-
event.preventDefault();
|
16
|
-
$('div.modal').omniWindow() // create modal
|
17
|
-
.trigger('show'); // and show it
|
18
|
-
return false;
|
19
|
-
});
|
20
|
-
|
21
|
-
$('#search-attributes .layout-slider input').each(function(index, value) {
|
22
|
-
var sb = new SliderBar();
|
23
|
-
sb.initialize(value);
|
24
|
-
});
|
25
|
-
|
26
|
-
|
27
|
-
// calculate next matching value from given set of options
|
28
|
-
|
29
21
|
});
|
30
22
|
|
@@ -183,7 +183,7 @@ TableTree.Table.prototype = jQuery.extend(new TableTree.Base(), {
|
|
183
183
|
},
|
184
184
|
show_spinner: function(row) {
|
185
185
|
img = document.createElement('img');
|
186
|
-
img.src = '/assets/
|
186
|
+
img.src = '/assets/activeadmin_draggable/indicator.gif';
|
187
187
|
img.className = 'spinner';
|
188
188
|
$('td', row)[0].appendChild(img);
|
189
189
|
},
|
@@ -119,12 +119,23 @@ jQuery.tableDnD = {
|
|
119
119
|
return this;
|
120
120
|
},
|
121
121
|
|
122
|
+
|
123
|
+
//unbind all event from table
|
124
|
+
teardown: function(table){
|
125
|
+
var rows = table.find("tr");
|
126
|
+
var link = $('a.reorder');
|
127
|
+
$.each(rows, function(){
|
128
|
+
$(this).unbind();
|
129
|
+
$(this).css('cursor', 'default');
|
130
|
+
});
|
131
|
+
},
|
132
|
+
|
122
133
|
/** This function makes all the rows on the table draggable apart from those marked as "NoDrag" */
|
123
134
|
makeDraggable: function(table) {
|
124
135
|
var config = table.tableDnDConfig;
|
125
136
|
if (table.tableDnDConfig.dragHandle) {
|
126
137
|
// We only need to add the event to the specified cells
|
127
|
-
|
138
|
+
jQuery.tableDnD.teardown(table);
|
128
139
|
cells.each(function() {
|
129
140
|
// The cell is bound to "this"
|
130
141
|
jQuery(this).mousedown(function(ev) {
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module ActiveadminDraggable
|
2
|
+
class DraggableListItem
|
3
|
+
|
4
|
+
#method that given any resource class changes possition
|
5
|
+
#of an item according to params passed by javascript sorting action
|
6
|
+
|
7
|
+
def self.move(klass, id, left_id)
|
8
|
+
left_id = left_id.to_i
|
9
|
+
dropped_item = klass.find(id)
|
10
|
+
|
11
|
+
if left_id != 0
|
12
|
+
item_to_insert_at = klass.find(left_id)
|
13
|
+
else
|
14
|
+
item_to_insert_at = nil
|
15
|
+
end
|
16
|
+
|
17
|
+
item = DraggableListItem.new(dropped_item)
|
18
|
+
item.move_to(item_to_insert_at)
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
def initialize(dropped_item)
|
23
|
+
@dropped_item = dropped_item
|
24
|
+
end
|
25
|
+
|
26
|
+
def move_to(item_to_insert_at)
|
27
|
+
if item_to_insert_at
|
28
|
+
@item_to_insert_at = item_to_insert_at
|
29
|
+
if moving_up?
|
30
|
+
@dropped_item.insert_at(@item_to_insert_at.position)
|
31
|
+
@dropped_item.increment_position
|
32
|
+
else
|
33
|
+
@dropped_item.insert_at(@item_to_insert_at.position)
|
34
|
+
end
|
35
|
+
else
|
36
|
+
@dropped_item.move_to_top
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def moving_up?
|
43
|
+
@item_to_insert_at.position < @dropped_item.position
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
module ActiveAdmin
|
2
|
+
module Views
|
3
|
+
# An index page component, which allows both list and tree reordering
|
4
|
+
# It has full interface-wise compatibility with IndexAsTable component
|
5
|
+
# Example usage:
|
6
|
+
# index :as => :sortable_table, :tree => true
|
7
|
+
|
8
|
+
class IndexAsSortableTable < IndexAsTable
|
9
|
+
def build(page_presenter, collection)
|
10
|
+
table_options = {
|
11
|
+
|
12
|
+
:id => active_admin_config.resource_name.plural,
|
13
|
+
:sortable => false,
|
14
|
+
:class => "index_table list",
|
15
|
+
:i18n => active_admin_config.resource_class,
|
16
|
+
:paginator => false
|
17
|
+
}
|
18
|
+
|
19
|
+
if is_tree = page_presenter.options[:tree]
|
20
|
+
table_options[:class] += " tree"
|
21
|
+
end
|
22
|
+
|
23
|
+
table_for collection, table_options do |t|
|
24
|
+
table_config_block = page_presenter.block || default_table
|
25
|
+
instance_exec(t, &table_config_block)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def table_for(*args, &block)
|
30
|
+
insert_tag IndexSortableTableFor, *args, &block
|
31
|
+
end
|
32
|
+
|
33
|
+
class IndexSortableTableFor < IndexTableFor
|
34
|
+
def sortable?
|
35
|
+
false
|
36
|
+
end
|
37
|
+
|
38
|
+
protected
|
39
|
+
|
40
|
+
def build_table_body
|
41
|
+
@tbody = tbody do
|
42
|
+
# Build enough rows for our collection
|
43
|
+
@collection.each{|_| tr(:class => "level_#{_.level rescue 0}", :id => dom_id(_)) }
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
# This form helper allows us to create form for nested belongs_to association.
|
52
|
+
|
53
|
+
class FormBuilder
|
54
|
+
def has_one_nested(association, options = {}, &block)
|
55
|
+
options = { :for => association }.merge(options)
|
56
|
+
options[:class] ||= ""
|
57
|
+
options[:class] << "inputs has_one_field"
|
58
|
+
|
59
|
+
#looks dirty...but works (still better than active admin's way)
|
60
|
+
if object.new_record?
|
61
|
+
content = inputs_for_nested_attributes :for => [association, object.class.reflect_on_association(association).klass.new],
|
62
|
+
&block
|
63
|
+
form_buffers.last << content.html_safe
|
64
|
+
else
|
65
|
+
content = inputs options, &block
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activeadmin_draggable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 21
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 5
|
10
|
+
version: 0.0.5
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- "Krzysztof Bia\xC5\x82ek"
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2013-04-
|
19
|
+
date: 2013-04-30 00:00:00 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
name: bundler
|
@@ -47,20 +47,6 @@ dependencies:
|
|
47
47
|
version: "0"
|
48
48
|
type: :development
|
49
49
|
version_requirements: *id002
|
50
|
-
- !ruby/object:Gem::Dependency
|
51
|
-
name: acts_as_list
|
52
|
-
prerelease: false
|
53
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
54
|
-
none: false
|
55
|
-
requirements:
|
56
|
-
- - ">="
|
57
|
-
- !ruby/object:Gem::Version
|
58
|
-
hash: 3
|
59
|
-
segments:
|
60
|
-
- 0
|
61
|
-
version: "0"
|
62
|
-
type: :runtime
|
63
|
-
version_requirements: *id003
|
64
50
|
description: Active admin sortable add on
|
65
51
|
email:
|
66
52
|
- krzysztofbialek@gmail.com
|
@@ -77,11 +63,14 @@ files:
|
|
77
63
|
- README.md
|
78
64
|
- Rakefile
|
79
65
|
- activeadmin_draggable.gemspec
|
66
|
+
- app/assets/images/activeadmin_draggable/indicator.gif
|
80
67
|
- app/assets/javascripts/activeadmin_draggable/activeadmin_draggable.js
|
81
68
|
- app/assets/javascripts/activeadmin_draggable/jquery.table_tree.js
|
82
69
|
- app/assets/javascripts/activeadmin_draggable/jquery.tablednd_0_5.js
|
83
70
|
- lib/activeadmin_draggable.rb
|
71
|
+
- lib/activeadmin_draggable/draggable_list_item.rb
|
84
72
|
- lib/activeadmin_draggable/engine.rb
|
73
|
+
- lib/activeadmin_draggable/sortable_tree.rb
|
85
74
|
- lib/activeadmin_draggable/version.rb
|
86
75
|
homepage: ""
|
87
76
|
licenses:
|