diff --git a/app/components/tasks.rb b/app/components/tasks.rb index 84e4a10..24deeb7 100644 --- a/app/components/tasks.rb +++ b/app/components/tasks.rb @@ -1,6 +1,13 @@ class Tasks < Netzke::Basepack::Grid def configure(c) super + + task_list_id = nil + if session[:selected_bike_id] + task_list_id = Bike.find_by_id(session[:selected_bike_id]).task_list.id + end + + c.header = false c.model = "Task" c.scope = lambda{ |rel| if session[:selected_bike_id] @@ -10,6 +17,24 @@ class Tasks < Netzke::Basepack::Grid rel.where(:task_list_id => 0) end } + c.strong_default_attrs = { + :task_list_id => task_list_id + } + c.columns = [ + :task, + :notes, + :done + ] + end + + def default_fields_for_forms + fields = [] + fields << { :no_binding => true, :xtype => 'displayfield', :fieldLabel => "No Bike Selected", :value => "Select a Bike First!"} + fields.concat( [ + :task, + :notes, + :done + ]) end #override with nil to remove actions diff --git a/app/models/bike.rb b/app/models/bike.rb index 9c253a1..67de6cb 100644 --- a/app/models/bike.rb +++ b/app/models/bike.rb @@ -27,10 +27,12 @@ class Bike < ActiveRecord::Base self.per_page = 15 + after_save :create_task_list + def brand self.bike_brand end - + def model self.bike_model end @@ -50,4 +52,8 @@ class Bike < ActiveRecord::Base def to_s "#{brand} - #{model} - #{style}" end + + def create_task_list + TaskList.create( item_id: self.id, item_type: self.class.to_s, name: "Safety Checklist") + end end diff --git a/app/models/task_list.rb b/app/models/task_list.rb index 66781b5..49ace63 100644 --- a/app/models/task_list.rb +++ b/app/models/task_list.rb @@ -1,10 +1,22 @@ +require 'yaml' + class TaskList < ActiveRecord::Base attr_accessible :item_id, :item_type, :name belongs_to :item, :polymorphic => true has_many :tasks + after_save :create_default_bike_tasks + + @@default_bike_tasks = YAML::load(File.open(File.join( Rails.root, "db", "defaults", "bike_tasks.yml")))["tasks"] + def to_s self.name end + + def create_default_bike_tasks + @@default_bike_tasks.each do |task| + self.tasks.create( task: task, done: false) + end + end end diff --git a/db/defaults/bike_tasks.yml b/db/defaults/bike_tasks.yml new file mode 100644 index 0000000..4588872 --- /dev/null +++ b/db/defaults/bike_tasks.yml @@ -0,0 +1,8 @@ +tasks: + - Regrease Back Wheel + - Regrease Front Wheel + - Tru wheel + - Repack bottom bracket + - Repack steering post + - Redo brake lines + - Tighten brakes