From 1d55e2861055a6d1471d92f60fcfe3d1becf51dd Mon Sep 17 00:00:00 2001 From: Rachel Fenichel Date: Thu, 10 Nov 2016 15:11:44 -0800 Subject: [PATCH 1/3] Add colour block to the block factory base block initial state --- demos/blockfactory/factory.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/demos/blockfactory/factory.js b/demos/blockfactory/factory.js index 97f5ff946..e565d566f 100644 --- a/demos/blockfactory/factory.js +++ b/demos/blockfactory/factory.js @@ -65,7 +65,12 @@ BlockFactory.oldDir = null; * unmovable, undeletable factory_base block. */ BlockFactory.STARTER_BLOCK_XML_TEXT = ''; + 'deletable="false" movable="false">' + + '' + + '' + + '' + + '230' + + ''; /** * Change the language code format. From 4871ff9fda480a091019c2d6bc7cf1dcd3ebb1ac Mon Sep 17 00:00:00 2001 From: Rachel Fenichel Date: Fri, 11 Nov 2016 15:50:53 -0800 Subject: [PATCH 2/3] Start getting helpurl and tooltip in --- demos/blockfactory/blocks.js | 6 ++++++ demos/blockfactory/factory.js | 6 ++++++ demos/blockfactory/factory_utils.js | 17 +++++++++++++++-- demos/code/index.html | 2 +- 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/demos/blockfactory/blocks.js b/demos/blockfactory/blocks.js index d4ea11652..6dcd00617 100644 --- a/demos/blockfactory/blocks.js +++ b/demos/blockfactory/blocks.js @@ -52,6 +52,12 @@ Blockly.Blocks['factory_base'] = { }); this.appendDummyInput() .appendField(dropdown, 'CONNECTIONS'); + this.appendValueInput('TOOLTIP') + .setCheck('String') + .appendField('tooltip'); + this.appendValueInput('HELPURL') + .setCheck('String') + .appendField('help url'); this.appendValueInput('COLOUR') .setCheck('Colour') .appendField('colour'); diff --git a/demos/blockfactory/factory.js b/demos/blockfactory/factory.js index e565d566f..974cd8a7e 100644 --- a/demos/blockfactory/factory.js +++ b/demos/blockfactory/factory.js @@ -66,6 +66,12 @@ BlockFactory.oldDir = null; */ BlockFactory.STARTER_BLOCK_XML_TEXT = '' + + '' + + '' + + '' + + '' + + '' + + '' + '' + '' + '' + diff --git a/demos/blockfactory/factory_utils.js b/demos/blockfactory/factory_utils.js index bdfdeee56..5c6f7137e 100644 --- a/demos/blockfactory/factory_utils.js +++ b/demos/blockfactory/factory_utils.js @@ -250,8 +250,20 @@ FactoryUtils.formatJson_ = function(blockType, rootBlock) { var hue = parseInt(colourBlock.getFieldValue('HUE'), 10); JS.colour = hue; } - JS.tooltip = ''; - JS.helpUrl = 'http://www.example.com/'; + // Tooltip. + var tooltipBlock = rootBlock.getInputTargetBlock('TOOLTIP'); + if (tooltipBlock && !tooltipBlock.disabled) { + JS.tooltip = tooltipBlock.getFieldValue('TEXT'); + } else { + JS.tooltip = ''; + } + // Help URL. + var helpUrlBlock = rootBlock.getInputTargetBlock('HELPURL'); + if (helpUrlBlock && !helpUrlBlock.disabled) { + JS.helpUrl = helpUrlBlock.getFieldValue('TEXT'); + } else { + JS.helpUrl = 'http://www.example.com/'; + } return JSON.stringify(JS, null, ' '); }; @@ -334,6 +346,7 @@ FactoryUtils.formatJavaScript_ = function(blockType, rootBlock, workspace) { code.push(' this.setColour(' + hue + ');'); } } + // TODO: Rachel: tooltip and helpurl code.push(" this.setTooltip('');"); code.push(" this.setHelpUrl('http://www.example.com/');"); code.push(' }'); diff --git a/demos/code/index.html b/demos/code/index.html index 3878ec074..7da79ed61 100644 --- a/demos/code/index.html +++ b/demos/code/index.html @@ -6,7 +6,7 @@ Blockly Demo: - + From 99c30007a72f302e8fe8e295a1f9edefd844ad5e Mon Sep 17 00:00:00 2001 From: Rachel Fenichel Date: Thu, 8 Dec 2016 14:41:40 -0800 Subject: [PATCH 3/3] Generate helpURL and tooltip for Javascript block definition --- demos/blockfactory/factory_utils.js | 54 ++++++++++++++++++++--------- demos/code/index.html | 2 +- 2 files changed, 38 insertions(+), 18 deletions(-) diff --git a/demos/blockfactory/factory_utils.js b/demos/blockfactory/factory_utils.js index 5c6f7137e..89495d4ce 100644 --- a/demos/blockfactory/factory_utils.js +++ b/demos/blockfactory/factory_utils.js @@ -250,20 +250,10 @@ FactoryUtils.formatJson_ = function(blockType, rootBlock) { var hue = parseInt(colourBlock.getFieldValue('HUE'), 10); JS.colour = hue; } - // Tooltip. - var tooltipBlock = rootBlock.getInputTargetBlock('TOOLTIP'); - if (tooltipBlock && !tooltipBlock.disabled) { - JS.tooltip = tooltipBlock.getFieldValue('TEXT'); - } else { - JS.tooltip = ''; - } - // Help URL. - var helpUrlBlock = rootBlock.getInputTargetBlock('HELPURL'); - if (helpUrlBlock && !helpUrlBlock.disabled) { - JS.helpUrl = helpUrlBlock.getFieldValue('TEXT'); - } else { - JS.helpUrl = 'http://www.example.com/'; - } + + JS.tooltip = FactoryUtils.getTooltipFromRootBlock_(rootBlock); + JS.helpUrl = FactoryUtils.getHelpUrlFromRootBlock_(rootBlock); + return JSON.stringify(JS, null, ' '); }; @@ -346,9 +336,11 @@ FactoryUtils.formatJavaScript_ = function(blockType, rootBlock, workspace) { code.push(' this.setColour(' + hue + ');'); } } - // TODO: Rachel: tooltip and helpurl - code.push(" this.setTooltip('');"); - code.push(" this.setHelpUrl('http://www.example.com/');"); + + var tooltip = FactoryUtils.getTooltipFromRootBlock_(rootBlock); + var helpUrl = FactoryUtils.getHelpUrlFromRootBlock_(rootBlock); + code.push(" this.setTooltip('" + tooltip + "');"); + code.push(" this.setHelpUrl('" + helpUrl + "');"); code.push(' }'); code.push('};'); return code.join('\n'); @@ -964,3 +956,31 @@ FactoryUtils.savedBlockChanges = function(blockLibraryController) { } return false; }; + +/** + * Given the root block of the factory, return the tooltip specified by the user + * or the empty string if no tooltip is found. + * @param {!Blockly.Block} rootBlock Factory_base block. + * @return {string} The tooltip for the generated block, or the empty string. + */ +FactoryUtils.getTooltipFromRootBlock_ = function(rootBlock) { + var tooltipBlock = rootBlock.getInputTargetBlock('TOOLTIP'); + if (tooltipBlock && !tooltipBlock.disabled) { + return tooltipBlock.getFieldValue('TEXT'); + } + return ''; +}; + +/** + * Given the root block of the factory, return the help url specified by the + * user or the empty string if no tooltip is found. + * @param {!Blockly.Block} rootBlock Factory_base block. + * @return {string} The help url for the generated block, or the empty string. + */ +FactoryUtils.getHelpUrlFromRootBlock_ = function(rootBlock) { + var helpUrlBlock = rootBlock.getInputTargetBlock('HELPURL'); + if (helpUrlBlock && !helpUrlBlock.disabled) { + return helpUrlBlock.getFieldValue('TEXT'); + } + return ''; +}; diff --git a/demos/code/index.html b/demos/code/index.html index 7da79ed61..3878ec074 100644 --- a/demos/code/index.html +++ b/demos/code/index.html @@ -6,7 +6,7 @@ Blockly Demo: - +