<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -302,6 +302,8 @@ module Net
       else
         res.error!
       end
+    rescue Exception =&gt; e
+      warn e.message
     end
 
     def sensor(str)</diff>
      <filename>lib/stoker.rb</filename>
    </modified>
    <modified>
      <diff>@@ -2,13 +2,13 @@ module CooksHelper
   def cook_status(cook)
     case cook.status
     when &quot;Not Started&quot;
-      '&lt;span style=&quot;color:yellow&quot;&gt;Not Started&lt;/span&gt;'
+      '&lt;span class=&quot;message&quot;&gt;Not Started&lt;/span&gt;'
     when &quot;Running&quot;
-      '&lt;span style=&quot;color:green&quot;&gt;Running&lt;/span&gt;'
+      '&lt;span class=&quot;notice&quot;&gt;Running&lt;/span&gt;'
     when &quot;Finished&quot;
       '&lt;strong&gt;&lt;em&gt;Finished&lt;/em&gt;&lt;/strong&gt;'
     else
-      '&lt;span style=&quot;color:red&quot;&gt;Unknown&lt;/span&gt;'
+      '&lt;span class=&quot;warning&quot;&gt;Unknown&lt;/span&gt;'
     end
   end
 end</diff>
      <filename>web/app/helpers/cooks_helper.rb</filename>
    </modified>
    <modified>
      <diff>@@ -65,6 +65,8 @@ class Stoker &lt; ActiveRecord::Base
   def sync!
     Stoker.transaction do
 
+      Blower.update_all(&quot;sensor_id = null&quot;, &quot;sensor_id IN (#{self.sensors.collect{|s| s.id}.join(&quot;,&quot;)}) OR stoker_id = #{self.id}&quot;)
+
       self.blowers.clear
       self.sensors.clear
       
@@ -75,8 +77,8 @@ class Stoker &lt; ActiveRecord::Base
         net_stoker.blowers.each do |nb|
           if blower = Blower.find_or_create_by_serial_number(nb.serial_number)
             blower.update_attributes!(
-              :name   =&gt; nb.name,
-              :stoker =&gt; self
+              :name       =&gt; nb.name,
+              :stoker     =&gt; self
             )
           else
             raise &quot;Failed to find or create blower #{nb.serial_number}&quot;
@@ -86,12 +88,12 @@ class Stoker &lt; ActiveRecord::Base
         net_stoker.sensors.each do |ns|
           if sensor = Sensor.find_or_create_by_serial_number(ns.serial_number)
             sensor.update_attributes!(
-              :name   =&gt; ns.name,
-              :target =&gt; ns.target,
-              :alarm  =&gt; ns.alarm,
-              :low    =&gt; ns.low,
-              :high   =&gt; ns.high,
-              :stoker =&gt; self
+              :name       =&gt; ns.name,
+              :target     =&gt; ns.target,
+              :alarm      =&gt; ns.alarm,
+              :low        =&gt; ns.low,
+              :high       =&gt; ns.high,
+              :stoker     =&gt; self
             )
 
             if ns.blower_serial_number.to_s != &quot;&quot;</diff>
      <filename>web/app/models/stoker.rb</filename>
    </modified>
    <modified>
      <diff>@@ -10,12 +10,16 @@
   &lt;%= f.text_field :name %&gt;
 &lt;/p&gt;
 
-&lt;p&gt;
-  &lt;b&gt;Sensor&lt;/b&gt;&lt;br /&gt;
-  &lt;%= f.collection_select :sensor_id, Sensor.find(:all), :id, :name, {:include_blank =&gt; true} %&gt;
-&lt;/p&gt;
+&lt;% if @blower.stoker -%&gt;
+  &lt;p&gt;
+    &lt;b&gt;Sensor&lt;/b&gt;&lt;br /&gt;
+    &lt;%= f.collection_select :sensor_id, @blower.stoker.sensors.find(:all), :id, :name, {:include_blank =&gt; true} %&gt;
+  &lt;/p&gt;
+&lt;% else -%&gt;
+  &lt;p class=&quot;warning&quot;&gt;Cannot set sensor, this blower is not connected to a stoker.&lt;/p&gt;
+&lt;% end -%&gt;
 
 &lt;p&gt;
   &lt;b&gt;Stoker&lt;/b&gt;&lt;br /&gt;
-  &lt;%= f.collection_select :stoker_id, Stoker.find(:all), :id, :name %&gt;
+  &lt;%= f.collection_select :stoker_id, Stoker.find(:all), :id, :name, {:include_blank =&gt; true} %&gt;
 &lt;/p&gt;</diff>
      <filename>web/app/views/blowers/_form.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -31,10 +31,18 @@
   &lt;%= f.text_field :high %&gt;
 &lt;/p&gt;
 
-&lt;p&gt;
-  &lt;b&gt;Blower&lt;/b&gt;&lt;br /&gt;
-  &lt;%= f.collection_select :blower_id, Blower.find(:all), :id, :name, {:include_blank =&gt; true} %&gt;
-&lt;/p&gt;
+&lt;% if @sensor.stoker -%&gt;
+  &lt;% if @sensor.stoker.blowers.size &gt; 0 -%&gt;
+    &lt;p&gt;
+      &lt;b&gt;Blower&lt;/b&gt;&lt;br /&gt;
+      &lt;%= f.collection_select :blower_id, @sensor.stoker.blowers.find(:all), :id, :name, {:include_blank =&gt; true} %&gt;
+    &lt;/p&gt;
+  &lt;% else -%&gt;
+    &lt;p class=&quot;warning&quot;&gt;There are no blowers connected to this stoker.&lt;/p&gt;
+  &lt;% end -%&gt;
+&lt;% else -%&gt;
+  &lt;p class=&quot;warning&quot;&gt;Cannot set blower, this sensor is not connected to a stoker.&lt;/p&gt;
+&lt;% end -%&gt;
 
 &lt;p&gt;
   &lt;b&gt;Stoker&lt;/b&gt;&lt;br /&gt;</diff>
      <filename>web/app/views/sensors/_form.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -9,7 +9,7 @@
 #
 # It's strongly recommended to check this file into your version control system.
 
-ActiveRecord::Schema.define(:version =&gt; 20080627181229) do
+ActiveRecord::Schema.define(:version =&gt; 20080629045648) do
 
   create_table &quot;adjustments&quot;, :force =&gt; true do |t|
     t.integer  &quot;cook_id&quot;</diff>
      <filename>web/db/schema.rb</filename>
    </modified>
    <modified>
      <diff>@@ -15,6 +15,18 @@ body {
 	*/
 }
 
+.warning {
+  color: red;
+}
+
+.notice {
+  color: green;
+}
+
+.message {
+  color: darkgoldenrod;
+}
+
 #notice {
   border-top: 1px solid green;
   border-bottom: 1px solid green;</diff>
      <filename>web/public/stylesheets/application.css</filename>
    </modified>
    <modified>
      <diff>@@ -13,7 +13,7 @@ pre {
 }
 
 a { color: #000; }
-a:visited { color: #666; }
+/*a:visited { color: #666; }*/
 a:hover { color: #fff; background-color:#000; }
 
 .fieldWithErrors {</diff>
      <filename>web/public/stylesheets/scaffold.css</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>13e662b3eeb6f449c6be6cef2dd823c0ba93f6f1</id>
    </parent>
  </parents>
  <author>
    <name>Tony Buser</name>
    <email>tbuser@gmail.com</email>
  </author>
  <url>http://github.com/tbuser/stoker/commit/28f56f3f19d37d37a3dd6496589b7774294361b2</url>
  <id>28f56f3f19d37d37a3dd6496589b7774294361b2</id>
  <committed-date>2008-06-28T22:34:14-07:00</committed-date>
  <authored-date>2008-06-28T22:34:14-07:00</authored-date>
  <message>added code to more gracefully handle physical removal of sensors/blowers to prevent you from selecting something that isn't connected anymore
added code to ignore http response when changing sensor settings since the built in http server sometimes responds with invalid http headers (the internal telnet output sometimes bleeds through to the webpage)</message>
  <tree>ffcd515f8da0c93457f1cbdd495c24bd83027ebd</tree>
  <committer>
    <name>Tony Buser</name>
    <email>tbuser@gmail.com</email>
  </committer>
</commit>
