diff --git a/octoprint/gcodefiles.py b/octoprint/gcodefiles.py index 87cd26a..cc88bcb 100644 --- a/octoprint/gcodefiles.py +++ b/octoprint/gcodefiles.py @@ -119,7 +119,7 @@ class GcodeManager: if absolutePath is not None: file.save(absolutePath) self._metadataAnalyzer.addFileToQueue(os.path.basename(absolutePath)) - return absolutePath + return self._getBasicFilename(absolutePath) return None def removeFile(self, filename): diff --git a/octoprint/server.py b/octoprint/server.py index fde0a4b..5fde4a9 100644 --- a/octoprint/server.py +++ b/octoprint/server.py @@ -238,10 +238,11 @@ def readGcodeFile(filename): @app.route(BASEURL + "gcodefiles/upload", methods=["POST"]) def uploadGcodeFile(): + filename = None if "gcode_file" in request.files.keys(): file = request.files["gcode_file"] - gcodeManager.addFile(file) - return readGcodeFiles() + filename = gcodeManager.addFile(file) + return jsonify(files=gcodeManager.getAllFileData(), filename=filename) @app.route(BASEURL + "gcodefiles/load", methods=["POST"]) def loadGcodeFile(): diff --git a/octoprint/static/js/ui.js b/octoprint/static/js/ui.js index 36e44cf..2c88413 100644 --- a/octoprint/static/js/ui.js +++ b/octoprint/static/js/ui.js @@ -658,6 +658,11 @@ function GcodeFilesViewModel() { }); self.files(sortedFiles); + + if (response.filename) { + // got a file to scroll to + self.switchToFile(response.filename); + } } self.loadFile = function(filename) { @@ -679,6 +684,22 @@ function GcodeFilesViewModel() { }) } + self.switchToFile = function(filename) { + var pos = -1; + var filelist = self.files(); + for (var i = 0; i < filelist.length; i++) { + if (filelist[i].name == filename) { + pos = i; + break; + } + } + + if (pos > -1) { + var page = Math.floor(pos / self.pageSize()); + self.changePage(page); + } + } + self.changePage = function(newPage) { if (newPage < 0 || newPage > self.lastPage()) return; @@ -1057,6 +1078,7 @@ $(function() { dataType: "json", done: function (e, data) { gcodeFilesViewModel.fromResponse(data.result); + $("#gcode_upload_progress .bar").css("width", "0%"); }, progressall: function (e, data) { var progress = parseInt(data.loaded / data.total * 100, 10);