search_fu 0.0.5 → 0.0.7

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.
@@ -0,0 +1,51 @@
1
+ jQuery(function(){
2
+ add_remove_row.bindAddLink('#search_fu_add', '#hidden_search_fields', '#search_fu_tbody');
3
+ add_remove_row.bindRemoveLink('.search_fu_remove', '.search_fu_rows');
4
+
5
+ $('form#search_fu_form').live("ajax:beforeSend", function() {
6
+ $('body').css('cursor', 'wait');
7
+ });
8
+
9
+ $('form#search_fu_form').live("ajax:success", function(a, b, c, d) {
10
+ $($(this).attr("element")).html(b);
11
+ $('body').css('cursor', 'default');
12
+ });
13
+
14
+ $('#search_fu_more_link').live("click", function(a, b, c, d) {
15
+ var going_to_fetch_page, old_text;
16
+ $('body').css('cursor', 'wait');
17
+ old_text = $('#search_fu_more_link').text();
18
+ if(typeof going_to_fetch_page === 'undefined') { going_to_fetch_page = 2; }
19
+ $('#search_fu_more_link').attr("href", $('form#search_fu_form').attr('action'));
20
+ $('#search_fu_more_link').data("params", $("form#search_fu_form").serialize() + "&page=" + going_to_fetch_page);
21
+ $('#search_fu_more_link').hide();
22
+ $('#search_fu_more_span').text("Wait, fetching more result....");
23
+ $.get($(this).attr("href"), $(this).data("params"), function(data) {
24
+ $($("#search_fu_more_link").attr("element")).append(data);
25
+ $('#search_fu_more_span').text("");
26
+ going_to_fetch_page++;
27
+ $('#search_fu_more_link').show();
28
+ if(data.trim() === "") { $('#search_fu_more_span').text("No more result. Try again? ") }
29
+ $('body').css('cursor', 'default');
30
+ });
31
+ return false;
32
+ });
33
+ });
34
+
35
+ var add_remove_row = {
36
+ bindRemoveLink: function(removeLinkClass, removeElementClass) {
37
+ $(removeLinkClass).live('click',
38
+ function(){
39
+ $(this).parents(removeElementClass).remove();
40
+ return false;
41
+ });
42
+ },
43
+ bindAddLink: function(addLinkElement, addHtml, appendAt) {
44
+ $(addLinkElement).live('click', function(){
45
+ html = $(addHtml).html().replace(/_NEW_/g, 'new_' + new Date().getTime());
46
+ $(appendAt).append(html);
47
+ return false;
48
+ });
49
+ }
50
+ };
51
+
@@ -1,7 +1,7 @@
1
1
  module SearchFu
2
2
  module ControllerAdditions
3
3
  def store_search_fu_session
4
- session["#{self.class.name.sub(/Controller/, '').underscore.singularize}_search_fu"] = params[:search_fu] if params[:search_fu_commit]
4
+ session["#{self.class.name.sub(/Controller/, '').underscore.singularize}_search_fu"] = params[:search_fu] if params[:search_fu]
5
5
  end
6
6
  end
7
7
  end
@@ -62,7 +62,7 @@ module SearchFu
62
62
  end
63
63
 
64
64
  def to_arel_operator(val)
65
- {"~" => "like", "=" => "=", ">=" => ">=", "<=" => "<=", "<" => "<", ">" => ">"}[val]
65
+ {"~" => "like", "=" => "=", ">=" => ">=", "<=" => "<=", "<" => "<", ">" => ">", "<>" => "<>"}[val]
66
66
  end
67
67
 
68
68
  def create_search_fu_attribute_hash(name, hash)
@@ -1,4 +1,4 @@
1
1
  module SearchFu
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.7"
3
3
  end
4
4
 
@@ -2,31 +2,40 @@ require 'action_view'
2
2
 
3
3
  module FilterFu
4
4
  module ViewHelper
5
- def search_fu_form_for(model_klass, options={})
6
- hidden_search_fields(model_klass) +
7
- form_tag(polymorphic_path(model_klass), options.merge(method: :get, id: 'search_fu_form')) do
8
- filter_table model_klass
9
- end +
10
- javascript_tag("add_remove_row.bindAddLink('#search_fu_add', '#hidden_search_fields', '#search_fu_tbody');") +
11
- javascript_tag("add_remove_row.bindRemoveLink('.search_fu_remove', '.search_fu_rows');")
5
+
6
+ def search_fu_form_for(model_klass, element="#content", options={})
7
+ button_class = options.delete(:button_class)
8
+ button_class ||= {}
9
+ button_class[:remove] ||= ""
10
+ button_class[:add_apply] ||= ""
11
+ search_fields_blueprint(model_klass, button_class[:remove]) +
12
+ form_tag(polymorphic_path(model_klass), options.merge(method: :get, remote: true, id: 'search_fu_form', element: element)) do
13
+ filter_table model_klass, button_class
14
+ end
12
15
  end
13
16
 
14
- def filter_table(model_klass)
15
- content_tag(:table, :id => 'search_fu_table') do
16
- content_tag(:thead, filter_header, :id => "search_fu_thead") +
17
- content_tag(:tbody, render_fields(model_klass),:id => "search_fu_tbody") +
18
- content_tag(:tfoot, filter_footer, :id => "search_fu_tfoot")
17
+ def link_to_more(text, element, options={})
18
+ content_tag(:span, "", id: "search_fu_more_span") +
19
+ link_to(text, '#', options.merge(id: "search_fu_more_link", element: element))
20
+ end
21
+
22
+
23
+ def filter_table(model_klass, button_class)
24
+ content_tag(:table, id: 'search_fu_table') do
25
+ content_tag(:thead, filter_header, id: "search_fu_thead") +
26
+ content_tag(:tbody, render_fields(model_klass, button_class[:remove]), id: "search_fu_tbody") +
27
+ content_tag(:tfoot, filter_footer(button_class[:add_apply]), id: "search_fu_tfoot")
19
28
  end
20
29
  end
21
30
 
22
- def render_fields(model_klass)
31
+ def render_fields(model_klass, remove_button_class)
23
32
  html = ""
24
33
  (session["#{model_klass.name.underscore}_search_fu"] || params[:search_fu] || {}).each do |k,v|
25
34
  rand_id = (DateTime.now.to_i * rand * 100).to_i
26
- html << content_tag(:tr, :id => "search_fu_row_new_#{rand_id}", :class => "search_fu_rows") do
35
+ html << content_tag(:tr, id: "search_fu_row_new_#{rand_id}", class: "search_fu_rows") do
27
36
  content_tag(:td, select_tag("search_fu[_new_#{rand_id}][name]", options_for_select(model_klass.search_fu_names, v[:name]))) +
28
37
  content_tag(:td, text_field_tag("search_fu[_new_#{rand_id}][value]", v[:value])) +
29
- content_tag(:td, link_to("X", "#", :class => 'search_fu_remove'))
38
+ content_tag(:td, link_to("X", "#", class: "search_fu_remove #{remove_button_class}"))
30
39
  end
31
40
  end
32
41
  html.html_safe
@@ -35,23 +44,24 @@ module FilterFu
35
44
  def filter_header
36
45
  content_tag(:tr) do
37
46
  content_tag(:td, "Filter") +
38
- content_tag(:td, "Value", :colspan => 2)
47
+ content_tag(:td, "Value", colspan: 2)
39
48
  end
40
49
  end
41
50
 
42
- def filter_footer
51
+ def filter_footer(add_apply_button_class)
43
52
  content_tag(:tr) do
44
- content_tag(:td, link_to("Add", "#", :id => "search_fu_add") + submit_tag("Apply", :name => "search_fu_commit"), :colspan => 3)
53
+ content_tag(:td, link_to("Add", "#", id: "search_fu_add", class: add_apply_button_class) +
54
+ submit_tag("Apply", class: add_apply_button_class, disable_with: "Searching..."), colspan: 3)
45
55
  end
46
56
  end
47
57
 
48
- def hidden_search_fields(model_klass)
49
- content_tag(:table, :style=>"display:none") do
50
- content_tag(:tbody, :id => "hidden_search_fields") do
51
- content_tag(:tr, :id => "search_fu_row_NEW_", :class => "search_fu_rows") do
58
+ def search_fields_blueprint(model_klass, remove_button_class)
59
+ content_tag(:table, style: "display:none") do
60
+ content_tag(:tbody, id: "hidden_search_fields") do
61
+ content_tag(:tr, id: "search_fu_row_NEW_", class: "search_fu_rows") do
52
62
  content_tag(:td, select_tag("search_fu[_NEW_][name]", options_for_select(model_klass.search_fu_names))) +
53
63
  content_tag(:td, text_field_tag("search_fu[_NEW_][value]")) +
54
- content_tag(:td, link_to("X", "#", :class => 'search_fu_remove'))
64
+ content_tag(:td, link_to("X", "#", class: "search_fu_remove #{remove_button_class}"))
55
65
  end
56
66
  end
57
67
  end
metadata CHANGED
@@ -1,64 +1,60 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: search_fu
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.7
4
5
  prerelease:
5
- version: 0.0.5
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Tan Kwang How
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-06-07 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+ date: 2011-08-29 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
16
15
  name: rspec
17
- prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &82980960 !ruby/object:Gem::Requirement
19
17
  none: false
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
24
22
  type: :development
25
- version_requirements: *id001
26
- - !ruby/object:Gem::Dependency
27
- name: sqlite3-ruby
28
23
  prerelease: false
29
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *82980960
25
+ - !ruby/object:Gem::Dependency
26
+ name: sqlite3-ruby
27
+ requirement: &82980740 !ruby/object:Gem::Requirement
30
28
  none: false
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: "0"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
35
33
  type: :development
36
- version_requirements: *id002
37
- - !ruby/object:Gem::Dependency
38
- name: rails
39
34
  prerelease: false
40
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *82980740
36
+ - !ruby/object:Gem::Dependency
37
+ name: rails
38
+ requirement: &82903650 !ruby/object:Gem::Requirement
41
39
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- version: "0"
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
46
44
  type: :development
47
- version_requirements: *id003
45
+ prerelease: false
46
+ version_requirements: *82903650
48
47
  description: A ActiveRecord method to allow user specify and combine query in views
49
- email:
48
+ email:
50
49
  - tankwanghow@gmail.com
51
50
  executables: []
52
-
53
51
  extensions: []
54
-
55
52
  extra_rdoc_files: []
56
-
57
- files:
53
+ files:
58
54
  - .gitignore
59
55
  - Gemfile
60
56
  - Rakefile
61
- - javascript/add_remove_row.js
57
+ - javascript/search_fu.js
62
58
  - lib/search_fu.rb
63
59
  - lib/search_fu/controller_additions.rb
64
60
  - lib/search_fu/model_additions.rb
@@ -70,30 +66,26 @@ files:
70
66
  - spec/spec_helper.rb
71
67
  homepage: http://github.com/tankwanghow
72
68
  licenses: []
73
-
74
69
  post_install_message:
75
70
  rdoc_options: []
76
-
77
- require_paths:
71
+ require_paths:
78
72
  - lib
79
- required_ruby_version: !ruby/object:Gem::Requirement
73
+ required_ruby_version: !ruby/object:Gem::Requirement
80
74
  none: false
81
- requirements:
82
- - - ">="
83
- - !ruby/object:Gem::Version
84
- version: "0"
85
- required_rubygems_version: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ required_rubygems_version: !ruby/object:Gem::Requirement
86
80
  none: false
87
- requirements:
88
- - - ">="
89
- - !ruby/object:Gem::Version
90
- version: "0"
81
+ requirements:
82
+ - - ! '>='
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
91
85
  requirements: []
92
-
93
86
  rubyforge_project: search_fu
94
- rubygems_version: 1.8.5
87
+ rubygems_version: 1.8.10
95
88
  signing_key:
96
89
  specification_version: 3
97
90
  summary: Combine query in views
98
91
  test_files: []
99
-
@@ -1,20 +0,0 @@
1
- jQuery(function(){
2
- //app.setupAjaxCallbacks();
3
- });
4
-
5
- var add_remove_row = {
6
- bindRemoveLink: function(removeLinkClass, removeElementClass) {
7
- $(removeLinkClass).live('click',
8
- function(){
9
- $(this).parents(removeElementClass).remove();
10
- return false;
11
- });
12
- },
13
- bindAddLink: function(addLinkElement, addHtml, appendAt) {
14
- $(addLinkElement).click(function(){
15
- html = $(addHtml).html().replace(/_NEW_/g, 'new_' + new Date().getTime());
16
- $(appendAt).append(html);
17
- return false;
18
- });
19
- }
20
- };