forked from marva/sumorobot-web
fix closing control_if mutator
This commit is contained in:
parent
44b008d8fe
commit
6a4982c939
58
sumorobot.js
58
sumorobot.js
@ -17,10 +17,12 @@ var sumostart = false;
|
||||
/* disable / enable Python code */
|
||||
var pythonEnabled = false;
|
||||
|
||||
/* control_if block id */
|
||||
var controlBlockId = "";
|
||||
/* last hightlighted block id */
|
||||
var highlighted = "";
|
||||
var lastHighlighted = "";
|
||||
/* block highlight WebSocket */
|
||||
var block_highlight = null;
|
||||
var blockHighlight = null;
|
||||
|
||||
var Sumorobot = function(wsUri) {
|
||||
/* assign the WebSocket URI */
|
||||
@ -280,31 +282,21 @@ window.onload = function() {
|
||||
|
||||
/* on blockly code change */
|
||||
function onCodeChanged(event) {
|
||||
/* the block */
|
||||
var block = workspace.getBlockById(event.blockId);
|
||||
|
||||
/* if the if condition block was created */
|
||||
if (event.type == Blockly.Events.CREATE && block.type == "controls_if") {
|
||||
if (event.type == Blockly.Events.CREATE && event.xml.getAttributeNode("type").nodeValue == "controls_if") {
|
||||
/* remember the control_if block id */
|
||||
controlBlockId = event.blockId;
|
||||
/* automatically add the else statement input */
|
||||
var block = workspace.getBlockById(event.blockId);
|
||||
block.elseCount_ = 1;
|
||||
block.updateShape_();
|
||||
/* disable the if condition block */
|
||||
$("block[type=controls_if]").replaceWith("<block type='controls_if' disabled='true'></block>");
|
||||
workspace.updateToolbox(document.getElementById("toolbox"));
|
||||
|
||||
/* set a click listener on the document */
|
||||
$(document).click(function(e) {
|
||||
var target = e.target;
|
||||
/* when the user clicks anywhere outside the mutator and not on the mutator icon */
|
||||
if (!$(target).is('.blocklyBubbleCanvas') && !$(target).parents().is('.blocklyBubbleCanvas')) {
|
||||
if (!$(target).is('.blocklyIconGroup') && !$(target).parents().is('.blocklyIconGroup')) {
|
||||
/* hide the mutator */
|
||||
block.mutator.setVisible(false);
|
||||
}
|
||||
}
|
||||
});
|
||||
/* if the if condition block was removed */
|
||||
} else if (event.type == Blockly.Events.DELETE && event.oldXml.getAttributeNode("type").nodeValue == "controls_if") {
|
||||
/* remove the control_if block id */
|
||||
controlBlockId = "";
|
||||
/* enable the if condition block */
|
||||
$("block[type=controls_if]").replaceWith("<block type='controls_if'></block>");
|
||||
workspace.updateToolbox(document.getElementById("toolbox"));
|
||||
@ -446,7 +438,7 @@ window.onload = function() {
|
||||
$(".btn-stop").click(function() {
|
||||
sumostart = false;
|
||||
sumorobot.send("stop");
|
||||
workspace.highlightBlock(highlighted, false);
|
||||
workspace.highlightBlock(lastHighlighted, false);
|
||||
});
|
||||
|
||||
/* remote control enable listener */
|
||||
@ -475,16 +467,22 @@ window.onload = function() {
|
||||
$(this).addClass("btn-selected");
|
||||
/* update robot IDs in local storage */
|
||||
setLocalStorageItem("sumorobot.robotID" + index, robotID);
|
||||
/* in case there is a open connection */
|
||||
if (sumorobot && blockHighlight) {
|
||||
/* close the connections */
|
||||
sumorobot.close();
|
||||
blockHighlight.close();
|
||||
}
|
||||
/* connect to the selected robots WebSocket */
|
||||
sumorobot = new Sumorobot("ws://" + robotServer + ":80/p2p/browser/" + robotID + "/");
|
||||
/* connect to the other block highlight WebSocket */
|
||||
block_highlight = new WebSocket("ws://" + robotServer + ":80/p2p/browser/" + robotID + "-highlight/");
|
||||
blockHighlight = new WebSocket("ws://" + robotServer + ":80/p2p/browser/" + robotID + "-highlight/");
|
||||
/* when there is a message from the WebSocket */
|
||||
block_highlight.onmessage = function(evt) {
|
||||
blockHighlight.onmessage = function(evt) {
|
||||
/* when scope is received */
|
||||
if (evt.data.length == 20 && sumostart) {
|
||||
workspace.highlightBlock(evt.data);
|
||||
highlighted = evt.data;
|
||||
lastHighlighted = evt.data;
|
||||
}
|
||||
};
|
||||
/* hide the configuration panel */
|
||||
@ -493,4 +491,20 @@ window.onload = function() {
|
||||
|
||||
/* load the Mixer stream */
|
||||
$("#stream").html('<iframe width="100%" height="100%" allowfullscreen="true" src="https://mixer.com/embed/player/14551694"></iframe>');
|
||||
|
||||
/* set a click listener on the document */
|
||||
$(document).click(function(e) {
|
||||
var target = e.target;
|
||||
|
||||
/* when control_if block is in use */
|
||||
if (controlBlockId) {
|
||||
/* when the user clicks anywhere outside the mutator and not on the mutator icon */
|
||||
if (!$(target).is('.blocklyBubbleCanvas') && !$(target).parents().is('.blocklyBubbleCanvas')) {
|
||||
if (!$(target).is('.blocklyIconGroup') && !$(target).parents().is('.blocklyIconGroup')) {
|
||||
/* hide the mutator */
|
||||
workspace.getBlockById(controlBlockId).mutator.setVisible(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user