loleaflet/Makefile.am | 10 loleaflet/build/deps.js | 48 +++- loleaflet/plugins/path-transform/build/deps.js | 16 - loleaflet/src/layer/GeoJSON.js | 269 +++++++++++++++++++++++++ 4 files changed, 309 insertions(+), 34 deletions(-)
New commits: commit 4612d10244ac434078ff214c8781c053bd706214 Author: Henry Castro <[email protected]> AuthorDate: Sun Mar 10 09:12:39 2019 -0400 Commit: Henry Castro <[email protected]> CommitDate: Sun Mar 10 15:09:07 2019 +0100 loleaflet: integrate "Path.Transform" extension to the main build In order to simplify "loleaflet" building, the plugin "Path.Transform" was moved to loleaflet main build. Please use the file "loleaflet/build/deps.js" if you need to integrate more files from "leaflet" plugins Change-Id: Ib3bfa6fd3255811034856849a4f62cc1bf430af5 Reviewed-on: https://gerrit.libreoffice.org/69007 Reviewed-by: Henry Castro <[email protected]> Tested-by: Henry Castro <[email protected]> diff --git a/loleaflet/Makefile.am b/loleaflet/Makefile.am index 59c01a7ff..d21a104d0 100644 --- a/loleaflet/Makefile.am +++ b/loleaflet/Makefile.am @@ -161,9 +161,6 @@ JQUERY_MINIFIED_DIST_IMAGES = $(patsubst $(JQUERY_MINIFIED_IMAGE_PATH)/%.png,$(b LOLEAFLET_IMAGES_SRC = $(shell find $(srcdir)/images -name '*.*') LOLEAFLET_IMAGES_DST = $(patsubst $(srcdir)/%,$(builddir)/dist/%,$(LOLEAFLET_IMAGES_SRC)) -LOLEAFLET_PATH_JS_SRC = $(shell find $(srcdir)/plugins/path-transform/src -name '*.js') -LOLEAFLET_PATH_JS_DST = $(patsubst $(srcdir)/plugins/%.js,$(builddir)/dist/plugins/%.js,$(LOLEAFLET_PATH_JS_SRC)) - LOLEAFLET_HTML_SRC = $(shell find $(srcdir)/html -name '*.html') LOLEAFLET_HTML_DST = $(patsubst $(srcdir)/html/%.html,$(builddir)/dist/%.html,$(LOLEAFLET_HTML_SRC)) @@ -241,7 +238,6 @@ NODE_MODULES_JS_SRC = $(patsubst %.js,$(builddir)/%.js,$(NODE_MODULES_JS)) NODE_MODULES_JS_DST = $(patsubst %.js,$(builddir)/dist/%.js,$(NODE_MODULES_JS)) LOLEAFLET_JS = $(strip $(shell NODE_PATH=$(abs_builddir)/node_modules $(NODE) -e "try {console.log(require('$(1)').getFiles().join(' '))} catch(e) {}")) -LOPLUGIN_JS = $(strip $(shell NODE_PATH=$(abs_builddir)/node_modules $(NODE) -e "try {console.log(require('$(1)').deps.join(' '))} catch(e) {}")) LOLEAFLET_JS_SRC = $(shell find $(srcdir)/src -name '*.js') LOLEAFLET_JS_DST = $(patsubst $(srcdir)/src/%.js,$(builddir)/dist/src/%.js,$(LOLEAFLET_JS_SRC)) @@ -299,10 +295,9 @@ $(LOLEAFLET_PREFIX)/dist/admin-src.js: $(LOLEAFLET_ADMIN_ALL) @awk 'FNR == 1 {print ""} 1' $(patsubst %.js,$(srcdir)/%.js,$(call LOLEAFLET_JS,$(srcdir)/admin/build/build.js)) > $@ if ENABLE_DEBUG -$(LOLEAFLET_PREFIX)/dist/loleaflet-src.js: $(LOLEAFLET_JS_DST) $(LOLEAFLET_PATH_JS_DST) $(PLUGINS_JS_DST) +$(LOLEAFLET_PREFIX)/dist/loleaflet-src.js: $(LOLEAFLET_JS_DST) @echo "Checking for loleaflet JS errors..." @NODE_PATH=$(abs_builddir)/node_modules $(NODE) node_modules/eslint/bin/eslint.js $(srcdir)/src \ - $(srcdir)/plugins/path-transform/src \ $(srcdir)/js --ignore-path $(srcdir)/.eslintignore --config $(srcdir)/.eslintrc @touch $@ @@ -322,13 +317,11 @@ $(LOLEAFLET_PREFIX)/dist/loleaflet-src.js: $(LOLEAFLET_JS_SRC) @mkdir -p $(dir $@) @echo "Checking for loleaflet JS errors..." @NODE_PATH=$(abs_builddir)/node_modules $(NODE) node_modules/eslint/bin/eslint.js $(srcdir)/src \ - $(srcdir)/plugins/path-transform/src \ $(srcdir)/js --ignore-path $(srcdir)/.eslintignore --config $(srcdir)/.eslintrc @(cat $(srcdir)/src/copyright.js | sed 's/{VERSION}/$(LOLEAFLET_VERSION)/' - \ && echo "(function (window, document, undefined) {" \ && awk 'FNR == 1 {print ""} 1' \ $(patsubst %.js,$(srcdir)/%.js,$(call LOLEAFLET_JS,$(srcdir)/build/build.js)) \ - $(patsubst %.js,$(srcdir)/plugins/path-transform/%.js,$(call LOPLUGIN_JS,$(srcdir)/plugins/path-transform/build/deps.js)) \ && echo "}(window, document));") > $@ $(builddir)/dist/bundle.css: $(LOLEAFLET_CSS) @@ -373,7 +366,6 @@ $(builddir)/dist/loleaflet.html: $(srcdir)/html/loleaflet.html.m4 $(LOLEAFLET_HT jquery.mCustomScrollbar.js \ w2ui-1.5.rc1.js \ $(call LOLEAFLET_JS,$(srcdir)/build/build.js) \ - $(patsubst %.js,plugins/path-transform/%.js,$(call LOPLUGIN_JS,$(srcdir)/plugins/path-transform/build/deps.js)) \ toolbar.js \ main.js)" \ $(srcdir)/html/loleaflet.html.m4 > $@ diff --git a/loleaflet/build/deps.js b/loleaflet/build/deps.js index 933c39c6d..ec9c8565a 100644 --- a/loleaflet/build/deps.js +++ b/loleaflet/build/deps.js @@ -12,6 +12,7 @@ var deps = { 'core/Events.js', 'core/Socket.js', 'core/Browser.js', + 'core/Matrix.js', 'geometry/Point.js', 'geometry/Bounds.js', 'geometry/Transformation.js', @@ -144,12 +145,6 @@ var deps = { desc: ['Rectangle overlays.'] }, - SVGGroup: { - src: ['layer/vector/SVGGroup.js'], - deps: ['Path'], - desc: 'SVG group element.' - }, - CircleMarker: { src: ['layer/vector/CircleMarker.js'], deps: ['Path'], @@ -163,23 +158,58 @@ var deps = { }, SVG: { - src: ['layer/vector/SVG.js'], + src: [ + 'layer/vector/SVG.js', + 'layer/vector/Path.Transform.SVG.js' + ], deps: ['Path'], desc: 'SVG backend for vector layers.' }, + SVGGroup: { + src: [ + 'core/Handler.js', + 'layer/vector/SVGGroup.js' + ], + deps: ['Path'], + desc: 'SVG group element.' + }, + + PathTransform: { + src: [ + 'layer/vector/Path.Drag.Transform.js', + 'layer/vector/Path.Drag.js', + 'layer/vector/Path.Transform.Util.js', + 'layer/vector/Path.Transform.js' + ], + deps: ['Path'], + desc: 'Path Transform extension.' + }, + VML: { - src: ['layer/vector/SVG.VML.js'], + src: [ + 'layer/vector/SVG.VML.js', + 'layer/vector/Path.Transform.SVG.VML.js' + ], deps: ['SVG'], desc: 'VML fallback for vector layers in IE7-8.' }, Canvas: { - src: ['layer/vector/Canvas.js'], + src: [ + 'layer/vector/Canvas.js', + 'layer/vector/Path.Transform.Canvas.js' + ], deps: ['Path'], desc: 'Canvas backend for vector layers.' }, + GeoJSON: { + src: ['layer/GeoJSON.js'], + deps: ['Polygon', 'Circle', 'CircleMarker', 'Marker', 'FeatureGroup'], + desc: 'GeoJSON layer, parses the data and adds corresponding layers above.' + }, + MapDrag: { src: ['dom/DomEvent.js', 'dom/Draggable.js', diff --git a/loleaflet/plugins/path-transform/build/deps.js b/loleaflet/plugins/path-transform/build/deps.js deleted file mode 100644 index 70f1d6850..000000000 --- a/loleaflet/plugins/path-transform/build/deps.js +++ /dev/null @@ -1,16 +0,0 @@ -/* -*- js-indent-level: 8 -*- */ - -var deps = [ - 'src/SVG.js', - 'src/SVG.VML.js', - 'src/Canvas.js', - 'src/Path.Drag.Transform.js', - 'src/Path.Drag.js', - 'src/Util.js', - 'src/Matrix.js', - 'src/Path.Transform.js' -]; - -if (typeof exports !== 'undefined') { - exports.deps = deps; -} diff --git a/loleaflet/plugins/path-transform/src/Matrix.js b/loleaflet/src/core/Matrix.js similarity index 100% rename from loleaflet/plugins/path-transform/src/Matrix.js rename to loleaflet/src/core/Matrix.js diff --git a/loleaflet/src/layer/GeoJSON.js b/loleaflet/src/layer/GeoJSON.js new file mode 100644 index 000000000..7458da924 --- /dev/null +++ b/loleaflet/src/layer/GeoJSON.js @@ -0,0 +1,269 @@ +/* -*- js-indent-level: 8 -*- */ +/* + * L.GeoJSON turns any GeoJSON data into a Leaflet layer. + */ + +L.GeoJSON = L.FeatureGroup.extend({ + + initialize: function (geojson, options) { + L.setOptions(this, options); + + this._layers = {}; + + if (geojson) { + this.addData(geojson); + } + }, + + addData: function (geojson) { + var features = L.Util.isArray(geojson) ? geojson : geojson.features, + i, len, feature; + + if (features) { + for (i = 0, len = features.length; i < len; i++) { + // only add this if geometry or geometries are set and not null + feature = features[i]; + if (feature.geometries || feature.geometry || feature.features || feature.coordinates) { + this.addData(feature); + } + } + return this; + } + + var options = this.options; + + if (options.filter && !options.filter(geojson)) { return this; } + + var layer = L.GeoJSON.geometryToLayer(geojson, options); + layer.feature = L.GeoJSON.asFeature(geojson); + + layer.defaultOptions = layer.options; + this.resetStyle(layer); + + if (options.onEachFeature) { + options.onEachFeature(geojson, layer); + } + + return this.addLayer(layer); + }, + + resetStyle: function (layer) { + // reset any custom styles + layer.options = layer.defaultOptions; + this._setLayerStyle(layer, this.options.style); + return this; + }, + + setStyle: function (style) { + return this.eachLayer(function (layer) { + this._setLayerStyle(layer, style); + }, this); + }, + + _setLayerStyle: function (layer, style) { + if (typeof style === 'function') { + style = style(layer.feature); + } + if (layer.setStyle) { + layer.setStyle(style); + } + } +}); + +L.extend(L.GeoJSON, { + geometryToLayer: function (geojson, options) { + + var geometry = geojson.type === 'Feature' ? geojson.geometry : geojson, + coords = geometry.coordinates, + layers = [], + pointToLayer = options && options.pointToLayer, + coordsToLatLng = options && options.coordsToLatLng || this.coordsToLatLng, + latlng, latlngs, i, len; + + switch (geometry.type) { + case 'Point': + latlng = coordsToLatLng(coords); + return pointToLayer ? pointToLayer(geojson, latlng) : new L.Marker(latlng); + + case 'MultiPoint': + for (i = 0, len = coords.length; i < len; i++) { + latlng = coordsToLatLng(coords[i]); + layers.push(pointToLayer ? pointToLayer(geojson, latlng) : new L.Marker(latlng)); + } + return new L.FeatureGroup(layers); + + case 'LineString': + case 'MultiLineString': + latlngs = this.coordsToLatLngs(coords, geometry.type === 'LineString' ? 0 : 1, coordsToLatLng); + return new L.Polyline(latlngs, options); + + case 'Polygon': + case 'MultiPolygon': + latlngs = this.coordsToLatLngs(coords, geometry.type === 'Polygon' ? 1 : 2, coordsToLatLng); + return new L.Polygon(latlngs, options); + + case 'GeometryCollection': + for (i = 0, len = geometry.geometries.length; i < len; i++) { + + layers.push(this.geometryToLayer({ + geometry: geometry.geometries[i], + type: 'Feature', + properties: geojson.properties + }, options)); + } + return new L.FeatureGroup(layers); + + default: + throw new Error('Invalid GeoJSON object.'); + } + }, + + coordsToLatLng: function (coords) { + return new L.LatLng(coords[1], coords[0], coords[2]); + }, + + coordsToLatLngs: function (coords, levelsDeep, coordsToLatLng) { + var latlngs = []; + + for (var i = 0, len = coords.length, latlng; i < len; i++) { + latlng = levelsDeep ? + this.coordsToLatLngs(coords[i], levelsDeep - 1, coordsToLatLng) : + (coordsToLatLng || this.coordsToLatLng)(coords[i]); + + latlngs.push(latlng); + } + + return latlngs; + }, + + latLngToCoords: function (latlng) { + return latlng.alt !== undefined ? + [latlng.lng, latlng.lat, latlng.alt] : + [latlng.lng, latlng.lat]; + }, + + latLngsToCoords: function (latlngs, levelsDeep, closed) { + var coords = []; + + for (var i = 0, len = latlngs.length; i < len; i++) { + coords.push(levelsDeep ? + L.GeoJSON.latLngsToCoords(latlngs[i], levelsDeep - 1, closed) : + L.GeoJSON.latLngToCoords(latlngs[i])); + } + + if (!levelsDeep && closed) { + coords.push(coords[0]); + } + + return coords; + }, + + getFeature: function (layer, newGeometry) { + return layer.feature ? + L.extend({}, layer.feature, {geometry: newGeometry}) : + L.GeoJSON.asFeature(newGeometry); + }, + + asFeature: function (geoJSON) { + if (geoJSON.type === 'Feature') { + return geoJSON; + } + + return { + type: 'Feature', + properties: {}, + geometry: geoJSON + }; + } +}); + +var PointToGeoJSON = { + toGeoJSON: function () { + return L.GeoJSON.getFeature(this, { + type: 'Point', + coordinates: L.GeoJSON.latLngToCoords(this.getLatLng()) + }); + } +}; + +L.Marker.include(PointToGeoJSON); +L.Circle.include(PointToGeoJSON); +L.CircleMarker.include(PointToGeoJSON); + +L.Polyline.prototype.toGeoJSON = function () { + var multi = !this._flat(this._latlngs); + + var coords = L.GeoJSON.latLngsToCoords(this._latlngs, multi ? 1 : 0); + + return L.GeoJSON.getFeature(this, { + type: (multi ? 'Multi' : '') + 'LineString', + coordinates: coords + }); +}; + +L.Polygon.prototype.toGeoJSON = function () { + var holes = !this._flat(this._latlngs), + multi = holes && !this._flat(this._latlngs[0]); + + var coords = L.GeoJSON.latLngsToCoords(this._latlngs, multi ? 2 : holes ? 1 : 0, true); + + if (!holes) { + coords = [coords]; + } + + return L.GeoJSON.getFeature(this, { + type: (multi ? 'Multi' : '') + 'Polygon', + coordinates: coords + }); +}; + + +L.LayerGroup.include({ + toMultiPoint: function () { + var coords = []; + + this.eachLayer(function (layer) { + coords.push(layer.toGeoJSON().geometry.coordinates); + }); + + return L.GeoJSON.getFeature(this, { + type: 'MultiPoint', + coordinates: coords + }); + }, + + toGeoJSON: function () { + + var type = this.feature && this.feature.geometry && this.feature.geometry.type; + + if (type === 'MultiPoint') { + return this.toMultiPoint(); + } + + var isGeometryCollection = type === 'GeometryCollection', + jsons = []; + + this.eachLayer(function (layer) { + if (layer.toGeoJSON) { + var json = layer.toGeoJSON(); + jsons.push(isGeometryCollection ? json.geometry : L.GeoJSON.asFeature(json)); + } + }); + + if (isGeometryCollection) { + return L.GeoJSON.getFeature(this, { + geometries: jsons, + type: 'GeometryCollection' + }); + } + + return { + type: 'FeatureCollection', + features: jsons + }; + } +}); + +L.geoJson = function (geojson, options) { + return new L.GeoJSON(geojson, options); +}; diff --git a/loleaflet/plugins/path-transform/src/Path.Drag.Transform.js b/loleaflet/src/layer/vector/Path.Drag.Transform.js similarity index 100% rename from loleaflet/plugins/path-transform/src/Path.Drag.Transform.js rename to loleaflet/src/layer/vector/Path.Drag.Transform.js diff --git a/loleaflet/plugins/path-transform/src/Path.Drag.js b/loleaflet/src/layer/vector/Path.Drag.js similarity index 100% rename from loleaflet/plugins/path-transform/src/Path.Drag.js rename to loleaflet/src/layer/vector/Path.Drag.js diff --git a/loleaflet/plugins/path-transform/src/Canvas.js b/loleaflet/src/layer/vector/Path.Transform.Canvas.js similarity index 100% rename from loleaflet/plugins/path-transform/src/Canvas.js rename to loleaflet/src/layer/vector/Path.Transform.Canvas.js diff --git a/loleaflet/plugins/path-transform/src/SVG.VML.js b/loleaflet/src/layer/vector/Path.Transform.SVG.VML.js similarity index 100% rename from loleaflet/plugins/path-transform/src/SVG.VML.js rename to loleaflet/src/layer/vector/Path.Transform.SVG.VML.js diff --git a/loleaflet/plugins/path-transform/src/SVG.js b/loleaflet/src/layer/vector/Path.Transform.SVG.js similarity index 100% rename from loleaflet/plugins/path-transform/src/SVG.js rename to loleaflet/src/layer/vector/Path.Transform.SVG.js diff --git a/loleaflet/plugins/path-transform/src/Util.js b/loleaflet/src/layer/vector/Path.Transform.Util.js similarity index 100% rename from loleaflet/plugins/path-transform/src/Util.js rename to loleaflet/src/layer/vector/Path.Transform.Util.js diff --git a/loleaflet/plugins/path-transform/src/Path.Transform.js b/loleaflet/src/layer/vector/Path.Transform.js similarity index 100% rename from loleaflet/plugins/path-transform/src/Path.Transform.js rename to loleaflet/src/layer/vector/Path.Transform.js _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
