   {:value {:keys [:app/mapstate]}
    :action (fn [] (swap! state assoc :app/mapstate new-mapstate))})
 
+(defmethod mutate 'app/update-station-info
+  [{:keys [state]} _ {:keys [new-station-info]}]
+  {;; :remote true
+   :value {:keys [:app/station-info]}
+   :action (fn [] (swap! state assoc :app/station-info new-station-info))})
+
 (defmulti read om/dispatch)
 
 (defmethod read :app/title

    {:line-id 25})
  static om/IQuery
  (query [this]
    '[:app/title :loading? :app/mapstate :app/lines
      (:app/stations {:line-id ?line-id})
      ])
  Object
  (componentWillMount [this]
    (.log js/console "will-mount"))

      (let [[lng lat] geometry
            marker (leaflet/create-marker lat lng :radius 6 :fillColor "#0000ff" :fillOpacity 1.0 :weight 1)]
        (doto marker
          ;; (.bindPopup (str "<b>" line-name "</b><br>" station-name))
          (.on "click" (fn [e] (let [new-station-info (map->StationInfo {:id id
                                                                         :name station-name
                                                                         :line-info
                                                                         (list
                                                                          (map->StationLineInfo {:station-id id
                                                                                                 :line-id line-name
                                                                                                 :kilotei 10}))
                                                                         })]
                                 (om/transact! this `[(app/update-station-info {:new-station-info ~new-station-info})]))))
          (.on "mouseover" (fn [e] (.setStyle marker (clj->js {:fillColor "#ff0000"}))))
          (.on "mouseout" (fn [e] (.setStyle marker (clj->js {:fillColor "#0000ff"}))))
          (.addTo stations-layer))))))
