2018-06-21 21:04:41 +00:00
var gcode ;
2018-06-22 19:49:51 +00:00
var editor = ace . edit ( "editor" ) ;
2018-06-21 21:04:41 +00:00
2018-06-21 20:02:40 +00:00
$ ( document ) . ready ( function ( ) {
2018-06-22 19:49:51 +00:00
editor . $blockScrolling = Infinity ;
editor . session . setMode ( "ace/mode/cncpro" ) ;
editor . setTheme ( 'ace/theme/sqlserver' )
// editor.setOption('printMarginColumn', 0)
editor . setAutoScrollEditorIntoView ( true ) ;
2018-06-29 13:01:16 +00:00
editor . session . setValue ( '; No GCODE yet - please Load a GCODE file from the Open GCODE button' ) ; // from samplefile.js
2018-06-25 17:25:19 +00:00
editor . setShowPrintMargin ( false ) ;
2018-06-22 19:49:51 +00:00
// editor.container.addEventListener("contextmenu", function(e) {
// console.log("context")
// var template = `<h6 class="dropdown-header"><div class="float-left">Line <span id="linenumber"></span>: Options</div><div class="float-right"><button type="button" class="close" aria-label="Close" onclick="$('#editorContextMenu').hide()"><span aria-hidden="true">×</span></button></div></h6><a class="dropdown-item" href="#"><i class="fa fa-fw fa-list-ol" aria-hidden="true"></i> Run queue from here</a>
// <a class="dropdown-item" href="#" onclick="ContextLineRun();"><i class="fa fa-fw fa-play" aria-hidden="true"></i> Execute line: <code>` + editor.session.getLine(editor.getSelectionRange().start.row) + `</code></a>
// <a class="dropdown-item" href="#" onclick="sim(` + (editor.getSelectionRange().start.row + 1) + `)"><i class="fa fa-fw fa-fighter-jet" aria-hidden="true"></i> Simulate from here</a>`
// $("#dropdowncontent").html(template)
// // console.log(e);
// setposition(e);
// e.preventDefault();
// $('#linenumber').html((editor.getSelectionRange().start.row + 1));
// // alert('success! - rightclicked line ' + (editor.getSelectionRange().start.row + 1));
// }, false);
2018-06-21 20:02:40 +00:00
document . addEventListener ( 'keydown' , function ( evt ) {
if ( evt . which === 123 ) {
try {
var focusedWindow = require ( 'electron' ) . remote . getCurrentWindow ( ) ;
if ( focusedWindow . isDevToolsOpened ( ) ) {
focusedWindow . closeDevTools ( ) ;
} else {
focusedWindow . openDevTools ( ) ;
}
} catch ( error ) {
console . warn ( error ) ;
}
} else if ( evt . which === 116 ) {
location . reload ( ) ;
}
} ) ;
2018-06-21 21:04:41 +00:00
var fileOpen = document . getElementById ( 'file' ) ;
fileOpen . addEventListener ( 'change' , readFile , false ) ;
2018-08-08 20:46:11 +00:00
setTimeout ( function ( ) {
console . log ( 'checking for update' )
printLog ( "<span class='fg-green'>Checking for Updates</span>" )
$ . getJSON ( "https://api.github.com/repos/OpenBuilds/SW-Machine-Drivers/releases/latest?client_id=fbbb80debc1197222169&client_secret=7dc6e463422e933448f9a3a4150c8d2bbdd0f87c" ) . done ( function ( release ) {
var availVersion = release . name . substr ( 1 )
var currentVersion = laststatus . driver . version
console . log ( versionCompare ( availVersion , currentVersion ) , availVersion , currentVersion ) ;
if ( versionCompare ( availVersion , currentVersion ) == 1 ) {
console . log ( 'outdated' )
printLog ( "<span class='fg-green'>Update Available! You are running OpenBuilds Machine Driver " + currentVersion + ", and can now update to OpenBuilds Machine Driver " + availVersion + ". Click <kbd>Update</kbd> -> <kbd>Download Updates</kbd> to start the Download</span>" )
printUpdateLog ( "<span class='fg-green'>Update Available! You are running OpenBuilds Machine Driver " + currentVersion + ", and can now update to OpenBuilds Machine Driver " + availVersion + ". Click <kbd>Download Updates</kbd> to start the Download</span>" )
$ ( '#updateAvailable' ) . show ( )
$ ( '#updateAvailable' ) . html ( 'to v' + availVersion )
$ ( '#updateIcon' ) . addClass ( 'ani-shake' )
} else {
2018-08-09 16:34:51 +00:00
printLog ( "<span class='fg-green'>You are already running OpenBuilds Machine Driver " + currentVersion + "</span>" )
2018-08-08 20:46:11 +00:00
printUpdateLog ( "<span class='fg-green'>Update Available! You are already running OpenBuilds Machine Driver " + availVersion + "</span>" )
$ ( '#updateAvailable' ) . show ( )
$ ( '#updateAvailable' ) . html ( '' )
$ ( '#updateIcon' ) . removeClass ( 'ani-shake' )
}
} ) ;
} , 5000 )
2018-06-21 21:04:41 +00:00
} ) ;
function readFile ( evt ) {
console . group ( "New FileOpen Event:" ) ;
console . log ( evt ) ;
console . groupEnd ( ) ;
// Close the menu
$ ( "#drop1" ) . dropdown ( "toggle" ) ;
// Files
var files = evt . target . files || evt . dataTransfer . files ;
for ( var i = 0 ; i < files . length ; i ++ ) {
loadFile ( files [ i ] ) ;
}
}
// load file
function loadFile ( f ) {
// Filereader
if ( f ) {
var r = new FileReader ( ) ;
// if (f.name.match(/.gcode$/i)) {
r . readAsText ( f ) ;
r . onload = function ( event ) {
// cleanupThree();
2018-06-22 19:49:51 +00:00
// gcode = this.result;
editor . session . setValue ( this . result ) ;
2018-07-24 12:58:26 +00:00
printLog ( 'GCODE Opened: ' ) ;
2018-06-21 21:04:41 +00:00
} ;
// }
}
2018-08-08 20:46:11 +00:00
}
function versionCompare ( v1 , v2 , options ) {
var lexicographical = options && options . lexicographical ,
zeroExtend = options && options . zeroExtend ,
v1parts = v1 . split ( '.' ) ,
v2parts = v2 . split ( '.' ) ;
function isValidPart ( x ) {
return ( lexicographical ? /^\d+[A-Za-z]*$/ : /^\d+$/ ) . test ( x ) ;
}
if ( ! v1parts . every ( isValidPart ) || ! v2parts . every ( isValidPart ) ) {
return NaN ;
}
if ( zeroExtend ) {
while ( v1parts . length < v2parts . length ) v1parts . push ( "0" ) ;
while ( v2parts . length < v1parts . length ) v2parts . push ( "0" ) ;
}
if ( ! lexicographical ) {
v1parts = v1parts . map ( Number ) ;
v2parts = v2parts . map ( Number ) ;
}
for ( var i = 0 ; i < v1parts . length ; ++ i ) {
if ( v2parts . length == i ) {
return 1 ;
}
if ( v1parts [ i ] == v2parts [ i ] ) {
continue ;
} else if ( v1parts [ i ] > v2parts [ i ] ) {
return 1 ;
} else {
return - 1 ;
}
}
if ( v1parts . length != v2parts . length ) {
return - 1 ;
}
return 0 ;
2018-06-21 21:04:41 +00:00
}