From 0a4d31417f444066b76bd41f46214a996dfea552 Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Tue, 7 Aug 2012 14:17:15 +0200 Subject: [PATCH] Clean up build system and add demos --- .gitignore | 8 ++-- Makefile | 58 +++++++++++++++++++++------- ol-base.json => base.json | 0 build/ol3.json | 9 +++++ demos/side-by-side/index.html.in | 46 ++++++++++++++++++++++ demos/side-by-side/side-by-side.js | 35 +++++++++++++++++ demos/side-by-side/side-by-side.json | 9 +++++ ol-api.json | 9 ----- ol-skeleton.json | 9 ----- readme.md | 24 +++++++----- skeleton.html | 26 ------------- skeleton.js | 40 ------------------- 12 files changed, 163 insertions(+), 110 deletions(-) rename ol-base.json => base.json (100%) create mode 100644 build/ol3.json create mode 100644 demos/side-by-side/index.html.in create mode 100644 demos/side-by-side/side-by-side.js create mode 100644 demos/side-by-side/side-by-side.json delete mode 100644 ol-api.json delete mode 100644 ol-skeleton.json delete mode 100644 skeleton.html delete mode 100644 skeleton.js diff --git a/.gitignore b/.gitignore index 40484dfbec..a5f7db3bdb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,13 +1,15 @@ /apidoc_config/Data/ /bin/plovr*.jar /build/OpenLayers.js +/build/ol3.js +/build/ol3-compiled.js +/demos/*/*.html +/demos/*/advanced-optimizations.js +/demos/*/whitespace-only.js /doc/apidocs/ /examples/example-list.js /examples/example-list.xml /jsdoc/ -/ol.js -/ol-api.js -/ol-skeleton.js /tools/*.pyc /tools/closure-compiler.jar /webgl-debug.js diff --git a/Makefile b/Makefile index 0db51b0d31..726daeb3bd 100644 --- a/Makefile +++ b/Makefile @@ -1,35 +1,65 @@ PLOVR_JAR=bin/plovr-4b3caf2b7d84.jar SRC = $(shell find externs src/ol -name \*.js) +TARGETS = $(shell find demos -name advanced-optimizations.js -o -name whitespace-only.js) comma := , empty := space := $(empty) $(empty) .PHONY: all -all: build webgl-debug.js +all: build demos webgl-debug.js .PHONY: build -build: ol-api.js ol-skeleton.js +build: build/ol3-compiled.js -ol-api.js: $(PLOVR_JAR) $(SRC) ol-base.json ol-api.json ol.js - java -jar $(PLOVR_JAR) build $(basename $@).json >$@ +build/ol3-compiled.js: $(PLOVR_JAR) $(SRC) base.json \ + build/ol3.json build/ol3.js + java -jar $(PLOVR_JAR) build build/ol3.json >$@ @echo $@ "uncompressed:" $$(wc -c <$@) bytes @echo $@ " compressed:" $$(gzip -9 -c <$@ | wc -c) bytes -ol-skeleton.js: $(PLOVR_JAR) $(SRC) ol-base.json ol-skeleton.json skeleton.js - java -jar $(PLOVR_JAR) build $(basename $@).json >$@ +build/ol3.js: $(SRC) + ( echo "goog.require('goog.dom');" ; find src/ol -name \*.js | xargs grep -rh ^goog.provide | sort | uniq | sed -e 's/provide/require/g' ) > $@ + +.PHONY: demos +demos: demos/side-by-side + +.PHONY: demos/side-by-side +demos/side-by-side: \ + demos/side-by-side/advanced-optimizations.html \ + demos/side-by-side/advanced-optimizations.js \ + demos/side-by-side/debug.html \ + demos/side-by-side/whitespace-only.html \ + demos/side-by-side/whitespace-only.js + +demos/side-by-side/advanced-optimizations.html: demos/side-by-side/index.html.in + sed -e 's|@SRC@|advanced-optimizations.js|' $< > $@ + +demos/side-by-side/advanced-optimizations.js: $(PLOVR_JAR) $(SRC) base.json \ + demos/side-by-side/side-by-side.json demos/side-by-side/side-by-side.js + java -jar $(PLOVR_JAR) build demos/side-by-side/side-by-side.json >$@ + @echo $@ "uncompressed:" $$(wc -c <$@) bytes + @echo $@ " compressed:" $$(gzip -9 -c <$@ | wc -c) bytes + +demos/side-by-side/debug.html: demos/side-by-side/index.html.in + sed -e 's|@SRC@|http://localhost:9810/compile?id=demo-side-by-side|' $< > $@ + +demos/side-by-side/whitespace-only.html: demos/side-by-side/index.html.in + sed -e 's|@SRC@|whitespace-only.js|' $< > $@ + +# FIXME invoke plovr directly, rather than assuming that the server is running +demos/side-by-side/whitespace-only.js: $(PLOVR_JAR) $(SRC) base.json \ + demos/side-by-side/side-by-side.json demos/side-by-side/side-by-side.js + curl 'http://localhost:9810/compile?id=demo-side-by-side&mode=WHITESPACE' > $@ @echo $@ "uncompressed:" $$(wc -c <$@) bytes @echo $@ " compressed:" $$(gzip -9 -c <$@ | wc -c) bytes .PHONY: serve serve: $(PLOVR_JAR) - java -jar $(PLOVR_JAR) serve ol-api.json ol-skeleton.json - -ol.js: $(SRC) - ( find src/ol -name \*.js | xargs grep -rh ^goog.provide | sort | uniq | sed -e 's/provide/require/g' ) > $@ + java -jar $(PLOVR_JAR) serve build/ol3.json demos/*/*.json .PHONY: lint lint: - gjslint --strict --limited_doc_files=$(subst $(space),$(comma),$(shell find externs -name \*.js)) $(SRC) skeleton.js + gjslint --strict --limited_doc_files=$(subst $(space),$(comma),$(shell find externs -name \*.js)) $(SRC) $(filter-out $(TARGETS),$(shell find demos -name \*.js)) webgl-debug.js: curl https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/sdk/debug/webgl-debug.js > $@ @@ -38,9 +68,9 @@ $(PLOVR_JAR): curl http://plovr.googlecode.com/files/$(notdir $@) > $@ clean: - rm -f ol.js - rm -f ol-api.js - rm -f ol-skeleton.js + rm -f build/all.js + rm -f build/ol3.js + rm -f demos/*/compiled.js reallyclean: clean rm -f $(PLOVR_JAR) diff --git a/ol-base.json b/base.json similarity index 100% rename from ol-base.json rename to base.json diff --git a/build/ol3.json b/build/ol3.json new file mode 100644 index 0000000000..1a392513a3 --- /dev/null +++ b/build/ol3.json @@ -0,0 +1,9 @@ +{ + + "id": "ol3", + + "inherits": "../base.json", + + "inputs": "build/ol3.js" + +} diff --git a/demos/side-by-side/index.html.in b/demos/side-by-side/index.html.in new file mode 100644 index 0000000000..51827ccecd --- /dev/null +++ b/demos/side-by-side/index.html.in @@ -0,0 +1,46 @@ + + + + + ol3 side-by-side demo + + +

ol3 side-by-side demo

+ + + + + + + + + + + + +
DOMWebGL
+
+
+ + + + + + + + + + + + + +
Pan:drag, arrow keys
Zoom:double-click, shift+double-click, mouse wheel, +/- keys, shift+drag (DOM only)
Rotate:shift+drag (WebGL only)
+ + + diff --git a/demos/side-by-side/side-by-side.js b/demos/side-by-side/side-by-side.js new file mode 100644 index 0000000000..3d670e8b76 --- /dev/null +++ b/demos/side-by-side/side-by-side.js @@ -0,0 +1,35 @@ +goog.require('ol.RendererHint'); +goog.require('ol.createMap'); +goog.require('ol.layer.MapQuestOpenAerial'); +goog.require('ol.view.Attribution'); + + +var layer = new ol.layer.MapQuestOpenAerial(); + +var layers = new ol.Collection(); +layers.push(layer); + +var domMap = ol.createMap( + document.getElementById('domMap'), + {'layers': layers}, + ol.RendererHint.DOM); +domMap.setCenter(new ol.Coordinate(0, 0)); +domMap.setResolution(layer.getStore().getResolutions()[0]); + +var webglMap = ol.createMap( + document.getElementById('webglMap'), + {}, + ol.RendererHint.WEBGL); +webglMap.bindTo('center', domMap); +webglMap.bindTo('layers', domMap); +webglMap.bindTo('resolution', domMap); +webglMap.bindTo('rotation', domMap); + +var attributionView = new ol.view.Attribution(domMap); +document.getElementById('attribution').appendChild( + attributionView.getElement()); + +goog.exportSymbol('layer', layer); +goog.exportSymbol('layers', layers); +goog.exportSymbol('domMap', domMap); +goog.exportSymbol('webglMap', webglMap); diff --git a/demos/side-by-side/side-by-side.json b/demos/side-by-side/side-by-side.json new file mode 100644 index 0000000000..9b14a6766a --- /dev/null +++ b/demos/side-by-side/side-by-side.json @@ -0,0 +1,9 @@ +{ + + "id": "demo-side-by-side", + + "inherits": "../../base.json", + + "inputs": "demos/side-by-side/side-by-side.js" + +} diff --git a/ol-api.json b/ol-api.json deleted file mode 100644 index 86b6ef73cc..0000000000 --- a/ol-api.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - - "id": "ol-api", - - "inherits": "ol-base.json", - - "inputs": "ol.js" - -} diff --git a/ol-skeleton.json b/ol-skeleton.json deleted file mode 100644 index dcee805a21..0000000000 --- a/ol-skeleton.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - - "id": "ol-skeleton", - - "inherits": "ol-base.json", - - "inputs": "skeleton.js" - -} diff --git a/readme.md b/readme.md index 42a1db78d7..1895d719de 100644 --- a/readme.md +++ b/readme.md @@ -6,24 +6,30 @@ Run make: $ make -## Run the example +## Run the examples -Run the [plovr](http://plovr.com/) web server with: +Run make (as above), then explore the `demos/` directory with your web browser. + +## Run the examples in debug mode + +Run the [Plovr](http://plovr.com/) web server with: $ make serve -Then open skeleton.html in the browser (e.g. -). +Then, start a simple webserver, for example: + + $ python -mSimpleHTTPServer + +Explore the `demos/` directory through this server, for example . You can turn off compilation by appending `?mode=RAW` to the URL, for example . + +Note that appending `?mode=RAW` doesn't work with `file://` URLs, which is why you need to access the `demos/` directory though a web server. ## Run tests -Run the plovr web server (see above), then open in -your browser and select *List of tests* or *Test runner*. +Run the plovr web server (see above), then open in your browser and select *List of tests* or *Test runner*. ## Run the linter -First, install the [Closure -Linter](https://developers.google.com/closure/utilities/docs/linter_howto). -Then: +First, install the [Closure Linter](https://developers.google.com/closure/utilities/docs/linter_howto). Then: $ make lint diff --git a/skeleton.html b/skeleton.html deleted file mode 100644 index 6098f362ed..0000000000 --- a/skeleton.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - -
-
- - - diff --git a/skeleton.js b/skeleton.js deleted file mode 100644 index 153437b658..0000000000 --- a/skeleton.js +++ /dev/null @@ -1,40 +0,0 @@ -goog.require('goog.debug.Console'); -goog.require('goog.object'); -goog.require('ol.Coordinate'); -goog.require('ol.RendererHint'); -goog.require('ol.createMap'); -goog.require('ol.layer.OpenStreetMap'); - -goog.debug.Console.autoInstall(); -goog.debug.Console.instance.setCapturing(true); - -var twoMaps = true; - -var target; -var map, map1, map2; -var layer; - -target = /** @type {!HTMLDivElement} */ document.getElementById('map1'); -map = map1 = ol.createMap(target, undefined, ol.RendererHint.DOM); -layer = new ol.layer.OpenStreetMap({ - 'opacity': 0.9 -}); -map.getLayers().push(layer); - -var resolutions = layer.getStore().getResolutions(); -map1.setCenter(new ol.Coordinate(0, 0)); -map1.setResolution(resolutions[0]); - -if (twoMaps) { - target = /** @type {!HTMLDivElement} */ document.getElementById('map2'); - map2 = ol.createMap(target, undefined, ol.RendererHint.WEBGL); - map2.bindTo('center', map1); - map2.bindTo('layers', map1); - map2.bindTo('resolution', map1); - map2.bindTo('rotation', map1); -} - -goog.exportSymbol('layer', layer); -goog.exportSymbol('map', map); -goog.exportSymbol('map1', map1); -goog.exportSymbol('map2', map2);