PDFs in public direct von CPL anfragen und nicht in indexedDB speichern.
IndexedDB wird nicht mehr benötigt, Redux übernimmt die Speicherung der Variablen
This commit is contained in:
@@ -1,10 +1,8 @@
|
||||
"use client"; // app/Footer.jsx
|
||||
"use client"; // Wichtig, um sicherzustellen, dass der Code nur auf dem Client ausgeführt wird
|
||||
import React, { useEffect, useState, useRef } from "react";
|
||||
import { Icon } from "@iconify/react";
|
||||
import { storePDF, getPDF } from "../utils/indexedDB"; // Korrekte Importe für die PDF-Funktionen
|
||||
|
||||
function Footer() {
|
||||
const [pdfName, setPdfName] = useState("");
|
||||
const [showSlider, setShowSlider] = useState(false);
|
||||
const sliderRef = useRef(null);
|
||||
|
||||
@@ -27,41 +25,14 @@ function Footer() {
|
||||
//"XIOPM.PDF",
|
||||
];
|
||||
|
||||
useEffect(() => {
|
||||
async function loadAndStorePDFs() {
|
||||
try {
|
||||
for (const fileName of pdfFiles) {
|
||||
const storedPdf = await getPDF(fileName);
|
||||
if (!storedPdf) {
|
||||
const response = await fetch(`/doku/${fileName}`);
|
||||
const pdfBlob = await response.blob();
|
||||
await storePDF(fileName, pdfBlob);
|
||||
console.log(`${fileName} in IndexedDB gespeichert.`);
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Fehler beim Laden oder Speichern der PDFs:", error);
|
||||
}
|
||||
}
|
||||
|
||||
if (typeof window !== "undefined") {
|
||||
loadAndStorePDFs();
|
||||
}
|
||||
}, []);
|
||||
|
||||
const loadPDF = async (fileName) => {
|
||||
const storedPdf = await getPDF(fileName);
|
||||
if (storedPdf) {
|
||||
const pdfUrl = URL.createObjectURL(storedPdf);
|
||||
// Funktion zum Laden der PDFs direkt aus dem öffentlichen Verzeichnis
|
||||
const loadPDF = (fileName) => {
|
||||
const pdfUrl = `/doku/${fileName}`; // Annahme: Die PDFs liegen im Ordner "public/doku"
|
||||
window.open(pdfUrl, "_blank"); // Öffnet die PDF in einem neuen Tab
|
||||
setPdfName(fileName);
|
||||
setShowSlider(false);
|
||||
} else {
|
||||
console.error("PDF nicht in IndexedDB gefunden");
|
||||
}
|
||||
};
|
||||
|
||||
// Close slider when clicking outside
|
||||
// Schließt den Slider, wenn außerhalb geklickt wird
|
||||
useEffect(() => {
|
||||
function handleClickOutside(event) {
|
||||
if (sliderRef.current && !sliderRef.current.contains(event.target)) {
|
||||
|
||||
@@ -163,7 +163,14 @@ function Dashboard() {
|
||||
<div className="flex flex-row p-2 space-x-2">
|
||||
<Icon icon="bx:code-block" className="text-xl text-blue-400" />
|
||||
<p className="text-sm text-gray-600">
|
||||
Applikationsversion: {appVersion}
|
||||
<span className="font-bold"></span> Applikationsversion:{" "}
|
||||
{appVersion}{" "}
|
||||
</p>
|
||||
</div>
|
||||
<div className="flex flex-row p-2 space-x-2">
|
||||
<Icon icon="mdi:web" className="text-xl text-blue-400" />
|
||||
<p className="text-sm text-gray-600">
|
||||
<span className="font-bold"> </span>Webserverversion: 1.0.0
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -3,29 +3,10 @@ import { useEffect } from "react";
|
||||
import { useRouter } from "next/navigation";
|
||||
import { ClipLoader } from "react-spinners";
|
||||
|
||||
// IndexedDB functions only in the browser
|
||||
let storePage, getPage;
|
||||
if (typeof window !== "undefined") {
|
||||
const indexedDBModule = require("../utils/indexedDB");
|
||||
storePage = indexedDBModule.storePage;
|
||||
getPage = indexedDBModule.getPage;
|
||||
}
|
||||
|
||||
export default function WaitPage() {
|
||||
const router = useRouter();
|
||||
|
||||
useEffect(() => {
|
||||
// Store the page as a Blob in IndexedDB in the background
|
||||
if (typeof window !== "undefined" && storePage) {
|
||||
const pageContent = `
|
||||
<div style="text-align: center; margin-top: 100px;">
|
||||
<h1>Bitte warten...</h1>
|
||||
<div class="spinner"></div>
|
||||
<p>Die Seite wird automatisch neu geladen.</p>
|
||||
</div>`;
|
||||
storePage("waitPage", new Blob([pageContent], { type: "text/html" }));
|
||||
}
|
||||
|
||||
// Timer to redirect after 20 seconds
|
||||
const timer = setTimeout(() => {
|
||||
router.push("/");
|
||||
|
||||
@@ -1,16 +1,11 @@
|
||||
import { openDB, deleteDB } from "idb";
|
||||
//wird nicht mehr benötigt, Redux übernimmt die Speicherung der Variablen
|
||||
//import { openDB, deleteDB } from "idb";
|
||||
|
||||
// Exportiere die Funktion initializeDatabase
|
||||
export async function initializeDatabase() {
|
||||
/* export async function initializeDatabase() {
|
||||
try {
|
||||
const db = await openDB("CPLDatabase", 1, {
|
||||
upgrade(db) {
|
||||
if (!db.objectStoreNames.contains("pdfs")) {
|
||||
db.createObjectStore("pdfs");
|
||||
}
|
||||
if (!db.objectStoreNames.contains("pages")) {
|
||||
db.createObjectStore("pages");
|
||||
}
|
||||
if (!db.objectStoreNames.contains("cplVariables")) {
|
||||
db.createObjectStore("cplVariables");
|
||||
}
|
||||
@@ -36,14 +31,4 @@ export async function getFromIndexedDB(key) {
|
||||
const db = await initializeDatabase();
|
||||
return await db.get("cplVariables", key);
|
||||
}
|
||||
|
||||
// Beispiel weitere Funktion für PDF-Speicherung
|
||||
export async function storePDF(name, file) {
|
||||
const db = await initializeDatabase();
|
||||
await db.put("pdfs", file, name);
|
||||
}
|
||||
// Funktion zum Abrufen von PDF-Dateien aus der IndexedDB
|
||||
export async function getPDF(name) {
|
||||
const db = await initializeDatabase();
|
||||
return await db.get("pdfs", name);
|
||||
}
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user