Skip to content

Commit

Permalink
working on queries
Browse files Browse the repository at this point in the history
  • Loading branch information
rubendel committed Nov 17, 2015
1 parent 9c3c12c commit 0bc63df
Show file tree
Hide file tree
Showing 9 changed files with 140 additions and 35 deletions.
1 change: 1 addition & 0 deletions .classpath
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,6 @@
<classpathentry kind="lib" path="build/antlibs/httpclient-cache-4.3.2.jar"/>
<classpathentry kind="lib" path="build/antlibs/httpcore-4.3.1.jar"/>
<classpathentry kind="lib" path="build/antlibs/httpmime-4.3.2.jar"/>
<classpathentry kind="lib" path="build/antlibs/github.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
31 changes: 18 additions & 13 deletions 3dview.html
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ <h3 class="panel-title">Visualization options</h3>
function ThreeDView(containerDiv, parent) {
var o = this;
o.selectedId = -1;

// IfcProduct.oid -> GeometryInfo.oid
o.loadedOids = {};

this.load = function(){
Expand Down Expand Up @@ -233,6 +235,7 @@ <h3 class="panel-title">Visualization options</h3>
};

this.objectVisibilityChanged = function(objects){
console.log(objects);
// todo use groupid

var uniqueRoids = [];
Expand All @@ -243,9 +246,10 @@ <h3 class="panel-title">Visualization options</h3>

var oidsNotLoaded = [];

var count = 0;

for (var i=0; i<objects.length; i++) {
var object = objects[i];

if (i == 0) {
// TODO actually do something useful here
uniqueRoids.push(object.model.roid);
Expand All @@ -259,14 +263,15 @@ <h3 class="panel-title">Visualization options</h3>
object.getRepresentation(function(representation){
if (representation != null) {
if (Settings.getDefaultHiddenTypes()[object.getType()] == null || object.trans.mode == 0) {
oidsNotLoaded.push(object.oid);
oidsNotLoaded[object.object._rgeometry] = object.oid;
count++;
}
}
});
}
}
}
if (oidsNotLoaded.length > 0) {
if (count > 0) {
var models = {};
uniqueRoids.forEach(function(roid){
models[roid] = parent.models[roid];
Expand Down Expand Up @@ -301,14 +306,14 @@ <h3 class="panel-title">Visualization options</h3>
});
o.loadedOids[oid] = true;
});
geometryLoader.progressListeners.push(function(state){
if (state == "done") {
for (var i=0; i<oidsNotLoaded.length; i++) {
o.loadedOids[oidsNotLoaded[i]] = true;
}
o.resize();
}
});
// geometryLoader.progressListeners.push(function(state){
// if (state == "done") {
// for (var i=0; i<oidsNotLoaded.length; i++) {
// o.loadedOids[oidsNotLoaded[i]] = true;
// }
// o.resize();
// }
// });
o.viewer.loadGeometry(geometryLoader);
}
};
Expand Down Expand Up @@ -336,9 +341,9 @@ <h3 class="panel-title">Visualization options</h3>
};

this.loadRevision = function(project, roid){
window.setInterval(function(){
Global.bimServerApi.registerNewExtendedDataOnRevisionHandler(roid, function(){
o.updateVisualisationOverride(roid);
}, 5000);
}, function(){});
};

this.updateVisualisationOverride = function(roid){
Expand Down
Binary file added build/antlibs/github.jar
Binary file not shown.
5 changes: 5 additions & 0 deletions css/main.css
Original file line number Diff line number Diff line change
Expand Up @@ -475,4 +475,9 @@ div.right {

input[type="file"].file {
display: none;
}

.query2 {
padding-left: 10px;
padding-top: 10px;
}
37 changes: 16 additions & 21 deletions download.html
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ <h3>Download / Checkout</h3>
if (serializer.oid == defaultSerializer.oid) {
option.attr("selected", "selected");
}
option.attr("streaming", serializer.streaming);
containerDiv.find(".revisionsdownloadcheckoutselect").append(option);
});
othis.checkRevisionsCheckoutButton();
Expand Down Expand Up @@ -222,26 +223,19 @@ <h3>Download / Checkout</h3>
});
}

if (data.downloadType == "query") {
Global.bimServerApi.call("Bimsie1ServiceInterface", "downloadQuery", data, function(data){
containerDiv.find(".downloadStatus").html("Preparing download...");
othis.laid = parseInt(data);
Global.bimServerApi.registerProgressHandler(othis.laid, othis.progressHandler, afterRegistration);
}, function(){
othis.afterDownload();
containerDiv.find(".downloadStatus").addClass("alert-danger").html(exception.message);
});
} else if (data.downloadType == "checkout") {
Global.bimServerApi.call("Bimsie1ServiceInterface", "checkout", data, function(data){
containerDiv.find(".downloadStatus").html("Preparing checkout...");
othis.laid = parseInt(data);
Global.bimServerApi.registerProgressHandler(othis.laid, othis.progressHandler, afterRegistration);
}, function(){
othis.afterDownload();
containerDiv.find(".downloadStatus").addClass("alert-danger").html(exception.message);
});
} else if (data.downloadType == "downloadRevisions") {
Global.bimServerApi.call("Bimsie1ServiceInterface", "downloadRevisions", data, function(data){
if (data.streaming) {
if (data.downloadType == "downloadRevisions") {
var query = {
queries: [{
type: "Object",
includeAllSubTypes: true
}]
};
data.query = JSON.stringify(query);
} else {
console.log("Unimplemented for streaming", data.downloadType);
}
Global.bimServerApi.call("Bimsie1ServiceInterface", "downloadByNewJsonQuery", data, function(data){
containerDiv.find(".downloadStatus").html("Preparing download...");
othis.laid = parseInt(data);
Global.bimServerApi.registerProgressHandler(othis.laid, othis.progressHandler, afterRegistration);
Expand All @@ -250,7 +244,7 @@ <h3>Download / Checkout</h3>
containerDiv.find(".downloadStatus").addClass("alert-danger").html(exception.message);
});
} else {
Global.bimServerApi.call("Bimsie1ServiceInterface", "download", data, function(data){
Global.bimServerApi.call("Bimsie1ServiceInterface", data.downloadType, data, function(data){
containerDiv.find(".downloadStatus").html("Preparing download...");
othis.laid = parseInt(data);
Global.bimServerApi.registerProgressHandler(othis.laid, othis.progressHandler, afterRegistration);
Expand Down Expand Up @@ -278,6 +272,7 @@ <h3>Download / Checkout</h3>
containerDiv.find(".downloadStatus").addClass("alert-danger").html("Select a serializer").show();
} else {
othis.data.serializerOid = containerDiv.find(".revisionsdownloadcheckoutselect").val();
othis.data.streaming = containerDiv.find(".revisionsdownloadcheckoutselect option:selected").attr("streaming") === "true";
othis.data.showOwn = true;
othis.data.sync = false;
othis.data.zip = containerDiv.find(".downloadCheckoutZip").is(":checked");
Expand Down
2 changes: 2 additions & 0 deletions main.html
Original file line number Diff line number Diff line change
Expand Up @@ -331,10 +331,12 @@
this.showDownloadRevisionsPopup = function(roids) {
var div = $("<div class=\"modal fade\">");
$(document.body).append(div);

var params = {
downloadType: "downloadRevisions",
roids: roids
};

div.load(Global.baseDir + "download.html", function(){
new Download($(this), params);
}).modal({keyboard:true, show: true});
Expand Down
16 changes: 16 additions & 0 deletions navigator.html
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@
<label class="btnProperties btn btn-default">
<input type="radio" name="options"/> Properties
</label>
<label class="btnQuery btn btn-default">
<input type="radio" name="options"/> Query
</label>
</div>
<div class="panel-body sidespanWrapper">
<div class="sidespan">
Expand All @@ -24,6 +27,7 @@
<div class="classificationWrapper ih"></div>
<div class="typesWrapper ih"></div>
<div class="layersWrapper ih"></div>
<div class="queryWrapper ih"></div>
</div>
</div>
</div>
Expand Down Expand Up @@ -51,6 +55,9 @@
promise.chain(load(containerDiv.find(".propertiesWrapper"), "properties.html", function(){
o.properties = new Properties($(this), parent, o.selectedObjectId);
}));
promise.chain(load(containerDiv.find(".queryWrapper"), "query2.html", function(){
o.query = new Query2($(this), parent, o.selectedObjectId);
}));

return promise;
};
Expand Down Expand Up @@ -93,6 +100,14 @@
o.sidespan = o.layers;
o.sidespan.show();
};

this.showQuery = function(){
if (o.sidespan != null) {
o.sidespan.hide();
}
o.sidespan = o.query;
o.sidespan.show();
};

this.showClassifications = function(){
if (o.sidespan != null) {
Expand All @@ -107,6 +122,7 @@
containerDiv.find(".btnTypes").click(o.showTypes);
containerDiv.find(".btnLayers").click(o.showLayers);
containerDiv.find(".btnClassifications").click(o.showClassifications);
containerDiv.find(".btnQuery").click(o.showQuery);

// $(window).resize(o.resize);
}
Expand Down
2 changes: 1 addition & 1 deletion query.html
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@
var qeid = containerDiv.find(".queryEngineSelect option:selected").val();
var query = containerDiv.find(".queryText").val();
var params = {
downloadType: "query",
downloadType: "downloadQuery",
allowCheckouts: false,
poid: poid,
roid: roid,
Expand Down
81 changes: 81 additions & 0 deletions query2.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
<div class="query2">
<form>
<div class="form-group">
<select class="form-control">
<option>Select a query or create your own</option>
</select>
</div>
<div class="form-group">
<textarea class="form-control" rows="20"></textarea>
</div>
<div class="form-group">
<button class="btn btn-primary queryBtn">Set selection to query</button>
</div>
</form>
</div>
<script>
function Query2(cd, parent) {
var o = this;
o.roids = [];

var queries = {
AllWalls: {
type: "IfcWall",
includeAllSubtypes: true,
include: {
field: "Representation"
}
}
};

for (var queryKey in queries) {
if (queries.hasOwnProperty(queryKey)) {
var option = $("<option>" + queryKey + "</option>");
cd.find("select").append(option);
}
}

this.show = function(){
cd.show();
};

this.hide = function(){
cd.hide();
};

cd.find("select").change(function(){
cd.find("textarea").val(JSON.stringify(queries[cd.find("select").val()], null, " "));
});

this.addRevision = function(project, roid, types){
o.roids.push(roid);
};

this.loadRevision = function(project, roid, types) {
};

this.unloadRevision = function(poid, roid) {
};

cd.find(".queryBtn").click(function(e){
e.preventDefault();
o.roids.forEach(function(roid){
var model = parent.models[roid];
if (model != null) {
model.reset();
var oids = [];
model.queryNew(JSON.parse(cd.find("textarea").val()), function(loaded){
oids.push(loaded.oid);
loaded.trans.mode = 1;
}).done(function(){
parent.setObjectVisibility(roid, oids, 1);
});
}
});
});

parent.modelAddedListeners.register(o.addRevision);
parent.modelLoadedListeners.register(o.loadRevision);
parent.modelUnloadedListeners.register(o.unloadRevision);
}
</script>

0 comments on commit 0bc63df

Please sign in to comment.