diff --git a/demos/blockfactory/index.html b/demos/blockfactory/index.html index b76151b74..6dfea2e17 100644 --- a/demos/blockfactory/index.html +++ b/demos/blockfactory/index.html @@ -225,49 +225,42 @@
-
-
-
+
+
+ +
+
+
+
+ +
-
-
-
-
-
-
-
- -
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
- +
+
+
+
diff --git a/demos/blockfactory/workspacefactory/wfactory_controller.js b/demos/blockfactory/workspacefactory/wfactory_controller.js index fe609564d..85b14d11b 100644 --- a/demos/blockfactory/workspacefactory/wfactory_controller.js +++ b/demos/blockfactory/workspacefactory/wfactory_controller.js @@ -1105,33 +1105,42 @@ WorkspaceFactoryController.prototype.readOptions_ = function() { // Add all standard options to the options object. // Use parse int to get numbers from value inputs. - optionsObj['collapse'] = - document.getElementById('option_collapse_checkbox').checked; - optionsObj['comments'] = - document.getElementById('option_comments_checkbox').checked; - optionsObj['css'] = document.getElementById('option_css_checkbox').checked; - optionsObj['disable'] = - document.getElementById('option_disable_checkbox').checked; - if (document.getElementById('option_infiniteBlocks_checkbox').checked) { - optionsObj['maxBlocks'] = Infinity; + var readonly = document.getElementById('option_readOnly_checkbox').checked; + if (readonly) { + optionsObj['readOnly'] = true; } else { - var maxBlocksValue = - document.getElementById('option_maxBlocks_number').value; - optionsObj['maxBlocks'] = typeof maxBlocksValue == 'string' ? - parseInt(maxBlocksValue) : maxBlocksValue; + optionsObj['collapse'] = + document.getElementById('option_collapse_checkbox').checked; + optionsObj['comments'] = + document.getElementById('option_comments_checkbox').checked; + optionsObj['disable'] = + document.getElementById('option_disable_checkbox').checked; + if (document.getElementById('option_infiniteBlocks_checkbox').checked) { + optionsObj['maxBlocks'] = Infinity; + } else { + var maxBlocksValue = + document.getElementById('option_maxBlocks_number').value; + optionsObj['maxBlocks'] = typeof maxBlocksValue == 'string' ? + parseInt(maxBlocksValue) : maxBlocksValue; + } + optionsObj['trashcan'] = + document.getElementById('option_trashcan_checkbox').checked; + optionsObj['horizontalLayout'] = + document.getElementById('option_horizontalLayout_checkbox').checked; + optionsObj['toolboxPosition'] = + document.getElementById('option_toolboxPosition_checkbox').checked ? + 'end' : 'start'; } + + optionsObj['css'] = document.getElementById('option_css_checkbox').checked; optionsObj['media'] = document.getElementById('option_media_text').value; - optionsObj['readOnly'] = - document.getElementById('option_readOnly_checkbox').checked; optionsObj['rtl'] = document.getElementById('option_rtl_checkbox').checked; optionsObj['scrollbars'] = document.getElementById('option_scrollbars_checkbox').checked; optionsObj['sounds'] = document.getElementById('option_sounds_checkbox').checked; - if (!optionsObj['readOnly']) { - optionsObj['trashcan'] = - document.getElementById('option_trashcan_checkbox').checked; - } + optionsObj['oneBasedIndex'] = + document.getElementById('option_oneBasedIndex_checkbox').checked; // If using a grid, add all grid options. if (document.getElementById('option_grid_checkbox').checked) { @@ -1144,7 +1153,10 @@ WorkspaceFactoryController.prototype.readOptions_ = function() { grid['length'] = typeof lengthValue == 'string' ? parseInt(lengthValue) : lengthValue; grid['colour'] = document.getElementById('gridOption_colour_text').value; - grid['snap'] = document.getElementById('gridOption_snap_checkbox').checked; + if (!readonly) { + grid['snap'] = + document.getElementById('gridOption_snap_checkbox').checked; + } optionsObj['grid'] = grid; } diff --git a/demos/blockfactory/workspacefactory/wfactory_init.js b/demos/blockfactory/workspacefactory/wfactory_init.js index 341af46fb..49a78fe94 100644 --- a/demos/blockfactory/workspacefactory/wfactory_init.js +++ b/demos/blockfactory/workspacefactory/wfactory_init.js @@ -513,7 +513,7 @@ WorkspaceFactoryInit.addWorkspaceFactoryOptionsListeners_ = 'block' : 'none'; }); - // Checking the grid checkbox displays zoom options. + // Checking the zoom checkbox displays zoom options. document.getElementById('option_zoom_checkbox').addEventListener('change', function(e) { document.getElementById('zoom_options').style.display = @@ -521,12 +521,12 @@ WorkspaceFactoryInit.addWorkspaceFactoryOptionsListeners_ = 'block' : 'none'; }); + // Checking the readonly checkbox enables/disables other options. document.getElementById('option_readOnly_checkbox').addEventListener('change', function(e) { var checkbox = document.getElementById('option_readOnly_checkbox'); blocklyFactory.ifCheckedEnable(!checkbox.checked, - ['readonly1', 'readonly2', 'readonly3', 'readonly4', 'readonly5', - 'readonly6', 'readonly7']); + ['readonly1', 'readonly2']); }); document.getElementById('option_infiniteBlocks_checkbox').addEventListener('change', @@ -537,9 +537,10 @@ WorkspaceFactoryInit.addWorkspaceFactoryOptionsListeners_ = }); // Generate new options every time an options input is updated. - var optionsElements = document.getElementsByClassName('optionsInput'); - for (var i = 0; i < optionsElements.length; i++) { - optionsElements[i].addEventListener('change', function() { + var div = document.getElementById('workspace_options'); + var options = div.getElementsByTagName('input'); + for (var i = 0, option; option = options[i]; i++) { + option.addEventListener('change', function() { controller.generateNewOptions(); }); } diff --git a/demos/blockfactory/workspacefactory/wfactory_view.js b/demos/blockfactory/workspacefactory/wfactory_view.js index 0aebd2a21..677d2eda6 100644 --- a/demos/blockfactory/workspacefactory/wfactory_view.js +++ b/demos/blockfactory/workspacefactory/wfactory_view.js @@ -382,15 +382,25 @@ WorkspaceFactoryView.prototype.updateHelpText = function(mode) { * or a single flyout of blocks. Updates checkboxes and text fields. */ WorkspaceFactoryView.prototype.setBaseOptions = function() { + // Readonly mode. + document.getElementById('option_readOnly_checkbox').checked = false; + blocklyFactory.ifCheckedEnable(true, ['readonly1', 'readonly2']); + // Set basic options. document.getElementById('option_css_checkbox').checked = true; - document.getElementById('option_infiniteBlocks_checkbox').checked = true; document.getElementById('option_maxBlocks_number').value = 100; document.getElementById('option_media_text').value = 'https://blockly-demo.appspot.com/static/media/'; - document.getElementById('option_readOnly_checkbox').checked = false; document.getElementById('option_rtl_checkbox').checked = false; document.getElementById('option_sounds_checkbox').checked = true; + document.getElementById('option_oneBasedIndex_checkbox').checked = true; + document.getElementById('option_horizontalLayout_checkbox').checked = false; + document.getElementById('option_toolboxPosition_checkbox').checked = false; + + // Check infinite blocks and hide suboption. + document.getElementById('option_infiniteBlocks_checkbox').checked = true; + document.getElementById('maxBlockNumber_option').style.display = + 'none'; // Uncheck grid and zoom options and hide suboptions. document.getElementById('option_grid_checkbox').checked = false; @@ -399,7 +409,7 @@ WorkspaceFactoryView.prototype.setBaseOptions = function() { document.getElementById('zoom_options').style.display = 'none'; // Set grid options. - document.getElementById('gridOption_spacing_number').value = 0; + document.getElementById('gridOption_spacing_number').value = 20; document.getElementById('gridOption_length_number').value = 1; document.getElementById('gridOption_colour_text').value = '#888'; document.getElementById('gridOption_snap_checkbox').checked = false;