├── .gitmodules ├── .gitignore ├── docs └── index.md ├── flot ├── examples │ ├── .DS_Store │ ├── background.png │ ├── navigate │ │ ├── arrow-up.gif │ │ ├── arrow-down.gif │ │ ├── arrow-left.gif │ │ ├── arrow-right.gif │ │ └── index.html │ ├── ajax │ │ ├── data-eu-gdp-growth-1.json │ │ ├── data-eu-gdp-growth-2.json │ │ ├── data-eu-gdp-growth-3.json │ │ ├── data-eu-gdp-growth-4.json │ │ ├── data-usa-gdp-growth.json │ │ ├── data-japan-gdp-growth.json │ │ ├── data-eu-gdp-growth-5.json │ │ └── data-eu-gdp-growth.json │ ├── axes-time-zones │ │ ├── tz │ │ │ ├── southamerica │ │ │ ├── factory │ │ │ ├── yearistype.sh │ │ │ ├── pacificnew │ │ │ ├── systemv │ │ │ ├── etcetera │ │ │ ├── leapseconds │ │ │ └── backward │ │ └── index.html │ ├── image │ │ ├── hs-2004-27-a-large-web.jpg │ │ └── index.html │ ├── shared │ │ └── jquery-ui │ │ │ └── jquery-ui.min.css │ ├── categories │ │ └── index.html │ ├── basic-usage │ │ └── index.html │ ├── examples.css │ ├── threshold │ │ └── index.html │ ├── symbols │ │ └── index.html │ ├── series-types │ │ └── index.html │ ├── basic-options │ │ └── index.html │ ├── resize │ │ └── index.html │ ├── annotating │ │ └── index.html │ ├── stacking │ │ └── index.html │ ├── axes-interacting │ │ └── index.html │ ├── realtime │ │ └── index.html │ ├── interacting │ │ └── index.html │ ├── index.html │ ├── tracking │ │ └── index.html │ ├── zooming │ │ └── index.html │ └── series-errorbars │ │ └── index.html ├── Makefile ├── LICENSE.txt ├── jquery.flot.symbol.min.js ├── jquery.flot.threshold.min.js ├── jquery.flot.crosshair.min.js ├── jquery.flot.fillbetween.min.js ├── jquery.flot.resize.min.js ├── jquery.flot.stack.min.js ├── jquery.flot.categories.min.js ├── jquery.flot.image.min.js ├── jquery.flot.symbol.js ├── jquery.colorhelpers.min.js ├── FAQ.md ├── jquery.flot.resize.js ├── CONTRIBUTING.md ├── jquery.flot.canvas.min.js └── README.md ├── matrix ├── images │ ├── bg_hr.png │ ├── search.png │ ├── arrow-left.png │ ├── arrow-right.png │ ├── blacktocat.png │ ├── icon_download.png │ ├── sprite_download.png │ ├── multimodal.svg │ └── modes.svg ├── resource │ ├── matrix_pin_end.png │ └── matrix_pin_start.png ├── css │ ├── mapzen-common.css │ ├── leaflet.label.css │ └── classic.css └── js │ ├── MIT-LICENCE.txt │ ├── LICENSE.txt │ └── matrix.js ├── routing ├── images │ ├── bike.png │ ├── drive.png │ ├── list.png │ ├── route.png │ ├── walk.png │ ├── bike-01.png │ ├── cancel.png │ ├── ic_pin.png │ ├── layers.png │ ├── Valhalla.png │ ├── layers-2x.png │ ├── ic_pin-icon.png │ ├── marker-icon.png │ ├── markers-soft.png │ ├── ic_pin_active.png │ ├── marker-icon-2x.png │ ├── marker-icon@2x.png │ ├── marker-shadow.png │ ├── markers-matte.png │ ├── markers-plain.png │ ├── markers-shadow.png │ ├── markers-soft@2x.png │ ├── turnbyturnlogo.png │ ├── ic_pin_active_end.png │ ├── markers-matte@2x.png │ ├── markers-shadow@2x.png │ ├── ic_car_start_pressed.png │ ├── ic_pin_active_start.png │ ├── ic_walk_start_normal.png │ └── ic_walk_start_pressed.png ├── resource │ ├── cal.gif │ ├── dot.png │ ├── bike.png │ ├── drive.png │ ├── hide.png │ ├── list.png │ ├── show.png │ ├── walk.png │ ├── blue_dot.png │ ├── cancel.png │ ├── via_dot.png │ ├── destmarker.png │ ├── dest_red_dot.png │ ├── destmarker@2x.png │ ├── start_green_dot.gif │ ├── startmarker@2x.png │ └── scene.yaml ├── map_style │ ├── zinc-basemap.yaml │ └── refill-style.yaml ├── README.md ├── conf │ └── environment.conf ├── css │ ├── elevation.css │ └── valhalla.css └── js │ └── lrm │ ├── L.Routing.Control.js │ └── L.Routing.Line.js ├── elevation ├── conf │ └── environment.conf ├── css │ ├── mapzen-common.css │ └── elevation.css └── index.html ├── points ├── points.css ├── index.html └── points.js ├── map_matching ├── conf │ └── env.conf ├── css │ ├── mapzen-common.css │ ├── leaflet.label.css │ └── classic.css └── js │ ├── MIT-LICENCE.txt │ └── LICENSE.txt ├── optimized_route ├── conf │ └── env.conf ├── css │ ├── mapzen-common.css │ ├── leaflet.label.css │ └── classic.css └── js │ ├── MIT-LICENCE.txt │ └── LICENSE.txt ├── isochrone ├── styles.css ├── index.html └── main.js ├── polyline └── decode.js ├── locate └── style.css ├── LICENSE.md ├── README.md └── expansion └── index.html /.gitmodules: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .project 2 | .settings 3 | .DS_Store 4 | .DS_Store? 5 | -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | TODO: describe each demo 2 | ------------------------ 3 | -------------------------------------------------------------------------------- /flot/examples/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/flot/examples/.DS_Store -------------------------------------------------------------------------------- /matrix/images/bg_hr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/matrix/images/bg_hr.png -------------------------------------------------------------------------------- /matrix/images/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/matrix/images/search.png -------------------------------------------------------------------------------- /routing/images/bike.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/images/bike.png -------------------------------------------------------------------------------- /routing/images/drive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/images/drive.png -------------------------------------------------------------------------------- /routing/images/list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/images/list.png -------------------------------------------------------------------------------- /routing/images/route.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/images/route.png -------------------------------------------------------------------------------- /routing/images/walk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/images/walk.png -------------------------------------------------------------------------------- /routing/resource/cal.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/resource/cal.gif -------------------------------------------------------------------------------- /routing/resource/dot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/resource/dot.png -------------------------------------------------------------------------------- /routing/images/bike-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/images/bike-01.png -------------------------------------------------------------------------------- /routing/images/cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/images/cancel.png -------------------------------------------------------------------------------- /routing/images/ic_pin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/images/ic_pin.png -------------------------------------------------------------------------------- /routing/images/layers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/images/layers.png -------------------------------------------------------------------------------- /routing/resource/bike.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/resource/bike.png -------------------------------------------------------------------------------- /routing/resource/drive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/resource/drive.png -------------------------------------------------------------------------------- /routing/resource/hide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/resource/hide.png -------------------------------------------------------------------------------- /routing/resource/list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/resource/list.png -------------------------------------------------------------------------------- /routing/resource/show.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/resource/show.png -------------------------------------------------------------------------------- /routing/resource/walk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/resource/walk.png -------------------------------------------------------------------------------- /flot/examples/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/flot/examples/background.png -------------------------------------------------------------------------------- /matrix/images/arrow-left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/matrix/images/arrow-left.png -------------------------------------------------------------------------------- /matrix/images/arrow-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/matrix/images/arrow-right.png -------------------------------------------------------------------------------- /matrix/images/blacktocat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/matrix/images/blacktocat.png -------------------------------------------------------------------------------- /routing/images/Valhalla.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/images/Valhalla.png -------------------------------------------------------------------------------- /routing/images/layers-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/images/layers-2x.png -------------------------------------------------------------------------------- /routing/resource/blue_dot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/resource/blue_dot.png -------------------------------------------------------------------------------- /routing/resource/cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/resource/cancel.png -------------------------------------------------------------------------------- /routing/resource/via_dot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/resource/via_dot.png -------------------------------------------------------------------------------- /matrix/images/icon_download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/matrix/images/icon_download.png -------------------------------------------------------------------------------- /routing/images/ic_pin-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/images/ic_pin-icon.png -------------------------------------------------------------------------------- /routing/images/marker-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/images/marker-icon.png -------------------------------------------------------------------------------- /routing/images/markers-soft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/images/markers-soft.png -------------------------------------------------------------------------------- /routing/resource/destmarker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/resource/destmarker.png -------------------------------------------------------------------------------- /matrix/images/sprite_download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/matrix/images/sprite_download.png -------------------------------------------------------------------------------- /matrix/resource/matrix_pin_end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/matrix/resource/matrix_pin_end.png -------------------------------------------------------------------------------- /routing/images/ic_pin_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/images/ic_pin_active.png -------------------------------------------------------------------------------- /routing/images/marker-icon-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/images/marker-icon-2x.png -------------------------------------------------------------------------------- /routing/images/marker-icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/images/marker-icon@2x.png -------------------------------------------------------------------------------- /routing/images/marker-shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/images/marker-shadow.png -------------------------------------------------------------------------------- /routing/images/markers-matte.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/images/markers-matte.png -------------------------------------------------------------------------------- /routing/images/markers-plain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/images/markers-plain.png -------------------------------------------------------------------------------- /routing/images/markers-shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/images/markers-shadow.png -------------------------------------------------------------------------------- /routing/images/markers-soft@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/images/markers-soft@2x.png -------------------------------------------------------------------------------- /routing/images/turnbyturnlogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/images/turnbyturnlogo.png -------------------------------------------------------------------------------- /routing/resource/dest_red_dot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/resource/dest_red_dot.png -------------------------------------------------------------------------------- /routing/resource/destmarker@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/resource/destmarker@2x.png -------------------------------------------------------------------------------- /flot/examples/navigate/arrow-up.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/flot/examples/navigate/arrow-up.gif -------------------------------------------------------------------------------- /matrix/resource/matrix_pin_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/matrix/resource/matrix_pin_start.png -------------------------------------------------------------------------------- /routing/images/ic_pin_active_end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/images/ic_pin_active_end.png -------------------------------------------------------------------------------- /routing/images/markers-matte@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/images/markers-matte@2x.png -------------------------------------------------------------------------------- /routing/images/markers-shadow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/images/markers-shadow@2x.png -------------------------------------------------------------------------------- /routing/resource/start_green_dot.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/resource/start_green_dot.gif -------------------------------------------------------------------------------- /routing/resource/startmarker@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/resource/startmarker@2x.png -------------------------------------------------------------------------------- /flot/examples/navigate/arrow-down.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/flot/examples/navigate/arrow-down.gif -------------------------------------------------------------------------------- /flot/examples/navigate/arrow-left.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/flot/examples/navigate/arrow-left.gif -------------------------------------------------------------------------------- /flot/examples/navigate/arrow-right.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/flot/examples/navigate/arrow-right.gif -------------------------------------------------------------------------------- /routing/images/ic_car_start_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/images/ic_car_start_pressed.png -------------------------------------------------------------------------------- /routing/images/ic_pin_active_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/images/ic_pin_active_start.png -------------------------------------------------------------------------------- /routing/images/ic_walk_start_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/images/ic_walk_start_normal.png -------------------------------------------------------------------------------- /flot/examples/ajax/data-eu-gdp-growth-1.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Europe (EU27)", 3 | "data": [[1999, 3.0], [2000, 3.9]] 4 | } 5 | -------------------------------------------------------------------------------- /routing/images/ic_walk_start_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/routing/images/ic_walk_start_pressed.png -------------------------------------------------------------------------------- /flot/examples/axes-time-zones/tz/southamerica: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/flot/examples/axes-time-zones/tz/southamerica -------------------------------------------------------------------------------- /flot/examples/image/hs-2004-27-a-large-web.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/valhalla/demos/HEAD/flot/examples/image/hs-2004-27-a-large-web.jpg -------------------------------------------------------------------------------- /flot/examples/ajax/data-eu-gdp-growth-2.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Europe (EU27)", 3 | "data": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2]] 4 | } 5 | -------------------------------------------------------------------------------- /routing/map_style/zinc-basemap.yaml: -------------------------------------------------------------------------------- 1 | import: https://mapzen.com/carto/zinc-style/zinc-style.yaml 2 | 3 | global: 4 | sdk_mapzen_api_key: vector-tiles-HqUVidw 5 | -------------------------------------------------------------------------------- /elevation/conf/environment.conf: -------------------------------------------------------------------------------- 1 | var server = { 2 | local: "http://localhost:8002/", 3 | prod:"https://valhalla1.openstreetmap.de/" 4 | } 5 | 6 | var prodToken = "" 7 | -------------------------------------------------------------------------------- /flot/examples/ajax/data-eu-gdp-growth-3.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Europe (EU27)", 3 | "data": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5]] 4 | } 5 | -------------------------------------------------------------------------------- /points/points.css: -------------------------------------------------------------------------------- 1 | #map { 2 | height: 650px; 3 | } 4 | 5 | span.rematch { 6 | background-color: #ddd; 7 | } 8 | 9 | span.active { 10 | background-color: #f00; 11 | } 12 | -------------------------------------------------------------------------------- /routing/map_style/refill-style.yaml: -------------------------------------------------------------------------------- 1 | import: https://mapzen.com/carto/refill-style/6/refill-style.yaml 2 | 3 | global: 4 | sdk_transit_overlay: true, 5 | sdk_mapzen_api_key: vector-tiles-HqUVidw -------------------------------------------------------------------------------- /flot/examples/ajax/data-eu-gdp-growth-4.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Europe (EU27)", 3 | "data": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5], [2005, 2.0], [2006, 3.1]] 4 | } 5 | -------------------------------------------------------------------------------- /flot/examples/ajax/data-usa-gdp-growth.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "USA", 3 | "data": [[1999, 4.4], [2000, 3.7], [2001, 0.8], [2002, 1.6], [2003, 2.5], [2004, 3.6], [2005, 2.9], [2006, 2.8], [2007, 2.0], [2008, 1.1]] 4 | } 5 | -------------------------------------------------------------------------------- /flot/examples/ajax/data-japan-gdp-growth.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Japan", 3 | "data": [[1999, -0.1], [2000, 2.9], [2001, 0.2], [2002, 0.3], [2003, 1.4], [2004, 2.7], [2005, 1.9], [2006, 2.0], [2007, 2.3], [2008, -0.7]] 4 | } 5 | -------------------------------------------------------------------------------- /flot/examples/ajax/data-eu-gdp-growth-5.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Europe (EU27)", 3 | "data": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5], [2005, 2.0], [2006, 3.1], [2007, 2.9], [2008, 0.9]] 4 | } 5 | -------------------------------------------------------------------------------- /flot/examples/ajax/data-eu-gdp-growth.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Europe (EU27)", 3 | "data": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5], [2005, 2.0], [2006, 3.1], [2007, 2.9], [2008, 0.9]] 4 | } 5 | -------------------------------------------------------------------------------- /routing/README.md: -------------------------------------------------------------------------------- 1 | Leaflet Routing Machine / Valhalla by Mapzen 2 | ================================ 3 | 4 | Extends [Leaflet Routing Machine](https://github.com/perliedman/leaflet-routing-machine) with support for [Mapzen's open source routing engine Valhalla](https://github.com/valhalla) 5 | 6 | Work in process -------------------------------------------------------------------------------- /map_matching/conf/env.conf: -------------------------------------------------------------------------------- 1 | var server = { 2 | local: "http://localhost:8002/trace_attributes", 3 | dev: "https://valhalla1.openstreetmap.de/trace_attributes", 4 | prod:"https://valhalla1.openstreetmap.de/trace_attributes" 5 | } 6 | var accessToken = { 7 | local: "", 8 | dev: "", 9 | prod:"" 10 | } 11 | -------------------------------------------------------------------------------- /routing/conf/environment.conf: -------------------------------------------------------------------------------- 1 | var server = { 2 | local: "http://localhost:8002/", 3 | prod:"https://valhalla1.openstreetmap.de/" 4 | } 5 | 6 | var heightServer = { 7 | local: "http://localhost:8002/", 8 | prod:"https://valhalla1.openstreetmap.de/" 9 | } 10 | 11 | //Add your own tokens for testing 12 | var prodToken = "" 13 | -------------------------------------------------------------------------------- /flot/Makefile: -------------------------------------------------------------------------------- 1 | # Makefile for generating minified files 2 | 3 | .PHONY: all 4 | 5 | # we cheat and process all .js files instead of an exhaustive list 6 | all: $(patsubst %.js,%.min.js,$(filter-out %.min.js,$(wildcard *.js))) 7 | 8 | %.min.js: %.js 9 | yui-compressor $< -o $@ 10 | 11 | test: 12 | ./node_modules/.bin/jshint *jquery.flot.js 13 | -------------------------------------------------------------------------------- /flot/examples/axes-time-zones/tz/factory: -------------------------------------------------------------------------------- 1 | #
 2 | # This file is in the public domain, so clarified as of
 3 | # 2009-05-17 by Arthur David Olson.
 4 | 
 5 | # For companies who don't want to put time zone specification in
 6 | # their installation procedures.  When users run date, they'll get the message.
 7 | # Also useful for the "comp.sources" version.
 8 | 
 9 | # Zone	NAME	GMTOFF	RULES	FORMAT
10 | Zone	Factory	0	- "Local time zone must be set--see zic manual page"
11 | 


--------------------------------------------------------------------------------
/optimized_route/conf/env.conf:
--------------------------------------------------------------------------------
 1 | var server = {
 2 |   local: "http://localhost:8002/",
 3 |   dev:   "https://valhalla1.openstreetmap.de/",
 4 |   prod:  "https://valhalla1.openstreetmap.de/"
 5 | }
 6 | var accessToken = {
 7 |   local: "",
 8 |   dev: "",
 9 |   prod: ""
10 | }
11 | var locateServer = {
12 |   local: "http://localhost:8002/",
13 |   dev:   "https://valhalla1.openstreetmap.de/",
14 |   prod:  "https://valhalla1.openstreetmap.de/"
15 | }
16 | var locateToken = {
17 |   local: "",
18 |   dev:   "",
19 |   prod:  ""
20 | }
21 | 


--------------------------------------------------------------------------------
/isochrone/styles.css:
--------------------------------------------------------------------------------
 1 | body {
 2 |   width: 100%;
 3 |   height: 100vh;
 4 |   padding: 0;
 5 |   margin: 0;
 6 |   font-family: sans-serif;
 7 | }
 8 | 
 9 | .container {
10 |   display: flex;
11 |   flex-direction: row;
12 |   height: 100%;
13 |   width: 100%;
14 | }
15 | 
16 | #map-container {
17 |   height: 100%;
18 |   width: 75%;
19 | }
20 | 
21 | #map {
22 |   height: 100%;
23 |   width: 100%;
24 | }
25 | 
26 | #sidebar {
27 |   height: 100%;
28 |   flex-grow: 1;
29 |   padding: 10px;
30 |   text-align: center;
31 | }
32 | 
33 | form {
34 |   display: block;
35 |   text-align: left;
36 | }
37 | 
38 | label {
39 |   display: block;
40 |   margin-top: 10px;
41 | }


--------------------------------------------------------------------------------
/matrix/css/mapzen-common.css:
--------------------------------------------------------------------------------
 1 | /* button styles */
 2 | 
 3 | .btn {
 4 |   border-radius: 0;
 5 |   border-width: 1px;
 6 |   text-transform: uppercase;
 7 |   font-weight: 600;
 8 |   padding: 10px 16px;
 9 | }
10 | 
11 | 
12 | .btn-mapzen {
13 |   border-color: #d4645c;;
14 |   background-color: #d4645c;;
15 |   color: #fff;
16 |   text-shadow: none;
17 | }
18 | 
19 | .btn-mapzen:hover, .btn-mapzen:focus {
20 |   border-color: #993434;
21 |   background-color: #993434;
22 |   color: #fff;
23 | }
24 | 
25 | .btn-transparent {
26 |   background: transparent;
27 |   border-color:  #444;;
28 |   color:  #444;;
29 | }
30 | 
31 | .btn-transparent:hover, .btn-transparent:focus {
32 |   background-color: #e5e5e5;
33 |   border-color:  #444;;
34 |   color:  #444;;
35 | }


--------------------------------------------------------------------------------
/map_matching/css/mapzen-common.css:
--------------------------------------------------------------------------------
 1 | /* button styles */
 2 | 
 3 | .btn {
 4 |   border-radius: 0;
 5 |   border-width: 1px;
 6 |   text-transform: uppercase;
 7 |   font-weight: 600;
 8 |   padding: 10px 16px;
 9 | }
10 | 
11 | 
12 | .btn-mapzen {
13 |   border-color: #d4645c;;
14 |   background-color: #d4645c;;
15 |   color: #fff;
16 |   text-shadow: none;
17 | }
18 | 
19 | .btn-mapzen:hover, .btn-mapzen:focus {
20 |   border-color: #993434;
21 |   background-color: #993434;
22 |   color: #fff;
23 | }
24 | 
25 | .btn-transparent {
26 |   background: transparent;
27 |   border-color:  #444;;
28 |   color:  #444;;
29 | }
30 | 
31 | .btn-transparent:hover, .btn-transparent:focus {
32 |   background-color: #e5e5e5;
33 |   border-color:  #444;;
34 |   color:  #444;;
35 | }


--------------------------------------------------------------------------------
/optimized_route/css/mapzen-common.css:
--------------------------------------------------------------------------------
 1 | /* button styles */
 2 | 
 3 | .btn {
 4 |   border-radius: 0;
 5 |   border-width: 1px;
 6 |   text-transform: uppercase;
 7 |   font-weight: 600;
 8 |   padding: 10px 16px;
 9 | }
10 | 
11 | 
12 | .btn-mapzen {
13 |   border-color: #d4645c;;
14 |   background-color: #d4645c;;
15 |   color: #fff;
16 |   text-shadow: none;
17 | }
18 | 
19 | .btn-mapzen:hover, .btn-mapzen:focus {
20 |   border-color: #993434;
21 |   background-color: #993434;
22 |   color: #fff;
23 | }
24 | 
25 | .btn-transparent {
26 |   background: transparent;
27 |   border-color:  #444;;
28 |   color:  #444;;
29 | }
30 | 
31 | .btn-transparent:hover, .btn-transparent:focus {
32 |   background-color: #e5e5e5;
33 |   border-color:  #444;;
34 |   color:  #444;;
35 | }


--------------------------------------------------------------------------------
/elevation/css/mapzen-common.css:
--------------------------------------------------------------------------------
 1 | /* button styles */
 2 | 
 3 | button:focus {
 4 |   outline: 0;
 5 | }
 6 | 
 7 | .btn {
 8 |   border-radius: 0;
 9 |   border-width: 1px;
10 |   text-transform: uppercase;
11 |   font-weight: 600;
12 |   padding: 10px 16px;
13 | }
14 | 
15 | 
16 | .btn-mapzen {
17 |   border-color: #d4645c;;
18 |   background-color: #d4645c;;
19 |   color: #fff;
20 |   text-shadow: none;
21 | }
22 | 
23 | .btn-mapzen:hover, .btn-mapzen:focus {
24 |   border-color: #993434;
25 |   background-color: #993434;
26 |   color: #fff;
27 | }
28 | 
29 | .btn-transparent {
30 |   background: transparent;
31 |   border-color:  #444;;
32 |   color:  #444;;
33 | }
34 | 
35 | .btn-transparent:hover, .btn-transparent:focus {
36 |   background-color: #e5e5e5;
37 |   border-color:  #444;;
38 |   color:  #444;;
39 | }


--------------------------------------------------------------------------------
/flot/examples/axes-time-zones/tz/yearistype.sh:
--------------------------------------------------------------------------------
 1 | #! /bin/sh
 2 | 
 3 | : 'This file is in the public domain, so clarified as of'
 4 | : '2006-07-17 by Arthur David Olson.'
 5 | 
 6 | case $#-$1 in
 7 | 	2-|2-0*|2-*[!0-9]*)
 8 | 		echo "$0: wild year - $1" >&2
 9 | 		exit 1 ;;
10 | esac
11 | 
12 | case $#-$2 in
13 | 	2-even)
14 | 		case $1 in
15 | 			*[24680])			exit 0 ;;
16 | 			*)				exit 1 ;;
17 | 		esac ;;
18 | 	2-nonpres|2-nonuspres)
19 | 		case $1 in
20 | 			*[02468][048]|*[13579][26])	exit 1 ;;
21 | 			*)				exit 0 ;;
22 | 		esac ;;
23 | 	2-odd)
24 | 		case $1 in
25 | 			*[13579])			exit 0 ;;
26 | 			*)				exit 1 ;;
27 | 		esac ;;
28 | 	2-uspres)
29 | 		case $1 in
30 | 			*[02468][048]|*[13579][26])	exit 0 ;;
31 | 			*)				exit 1 ;;
32 | 		esac ;;
33 | 	2-*)
34 | 		echo "$0: wild type - $2" >&2 ;;
35 | esac
36 | 
37 | echo "$0: usage is $0 year even|odd|uspres|nonpres|nonuspres" >&2
38 | exit 1
39 | 


--------------------------------------------------------------------------------
/points/index.html:
--------------------------------------------------------------------------------
 1 | 
 2 |   
 3 |     A utility to show points from a bunch of text
 4 |     
 5 |     
 6 |     
 7 |     
 8 |   
 9 |   
10 |     
11 |

Paste some text in the box below and click "Submit". Any text submitted which contains "PointLL(lat, lng)" will have a marker on the map below. Hovering over a marker will highlight the coordinates in the text.

12 |
13 |
14 |
15 | 16 |
17 | 18 |
19 |
20 |
21 |

22 |
23 |
24 | 25 | 26 | -------------------------------------------------------------------------------- /polyline/decode.js: -------------------------------------------------------------------------------- 1 | //decode an encoded string 2 | function decode(encoded, mul) { 3 | //precision 4 | var inv = 1.0 / mul; 5 | var decoded = []; 6 | var previous = [0,0]; 7 | var i = 0; 8 | //for each byte 9 | while(i < encoded.length) { 10 | //for each coord (lat, lon) 11 | var ll = [0,0] 12 | for(var j = 0; j < 2; j++) { 13 | var shift = 0; 14 | var byte = 0x20; 15 | //keep decoding bytes until you have this coord 16 | while(byte >= 0x20) { 17 | byte = encoded.charCodeAt(i++) - 63; 18 | ll[j] |= (byte & 0x1f) << shift; 19 | shift += 5; 20 | } 21 | //add previous offset to get final value and remember for next one 22 | ll[j] = previous[j] + (ll[j] & 1 ? ~(ll[j] >> 1) : (ll[j] >> 1)); 23 | previous[j] = ll[j]; 24 | } 25 | //scale by precision and chop off long coords also flip the positions so 26 | //its the far more standard lon,lat instead of lat,lon 27 | decoded.push([ll[1] * inv,ll[0] * inv]); 28 | } 29 | //hand back the list of coordinates 30 | return decoded; 31 | }; 32 | -------------------------------------------------------------------------------- /matrix/js/MIT-LICENCE.txt: -------------------------------------------------------------------------------- 1 | Copyright 2012 Jacob Toye 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /map_matching/js/MIT-LICENCE.txt: -------------------------------------------------------------------------------- 1 | Copyright 2012 Jacob Toye 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /optimized_route/js/MIT-LICENCE.txt: -------------------------------------------------------------------------------- 1 | Copyright 2012 Jacob Toye 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /flot/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2007-2014 IOLA and Ole Laursen 2 | 3 | Permission is hereby granted, free of charge, to any person 4 | obtaining a copy of this software and associated documentation 5 | files (the "Software"), to deal in the Software without 6 | restriction, including without limitation the rights to use, 7 | copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the 9 | Software is furnished to do so, subject to the following 10 | conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 17 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 19 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 20 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 21 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /locate/style.css: -------------------------------------------------------------------------------- 1 | html { 2 | width: 100%; 3 | height: 100%; 4 | } 5 | 6 | body { 7 | font: 13px/1.5 "Helvetica Neue", Helvetica, Arial, sans-serif; 8 | width: 100%; 9 | height: 100%; 10 | color: #383a3a; 11 | min-height: 600px; 12 | padding: 0; 13 | margin: 0; 14 | } 15 | 16 | #container { 17 | height: 100%; 18 | margin: 0; 19 | padding: 0; 20 | display: flex; 21 | flex-direction: row; 22 | flex-wrap: wrap; 23 | width: 100%; 24 | } 25 | 26 | #map-container { 27 | height: 100%; 28 | flex-grow: 1; 29 | } 30 | 31 | #map { 32 | width: 100%; 33 | height: 100%; 34 | } 35 | 36 | #sidebar { 37 | height: 100%; 38 | padding: 10px; 39 | overflow: scroll; 40 | width: 25%; 41 | } 42 | 43 | #logo { 44 | text-align: center; 45 | } 46 | 47 | #properties { 48 | max-height: 50vh; 49 | overflow: scroll; 50 | } 51 | 52 | pre { 53 | background-color: ghostwhite; 54 | border: 1px solid silver; 55 | padding: 5px 5px; 56 | margin: 5px; 57 | } 58 | 59 | .json-key { 60 | color: brown; 61 | } 62 | 63 | .json-number { 64 | color: darkgreen; 65 | } 66 | 67 | .json-string { 68 | color: brown; 69 | } 70 | 71 | .json-constant { 72 | color: navy; 73 | } -------------------------------------------------------------------------------- /matrix/js/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014, Michael Eisenbraun (http://eisenbraun.github.io/columns/) 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /map_matching/js/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014, Michael Eisenbraun (http://eisenbraun.github.io/columns/) 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /optimized_route/js/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014, Michael Eisenbraun (http://eisenbraun.github.io/columns/) 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /flot/jquery.flot.symbol.min.js: -------------------------------------------------------------------------------- 1 | /* Javascript plotting library for jQuery, version 0.8.3. 2 | 3 | Copyright (c) 2007-2014 IOLA and Ole Laursen. 4 | Licensed under the MIT license. 5 | 6 | */ 7 | (function($){function processRawData(plot,series,datapoints){var handlers={square:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(Math.PI)/2;ctx.rect(x-size,y-size,size+size,size+size)},diamond:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(Math.PI/2);ctx.moveTo(x-size,y);ctx.lineTo(x,y-size);ctx.lineTo(x+size,y);ctx.lineTo(x,y+size);ctx.lineTo(x-size,y)},triangle:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(2*Math.PI/Math.sin(Math.PI/3));var height=size*Math.sin(Math.PI/3);ctx.moveTo(x-size/2,y+height/2);ctx.lineTo(x+size/2,y+height/2);if(!shadow){ctx.lineTo(x,y-height/2);ctx.lineTo(x-size/2,y+height/2)}},cross:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(Math.PI)/2;ctx.moveTo(x-size,y-size);ctx.lineTo(x+size,y+size);ctx.moveTo(x-size,y+size);ctx.lineTo(x+size,y-size)}};var s=series.points.symbol;if(handlers[s])series.points.symbol=handlers[s]}function init(plot){plot.hooks.processDatapoints.push(processRawData)}$.plot.plugins.push({init:init,name:"symbols",version:"1.0"})})(jQuery); -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2018 Valhalla contributors 4 | Copyright (c) 2015-2017 Mapillary AB, Mapzen 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in 14 | all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | THE SOFTWARE. 23 | 24 | -------------------------------------------------------------------------------- /flot/examples/axes-time-zones/tz/pacificnew: -------------------------------------------------------------------------------- 1 | #
 2 | # This file is in the public domain, so clarified as of
 3 | # 2009-05-17 by Arthur David Olson.
 4 | 
 5 | # From Arthur David Olson (1989-04-05):
 6 | # On 1989-04-05, the U. S. House of Representatives passed (238-154) a bill
 7 | # establishing "Pacific Presidential Election Time"; it was not acted on
 8 | # by the Senate or signed into law by the President.
 9 | # You might want to change the "PE" (Presidential Election) below to
10 | # "Q" (Quadrennial) to maintain three-character zone abbreviations.
11 | # If you're really conservative, you might want to change it to "D".
12 | # Avoid "L" (Leap Year), which won't be true in 2100.
13 | 
14 | # If Presidential Election Time is ever established, replace "XXXX" below
15 | # with the year the law takes effect and uncomment the "##" lines.
16 | 
17 | # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
18 | ## Rule	Twilite	XXXX	max	-	Apr	Sun>=1	2:00	1:00	D
19 | ## Rule	Twilite	XXXX	max	uspres	Oct	lastSun	2:00	1:00	PE
20 | ## Rule	Twilite	XXXX	max	uspres	Nov	Sun>=7	2:00	0	S
21 | ## Rule	Twilite	XXXX	max	nonpres	Oct	lastSun	2:00	0	S
22 | 
23 | # Zone	NAME			GMTOFF	RULES/SAVE	FORMAT	[UNTIL]
24 | ## Zone	America/Los_Angeles-PET	-8:00	US		P%sT	XXXX
25 | ##				-8:00	Twilite		P%sT
26 | 
27 | # For now...
28 | Link	America/Los_Angeles	US/Pacific-New	##
29 | 


--------------------------------------------------------------------------------
/matrix/css/leaflet.label.css:
--------------------------------------------------------------------------------
 1 | .leaflet-label {
 2 | 	//background: rgb(235, 235, 235);
 3 | 	//background: rgba(235, 235, 235, 0.81);
 4 | 	//background: #585858;
 5 | 	//background-clip: padding-box;
 6 | 	//border-color: #777;
 7 | 	//border-color: rgba(0,0,0,0.25);
 8 | 	//border-radius: 4px;
 9 | 	//border-style: solid;
10 | 	//border-width: 4px;
11 | 	color: #FFFFFF;
12 | 	//color: #111;
13 | 	display: block;
14 | 	font: 12px/20px "Helvetica Neue", Arial, Helvetica, sans-serif;
15 | 	font-weight: bold;
16 | 	padding: 1px 6px;
17 | 	position: absolute;
18 | 	-webkit-user-select: none;
19 | 	   -moz-user-select: none;
20 | 	    -ms-user-select: none;
21 | 	        user-select: none;
22 | 	pointer-events: none;
23 | 	white-space: nowrap;
24 | 	z-index: 6;
25 | }
26 | 
27 | .leaflet-label.leaflet-clickable {
28 | 	cursor: pointer;
29 | 	pointer-events: auto;
30 | }
31 | 
32 | .leaflet-label:before,
33 | .leaflet-label:after {
34 | 	border-top: 6px solid transparent;
35 | 	border-bottom: 6px solid transparent;
36 | 	content: none;
37 | 	position: absolute;
38 | 	top: 5px;
39 | }
40 | 
41 | .leaflet-label:before {
42 | 	border-right: 6px solid black;
43 | 	border-right-color: inherit;
44 | 	left: -10px;
45 | }
46 | 
47 | .leaflet-label:after {
48 | 	border-left: 6px solid black;
49 | 	border-left-color: inherit;
50 | 	right: -10px;
51 | }
52 | 
53 | .leaflet-label-right:before,
54 | .leaflet-label-left:after {
55 | 	content: "";
56 | }
57 | 


--------------------------------------------------------------------------------
/map_matching/css/leaflet.label.css:
--------------------------------------------------------------------------------
 1 | .leaflet-label {
 2 | 	//background: rgb(235, 235, 235);
 3 | 	//background: rgba(235, 235, 235, 0.81);
 4 | 	//background: #585858;
 5 | 	//background-clip: padding-box;
 6 | 	//border-color: #777;
 7 | 	//border-color: rgba(0,0,0,0.25);
 8 | 	//border-radius: 4px;
 9 | 	//border-style: solid;
10 | 	//border-width: 4px;
11 | 	color: #FFFFFF;
12 | 	//color: #111;
13 | 	display: block;
14 | 	font: 12px/20px "Helvetica Neue", Arial, Helvetica, sans-serif;
15 | 	font-weight: bold;
16 | 	padding: 1px 6px;
17 | 	position: absolute;
18 | 	-webkit-user-select: none;
19 | 	   -moz-user-select: none;
20 | 	    -ms-user-select: none;
21 | 	        user-select: none;
22 | 	pointer-events: none;
23 | 	white-space: nowrap;
24 | 	z-index: 6;
25 | }
26 | 
27 | .leaflet-label.leaflet-clickable {
28 | 	cursor: pointer;
29 | 	pointer-events: auto;
30 | }
31 | 
32 | .leaflet-label:before,
33 | .leaflet-label:after {
34 | 	border-top: 6px solid transparent;
35 | 	border-bottom: 6px solid transparent;
36 | 	content: none;
37 | 	position: absolute;
38 | 	top: 5px;
39 | }
40 | 
41 | .leaflet-label:before {
42 | 	border-right: 6px solid black;
43 | 	border-right-color: inherit;
44 | 	left: -10px;
45 | }
46 | 
47 | .leaflet-label:after {
48 | 	border-left: 6px solid black;
49 | 	border-left-color: inherit;
50 | 	right: -10px;
51 | }
52 | 
53 | .leaflet-label-right:before,
54 | .leaflet-label-left:after {
55 | 	content: "";
56 | }
57 | 


--------------------------------------------------------------------------------
/optimized_route/css/leaflet.label.css:
--------------------------------------------------------------------------------
 1 | .leaflet-label {
 2 | 	//background: rgb(235, 235, 235);
 3 | 	//background: rgba(235, 235, 235, 0.81);
 4 | 	//background: #585858;
 5 | 	//background-clip: padding-box;
 6 | 	//border-color: #777;
 7 | 	//border-color: rgba(0,0,0,0.25);
 8 | 	//border-radius: 4px;
 9 | 	//border-style: solid;
10 | 	//border-width: 4px;
11 | 	color: #FFFFFF;
12 | 	//color: #111;
13 | 	display: block;
14 | 	font: 12px/20px "Helvetica Neue", Arial, Helvetica, sans-serif;
15 | 	font-weight: bold;
16 | 	padding: 1px 6px;
17 | 	position: absolute;
18 | 	-webkit-user-select: none;
19 | 	   -moz-user-select: none;
20 | 	    -ms-user-select: none;
21 | 	        user-select: none;
22 | 	pointer-events: none;
23 | 	white-space: nowrap;
24 | 	z-index: 6;
25 | }
26 | 
27 | .leaflet-label.leaflet-clickable {
28 | 	cursor: pointer;
29 | 	pointer-events: auto;
30 | }
31 | 
32 | .leaflet-label:before,
33 | .leaflet-label:after {
34 | 	border-top: 6px solid transparent;
35 | 	border-bottom: 6px solid transparent;
36 | 	content: none;
37 | 	position: absolute;
38 | 	top: 5px;
39 | }
40 | 
41 | .leaflet-label:before {
42 | 	border-right: 6px solid black;
43 | 	border-right-color: inherit;
44 | 	left: -10px;
45 | }
46 | 
47 | .leaflet-label:after {
48 | 	border-left: 6px solid black;
49 | 	border-left-color: inherit;
50 | 	right: -10px;
51 | }
52 | 
53 | .leaflet-label-right:before,
54 | .leaflet-label-left:after {
55 | 	content: "";
56 | }
57 | 


--------------------------------------------------------------------------------
/flot/examples/axes-time-zones/tz/systemv:
--------------------------------------------------------------------------------
 1 | # 
 2 | # This file is in the public domain, so clarified as of
 3 | # 2009-05-17 by Arthur David Olson.
 4 | 
 5 | # Old rules, should the need arise.
 6 | # No attempt is made to handle Newfoundland, since it cannot be expressed
 7 | # using the System V "TZ" scheme (half-hour offset), or anything outside
 8 | # North America (no support for non-standard DST start/end dates), nor
 9 | # the changes in the DST rules in the US after 1976 (which occurred after
10 | # the old rules were written).
11 | #
12 | # If you need the old rules, uncomment ## lines.
13 | # Compile this *without* leap second correction for true conformance.
14 | 
15 | # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
16 | Rule	SystemV	min	1973	-	Apr	lastSun	2:00	1:00	D
17 | Rule	SystemV	min	1973	-	Oct	lastSun	2:00	0	S
18 | Rule	SystemV	1974	only	-	Jan	6	2:00	1:00	D
19 | Rule	SystemV	1974	only	-	Nov	lastSun	2:00	0	S
20 | Rule	SystemV	1975	only	-	Feb	23	2:00	1:00	D
21 | Rule	SystemV	1975	only	-	Oct	lastSun	2:00	0	S
22 | Rule	SystemV	1976	max	-	Apr	lastSun	2:00	1:00	D
23 | Rule	SystemV	1976	max	-	Oct	lastSun	2:00	0	S
24 | 
25 | # Zone	NAME		GMTOFF	RULES/SAVE	FORMAT	[UNTIL]
26 | ## Zone	SystemV/AST4ADT	-4:00	SystemV		A%sT
27 | ## Zone	SystemV/EST5EDT	-5:00	SystemV		E%sT
28 | ## Zone	SystemV/CST6CDT	-6:00	SystemV		C%sT
29 | ## Zone	SystemV/MST7MDT	-7:00	SystemV		M%sT
30 | ## Zone	SystemV/PST8PDT	-8:00	SystemV		P%sT
31 | ## Zone	SystemV/YST9YDT	-9:00	SystemV		Y%sT
32 | ## Zone	SystemV/AST4	-4:00	-		AST
33 | ## Zone	SystemV/EST5	-5:00	-		EST
34 | ## Zone	SystemV/CST6	-6:00	-		CST
35 | ## Zone	SystemV/MST7	-7:00	-		MST
36 | ## Zone	SystemV/PST8	-8:00	-		PST
37 | ## Zone	SystemV/YST9	-9:00	-		YST
38 | ## Zone	SystemV/HST10	-10:00	-		HST
39 | 


--------------------------------------------------------------------------------
/flot/examples/shared/jquery-ui/jquery-ui.min.css:
--------------------------------------------------------------------------------
1 | /*! jQuery UI - v1.10.0 - 2013-01-26
2 | * http://jqueryui.com
3 | * Includes: jquery.ui.core.css, jquery.ui.resizable.css
4 | * Copyright (c) 2013 jQuery Foundation and other contributors Licensed MIT */
5 | 
6 | .ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}


--------------------------------------------------------------------------------
/routing/resource/scene.yaml:
--------------------------------------------------------------------------------
 1 | cameras:
 2 |     camera1:
 3 |         type: flat
 4 | 
 5 | lights:
 6 |     light1:
 7 |         type: directional
 8 |         direction: [0, 1, -.5]
 9 |         diffuse: .3
10 |         ambient: 1
11 | 
12 | sources:
13 |     osm:
14 |         type: TopoJSONTiles
15 |         url:  //vector.mapzen.com/osm/all/{z}/{x}/{y}.topojson?api_key=vector-tiles-HqUVidw
16 | 
17 | layers:
18 |     earth:
19 |         data: { source: osm }
20 |         draw:
21 |             polygons:
22 |                 order: 0
23 |                 color: '#ddeeee'
24 | 
25 |     landuse:
26 |         data: { source: osm }
27 |         draw:
28 |             polygons:
29 |                 order: 1
30 |                 color: '#aaffaa'
31 | 
32 |     water:
33 |         data: { source: osm }
34 |         draw:
35 |             polygons:
36 |                 order: 2
37 |                 color: '#88bbee'
38 | 
39 |     roads:
40 |         data: { source: osm }
41 |         filter:
42 |             not: { kind: ["path", "rail"] }
43 |         draw:
44 |             lines:
45 |                 order: 4
46 |                 color: gray
47 |                 width: 8
48 |                 cap: round
49 |         highway:
50 |             filter:
51 |                 kind: highway
52 |             draw:
53 |                 lines:
54 |                     order: 5
55 |                     color: '#cc6666'
56 |                     width: 12
57 |                     outline:
58 |                         color: grey
59 |                         width: 1.5
60 |         minor_road:
61 |             filter:
62 |                 kind: minor_road
63 |             draw:
64 |                 lines:
65 |                     order: 3
66 |                     color: lightgrey
67 |                     width: 5


--------------------------------------------------------------------------------
/routing/css/elevation.css:
--------------------------------------------------------------------------------
 1 | html {
 2 |   width: 100%;
 3 |   height: 100%;
 4 | }
 5 | 
 6 | body {
 7 |   font: 13px/1.5 "Helvetica Neue", Helvetica, Arial, sans-serif;
 8 |   padding: 0px;
 9 |   margin: 0px;
10 |   //background-color: black;
11 | }
12 | 
13 | .container-fluid {
14 |   height: 100%;
15 | }
16 | 
17 | #map {
18 |   height:100vh;
19 |   width: 100%;
20 | /*  position: absolute;
21 |   background: #fff;
22 |   margin:0;*/
23 | }
24 | 
25 | .range-bar {
26 |   margin: 20px 0;
27 | }
28 | 
29 | .instruction {
30 |   margin: 20px 0;
31 | }
32 | 
33 | .axisLabel {
34 |     position: absolute;
35 |     text-align: center;
36 |     font-size: 12px;
37 |     font-weight: bold;
38 | }
39 | 
40 | .xaxisLabel {
41 |     bottom: 10px;
42 |     left: 0;
43 |     right: 0;
44 | }
45 | 
46 | .yaxisLabel {
47 |     top: 50%;
48 |     left: 2px;
49 |     font-weight: bold;
50 |     transform: rotate(-90deg);
51 |     -webkit-transform:  rotate(-90deg);
52 |     transform-origin: 0 0;
53 |     -webkit-transform-origin: 0 0;
54 | }
55 | 
56 | #graph{
57 |   width: 200px;
58 |   height: 300px;
59 |   position: center;
60 |   margin: 0 auto;
61 |   background-color: #FFF;
62 | }
63 | 
64 | .legend table, .legend > div {
65 |   height: 35px !important;
66 |   opacity: 1 !important;
67 |   right: -55px;
68 |   top: 10px;
69 |   width: 116px !important;
70 | }
71 | 
72 | .legend table {
73 |   border: 1px solid #555;
74 |   padding: 5px;
75 | }
76 | 
77 | #flot-tooltip {
78 |   font-size: 12px;
79 |   font-family: Verdana, Arial, sans-serif;
80 |   position: absolute;
81 |   display: none;
82 |   padding: 2px;
83 |   background-color: #FFF;
84 |   opacity: 1;
85 |   border: 1px solid #aaa;
86 |   -moz-box-shadow: 0px 1px 1px #ddd;
87 |   -webkit-box-shadow: 0px 1px 1px #ddd;
88 |   box-shadow: 0px 1px 2px #ddd;
89 | }


--------------------------------------------------------------------------------
/flot/jquery.flot.threshold.min.js:
--------------------------------------------------------------------------------
1 | /* Javascript plotting library for jQuery, version 0.8.3.
2 | 
3 | Copyright (c) 2007-2014 IOLA and Ole Laursen.
4 | Licensed under the MIT license.
5 | 
6 | */
7 | (function($){var options={series:{threshold:null}};function init(plot){function thresholdData(plot,s,datapoints,below,color){var ps=datapoints.pointsize,i,x,y,p,prevp,thresholded=$.extend({},s);thresholded.datapoints={points:[],pointsize:ps,format:datapoints.format};thresholded.label=null;thresholded.color=color;thresholded.threshold=null;thresholded.originSeries=s;thresholded.data=[];var origpoints=datapoints.points,addCrossingPoints=s.lines.show;var threspoints=[];var newpoints=[];var m;for(i=0;i0&&origpoints[i-ps]!=null){var interx=x+(below-y)*(x-origpoints[i-ps])/(y-origpoints[i-ps+1]);prevp.push(interx);prevp.push(below);for(m=2;m0){var origIndex=$.inArray(s,plot.getData());plot.getData().splice(origIndex+1,0,thresholded)}}function processThresholds(plot,s,datapoints){if(!s.threshold)return;if(s.threshold instanceof Array){s.threshold.sort(function(a,b){return a.below-b.below});$(s.threshold).each(function(i,th){thresholdData(plot,s,datapoints,th.below,th.color)})}else{thresholdData(plot,s,datapoints,s.threshold.below,s.threshold.color)}}plot.hooks.processDatapoints.push(processThresholds)}$.plot.plugins.push({init:init,options:options,name:"threshold",version:"1.2"})})(jQuery);


--------------------------------------------------------------------------------
/flot/examples/categories/index.html:
--------------------------------------------------------------------------------
 1 | 
 2 | 
 3 | 
 4 | 	
 5 | 	Flot Examples: Categories
 6 | 	
 7 | 	
 8 | 	
 9 | 	
10 | 	
11 | 	
37 | 
38 | 
39 | 
40 | 	
43 | 
44 | 	
45 | 46 |
47 |
48 |
49 | 50 |

With the categories plugin you can plot categories/textual data easily.

51 | 52 |
53 | 54 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /flot/examples/basic-usage/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Flot Examples: Basic Usage 6 | 7 | 8 | 9 | 10 | 33 | 34 | 35 | 36 | 39 | 40 |
41 | 42 |
43 |
44 |
45 | 46 |

You don't have to do much to get an attractive plot. Create a placeholder, make sure it has dimensions (so Flot knows at what size to draw the plot), then call the plot function with your data.

47 | 48 |

The axes are automatically scaled.

49 | 50 |
51 | 52 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /elevation/css/elevation.css: -------------------------------------------------------------------------------- 1 | body { 2 | width: 100%; 3 | height: 100vh; 4 | padding: 0; 5 | margin: 0; 6 | font-family: sans-serif; 7 | } 8 | 9 | .container { 10 | display: flex; 11 | flex-direction: row; 12 | height: 100%; 13 | width: 100%; 14 | overflow: hidden; 15 | } 16 | 17 | #map-container { 18 | height: 100%; 19 | width: 75%; 20 | } 21 | 22 | #map { 23 | height: 100%; 24 | width: 100%; 25 | } 26 | 27 | #sidebar { 28 | height: 100%; 29 | padding: 10px; 30 | text-align: center; 31 | overflow: scroll; 32 | width: 25%; 33 | } 34 | 35 | form { 36 | display: block; 37 | text-align: left; 38 | } 39 | 40 | label { 41 | display: block; 42 | margin-top: 10px; 43 | } 44 | 45 | .range-bar { 46 | margin: 20px 0; 47 | } 48 | 49 | .instruction { 50 | margin: 20px 0; 51 | } 52 | 53 | .axisLabel { 54 | position: absolute; 55 | text-align: center; 56 | font-size: 12px; 57 | font-weight: bold; 58 | } 59 | 60 | .xaxisLabel { 61 | bottom: 10px; 62 | left: 0; 63 | right: 0; 64 | } 65 | 66 | .yaxisLabel { 67 | top: 50%; 68 | left: 2px; 69 | font-weight: bold; 70 | transform: rotate(-90deg); 71 | -webkit-transform: rotate(-90deg); 72 | transform-origin: 0 0; 73 | -webkit-transform-origin: 0 0; 74 | } 75 | 76 | .legend table, 77 | .legend>div { 78 | height: 35px !important; 79 | opacity: 1 !important; 80 | right: -55px; 81 | top: 10px; 82 | width: 116px !important; 83 | } 84 | 85 | .legend table { 86 | border: 1px solid #555; 87 | padding: 5px; 88 | } 89 | 90 | #flot-tooltip { 91 | font-size: 12px; 92 | font-family: Verdana, Arial, sans-serif; 93 | position: absolute; 94 | display: none; 95 | padding: 2px; 96 | background-color: #FFF; 97 | opacity: 1; 98 | border: 1px solid #aaa; 99 | -moz-box-shadow: 0px 1px 1px #ddd; 100 | -webkit-box-shadow: 0px 1px 1px #ddd; 101 | box-shadow: 0px 1px 2px #ddd; 102 | } -------------------------------------------------------------------------------- /matrix/images/multimodal.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /flot/jquery.flot.crosshair.min.js: -------------------------------------------------------------------------------- 1 | /* Javascript plotting library for jQuery, version 0.8.3. 2 | 3 | Copyright (c) 2007-2014 IOLA and Ole Laursen. 4 | Licensed under the MIT license. 5 | 6 | */ 7 | (function($){var options={crosshair:{mode:null,color:"rgba(170, 0, 0, 0.80)",lineWidth:1}};function init(plot){var crosshair={x:-1,y:-1,locked:false};plot.setCrosshair=function setCrosshair(pos){if(!pos)crosshair.x=-1;else{var o=plot.p2c(pos);crosshair.x=Math.max(0,Math.min(o.left,plot.width()));crosshair.y=Math.max(0,Math.min(o.top,plot.height()))}plot.triggerRedrawOverlay()};plot.clearCrosshair=plot.setCrosshair;plot.lockCrosshair=function lockCrosshair(pos){if(pos)plot.setCrosshair(pos);crosshair.locked=true};plot.unlockCrosshair=function unlockCrosshair(){crosshair.locked=false};function onMouseOut(e){if(crosshair.locked)return;if(crosshair.x!=-1){crosshair.x=-1;plot.triggerRedrawOverlay()}}function onMouseMove(e){if(crosshair.locked)return;if(plot.getSelection&&plot.getSelection()){crosshair.x=-1;return}var offset=plot.offset();crosshair.x=Math.max(0,Math.min(e.pageX-offset.left,plot.width()));crosshair.y=Math.max(0,Math.min(e.pageY-offset.top,plot.height()));plot.triggerRedrawOverlay()}plot.hooks.bindEvents.push(function(plot,eventHolder){if(!plot.getOptions().crosshair.mode)return;eventHolder.mouseout(onMouseOut);eventHolder.mousemove(onMouseMove)});plot.hooks.drawOverlay.push(function(plot,ctx){var c=plot.getOptions().crosshair;if(!c.mode)return;var plotOffset=plot.getPlotOffset();ctx.save();ctx.translate(plotOffset.left,plotOffset.top);if(crosshair.x!=-1){var adj=plot.getOptions().crosshair.lineWidth%2?.5:0;ctx.strokeStyle=c.color;ctx.lineWidth=c.lineWidth;ctx.lineJoin="round";ctx.beginPath();if(c.mode.indexOf("x")!=-1){var drawX=Math.floor(crosshair.x)+adj;ctx.moveTo(drawX,0);ctx.lineTo(drawX,plot.height())}if(c.mode.indexOf("y")!=-1){var drawY=Math.floor(crosshair.y)+adj;ctx.moveTo(0,drawY);ctx.lineTo(plot.width(),drawY)}ctx.stroke()}ctx.restore()});plot.hooks.shutdown.push(function(plot,eventHolder){eventHolder.unbind("mouseout",onMouseOut);eventHolder.unbind("mousemove",onMouseMove)})}$.plot.plugins.push({init:init,options:options,name:"crosshair",version:"1.0"})})(jQuery); -------------------------------------------------------------------------------- /flot/examples/examples.css: -------------------------------------------------------------------------------- 1 | * { padding: 0; margin: 0; vertical-align: top; } 2 | 3 | body { 4 | background: url(background.png) repeat-x; 5 | font: 18px/1.5em "proxima-nova", Helvetica, Arial, sans-serif; 6 | } 7 | 8 | a { color: #069; } 9 | a:hover { color: #28b; } 10 | 11 | h2 { 12 | margin-top: 15px; 13 | font: normal 32px "omnes-pro", Helvetica, Arial, sans-serif; 14 | } 15 | 16 | h3 { 17 | margin-left: 30px; 18 | font: normal 26px "omnes-pro", Helvetica, Arial, sans-serif; 19 | color: #666; 20 | } 21 | 22 | p { 23 | margin-top: 10px; 24 | } 25 | 26 | button { 27 | font-size: 18px; 28 | padding: 1px 7px; 29 | } 30 | 31 | input { 32 | font-size: 18px; 33 | } 34 | 35 | input[type=checkbox] { 36 | margin: 7px; 37 | } 38 | 39 | #header { 40 | position: relative; 41 | width: 900px; 42 | margin: auto; 43 | } 44 | 45 | #header h2 { 46 | margin-left: 10px; 47 | vertical-align: middle; 48 | font-size: 42px; 49 | font-weight: bold; 50 | text-decoration: none; 51 | color: #000; 52 | } 53 | 54 | #content { 55 | width: 880px; 56 | margin: 0 auto; 57 | padding: 10px; 58 | } 59 | 60 | #footer { 61 | margin-top: 25px; 62 | margin-bottom: 10px; 63 | text-align: center; 64 | font-size: 12px; 65 | color: #999; 66 | } 67 | 68 | .demo-container { 69 | box-sizing: border-box; 70 | width: 850px; 71 | height: 450px; 72 | padding: 20px 15px 15px 15px; 73 | margin: 15px auto 30px auto; 74 | border: 1px solid #ddd; 75 | background: #fff; 76 | background: linear-gradient(#f6f6f6 0, #fff 50px); 77 | background: -o-linear-gradient(#f6f6f6 0, #fff 50px); 78 | background: -ms-linear-gradient(#f6f6f6 0, #fff 50px); 79 | background: -moz-linear-gradient(#f6f6f6 0, #fff 50px); 80 | background: -webkit-linear-gradient(#f6f6f6 0, #fff 50px); 81 | box-shadow: 0 3px 10px rgba(0,0,0,0.15); 82 | -o-box-shadow: 0 3px 10px rgba(0,0,0,0.1); 83 | -ms-box-shadow: 0 3px 10px rgba(0,0,0,0.1); 84 | -moz-box-shadow: 0 3px 10px rgba(0,0,0,0.1); 85 | -webkit-box-shadow: 0 3px 10px rgba(0,0,0,0.1); 86 | } 87 | 88 | .demo-placeholder { 89 | width: 100%; 90 | height: 100%; 91 | font-size: 14px; 92 | line-height: 1.2em; 93 | } 94 | 95 | .legend table { 96 | border-spacing: 5px; 97 | } -------------------------------------------------------------------------------- /flot/jquery.flot.fillbetween.min.js: -------------------------------------------------------------------------------- 1 | /* Javascript plotting library for jQuery, version 0.8.3. 2 | 3 | Copyright (c) 2007-2014 IOLA and Ole Laursen. 4 | Licensed under the MIT license. 5 | 6 | */ 7 | (function($){var options={series:{fillBetween:null}};function init(plot){function findBottomSeries(s,allseries){var i;for(i=0;i=allseries.length){return null}return allseries[s.fillBetween]}return null}function computeFillBottoms(plot,s,datapoints){if(s.fillBetween==null){return}var other=findBottomSeries(s,plot.getData());if(!other){return}var ps=datapoints.pointsize,points=datapoints.points,otherps=other.datapoints.pointsize,otherpoints=other.datapoints.points,newpoints=[],px,py,intery,qx,qy,bottom,withlines=s.lines.show,withbottom=ps>2&&datapoints.format[2].y,withsteps=withlines&&s.lines.steps,fromgap=true,i=0,j=0,l,m;while(true){if(i>=points.length){break}l=newpoints.length;if(points[i]==null){for(m=0;m=otherpoints.length){if(!withlines){for(m=0;mqx){if(withlines&&i>0&&points[i-ps]!=null){intery=py+(points[i-ps+1]-py)*(qx-px)/(points[i-ps]-px);newpoints.push(qx);newpoints.push(intery);for(m=2;m0&&otherpoints[j-otherps]!=null){bottom=qy+(otherpoints[j-otherps+1]-qy)*(px-qx)/(otherpoints[j-otherps]-qx)}i+=ps}fromgap=false;if(l!==newpoints.length&&withbottom){newpoints[l+2]=bottom}}if(withsteps&&l!==newpoints.length&&l>0&&newpoints[l]!==null&&newpoints[l]!==newpoints[l-ps]&&newpoints[l+1]!==newpoints[l-ps+1]){for(m=0;m=0;t--){if(i[t]==this){i.splice(t,1);break}}e.removeData(m);if(!i.length){if(r){cancelAnimationFrame(a)}else{clearTimeout(a)}a=null}},add:function(e){if(!n[f]&&this[s]){return false}var i;function a(e,n,a){var r=$(this),s=r.data(m)||{};s.w=n!==t?n:r.width();s.h=a!==t?a:r.height();i.apply(this,arguments)}if($.isFunction(e)){i=e;return a}else{i=e.handler;e.handler=a}}};function h(t){if(r===true){r=t||1}for(var s=i.length-1;s>=0;s--){var l=$(i[s]);if(l[0]==e||l.is(":visible")){var f=l.width(),c=l.height(),d=l.data(m);if(d&&(f!==d.w||c!==d.h)){l.trigger(u,[d.w=f,d.h=c]);r=t||true}}else{d=l.data(m);d.w=0;d.h=0}}if(a!==null){if(r&&(t==null||t-r<1e3)){a=e.requestAnimationFrame(h)}else{a=setTimeout(h,n[o]);r=false}}}if(!e.requestAnimationFrame){e.requestAnimationFrame=function(){return e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||function(t,i){return e.setTimeout(function(){t((new Date).getTime())},n[l])}}()}if(!e.cancelAnimationFrame){e.cancelAnimationFrame=function(){return e.webkitCancelRequestAnimationFrame||e.mozCancelRequestAnimationFrame||e.oCancelRequestAnimationFrame||e.msCancelRequestAnimationFrame||clearTimeout}()}})(jQuery,this);(function($){var options={};function init(plot){function onResize(){var placeholder=plot.getPlaceholder();if(placeholder.width()==0||placeholder.height()==0)return;plot.resize();plot.setupGrid();plot.draw()}function bindEvents(plot,eventHolder){plot.getPlaceholder().resize(onResize)}function shutdown(plot,eventHolder){plot.getPlaceholder().unbind("resize",onResize)}plot.hooks.bindEvents.push(bindEvents);plot.hooks.shutdown.push(shutdown)}$.plot.plugins.push({init:init,options:options,name:"resize",version:"1.0"})})(jQuery); -------------------------------------------------------------------------------- /flot/examples/threshold/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Flot Examples: Thresholds 6 | 7 | 8 | 9 | 10 | 11 | 48 | 49 | 50 | 51 | 54 | 55 |
56 | 57 |
58 |
59 |
60 | 61 |

With the threshold plugin, you can apply a specific color to the part of a data series below a threshold. This is can be useful for highlighting negative values, e.g. when displaying net results or what's in stock.

62 | 63 |

64 | 65 | 66 | 67 |

68 | 69 |
70 | 71 | 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /points/points.js: -------------------------------------------------------------------------------- 1 | var map; 2 | var markers = []; 3 | 4 | function makePoints(event) { 5 | var text = document.getElementById("inputtext").value; 6 | var re = /[^0-9,] *(-?[0-9]+\.[0-9]+), *(-?[0-9]+\.[0-9]+) *[^0-9,]/g; 7 | var array; 8 | 9 | if (markers.length > 0) { 10 | for (var i = 0; i < markers.length; i++) { 11 | markers[i].removeFrom(map); 12 | } 13 | markers = []; 14 | } 15 | 16 | var last_idx = 0; 17 | var new_text = ""; 18 | while ((array = re.exec(text)) !== null) { 19 | var lat = parseFloat(array[1]); 20 | var lng = parseFloat(array[2]); 21 | var idx = array.index; 22 | var len = array[0].length; 23 | 24 | var match_id = markers.length; 25 | 26 | new_text += text.substr(last_idx, idx - last_idx) + '' + array[0] + ''; 27 | last_idx = idx + array[0].length; 28 | 29 | var marker = L.marker([lat, lng]); 30 | marker.match_id = match_id; 31 | marker.on('mouseover', function(e) { 32 | var id = e.target.match_id; 33 | document.getElementById("match_" + id).className = "rematch active"; 34 | }); 35 | marker.on('mouseout', function(e) { 36 | var id = e.target.match_id; 37 | document.getElementById("match_" + id).className = "rematch"; 38 | }); 39 | markers.push(marker.addTo(map)); 40 | } 41 | new_text += text.substr(last_idx, text.length - last_idx); 42 | document.getElementById("output").innerHTML = new_text; 43 | 44 | if (markers.length == 1) { 45 | map.setView(marker[0].getLatLng(), 18); 46 | 47 | } else if (markers.length > 1) { 48 | var latlngs = []; 49 | for (var i = 0; i < markers.length; i++) { 50 | latlngs.push(markers[i].getLatLng()); 51 | } 52 | map.fitBounds(L.latLngBounds(latlngs)); 53 | } 54 | } 55 | 56 | document.addEventListener("DOMContentLoaded", function(event) { 57 | var form = document.getElementById("inputform"); 58 | form.addEventListener("submit", makePoints); 59 | 60 | map = L.map('map'); 61 | L.tileLayer('http://tile.openstreetmap.org/{z}/{x}/{y}.png', { 62 | attribution: 'Map data © OpenStreetMap contributors', 63 | maxZoom: 19, 64 | }).addTo(map); 65 | }); 66 | -------------------------------------------------------------------------------- /flot/examples/symbols/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Flot Examples: Symbols 6 | 7 | 8 | 9 | 10 | 11 | 54 | 55 | 56 | 57 | 60 | 61 |
62 | 63 |
64 |
65 |
66 | 67 |

Points can be marked in several ways, with circles being the built-in default. For other point types, you can define a callback function to draw the symbol. Some common symbols are available in the symbol plugin.

68 | 69 |
70 | 71 | 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /flot/jquery.flot.stack.min.js: -------------------------------------------------------------------------------- 1 | /* Javascript plotting library for jQuery, version 0.8.3. 2 | 3 | Copyright (c) 2007-2014 IOLA and Ole Laursen. 4 | Licensed under the MIT license. 5 | 6 | */ 7 | (function($){var options={series:{stack:null}};function init(plot){function findMatchingSeries(s,allseries){var res=null;for(var i=0;i2&&(horizontal?datapoints.format[2].x:datapoints.format[2].y),withsteps=withlines&&s.lines.steps,fromgap=true,keyOffset=horizontal?1:0,accumulateOffset=horizontal?0:1,i=0,j=0,l,m;while(true){if(i>=points.length)break;l=newpoints.length;if(points[i]==null){for(m=0;m=otherpoints.length){if(!withlines){for(m=0;mqx){if(withlines&&i>0&&points[i-ps]!=null){intery=py+(points[i-ps+accumulateOffset]-py)*(qx-px)/(points[i-ps+keyOffset]-px);newpoints.push(qx);newpoints.push(intery+qy);for(m=2;m0&&otherpoints[j-otherps]!=null)bottom=qy+(otherpoints[j-otherps+accumulateOffset]-qy)*(px-qx)/(otherpoints[j-otherps+keyOffset]-qx);newpoints[l+accumulateOffset]+=bottom;i+=ps}fromgap=false;if(l!=newpoints.length&&withbottom)newpoints[l+2]+=bottom}if(withsteps&&l!=newpoints.length&&l>0&&newpoints[l]!=null&&newpoints[l]!=newpoints[l-ps]&&newpoints[l+1]!=newpoints[l-ps+1]){for(m=0;m 2 | 3 | 4 | 5 | Flot Examples: Image Plots 6 | 7 | 8 | 9 | 10 | 11 | 43 | 44 | 45 | 46 | 49 | 50 |
51 | 52 |
53 |
54 |
55 | 56 |

The Cat's Eye Nebula (picture from Hubble).

57 | 58 |

With the image plugin, you can plot static images against a set of axes. This is for useful for adding ticks to complex prerendered visualizations. Instead of inputting data points, you specify the images and where their two opposite corners are supposed to be in plot space.

59 | 60 |

Images represent a little further complication because you need to make sure they are loaded before you can use them (Flot skips incomplete images). The plugin comes with a couple of helpers for doing that.

61 | 62 |
63 | 64 | 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /flot/examples/series-types/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Flot Examples: Series Types 6 | 7 | 8 | 9 | 10 | 68 | 69 | 70 | 71 | 74 | 75 |
76 | 77 |
78 |
79 |
80 | 81 |

Flot supports lines, points, filled areas, bars and any combinations of these, in the same plot and even on the same data series.

82 | 83 |
84 | 85 | 88 | 89 | 90 | 91 | -------------------------------------------------------------------------------- /flot/jquery.flot.categories.min.js: -------------------------------------------------------------------------------- 1 | /* Javascript plotting library for jQuery, version 0.8.3. 2 | 3 | Copyright (c) 2007-2014 IOLA and Ole Laursen. 4 | Licensed under the MIT license. 5 | 6 | */ 7 | (function($){var options={xaxis:{categories:null},yaxis:{categories:null}};function processRawData(plot,series,data,datapoints){var xCategories=series.xaxis.options.mode=="categories",yCategories=series.yaxis.options.mode=="categories";if(!(xCategories||yCategories))return;var format=datapoints.format;if(!format){var s=series;format=[];format.push({x:true,number:true,required:true});format.push({y:true,number:true,required:true});if(s.bars.show||s.lines.show&&s.lines.fill){var autoscale=!!(s.bars.show&&s.bars.zero||s.lines.show&&s.lines.zero);format.push({y:true,number:true,required:false,defaultValue:0,autoscale:autoscale});if(s.bars.horizontal){delete format[format.length-1].y;format[format.length-1].x=true}}datapoints.format=format}for(var m=0;mindex)index=categories[v];return index+1}function categoriesTickGenerator(axis){var res=[];for(var label in axis.categories){var v=axis.categories[label];if(v>=axis.min&&v<=axis.max)res.push([v,label])}res.sort(function(a,b){return a[0]-b[0]});return res}function setupCategoriesForAxis(series,axis,datapoints){if(series[axis].options.mode!="categories")return;if(!series[axis].categories){var c={},o=series[axis].options.categories||{};if($.isArray(o)){for(var i=0;i").load(handler).error(handler).attr("src",url)})};function drawSeries(plot,ctx,series){var plotOffset=plot.getPlotOffset();if(!series.images||!series.images.show)return;var points=series.datapoints.points,ps=series.datapoints.pointsize;for(var i=0;ix2){tmp=x2;x2=x1;x1=tmp}if(y1>y2){tmp=y2;y2=y1;y1=tmp}if(series.images.anchor=="center"){tmp=.5*(x2-x1)/(img.width-1);x1-=tmp;x2+=tmp;tmp=.5*(y2-y1)/(img.height-1);y1-=tmp;y2+=tmp}if(x1==x2||y1==y2||x1>=xaxis.max||x2<=xaxis.min||y1>=yaxis.max||y2<=yaxis.min)continue;var sx1=0,sy1=0,sx2=img.width,sy2=img.height;if(x1xaxis.max){sx2+=(sx2-sx1)*(xaxis.max-x2)/(x2-x1);x2=xaxis.max}if(y1yaxis.max){sy1+=(sy1-sy2)*(yaxis.max-y2)/(y2-y1);y2=yaxis.max}x1=xaxis.p2c(x1);x2=xaxis.p2c(x2);y1=yaxis.p2c(y1);y2=yaxis.p2c(y2);if(x1>x2){tmp=x2;x2=x1;x1=tmp}if(y1>y2){tmp=y2;y2=y1;y1=tmp}tmp=ctx.globalAlpha;ctx.globalAlpha*=series.images.alpha;ctx.drawImage(img,sx1,sy1,sx2-sx1,sy2-sy1,x1+plotOffset.left,y1+plotOffset.top,x2-x1,y2-y1);ctx.globalAlpha=tmp}}function processRawData(plot,series,data,datapoints){if(!series.images.show)return;datapoints.format=[{required:true},{x:true,number:true,required:true},{y:true,number:true,required:true},{x:true,number:true,required:true},{y:true,number:true,required:true}]}function init(plot){plot.hooks.processRawData.push(processRawData);plot.hooks.drawSeries.push(drawSeries)}$.plot.plugins.push({init:init,options:options,name:"image",version:"1.1"})})(jQuery); -------------------------------------------------------------------------------- /flot/examples/basic-options/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Flot Examples: Basic Options 6 | 7 | 8 | 9 | 10 | 67 | 68 | 69 | 70 | 73 | 74 |
75 | 76 |
77 |
78 |
79 | 80 |

There are plenty of options you can set to control the precise looks of your plot. You can control the ticks on the axes, the legend, the graph type, etc.

81 | 82 |

Flot goes to great lengths to provide sensible defaults so that you don't have to customize much for a good-looking result.

83 | 84 |
85 | 86 | 89 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /flot/examples/resize/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Flot Examples: Resizing 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 50 | 51 | 52 | 53 | 56 | 57 |
58 | 59 |
60 |
61 |
62 | 63 |

64 | 65 |

Sometimes it makes more sense to just let the plot take up the available space. In that case, we need to redraw the plot each time the placeholder changes its size. If you include the resize plugin, this is handled automatically.

66 | 67 |

Drag the bottom and right sides of the plot to resize it.

68 | 69 |
70 | 71 | 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /flot/jquery.flot.symbol.js: -------------------------------------------------------------------------------- 1 | /* Flot plugin that adds some extra symbols for plotting points. 2 | 3 | Copyright (c) 2007-2014 IOLA and Ole Laursen. 4 | Licensed under the MIT license. 5 | 6 | The symbols are accessed as strings through the standard symbol options: 7 | 8 | series: { 9 | points: { 10 | symbol: "square" // or "diamond", "triangle", "cross" 11 | } 12 | } 13 | 14 | */ 15 | 16 | (function ($) { 17 | function processRawData(plot, series, datapoints) { 18 | // we normalize the area of each symbol so it is approximately the 19 | // same as a circle of the given radius 20 | 21 | var handlers = { 22 | square: function (ctx, x, y, radius, shadow) { 23 | // pi * r^2 = (2s)^2 => s = r * sqrt(pi)/2 24 | var size = radius * Math.sqrt(Math.PI) / 2; 25 | ctx.rect(x - size, y - size, size + size, size + size); 26 | }, 27 | diamond: function (ctx, x, y, radius, shadow) { 28 | // pi * r^2 = 2s^2 => s = r * sqrt(pi/2) 29 | var size = radius * Math.sqrt(Math.PI / 2); 30 | ctx.moveTo(x - size, y); 31 | ctx.lineTo(x, y - size); 32 | ctx.lineTo(x + size, y); 33 | ctx.lineTo(x, y + size); 34 | ctx.lineTo(x - size, y); 35 | }, 36 | triangle: function (ctx, x, y, radius, shadow) { 37 | // pi * r^2 = 1/2 * s^2 * sin (pi / 3) => s = r * sqrt(2 * pi / sin(pi / 3)) 38 | var size = radius * Math.sqrt(2 * Math.PI / Math.sin(Math.PI / 3)); 39 | var height = size * Math.sin(Math.PI / 3); 40 | ctx.moveTo(x - size/2, y + height/2); 41 | ctx.lineTo(x + size/2, y + height/2); 42 | if (!shadow) { 43 | ctx.lineTo(x, y - height/2); 44 | ctx.lineTo(x - size/2, y + height/2); 45 | } 46 | }, 47 | cross: function (ctx, x, y, radius, shadow) { 48 | // pi * r^2 = (2s)^2 => s = r * sqrt(pi)/2 49 | var size = radius * Math.sqrt(Math.PI) / 2; 50 | ctx.moveTo(x - size, y - size); 51 | ctx.lineTo(x + size, y + size); 52 | ctx.moveTo(x - size, y + size); 53 | ctx.lineTo(x + size, y - size); 54 | } 55 | }; 56 | 57 | var s = series.points.symbol; 58 | if (handlers[s]) 59 | series.points.symbol = handlers[s]; 60 | } 61 | 62 | function init(plot) { 63 | plot.hooks.processDatapoints.push(processRawData); 64 | } 65 | 66 | $.plot.plugins.push({ 67 | init: init, 68 | name: 'symbols', 69 | version: '1.0' 70 | }); 71 | })(jQuery); 72 | -------------------------------------------------------------------------------- /flot/jquery.colorhelpers.min.js: -------------------------------------------------------------------------------- 1 | (function($){$.color={};$.color.make=function(r,g,b,a){var o={};o.r=r||0;o.g=g||0;o.b=b||0;o.a=a!=null?a:1;o.add=function(c,d){for(var i=0;i=1){return"rgb("+[o.r,o.g,o.b].join(",")+")"}else{return"rgba("+[o.r,o.g,o.b,o.a].join(",")+")"}};o.normalize=function(){function clamp(min,value,max){return valuemax?max:value}o.r=clamp(0,parseInt(o.r),255);o.g=clamp(0,parseInt(o.g),255);o.b=clamp(0,parseInt(o.b),255);o.a=clamp(0,o.a,1);return o};o.clone=function(){return $.color.make(o.r,o.b,o.g,o.a)};return o.normalize()};$.color.extract=function(elem,css){var c;do{c=elem.css(css).toLowerCase();if(c!=""&&c!="transparent")break;elem=elem.parent()}while(elem.length&&!$.nodeName(elem.get(0),"body"));if(c=="rgba(0, 0, 0, 0)")c="transparent";return $.color.parse(c)};$.color.parse=function(str){var res,m=$.color.make;if(res=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10));if(res=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10),parseFloat(res[4]));if(res=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55);if(res=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55,parseFloat(res[4]));if(res=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))return m(parseInt(res[1],16),parseInt(res[2],16),parseInt(res[3],16));if(res=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))return m(parseInt(res[1]+res[1],16),parseInt(res[2]+res[2],16),parseInt(res[3]+res[3],16));var name=$.trim(str).toLowerCase();if(name=="transparent")return m(255,255,255,0);else{res=lookupColors[name]||[0,0,0];return m(res[0],res[1],res[2])}};var lookupColors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery); -------------------------------------------------------------------------------- /isochrone/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Isochrones 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 66 |
67 |
68 |
69 |
70 | 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /flot/examples/annotating/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Flot Examples: Adding Annotations 6 | 7 | 8 | 9 | 10 | 65 | 66 | 67 | 68 | 71 | 72 |
73 | 74 |
75 |
76 |
77 | 78 |

Flot has support for simple background decorations such as lines and rectangles. They can be useful for marking up certain areas. You can easily add any HTML you need with standard DOM manipulation, e.g. for labels. For drawing custom shapes there is also direct access to the canvas.

79 | 80 |
81 | 82 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /flot/examples/stacking/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Flot Examples: Stacking 6 | 7 | 8 | 9 | 10 | 11 | 74 | 75 | 76 | 77 | 80 | 81 |
82 | 83 |
84 |
85 |
86 | 87 |

With the stack plugin, you can have Flot stack the series. This is useful if you wish to display both a total and the constituents it is made of. The only requirement is that you provide the input sorted on x.

88 | 89 |

90 | 91 | 92 |

93 | 94 |

95 | 96 | 97 | 98 |

99 | 100 |
101 | 102 | 105 | 106 | 107 | 108 | -------------------------------------------------------------------------------- /flot/examples/axes-interacting/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Flot Examples: Interacting with axes 6 | 7 | 8 | 9 | 10 | 71 | 72 | 73 | 74 | 77 | 78 |
79 | 80 |
81 |
82 |
83 | 84 |

With multiple axes, you sometimes need to interact with them. A simple way to do this is to draw the plot, deduce the axis placements and insert a couple of divs on top to catch events.

85 | 86 |

Try clicking an axis.

87 | 88 |

89 | 90 |
91 | 92 | 95 | 96 | 97 | 98 | -------------------------------------------------------------------------------- /flot/examples/axes-time-zones/tz/etcetera: -------------------------------------------------------------------------------- 1 | #
 2 | # This file is in the public domain, so clarified as of
 3 | # 2009-05-17 by Arthur David Olson.
 4 | 
 5 | # These entries are mostly present for historical reasons, so that
 6 | # people in areas not otherwise covered by the tz files could "zic -l"
 7 | # to a time zone that was right for their area.  These days, the
 8 | # tz files cover almost all the inhabited world, and the only practical
 9 | # need now for the entries that are not on UTC are for ships at sea
10 | # that cannot use POSIX TZ settings.
11 | 
12 | Zone	Etc/GMT		0	-	GMT
13 | Zone	Etc/UTC		0	-	UTC
14 | Zone	Etc/UCT		0	-	UCT
15 | 
16 | # The following link uses older naming conventions,
17 | # but it belongs here, not in the file `backward',
18 | # as functions like gmtime load the "GMT" file to handle leap seconds properly.
19 | # We want this to work even on installations that omit the other older names.
20 | Link	Etc/GMT				GMT
21 | 
22 | Link	Etc/UTC				Etc/Universal
23 | Link	Etc/UTC				Etc/Zulu
24 | 
25 | Link	Etc/GMT				Etc/Greenwich
26 | Link	Etc/GMT				Etc/GMT-0
27 | Link	Etc/GMT				Etc/GMT+0
28 | Link	Etc/GMT				Etc/GMT0
29 | 
30 | # We use POSIX-style signs in the Zone names and the output abbreviations,
31 | # even though this is the opposite of what many people expect.
32 | # POSIX has positive signs west of Greenwich, but many people expect
33 | # positive signs east of Greenwich.  For example, TZ='Etc/GMT+4' uses
34 | # the abbreviation "GMT+4" and corresponds to 4 hours behind UTC
35 | # (i.e. west of Greenwich) even though many people would expect it to
36 | # mean 4 hours ahead of UTC (i.e. east of Greenwich).
37 | #
38 | # In the draft 5 of POSIX 1003.1-200x, the angle bracket notation allows for
39 | # TZ='+4'; if you want time zone abbreviations conforming to
40 | # ISO 8601 you can use TZ='<-0400>+4'.  Thus the commonly-expected
41 | # offset is kept within the angle bracket (and is used for display)
42 | # while the POSIX sign is kept outside the angle bracket (and is used
43 | # for calculation).
44 | #
45 | # Do not use a TZ setting like TZ='GMT+4', which is four hours behind
46 | # GMT but uses the completely misleading abbreviation "GMT".
47 | 
48 | # Earlier incarnations of this package were not POSIX-compliant,
49 | # and had lines such as
50 | #		Zone	GMT-12		-12	-	GMT-1200
51 | # We did not want things to change quietly if someone accustomed to the old
52 | # way does a
53 | #		zic -l GMT-12
54 | # so we moved the names into the Etc subdirectory.
55 | 
56 | Zone	Etc/GMT-14	14	-	GMT-14	# 14 hours ahead of GMT
57 | Zone	Etc/GMT-13	13	-	GMT-13
58 | Zone	Etc/GMT-12	12	-	GMT-12
59 | Zone	Etc/GMT-11	11	-	GMT-11
60 | Zone	Etc/GMT-10	10	-	GMT-10
61 | Zone	Etc/GMT-9	9	-	GMT-9
62 | Zone	Etc/GMT-8	8	-	GMT-8
63 | Zone	Etc/GMT-7	7	-	GMT-7
64 | Zone	Etc/GMT-6	6	-	GMT-6
65 | Zone	Etc/GMT-5	5	-	GMT-5
66 | Zone	Etc/GMT-4	4	-	GMT-4
67 | Zone	Etc/GMT-3	3	-	GMT-3
68 | Zone	Etc/GMT-2	2	-	GMT-2
69 | Zone	Etc/GMT-1	1	-	GMT-1
70 | Zone	Etc/GMT+1	-1	-	GMT+1
71 | Zone	Etc/GMT+2	-2	-	GMT+2
72 | Zone	Etc/GMT+3	-3	-	GMT+3
73 | Zone	Etc/GMT+4	-4	-	GMT+4
74 | Zone	Etc/GMT+5	-5	-	GMT+5
75 | Zone	Etc/GMT+6	-6	-	GMT+6
76 | Zone	Etc/GMT+7	-7	-	GMT+7
77 | Zone	Etc/GMT+8	-8	-	GMT+8
78 | Zone	Etc/GMT+9	-9	-	GMT+9
79 | Zone	Etc/GMT+10	-10	-	GMT+10
80 | Zone	Etc/GMT+11	-11	-	GMT+11
81 | Zone	Etc/GMT+12	-12	-	GMT+12
82 | 


--------------------------------------------------------------------------------
/routing/css/valhalla.css:
--------------------------------------------------------------------------------
  1 | body {
  2 |   font: 13px/1.5 "Helvetica Neue", Helvetica, Arial, sans-serif;
  3 |   padding: 0px;
  4 |   margin: 0px;
  5 |   background-color: #E6E6E6;
  6 | }
  7 | 
  8 | img {
  9 |     display: block;
 10 |     margin-left: auto;
 11 |     margin-right: auto;
 12 | }
 13 | 
 14 | #map {
 15 |   height:100vh;
 16 |   width: 100%;
 17 | /*  position: absolute;
 18 |   background: #fff;
 19 |   margin:0;*/
 20 | }
 21 | 
 22 | hr {
 23 |   margin-top: 20px;
 24 |   margin-bottom: 20px;
 25 |   border: 0;
 26 |   border-top: 1px solid #A4A4A4;
 27 | }
 28 | 
 29 | .modes {
 30 |   width:20px;
 31 |   height:20px;
 32 | }
 33 | 
 34 | #instructions h1, h2, h3, h4, h5, h6 {
 35 |     color:black;
 36 | }
 37 | 
 38 | div#route_inst {
 39 |   height: auto;
 40 |   overflow: auto;
 41 |   color: #ccc;
 42 |   border-collapse: collapse;
 43 | }
 44 | 
 45 | div#route_inst table td.distance{
 46 |   width: 60px;
 47 |   text-align: right;
 48 | }
 49 | 
 50 | .leaflet-control td.guide {
 51 |     padding: 3px;
 52 |     word-wrap: break-word;
 53 |     width: 270px;
 54 |     white-space: pre-wrap;
 55 |     white-space: -moz-pre-wrap;
 56 | }
 57 | 
 58 | .leaflet-control td.measure {
 59 |     padding: 3px;
 60 |     word-wrap: break-word;
 61 |     width: 60px;
 62 |     white-space: pre-wrap;
 63 |     white-space: -moz-pre-wrap;
 64 | }
 65 | 
 66 | .biketextbox, .scootertextbox, .transittextbox {
 67 |   width: 18%;
 68 |   box-sizing: border-box;
 69 |   -moz-box-sizing: border-box;
 70 |   -webkit-box-sizing: border-box;
 71 |   color: black;
 72 | }
 73 | 
 74 | ##hidechart {
 75 |   min-width: 30px;
 76 |   text-align: center;
 77 | }
 78 | 
 79 | #drive_btn, #bike_btn, #walk_btn, #motor_scooter_btn, #motorcycle_btn, #multi_btn, #elevation_btn, #truck_btn, #bikeshare_btn {
 80 |   border-color: #A4A4A4;
 81 |   background-color: #A4A4A4;
 82 |   color: #fff;
 83 | }
 84 | 
 85 | #clearbtn {
 86 |   width: 120px;
 87 |   text-align: center;
 88 | }
 89 | 
 90 | #clear_btn {
 91 |   border-color: #d4645c;
 92 |   background-color: #d4645c;
 93 |   color: #fff;
 94 | }
 95 | 
 96 | #routeResponse {
 97 |   margin-top: 30px;
 98 |   margin-bottom: 10px;
 99 | }
100 | 
101 | .reset {
102 |   border-color: #d4645c;
103 |   background-color: #d4645c;
104 |   color: #fff;
105 |   float: left;
106 |   padding: 10px 26px;
107 |   border: 1px solid #68c175;
108 |   text-transform: uppercase;
109 | }
110 | 
111 | #inputFile {
112 |     border: 0 none;
113 |     color: #FFFFFF;
114 |     font-size: 12px;
115 |     width: 350px;
116 |     margin-bottom: 10px;
117 | }
118 | 
119 | #fileSelector {
120 |     color: #000000;
121 |     overflow: hidden;
122 |     width: 350px;
123 |     -moz-border-radius: 9px 9px 9px 9px;
124 |     -webkit-border-radius: 9px 9px 9px 9px;
125 |     border-radius: 8px 8px 9px 9px;
126 |     box-shadow: 1px 1px 11px #330033;
127 |     /*background: url("arrow.gif") no-repeat scroll 319px 5px #A4A4A4;*/
128 | }
129 | 
130 | #flot-tooltip {
131 |   font-size: 12px;
132 |   font-family: Verdana, Arial, sans-serif;
133 |   position: absolute;
134 |   display: none;
135 |   padding: 2px;
136 |   background-color: #FFF;
137 |   opacity: 1;
138 |   border: 1px solid #aaa;
139 |   -moz-box-shadow: 0px 1px 1px #ddd;
140 |   -webkit-box-shadow: 0px 1px 1px #ddd;
141 |   box-shadow: 0px 1px 2px #ddd;
142 | }
143 | 


--------------------------------------------------------------------------------
/matrix/css/classic.css:
--------------------------------------------------------------------------------
1 | .columns .ui-table{border-collapse:collapse;border-width:1px 1px 0 1px;border-style:solid;border-color:#ccc;width:100%}.columns .ui-table thead tr{background-image:-webkit-linear-gradient(top, #dbdbdb 10%, #b8b8b8 100%);background-image:linear-gradient(to bottom, #dbdbdb 10%, #b8b8b8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#DBDBDB', endColorstr='#B8B8B8',GradientType=0 );color:#333;font-size:14px;font-weight:bold;text-align:left}.columns .ui-table thead tr th{padding:5px 5px 5px 8px;border-right:1px solid #878787;border-bottom:1px solid #878787}.columns .ui-table thead tr th:first-child{border-left:1px solid #ccc}.columns .ui-table thead tr th:last-child{border-right:1px solid #ccc}.columns .ui-table thead tr th .ui-arrow{display:block;float:right;font-size:10px;width:10px}.columns .ui-table thead tr th.ui-table-sort-up,.columns .ui-table thead tr th.ui-table-sort-down{background:-webkit-linear-gradient(top, #d0d9e4 10%, #94a3c0 100%);background:linear-gradient(to bottom, #d0d9e4 10%, #94a3c0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#D0D9E4', endColorstr='#94A3C0',GradientType=0 )}.columns .ui-table tbody{font-size:14px}.columns .ui-table tbody tr td{border-right:1px solid #ccc;padding:12px}.columns .ui-table tbody tr.ui-table-rows-even{background:#F1F4F8}.columns .ui-table tbody tr.ui-table-rows-odd{background:#ffffff}.columns .ui-table-footer{background-image:-webkit-linear-gradient(top, #cbcbcb 10%, #aaa 100%);background-image:linear-gradient(to bottom, #cbcbcb 10%, #aaa 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#CBCBCB', endColorstr='#AAAAAA',GradientType=0 );border-top:1px solid #878787;width:100%;padding:8px 0;font-size:11px;text-align:left;color:#333}.columns .ui-table-footer span{vertical-align:middle}.columns .ui-table-footer .ui-table-size,.columns .ui-table-footer .ui-table-results,.columns .ui-table-footer .ui-table-controls{display:inline-block;width:32%}.columns .ui-table-footer .ui-table-size{padding-left:20px}.columns .ui-table-footer .ui-table-results{text-align:center}.columns .ui-table-footer .ui-table-controls{text-align:right}.columns .ui-table-footer .ui-table-control-next,.columns .ui-table-footer .ui-table-control-prev,.columns .ui-table-footer .ui-table-control-disabled{display:inline-block;background-image:-webkit-linear-gradient(top, #fdfdfd 10%, #c0bfbe 100%);background-image:linear-gradient(to bottom, #fdfdfd 10%, #c0bfbe 100%);background-color:transparent;border:1px solid #333;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;list-style:none;margin:0;padding:5px;vertical-align:middle;font-weight:bold;color:#333;cursor:pointer;text-align:center}.columns .ui-table-footer .ui-table-control-disabled img{opacity:0.5}.columns .ui-columns-search{font-size:14px;background:-webkit-linear-gradient(top, #d1d1d1 10%, #a7a7a8 100%);background:linear-gradient(to bottom, #d1d1d1 10%, #a7a7a8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#D1D1D1', endColorstr='#A7A7A8',GradientType=0 );padding:10px;border-bottom:1px solid #878787;text-align:right}.columns .ui-columns-search input{width:200px;border-radius:10px;padding:4px 10px 4px 25px;border:2px solid transparent;background-image:url(../images/search.png);background-position:5px center;background-repeat:no-repeat}.columns .ui-columns-search input:focus{border:2px solid #6196CD;outline:none}
2 | .columns {
3 |   margin: 20px auto !important;
4 | }
5 | 


--------------------------------------------------------------------------------
/map_matching/css/classic.css:
--------------------------------------------------------------------------------
1 | .columns .ui-table{border-collapse:collapse;border-width:1px 1px 0 1px;border-style:solid;border-color:#ccc;width:100%}.columns .ui-table thead tr{background-image:-webkit-linear-gradient(top, #dbdbdb 10%, #b8b8b8 100%);background-image:linear-gradient(to bottom, #dbdbdb 10%, #b8b8b8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#DBDBDB', endColorstr='#B8B8B8',GradientType=0 );color:#333;font-size:14px;font-weight:bold;text-align:left}.columns .ui-table thead tr th{padding:5px 5px 5px 8px;border-right:1px solid #878787;border-bottom:1px solid #878787}.columns .ui-table thead tr th:first-child{border-left:1px solid #ccc}.columns .ui-table thead tr th:last-child{border-right:1px solid #ccc}.columns .ui-table thead tr th .ui-arrow{display:block;float:right;font-size:10px;width:10px}.columns .ui-table thead tr th.ui-table-sort-up,.columns .ui-table thead tr th.ui-table-sort-down{background:-webkit-linear-gradient(top, #d0d9e4 10%, #94a3c0 100%);background:linear-gradient(to bottom, #d0d9e4 10%, #94a3c0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#D0D9E4', endColorstr='#94A3C0',GradientType=0 )}.columns .ui-table tbody{font-size:14px}.columns .ui-table tbody tr td{border-right:1px solid #ccc;padding:12px}.columns .ui-table tbody tr.ui-table-rows-even{background:#F1F4F8}.columns .ui-table tbody tr.ui-table-rows-odd{background:#ffffff}.columns .ui-table-footer{background-image:-webkit-linear-gradient(top, #cbcbcb 10%, #aaa 100%);background-image:linear-gradient(to bottom, #cbcbcb 10%, #aaa 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#CBCBCB', endColorstr='#AAAAAA',GradientType=0 );border-top:1px solid #878787;width:100%;padding:8px 0;font-size:11px;text-align:left;color:#333}.columns .ui-table-footer span{vertical-align:middle}.columns .ui-table-footer .ui-table-size,.columns .ui-table-footer .ui-table-results,.columns .ui-table-footer .ui-table-controls{display:inline-block;width:32%}.columns .ui-table-footer .ui-table-size{padding-left:20px}.columns .ui-table-footer .ui-table-results{text-align:center}.columns .ui-table-footer .ui-table-controls{text-align:right}.columns .ui-table-footer .ui-table-control-next,.columns .ui-table-footer .ui-table-control-prev,.columns .ui-table-footer .ui-table-control-disabled{display:inline-block;background-image:-webkit-linear-gradient(top, #fdfdfd 10%, #c0bfbe 100%);background-image:linear-gradient(to bottom, #fdfdfd 10%, #c0bfbe 100%);background-color:transparent;border:1px solid #333;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;list-style:none;margin:0;padding:5px;vertical-align:middle;font-weight:bold;color:#333;cursor:pointer;text-align:center}.columns .ui-table-footer .ui-table-control-disabled img{opacity:0.5}.columns .ui-columns-search{font-size:14px;background:-webkit-linear-gradient(top, #d1d1d1 10%, #a7a7a8 100%);background:linear-gradient(to bottom, #d1d1d1 10%, #a7a7a8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#D1D1D1', endColorstr='#A7A7A8',GradientType=0 );padding:10px;border-bottom:1px solid #878787;text-align:right}.columns .ui-columns-search input{width:200px;border-radius:10px;padding:4px 10px 4px 25px;border:2px solid transparent;background-image:url(../images/search.png);background-position:5px center;background-repeat:no-repeat}.columns .ui-columns-search input:focus{border:2px solid #6196CD;outline:none}
2 | .columns {
3 |   margin: 20px auto !important;
4 | }
5 | 


--------------------------------------------------------------------------------
/optimized_route/css/classic.css:
--------------------------------------------------------------------------------
1 | .columns .ui-table{border-collapse:collapse;border-width:1px 1px 0 1px;border-style:solid;border-color:#ccc;width:100%}.columns .ui-table thead tr{background-image:-webkit-linear-gradient(top, #dbdbdb 10%, #b8b8b8 100%);background-image:linear-gradient(to bottom, #dbdbdb 10%, #b8b8b8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#DBDBDB', endColorstr='#B8B8B8',GradientType=0 );color:#333;font-size:14px;font-weight:bold;text-align:left}.columns .ui-table thead tr th{padding:5px 5px 5px 8px;border-right:1px solid #878787;border-bottom:1px solid #878787}.columns .ui-table thead tr th:first-child{border-left:1px solid #ccc}.columns .ui-table thead tr th:last-child{border-right:1px solid #ccc}.columns .ui-table thead tr th .ui-arrow{display:block;float:right;font-size:10px;width:10px}.columns .ui-table thead tr th.ui-table-sort-up,.columns .ui-table thead tr th.ui-table-sort-down{background:-webkit-linear-gradient(top, #d0d9e4 10%, #94a3c0 100%);background:linear-gradient(to bottom, #d0d9e4 10%, #94a3c0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#D0D9E4', endColorstr='#94A3C0',GradientType=0 )}.columns .ui-table tbody{font-size:14px}.columns .ui-table tbody tr td{border-right:1px solid #ccc;padding:12px}.columns .ui-table tbody tr.ui-table-rows-even{background:#F1F4F8}.columns .ui-table tbody tr.ui-table-rows-odd{background:#ffffff}.columns .ui-table-footer{background-image:-webkit-linear-gradient(top, #cbcbcb 10%, #aaa 100%);background-image:linear-gradient(to bottom, #cbcbcb 10%, #aaa 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#CBCBCB', endColorstr='#AAAAAA',GradientType=0 );border-top:1px solid #878787;width:100%;padding:8px 0;font-size:11px;text-align:left;color:#333}.columns .ui-table-footer span{vertical-align:middle}.columns .ui-table-footer .ui-table-size,.columns .ui-table-footer .ui-table-results,.columns .ui-table-footer .ui-table-controls{display:inline-block;width:32%}.columns .ui-table-footer .ui-table-size{padding-left:20px}.columns .ui-table-footer .ui-table-results{text-align:center}.columns .ui-table-footer .ui-table-controls{text-align:right}.columns .ui-table-footer .ui-table-control-next,.columns .ui-table-footer .ui-table-control-prev,.columns .ui-table-footer .ui-table-control-disabled{display:inline-block;background-image:-webkit-linear-gradient(top, #fdfdfd 10%, #c0bfbe 100%);background-image:linear-gradient(to bottom, #fdfdfd 10%, #c0bfbe 100%);background-color:transparent;border:1px solid #333;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;list-style:none;margin:0;padding:5px;vertical-align:middle;font-weight:bold;color:#333;cursor:pointer;text-align:center}.columns .ui-table-footer .ui-table-control-disabled img{opacity:0.5}.columns .ui-columns-search{font-size:14px;background:-webkit-linear-gradient(top, #d1d1d1 10%, #a7a7a8 100%);background:linear-gradient(to bottom, #d1d1d1 10%, #a7a7a8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#D1D1D1', endColorstr='#A7A7A8',GradientType=0 );padding:10px;border-bottom:1px solid #878787;text-align:right}.columns .ui-columns-search input{width:200px;border-radius:10px;padding:4px 10px 4px 25px;border:2px solid transparent;background-image:url(../images/search.png);background-position:5px center;background-repeat:no-repeat}.columns .ui-columns-search input:focus{border:2px solid #6196CD;outline:none}
2 | .columns {
3 |   margin: 20px auto !important;
4 | }
5 | 


--------------------------------------------------------------------------------
/flot/examples/realtime/index.html:
--------------------------------------------------------------------------------
  1 | 
  2 | 
  3 | 
  4 | 	
  5 | 	Flot Examples: Real-time updates
  6 | 	
  7 | 	
  8 | 	
  9 | 	
 10 | 	
 98 | 
 99 | 
100 | 
101 | 	
104 | 
105 | 	
106 | 107 |
108 |
109 |
110 | 111 |

You can update a chart periodically to get a real-time effect by using a timer to insert the new data in the plot and redraw it.

112 | 113 |

Time between updates: milliseconds

114 | 115 |
116 | 117 | 120 | 121 | 122 | 123 | -------------------------------------------------------------------------------- /flot/FAQ.md: -------------------------------------------------------------------------------- 1 | ## Frequently asked questions ## 2 | 3 | #### How much data can Flot cope with? #### 4 | 5 | Flot will happily draw everything you send to it so the answer 6 | depends on the browser. The excanvas emulation used for IE (built with 7 | VML) makes IE by far the slowest browser so be sure to test with that 8 | if IE users are in your target group (for large plots in IE, you can 9 | also check out Flashcanvas which may be faster). 10 | 11 | 1000 points is not a problem, but as soon as you start having more 12 | points than the pixel width, you should probably start thinking about 13 | downsampling/aggregation as this is near the resolution limit of the 14 | chart anyway. If you downsample server-side, you also save bandwidth. 15 | 16 | 17 | #### Flot isn't working when I'm using JSON data as source! #### 18 | 19 | Actually, Flot loves JSON data, you just got the format wrong. 20 | Double check that you're not inputting strings instead of numbers, 21 | like [["0", "-2.13"], ["5", "4.3"]]. This is most common mistake, and 22 | the error might not show up immediately because Javascript can do some 23 | conversion automatically. 24 | 25 | 26 | #### Can I export the graph? #### 27 | 28 | You can grab the image rendered by the canvas element used by Flot 29 | as a PNG or JPEG (remember to set a background). Note that it won't 30 | include anything not drawn in the canvas (such as the legend). And it 31 | doesn't work with excanvas which uses VML, but you could try 32 | Flashcanvas. 33 | 34 | 35 | #### The bars are all tiny in time mode? #### 36 | 37 | It's not really possible to determine the bar width automatically. 38 | So you have to set the width with the barWidth option which is NOT in 39 | pixels, but in the units of the x axis (or the y axis for horizontal 40 | bars). For time mode that's milliseconds so the default value of 1 41 | makes the bars 1 millisecond wide. 42 | 43 | 44 | #### Can I use Flot with libraries like Mootools or Prototype? #### 45 | 46 | Yes, Flot supports it out of the box and it's easy! Just use jQuery 47 | instead of $, e.g. call jQuery.plot instead of $.plot and use 48 | jQuery(something) instead of $(something). As a convenience, you can 49 | put in a DOM element for the graph placeholder where the examples and 50 | the API documentation are using jQuery objects. 51 | 52 | Depending on how you include jQuery, you may have to add one line of 53 | code to prevent jQuery from overwriting functions from the other 54 | libraries, see the documentation in jQuery ("Using jQuery with other 55 | libraries") for details. 56 | 57 | 58 | #### Flot doesn't work with [insert name of Javascript UI framework]! #### 59 | 60 | Flot is using standard HTML to make charts. If this is not working, 61 | it's probably because the framework you're using is doing something 62 | weird with the DOM or with the CSS that is interfering with Flot. 63 | 64 | A common problem is that there's display:none on a container until the 65 | user does something. Many tab widgets work this way, and there's 66 | nothing wrong with it - you just can't call Flot inside a display:none 67 | container as explained in the README so you need to hold off the Flot 68 | call until the container is actually displayed (or use 69 | visibility:hidden instead of display:none or move the container 70 | off-screen). 71 | 72 | If you find there's a specific thing we can do to Flot to help, feel 73 | free to submit a bug report. Otherwise, you're welcome to ask for help 74 | on the forum/mailing list, but please don't submit a bug report to 75 | Flot. 76 | -------------------------------------------------------------------------------- /flot/jquery.flot.resize.js: -------------------------------------------------------------------------------- 1 | /* Flot plugin for automatically redrawing plots as the placeholder resizes. 2 | 3 | Copyright (c) 2007-2014 IOLA and Ole Laursen. 4 | Licensed under the MIT license. 5 | 6 | It works by listening for changes on the placeholder div (through the jQuery 7 | resize event plugin) - if the size changes, it will redraw the plot. 8 | 9 | There are no options. If you need to disable the plugin for some plots, you 10 | can just fix the size of their placeholders. 11 | 12 | */ 13 | 14 | /* Inline dependency: 15 | * jQuery resize event - v1.1 - 3/14/2010 16 | * http://benalman.com/projects/jquery-resize-plugin/ 17 | * 18 | * Copyright (c) 2010 "Cowboy" Ben Alman 19 | * Dual licensed under the MIT and GPL licenses. 20 | * http://benalman.com/about/license/ 21 | */ 22 | (function($,e,t){"$:nomunge";var i=[],n=$.resize=$.extend($.resize,{}),a,r=false,s="setTimeout",u="resize",m=u+"-special-event",o="pendingDelay",l="activeDelay",f="throttleWindow";n[o]=200;n[l]=20;n[f]=true;$.event.special[u]={setup:function(){if(!n[f]&&this[s]){return false}var e=$(this);i.push(this);e.data(m,{w:e.width(),h:e.height()});if(i.length===1){a=t;h()}},teardown:function(){if(!n[f]&&this[s]){return false}var e=$(this);for(var t=i.length-1;t>=0;t--){if(i[t]==this){i.splice(t,1);break}}e.removeData(m);if(!i.length){if(r){cancelAnimationFrame(a)}else{clearTimeout(a)}a=null}},add:function(e){if(!n[f]&&this[s]){return false}var i;function a(e,n,a){var r=$(this),s=r.data(m)||{};s.w=n!==t?n:r.width();s.h=a!==t?a:r.height();i.apply(this,arguments)}if($.isFunction(e)){i=e;return a}else{i=e.handler;e.handler=a}}};function h(t){if(r===true){r=t||1}for(var s=i.length-1;s>=0;s--){var l=$(i[s]);if(l[0]==e||l.is(":visible")){var f=l.width(),c=l.height(),d=l.data(m);if(d&&(f!==d.w||c!==d.h)){l.trigger(u,[d.w=f,d.h=c]);r=t||true}}else{d=l.data(m);d.w=0;d.h=0}}if(a!==null){if(r&&(t==null||t-r<1e3)){a=e.requestAnimationFrame(h)}else{a=setTimeout(h,n[o]);r=false}}}if(!e.requestAnimationFrame){e.requestAnimationFrame=function(){return e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||function(t,i){return e.setTimeout(function(){t((new Date).getTime())},n[l])}}()}if(!e.cancelAnimationFrame){e.cancelAnimationFrame=function(){return e.webkitCancelRequestAnimationFrame||e.mozCancelRequestAnimationFrame||e.oCancelRequestAnimationFrame||e.msCancelRequestAnimationFrame||clearTimeout}()}})(jQuery,this); 23 | 24 | (function ($) { 25 | var options = { }; // no options 26 | 27 | function init(plot) { 28 | function onResize() { 29 | var placeholder = plot.getPlaceholder(); 30 | 31 | // somebody might have hidden us and we can't plot 32 | // when we don't have the dimensions 33 | if (placeholder.width() == 0 || placeholder.height() == 0) 34 | return; 35 | 36 | plot.resize(); 37 | plot.setupGrid(); 38 | plot.draw(); 39 | } 40 | 41 | function bindEvents(plot, eventHolder) { 42 | plot.getPlaceholder().resize(onResize); 43 | } 44 | 45 | function shutdown(plot, eventHolder) { 46 | plot.getPlaceholder().unbind("resize", onResize); 47 | } 48 | 49 | plot.hooks.bindEvents.push(bindEvents); 50 | plot.hooks.shutdown.push(shutdown); 51 | } 52 | 53 | $.plot.plugins.push({ 54 | init: init, 55 | options: options, 56 | name: 'resize', 57 | version: '1.0' 58 | }); 59 | })(jQuery); 60 | -------------------------------------------------------------------------------- /flot/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | ## Contributing to Flot ## 2 | 3 | We welcome all contributions, but following these guidelines results in less 4 | work for us, and a faster and better response. 5 | 6 | ### Issues ### 7 | 8 | Issues are not a way to ask general questions about Flot. If you see unexpected 9 | behavior but are not 100% certain that it is a bug, please try posting to the 10 | [forum](http://groups.google.com/group/flot-graphs) first, and confirm that 11 | what you see is really a Flot problem before creating a new issue for it. When 12 | reporting a bug, please include a working demonstration of the problem, if 13 | possible, or at least a clear description of the options you're using and the 14 | environment (browser and version, jQuery version, other libraries) that you're 15 | running under. 16 | 17 | If you have suggestions for new features, or changes to existing ones, we'd 18 | love to hear them! Please submit each suggestion as a separate new issue. 19 | 20 | If you would like to work on an existing issue, please make sure it is not 21 | already assigned to someone else. If an issue is assigned to someone, that 22 | person has already started working on it. So, pick unassigned issues to prevent 23 | duplicated effort. 24 | 25 | ### Pull Requests ### 26 | 27 | To make merging as easy as possible, please keep these rules in mind: 28 | 29 | 1. Submit new features or architectural changes to the *<version>-work* 30 | branch for the next major release. Submit bug fixes to the master branch. 31 | 32 | 2. Divide larger changes into a series of small, logical commits with 33 | descriptive messages. 34 | 35 | 3. Rebase, if necessary, before submitting your pull request, to reduce the 36 | work we need to do to merge it. 37 | 38 | 4. Format your code according to the style guidelines below. 39 | 40 | ### Flot Style Guidelines ### 41 | 42 | Flot follows the [jQuery Core Style Guidelines](http://docs.jquery.com/JQuery_Core_Style_Guidelines), 43 | with the following updates and exceptions: 44 | 45 | #### Spacing #### 46 | 47 | Use four-space indents, no tabs. Do not add horizontal space around parameter 48 | lists, loop definitions, or array/object indices. For example: 49 | 50 | ```js 51 | for ( var i = 0; i < data.length; i++ ) { // This block is wrong! 52 | if ( data[ i ] > 1 ) { 53 | data[ i ] = 2; 54 | } 55 | } 56 | 57 | for (var i = 0; i < data.length; i++) { // This block is correct! 58 | if (data[i] > 1) { 59 | data[i] = 2; 60 | } 61 | } 62 | ``` 63 | 64 | #### Comments #### 65 | 66 | Use [jsDoc](http://usejsdoc.org) comments for all file and function headers. 67 | Use // for all inline and block comments, regardless of length. 68 | 69 | All // comment blocks should have an empty line above *and* below them. For 70 | example: 71 | 72 | ```js 73 | var a = 5; 74 | 75 | // We're going to loop here 76 | // TODO: Make this loop faster, better, stronger! 77 | 78 | for (var x = 0; x < 10; x++) {} 79 | ``` 80 | 81 | #### Wrapping #### 82 | 83 | Block comments should be wrapped at 80 characters. 84 | 85 | Code should attempt to wrap at 80 characters, but may run longer if wrapping 86 | would hurt readability more than having to scroll horizontally. This is a 87 | judgement call made on a situational basis. 88 | 89 | Statements containing complex logic should not be wrapped arbitrarily if they 90 | do not exceed 80 characters. For example: 91 | 92 | ```js 93 | if (a == 1 && // This block is wrong! 94 | b == 2 && 95 | c == 3) {} 96 | 97 | if (a == 1 && b == 2 && c == 3) {} // This block is correct! 98 | ``` 99 | -------------------------------------------------------------------------------- /flot/examples/interacting/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Flot Examples: Interactivity 6 | 7 | 8 | 9 | 10 | 87 | 88 | 89 | 92 | 93 |
94 | 95 |
96 |
97 |
98 | 99 |

One of the goals of Flot is to support user interactions. Try pointing and clicking on the points.

100 | 101 |

102 | 103 | 104 | 105 |

106 | 107 |

A tooltip is easy to build with a bit of jQuery code and the data returned from the plot.

108 | 109 |

110 | 111 |
112 | 113 | 116 | 117 | 118 | 119 | -------------------------------------------------------------------------------- /flot/examples/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Flot Examples 6 | 7 | 15 | 16 | 17 | 27 | 28 | 29 | 30 | 33 | 34 |
35 | 36 |

Here are some examples for Flot, the Javascript charting library for jQuery:

37 | 38 |

Basic Usage

39 | 40 | 46 | 47 |

Interactivity

48 | 49 | 56 | 57 |

Additional Features

58 | 59 | 72 | 73 |
74 | 75 | 78 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /flot/examples/axes-time-zones/tz/leapseconds: -------------------------------------------------------------------------------- 1 | #
  2 | # This file is in the public domain, so clarified as of
  3 | # 2009-05-17 by Arthur David Olson.
  4 | 
  5 | # Allowance for leapseconds added to each timezone file.
  6 | 
  7 | # The International Earth Rotation Service periodically uses leap seconds
  8 | # to keep UTC to within 0.9 s of UT1
  9 | # (which measures the true angular orientation of the earth in space); see
 10 | # Terry J Quinn, The BIPM and the accurate measure of time,
 11 | # Proc IEEE 79, 7 (July 1991), 894-905.
 12 | # There were no leap seconds before 1972, because the official mechanism
 13 | # accounting for the discrepancy between atomic time and the earth's rotation
 14 | # did not exist until the early 1970s.
 15 | 
 16 | # The correction (+ or -) is made at the given time, so lines
 17 | # will typically look like:
 18 | #	Leap	YEAR	MON	DAY	23:59:60	+	R/S
 19 | # or
 20 | #	Leap	YEAR	MON	DAY	23:59:59	-	R/S
 21 | 
 22 | # If the leapsecond is Rolling (R) the given time is local time
 23 | # If the leapsecond is Stationary (S) the given time is UTC
 24 | 
 25 | # Leap	YEAR	MONTH	DAY	HH:MM:SS	CORR	R/S
 26 | Leap	1972	Jun	30	23:59:60	+	S
 27 | Leap	1972	Dec	31	23:59:60	+	S
 28 | Leap	1973	Dec	31	23:59:60	+	S
 29 | Leap	1974	Dec	31	23:59:60	+	S
 30 | Leap	1975	Dec	31	23:59:60	+	S
 31 | Leap	1976	Dec	31	23:59:60	+	S
 32 | Leap	1977	Dec	31	23:59:60	+	S
 33 | Leap	1978	Dec	31	23:59:60	+	S
 34 | Leap	1979	Dec	31	23:59:60	+	S
 35 | Leap	1981	Jun	30	23:59:60	+	S
 36 | Leap	1982	Jun	30	23:59:60	+	S
 37 | Leap	1983	Jun	30	23:59:60	+	S
 38 | Leap	1985	Jun	30	23:59:60	+	S
 39 | Leap	1987	Dec	31	23:59:60	+	S
 40 | Leap	1989	Dec	31	23:59:60	+	S
 41 | Leap	1990	Dec	31	23:59:60	+	S
 42 | Leap	1992	Jun	30	23:59:60	+	S
 43 | Leap	1993	Jun	30	23:59:60	+	S
 44 | Leap	1994	Jun	30	23:59:60	+	S
 45 | Leap	1995	Dec	31	23:59:60	+	S
 46 | Leap	1997	Jun	30	23:59:60	+	S
 47 | Leap	1998	Dec	31	23:59:60	+	S
 48 | Leap	2005	Dec	31	23:59:60	+	S
 49 | Leap	2008	Dec	31	23:59:60	+	S
 50 | Leap	2012	Jun	30	23:59:60	+	S
 51 | 
 52 | # INTERNATIONAL EARTH ROTATION AND REFERENCE SYSTEMS SERVICE (IERS)
 53 | #
 54 | # SERVICE INTERNATIONAL DE LA ROTATION TERRESTRE ET DES SYSTEMES DE REFERENCE
 55 | #
 56 | #
 57 | # SERVICE DE LA ROTATION TERRESTRE
 58 | # OBSERVATOIRE DE PARIS
 59 | # 61, Av. de l'Observatoire 75014 PARIS (France)
 60 | # Tel.      : 33 (0) 1 40 51 22 26
 61 | # FAX       : 33 (0) 1 40 51 22 91
 62 | # e-mail    : (E-Mail Removed)
 63 | # http://hpiers.obspm.fr/eop-pc
 64 | #
 65 | # Paris, 5 January 2012
 66 | #
 67 | #
 68 | # Bulletin C 43
 69 | #
 70 | # To authorities responsible
 71 | # for the measurement and
 72 | # distribution of time
 73 | #
 74 | #
 75 | # UTC TIME STEP
 76 | # on the 1st of July 2012
 77 | #
 78 | #
 79 | # A positive leap second will be introduced at the end of June 2012.
 80 | # The sequence of dates of the UTC second markers will be:
 81 | #
 82 | #                          2012 June 30,     23h 59m 59s
 83 | #                          2012 June 30,     23h 59m 60s
 84 | #                          2012 July  1,      0h  0m  0s
 85 | #
 86 | # The difference between UTC and the International Atomic Time TAI is:
 87 | #
 88 | # from 2009 January 1, 0h UTC, to 2012 July 1  0h UTC  : UTC-TAI = - 34s
 89 | # from 2012 July 1,    0h UTC, until further notice    : UTC-TAI = - 35s
 90 | #
 91 | # Leap seconds can be introduced in UTC at the end of the months of December
 92 | # or June, depending on the evolution of UT1-TAI. Bulletin C is mailed every
 93 | # six months, either to announce a time step in UTC or to confirm that there
 94 | # will be no time step at the next possible date.
 95 | #
 96 | #
 97 | # Daniel GAMBIS
 98 | # Head
 99 | # Earth Orientation Center of IERS
100 | # Observatoire de Paris, France
101 | 


--------------------------------------------------------------------------------
/expansion/index.html:
--------------------------------------------------------------------------------
  1 | 
  2 | 
  3 | 
  4 |   Expansion
  5 |   
  6 |   
  7 |   
  8 |   
 17 | 
 18 | 
 19 |   
20 |
21 | 22 |
23 |
24 |
25 | 26 | 27 | 28 |
29 | 30 | 31 | 105 | 106 | 107 | -------------------------------------------------------------------------------- /elevation/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 46 |
47 |
48 |
49 |
50 | 51 | 52 | 53 | 54 | 62 | 63 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /flot/jquery.flot.canvas.min.js: -------------------------------------------------------------------------------- 1 | /* Javascript plotting library for jQuery, version 0.8.3. 2 | 3 | Copyright (c) 2007-2014 IOLA and Ole Laursen. 4 | Licensed under the MIT license. 5 | 6 | */ 7 | (function($){var options={canvas:true};var render,getTextInfo,addText;var hasOwnProperty=Object.prototype.hasOwnProperty;function init(plot,classes){var Canvas=classes.Canvas;if(render==null){getTextInfo=Canvas.prototype.getTextInfo,addText=Canvas.prototype.addText,render=Canvas.prototype.render}Canvas.prototype.render=function(){if(!plot.getOptions().canvas){return render.call(this)}var context=this.context,cache=this._textCache;context.save();context.textBaseline="middle";for(var layerKey in cache){if(hasOwnProperty.call(cache,layerKey)){var layerCache=cache[layerKey];for(var styleKey in layerCache){if(hasOwnProperty.call(layerCache,styleKey)){var styleCache=layerCache[styleKey],updateStyles=true;for(var key in styleCache){if(hasOwnProperty.call(styleCache,key)){var info=styleCache[key],positions=info.positions,lines=info.lines;if(updateStyles){context.fillStyle=info.font.color;context.font=info.font.definition;updateStyles=false}for(var i=0,position;position=positions[i];i++){if(position.active){for(var j=0,line;line=position.lines[j];j++){context.fillText(lines[j].text,line[0],line[1])}}else{positions.splice(i--,1)}}if(positions.length==0){delete styleCache[key]}}}}}}}context.restore()};Canvas.prototype.getTextInfo=function(layer,text,font,angle,width){if(!plot.getOptions().canvas){return getTextInfo.call(this,layer,text,font,angle,width)}var textStyle,layerCache,styleCache,info;text=""+text;if(typeof font==="object"){textStyle=font.style+" "+font.variant+" "+font.weight+" "+font.size+"px "+font.family}else{textStyle=font}layerCache=this._textCache[layer];if(layerCache==null){layerCache=this._textCache[layer]={}}styleCache=layerCache[textStyle];if(styleCache==null){styleCache=layerCache[textStyle]={}}info=styleCache[text];if(info==null){var context=this.context;if(typeof font!=="object"){var element=$("
 
").css("position","absolute").addClass(typeof font==="string"?font:null).appendTo(this.getTextLayer(layer));font={lineHeight:element.height(),style:element.css("font-style"),variant:element.css("font-variant"),weight:element.css("font-weight"),family:element.css("font-family"),color:element.css("color")};font.size=element.css("line-height",1).height();element.remove()}textStyle=font.style+" "+font.variant+" "+font.weight+" "+font.size+"px "+font.family;info=styleCache[text]={width:0,height:0,positions:[],lines:[],font:{definition:textStyle,color:font.color}};context.save();context.font=textStyle;var lines=(text+"").replace(/
|\r\n|\r/g,"\n").split("\n");for(var i=0;i 2 | 3 | 5 | 8 | 15 | 16 | 24 | 25 | 26 | 27 | 33 | 34 | 35 | 38 | 39 | 40 | 42 | 43 | 44 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /flot/examples/tracking/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Flot Examples: Tracking 6 | 7 | 8 | 9 | 10 | 11 | 109 | 110 | 111 | 112 | 115 | 116 |
117 | 118 |
119 |
120 |
121 | 122 |

You can add crosshairs that'll track the mouse position, either on both axes or as here on only one.

123 | 124 |

If you combine it with listening on hover events, you can use it to track the intersection on the curves by interpolating the data points (look at the legend).

125 | 126 |

127 | 128 |
129 | 130 | 133 | 134 | 135 | 136 | -------------------------------------------------------------------------------- /matrix/js/matrix.js: -------------------------------------------------------------------------------- 1 | const app = angular.module('matrix', []) 2 | 3 | const defaultMode = 'auto' 4 | const serviceUrl = 'https://valhalla1.openstreetmap.de/' 5 | 6 | // hooks up to the div whose data-ng-controller attribute matches this name 7 | app.controller('MatrixController', function($scope, $rootScope, $sce, $http) { 8 | const road = L.tileLayer('http://b.tile.openstreetmap.org/{z}/{x}/{y}.png', { 9 | attribution: '© OpenStreetMap contributers' 10 | }) 11 | 12 | const map = L.map('map', { 13 | zoom: 13, 14 | zoomControl: true, 15 | center: { 16 | lat: 40.7486, 17 | lng: -73.9690 18 | }, 19 | layers: [road] 20 | }) 21 | 22 | const getOriginIcon = function () { 23 | return new L.Icon({ 24 | iconUrl: '../matrix/resource/matrix_pin_start.png', 25 | iconSize: [30, 36], 26 | shadowUrl: null 27 | }) 28 | } 29 | 30 | const getDestinationIcon = function () { 31 | return new L.Icon({ 32 | iconUrl: '../matrix/resource/matrix_pin_end.png', 33 | iconSize: [30, 36], 34 | shadowUrl: null 35 | }) 36 | } 37 | 38 | let counterText = 0 39 | let markers = [] 40 | 41 | $rootScope.$on('map.setView', function (ev, geo, zoom) { 42 | map.setView(geo, zoom || 8) 43 | map.options.maxZoom = 14 44 | }) 45 | 46 | $rootScope.$on('map.dropMarker', function (ev, geo, locCount, icon) { 47 | const marker = new L.marker(geo, { icon: icon }) 48 | marker.bindLabel((locCount).toString(), { 49 | position: [geo.lat, geo.lon], 50 | noHide: true, 51 | offset: (locCount < 10) ? [-9, -12] : [-13, -12] 52 | }) 53 | map.addLayer(marker) 54 | markers.push(marker) 55 | }) 56 | 57 | $scope.setMode = function (mode) { 58 | $scope.mode = mode 59 | } 60 | 61 | $scope.mode = defaultMode 62 | $scope.startPoints = [] 63 | $scope.endPoints = [] 64 | $scope.matrixResult = [] 65 | $scope.editingFocus = 'start_points' 66 | $scope.appView = 'control' 67 | 68 | $scope.backToControlView = function (e) { 69 | $scope.appView = 'control' 70 | } 71 | 72 | $scope.clearAll = function (e) { 73 | $scope.startPoints = [] 74 | $scope.endPoints = [] 75 | $scope.matrixResult = [] 76 | $scope.appView = 'control' 77 | $scope.editingFocus = 'start_points' 78 | for (let i = 0; i < markers.length; i++) { 79 | map.removeLayer(markers[i]) 80 | } 81 | markers = [] 82 | counterText = 0 83 | } 84 | 85 | $scope.goToEndPoints = function (e) { 86 | $scope.editingFocus = 'end_points' 87 | counterText = 0 88 | } 89 | 90 | map.on('click', function (e) { 91 | const geo = { 92 | lat: e.latlng.lat.toFixed(6), 93 | lon: e.latlng.lng.toFixed(6) 94 | } 95 | if ($scope.editingFocus === 'end_points') { 96 | $rootScope.$emit('map.dropMarker', [geo.lat, geo.lon], counterText, getDestinationIcon()) 97 | $scope.endPoints.push(geo) 98 | } else { 99 | $rootScope.$emit('map.dropMarker', [geo.lat, geo.lon], counterText, getOriginIcon()) 100 | $scope.startPoints.push(geo) 101 | } 102 | counterText++ 103 | $scope.$apply() 104 | }) 105 | 106 | const matrixBtn = document.getElementById('matrix_btn') 107 | matrixBtn.addEventListener('click', matrix) 108 | 109 | function matrix () { 110 | const params = JSON.stringify({ 111 | sources: $scope.startPoints, 112 | targets: $scope.endPoints, 113 | costing: $scope.mode, 114 | units: 'km' 115 | }) 116 | 117 | const url = serviceUrl + 'sources_to_targets?json=' + params 118 | document.getElementById('matrixResponseLink').href = url 119 | 120 | fetch(url).then(data => data.json()).then(data => { 121 | $scope.matrixResult = data.sources_to_targets.flat() 122 | $scope.appView = 'matrixTable' 123 | $scope.$apply() 124 | }) 125 | } 126 | }) 127 | -------------------------------------------------------------------------------- /flot/examples/axes-time-zones/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Flot Examples: Time zones 6 | 7 | 8 | 9 | 10 | 11 | 12 | 83 | 84 | 85 | 86 | 89 | 90 |
91 | 92 |

UTC

93 |
94 |
95 |
96 | 97 |

Browser

98 |
99 |
100 |
101 | 102 |

Chicago

103 |
104 |
105 |
106 | 107 |
108 | 109 | 112 | 113 | 114 | 115 | -------------------------------------------------------------------------------- /flot/examples/zooming/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Flot Examples: Selection and zooming 6 | 7 | 8 | 9 | 10 | 11 | 121 | 122 | 123 | 124 | 127 | 128 |
129 | 130 |
131 |
132 |
133 |
134 | 135 |

Selection support makes it easy to construct flexible zooming schemes. With a few lines of code, the small overview plot to the right has been connected to the large plot. Try selecting a rectangle on either of them.

136 | 137 |
138 | 139 | 142 | 143 | 144 | 145 | -------------------------------------------------------------------------------- /flot/README.md: -------------------------------------------------------------------------------- 1 | # Flot [![Build status](https://travis-ci.org/flot/flot.png)](https://travis-ci.org/flot/flot) 2 | 3 | ## About ## 4 | 5 | Flot is a Javascript plotting library for jQuery. 6 | Read more at the website: 7 | 8 | Take a look at the the examples in examples/index.html; they should give a good 9 | impression of what Flot can do, and the source code of the examples is probably 10 | the fastest way to learn how to use Flot. 11 | 12 | 13 | ## Installation ## 14 | 15 | Just include the Javascript file after you've included jQuery. 16 | 17 | Generally, all browsers that support the HTML5 canvas tag are 18 | supported. 19 | 20 | For support for Internet Explorer < 9, you can use [Excanvas] 21 | [excanvas], a canvas emulator; this is used in the examples bundled 22 | with Flot. You just include the excanvas script like this: 23 | 24 | ```html 25 | 26 | ``` 27 | 28 | If it's not working on your development IE 6.0, check that it has 29 | support for VML which Excanvas is relying on. It appears that some 30 | stripped down versions used for test environments on virtual machines 31 | lack the VML support. 32 | 33 | You can also try using [Flashcanvas][flashcanvas], which uses Flash to 34 | do the emulation. Although Flash can be a bit slower to load than VML, 35 | if you've got a lot of points, the Flash version can be much faster 36 | overall. Flot contains some wrapper code for activating Excanvas which 37 | Flashcanvas is compatible with. 38 | 39 | You need at least jQuery 1.2.6, but try at least 1.3.2 for interactive 40 | charts because of performance improvements in event handling. 41 | 42 | 43 | ## Basic usage ## 44 | 45 | Create a placeholder div to put the graph in: 46 | 47 | ```html 48 |
49 | ``` 50 | 51 | You need to set the width and height of this div, otherwise the plot 52 | library doesn't know how to scale the graph. You can do it inline like 53 | this: 54 | 55 | ```html 56 |
57 | ``` 58 | 59 | You can also do it with an external stylesheet. Make sure that the 60 | placeholder isn't within something with a display:none CSS property - 61 | in that case, Flot has trouble measuring label dimensions which 62 | results in garbled looks and might have trouble measuring the 63 | placeholder dimensions which is fatal (it'll throw an exception). 64 | 65 | Then when the div is ready in the DOM, which is usually on document 66 | ready, run the plot function: 67 | 68 | ```js 69 | $.plot($("#placeholder"), data, options); 70 | ``` 71 | 72 | Here, data is an array of data series and options is an object with 73 | settings if you want to customize the plot. Take a look at the 74 | examples for some ideas of what to put in or look at the 75 | [API reference](API.md). Here's a quick example that'll draw a line 76 | from (0, 0) to (1, 1): 77 | 78 | ```js 79 | $.plot($("#placeholder"), [ [[0, 0], [1, 1]] ], { yaxis: { max: 1 } }); 80 | ``` 81 | 82 | The plot function immediately draws the chart and then returns a plot 83 | object with a couple of methods. 84 | 85 | 86 | ## What's with the name? ## 87 | 88 | First: it's pronounced with a short o, like "plot". Not like "flawed". 89 | 90 | So "Flot" rhymes with "plot". 91 | 92 | And if you look up "flot" in a Danish-to-English dictionary, some of 93 | the words that come up are "good-looking", "attractive", "stylish", 94 | "smart", "impressive", "extravagant". One of the main goals with Flot 95 | is pretty looks. 96 | 97 | 98 | ## Notes about the examples ## 99 | 100 | In order to have a useful, functional example of time-series plots using time 101 | zones, date.js from [timezone-js][timezone-js] (released under the Apache 2.0 102 | license) and the [Olson][olson] time zone database (released to the public 103 | domain) have been included in the examples directory. They are used in 104 | examples/axes-time-zones/index.html. 105 | 106 | 107 | [excanvas]: http://code.google.com/p/explorercanvas/ 108 | [flashcanvas]: http://code.google.com/p/flashcanvas/ 109 | [timezone-js]: https://github.com/mde/timezone-js 110 | [olson]: http://ftp.iana.org/time-zones 111 | -------------------------------------------------------------------------------- /routing/js/lrm/L.Routing.Line.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | 'use strict'; 3 | 4 | var L = require('leaflet'); 5 | 6 | L.Routing = L.Routing || {}; 7 | 8 | L.Routing.Line = L.LayerGroup.extend({ 9 | includes: L.Mixin.Events, 10 | 11 | options: { 12 | styles: [ 13 | {color: 'black', opacity: 0.15, weight: 9}, 14 | {color: 'white', opacity: 0.8, weight: 6}, 15 | {color: 'red', opacity: 1, weight: 2} 16 | ], 17 | missingRouteStyles: [ 18 | {color: 'black', opacity: 0.15, weight: 7}, 19 | {color: 'white', opacity: 0.6, weight: 4}, 20 | {color: 'gray', opacity: 0.8, weight: 2, dashArray: '7,12'} 21 | ], 22 | addWaypoints: true, 23 | extendToWaypoints: true, 24 | missingRouteTolerance: 10 25 | }, 26 | 27 | initialize: function(route, options) { 28 | L.setOptions(this, options); 29 | L.LayerGroup.prototype.initialize.call(this, options); 30 | this._route = route; 31 | 32 | if (this.options.extendToWaypoints) { 33 | this._extendToWaypoints(); 34 | } 35 | 36 | if (route.subRoutes) { 37 | for(var i = 0; i < route.subRoutes.length; i++) { 38 | if(!route.subRoutes[i].styles) route.subRoutes[i].styles = this.options.styles; 39 | this._addSegment( 40 | route.subRoutes[i].coordinates, 41 | route.subRoutes[i].styles, 42 | this.options.addWaypoints); 43 | } 44 | } else { 45 | this._addSegment( 46 | route.coordinates, 47 | this.options.styles, 48 | this.options.addWaypoints); 49 | } 50 | }, 51 | 52 | addTo: function(map) { 53 | map.addLayer(this); 54 | return this; 55 | }, 56 | getBounds: function() { 57 | return L.latLngBounds(this._route.coordinates); 58 | }, 59 | 60 | _findWaypointIndices: function() { 61 | var wps = this._route.inputWaypoints, 62 | indices = [], 63 | i; 64 | for (i = 0; i < wps.length; i++) { 65 | indices.push(this._findClosestRoutePoint(wps[i].latLng)); 66 | } 67 | 68 | return indices; 69 | }, 70 | 71 | _findClosestRoutePoint: function(latlng) { 72 | var minDist = Number.MAX_VALUE, 73 | minIndex, 74 | i, 75 | d; 76 | 77 | for (i = this._route.coordinates.length - 1; i >= 0 ; i--) { 78 | // TODO: maybe do this in pixel space instead? 79 | d = latlng.distanceTo(this._route.coordinates[i]); 80 | if (d < minDist) { 81 | minIndex = i; 82 | minDist = d; 83 | } 84 | } 85 | 86 | return minIndex; 87 | }, 88 | 89 | _extendToWaypoints: function() { 90 | var wps = this._route.inputWaypoints, 91 | wpIndices = this._getWaypointIndices(), 92 | i, 93 | wpLatLng, 94 | routeCoord; 95 | 96 | for (i = 0; i < wps.length; i++) { 97 | wpLatLng = wps[i].latLng; 98 | routeCoord = L.latLng(this._route.coordinates[wpIndices[i]]); 99 | if (wpLatLng.distanceTo(routeCoord) > 100 | this.options.missingRouteTolerance) { 101 | this._addSegment([wpLatLng, routeCoord], 102 | this.options.missingRouteStyles); 103 | } 104 | } 105 | }, 106 | 107 | _addSegment: function(coords, styles, mouselistener) { 108 | var i, 109 | pl; 110 | for (i = 0; i < styles.length; i++) { 111 | pl = L.polyline(coords, styles[i]); 112 | this.addLayer(pl); 113 | if (mouselistener) { 114 | pl.on('mousedown', this._onLineTouched, this); 115 | } 116 | } 117 | }, 118 | 119 | _findNearestWpBefore: function(i) { 120 | var wpIndices = this._getWaypointIndices(), 121 | j = wpIndices.length - 1; 122 | while (j >= 0 && wpIndices[j] > i) { 123 | j--; 124 | } 125 | 126 | return j; 127 | }, 128 | 129 | _onLineTouched: function(e) { 130 | var afterIndex = this._findNearestWpBefore(this._findClosestRoutePoint(e.latlng)); 131 | this.fire('linetouched', { 132 | afterIndex: afterIndex, 133 | latlng: e.latlng 134 | }); 135 | }, 136 | 137 | _getWaypointIndices: function() { 138 | if (!this._wpIndices) { 139 | this._wpIndices = this._route.waypointIndices || this._findWaypointIndices(); 140 | } 141 | 142 | return this._wpIndices; 143 | } 144 | }); 145 | 146 | L.Routing.line = function(route, options) { 147 | return new L.Routing.Line(route, options); 148 | }; 149 | 150 | module.exports = L.Routing; 151 | })(); 152 | -------------------------------------------------------------------------------- /flot/examples/series-errorbars/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Flot Examples: Error Bars 6 | 7 | 8 | 9 | 10 | 11 | 12 | 128 | 129 | 130 | 131 | 134 | 135 |
136 | 137 |
138 |
139 |
140 | 141 |

With the errorbars plugin you can plot error bars to show standard deviation and other useful statistical properties.

142 | 143 |
144 | 145 | 148 | 149 | 150 | 151 | -------------------------------------------------------------------------------- /isochrone/main.js: -------------------------------------------------------------------------------- 1 | let currentLocation = { lat: 53.544332, lng: 9.914540 } 2 | 3 | // make a map using osm tiles 4 | const map = new maplibregl.Map({ 5 | style: 'https://tiles.openfreemap.org/styles/liberty', 6 | center: currentLocation, 7 | zoom: 14.3, 8 | container: 'map' 9 | }) 10 | 11 | let tooltips = [] 12 | 13 | function parseContour (s) { 14 | try { 15 | const range = n => [...Array(n).keys()] 16 | const time = parseInt(s.split(' ')) 17 | let values = [] 18 | if (s.includes('increments')) { 19 | // [time, 2 * time, 3 * time, ...] 20 | values = range(3).map(i => (i + 1) * time) 21 | } else { 22 | values = [time] 23 | } 24 | 25 | return values.map(t => Object.fromEntries([['time', t]])) 26 | } catch (e) { 27 | console.error(e) 28 | } 29 | } 30 | 31 | const marker = new maplibregl.Marker({ draggable: true }) 32 | .setLngLat(currentLocation) 33 | .addTo(map) 34 | 35 | marker.on('dragend', event => { 36 | onLocationChanged(event.target.getLatLng()) 37 | }) 38 | 39 | function onLocationChanged (coordinates) { 40 | currentLocation = coordinates 41 | document.getElementById('latlng').value = `${coordinates.lat.toFixed(6)}, ${coordinates.lng.toFixed(6)}` 42 | getContours() 43 | } 44 | 45 | function onMapClick (e) { 46 | const coordinates = e.lngLat 47 | marker.setLngLat(coordinates) 48 | onLocationChanged(coordinates) 49 | } 50 | 51 | function getContours () { 52 | // isochrone api query parameters 53 | const json = { 54 | locations: [{ lat: currentLocation.lat, lon: currentLocation.lng }], 55 | costing: document.getElementById('costing').value, 56 | denoise: document.getElementById('denoise').value, 57 | generalize: document.getElementById('generalize').value, 58 | contours: parseContour(document.getElementById('contours').value), 59 | polygons: document.getElementById('polygons_lines').value === 'polygons' 60 | } 61 | 62 | const url = document.getElementById('baseurl').value + '/isochrone?json=' + JSON.stringify(json) 63 | 64 | fetch(url).then(response => response.json()).then(isochrones => { 65 | // clear this if its not empty 66 | if (map.getSource('isochrones')) { 67 | map.removeLayer('isochrones-layer') 68 | map.removeSource('isochrones') 69 | } 70 | 71 | // clear the tooltips 72 | tooltips.forEach(tooltip => { tooltip.remove() }) 73 | tooltips = [] 74 | 75 | // create the geojson object 76 | map.addSource('isochrones', { 77 | type: 'geojson', 78 | data: isochrones 79 | }) 80 | 81 | map.addLayer({ 82 | id: 'isochrones-layer', 83 | type: 'fill', 84 | source: 'isochrones', 85 | paint: { 86 | 'fill-opacity': ['*', ['get', 'opacity'], 2], 87 | 'fill-color': ['get', 'color'] 88 | } 89 | }) 90 | 91 | // Calculate the bounding box of the isochrones 92 | const bounds = turf.bbox(isochrones) 93 | 94 | // Fit the map to the bounds of the isochrones 95 | map.fitBounds(bounds, { padding: 20 }) 96 | 97 | // Add tooltips 98 | isochrones.features.forEach(function (feature) { 99 | let coordinates = feature.geometry.coordinates[0][0] 100 | if (coordinates.length > 2) { 101 | coordinates = coordinates[0] 102 | } 103 | const description = feature.properties.contour + ' min' 104 | 105 | const popup = new maplibregl.Popup({ closeOnClick: false }) 106 | .setLngLat(coordinates) 107 | .setHTML(description) 108 | .addTo(map) 109 | 110 | tooltips.push(popup) 111 | }) 112 | }) 113 | } 114 | 115 | function onLatLngInputChanged () { 116 | try { 117 | const s = document.getElementById('latlng').value 118 | const values = s.split(',').map(i => parseFloat(i)) 119 | coord = { lat: values[0], lng: values[1] } 120 | map.panTo(coord) 121 | onMapClick({ lngLat: coord }) 122 | } catch (e) { 123 | console.error(e) 124 | } 125 | } 126 | 127 | map.on('click', onMapClick) 128 | // hook up the callback for the text box changing 129 | document.getElementById('latlng').addEventListener('change', onLatLngInputChanged); 130 | ['denoise', 'generalize', 'costing', 'polygons_lines', 'contours'].forEach( 131 | element => document.getElementById(element).addEventListener('change', getContours) 132 | ) 133 | 134 | map.once('styledata', () => { onMapClick({ lngLat: currentLocation }) }) 135 | -------------------------------------------------------------------------------- /flot/examples/axes-time-zones/tz/backward: -------------------------------------------------------------------------------- 1 | #
  2 | # This file is in the public domain, so clarified as of
  3 | # 2009-05-17 by Arthur David Olson.
  4 | 
  5 | # This file provides links between current names for time zones
  6 | # and their old names.  Many names changed in late 1993.
  7 | 
  8 | Link	Africa/Asmara		Africa/Asmera
  9 | Link	Africa/Bamako		Africa/Timbuktu
 10 | Link	America/Argentina/Catamarca	America/Argentina/ComodRivadavia
 11 | Link	America/Adak		America/Atka
 12 | Link	America/Argentina/Buenos_Aires	America/Buenos_Aires
 13 | Link	America/Argentina/Catamarca	America/Catamarca
 14 | Link	America/Atikokan	America/Coral_Harbour
 15 | Link	America/Argentina/Cordoba	America/Cordoba
 16 | Link	America/Tijuana		America/Ensenada
 17 | Link	America/Indiana/Indianapolis	America/Fort_Wayne
 18 | Link	America/Indiana/Indianapolis	America/Indianapolis
 19 | Link	America/Argentina/Jujuy	America/Jujuy
 20 | Link	America/Indiana/Knox	America/Knox_IN
 21 | Link	America/Kentucky/Louisville	America/Louisville
 22 | Link	America/Argentina/Mendoza	America/Mendoza
 23 | Link	America/Rio_Branco	America/Porto_Acre
 24 | Link	America/Argentina/Cordoba	America/Rosario
 25 | Link	America/St_Thomas	America/Virgin
 26 | Link	Asia/Ashgabat		Asia/Ashkhabad
 27 | Link	Asia/Chongqing		Asia/Chungking
 28 | Link	Asia/Dhaka		Asia/Dacca
 29 | Link	Asia/Kathmandu		Asia/Katmandu
 30 | Link	Asia/Kolkata		Asia/Calcutta
 31 | Link	Asia/Macau		Asia/Macao
 32 | Link	Asia/Jerusalem		Asia/Tel_Aviv
 33 | Link	Asia/Ho_Chi_Minh	Asia/Saigon
 34 | Link	Asia/Thimphu		Asia/Thimbu
 35 | Link	Asia/Makassar		Asia/Ujung_Pandang
 36 | Link	Asia/Ulaanbaatar	Asia/Ulan_Bator
 37 | Link	Atlantic/Faroe		Atlantic/Faeroe
 38 | Link	Europe/Oslo		Atlantic/Jan_Mayen
 39 | Link	Australia/Sydney	Australia/ACT
 40 | Link	Australia/Sydney	Australia/Canberra
 41 | Link	Australia/Lord_Howe	Australia/LHI
 42 | Link	Australia/Sydney	Australia/NSW
 43 | Link	Australia/Darwin	Australia/North
 44 | Link	Australia/Brisbane	Australia/Queensland
 45 | Link	Australia/Adelaide	Australia/South
 46 | Link	Australia/Hobart	Australia/Tasmania
 47 | Link	Australia/Melbourne	Australia/Victoria
 48 | Link	Australia/Perth		Australia/West
 49 | Link	Australia/Broken_Hill	Australia/Yancowinna
 50 | Link	America/Rio_Branco	Brazil/Acre
 51 | Link	America/Noronha		Brazil/DeNoronha
 52 | Link	America/Sao_Paulo	Brazil/East
 53 | Link	America/Manaus		Brazil/West
 54 | Link	America/Halifax		Canada/Atlantic
 55 | Link	America/Winnipeg	Canada/Central
 56 | Link	America/Regina		Canada/East-Saskatchewan
 57 | Link	America/Toronto		Canada/Eastern
 58 | Link	America/Edmonton	Canada/Mountain
 59 | Link	America/St_Johns	Canada/Newfoundland
 60 | Link	America/Vancouver	Canada/Pacific
 61 | Link	America/Regina		Canada/Saskatchewan
 62 | Link	America/Whitehorse	Canada/Yukon
 63 | Link	America/Santiago	Chile/Continental
 64 | Link	Pacific/Easter		Chile/EasterIsland
 65 | Link	America/Havana		Cuba
 66 | Link	Africa/Cairo		Egypt
 67 | Link	Europe/Dublin		Eire
 68 | Link	Europe/London		Europe/Belfast
 69 | Link	Europe/Chisinau		Europe/Tiraspol
 70 | Link	Europe/London		GB
 71 | Link	Europe/London		GB-Eire
 72 | Link	Etc/GMT			GMT+0
 73 | Link	Etc/GMT			GMT-0
 74 | Link	Etc/GMT			GMT0
 75 | Link	Etc/GMT			Greenwich
 76 | Link	Asia/Hong_Kong		Hongkong
 77 | Link	Atlantic/Reykjavik	Iceland
 78 | Link	Asia/Tehran		Iran
 79 | Link	Asia/Jerusalem		Israel
 80 | Link	America/Jamaica		Jamaica
 81 | Link	Asia/Tokyo		Japan
 82 | Link	Pacific/Kwajalein	Kwajalein
 83 | Link	Africa/Tripoli		Libya
 84 | Link	America/Tijuana		Mexico/BajaNorte
 85 | Link	America/Mazatlan	Mexico/BajaSur
 86 | Link	America/Mexico_City	Mexico/General
 87 | Link	Pacific/Auckland	NZ
 88 | Link	Pacific/Chatham		NZ-CHAT
 89 | Link	America/Denver		Navajo
 90 | Link	Asia/Shanghai		PRC
 91 | Link	Pacific/Pago_Pago	Pacific/Samoa
 92 | Link	Pacific/Chuuk		Pacific/Yap
 93 | Link	Pacific/Chuuk		Pacific/Truk
 94 | Link	Pacific/Pohnpei		Pacific/Ponape
 95 | Link	Europe/Warsaw		Poland
 96 | Link	Europe/Lisbon		Portugal
 97 | Link	Asia/Taipei		ROC
 98 | Link	Asia/Seoul		ROK
 99 | Link	Asia/Singapore		Singapore
100 | Link	Europe/Istanbul		Turkey
101 | Link	Etc/UCT			UCT
102 | Link	America/Anchorage	US/Alaska
103 | Link	America/Adak		US/Aleutian
104 | Link	America/Phoenix		US/Arizona
105 | Link	America/Chicago		US/Central
106 | Link	America/Indiana/Indianapolis	US/East-Indiana
107 | Link	America/New_York	US/Eastern
108 | Link	Pacific/Honolulu	US/Hawaii
109 | Link	America/Indiana/Knox	US/Indiana-Starke
110 | Link	America/Detroit		US/Michigan
111 | Link	America/Denver		US/Mountain
112 | Link	America/Los_Angeles	US/Pacific
113 | Link	Pacific/Pago_Pago	US/Samoa
114 | Link	Etc/UTC			UTC
115 | Link	Etc/UTC			Universal
116 | Link	Europe/Moscow		W-SU
117 | Link	Etc/UTC			Zulu
118 | 


--------------------------------------------------------------------------------
/flot/examples/navigate/index.html:
--------------------------------------------------------------------------------
  1 | 
  2 | 
  3 | 
  4 | 	
  5 | 	Flot Examples: Navigation
  6 | 	
  7 | 	
 26 | 	
 27 | 	
 28 | 	
 29 | 	
 30 | 	
127 | 
128 | 
129 | 
130 | 	
133 | 
134 | 	
135 | 136 |
137 |
138 |
139 | 140 |

141 | 142 |

With the navigate plugin it is easy to add panning and zooming. Drag to pan, double click to zoom (or use the mouse scrollwheel).

143 | 144 |

The plugin fires events (useful for synchronizing several plots) and adds a couple of public methods so you can easily build a little user interface around it, like the little buttons at the top right in the plot.

145 | 146 |
147 | 148 | 151 | 152 | 153 | 154 | --------------------------------------------------------------------------------