parent
7d85860195
commit
8dcbb620bb
|
@ -477,6 +477,10 @@ class Printer():
|
||||||
def getCurrentData(self):
|
def getCurrentData(self):
|
||||||
return self._stateMonitor.getCurrentData()
|
return self._stateMonitor.getCurrentData()
|
||||||
|
|
||||||
|
def getCurrentJob(self):
|
||||||
|
currentData = self._stateMonitor.getCurrentData()
|
||||||
|
return currentData["job"]
|
||||||
|
|
||||||
def getCurrentTemperatures(self):
|
def getCurrentTemperatures(self):
|
||||||
return {
|
return {
|
||||||
"extruder": {
|
"extruder": {
|
||||||
|
|
|
@ -345,9 +345,17 @@ def loadGcodeFile():
|
||||||
def deleteGcodeFile():
|
def deleteGcodeFile():
|
||||||
if "filename" in request.values.keys():
|
if "filename" in request.values.keys():
|
||||||
filename = request.values["filename"]
|
filename = request.values["filename"]
|
||||||
if "target" in request.values.keys() and request.values["target"] == "sd":
|
currentJob = printer.getCurrentJob()
|
||||||
|
|
||||||
|
currentFilename = None
|
||||||
|
currentSd = None
|
||||||
|
if currentJob is not None and "filename" in currentJob.keys() and "sd" in currentJob.keys():
|
||||||
|
currentFilename = currentJob["filename"]
|
||||||
|
currentSd = currentJob["sd"]
|
||||||
|
|
||||||
|
if "target" in request.values.keys() and request.values["target"] == "sd" and not (currentFilename == filename and currentSd is True):
|
||||||
printer.deleteSdFile(filename)
|
printer.deleteSdFile(filename)
|
||||||
else:
|
elif not (currentFilename == filename and currentSd is False):
|
||||||
gcodeManager.removeFile(filename)
|
gcodeManager.removeFile(filename)
|
||||||
return readGcodeFiles()
|
return readGcodeFiles()
|
||||||
|
|
||||||
|
|
|
@ -769,9 +769,10 @@ function TerminalViewModel(loginStateViewModel) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function GcodeFilesViewModel(loginStateViewModel) {
|
function GcodeFilesViewModel(printerStateViewModel, loginStateViewModel) {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
|
self.printerState = printerStateViewModel;
|
||||||
self.loginState = loginStateViewModel;
|
self.loginState = loginStateViewModel;
|
||||||
|
|
||||||
self.isErrorOrClosed = ko.observable(undefined);
|
self.isErrorOrClosed = ko.observable(undefined);
|
||||||
|
@ -831,6 +832,20 @@ function GcodeFilesViewModel(loginStateViewModel) {
|
||||||
return self.loginState.isUser() && self.isOperational() && self.isLoadActionPossible();
|
return self.loginState.isUser() && self.isOperational() && self.isLoadActionPossible();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
self.printerState.filename.subscribe(function(newValue) {
|
||||||
|
self.highlightFilename(newValue);
|
||||||
|
});
|
||||||
|
|
||||||
|
self.highlightFilename = function(filename) {
|
||||||
|
if (filename == undefined) {
|
||||||
|
self.listHelper.selectNone();
|
||||||
|
} else {
|
||||||
|
self.listHelper.selectItem(function(item) {
|
||||||
|
return item.name == filename;
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
self.fromCurrentData = function(data) {
|
self.fromCurrentData = function(data) {
|
||||||
self._processStateData(data.state);
|
self._processStateData(data.state);
|
||||||
}
|
}
|
||||||
|
@ -868,6 +883,8 @@ function GcodeFilesViewModel(loginStateViewModel) {
|
||||||
// got a file to scroll to
|
// got a file to scroll to
|
||||||
self.listHelper.switchToItem(function(item) {return item.name == response.filename});
|
self.listHelper.switchToItem(function(item) {return item.name == response.filename});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self.highlightFilename(self.printerState.filename());
|
||||||
}
|
}
|
||||||
|
|
||||||
self.loadFile = function(filename, printAfterLoad) {
|
self.loadFile = function(filename, printAfterLoad) {
|
||||||
|
@ -1626,11 +1643,13 @@ function ItemListHelper(listType, supportedSorting, supportedFilters, defaultSor
|
||||||
self.exclusiveFilters = exclusiveFilters;
|
self.exclusiveFilters = exclusiveFilters;
|
||||||
|
|
||||||
self.allItems = [];
|
self.allItems = [];
|
||||||
|
|
||||||
self.items = ko.observableArray([]);
|
self.items = ko.observableArray([]);
|
||||||
self.pageSize = ko.observable(filesPerPage);
|
self.pageSize = ko.observable(filesPerPage);
|
||||||
self.currentPage = ko.observable(0);
|
self.currentPage = ko.observable(0);
|
||||||
self.currentSorting = ko.observable(self.defaultSorting);
|
self.currentSorting = ko.observable(self.defaultSorting);
|
||||||
self.currentFilters = ko.observableArray(self.defaultFilters);
|
self.currentFilters = ko.observableArray(self.defaultFilters);
|
||||||
|
self.selectedItem = ko.observable(undefined);
|
||||||
|
|
||||||
//~~ item handling
|
//~~ item handling
|
||||||
|
|
||||||
|
@ -1639,6 +1658,28 @@ function ItemListHelper(listType, supportedSorting, supportedFilters, defaultSor
|
||||||
self._updateItems();
|
self._updateItems();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self.selectItem = function(matcher) {
|
||||||
|
var itemList = self.items();
|
||||||
|
for (var i = 0; i < itemList.length; i++) {
|
||||||
|
if (matcher(itemList[i])) {
|
||||||
|
self.selectedItem(itemList[i]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
self.selectNone = function() {
|
||||||
|
self.selectedItem(undefined);
|
||||||
|
}
|
||||||
|
|
||||||
|
self.isSelected = function(data) {
|
||||||
|
return self.selectedItem() == data;
|
||||||
|
}
|
||||||
|
|
||||||
|
self.isSelectedByMatcher = function(matcher) {
|
||||||
|
return matcher(self.selectedItem());
|
||||||
|
}
|
||||||
|
|
||||||
//~~ pagination
|
//~~ pagination
|
||||||
|
|
||||||
self.paginatedItems = ko.dependentObservable(function() {
|
self.paginatedItems = ko.dependentObservable(function() {
|
||||||
|
@ -1852,7 +1893,7 @@ function ItemListHelper(listType, supportedSorting, supportedFilters, defaultSor
|
||||||
|
|
||||||
self._initializeLocalStorage = function() {
|
self._initializeLocalStorage = function() {
|
||||||
if (!Modernizr.localstorage)
|
if (!Modernizr.localstorage)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (localStorage[self.listType + "." + "currentSorting"] !== undefined && localStorage[self.listType + "." + "currentFilters"] !== undefined && JSON.parse(localStorage[self.listType + "." + "currentFilters"]) instanceof Array)
|
if (localStorage[self.listType + "." + "currentSorting"] !== undefined && localStorage[self.listType + "." + "currentFilters"] !== undefined && JSON.parse(localStorage[self.listType + "." + "currentFilters"]) instanceof Array)
|
||||||
return true;
|
return true;
|
||||||
|
@ -1900,7 +1941,7 @@ $(function() {
|
||||||
var temperatureViewModel = new TemperatureViewModel(loginStateViewModel, settingsViewModel);
|
var temperatureViewModel = new TemperatureViewModel(loginStateViewModel, settingsViewModel);
|
||||||
var controlViewModel = new ControlViewModel(loginStateViewModel, settingsViewModel);
|
var controlViewModel = new ControlViewModel(loginStateViewModel, settingsViewModel);
|
||||||
var terminalViewModel = new TerminalViewModel(loginStateViewModel);
|
var terminalViewModel = new TerminalViewModel(loginStateViewModel);
|
||||||
var gcodeFilesViewModel = new GcodeFilesViewModel(loginStateViewModel);
|
var gcodeFilesViewModel = new GcodeFilesViewModel(printerStateViewModel, loginStateViewModel);
|
||||||
var timelapseViewModel = new TimelapseViewModel(loginStateViewModel);
|
var timelapseViewModel = new TimelapseViewModel(loginStateViewModel);
|
||||||
var gcodeViewModel = new GcodeViewModel(loginStateViewModel);
|
var gcodeViewModel = new GcodeViewModel(loginStateViewModel);
|
||||||
var navigationViewModel = new NavigationViewModel(loginStateViewModel, appearanceViewModel, settingsViewModel, usersViewModel);
|
var navigationViewModel = new NavigationViewModel(loginStateViewModel, appearanceViewModel, settingsViewModel, usersViewModel);
|
||||||
|
|
|
@ -177,11 +177,11 @@
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody data-bind="foreach: listHelper.paginatedItems">
|
<tbody data-bind="foreach: listHelper.paginatedItems">
|
||||||
<tr data-bind="css: $root.getSuccessClass($data), popover: { title: name, animation: true, html: true, placement: 'right', trigger: 'hover', delay: 0, content: $root.getPopoverContent($data), html: true }">
|
<tr data-bind="css: $root.getSuccessClass($data), style: { 'font-weight': $root.listHelper.isSelected($data) ? 'bold' : 'normal' }, popover: { title: name, animation: true, html: true, placement: 'right', trigger: 'hover', delay: 0, content: $root.getPopoverContent($data), html: true }">
|
||||||
<td class="gcode_files_name" data-bind="text: name"></td>
|
<td class="gcode_files_name" data-bind="text: name"></td>
|
||||||
<td class="gcode_files_size" data-bind="text: size"></td>
|
<td class="gcode_files_size" data-bind="text: size"></td>
|
||||||
<td class="gcode_files_action">
|
<td class="gcode_files_action">
|
||||||
<a href="#" class="icon-trash" title="Remove" data-bind="click: function() { if ($root.loginState.isUser()) { $root.removeFile($data.name); } else { return; } }, css: {disabled: !$root.loginState.isUser()}"></a> | <a href="#" class="icon-folder-open" title="Load" data-bind="click: function() { if ($root.isLoadActionPossible()) { $root.loadFile($data.name, false); } else { return; } }, css: {disabled: !$root.isLoadActionPossible()}"></a> | <a href="#" class="icon-print" title="Load and Print" data-bind="click: function() { if ($root.isLoadAndPrintActionPossible()) { $root.loadFile($data.name, true); } else { return; } }, css: {disabled: !$root.isLoadAndPrintActionPossible()}"></a>
|
<a href="#" class="icon-trash" title="Remove" data-bind="click: function() { if ($root.loginState.isUser() && !$root.listHelper.isSelected($data)) { $root.removeFile($data.name); } else { return; } }, css: {disabled: !$root.loginState.isUser() || $root.listHelper.isSelected($data)}"></a> | <a href="#" class="icon-folder-open" title="Load" data-bind="click: function() { if ($root.isLoadActionPossible() && !$root.listHelper.isSelected($data)) { $root.loadFile($data.name, false); } else { return; } }, css: {disabled: !$root.isLoadActionPossible() || $root.listHelper.isSelected($data)}"></a> | <a href="#" class="icon-print" title="Load and Print" data-bind="click: function() { if ($root.isLoadAndPrintActionPossible() && !$root.listHelper.isSelected($data)) { $root.loadFile($data.name, true); } else { return; } }, css: {disabled: !$root.isLoadAndPrintActionPossible() || $root.listHelper.isSelected($data)}"></a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
Loading…
Reference in New Issue