70 lines
3.1 KiB
JavaScript
70 lines
3.1 KiB
JavaScript
|
// Where Python code is written
|
|||
|
var codingEditor = null;
|
|||
|
// Where Blockly is converted to Python
|
|||
|
var readOnlyCodingEditor = null;
|
|||
|
|
|||
|
window.addEventListener('load', function() {
|
|||
|
// Load read only ace editor
|
|||
|
readOnlyCodingEditor = ace.edit('readOnlyBlocklyCode');
|
|||
|
// Set the style
|
|||
|
readOnlyCodingEditor.setTheme('ace/theme/textmate');
|
|||
|
readOnlyCodingEditor.session.setMode('ace/mode/python');
|
|||
|
readOnlyCodingEditor.session.setTabSize(2);
|
|||
|
// Make as read only
|
|||
|
readOnlyCodingEditor.setReadOnly(true);
|
|||
|
// Disable scrolling warning
|
|||
|
readOnlyCodingEditor.$blockScrolling = Infinity;
|
|||
|
|
|||
|
// Load ace editor
|
|||
|
codingEditor = ace.edit('blocklyCode');
|
|||
|
// Set the style
|
|||
|
codingEditor.setTheme('ace/theme/textmate');
|
|||
|
codingEditor.session.setMode('ace/mode/python');
|
|||
|
codingEditor.session.setTabSize(2);
|
|||
|
// Disable scrolling warning
|
|||
|
codingEditor.$blockScrolling = Infinity;
|
|||
|
// Enable autocomplete
|
|||
|
ace.require('ace/ext/language_tools');
|
|||
|
codingEditor.setOptions({
|
|||
|
enableSnippets: true,
|
|||
|
enableLiveAutocompletion: true,
|
|||
|
enableBasicAutocompletion: true
|
|||
|
});
|
|||
|
// Add autocomplete keywords
|
|||
|
codingEditor.completers.push({
|
|||
|
getCompletions: function(editor, session, pos, prefix, callback) {
|
|||
|
callback(null, [
|
|||
|
{value: 'STOP', score: 1000, meta: 'sumorobot'},
|
|||
|
{value: 'LEFT', score: 1000, meta: 'sumorobot'},
|
|||
|
{value: 'RIGHT', score: 1000, meta: 'sumorobot'},
|
|||
|
{value: 'SEARCH', score: 1000, meta: 'sumorobot'},
|
|||
|
{value: 'FORWARD', score: 1000, meta: 'sumorobot'},
|
|||
|
{value: 'BACKWARD', score: 1000, meta: 'sumorobot'},
|
|||
|
{value: 'STATUS', score: 1000, meta: 'sumorobot'},
|
|||
|
{value: 'LEFT_LINE', score: 1000, meta: 'sumorobot'},
|
|||
|
{value: 'RIGHT_LINE', score: 1000, meta: 'sumorobot'},
|
|||
|
{value: 'sumorobot', score: 1000, meta: 'sumorobot'},
|
|||
|
{value: 'move', score: 1000, meta: 'sumorobot'},
|
|||
|
{value: 'sleep', score: 1000, meta: 'sumorobot'},
|
|||
|
{value: 'set_led', score: 1000, meta: 'sumorobot'},
|
|||
|
{value: 'is_line', score: 1000, meta: 'sumorobot'},
|
|||
|
{value: 'get_line', score: 1000, meta: 'sumorobot'},
|
|||
|
{value: 'set_servo', score: 1000, meta: 'sumorobot'},
|
|||
|
{value: 'is_opponent', score: 1000, meta: 'sumorobot'},
|
|||
|
{value: 'calibrate_line', score: 1000, meta: 'sumorobot'},
|
|||
|
{value: 'get_battery_voltage', score: 1000, meta: 'sumorobot'},
|
|||
|
{value: 'get_opponent_distance', score: 1000, meta: 'sumorobot'}
|
|||
|
]);
|
|||
|
}
|
|||
|
});
|
|||
|
// Set the code to the saved code from local storage or empty
|
|||
|
codingEditor.setValue(getLocalStorageItem('sumorobot.code') || '');
|
|||
|
// Clear the selection after setting the value
|
|||
|
codingEditor.clearSelection();
|
|||
|
// Add an change listener for the code editor
|
|||
|
codingEditor.on('change', function() {
|
|||
|
// When change occurs, save the new code to the localstorage
|
|||
|
setLocalStorageItem('sumorobot.code', codingEditor.getValue())
|
|||
|
});
|
|||
|
});
|