|
|
@@ -171,41 +171,38 @@
|
|
|
*collections (create)
|
|
|
*views (create)
|
|
|
:start (lambda ()
|
|
|
- (let ((router (new ((@ *timeliner *router))))
|
|
|
- (events (new ((@ *timeliner *collections *events)))))
|
|
|
- (setf (@ events url) (lisp (restas:genurl 'api/events)))
|
|
|
- (new ((@ *timeliner *views *map)
|
|
|
- (create :el "#map")))
|
|
|
- (new ((@ *timeliner *views *paginator)
|
|
|
- (create :el "#paginator")))
|
|
|
- (new ((@ *timeliner *views *events)
|
|
|
- (create
|
|
|
- :el "#events"
|
|
|
- :collection events)))
|
|
|
+ (var router (new ((@ *timeliner *router))))
|
|
|
+ (var events (new ((@ *timeliner *collections *events))))
|
|
|
+ (setf (@ events url) (lisp (restas:genurl 'api/events)))
|
|
|
+ (new ((@ *timeliner *views *paginator)
|
|
|
+ (create :el "#paginator")))
|
|
|
+ (new ((@ *timeliner *views *events)
|
|
|
+ (create
|
|
|
+ :el "#events"
|
|
|
+ :collection events)))
|
|
|
+ (new ((@ *timeliner *views *map)
|
|
|
+ (create :el "#map"
|
|
|
+ :collection events)))
|
|
|
|
|
|
- (chain router (on "route:home"
|
|
|
- (lambda ()
|
|
|
- (let ((today (chain (moment)
|
|
|
- (start-of "day")
|
|
|
- (format "YYYY-MM-DD"))))
|
|
|
- (chain
|
|
|
- router
|
|
|
- (navigate
|
|
|
- (concatenate 'string "day/" today)
|
|
|
- (create :trigger t :replace t)))))))
|
|
|
- (chain router (on "route:day"
|
|
|
- (lambda (day)
|
|
|
- (chain events (fetch
|
|
|
- (create
|
|
|
- :reset t
|
|
|
- :data (create
|
|
|
- :start (chain
|
|
|
- (moment day "YYYY-MM-DD")
|
|
|
- (value-of))))))
|
|
|
- (chain console (log "show day" day)))))
|
|
|
- (chain *backbone history (start (create push-state t)))
|
|
|
- (setf (@ window app) router))
|
|
|
- (chain console (log "Timeliner started")))))
|
|
|
+ (chain router (on "route:home"
|
|
|
+ (lambda ()
|
|
|
+ (var today (chain (moment)
|
|
|
+ (start-of "day")
|
|
|
+ (format "YYYY-MM-DD")))
|
|
|
+ (chain router (navigate
|
|
|
+ (concatenate 'string "day/" today)
|
|
|
+ (create :trigger t :replace t))))))
|
|
|
+ (chain router (on "route:day"
|
|
|
+ (lambda (day)
|
|
|
+ (chain events (fetch
|
|
|
+ (create
|
|
|
+ :reset t
|
|
|
+ :data (create
|
|
|
+ :start (chain
|
|
|
+ (moment day "YYYY-MM-DD")
|
|
|
+ (value-of)))))))))
|
|
|
+ (chain *backbone history (start (create push-state t)))
|
|
|
+ (setf (@ window app) router))))
|
|
|
;; * Router
|
|
|
(setf (@ *timeliner *router)
|
|
|
(chain *backbone *router
|
|
|
@@ -255,14 +252,15 @@
|
|
|
initialize (lambda ()
|
|
|
(chain this (listen-to (@ this collection) "reset" (@ this render))))
|
|
|
render-one (lambda (event)
|
|
|
- (let ((item-view (new ((@ *timeliner *views *event)
|
|
|
- (create :model event)))))
|
|
|
- (chain this $el (append (@ (chain item-view (render)) $el)))))
|
|
|
+ (var item-view (new ((@ *timeliner *views *event)
|
|
|
+ (create :model event))))
|
|
|
+ (chain this $el (append (@ (chain item-view (render)) $el))))
|
|
|
render (lambda ()
|
|
|
(chain this $el (empty))
|
|
|
(if (> (@ this collection length) 0)
|
|
|
(chain this collection (each (@ this render-one) this))
|
|
|
- (chain this $el (append (who-ps-html (:li "No data")))))
|
|
|
+ (chain this $el (append (who-ps-html (:li :class "list-group-item"
|
|
|
+ "No data")))))
|
|
|
this)))))
|
|
|
;; ** Paginator
|
|
|
(setf (@ *timeliner *views *paginator)
|
|
|
@@ -284,14 +282,41 @@
|
|
|
(extend
|
|
|
(create
|
|
|
initialize (lambda ()
|
|
|
- (let ((layer (chain *L (tile-layer "http://{s}.tiles.mapbox.com/v3/{id}/{z}/{x}/{y}.png"
|
|
|
- (create :id "enikesha.icd0bj4k" max-Zoom 18)))))
|
|
|
- (setf (@ this map)
|
|
|
- (chain *L (map (@ this el)
|
|
|
- (create
|
|
|
- :center '(59.94 30.33)
|
|
|
- :zoom 10
|
|
|
- :layers (list layer)))))))))))))
|
|
|
+ (var tile-layer
|
|
|
+ (chain *L (tile-layer "http://{s}.tiles.mapbox.com/v3/{id}/{z}/{x}/{y}.png"
|
|
|
+ (create :id "enikesha.icd0bj4k" max-Zoom 18))))
|
|
|
+ (var events-layer (chain *L (feature-group)))
|
|
|
+ (setf (@ this map)
|
|
|
+ (chain *L (map (@ this el)
|
|
|
+ (create
|
|
|
+ :center '(59.94 30.33)
|
|
|
+ :zoom 10
|
|
|
+ :layers (list tile-layer events-layer)))))
|
|
|
+ (setf (@ this events-layer) events-layer)
|
|
|
+ (chain this (listen-to (@ this collection) "reset"
|
|
|
+ (@ this render))))
|
|
|
+ render (lambda ()
|
|
|
+ (var new-layer
|
|
|
+ (chain *L (feature-group
|
|
|
+ (chain _ (filter
|
|
|
+ (chain this collection
|
|
|
+ (map
|
|
|
+ (lambda (e)
|
|
|
+ (var loc (chain e (get "loc")))
|
|
|
+ (var coords (when loc (@ loc coordinates)))
|
|
|
+ (when coords
|
|
|
+ (chain *L (circle-marker
|
|
|
+ (list (@ coords 1)
|
|
|
+ (@ coords 0))))))))
|
|
|
+ (lambda (e) e))))))
|
|
|
+ (chain this map (remove-layer (@ this events-layer)))
|
|
|
+ (when (chain new-layer (get-layers) length)
|
|
|
+ (chain this map
|
|
|
+ (add-layer new-layer)
|
|
|
+ (fit-bounds (chain new-layer (get-bounds))
|
|
|
+ (create :padding '(50 50)))))
|
|
|
+ (setf (@ this events-layer) new-layer)
|
|
|
+ this)))))))
|
|
|
|
|
|
(restas:define-route static/js ("js/:file" :content-type "application/x-javascript")
|
|
|
(cond
|