trying to get the gcode viewer working

This commit is contained in:
Teja 2015-01-27 11:48:07 +01:00
parent a4a274b78b
commit fa48a1393f
8 changed files with 61 additions and 18 deletions

View file

@ -22,6 +22,7 @@
<ul class="nav nav-pills">
<li class="active"><a href="#workingarea" data-toggle="tab">working area</a></li>
<!--<li><a href="#designlib" data-toggle="tab">design library</a></li>-->
<li><a href="#gcode" data-toggle="tab">gcode</a></li>
<li><a href="#focus" data-toggle="tab">focus</a></li>
<li><a href="#term" data-toggle="tab">terminal</a></li>
<li xstyle="display: none;" xdata-bind="visible: loginState.isAdmin">
@ -390,6 +391,15 @@
</div>
</div>
<div class="tab-pane" id="gcode">
<div class="container-fluid">
<div class="row-fluid">
{% include 'tabs/gcodeviewer.jinja2' %}
</div>
</div>
</div>
<div class="tab-pane" id="settings">
<div class="container-fluid">
<div class="row-fluid">

View file

@ -22,7 +22,7 @@
var layerCnt = 0;
var speeds = {extrude: [], retract: [], move: []};
var speedsByLayer = {extrude: {}, retract: {}, move: {}};
console.error("WORKER");
var sendLayerToParent = function(layerNum, z, progress){
self.postMessage({
"cmd": "returnLayer",
@ -261,6 +261,7 @@
var log = false;
if (/^(?:G0|G1)\s/i.test(line)) {
console.log("Worker.js doParse", line);
var args = line.split(/\s/);
for (var j = 0; j < args.length; j++) {
@ -466,7 +467,7 @@
z_heights[prevZ] = layer;
}
}
console.log("worker.js addToModel", addToModel, line);
if (addToModel) {
if (!model[layer]) model[layer] = [];
model[layer].push({
@ -486,6 +487,7 @@
tool: tool
});
}
if (move) {
if (typeof(x) !== 'undefined') prevX = x;
@ -505,11 +507,13 @@
sendLayerZ = undefined;
}
}
console.log("worker.js model", model);
sendMultiLayerToParent(sendMultiLayer, sendMultiLayerZ, i / gcode.length*100);
};
var parseGCode = function(message){
console.log("Worker.js", "parseGCode", message.options);
gcode = message.gcode;
firstReport = message.options.firstReport;
toolOffsets = message.options.toolOffsets;

View file

@ -39,6 +39,7 @@ GCODE.gCodeReader = (function(){
byteCount += lines[i].length + 1; // line length + \n
tmp = lines[i].indexOf(";");
if(tmp > 1 || tmp === -1) {
//console.log("gCodeReader.js line", lines[i]);
gcode.push({line: lines[i], percentage: byteCount * 100 / totalSize});
}
}
@ -131,6 +132,7 @@ GCODE.gCodeReader = (function(){
lines = reader.target.result.split(/\n/);
reader.target.result = null;
prepareGCode(totalSize);
console.log("gCodeReader loadFile", totalSize);
GCODE.ui.worker.postMessage({
"cmd":"parseGCode",

View file

@ -46,9 +46,11 @@ GCODE.ui = (function(){
};
var processMessage = function(e){
console.log("ui processMessage", e.data.cmd);
var data = e.data;
switch (data.cmd) {
case "returnModel":
console.log("ui processMessage returnModel -> analyzeModel");
GCODE.ui.worker.postMessage({
"cmd":"analyzeModel",
"msg":{}

View file

@ -64,6 +64,7 @@ $(function() {
var printerStateViewModel = new PrinterStateViewModel(loginStateViewModel, timelapseViewModel);
var settingsViewModel = new SettingsViewModel(loginStateViewModel, usersViewModel, printerProfilesViewModel);
var gcodeViewModel = new GcodeViewModel(loginStateViewModel, settingsViewModel);
var connectionViewModel = new ConnectionViewModel(loginStateViewModel, settingsViewModel, printerProfilesViewModel);
var appearanceViewModel = new AppearanceViewModel(settingsViewModel, printerStateViewModel);
var temperatureViewModel = new TemperatureViewModel(loginStateViewModel, settingsViewModel);
@ -75,7 +76,6 @@ $(function() {
//var gcodeFilesViewModel = new GcodeFilesViewModel(printerStateViewModel, loginStateViewModel, slicingViewModel, vectorConversionViewModel, workingAreaViewModel);
var gcodeFilesViewModel = new GcodeFilesViewModel(printerStateViewModel, loginStateViewModel, slicingViewModel, null, null);
var controlViewModel = new ControlViewModel(loginStateViewModel, settingsViewModel, printerStateViewModel);
var gcodeViewModel = new GcodeViewModel(loginStateViewModel, settingsViewModel);
var navigationViewModel = new NavigationViewModel(loginStateViewModel, appearanceViewModel, settingsViewModel, usersViewModel);
var logViewModel = new LogViewModel(loginStateViewModel);
@ -283,12 +283,6 @@ $(function() {
}
}
// change working area when window size is changed
// $(window).resize(function(){
// workingAreaViewModel.trigger_resize();
// });
// workingAreaViewModel.trigger_resize(); // initialize
// workingAreaViewModel.init();
$(document).bind("dragover", function (e) {
var dropOverlay = $("#drop_overlay");
@ -451,16 +445,14 @@ $(function() {
ko.applyBindings(connectionViewModel, document.getElementById("connection"));
ko.applyBindings(printerStateViewModel, document.getElementById("state"));
ko.applyBindings(gcodeFilesViewModel, document.getElementById("files_accordion"));
//ko.applyBindings(temperatureViewModel, document.getElementById("temp"));
ko.applyBindings(controlViewModel, document.getElementById("control"));
ko.applyBindings(controlViewModel, document.getElementById("focus"));
ko.applyBindings(terminalViewModel, document.getElementById("term"));
// var gcode = document.getElementById("gcode");
// if (gcode) {
// gcodeViewModel.initialize();
// ko.applyBindings(gcodeViewModel, gcode);
// }
// ko.applyBindings(settingsViewModel, document.getElementById("settings_dialog"));
var gcode = document.getElementById("gcode");
if (gcode) {
gcodeViewModel.initialize();
ko.applyBindings(gcodeViewModel, gcode);
}
// ko.applyBindings(navigationViewModel, document.getElementById("navbar"));
// ko.applyBindings(appearanceViewModel, document.getElementsByTagName("head")[0]);
// ko.applyBindings(printerStateViewModel, document.getElementById("drop_overlay"));

View file

@ -174,6 +174,30 @@ function GcodeFilesViewModel(printerStateViewModel, loginStateViewModel, slicing
};
self.startGcodeWithSafetyWarning = function(gcodeFile){
console.log("files.js startGcodeWithSafetyWarning", gcodeFile);
var date = Date.now();
if(GCODE){
url: BASEURL + "downloads/files/local/" + gcodeFile,
$.ajax({
data: { "ctime": date },
type: "GET",
success: function(response, rstatus) {
if(rstatus === 'success'){
var par = {
target: {
result: response
}
};
console.log("files.js loaded gcode");
GCODE.gCodeReader.loadFile(par);
}
},
error: function() {
self.status = "idle";
self.errorCount++;
}
});
}
self.printerState.show_safety_glasses_warning(function(){
self.loadFile(gcodeFile, true);
});

View file

@ -470,5 +470,16 @@ function GcodeViewModel(loginStateViewModel, settingsViewModel) {
self.onDataUpdaterReconnect = function() {
self.reset();
}
self.onSlicingDone = function(payload){
console.log("gcode.js onSlicingDone", payload);
var file = payload.gcode;
var loc = payload.gcode_location;
self.loadFile(file, Date.now());
};
self.onUpdatedFiles = function(payload){
// console.log("gcode.js onUpdatedFiles", payload);
};
}

View file

@ -453,7 +453,6 @@ class MachineCom(object):
"file": self._currentFile.getFilename(),
"origin": self._currentFile.getFileLocation()
})
print("comm.py selectFile", filename, self._currentFile)
self._callback.mcFileSelected(filename, self._currentFile.getFilesize(), False)
def unselectFile(self):
@ -779,7 +778,6 @@ class MachineCom(object):
if("Alarm" in line):
self._changeState(self.STATE_LOCKED)
if("Idle" in line and self._state == self.STATE_LOCKED):
print("### comm.py GRBL pos update", line)
self._changeState(self.STATE_OPERATIONAL)