Anders and Briegel in Python
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 lines
1.5KB

  1. function poll() {
  2. var xhr = new XMLHttpRequest();
  3. xhr.timeout = 60000;
  4. xhr.onload = function() {
  5. var state = JSON.parse(xhr.responseText);
  6. updateScene(state);
  7. poll();
  8. };
  9. xhr.onerror = function(e){
  10. poll();
  11. };
  12. xhr.open("GET", "/state", true);
  13. xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
  14. xhr.send();
  15. }
  16. function updateScene(state) {
  17. if (state.needs_update === false){return;}
  18. var oldState = scene.getObjectByName("graphstate");
  19. scene.remove(oldState);
  20. oldState = null;
  21. var geometry = new THREE.Geometry();
  22. //nodeGeometry.labels = [];
  23. //nodeGeometry.colors = [];
  24. for (var i in state.nodes) {
  25. var node = state.nodes[i];
  26. var pos = state.meta[i].pos;
  27. var vertex = new THREE.Vector3(pos.x, pos.y, pos.z);
  28. geometry.vertices.push(vertex);
  29. //geometry.colors[i] = new THREE.Color(n.color);
  30. //geometry.labels[i] = n.label;
  31. }
  32. var edges = new THREE.Object3D();
  33. for (i=0; i < state.edges.length; ++i) {
  34. var edge = state.edges[i];
  35. var start = state.meta[edge[0]].pos;
  36. var end = state.meta[edge[1]].pos;
  37. var newEdge = makeEdge(start, end);
  38. edges.add(newEdge);
  39. }
  40. var particles = new THREE.Points(geometry, materials.qubit);
  41. var newState = new THREE.Object3D();
  42. newState.name = "graphstate";
  43. newState.add(particles);
  44. newState.add(edges);
  45. scene.add(newState);
  46. render();
  47. }