diff options
author | IanMJB <ianmjb@gmail.com> | 2014-09-12 15:59:44 +0100 |
---|---|---|
committer | IanMJB <ianmjb@gmail.com> | 2014-09-12 15:59:44 +0100 |
commit | ab0ebc8eb5e9fd2e70c9685d710b148686dceb6c (patch) | |
tree | ced8f7ebcf3a01c4b7d59ea39c5c71b6fcd739dc | |
parent | 25046fb610d1198c8c1fbc511e6538c4af48ba42 (diff) | |
download | leaflet-soton-ab0ebc8eb5e9fd2e70c9685d710b148686dceb6c.tar leaflet-soton-ab0ebc8eb5e9fd2e70c9685d710b148686dceb6c.tar.gz |
Magic with recommended entrances.
-rwxr-xr-x | create-data.js | 40 | ||||
-rw-r--r-- | examples/doors.html | 35 |
2 files changed, 75 insertions, 0 deletions
diff --git a/create-data.js b/create-data.js index 2cd3353..6ba0408 100755 --- a/create-data.js +++ b/create-data.js @@ -321,6 +321,9 @@ function processBuildingParts(buildingParts, callback) { findRoomContents(part, workstations, callback); }, function(callback) { + getRecommendedEntrances(part, callback); + }, + function(callback) { findRoomImages(part, callback); }], callback); @@ -1130,6 +1133,43 @@ SELECT * WHERE {\ }); } +function getRecommendedEntrances(part, callback) { + var query = "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\ + PREFIX portals: <http://purl.org/openorg/portals/>\ + PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>\ + SELECT ?portal WHERE {\ + ?uri portals:recommendedBuildingEntrance ?portal\ + FILTER (\ + ?uri = <URI>\ + )\ + }"; + + query = query.replace("URI", part.properties.uri); + + sparqlQuery(query, function(err, data) { + if (err) { + console.error("error in getRecommended Entrance"); + console.error("query " + query); + console.error(err); + } + + part.properties.recommendedEntrances = portals = []; + + data.results.bindings.forEach(function(portal) { + if ('error-message' in portal) { + console.error("error in portals"); + console.error(JSON.stringify(feature)); + console.error("query:\n" + query); + return; + } + + portals.push(portal.portal.value); + }); + + callback(null, portals); + }); +} + // workstations function getUniWorkstations(workstations, callback) { diff --git a/examples/doors.html b/examples/doors.html index 4957a41..070045e 100644 --- a/examples/doors.html +++ b/examples/doors.html @@ -70,11 +70,16 @@ }); var buildingRooms = {}; + var roomsByUri = {}; // Find the building rooms (probably something that the library // should help with, but it does not (yet) data.buildingParts.features.forEach(function(part) { if (part.properties.buildingpart === "room") { + + if ("uri" in part.properties) { + roomsByUri[part.properties.uri] = part; + } if (!("building" in part.properties)) { console.log("unknown building"); console.log(part); @@ -91,6 +96,8 @@ } }); + console.log("roomsByUri"); + console.log(roomsByUri); data.buildings.features.forEach(function(building) { // if the building has some entrances in the data @@ -221,9 +228,37 @@ tbody.appendChild(tr); }); + table.appendChild(tbody); div.appendChild(table); } + + var ul = document.createElement("ul"); + for(var level in building.properties.rooms) { + var rooms = building.properties.rooms[level]; + rooms.forEach(function(room) { + var li = document.createElement("li"); + li.textContent = room; + + if (room in roomsByUri) { + var roomPart = roomsByUri[room]; + var nested_ul = document.createElement("ul"); + roomPart.properties.recommendedEntrances.forEach(function(entrance) { + console.log("entrance"); + console.log(entrance); + var nested_li = document.createElement("li"); + nested_li.textContent = entrance; + nested_ul.appendChild(nested_li); + }); + li.appendChild(nested_ul); + } else { + // dont know location + } + + ul.appendChild(li); + }); + } + div.appendChild(ul); }); }); |