{
- "site_title": "MiRobot",
+ "site_title": "Challenger",
"navigation": [
"/index.html",
- "/assembly_instructions/parts_list.html",
- "/assembly_instructions/overview.html",
- "/assembly_instructions/tapping_threads.html",
- "/assembly_instructions/components_list.html",
- "/assembly_instructions/base_assembly.html",
- "/assembly_instructions/a_axis_assembly.html",
- "/assembly_instructions/b_axis_assembly.html",
- "/assembly_instructions/c_axis_assembly.html",
- "/assembly_instructions/d_e_axis_assembly.html",
- "/assembly_instructions/gripper_assembly.html",
- "/blockly.html"
+ "/space_shuttle_origins.html",
+ "/space_shuttle_program.html",
+ "/challenger_disaster.html",
+ "/conclusions.html"
],
"page_to_title": {
- "/index.html": "Home",
- "/assembly_instructions/parts_list.html": "Parts List",
- "/assembly_instructions/overview.html": "Overview",
- "/assembly_instructions/tapping_threads.html": "Tapping Threads",
- "/assembly_instructions/components_list.html": "Components List",
- "/assembly_instructions/base_assembly.html": "Base Assembly",
- "/assembly_instructions/a_axis_assembly.html": "A-Axis Assembly",
- "/assembly_instructions/b_axis_assembly.html": "B-Axis Assembly",
- "/assembly_instructions/c_axis_assembly.html": "C-Axis Assembly",
- "/assembly_instructions/d_e_axis_assembly.html": "D & E-Axis Assembly",
- "/assembly_instructions/gripper_assembly.html": "Gripper Assembly",
- "/blockly.html": "Blockly"
+ "/index.html": "Introduction",
+ "/space_shuttle_origins.html": "Space Shuttle Origins",
+ "/space_shuttle_program.html": "Space Shuttle Program",
+ "/challenger_disaster.html": "Challenger Disaster",
+ "/conclusions.html": "Conclusions"
},
"page_to_breadcrumbs": {
- "/assembly_instructions/parts_list.html": "Assembly Instructions > Parts List",
- "/assembly_instructions/overview.html": "Assembly Instructions > Overview",
- "/assembly_instructions/tapping_threads.html": "Assembly Instructions > Tapping Threads",
- "/assembly_instructions/components_list.html": "Assembly Instructions > Components List",
- "/assembly_instructions/base_assembly.html": "Assembly Instructions > Base Assembly",
- "/assembly_instructions/a_axis_assembly.html": "Assembly Instructions > A-Axis Assembly",
- "/assembly_instructions/b_axis_assembly.html": "Assembly Instructions > B-Axis Assembly",
- "/assembly_instructions/c_axis_assembly.html": "Assembly Instructions > C-Axis Assembly",
- "/assembly_instructions/d_e_axis_assembly.html": "Assembly Instructions > d & E-Axis Assembly",
- "/assembly_instructions/gripper_assembly.html": "Assembly Instructions > Gripper Assembly"
}
}
+++ /dev/null
-return async env => {
- let navbar = await _require('navbar.jst')
-
- await navbar(
- env,
- // head
- async _out => {
- // Blockly stuff
- script(src="js/blockly_compressed.js") {}
- script(src="js/javascript_compressed.js") {}
- script(src="js/blocks_compressed.js") {}
- script(src="js/msg/js/en.js") {}
- xml#toolbox(style="display: none") {
- block(type="move_to") {
- value(name="A") {
- shadow(type="math_number") {
- field#toolboxA(name="NUM") {
- '0'
- }
- }
- }
- value(name="B") {
- shadow(type="math_number") {
- field#toolboxB(name="NUM") {
- '0'
- }
- }
- }
- value(name="C") {
- shadow(type="math_number") {
- field#toolboxC(name="NUM") {
- '0'
- }
- }
- }
- value(name="D") {
- shadow(type="math_number") {
- field#toolboxD(name="NUM") {
- '0'
- }
- }
- }
- value(name="E") {
- shadow(type="math_number") {
- field#toolboxE(name="NUM") {
- '0'
- }
- }
- }
- }
- block(type="gripper") {
- value(name="F") {
- shadow(type="math_number") {
- field#toolboxF(name="NUM") {
- '0'
- }
- }
- }
- }
- block(type="delay") {
- value(name="millisecs") {
- shadow(type="math_number") {
- field(name="NUM") {
- '1000'
- }
- }
- }
- }
- block(type="math_arithmetic") {
- value(name="A") {
- shadow(type="math_number") {
- field(name="NUM") {
- '90'
- }
- }
- }
- value(name="B") {
- shadow(type="math_number") {
- field(name="NUM") {
- '10'
- }
- }
- }
- }
- block(type="math_number") {
- field(name="NUM") {
- '10'
- }
- }
- block(type="controls_for") {
- field(name="VAR") {
- 'i'
- }
- value(name="FROM") {
- block(type="math_number") {
- field(name="NUM") {
- '1'
- }
- }
- }
- value(name="TO") {
- block(type="math_number") {
- field(name="NUM") {
- '10'
- }
- }
- }
- value(name="BY") {
- block(type="math_number") {
- field(name="NUM") {
- '1'
- }
- }
- }
- }
- block(type="variables_get") {
- field(name="VAR") {
- 'i'
- }
- }
- block(type="controls_whileUntil") {}
- block(type="logic_boolean") {}
- }
- },
- // body
- async _out => {
- div#blocklyArea(style="height: 720px;") {}
- div#blocklyDiv(style="position: absolute;") {}
- },
- // scripts
- async _out => {
- script {
- Blockly.defineBlocksWithJsonArray([
- {
- "type": "move_to",
- "message0": "move to A %1 B %2 C %3 D %4 E %5",
- "args0": [
- {"type": "input_value", "name": "A", "check": "Number"},
- {"type": "input_value", "name": "B", "check": "Number"},
- {"type": "input_value", "name": "C", "check": "Number"},
- {"type": "input_value", "name": "D", "check": "Number"},
- {"type": "input_value", "name": "E", "check": "Number"}
- ],
- "inputsInline": true,
- "previousStatement": null,
- "nextStatement": null,
- "colour": "%{BKY_LOGIC_HUE}"
- },
- {
- "type": "gripper",
- "message0": "gripper %1",
- "args0": [
- {"type": "input_value", "name": "F", "check": "Number"},
- ],
- "inputsInline": true,
- "previousStatement": null,
- "nextStatement": null,
- "colour": "%{BKY_LOGIC_HUE}"
- },
- {
- "type": "delay",
- "message0": "delay %1",
- "args0": [
- {"type": "input_value", "name": "millisecs", "check": "Number"},
- ],
- "inputsInline": true,
- "previousStatement": null,
- "nextStatement": null,
- "colour": "%{BKY_LOGIC_HUE}"
- }
- ]);
-
- Blockly.JavaScript['move_to'] = block => {
- var a = Blockly.JavaScript.valueToCode(block, 'A',
- Blockly.JavaScript.ORDER_COMMA) || '0';
- var b = Blockly.JavaScript.valueToCode(block, 'B',
- Blockly.JavaScript.ORDER_COMMA) || '0';
- var c = Blockly.JavaScript.valueToCode(block, 'C',
- Blockly.JavaScript.ORDER_COMMA) || '0';
- var d = Blockly.JavaScript.valueToCode(block, 'D',
- Blockly.JavaScript.ORDER_COMMA) || '0';
- var e = Blockly.JavaScript.valueToCode(block, 'E',
- Blockly.JavaScript.ORDER_COMMA) || '0';
- return `if (!await deviceMoveTo(${a}, ${b}, ${c}, ${d}, ${e})) return false;\n`
- };
-
- Blockly.JavaScript['gripper'] = block => {
- var f = Blockly.JavaScript.valueToCode(block, 'F',
- Blockly.JavaScript.ORDER_COMMA) || '0';
- return `if (!await deviceGripper(${f})) return false;\n`
- };
-
- Blockly.JavaScript['delay'] = block => {
- var millisecs = Blockly.JavaScript.valueToCode(block, 'millisecs',
- Blockly.JavaScript.ORDER_COMMA) || '0';
- return `if (!await deviceDelay(${millisecs})) return false;\n`
- };
-
- var blockly_stop = false;
- Blockly.JavaScript.INFINITE_LOOP_TRAP =
- 'if (!await deviceDelay(0)) return false;\n'
-
- var toolbox = document.getElementById('toolbox');
- var blocklyArea = document.getElementById('blocklyArea');
- var blocklyDiv = document.getElementById('blocklyDiv');
- var workspace = Blockly.inject(blocklyDiv, {toolbox: toolbox});
- var onresize = function(e) {
- // Compute the absolute coordinates and dimensions of blocklyArea.
- var element = blocklyArea;
- var x = 0;
- var y = 0;
- do {
- x += element.offsetLeft;
- y += element.offsetTop;
- element = element.offsetParent;
- } while (element);
- // Position blocklyDiv over blocklyArea.
- blocklyDiv.style.left = x + 'px';
- blocklyDiv.style.top = y + 'px';
- blocklyDiv.style.width = blocklyArea.offsetWidth + 'px';
- blocklyDiv.style.height = blocklyArea.offsetHeight + 'px';
- Blockly.svgResize(workspace);
- };
- window.addEventListener('resize', onresize, false);
- onresize();
-
- document.addEventListener(
- 'DOMContentLoaded',
- () => {
- axes[0].toolbox = document.getElementById('toolboxA');
- axes[1].toolbox = document.getElementById('toolboxB');
- axes[2].toolbox = document.getElementById('toolboxC');
- axes[3].toolbox = document.getElementById('toolboxD');
- axes[4].toolbox = document.getElementById('toolboxE');
- axes[5].toolbox = document.getElementById('toolboxF');
-
- // following is a hook defined in mirobot.js:
- var toolboxTimeout = null;
- setToolboxTimeout = () => {
- if (toolboxTimeout !== null)
- clearTimeout(toolboxTimeout);
- toolboxTimeout = setTimeout(
- () => {
- toolboxTimeout = null;
- for (let i = 0; i < 6; ++i)
- axes[i].toolbox.textContent = axes[i].slider.value;
- workspace.updateToolbox(toolbox);
- },
- 100
- );
- };
- }
- );
-
- var deviceMoveTo = async (a, b, c, d, e) => {
- if (blockly_stop) {
- console.log('stop in deviceMoveTo()');
- return false;
- }
- await move_axes([500, 500, 500, 500, 500], [a, b, c, d, e]);
- return true;
- }
-
- var deviceGripper = async f => {
- if (blockly_stop) {
- console.log('stop in deviceGripper()')
- return false;
- }
- await move_axis(5, 500, f);
- return true;
- }
-
- var deviceDelay = async millisecs => {
- if (blockly_stop) {
- console.log('stop in deviceDelay()');
- return false;
- }
- await sleep(millisecs);
- return true;
- }
-
- document.getElementById('reset').addEventListener(
- 'click',
- () => {
- ;(
- async () => {
- if (!device_busy) {
- device_busy = true;
- await move_axes([500, 500, 500, 500, 500, 500], [0, 0, 0, 0, 0, 0]);
- device_busy = false;
- }
- }
- )()
- }
- );
-
- var blockly_active = false;
- document.getElementById('run-stop').addEventListener(
- 'click',
- () => {
- if (blockly_active) {
- console.log('stopping blockly');
- blockly_stop = true;
- }
- else if (!device_busy && device !== undefined) {
- console.log('starting blockly');
- blockly_stop = false;
- blockly_active = true;
- device_busy = true;
- document.getElementById('run-stop').innerHTML = 'Stop'
-
- Blockly.JavaScript.addReservedWords('code');
- var code =
- `(
- async () => {
- if (
- !await (
- async () => {
-${Blockly.JavaScript.workspaceToCode(workspace)} return true;
- }
- )()
- )
- console.log('aborted')
- blockly_active = false;
- device_busy = false;
- document.getElementById('run-stop').innerHTML = 'Run';
- }
-)();
-`
- console.log(code);
- try {
- eval(code);
- } catch (err) {
- console.log(err.message);
- device_busy = false;
- blockly_active = false;
- document.getElementById('run').innerHTML = 'Run';
- }
- }
- }
- );
- }
- }
- )
-}