diff --git a/octoprint/server.py b/octoprint/server.py index 88b553b..2601e89 100644 --- a/octoprint/server.py +++ b/octoprint/server.py @@ -301,7 +301,7 @@ def readGcodeFiles(): "date": "n/a", "origin": "sd" }) - return jsonify(files=files) + return jsonify(files=files, free=util.getFormattedSize(util.getFreeBytes(settings().getBaseFolder("uploads")))) @app.route(BASEURL + "gcodefiles/", methods=["GET"]) def readGcodeFile(filename): diff --git a/octoprint/static/css/octoprint.less b/octoprint/static/css/octoprint.less index 187a9c6..05ad83e 100644 --- a/octoprint/static/css/octoprint.less +++ b/octoprint/static/css/octoprint.less @@ -385,6 +385,10 @@ ul.dropdown-menu li a { margin-bottom: 0; } } + + table { + margin-bottom: 0; + } } /** Control tab */ diff --git a/octoprint/static/js/ui.js b/octoprint/static/js/ui.js index 4040f32..c11ab6c 100644 --- a/octoprint/static/js/ui.js +++ b/octoprint/static/js/ui.js @@ -784,6 +784,8 @@ function GcodeFilesViewModel(printerStateViewModel, loginStateViewModel) { self.isLoading = ko.observable(undefined); self.isSdReady = ko.observable(undefined); + self.freeSpace = ko.observable(undefined); + // initialize list helper self.listHelper = new ItemListHelper( "gcodeFiles", @@ -884,6 +886,8 @@ function GcodeFilesViewModel(printerStateViewModel, loginStateViewModel) { self.listHelper.switchToItem(function(item) {return item.name == response.filename}); } + self.freeSpace(response.free); + self.highlightFilename(self.printerState.filename()); } diff --git a/octoprint/templates/index.jinja2 b/octoprint/templates/index.jinja2 index 3cfa071..936d836 100644 --- a/octoprint/templates/index.jinja2 +++ b/octoprint/templates/index.jinja2 @@ -186,6 +186,9 @@ +
+ Free: +