Commit 63b1c14f authored by Tom MacWright's avatar Tom MacWright Committed by GitHub

Merge pull request #3225 from openstreetmap/dep-osm-auth

Use osm-auth, togeojson and marked as packages
parents f7e49e79 f9a63787
......@@ -74,9 +74,6 @@ dist/iD.js: \
js/lib/diff3.js \
js/lib/jxon.js \
js/lib/lodash.js \
js/lib/osmauth.js \
js/lib/togeojson.js \
js/lib/marked.js \
js/id/start.js \
js/id/id.js \
$(MODULE_TARGETS) \
......
......@@ -14,7 +14,6 @@
<script src='js/lib/lodash.js'></script>
<script src='js/lib/d3.v3.js'></script>
<script src='js/lib/osmauth.js'></script>
<script src='js/lib/jxon.js'></script>
<script src='js/lib/d3.combobox.js'></script>
<script src='js/lib/d3.geo.tile.js'></script>
......@@ -28,8 +27,6 @@
<script src='js/lib/d3-compat.js'></script>
<script src='js/lib/bootstrap-tooltip.js'></script>
<script src='js/lib/diff3.js'></script>
<script src='js/lib/togeojson.js'></script>
<script src='js/lib/marked.js'></script>
<script src='js/id/id.js'></script>
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
toGeoJSON = (function() {
'use strict';
var removeSpace = (/\s*/g),
trimSpace = (/^\s*|\s*$/g),
splitSpace = (/\s+/);
// generate a short, numeric hash of a string
function okhash(x) {
if (!x || !x.length) return 0;
for (var i = 0, h = 0; i < x.length; i++) {
h = ((h << 5) - h) + x.charCodeAt(i) | 0;
} return h;
}
// all Y children of X
function get(x, y) { return x.getElementsByTagName(y); }
function attr(x, y) { return x.getAttribute(y); }
function attrf(x, y) { return parseFloat(attr(x, y)); }
// one Y child of X, if any, otherwise null
function get1(x, y) { var n = get(x, y); return n.length ? n[0] : null; }
// https://developer.mozilla.org/en-US/docs/Web/API/Node.normalize
function norm(el) { if (el.normalize) { el.normalize(); } return el; }
// cast array x into numbers
function numarray(x) {
for (var j = 0, o = []; j < x.length; j++) o[j] = parseFloat(x[j]);
return o;
}
function clean(x) {
var o = {};
for (var i in x) if (x[i]) o[i] = x[i];
return o;
}
// get the content of a text node, if any
function nodeVal(x) { if (x) {norm(x);} return x && x.firstChild && x.firstChild.nodeValue; }
// get one coordinate from a coordinate array, if any
function coord1(v) { return numarray(v.replace(removeSpace, '').split(',')); }
// get all coordinates from a coordinate array as [[],[]]
function coord(v) {
var coords = v.replace(trimSpace, '').split(splitSpace),
o = [];
for (var i = 0; i < coords.length; i++) {
o.push(coord1(coords[i]));
}
return o;
}
function coordPair(x) { return [attrf(x, 'lon'), attrf(x, 'lat')]; }
// create a new feature collection parent object
function fc() {
return {
type: 'FeatureCollection',
features: []
};
}
var styleSupport = false;
if (typeof XMLSerializer !== 'undefined') {
var serializer = new XMLSerializer();
styleSupport = true;
}
function xml2str(str) { return serializer.serializeToString(str); }
var t = {
kml: function(doc, o) {
o = o || {};
var gj = fc(),
// styleindex keeps track of hashed styles in order to match features
styleIndex = {},
// atomic geospatial types supported by KML - MultiGeometry is
// handled separately
geotypes = ['Polygon', 'LineString', 'Point', 'Track'],
// all root placemarks in the file
placemarks = get(doc, 'Placemark'),
styles = get(doc, 'Style');
if (styleSupport) for (var k = 0; k < styles.length; k++) {
styleIndex['#' + attr(styles[k], 'id')] = okhash(xml2str(styles[k])).toString(16);
}
for (var j = 0; j < placemarks.length; j++) {
gj.features = gj.features.concat(getPlacemark(placemarks[j]));
}
function gxCoord(v) { return numarray(v.split(' ')); }
function gxCoords(root) {
var elems = get(root, 'coord', 'gx'), coords = [];
for (var i = 0; i < elems.length; i++) coords.push(gxCoord(nodeVal(elems[i])));
return coords;
}
function getGeometry(root) {
var geomNode, geomNodes, i, j, k, geoms = [];
if (get1(root, 'MultiGeometry')) return getGeometry(get1(root, 'MultiGeometry'));
if (get1(root, 'MultiTrack')) return getGeometry(get1(root, 'MultiTrack'));
for (i = 0; i < geotypes.length; i++) {
geomNodes = get(root, geotypes[i]);
if (geomNodes) {
for (j = 0; j < geomNodes.length; j++) {
geomNode = geomNodes[j];
if (geotypes[i] == 'Point') {
geoms.push({
type: 'Point',
coordinates: coord1(nodeVal(get1(geomNode, 'coordinates')))
});
} else if (geotypes[i] == 'LineString') {
geoms.push({
type: 'LineString',
coordinates: coord(nodeVal(get1(geomNode, 'coordinates')))
});
} else if (geotypes[i] == 'Polygon') {
var rings = get(geomNode, 'LinearRing'),
coords = [];
for (k = 0; k < rings.length; k++) {
coords.push(coord(nodeVal(get1(rings[k], 'coordinates'))));
}
geoms.push({
type: 'Polygon',
coordinates: coords
});
} else if (geotypes[i] == 'Track') {
geoms.push({
type: 'LineString',
coordinates: gxCoords(geomNode)
});
}
}
}
}
return geoms;
}
function getPlacemark(root) {
var geoms = getGeometry(root), i, properties = {},
name = nodeVal(get1(root, 'name')),
styleUrl = nodeVal(get1(root, 'styleUrl')),
description = nodeVal(get1(root, 'description')),
extendedData = get1(root, 'ExtendedData');
if (!geoms.length) return [];
if (name) properties.name = name;
if (styleUrl && styleIndex[styleUrl]) {
properties.styleUrl = styleUrl;
properties.styleHash = styleIndex[styleUrl];
}
if (description) properties.description = description;
if (extendedData) {
var datas = get(extendedData, 'Data'),
simpleDatas = get(extendedData, 'SimpleData');
for (i = 0; i < datas.length; i++) {
properties[datas[i].getAttribute('name')] = nodeVal(get1(datas[i], 'value'));
}
for (i = 0; i < simpleDatas.length; i++) {
properties[simpleDatas[i].getAttribute('name')] = nodeVal(simpleDatas[i]);
}
}
return [{
type: 'Feature',
geometry: (geoms.length === 1) ? geoms[0] : {
type: 'GeometryCollection',
geometries: geoms
},
properties: properties
}];
}
return gj;
},
gpx: function(doc, o) {
var i,
tracks = get(doc, 'trk'),
routes = get(doc, 'rte'),
waypoints = get(doc, 'wpt'),
// a feature collection
gj = fc();
for (i = 0; i < tracks.length; i++) {
gj.features.push(getLinestring(tracks[i], 'trkpt'));
}
for (i = 0; i < routes.length; i++) {
gj.features.push(getLinestring(routes[i], 'rtept'));
}
for (i = 0; i < waypoints.length; i++) {
gj.features.push(getPoint(waypoints[i]));
}
function getLinestring(node, pointname) {
var j, pts = get(node, pointname), line = [];
for (j = 0; j < pts.length; j++) {
line.push(coordPair(pts[j]));
}
return {
type: 'Feature',
properties: getProperties(node),
geometry: {
type: 'LineString',
coordinates: line
}
};
}
function getPoint(node) {
var prop = getProperties(node);
prop.ele = nodeVal(get1(node, 'ele'));
prop.sym = nodeVal(get1(node, 'sym'));
return {
type: 'Feature',
properties: prop,
geometry: {
type: 'Point',
coordinates: coordPair(node)
}
};
}
function getProperties(node) {
var meta = ['name', 'desc', 'author', 'copyright', 'link',
'time', 'keywords'],
prop = {},
k;
for (k = 0; k < meta.length; k++) {
prop[meta[k]] = nodeVal(get1(node, meta[k]));
}
return clean(prop);
}
return gj;
}
};
return t;
})();
if (typeof module !== 'undefined') module.exports = toGeoJSON;
......@@ -3,6 +3,7 @@ import { Way } from './way';
import { Relation } from './relation';
import { Node } from './node';
import { Extent } from '../geo/index';
import osmAuth from 'osm-auth';
export function Connection(useHttps) {
if (typeof useHttps !== 'boolean') {
......
import toGeoJSON from 'togeojson';
export function Gpx(projection, context, dispatch) {
var showLabels = true,
layer;
......
import { Icon } from '../svg/index';
import { intro } from './intro';
import { tooltipHtml } from './tooltipHtml';
import marked from 'marked';
export function Help(context) {
var key = 'H';
......
......@@ -22,8 +22,11 @@
],
"license": "ISC",
"dependencies": {
"marked": "0.3.5",
"osm-auth": "0.2.8",
"rbush": "2.0.1",
"sexagesimal": "0.5.0"
"sexagesimal": "0.5.0",
"togeojson": "0.13.0"
},
"devDependencies": {
"chai": "3.5.0",
......
......@@ -3,7 +3,7 @@ import commonjs from 'rollup-plugin-commonjs';
export default {
plugins: [
nodeResolve({ jsnext: true, main: true }),
nodeResolve({ jsnext: true, main: true, browser: true }),
commonjs()
]
};
......@@ -36,8 +36,6 @@
<script src='../js/lib/d3-compat.js'></script>
<script src='../js/lib/bootstrap-tooltip.js'></script>
<script src='../js/lib/diff3.js'></script>
<script src='../js/lib/togeojson.js'></script>
<script src='../js/lib/osmauth.js'></script>
<script src='../js/id/id.js'></script>
<script src='../js/lib/id/index.js'></script>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment