will_filter 3.0.5 → 3.1.1
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/.gitignore +6 -0
- data/.rspec +1 -0
- data/.rvmrc +1 -0
- data/CHANGELOG.rdoc +2 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +156 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +78 -0
- data/Rakefile +68 -0
- data/app/.DS_Store +0 -0
- data/app/assets/images/.DS_Store +0 -0
- data/{public/favicon.ico → app/assets/images/will_filter/.gitkeep} +0 -0
- data/{public/will_filter/images → app/assets/images/will_filter}/buttons.png +0 -0
- data/{public/will_filter/images → app/assets/images/will_filter}/calendar.png +0 -0
- data/{public/will_filter/images → app/assets/images/will_filter}/clock.png +0 -0
- data/{public/will_filter/images → app/assets/images/will_filter}/close.gif +0 -0
- data/{public/will_filter/images → app/assets/images/will_filter}/sort_arrow_all.gif +0 -0
- data/{public/will_filter/images → app/assets/images/will_filter}/sort_bg.gif +0 -0
- data/{public/will_filter/images → app/assets/images/will_filter}/spinner.gif +0 -0
- data/{public/will_filter/javascripts/will_filter.js → app/assets/javascripts/will_filter/filter.js} +7 -7
- data/app/assets/javascripts/will_filter/filter_prototype_effects.js +38 -0
- data/app/assets/stylesheets/will_filter/actions.css.scss +27 -0
- data/app/assets/stylesheets/will_filter/buttons.css.scss +24 -0
- data/app/assets/stylesheets/will_filter/calendar.css.scss +55 -0
- data/app/assets/stylesheets/will_filter/exporter.css.scss +43 -0
- data/app/assets/stylesheets/will_filter/filter.css.scss +152 -0
- data/app/assets/stylesheets/will_filter/results.css.scss +63 -0
- data/app/controllers/{application_controller.rb → will_filter/application_controller.rb} +4 -4
- data/app/controllers/will_filter/calendar_controller.rb +1 -1
- data/app/controllers/will_filter/exporter_controller.rb +1 -1
- data/app/controllers/will_filter/filter_controller.rb +1 -7
- data/app/models/will_filter/filter.rb +12 -40
- data/app/views/.DS_Store +0 -0
- data/app/views/layouts/will_filter/application.html.erb +14 -0
- data/app/views/will_filter/.DS_Store +0 -0
- data/app/views/will_filter/calendar/.tmp__annual.html.erb.10120~ +32 -0
- data/app/views/will_filter/calendar/.tmp__annual.html.erb.2839~ +14 -0
- data/app/views/will_filter/calendar/.tmp__annual.html.erb.58862~ +14 -0
- data/app/views/will_filter/calendar/.tmp__annual.html.erb.64846~ +14 -0
- data/app/views/will_filter/calendar/.tmp__annual.html.erb.68789~ +32 -0
- data/app/views/will_filter/calendar/.tmp__annual.html.erb.93003~ +14 -0
- data/app/views/will_filter/calendar/.tmp__annual.html.erb.93827~ +32 -0
- data/app/views/will_filter/calendar/.tmp__month.html.erb.756~ +39 -0
- data/app/views/will_filter/calendar/.tmp__quarter.html.erb.69400~ +24 -0
- data/app/views/will_filter/calendar/.tmp_index.html.erb.11043~ +52 -0
- data/app/views/will_filter/calendar/.tmp_index.html.erb.33725~ +52 -0
- data/app/views/will_filter/calendar/.tmp_index.html.erb.56447~ +66 -0
- data/app/views/will_filter/calendar/.tmp_index.html.erb.85379~ +70 -0
- data/app/views/will_filter/calendar/.tmp_index.html.erb.86425~ +70 -0
- data/app/views/will_filter/calendar/.tmp_index.html.erb.95884~ +52 -0
- data/app/views/will_filter/calendar/index.html.erb +3 -3
- data/app/views/will_filter/common/.tmp__results_table.html.erb.47785~ +87 -0
- data/app/views/will_filter/common/.tmp__results_table.html.erb.88043~ +87 -0
- data/app/views/will_filter/common/.tmp__scripts.html.erb.51111~ +0 -0
- data/app/views/will_filter/common/.tmp__scripts.html.erb.6990~ +2 -0
- data/app/views/will_filter/common/.tmp__scripts.html.erb.88469~ +6 -0
- data/app/views/will_filter/common/_results_table.html.erb +6 -2
- data/app/views/will_filter/common/_scripts.html.erb +8 -2
- data/app/views/will_filter/exporter/.tmp_export.html.erb.10837~ +9 -0
- data/app/views/will_filter/exporter/.tmp_export.html.erb.1415~ +29 -0
- data/app/views/will_filter/exporter/.tmp_export.html.erb.60681~ +29 -0
- data/app/views/will_filter/exporter/.tmp_export.html.erb.61343~ +29 -0
- data/app/views/will_filter/exporter/.tmp_export_dialog.html.erb.22940~ +38 -0
- data/app/views/will_filter/exporter/.tmp_index.html.erb.13538~ +47 -0
- data/app/views/will_filter/exporter/.tmp_index.html.erb.23276~ +47 -0
- data/app/views/will_filter/exporter/.tmp_index.html.erb.28308~ +44 -0
- data/app/views/will_filter/exporter/.tmp_index.html.erb.29049~ +44 -0
- data/app/views/will_filter/exporter/index.html.erb +1 -1
- data/app/views/will_filter/filter/.tmp__condition.html.erb.24762~ +28 -0
- data/app/views/will_filter/filter/.tmp__condition.html.erb.27587~ +28 -0
- data/app/views/will_filter/filter/.tmp__condition.html.erb.45362~ +28 -0
- data/app/views/will_filter/filter/.tmp__condition.html.erb.49252~ +28 -0
- data/app/views/will_filter/filter/.tmp__condition.html.erb.58234~ +30 -0
- data/app/views/will_filter/filter/.tmp__condition.html.erb.60688~ +28 -0
- data/app/views/will_filter/filter/.tmp__condition.html.erb.66557~ +28 -0
- data/app/views/will_filter/filter/.tmp__condition.html.erb.68032~ +30 -0
- data/app/views/will_filter/filter/.tmp__condition.html.erb.73740~ +28 -0
- data/app/views/will_filter/filter/.tmp__condition.html.erb.81041~ +30 -0
- data/app/views/will_filter/filter/.tmp__condition.html.erb.98638~ +28 -0
- data/app/views/will_filter/filter/.tmp__conditions.html.erb.23216~ +50 -0
- data/app/views/will_filter/filter/.tmp__conditions.html.erb.53568~ +50 -0
- data/app/views/will_filter/filter/.tmp__conditions.html.erb.5788~ +56 -0
- data/app/views/will_filter/filter/.tmp__conditions.html.erb.79521~ +50 -0
- data/app/views/will_filter/filter/.tmp__conditions.html.erb.92102~ +56 -0
- data/app/views/will_filter/filter/.tmp__conditions.html.erb.97034~ +52 -0
- data/app/views/will_filter/filter/.tmp__container.html.erb.23178~ +30 -0
- data/app/views/will_filter/filter/.tmp__container.html.erb.25113~ +31 -0
- data/app/views/will_filter/filter/.tmp__container.html.erb.29332~ +36 -0
- data/app/views/will_filter/filter/.tmp__container.html.erb.31412~ +32 -0
- data/app/views/will_filter/filter/.tmp__container.html.erb.57958~ +32 -0
- data/app/views/will_filter/filter/.tmp__container.html.erb.80588~ +30 -0
- data/app/views/will_filter/filter/.tmp__container.html.erb.89054~ +30 -0
- data/app/views/will_filter/filter/.tmp__container.html.erb.92260~ +32 -0
- data/app/views/will_filter/filter/.tmp__container.html.erb.92798~ +36 -0
- data/app/views/will_filter/filter/.tmp__filter_conditions.html.erb.70617~ +78 -0
- data/app/views/will_filter/filter/.tmp_calendar.html.erb.30839~ +66 -0
- data/app/views/will_filter/filter/.tmp_calendar.html.erb.52766~ +66 -0
- data/app/views/will_filter/filter/.tmp_calendar.html.erb.83182~ +66 -0
- data/app/views/will_filter/filter/.tmp_export_data.html.erb.50322~ +44 -0
- data/app/views/will_filter/filter/.tmp_index.html.erb.40957~ +4 -0
- data/app/views/will_filter/filter/_condition.html.erb +5 -5
- data/app/views/will_filter/filter/_conditions.html.erb +4 -7
- data/app/views/will_filter/filter/_container.html.erb +5 -5
- data/app/views/will_filter/filter/containers/_boolean.html.erb +2 -2
- data/app/views/will_filter/filter/containers/_date.html.erb +3 -5
- data/app/views/will_filter/filter/containers/_date_range.html.erb +5 -9
- data/app/views/will_filter/filter/containers/_date_time.html.erb +3 -5
- data/app/views/will_filter/filter/containers/_date_time_range.html.erb +5 -9
- data/app/views/will_filter/filter/containers/_list.html.erb +1 -1
- data/app/views/will_filter/filter/containers/_numeric_range.html.erb +3 -3
- data/app/views/will_filter/filter/containers/_text.html.erb +2 -2
- data/app/views/will_filter/filter/index.html.erb +1 -1
- data/config/routes.rb +39 -17
- data/db/migrate/20110924023807_create_will_filter_filters.rb +15 -0
- data/lib/generators/.DS_Store +0 -0
- data/lib/generators/will_filter/templates/config.yml +0 -28
- data/lib/generators/will_filter/templates/create_will_filter_filters.rb +15 -0
- data/lib/generators/will_filter/will_filter_generator.rb +27 -4
- data/lib/tasks/will_filter_tasks.rake +1 -2
- data/lib/will_filter.rb +26 -1
- data/lib/will_filter/calendar.rb +1 -1
- data/lib/will_filter/config.rb +1 -6
- data/lib/will_filter/containers/filter_list.rb +2 -2
- data/lib/will_filter/engine.rb +23 -17
- data/lib/will_filter/{common_methods.rb → extensions/action_controller_extension.rb} +18 -20
- data/lib/will_filter/extensions/action_view_extension.rb +50 -0
- data/lib/{core_ext/active_record/base.rb → will_filter/extensions/active_record_extension.rb} +22 -17
- data/lib/{core_ext/array.rb → will_filter/extensions/array_extension.rb} +1 -1
- data/lib/{application_helper.rb → will_filter/railtie.rb} +30 -20
- data/{app/helpers/application_helper.rb → lib/will_filter/version.rb} +3 -3
- data/script/rails +6 -0
- data/spec/spec_helper.rb +27 -0
- data/test/.DS_Store +0 -0
- data/test/dummy/.DS_Store +0 -0
- data/test/dummy/.sass-cache/f9cb1ef521115be73f1c61d3d5d64f66c947af63/actions.css.scssc +0 -0
- data/test/dummy/.sass-cache/f9cb1ef521115be73f1c61d3d5d64f66c947af63/buttons.css.scssc +0 -0
- data/test/dummy/.sass-cache/f9cb1ef521115be73f1c61d3d5d64f66c947af63/calendar.css.scssc +0 -0
- data/test/dummy/.sass-cache/f9cb1ef521115be73f1c61d3d5d64f66c947af63/exporter.css.scssc +0 -0
- data/test/dummy/.sass-cache/f9cb1ef521115be73f1c61d3d5d64f66c947af63/filter.css.scssc +0 -0
- data/test/dummy/.sass-cache/f9cb1ef521115be73f1c61d3d5d64f66c947af63/results.css.scssc +0 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/.DS_Store +0 -0
- data/test/dummy/app/assets/javascripts/application.js +7 -0
- data/test/dummy/app/assets/stylesheets/application.css +7 -0
- data/test/dummy/app/assets/stylesheets/kaminari.css +10 -0
- data/test/dummy/app/controllers/advanced_controller.rb +19 -0
- data/test/dummy/app/controllers/application_controller.rb +8 -0
- data/test/dummy/app/controllers/simple_controller.rb +15 -0
- data/test/dummy/app/helpers/application_helper.rb +3 -0
- data/test/dummy/app/mailers/.gitkeep +0 -0
- data/test/dummy/app/models/.gitkeep +0 -0
- data/test/dummy/app/models/event.rb +15 -0
- data/test/dummy/app/models/event_filter.rb +41 -0
- data/test/dummy/app/models/event_user.rb +10 -0
- data/test/dummy/app/models/event_user_filter.rb +40 -0
- data/test/dummy/app/models/user.rb +42 -0
- data/test/dummy/app/models/user_filter.rb +57 -0
- data/test/dummy/app/views/advanced/event_members.html.erb +2 -0
- data/test/dummy/app/views/advanced/events.html.erb +2 -0
- data/test/dummy/app/views/advanced/users.html.erb +2 -0
- data/test/dummy/app/views/advanced/users_with_actions.html.erb +12 -0
- data/test/dummy/app/views/common/_event_members.html.erb +2 -0
- data/test/dummy/app/views/common/_events.html.erb +2 -0
- data/test/dummy/app/views/common/_menu.html.erb +23 -0
- data/test/dummy/app/views/common/_users.html.erb +2 -0
- data/test/dummy/app/views/kaminari/_first_page.html.erb +11 -0
- data/test/dummy/app/views/kaminari/_gap.html.erb +8 -0
- data/test/dummy/app/views/kaminari/_last_page.html.erb +11 -0
- data/test/dummy/app/views/kaminari/_next_page.html.erb +11 -0
- data/test/dummy/app/views/kaminari/_page.html.erb +12 -0
- data/test/dummy/app/views/kaminari/_paginator.html.erb +23 -0
- data/test/dummy/app/views/kaminari/_prev_page.html.erb +11 -0
- data/test/dummy/app/views/layouts/application.html.erb +17 -0
- data/test/dummy/app/views/simple/event_members.html.erb +2 -0
- data/test/dummy/app/views/simple/events.html.erb +3 -0
- data/test/dummy/app/views/simple/users.html.erb +2 -0
- data/test/dummy/config.ru +4 -0
- data/{config → test/dummy/config}/application.rb +11 -10
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/data/female_names.txt +26 -0
- data/test/dummy/config/data/last_names.txt +50 -0
- data/test/dummy/config/data/male_names.txt +25 -0
- data/{config → test/dummy/config}/database.yml +3 -0
- data/test/dummy/config/environment.rb +5 -0
- data/{config → test/dummy/config}/environments/development.rb +8 -4
- data/{config → test/dummy/config}/environments/production.rb +24 -13
- data/{config → test/dummy/config}/environments/test.rb +9 -5
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +10 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +13 -0
- data/test/dummy/config/will_filter/config.yml +97 -0
- data/test/dummy/db/migrate/.DS_Store +0 -0
- data/test/dummy/db/migrate/20090416182137_create_users.rb +15 -0
- data/test/dummy/db/migrate/20090418042757_create_events.rb +20 -0
- data/test/dummy/db/migrate/20090418062225_create_event_users.rb +17 -0
- data/test/dummy/db/schema.rb +61 -0
- data/test/dummy/lib/assets/.gitkeep +0 -0
- data/test/dummy/lib/tasks/dummy.rake +14 -0
- data/test/dummy/log/.gitkeep +0 -0
- data/{public → test/dummy/public}/404.html +0 -0
- data/{public → test/dummy/public}/422.html +0 -0
- data/{public → test/dummy/public}/500.html +0 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- data/test/dummy/test/functional/welcome_controller_test.rb +9 -0
- data/test/dummy/test/unit/helpers/welcome_helper_test.rb +4 -0
- data/test/fixtures/will_filter/filters.yml +11 -0
- data/test/functional/will_filter/calendar_controller_test.rb +9 -0
- data/test/functional/will_filter/exporter_controller_test.rb +9 -0
- data/test/functional/will_filter/filter_controller_test.rb +9 -0
- data/test/integration/navigation_test.rb +10 -0
- data/test/test_helper.rb +10 -0
- data/test/unit/helpers/will_filter/calendar_helper_test.rb +6 -0
- data/test/unit/helpers/will_filter/exporter_helper_test.rb +6 -0
- data/test/unit/helpers/will_filter/filter_helper_test.rb +6 -0
- data/test/unit/will_filter/filter_test.rb +9 -0
- data/test/will_filter_test.rb +7 -0
- data/will_filter.gemspec +38 -0
- metadata +446 -45
- data/app/views/layouts/application.html.erb +0 -11
- data/config/boot.rb +0 -6
- data/config/environment.rb +0 -15
- data/lib/core_ext/object.rb +0 -34
- data/lib/generators/will_filter/templates/create_will_filter_tables.rb +0 -19
- data/public/robots.txt +0 -5
- data/public/will_filter/images/results_table_th_active.gif +0 -0
- data/public/will_filter/javascripts/will_filter_prototype_effects.js +0 -15
- data/public/will_filter/stylesheets/will_filter.css +0 -168
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#--
|
|
2
|
-
# Copyright (c) 2011 Michael Berkovich
|
|
2
|
+
# Copyright (c) 2010-2011 Michael Berkovich
|
|
3
3
|
#
|
|
4
4
|
# Permission is hereby granted, free of charge, to any person obtaining
|
|
5
5
|
# a copy of this software and associated documentation files (the
|
|
@@ -21,6 +21,6 @@
|
|
|
21
21
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
22
22
|
#++
|
|
23
23
|
|
|
24
|
-
module
|
|
25
|
-
|
|
24
|
+
module WillFilter
|
|
25
|
+
VERSION = "3.1.1"
|
|
26
26
|
end
|
data/script/rails
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
#!/usr/bin/env ruby
|
|
3
|
+
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
|
|
4
|
+
|
|
5
|
+
ENGINE_PATH = File.expand_path('../..', __FILE__)
|
|
6
|
+
load File.expand_path('../../test/dummy/script/rails', __FILE__)
|
data/spec/spec_helper.rb
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# This file is copied to spec/ when you run 'rails generate rspec:install'
|
|
2
|
+
ENV["RAILS_ENV"] ||= 'test'
|
|
3
|
+
require File.expand_path("../../config/environment", __FILE__)
|
|
4
|
+
require 'rspec/rails'
|
|
5
|
+
|
|
6
|
+
# Requires supporting ruby files with custom matchers and macros, etc,
|
|
7
|
+
# in spec/support/ and its subdirectories.
|
|
8
|
+
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
|
|
9
|
+
|
|
10
|
+
RSpec.configure do |config|
|
|
11
|
+
# == Mock Framework
|
|
12
|
+
#
|
|
13
|
+
# If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
|
|
14
|
+
#
|
|
15
|
+
# config.mock_with :mocha
|
|
16
|
+
# config.mock_with :flexmock
|
|
17
|
+
# config.mock_with :rr
|
|
18
|
+
config.mock_with :rspec
|
|
19
|
+
|
|
20
|
+
# Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
|
|
21
|
+
config.fixture_path = "#{::Rails.root}/spec/fixtures"
|
|
22
|
+
|
|
23
|
+
# If you're not using ActiveRecord, or you'd prefer not to run each of your
|
|
24
|
+
# examples within a transaction, remove the following line or assign false
|
|
25
|
+
# instead of true.
|
|
26
|
+
config.use_transactional_fixtures = true
|
|
27
|
+
end
|
data/test/.DS_Store
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
data/test/dummy/Rakefile
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
#!/usr/bin/env rake
|
|
2
|
+
# Add your own tasks in files placed in lib/tasks ending in .rake,
|
|
3
|
+
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
|
|
4
|
+
|
|
5
|
+
require File.expand_path('../config/application', __FILE__)
|
|
6
|
+
|
|
7
|
+
Dummy::Application.load_tasks
|
|
Binary file
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// This is a manifest file that'll be compiled into including all the files listed below.
|
|
2
|
+
// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
|
|
3
|
+
// be included in the compiled file accessible from http://example.com/assets/application.js
|
|
4
|
+
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
|
5
|
+
// the compiled file.
|
|
6
|
+
//
|
|
7
|
+
//= require_tree .
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This is a manifest file that'll automatically include all the stylesheets available in this directory
|
|
3
|
+
* and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
|
|
4
|
+
* the top of the compiled file, but it's generally better to create a new file per style scope.
|
|
5
|
+
*= require_self
|
|
6
|
+
*= require_tree .
|
|
7
|
+
*/
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
class AdvancedController < ApplicationController
|
|
2
|
+
|
|
3
|
+
def users
|
|
4
|
+
@users = User.filter(:params => params, :filter => :user_filter)
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def users_with_actions
|
|
8
|
+
@users = User.filter(:params => params, :filter => :user_filter)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def events
|
|
12
|
+
@events = Event.filter(:params => params, :filter => :event_filter)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def event_members
|
|
16
|
+
@event_users = EventUser.filter(:params => params, :filter => :event_user_filter)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
class SimpleController < ApplicationController
|
|
2
|
+
|
|
3
|
+
def users
|
|
4
|
+
@users = User.filter(:params => params)
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def events
|
|
8
|
+
@events = Event.filter(:params => params)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def event_members
|
|
12
|
+
@event_users = EventUser.filter(:params => params)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
end
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
class Event < ActiveRecord::Base
|
|
2
|
+
belongs_to :user, :class_name => 'User', :foreign_key => :creator_id
|
|
3
|
+
has_many :event_users
|
|
4
|
+
|
|
5
|
+
def self.random
|
|
6
|
+
find(:first, :offset => rand(count - 1))
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def self.generate_random_data(count = 500)
|
|
10
|
+
0.upto(count) do |index|
|
|
11
|
+
create(:user => User.random, :name => "Event #{index}", :headline => "Event Headline #{index}", :start_time => (Time.now + rand(100).hours))
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
class EventFilter < WillFilter::Filter
|
|
2
|
+
|
|
3
|
+
def definition
|
|
4
|
+
defs = super
|
|
5
|
+
defs[:"user.first_name"] = {:is => :text, :is_not => :text, :contains => :text}
|
|
6
|
+
defs[:"user.last_name"] = {:is => :text, :is_not => :text, :contains => :text}
|
|
7
|
+
defs[:"user.sex"] = {:is => :list, :is_not => :list}
|
|
8
|
+
defs
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def value_options_for(criteria_key)
|
|
12
|
+
if criteria_key == :"user.sex"
|
|
13
|
+
return ["male", "female"]
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
return []
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def default_filters
|
|
20
|
+
[
|
|
21
|
+
["Created Today", "created_today"],
|
|
22
|
+
["Start Tomorrow", "start_tomorrow"],
|
|
23
|
+
["Created By Users With Name 'Susan'", "created_by_susans"],
|
|
24
|
+
["Created By Male Users And Start Tomorrow", "male_creators_start_tomorrow"]
|
|
25
|
+
]
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def default_filter_conditions(key)
|
|
29
|
+
return [:created_at, :is_on, Date.today] if (key == "created_today")
|
|
30
|
+
return [:start_time, :is_on, Date.today + 1.day] if (key == "start_tomorrow")
|
|
31
|
+
return [:"user.first_name", :is, "Susan"] if (key == "created_by_susans")
|
|
32
|
+
if (key == "male_creators_start_tomorrow")
|
|
33
|
+
return [[:"user.sex", :is, "male"], [:start_time, :is_on, Date.today + 1.day]]
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def inner_joins
|
|
38
|
+
[[:user, :creator_id]]
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
class EventUserFilter < WillFilter::Filter
|
|
2
|
+
|
|
3
|
+
def inner_joins
|
|
4
|
+
[[:user, :user_id], [:event, :event_id]]
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def definition
|
|
8
|
+
defs = super
|
|
9
|
+
defs[:"user.sex"] = {:is => :list, :is_not => :list}
|
|
10
|
+
defs
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def value_options_for(criteria_key)
|
|
14
|
+
if criteria_key == :"user.sex"
|
|
15
|
+
return ["male", "female"]
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
return []
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def default_filters
|
|
22
|
+
[
|
|
23
|
+
["Events That Start Tomorrow And Attended By Users With Name 'David'", "start_tomorrow_with_davids"],
|
|
24
|
+
["Events That Start Tomorrow And Attended By Laddies Who Are 18 And Older", "start_tomorrow_with_females"]
|
|
25
|
+
]
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def default_filter_conditions(key)
|
|
29
|
+
if (key == "start_tomorrow_with_davids")
|
|
30
|
+
return [[:"event.start_time", :is_on, Date.today + 1.day],
|
|
31
|
+
[:"user.first_name", :is, 'David']]
|
|
32
|
+
end
|
|
33
|
+
if (key == "start_tomorrow_with_females")
|
|
34
|
+
return [[:"event.start_time", :is_on, Date.today + 1.day],
|
|
35
|
+
[:"user.sex", :is, 'female'],
|
|
36
|
+
[:"user.birthday", :is_after, Date.today - 18.years]]
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
class User < ActiveRecord::Base
|
|
2
|
+
has_many :events
|
|
3
|
+
has_many :events_users
|
|
4
|
+
|
|
5
|
+
def name
|
|
6
|
+
"#{first_name} #{last_name}"
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def self.random
|
|
10
|
+
find(:first, :offset => rand(count - 1))
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def self.generate_random_data(count = 500)
|
|
14
|
+
male_names = File.read("config/data/male_names.txt").split("\n")
|
|
15
|
+
female_names = File.read("config/data/female_names.txt").split("\n")
|
|
16
|
+
last_names = File.read("config/data/last_names.txt").split("\n")
|
|
17
|
+
|
|
18
|
+
0.upto(count) do
|
|
19
|
+
sex = (rand(2) == 1) ? "male" : "female"
|
|
20
|
+
create(:first_name => random_name(sex, male_names, female_names), :last_name => last_names[rand(last_names.size)], :sex => sex, :birthday => random_birthday)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def self.random_name(sex, male_names, female_names)
|
|
25
|
+
return male_names[rand(male_names.size)] if sex == "male"
|
|
26
|
+
female_names[rand(female_names.size)]
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def self.random_birthday
|
|
30
|
+
birthday = nil
|
|
31
|
+
while (not birthday)
|
|
32
|
+
begin
|
|
33
|
+
birthday = Date.new(rand(59) + 1950, rand(12), rand(31))
|
|
34
|
+
rescue
|
|
35
|
+
birthday = nil
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
birthday
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
class UserFilter < WillFilter::Filter
|
|
2
|
+
|
|
3
|
+
def definition
|
|
4
|
+
defs = super
|
|
5
|
+
defs[:sex][:is] = :list
|
|
6
|
+
defs[:sex][:is_not] = :list
|
|
7
|
+
defs
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def value_options_for(criteria_key)
|
|
11
|
+
if criteria_key == :sex
|
|
12
|
+
return ["male", "female"]
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
return []
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def default_filters
|
|
19
|
+
[
|
|
20
|
+
["Male Only", "male_only"],
|
|
21
|
+
["Females With Last Name 'Adams'", "adams"],
|
|
22
|
+
["First Names Start With 'A'", "first_names_start_with_a"],
|
|
23
|
+
["Last Names Containing 'son'", "last_names_containing_son"],
|
|
24
|
+
["Susans Born Between 2000 and 2010", "susans"],
|
|
25
|
+
]
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def default_filter_conditions(key)
|
|
29
|
+
return [:sex, :is, "male"] if (key == "male_only")
|
|
30
|
+
return [[:sex, :is, "female"],[:last_name, :is, "Adams"]] if (key == "adams")
|
|
31
|
+
return [:first_name, :starts_with, "A"] if (key == "first_names_start_with_a")
|
|
32
|
+
return [:last_name, :contains, "son"] if (key == "last_names_containing_son")
|
|
33
|
+
if (key == "susans")
|
|
34
|
+
return [[:first_name, :is, "Susan"],
|
|
35
|
+
[:birthday, :is_in_the_range, [Date.new(2000,1,1), Date.new(2010,1,1)]]]
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def order_clause
|
|
40
|
+
if key == "first_names_start_with_a"
|
|
41
|
+
@order = 'first_name'
|
|
42
|
+
@order_type = 'asc'
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
if key == "last_names_containing_son"
|
|
46
|
+
@order = 'last_name'
|
|
47
|
+
@order_type = 'asc'
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
super
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def default_filter_if_empty
|
|
54
|
+
"male_only"
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<h1>Advanced Users Filter</h1>
|
|
2
|
+
<%= will_filter_tag(@users) %>
|
|
3
|
+
<%= will_filter_table_tag(@users, :columns => [
|
|
4
|
+
[:checkbox, 'users'],
|
|
5
|
+
:id,
|
|
6
|
+
[:name, lambda{|user| "#{user.first_name} #{user.last_name}"}],
|
|
7
|
+
:sex])
|
|
8
|
+
%>
|
|
9
|
+
|
|
10
|
+
<%= will_filter_actions_bar_tag(@users, [
|
|
11
|
+
['Delete Selected Languages', "alert('Deleting users...')"]
|
|
12
|
+
]) %>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<div style="width:100%; padding-top:5px; padding-bottom:5px; background-color:#eee; border-bottom:1px dotted grey; font-size: 14px;">
|
|
2
|
+
<center>
|
|
3
|
+
<table style="width:900px;" cellpadding="0" cellspacing="0">
|
|
4
|
+
<tr>
|
|
5
|
+
<td style="text-align:left;">
|
|
6
|
+
<%=link_to("Users", :action => :users) %>
|
|
7
|
+
| <%=link_to("Events", :action => :events) %>
|
|
8
|
+
| <%=link_to("Event Members", :action => :event_members) %>
|
|
9
|
+
<% unless controller.controller_name == 'simple' %>
|
|
10
|
+
| <%=link_to("Users with Actions", :action => :users_with_actions) %>
|
|
11
|
+
<% end %>
|
|
12
|
+
</td>
|
|
13
|
+
<td style="text-align:right;">
|
|
14
|
+
<% if controller.controller_name == 'simple' %>
|
|
15
|
+
<%=link_to("Switch to Advanced Mode", :controller => :advanced, :action => :users) %>
|
|
16
|
+
<% else %>
|
|
17
|
+
<%=link_to("Switch to Simple Mode", :controller => :simple, :action => :users) %>
|
|
18
|
+
<% end %>
|
|
19
|
+
</td>
|
|
20
|
+
</tr>
|
|
21
|
+
</table>
|
|
22
|
+
</center>
|
|
23
|
+
</div>
|