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;