whalesong/web-world/examples/where-am-i/where-am-i.rkt

45 lines
1.5 KiB
Racket

#lang planet dyoo/whalesong
(require (planet dyoo/whalesong/web-world)
(planet dyoo/whalesong/resource))
(define-resource index.html)
(define-struct coord (lat lng))
(define-struct world (real mock))
(define (location-change world dom evt)
(make-world (make-coord (event-ref evt "latitude")
(event-ref evt "longitude"))
(world-mock world)))
(define (mock-location-change world dom evt)
(make-world (world-real world)
(make-coord (event-ref evt "latitude")
(event-ref evt "longitude"))))
(define (draw world dom)
(define v1 (if (coord? (world-real world))
(update-view-text (view-focus dom "real-location")
(format "lat=~a, lng=~a"
(coord-lat (world-real world))
(coord-lng (world-real world))))
dom))
(define v2 (if (coord? (world-mock world))
(update-view-text (view-focus v1 "mock-location")
(format "lat=~a, lng=~a"
(coord-lat (world-mock world))
(coord-lng (world-mock world))))
v1))
v2)
(big-bang (make-world 'unknown 'unknown)
(initial-view index.html)
(to-draw draw)
(on-location-change location-change)
(on-mock-location-change mock-location-change))