Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion src/config.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
<?xml version='1.0' encoding='UTF-8'?>
<widget xmlns="http://wirecloud.conwet.fi.upm.es/ns/macdescription/1" vendor="CoNWeT" name="ol3-map" version="1.2.4">
<widget xmlns="http://wirecloud.conwet.fi.upm.es/ns/macdescription/1" vendor="CoNWeT" name="ol3-map" version="2.0.0">

<macversion>2</macversion>

<details>
<title>OpenLayers Map</title>
<email>wirecloud@conwet.com</email>
Expand Down Expand Up @@ -39,5 +42,13 @@
</wiring>

<contents src="index.html" useplatformstyle="true"/>
<scripts>
<script src="lib/js/proj4.js" />
<script src="lib/js/ol.js" />
<script src="lib/js/ol-ext.min.js" />
<script src="js/ol3-map-widget.js" />
<script src="js/main.js" />
</scripts>
<entrypoint name="CoNWeT_ol3_Widget" />
<rendering height="300px" width="300px"/>
</widget>
4 changes: 4 additions & 0 deletions src/doc/changelog.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## v2.0.0 (2023-12-28)

- Updates widget to `macversion` 2.

## v1.2.4 (2022-01-31)

- Add a feature for building a marker with Font Awesome icon
Expand Down
38 changes: 14 additions & 24 deletions src/index.html
Original file line number Diff line number Diff line change
@@ -1,25 +1,15 @@
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="lib/css/ol.css" type="text/css">
<link rel="stylesheet" href="lib/css/ol-ext.min.css" type="text/css">
<link rel="stylesheet" href="css/styles.css" type="text/css">
<script src="lib/js/proj4.js" type="text/javascript"></script>
<script src="lib/js/ol.js"></script>
<script src="lib/js/ol-ext.min.js"></script>
<title>OpenLayers 7 widget</title>
</head>
<body>
<div id="map" class="map"></div>
<div id="buttons">
<div id="button" class="se-btn fade"><i class="fas fa-layer-group"></i></div>
<div class="btn-group">
<div id="setcenter-button" class="se-btn hidden" title="Set initial location"><i class="fa-fw fas fa-crosshairs"></i></div>
<div id="setzoom-button" class="se-btn hidden" title="Set initial zoom level"><i class="fa-fw fas fa-ruler"></i></div>
<div id="setcenterzoom-button" class="se-btn hidden" title="Set initial location and zoom level"><i class="fa-fw fas fa-expand"></i></div>
</div>
<link rel="stylesheet" href="lib/css/ol.css" type="text/css">
<link rel="stylesheet" href="lib/css/ol-ext.min.css" type="text/css">
<link rel="stylesheet" href="css/styles.css" type="text/css">

<body>
<div id="map" class="map"></div>
<div id="buttons">
<div id="button" class="se-btn fade"><i class="fas fa-layer-group"></i></div>
<div class="btn-group">
<div id="setcenter-button" class="se-btn hidden" title="Set initial location"><i class="fa-fw fas fa-crosshairs"></i></div>
<div id="setzoom-button" class="se-btn hidden" title="Set initial zoom level"><i class="fa-fw fas fa-ruler"></i></div>
<div id="setcenterzoom-button" class="se-btn hidden" title="Set initial location and zoom level"><i class="fa-fw fas fa-expand"></i></div>
</div>
</body>
<script type="text/javascript" src="js/ol3-map-widget.js"></script>
<script type="text/javascript" src="js/main.js"></script>
</html>
</div>
</body>
193 changes: 101 additions & 92 deletions src/js/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,108 +14,117 @@
* limitations under the License.
*/

/* global Widget */
/* global _CoNWeT_ol3_Widget_Internal */


(function () {

"use strict";

const parseInputEndpointData = function parseInputEndpointData(data) {
if (typeof data === "string") {
try {
data = JSON.parse(data);
} catch (e) {
throw new MashupPlatform.wiring.EndpointTypeError();
}
} else if (data == null || typeof data !== "object") {
throw new MashupPlatform.wiring.EndpointTypeError();
}
return data;
};

const widget = new Widget('body', '#incoming-modal');
widget.init();

MashupPlatform.prefs.registerCallback((new_values) => {
if ("useclustering" in new_values) {
widget.setClustering(new_values.useclustering);
}
});

MashupPlatform.wiring.registerCallback('layerInfo', (commands) => {
commands = parseInputEndpointData(commands);

if (!Array.isArray(commands)) {
commands = [commands];
}

if (commands.some((command) => {return command == null || ["addLayer", "updateLayer", "removeLayer", "setBaseLayer"].indexOf(command.action) === -1;})) {
throw new MashupPlatform.wiring.EndpointValueError("Invalid command action");
class Widget {
constructor(MashupPlatform, shadowDOM, extra) {
this.MashupPlatform = MashupPlatform;
this.shadowDOM = shadowDOM;

this.widget = new _CoNWeT_ol3_Widget_Internal(MashupPlatform, shadowDOM, extra);
this.widget.init();

this.MashupPlatform.prefs.registerCallback((new_values) => {
if ("useclustering" in new_values) {
this.widget.setClustering(new_values.useclustering);
}
});

this.MashupPlatform.wiring.registerCallback('layerInfo', (commands) => {
commands = this.parseInputEndpointData(commands);

if (!Array.isArray(commands)) {
commands = [commands];
}

if (commands.some((command) => {return command == null || ["addLayer", "updateLayer", "removeLayer", "setBaseLayer"].indexOf(command.action) === -1;})) {
throw new this.MashupPlatform.wiring.EndpointValueError("Invalid command action");
}

commands.forEach((command) => {
switch (command.action) {
case "addLayer":
this.widget.addLayer(command.data);
break;
case "updateLayer":
this.widget.updateLayer(command.data);
break;
case "removeLayer":
this.widget.removeLayer(command.data);
break;
case "setBaseLayer":
this.widget.setBaseLayer(command.data);
break;
}
});
});

this.MashupPlatform.wiring.registerCallback('poiInput', (poi_info) => {
poi_info = this.parseInputEndpointData(poi_info);

if (!Array.isArray(poi_info)) {
poi_info = [poi_info];
}
poi_info.forEach(this.widget.registerPoI, this.widget);
});

this.MashupPlatform.wiring.registerCallback('replacePoIs', (poi_info) => {
poi_info = this.parseInputEndpointData(poi_info);

if (!Array.isArray(poi_info)) {
poi_info = [poi_info];
}
this.widget.replacePoIs(poi_info);
});

this.MashupPlatform.wiring.registerCallback('poiInputCenter', (poi_info) => {
if (poi_info == null) {
poi_info = [];
}

poi_info = this.parseInputEndpointData(poi_info);

if (!Array.isArray(poi_info)) {
poi_info = [poi_info];
}

poi_info.forEach((poi) => {
if (poi != null && typeof poi === "object") {
this.widget.registerPoI(poi)
}
});
this.widget.centerPoI(poi_info);
});

this.MashupPlatform.wiring.registerCallback('deletePoiInput', (poi_info) => {
poi_info = this.parseInputEndpointData(poi_info);

if (!Array.isArray(poi_info)) {
poi_info = [poi_info];
}
poi_info.forEach(this.widget.removePoI, this.widget);
});
}

commands.forEach((command) => {
switch (command.action) {
case "addLayer":
widget.addLayer(command.data);
break;
case "updateLayer":
widget.updateLayer(command.data);
break;
case "removeLayer":
widget.removeLayer(command.data);
break;
case "setBaseLayer":
widget.setBaseLayer(command.data);
break;
parseInputEndpointData(data) {
if (typeof data === "string") {
try {
data = JSON.parse(data);
} catch (e) {
throw new this.MashupPlatform.wiring.EndpointTypeError();
}
} else if (data == null || typeof data !== "object") {
throw new this.MashupPlatform.wiring.EndpointTypeError();
}
});
});

MashupPlatform.wiring.registerCallback('poiInput', (poi_info) => {
poi_info = parseInputEndpointData(poi_info);

if (!Array.isArray(poi_info)) {
poi_info = [poi_info];
return data;
}
poi_info.forEach(widget.registerPoI, widget);
});

MashupPlatform.wiring.registerCallback('replacePoIs', (poi_info) => {
poi_info = parseInputEndpointData(poi_info);
}

if (!Array.isArray(poi_info)) {
poi_info = [poi_info];
}
widget.replacePoIs(poi_info);
});

MashupPlatform.wiring.registerCallback('poiInputCenter', (poi_info) => {
if (poi_info == null) {
poi_info = [];
}

poi_info = parseInputEndpointData(poi_info);

if (!Array.isArray(poi_info)) {
poi_info = [poi_info];
}

poi_info.forEach((poi) => {
if (poi != null && typeof poi === "object") {
widget.registerPoI(poi)
}
});
widget.centerPoI(poi_info);
});

MashupPlatform.wiring.registerCallback('deletePoiInput', (poi_info) => {
poi_info = parseInputEndpointData(poi_info);

if (!Array.isArray(poi_info)) {
poi_info = [poi_info];
}
poi_info.forEach(widget.removePoI, widget);
});
window.CoNWeT_ol3_Widget = Widget;

})();
Loading