|
107 | 107 | function logger(e) {
|
108 | 108 | console.log(e);
|
109 | 109 | }
|
| 110 | + |
| 111 | +function sprinkles(n) { |
| 112 | + var prototypes = []; |
| 113 | + var toolbox = document.getElementById('toolbox'); |
| 114 | + var blocks = toolbox.getElementsByTagName('block'); |
| 115 | + for (var i = 0, block; block = blocks[i]; i++) { |
| 116 | + prototypes.push(block.getAttribute('type')); |
| 117 | + } |
| 118 | + for (var i = 0; i < n; i++) { |
| 119 | + var prototype = prototypes[Math.floor(Math.random() * prototypes.length)]; |
| 120 | + var block = workspace.newBlock(prototype); |
| 121 | + block.initSvg(); |
| 122 | + block.getSvgRoot().setAttribute('transform', 'translate(' + |
| 123 | + Math.round(Math.random() * 450 + 40) + ', ' + |
| 124 | + Math.round(Math.random() * 600 + 40) + ')'); |
| 125 | + block.render(); |
| 126 | + } |
| 127 | +} |
| 128 | +function spaghetti(n) { |
| 129 | + var xml = spaghettiXml; |
| 130 | + for(var i = 0; i < n; i++) { |
| 131 | + xml = xml.replace(/(<(statement|next)( name="SUBSTACK")?>)<\//g, |
| 132 | + '$1' + spaghettiXml + '</'); |
| 133 | + } |
| 134 | + xml = '<xml xmlns="http://www.w3.org/1999/xhtml">' + xml + '</xml>'; |
| 135 | + debugger; |
| 136 | + var dom = Blockly.Xml.textToDom(xml); |
| 137 | + console.time('Spaghetti domToWorkspace'); |
| 138 | + Blockly.Xml.domToWorkspace(workspace, dom); |
| 139 | + console.timeEnd('Spaghetti domToWorkspace'); |
| 140 | + // document.getElementById('importExport').value = xml; |
| 141 | +} |
| 142 | +var spaghettiXml = [ |
| 143 | + ' <block type="control_repeat">', |
| 144 | + ' <value name="TIMES">', |
| 145 | + ' <shadow type="math_number">', |
| 146 | + ' <field name="NUM">10</field>', |
| 147 | + ' </shadow>', |
| 148 | + ' </value>', |
| 149 | + ' <statement name="SUBSTACK"></statement>', |
| 150 | + ' <next></next>', |
| 151 | + ' </block>'].join('\n'); |
110 | 152 | </script>
|
111 | 153 |
|
112 | 154 | <style>
|
@@ -231,5 +273,10 @@ <h1>Horizontal block rendering!</h1>
|
231 | 273 | Log events:
|
232 | 274 | <input type="checkbox" onclick="logEvents(this.checked)" id="logCheck">
|
233 | 275 | </p>
|
| 276 | + <p> |
| 277 | + Stress test: |
| 278 | + <input type="button" value="Sprinkles!" onclick="sprinkles(100)"> |
| 279 | + <input type="button" value="Spaghetti!" onclick="spaghetti(10)"> |
| 280 | + </p> |
234 | 281 | </body>
|
235 | 282 | </html>
|
0 commit comments