mirror of
				https://github.com/fspc/BikeShed-1.git
				synced 2025-10-31 08:55:36 -04:00 
			
		
		
		
	Still a work in progress
This commit is contained in:
		
							parent
							
								
									985451f959
								
							
						
					
					
						commit
						4ebcbca081
					
				| @ -1,12 +1,14 @@ | |||||||
| class AppTabPanel < Netzke::Basepack::TabPanel | class AppTabPanel < Netzke::Basepack::TabPanel | ||||||
|  component :bikes |  component :bikes_border | ||||||
|  component :brands_and_models_border |  component :brands_and_models_border | ||||||
|  component :users_and_profiles_border |  component :users_and_profiles_border | ||||||
|  |  component :logs | ||||||
|  |  component :bike_log_form | ||||||
| 
 | 
 | ||||||
|   def configure(c) |   def configure(c) | ||||||
|     c.active_tab = 0 |     c.active_tab = 3 | ||||||
|     c.prevent_header = true |     c.prevent_header = true | ||||||
|     c.items = [ :bikes, :brands_and_models_border, :users_and_profiles_border] |     c.items = [ :bikes_border, :brands_and_models_border, :users_and_profiles_border, :logs, :bike_log_form] | ||||||
|     super |     super | ||||||
|   end |   end | ||||||
| end | end | ||||||
|  | |||||||
							
								
								
									
										39
									
								
								app/components/bike_logs.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								app/components/bike_logs.rb
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,39 @@ | |||||||
|  | class BikeLogs < Netzke::Basepack::Grid | ||||||
|  |   def configure(c) | ||||||
|  |     super | ||||||
|  | 
 | ||||||
|  |     c.model = "ActsAsLoggable::Log" | ||||||
|  |     c.title = "Bike History" | ||||||
|  |     c.data_store = {auto_load: false} | ||||||
|  |     c.scope = lambda { |rel| puts session.inspect; rel.where(:loggable_type => 'Bike',:loggable_id => session[:selected_bike_id]);} | ||||||
|  |     c.strong_default_attrs = { | ||||||
|  |       :loggable_type => 'Bike', | ||||||
|  |       :loggable_id => session[:selected_bike_id], | ||||||
|  |       :log_action_type => 'ActsAsLoggable::BikeAction' | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     c.columns = [ | ||||||
|  |       { :name => :start_date, :format => "g:ia - D, M j - Y", :width => 165 }, | ||||||
|  |       { :name => :hours, :getter => lambda { |rec| (rec.end_date - rec.start_date)/3600 }, :sorting_scope => :sort_by_duration}, | ||||||
|  |       :description, | ||||||
|  |       { :name => :bike_action__action}, | ||||||
|  |       { :name => :created_at, :read_only => true}, | ||||||
|  |       { :name => :updated_at, :read_only => true} | ||||||
|  |     ] | ||||||
|  | 
 | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   def default_fields_for_forms | ||||||
|  |     [ | ||||||
|  |       :start_date, | ||||||
|  |       { :name => :end_date, :xtype => 'datetime', :value => Time.now.to_s }, | ||||||
|  |       :description, | ||||||
|  |       { :name => :bike_action__action} | ||||||
|  |     ] | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   #override with nil to remove actions | ||||||
|  |   def default_bbar | ||||||
|  |     [ :apply, :add_in_form, :search ] | ||||||
|  |   end | ||||||
|  | end | ||||||
							
								
								
									
										43
									
								
								app/components/bikes_border.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								app/components/bikes_border.rb
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,43 @@ | |||||||
|  | class BikesBorder < Netzke::Base | ||||||
|  |   # Remember regions collapse state and size | ||||||
|  |   include Netzke::Basepack::ItemPersistence | ||||||
|  |   component :bikes | ||||||
|  |   component :bike_logs | ||||||
|  | 
 | ||||||
|  |   def configure(c) | ||||||
|  |     super | ||||||
|  |     c.title = "Bikes" | ||||||
|  |     c.items = [ | ||||||
|  |      { netzke_component: :bikes, region: :center, split: true }, | ||||||
|  |      { netzke_component: :bike_logs, region: :south, height: 300, split: true} | ||||||
|  |     ] | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   js_configure do |c| | ||||||
|  |     c.layout = :border | ||||||
|  |     c.border = false | ||||||
|  | 
 | ||||||
|  |     # Overriding initComponent | ||||||
|  |     c.init_component = <<-JS | ||||||
|  |       function(){ | ||||||
|  |         // calling superclass's initComponent | ||||||
|  |         this.callParent(); | ||||||
|  | 
 | ||||||
|  |         // setting the 'rowclick' event | ||||||
|  |         var view = this.getComponent('bikes').getView(); | ||||||
|  |         view.on('itemclick', function(view, record){ | ||||||
|  |           // The beauty of using Ext.Direct: calling 3 endpoints in a row, which results in a single call to the server! | ||||||
|  |           this.selectBike({bike_id: record.get('id')}); | ||||||
|  |           this.getComponent('bike_logs').getStore().load(); | ||||||
|  |         }, this); | ||||||
|  |       } | ||||||
|  |     JS | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   endpoint :select_bike do |params, this| | ||||||
|  |     # store selected boss id in the session for this component's instance | ||||||
|  |     session[:selected_bike_id] = params[:bike_id] | ||||||
|  |     puts "BikeID-----------------------------" | ||||||
|  |     puts session.inspect | ||||||
|  |   end | ||||||
|  | end | ||||||
							
								
								
									
										24
									
								
								app/components/logs.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								app/components/logs.rb
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,24 @@ | |||||||
|  | class Logs < Netzke::Basepack::Grid | ||||||
|  | 
 | ||||||
|  |   def configure(c) | ||||||
|  |     super | ||||||
|  |     c.model = "ActsAsLoggable::Log" | ||||||
|  |     c.columns = [ | ||||||
|  |       :loggable_id, | ||||||
|  |       :loggable_type, | ||||||
|  |       :logger_id, | ||||||
|  |       :logger_type, | ||||||
|  |       :context, | ||||||
|  |       :start_date, | ||||||
|  |       :end_date, | ||||||
|  |       :description, | ||||||
|  |       :log_action_id, | ||||||
|  |       :log_action_type, | ||||||
|  |       :created_at, | ||||||
|  |       :updated_at, | ||||||
|  |       { :name => :s_date, :getter => lambda { |rec| rec.start_date.strftime("%b %d  '%y")}, :width => 75, :sorting_scope => :sort_by_start_date }, | ||||||
|  |       { :name => :s_time, :getter => lambda { |rec| rec.start_date.strftime("%I:%M %p")}, :width => 75 }, | ||||||
|  |       { :name => :hours, :getter => lambda { |rec| (rec.end_date - rec.start_date)/3600 }, :sorting_scope => :sort_by_duration} | ||||||
|  |     ] | ||||||
|  |   end | ||||||
|  | end | ||||||
							
								
								
									
										37
									
								
								app/components/user_logs.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								app/components/user_logs.rb
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,37 @@ | |||||||
|  | class UserLogs < Netzke::Basepack::Grid | ||||||
|  |   def configure(c) | ||||||
|  |     super | ||||||
|  | 
 | ||||||
|  |     c.model = "ActsAsLoggable::Log" | ||||||
|  |     c.title = "User History" | ||||||
|  |     c.data_store = {auto_load: false} | ||||||
|  |     c.scope = lambda { |rel| puts session.inspect; rel.where(:loggable_type => 'User',:loggable_id => session[:selected_user_id]);} | ||||||
|  |     c.strong_default_attrs = { | ||||||
|  |       :loggable_type => 'User', | ||||||
|  |       :loggable_id => session[:selected_user_id], | ||||||
|  |       :log_action_type => 'ActsAsLoggable::UserAction' | ||||||
|  |     } | ||||||
|  |     c.columns = [ | ||||||
|  |       { :name => :start_date, :format => "g:ia - D, M j - Y", :width => 165 }, | ||||||
|  |       { :name => :hours, :getter => lambda { |rec| (rec.end_date - rec.start_date)/3600 }, :sorting_scope => :sort_by_duration}, | ||||||
|  |       :description, | ||||||
|  |       { :name => :user_action__action }, | ||||||
|  |       :created_at, | ||||||
|  |       :updated_at | ||||||
|  |     ] | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   def default_fields_for_forms | ||||||
|  |     [ | ||||||
|  |       :start_date, | ||||||
|  |       :end_date, | ||||||
|  |       :description, | ||||||
|  |       { :name => :user_action__action} | ||||||
|  |     ] | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   #override with nil to remove actions | ||||||
|  |   def default_bbar | ||||||
|  |     [ :apply, :add_in_form, :search ] | ||||||
|  |   end | ||||||
|  | end | ||||||
| @ -2,6 +2,7 @@ class UserProfiles < Netzke::Basepack::Grid | |||||||
|   def configure(c) |   def configure(c) | ||||||
|     super |     super | ||||||
|     c.model = "UserProfile" |     c.model = "UserProfile" | ||||||
|  |     c.title = "User Profiles" | ||||||
|     c.data_store = {auto_load: false} |     c.data_store = {auto_load: false} | ||||||
|     c.scope = lambda { |rel| puts session.inspect; rel.where(:user_id => session[:selected_user_id]);} |     c.scope = lambda { |rel| puts session.inspect; rel.where(:user_id => session[:selected_user_id]);} | ||||||
|     c.columns = [ |     c.columns = [ | ||||||
|  | |||||||
| @ -3,12 +3,15 @@ class UsersAndProfilesBorder < Netzke::Base | |||||||
|   include Netzke::Basepack::ItemPersistence |   include Netzke::Basepack::ItemPersistence | ||||||
|   component :users |   component :users | ||||||
|   component :user_profiles |   component :user_profiles | ||||||
|  |   component :user_logs | ||||||
|  | 
 | ||||||
|   def configure(c) |   def configure(c) | ||||||
|     super |     super | ||||||
|     c.title = "Users/Profiles" |     c.title = "Users/Profiles" | ||||||
|     c.items = [ |     c.items = [ | ||||||
|      { netzke_component: :users, region: :center, split: true }, |      { netzke_component: :users, region: :center, width: 300, split: true }, | ||||||
|      { netzke_component: :user_profiles, region: :south, height: 300, split: true} |     { netzke_component: :user_profiles, region: :south, height: 150, split: true}, | ||||||
|  |      { netzke_component: :user_logs, region: :east, split: true} | ||||||
|     ] |     ] | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
| @ -28,6 +31,7 @@ class UsersAndProfilesBorder < Netzke::Base | |||||||
|           // The beauty of using Ext.Direct: calling 3 endpoints in a row, which results in a single call to the server! |           // The beauty of using Ext.Direct: calling 3 endpoints in a row, which results in a single call to the server! | ||||||
|           this.selectUser({user_id: record.get('id')}); |           this.selectUser({user_id: record.get('id')}); | ||||||
|           this.getComponent('user_profiles').getStore().load(); |           this.getComponent('user_profiles').getStore().load(); | ||||||
|  |           this.getComponent('user_logs').getStore().load(); | ||||||
|         }, this); |         }, this); | ||||||
|       } |       } | ||||||
|     JS |     JS | ||||||
|  | |||||||
| @ -1,7 +1,6 @@ | |||||||
| class ActsAsLoggable::BikeAction < ActiveRecord::Base | class ActsAsLoggable::BikeAction < ActiveRecord::Base | ||||||
|   attr_accessible :action |   attr_accessible :action | ||||||
|    |   has_many :logs | ||||||
|   belongs_to :bike |  | ||||||
| 
 | 
 | ||||||
|   def to_s |   def to_s | ||||||
|     self.action |     self.action | ||||||
|  | |||||||
| @ -2,7 +2,7 @@ | |||||||
| class ActsAsLoggable::LogAction < ActiveRecord::Base | class ActsAsLoggable::LogAction < ActiveRecord::Base | ||||||
|   attr_accessible :action |   attr_accessible :action | ||||||
|    |    | ||||||
|   belongs_to :log |   has_many :logs | ||||||
| 
 | 
 | ||||||
|   def to_s |   def to_s | ||||||
|     self.action |     self.action | ||||||
|  | |||||||
| @ -1,9 +1,10 @@ | |||||||
| class ActsAsLoggable::UserAction < ActiveRecord::Base | class ActsAsLoggable::UserAction < ActiveRecord::Base | ||||||
|   attr_accessible :action |   attr_accessible :action | ||||||
|    |    | ||||||
|   belongs_to :bike |   has_many :logs | ||||||
| 
 | 
 | ||||||
|   def to_s |   def to_s | ||||||
|     self.action |     self.action | ||||||
|   end |   end | ||||||
| end | end | ||||||
|  | 
 | ||||||
|  | |||||||
| @ -10,7 +10,7 @@ class ActsAsLoggableMigration < ActiveRecord::Migration | |||||||
|       t.datetime "end_date", :null => false |       t.datetime "end_date", :null => false | ||||||
| 
 | 
 | ||||||
|       t.text :description, :default => "" |       t.text :description, :default => "" | ||||||
|       t.integer :action_id, :default => 0 |       t.references :log_action, :polymorphic => true | ||||||
| 
 | 
 | ||||||
|       t.timestamps |       t.timestamps | ||||||
|     end |     end | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user