Commit b7f450f5 authored by athanasios's avatar athanasios
Browse files

boundingbox now optional

parent 98582931
...@@ -21,46 +21,60 @@ ...@@ -21,46 +21,60 @@
<div id="wrapper"> <div id="wrapper">
<div id="sidebar"> <div id="sidebar">
<form> <form>
<div class="row"> <div class="form-row">
<div class="col-8">
<div class="form-group"> <div class="form-group col-8">
<label>host</label> <label>host</label>
<input type="text" class="form-control" id="host" /> <input type="text" class="form-control" id="host" />
</div>
</div> </div>
<div class="col-4">
<div class="form-group"> <div class="form-group col-4">
<label>port</label> <label>port</label>
<input type="text" class="form-control" id="port" /> <input type="text" class="form-control" id="port" />
</div>
</div> </div>
</div>
<div class="form-group">
<label>endpoint</label>
<input type="text" class="form-control" id="endpoint" />
</div>
<div class="form-group"> <div class="form-group col-12">
<label>layers</label> <label>endpoint</label>
<select class="form-control" id="layersList" size="10"></select> <input type="text" class="form-control" id="endpoint" />
<button id="getLayers" class="btn btn-primary btn-block" type="button">Get Layers</button> </div>
</div>
<div class="form-group col-12">
<label>layers</label>
<select class="form-control" id="layersList" size="10"></select>
</div>
<div class="form-group col-12">
<button id="getLayers" class="btn btn-primary btn-block" type="button">Get Layers</button>
</div>
<div class="form-group col-12">
<label>bounding box</label>
<input id="boundingBoxInput" type="text" class="form-control" />
</div>
<div class="form-group col-6">
<button id="setBoundingBox" class="btn btn-primary btn-block" type="button">Set</button>
</div>
<div class="form-group col-6">
<button id="clearBoundingBox" class="btn btn-primary btn-block" type="button">Clear</button>
</div>
<div class="form-group col-12">
<label for="stylesList">style</label>
<select class="form-control" id="stylesList">
<option>Default</option>
<option>Node Level</option>
</select>
</div>
<div class="form-group col-12">
<div class="form-check">
<input type="checkbox" class="form-check-input" id="toggleFreezeScene" disabled>
<label class="form-check-label" for="toggleFreezeScene">Freeze Scene</label>
</div>
</div>
<div class="form-group">
<label>bounding box</label>
<input id="boundingBoxInput" type="text" class="form-control mb-2" />
<button id="setBoundingBox" class="btn btn-primary btn-block" type="button">Set</button>
</div>
<div class="form-group">
<label for="stylesList">style</label>
<select class="form-control" id="stylesList">
<option>Default</option>
<option>Node Level</option>
</select>
</div>
<div class="form-check">
<input type="checkbox" class="form-check-input" id="toggleFreezeScene" disabled>
<label class="form-check-label" for="toggleFreezeScene">Freeze Scene</label>
</div> </div>
</form> </form>
</div> </div>
......
...@@ -10,6 +10,7 @@ define([ ...@@ -10,6 +10,7 @@ define([
this.mouseClicks = 0; this.mouseClicks = 0;
this.lons = []; this.lons = [];
this.lats = []; this.lats = [];
this.defined = false;
this.bindedClickHandler = this.clickHandler.bind(this); this.bindedClickHandler = this.clickHandler.bind(this);
this.bindedMoveHandler = this.moveHandler.bind(this); this.bindedMoveHandler = this.moveHandler.bind(this);
this.bindedDynaimcPropertyHandler = this.dynamicPropertyHandler.bind(this); this.bindedDynaimcPropertyHandler = this.dynamicPropertyHandler.bind(this);
...@@ -22,7 +23,6 @@ define([ ...@@ -22,7 +23,6 @@ define([
register: function () { register: function () {
let viewer = CesiumViewer.getViewer(); let viewer = CesiumViewer.getViewer();
viewer.scene.canvas.addEventListener('click', this.bindedClickHandler); viewer.scene.canvas.addEventListener('click', this.bindedClickHandler);
}, },
unregister: function () { unregister: function () {
...@@ -39,7 +39,7 @@ define([ ...@@ -39,7 +39,7 @@ define([
this.mouseClicks = 0; this.mouseClicks = 0;
this.lons = []; this.lons = [];
this.lats = []; this.lats = [];
this.defined = false;
let viewer = CesiumViewer.getViewer(); let viewer = CesiumViewer.getViewer();
viewer.entities.removeById("bb"); viewer.entities.removeById("bb");
this.rectangle = new Cesium.Rectangle(); this.rectangle = new Cesium.Rectangle();
...@@ -75,6 +75,7 @@ define([ ...@@ -75,6 +75,7 @@ define([
viewer.scene.canvas.removeEventListener('mousemove', this.bindedMoveHandler); viewer.scene.canvas.removeEventListener('mousemove', this.bindedMoveHandler);
this.lons = this.lons.sort(function (a, b) { return a - b; }); this.lons = this.lons.sort(function (a, b) { return a - b; });
this.lats = this.lats.sort(function (a, b) { return a - b; }); this.lats = this.lats.sort(function (a, b) { return a - b; });
this.defined = true;
topic.publish("BoundingBoxCreated", "BoundingBoxDefined"); topic.publish("BoundingBoxCreated", "BoundingBoxDefined");
} }
...@@ -99,8 +100,12 @@ define([ ...@@ -99,8 +100,12 @@ define([
return Cesium.Rectangle.clone(this.rectangle, result); return Cesium.Rectangle.clone(this.rectangle, result);
}, },
isDefined: function () {
return this.defined;
},
toString: function () { toString: function () {
return this.lons[0] + "," + this.lats[0] + "," + this.lons[1] + "," + this.lats[1]; return `${this.lons[0]},${this.lats[0]},${this.lons[1]},${this.lats[1]}`;
} }
}); });
......
...@@ -22,13 +22,13 @@ define([ ...@@ -22,13 +22,13 @@ define([
.param("service", "3DPS") .param("service", "3DPS")
.param("acceptversions", "1.0") .param("acceptversions", "1.0")
.param("request", "GetScene") .param("request", "GetScene")
.param("boundingbox", req.boundingBox) .param("layers", req.layer)
.param("cullingvolume", clientParams.cullingVolume2Url()) .param("cullingvolume", clientParams.cullingVolume2Url())
.param("camera", clientParams.camera2Url()) .param("camera", clientParams.camera2Url())
.param("frustum", clientParams.frustum2Url()) .param("frustum", clientParams.frustum2Url())
.param("drawingbuffer", clientParams.drawingBuffer2Url()) .param("drawingbuffer", clientParams.drawingBuffer2Url())
.param("time", Date.now()) .param("time", Date.now())
.param("intersect", true) .optional("boundingbox", req.boundingBox)
.build(); .build();
StatusBar.beginProcess("Waiting for response"); StatusBar.beginProcess("Waiting for response");
......
...@@ -26,8 +26,15 @@ define([ ...@@ -26,8 +26,15 @@ define([
return this; return this;
}; };
this.optional = function (name, value) {
if (value) {
this._params.push(`${name}=${value}&`);
}
return this;
}
this.build = function () { this.build = function () {
let result = `${this._protocol}://${this._host}`; let result = `${this._protocol}://${this._host}`;
if (this._port) { result += `:${this._port}`; } if (this._port) { result += `:${this._port}`; }
if (this._path) { result += `/${this._path}`; } if (this._path) { result += `/${this._path}`; }
if (this._params) { if (this._params) {
......
...@@ -83,6 +83,10 @@ require([ ...@@ -83,6 +83,10 @@ require([
state.setBoundingBox(); state.setBoundingBox();
}); });
$("#clearBoundingBox").click(function (event) {
state.clearBoundingBox();
});
$("#toggleFreezeScene").change(function () { $("#toggleFreezeScene").change(function () {
state.toggleFreezeScene(); state.toggleFreezeScene();
}); });
......
define([ define([
"dojo/_base/declare", "dojo/_base/declare",
"helpers/NodeCache", "helpers/NodeCache"
"helpers/RequestWrapper" ], function (declare, NodeCache) {
], function (declare, NodeCache, RequestWrapper) {
return declare(null, { return declare(null, {
...@@ -10,8 +9,11 @@ define([ ...@@ -10,8 +9,11 @@ define([
init(target, bb) { init(target, bb) {
bb.unregister(); bb.unregister();
NodeCache.clearAll();
$("#boundingBoxInput").val(bb.toString()); $("#boundingBoxInput").val(bb.toString());
$('#toggleFreezeScene').prop('checked', false);
$("#toggleFreezeScene").prop("disabled", false); $("#toggleFreezeScene").prop("disabled", false);
target.operations.setBoundingBox(bb.toString());
target.makeRequest(); target.makeRequest();
}, },
...@@ -21,14 +23,12 @@ define([ ...@@ -21,14 +23,12 @@ define([
target.changeState("BoundingBoxDefining"); target.changeState("BoundingBoxDefining");
}, },
clearingBoundingBox: function (target, bb) {
// no-op
},
makingRequest: function (target) { makingRequest: function (target) {
let requestWrapper = new RequestWrapper(); target.operations.invokeRequest();
requestWrapper.request({
host: $("#host").val(),
port: $("#port").val(),
endpoint: $("#endpoint").val(),
boundingBox: $("#boundingBoxInput").val()
});
target.changeState("WaitingForPortrayal"); target.changeState("WaitingForPortrayal");
}, },
...@@ -38,7 +38,7 @@ define([ ...@@ -38,7 +38,7 @@ define([
selectingLayer: function (target, layer) { selectingLayer: function (target, layer) {
target.operations.selectLayer(layer); target.operations.selectLayer(layer);
target.changeState("BoundingBoxUndefined"); target.changeState("LayerSelected");
}, },
gettingLayers: function (target) { gettingLayers: function (target) {
......
...@@ -19,6 +19,10 @@ define([ ...@@ -19,6 +19,10 @@ define([
bb.clear(); bb.clear();
}, },
clearingBoundingBox: function (target, bb) {
// no-op
},
makingRequest: function (target) { makingRequest: function (target) {
// no-op // no-op
}, },
......
...@@ -13,6 +13,7 @@ define([ ...@@ -13,6 +13,7 @@ define([
bb.clear(); bb.clear();
NodeCache.clearAll(); NodeCache.clearAll();
$("#boundingBoxInput").val(""); $("#boundingBoxInput").val("");
$('#toggleFreezeScene').prop('checked', false);
$('#toggleFreezeScene').prop('disabled', true); $('#toggleFreezeScene').prop('disabled', true);
}, },
...@@ -20,6 +21,10 @@ define([ ...@@ -20,6 +21,10 @@ define([
target.changeState("BoundingBoxDefining"); target.changeState("BoundingBoxDefining");
}, },
clearingBoundingBox: function (target, bb) {
// no-op
},
makingRequest: function (target) { makingRequest: function (target) {
// no-op // no-op
}, },
...@@ -30,6 +35,8 @@ define([ ...@@ -30,6 +35,8 @@ define([
selectingLayer: function (target, layer) { selectingLayer: function (target, layer) {
target.operations.selectLayer(layer); target.operations.selectLayer(layer);
target.operations.invokeRequest({ layer: layer });
target.changeState("WaitingForPortrayal");
}, },
gettingLayers: function (target) { gettingLayers: function (target) {
......
...@@ -15,10 +15,14 @@ define([ ...@@ -15,10 +15,14 @@ define([
settingBoundingBox: function (target, bb) { settingBoundingBox: function (target, bb) {
bb.clear(); bb.clear();
NodeCache.clearAll(); // NodeCache.clearAll();
target.changeState("BoundingBoxDefining"); target.changeState("BoundingBoxDefining");
}, },
clearingBoundingBox: function (target, bb) {
// no-op
},
makingRequest: function (target) { makingRequest: function (target) {
// no-op // no-op
}, },
...@@ -28,8 +32,9 @@ define([ ...@@ -28,8 +32,9 @@ define([
}, },
selectingLayer: function (target, layer) { selectingLayer: function (target, layer) {
target.operations.clear();
target.operations.selectLayer(layer); target.operations.selectLayer(layer);
target.changeState("BoundingBoxUndefined"); target.changeState("LayerSelected");
}, },
gettingLayers: function (target) { gettingLayers: function (target) {
......
define([
"dojo/_base/declare",
"helpers/NodeCache"
], function (declare, NodeCache) {
return declare(null, {
constructor: function () {
},
init(target, bb) {
bb.clear();
NodeCache.clearAll();
$("#boundingBoxInput").val("");
$('#toggleFreezeScene').prop('checked', false);
$('#toggleFreezeScene').prop('disabled', true);
},
settingBoundingBox: function (target, bb) {
// no-op
},
clearingBoundingBox: function (target, bb) {
// no-op
},
makingRequest: function (target) {
target.operations.invokeRequest();
target.changeState("WaitingForPortrayal");
},
toggleFreezingScene: function (target) {
// no-op
},
selectingLayer: function (target, layer) {
console.log("hihoho");
target.operations.selectLayer(layer);
},
gettingLayers: function (target) {
target.operations.getLayers();
target.changeState("NoLayerSelected");
}
});
});
\ No newline at end of file
...@@ -12,7 +12,9 @@ define([ ...@@ -12,7 +12,9 @@ define([
init(target, bb) { init(target, bb) {
bb.clear(); bb.clear();
NodeCache.clearAll(); NodeCache.clearAll();
target.operations.clear();
$("#boundingBoxInput").val(""); $("#boundingBoxInput").val("");
$('#toggleFreezeScene').prop('checked', false);
$('#toggleFreezeScene').prop('disabled', true); $('#toggleFreezeScene').prop('disabled', true);
}, },
...@@ -20,6 +22,10 @@ define([ ...@@ -20,6 +22,10 @@ define([
// no-op // no-op
}, },
clearingBoundingBox: function (target, bb) {
// no-op
},
makingRequest: function (target) { makingRequest: function (target) {
// no-op // no-op
}, },
...@@ -29,8 +35,9 @@ define([ ...@@ -29,8 +35,9 @@ define([
}, },
selectingLayer: function (target, layer) { selectingLayer: function (target, layer) {
target.operations.clear();
target.operations.selectLayer(layer); target.operations.selectLayer(layer);
target.changeState("BoundingBoxUndefined"); target.changeState("LayerSelected");
}, },
gettingLayers: function (target) { gettingLayers: function (target) {
......
...@@ -3,13 +3,16 @@ define([ ...@@ -3,13 +3,16 @@ define([
"dojo/request", "dojo/request",
"helpers/UrlBuilder", "helpers/UrlBuilder",
"CesiumAdaptor/CesiumViewer", "CesiumAdaptor/CesiumViewer",
"helpers/Layers" "helpers/Layers",
], function (declare, request, UrlBuilder, CesiumViewer, Layers) { "helpers/RequestWrapper"
], function (declare, request, UrlBuilder, CesiumViewer, Layers, RequestWrapper) {
return declare(null, { return declare(null, {
constructor: function () { constructor: function () {
this._layers = null; this._layers = null;
this._active_layer = null;
this._bb = null;
}, },
...@@ -42,13 +45,45 @@ define([ ...@@ -42,13 +45,45 @@ define([
}, },
selectLayer: function (layer) { selectLayer: function (layer) {
// let selection = listElement.value; this._active_layer = layer;
let layerCenter = this._layers.getLayerCenter(layer); let layerCenter = this._layers.getLayerCenter(layer);
let viewer = CesiumViewer.getViewer(); let viewer = CesiumViewer.getViewer();
let center = Cesium.Cartesian3.fromDegrees(layerCenter.lon, layerCenter.lat, 20000.0); let center = Cesium.Cartesian3.fromDegrees(layerCenter.lon, layerCenter.lat, 20000.0);
viewer.camera.setView({ viewer.camera.setView({
destination: center destination: center,
orientation: {
heading: 0.0,
pitch: Cesium.Math.toRadians(-90),
roll: 0.0
}
}); });
},
setBoundingBox: function (bb) {
this._bb = bb;
},
invokeRequest: function () {
let requestWrapper = new RequestWrapper();
let req = {
host: $("#host").val(),
port: $("#port").val(),
endpoint: $("#endpoint").val(),
layer: this._active_layer
};
if (this._bb) {
req.boundingBox = this._bb;
}
requestWrapper.request(req);
},
clear: function () {
this._active_layer = null;
this._bb = null;
},
clearBoundingBox: function () {
this._bb = null;
} }
}); });
......
...@@ -14,18 +14,22 @@ define([ ...@@ -14,18 +14,22 @@ define([
settingBoundingBox: function (target, bb) { settingBoundingBox: function (target, bb) {
bb.clear(); bb.clear();
NodeCache.clearAll();
target.changeState("BoundingBoxDefining"); target.changeState("BoundingBoxDefining");
}, },
clearingBoundingBox: function (target, bb) {
if (bb.isDefined()) {
bb.clear();
NodeCache.clearAll();
target.operations.clearBoundingBox();
$("#boundingBoxInput").val("");
target.makeRequest();
}
},
makingRequest: function (target) { makingRequest: function (target) {
let requestWrapper = new RequestWrapper(); target.operations.invokeRequest();
requestWrapper.request({
host: $("#host").val(),
port: $("#port").val(),
endpoint: $("#endpoint").val(),
boundingBox: $("#boundingBoxInput").val()
});
target.changeState("WaitingForPortrayal"); target.changeState("WaitingForPortrayal");
}, },
...@@ -34,8 +38,9 @@ define([ ...@@ -34,8 +38,9 @@ define([
}, },
selectingLayer: function (target, layer) { selectingLayer: function (target, layer) {
target.operations.clear();
target.operations.selectLayer(layer); target.operations.selectLayer(layer);
target.changeState("BoundingBoxUndefined"); target.changeState("LayerSelected");
}, },
gettingLayers: function (target) { gettingLayers: function (target) {
......
...@@ -20,6 +20,10 @@ define([ ...@@ -20,6 +20,10 @@ define([
this._current.settingBoundingBox(this, this._boundingBox); this._current.settingBoundingBox(this, this._boundingBox);
}, },
clearBoundingBox: function () {
this._current.clearingBoundingBox(this, this._boundingBox);
},
makeRequest: function () { makeRequest: function () {
this._current.makingRequest(this); this._current.makingRequest(this);
}, },
......
define([ define([
"dojo/_base/declare", "dojo/_base/declare",
"state/NoLayerSelected", "state/NoLayerSelected",
"state/LayerSelected",
"state/BoundingBoxUndefined", "state/BoundingBoxUndefined",
"state/BoundingBoxDefining", "state/BoundingBoxDefining",
"state/BoundingBoxDefined", "state/BoundingBoxDefined",
"state/WaitingForPortrayal", "state/WaitingForPortrayal",
"state/FreezeScene", "state/FreezeScene",
"state/SceneRendered" "state/SceneRendered"
], function (declare, NoLayerSelected, BoundingBoxUndefined, BoundingBoxDefining, BoundingBoxDefined, WaitingForPortrayal, FreezeScene, SceneRendered) { ], function (declare, NoLayerSelected, LayerSelected, BoundingBoxUndefined, BoundingBoxDefining, BoundingBoxDefined, WaitingForPortrayal, FreezeScene, SceneRendered) {
return declare(null, { return declare(null, {
...@@ -19,6 +20,8 @@ define([ ...@@ -19,6 +20,8 @@ define([
switch (stateName) { switch (stateName) {
case "NoLayerSelected": case "NoLayerSelected":
return new NoLayerSelected(); return new NoLayerSelected();
case "LayerSelected":
return new LayerSelected();
case "BoundingBoxUndefined": case "BoundingBoxUndefined":
return new BoundingBoxUndefined(); return new BoundingBoxUndefined();
case "BoundingBoxDefining": case "BoundingBoxDefining":
......
define([ define([
"dojo/_base/declare", "dojo/_base/declare"
"helpers/RequestWrapper" ], function (declare) {
], function (declare, RequestWrapper) {
return declare(null, { return declare(null, {
...@@ -15,14 +14,12 @@ define([ ...@@ -15,14 +14,12 @@ define([
// no-op // no-op
}, },
clearingBoundingBox: function (target, bb) {
// no-op
},
makingRequest: function (target) { makingRequest: function (target) {
requestWrapper = new RequestWrapper(); target.operations.invokeRequest();
requestWrapper.request({
host: $("#host").val(),
port: $("#port").val(),
endpoint: $("#endpoint").val(),
boundingBox: $("#boundingBoxInput").val()
});
}, },
toggleFreezingScene: function (target) { toggleFreezingScene: function (target) {
......
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