Files
onefinity-firmware/src/js/admin-general-view.js
2024-04-08 15:16:09 +05:30

158 lines
4.8 KiB
JavaScript

"use strict";
const api = require("./api");
const utils = require("./utils");
const merge = require("lodash.merge");
const config_defaults = require("../resources/onefinity_defaults.json");
const variant_defaults = {
machinist_x35: require("../resources/onefinity_machinist_x35_defaults.json"),
woodworker_x35: require("../resources/onefinity_woodworker_x35_defaults.json"),
woodworker_x50: require("../resources/onefinity_woodworker_x50_defaults.json"),
journeyman_x50: require("../resources/onefinity_journeyman_x50_defaults.json"),
foreman_pro: require('../resources/onefinity_foreman_pro_defaults.json')
};
const z_slider_defaults = {
"Z-16 Original": {
"travel-per-rev": 4,
"min-soft-limit": -133,
"max-velocity": 3,
},
"Z-20 Heavy Duty": {
"travel-per-rev": 10,
"min-soft-limit": -160,
"max-velocity": 7,
},
};
module.exports = {
template: "#admin-general-view-template",
props: [ "config", "state" ],
data: function() {
return {
confirmReset: false,
autoCheckUpgrade: true,
reset_variant: "",
z_slider: false,
z_slider_variant:" ",
config:""
};
},
ready: function() {
this.autoCheckUpgrade = this.config.admin["auto-check-upgrade"];
},
methods: {
backup: function() {
document.getElementById("download-target").src = "/api/config/download";
},
restore_config: function() {
utils.clickFileInput("restore-config");
},
restore: function(e) {
const files = e.target.files || e.dataTransfer.files;
if (!files.length) {
return;
}
const fileReader = new FileReader();
fileReader.onload = async ({ target }) => {
let config;
try {
config = JSON.parse(target.result);
} catch (error) {
console.error("Invalid config file:", error);
alert("Invalid config file");
return;
}
try {
await api.put("config/save", config);
this.$dispatch("update");
SvelteComponents.showDialog("Message", {
title: "Success",
message: "Configuration restored"
});
this.confirmReset= false
} catch (error) {
console.error("Restore failed:", error);
alert("Restore failed");
}
};
fileReader.readAsText(files[0]);
},
next: async function() {
const config = merge(
{},
config_defaults,
variant_defaults[this.reset_variant]
);
try {
await api.put("config/save", config);
this.confirmReset = false;
this.$dispatch("update");
this.config= config
this.z_slider = true;
} catch (error) {
console.error("Restore failed:", error);
alert("Restore failed");
}
},
set_z_slider: async function(){
const z_variant = merge(
{},
this.config.motors[3],
z_slider_defaults[this.z_slider_variant],
);
this.config.motors[3] = z_variant;
try {
await api.put("config/save", this.config);
this.$dispatch("update");
SvelteComponents.showDialog("Message", {
title: "Success",
message: "Configuration restored",
});
this.z_slider = false;
} catch (error) {
console.error("Z slider failed:", error);
alert("failed to set Z slider ");
}
},
check: function() {
this.$dispatch("check");
},
upgrade: function() {
this.$dispatch("upgrade");
},
upload_firmware: function() {
utils.clickFileInput("upload-firmware");
},
upload: function(e) {
const files = e.target.files || e.dataTransfer.files;
if (!files.length) {
return;
}
this.$dispatch("upload", files[0]);
},
change_auto_check_upgrade: function() {
this.config.admin["auto-check-upgrade"] = this.autoCheckUpgrade;
this.$dispatch("config-changed");
}
}
};