Skip to content

Commit

Permalink
rollback settings.json
Browse files Browse the repository at this point in the history
  • Loading branch information
Dodoooh committed Dec 15, 2024
1 parent 0d62bd7 commit eaf06c5
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 35 deletions.
46 changes: 19 additions & 27 deletions app.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,20 +32,16 @@
logging.basicConfig(level=logging.DEBUG)

def load_settings():
"""Lädt die Einstellungen aus einer JSON-Datei."""
if os.path.exists(SETTINGS_FILE):
try:
with open(SETTINGS_FILE, "r") as f:
return json.load(f)
except Exception as e:
logging.error(f"Error loading settings: {e}")
with open(SETTINGS_FILE, "r") as f:
return json.load(f)
return DEFAULT_SETTINGS.copy()

def save_settings(settings):
try:
with open(SETTINGS_FILE, "w") as f:
json.dump(settings, f, indent=4)
except Exception as e:
logging.error(f"Error saving settings: {e}")
"""Speichert die Einstellungen in eine JSON-Datei."""
with open(SETTINGS_FILE, "w") as f:
json.dump(settings, f, indent=4)

settings = load_settings()

Expand Down Expand Up @@ -77,23 +73,19 @@ def get_settings():
@app.route("/update_settings", methods=["POST"])
def update_settings():
global settings
for key in DEFAULT_SETTINGS.keys():
if key in request.form:
value = request.form[key]
try:
if isinstance(DEFAULT_SETTINGS[key], bool):
settings[key] = value.lower() == "true"
elif isinstance(DEFAULT_SETTINGS[key], int):
settings[key] = int(value)
elif isinstance(DEFAULT_SETTINGS[key], float):
settings[key] = float(value)
else:
settings[key] = value
except ValueError as e:
logging.warning(f"Invalid value for {key}: {value}. Using default.")
settings[key] = DEFAULT_SETTINGS[key]
settings["printer_uri"] = request.form.get("printer_uri", settings["printer_uri"])
settings["printer_model"] = request.form.get("printer_model", settings["printer_model"])
settings["label_size"] = request.form.get("label_size", settings["label_size"])
settings["font_size"] = int(request.form.get("font_size", settings["font_size"]))
settings["alignment"] = request.form.get("alignment", settings["alignment"])
settings["rotate"] = request.form.get("rotate", settings["rotate"])
settings["threshold"] = float(request.form.get("threshold", settings["threshold"]))
settings["dither"] = request.form.get("dither", str(settings["dither"])).lower() == "true"
settings["compress"] = request.form.get("compress", str(settings["compress"])).lower() == "true"
settings["red"] = request.form.get("red", str(settings["red"])).lower() == "true"

save_settings(settings)
return redirect(url_for("index"))
return jsonify({"success": True, "message": "Einstellungen gespeichert."})

@app.route("/api/text/", methods=["POST"])
def api_text():
Expand Down Expand Up @@ -238,4 +230,4 @@ def send_to_printer(image_path, local_settings):
raise

if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000)
app.run(host="0.0.0.0", port=5000)
33 changes: 25 additions & 8 deletions static/scripts.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,18 +25,21 @@ document.addEventListener("DOMContentLoaded", async () => {
nl: { name: "Nederlands", emoji: "🇳🇱" }
};

// Lade Übersetzungen aus einer JSON-Datei
async function loadLocale(locale) {
try {
const response = await fetch(`/locales/${locale}.json`);
if (!response.ok) throw new Error(`Locale ${locale} not found`);
const data = await response.json();
console.log(`Loaded translations for ${locale}:`, data); // Debugging
return data;
} catch (error) {
console.error("Error loading locale:", error);
return {};
}
}

// Übersetzungen auf die Seite anwenden
function applyTranslations() {
const translatableElements = document.querySelectorAll("[data-translate]");
translatableElements.forEach((element) => {
Expand All @@ -45,7 +48,7 @@ document.addEventListener("DOMContentLoaded", async () => {

if (translation) {
if (element.tagName === "INPUT" || element.tagName === "TEXTAREA") {
element.placeholder = translation;
element.placeholder = translation; // Placeholder für Eingabefelder
} else if (element.tagName === "SELECT") {
const options = element.querySelectorAll("option");
options.forEach((option) => {
Expand All @@ -55,19 +58,24 @@ document.addEventListener("DOMContentLoaded", async () => {
}
});
} else {
element.textContent = translation;
element.textContent = translation; // Standardtexte ersetzen
}
} else {
console.warn(`Missing translation for key: ${key}`); // Debugging
}
});
}

// Sprache wechseln
async function changeLanguage(newLanguage) {
console.log("Switching to language:", newLanguage); // Debugging
currentLanguage = newLanguage;
localStorage.setItem("language", newLanguage);
translations = await loadLocale(newLanguage);
applyTranslations();
}

// Dropdown für Sprachauswahl aktualisieren
function updateLanguageDropdown() {
languageDropdown.innerHTML = "";
Object.entries(availableLanguages).forEach(([key, { name, emoji }]) => {
Expand All @@ -79,6 +87,7 @@ document.addEventListener("DOMContentLoaded", async () => {
});
}

// Dark Mode initialisieren
function setInitialMode() {
const prefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
const savedMode = localStorage.getItem("darkMode");
Expand All @@ -89,19 +98,22 @@ document.addEventListener("DOMContentLoaded", async () => {
}
}

// Dark Mode umschalten
function toggleDarkMode() {
const isDarkMode = document.body.classList.toggle("dark-mode");
localStorage.setItem("darkMode", isDarkMode ? "dark" : "light");
darkModeToggle.textContent = isDarkMode ? "☀️" : "🌙";
}

// Schriftgröße und Textausrichtung dynamisch aktualisieren
function updateTextAppearance() {
const fontSize = document.getElementById("font_size").value;
const alignment = document.getElementById("alignment").value;
textArea.style.fontSize = `${fontSize}px`;
textArea.style.textAlign = alignment;
}

// Einstellungen vom Server laden
async function loadSettings() {
try {
const response = await fetch("/settings");
Expand All @@ -116,10 +128,11 @@ document.addEventListener("DOMContentLoaded", async () => {
document.getElementById("dither").value = settings.dither ? "true" : "false";
document.getElementById("red").value = settings.red ? "true" : "false";
} catch (error) {
alert("Failed to load settings.");
alert(translations.messages?.error_loading_settings || "Failed to load settings.");
}
}

// Einstellungen speichern
async function saveSettings() {
const formData = new FormData();
formData.append("printer_uri", document.getElementById("printer_uri").value);
Expand All @@ -133,20 +146,21 @@ document.addEventListener("DOMContentLoaded", async () => {
try {
const response = await fetch("/update_settings", { method: "POST", body: formData });
if (!response.ok) throw new Error(`Settings save error: ${response.status}`);
alert("Settings saved successfully.");
alert(translations.messages?.settings_saved || "Settings saved successfully.");
} catch (error) {
alert("Failed to save settings.");
alert(translations.messages?.error_saving_settings || "Failed to save settings.");
}
}

// JSON generieren
function generateJson() {
const text = textArea.value.trim();
if (!text) {
alert("Please enter text.");
alert(translations.messages?.error_no_text || "Please enter text.");
return;
}
const jsonData = {
text: text.replace(/\\n/g, "<br>"),
text: text.replace(/\n/g, "<br>"),
settings: {
printer_uri: document.getElementById("printer_uri").value,
printer_model: document.getElementById("printer_model").value,
Expand All @@ -163,13 +177,15 @@ document.addEventListener("DOMContentLoaded", async () => {
resultSection.classList.remove("hidden");
}

// Einstellungen ein-/ausklappen
settingsToggle.addEventListener("click", () => {
settingsContent.classList.toggle("open");
settingsContent.classList.toggle("hidden");
const isOpen = settingsContent.classList.contains("open");
settingsToggle.textContent = isOpen ? "➖" : "➕";
});

// Event-Listener hinzufügen
generateJsonButton.addEventListener("click", generateJson);
darkModeToggle.addEventListener("click", toggleDarkMode);
languageDropdown.addEventListener("change", (e) => changeLanguage(e.target.value));
Expand All @@ -194,11 +210,12 @@ document.addEventListener("DOMContentLoaded", async () => {
}
});

// Initiale Sprache und Einstellungen laden
const browserLanguage = navigator.language.split("-")[0];
currentLanguage = localStorage.getItem("language") || (availableLanguages[browserLanguage] ? browserLanguage : "en");
translations = await loadLocale(currentLanguage);
applyTranslations();
updateLanguageDropdown();
setInitialMode();
loadSettings();
});
});

0 comments on commit eaf06c5

Please # to comment.