/* * View model for OctoPrint-BambuPrinter * * Author: jneilliii * License: AGPLv3 */ $(function () { function Bambu_printerViewModel(parameters) { var self = this; self.settingsViewModel = parameters[0]; self.filesViewModel = parameters[1]; self.loginStateViewModel = parameters[2]; self.accessViewModel = parameters[3]; self.timelapseViewModel = parameters[4]; self.getAuthToken = function (data) { self.settingsViewModel.settings.plugins.bambu_printer.auth_token(""); OctoPrint.simpleApiCommand("bambu_printer", "register", { "email": self.settingsViewModel.settings.plugins.bambu_printer.email(), "password": $("#bambu_cloud_password").val(), "region": self.settingsViewModel.settings.plugins.bambu_printer.region(), "auth_token": self.settingsViewModel.settings.plugins.bambu_printer.auth_token() }) .done(function (response) { console.log(response); self.settingsViewModel.settings.plugins.bambu_printer.auth_token(response.auth_token); self.settingsViewModel.settings.plugins.bambu_printer.username(response.username); }); }; // initialize list helper self.listHelper = new ItemListHelper( "timelapseFiles", { name: function (a, b) { // sorts ascending if (a["name"].toLocaleLowerCase() < b["name"].toLocaleLowerCase()) return -1; if (a["name"].toLocaleLowerCase() > b["name"].toLocaleLowerCase()) return 1; return 0; }, date: function (a, b) { // sorts descending if (a["date"] > b["date"]) return -1; if (a["date"] < b["date"]) return 1; return 0; }, size: function (a, b) { // sorts descending if (a["bytes"] > b["bytes"]) return -1; if (a["bytes"] < b["bytes"]) return 1; return 0; } }, {}, "name", [], [], CONFIG_TIMELAPSEFILESPERPAGE ); self.onDataUpdaterPluginMessage = function(plugin, data) { if (plugin != "bambu_printer") { return; } if (data.files !== undefined) { console.log(data.files); self.listHelper.updateItems(data.files); self.listHelper.resetPage(); } }; self.onBeforeBinding = function () { $('#bambu_timelapse').appendTo("#timelapse"); }; self.showTimelapseThumbnail = function(data) { $("#bambu_printer_timelapse_thumbnail").attr("src", data.thumbnail); $("#bambu_printer_timelapse_preview").modal('show'); }; /*$('#files div.upload-buttons > span.fileinput-button:first, #files div.folder-button').remove(); $('#files div.upload-buttons > span.fileinput-button:first').removeClass('span6').addClass('input-block-level'); self.onBeforePrintStart = function(start_print_command) { let confirmation_html = '' + '
\n' + '
\n' + ' \n' + '
\n' + ' \n' + '
\n' + '
\n' + '
'; if(!self.settingsViewModel.settings.plugins.bambu_printer.always_use_default_options()){ confirmation_html += '\n' + '
\n' + '
\n' + ' \n' + ' \n' + ' \n' + '
\n' + '
\n' + ' \n' + ' \n' + ' \n' + '
\n' + '
\n'; } showConfirmationDialog({ title: "Bambu Print Options", html: confirmation_html, cancel: gettext("Cancel"), proceed: [gettext("Print"), gettext("Always")], onproceed: function (idx) { if(idx === 1){ self.settingsViewModel.settings.plugins.bambu_printer.timelapse($('#bambu_printer_timelapse').is(':checked')); self.settingsViewModel.settings.plugins.bambu_printer.bed_leveling($('#bambu_printer_bed_leveling').is(':checked')); self.settingsViewModel.settings.plugins.bambu_printer.flow_cali($('#bambu_printer_flow_cali').is(':checked')); self.settingsViewModel.settings.plugins.bambu_printer.vibration_cali($('#bambu_printer_vibration_cali').is(':checked')); self.settingsViewModel.settings.plugins.bambu_printer.layer_inspect($('#bambu_printer_layer_inspect').is(':checked')); self.settingsViewModel.settings.plugins.bambu_printer.use_ams($('#bambu_printer_use_ams').is(':checked')); self.settingsViewModel.settings.plugins.bambu_printer.always_use_default_options(true); self.settingsViewModel.saveData(); } // replace this with our own print command API call? start_print_command(); }, nofade: true }); return false; };*/ } OCTOPRINT_VIEWMODELS.push({ construct: Bambu_printerViewModel, // ViewModels your plugin depends on, e.g. loginStateViewModel, settingsViewModel, ... dependencies: ["settingsViewModel", "filesViewModel", "loginStateViewModel", "accessViewModel", "timelapseViewModel"], // Elements to bind to, e.g. #settings_plugin_bambu_printer, #tab_plugin_bambu_printer, ... elements: ["#bambu_printer_print_options", "#settings_plugin_bambu_printer", "#bambu_timelapse"] }); });