Fixing radio import (#974)
This commit is contained in:
parent
efa92e6dee
commit
05aa56fe21
@ -415,10 +415,10 @@ namespace pxt.editor {
|
|||||||
to
|
to
|
||||||
<block type="device_show_leds">
|
<block type="device_show_leds">
|
||||||
<field name="LEDS">`
|
<field name="LEDS">`
|
||||||
# # # # #
|
# # # # #
|
||||||
. . . . #
|
. . . . #
|
||||||
. . . . .
|
. . . . .
|
||||||
. . . . #
|
. . . . #
|
||||||
. . . . #
|
. . . . #
|
||||||
`
|
`
|
||||||
</field>
|
</field>
|
||||||
@ -433,7 +433,7 @@ namespace pxt.editor {
|
|||||||
const nodes = U.toArray(dom.querySelectorAll("block[type=device_show_leds]"))
|
const nodes = U.toArray(dom.querySelectorAll("block[type=device_show_leds]"))
|
||||||
.concat(U.toArray(dom.querySelectorAll("block[type=device_build_image]")))
|
.concat(U.toArray(dom.querySelectorAll("block[type=device_build_image]")))
|
||||||
.concat(U.toArray(dom.querySelectorAll("block[type=device_build_big_image]")))
|
.concat(U.toArray(dom.querySelectorAll("block[type=device_build_big_image]")))
|
||||||
nodes.forEach(node => {
|
nodes.forEach(node => {
|
||||||
// don't rewrite if already upgraded, eg. field LEDS already present
|
// don't rewrite if already upgraded, eg. field LEDS already present
|
||||||
if (U.toArray(node.children).filter(child => child.tagName == "field" && "LEDS" == child.getAttribute("name"))[0])
|
if (U.toArray(node.children).filter(child => child.tagName == "field" && "LEDS" == child.getAttribute("name"))[0])
|
||||||
return;
|
return;
|
||||||
@ -502,26 +502,40 @@ namespace pxt.editor {
|
|||||||
const mutation = node.querySelector("mutation");
|
const mutation = node.querySelector("mutation");
|
||||||
if (!mutation) return;
|
if (!mutation) return;
|
||||||
const renameMap = JSON.parse(node.getAttribute("renamemap") || "{}");
|
const renameMap = JSON.parse(node.getAttribute("renamemap") || "{}");
|
||||||
switch (mutation.getAttribute("callbackproperties")) {
|
const props = mutation.getAttribute("callbackproperties");
|
||||||
case "receivedNumber":
|
|
||||||
node.setAttribute("type", "radio_on_number");
|
if (props) {
|
||||||
node.removeChild(node.querySelector("field[name=receivedNumber]"));
|
const parts = props.split(",");
|
||||||
addField(node, renameMap, "receivedNumber");
|
|
||||||
break;
|
// It's tempting to generate radio_on_number if parts.length === 0 but
|
||||||
case "receivedString,receivedNumber":
|
// that would create a variable named "receivedNumber" and possibly shadow
|
||||||
|
// an existing variable in the user's program. It's safer to stick to the
|
||||||
|
// old block.
|
||||||
|
if (parts.length === 1) {
|
||||||
|
if (parts[0] === "receivedNumber") {
|
||||||
|
node.setAttribute("type", "radio_on_number");
|
||||||
|
node.removeChild(node.querySelector("field[name=receivedNumber]"));
|
||||||
|
addField(node, renameMap, "receivedNumber");
|
||||||
|
}
|
||||||
|
else if (parts[0] === "receivedString") {
|
||||||
|
node.setAttribute("type", "radio_on_string");
|
||||||
|
node.removeChild(node.querySelector("field[name=receivedString]"));
|
||||||
|
addField(node, renameMap, "receivedString");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
node.removeChild(mutation);
|
||||||
|
}
|
||||||
|
else if (parts.length === 2 && parts.indexOf("receivedNumber") !== -1 && parts.indexOf("receivedString") !== -1) {
|
||||||
node.setAttribute("type", "radio_on_value");
|
node.setAttribute("type", "radio_on_value");
|
||||||
node.removeChild(node.querySelector("field[name=receivedNumber]"));
|
node.removeChild(node.querySelector("field[name=receivedNumber]"));
|
||||||
node.removeChild(node.querySelector("field[name=receivedString]"));
|
node.removeChild(node.querySelector("field[name=receivedString]"));
|
||||||
addField(node, renameMap, "name");
|
addField(node, renameMap, "name");
|
||||||
addField(node, renameMap, "value");
|
addField(node, renameMap, "value");
|
||||||
break;
|
node.removeChild(mutation);
|
||||||
case "receivedString":
|
}
|
||||||
node.setAttribute("type", "radio_on_string");
|
|
||||||
node.removeChild(node.querySelector("field[name=receivedString]"));
|
|
||||||
addField(node, renameMap, "receivedString");
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
node.removeChild(mutation);
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user