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 React, { useEffect, useState, useRef } from "react";
|
||||||
import { Icon } from "@iconify/react";
|
import { Icon } from "@iconify/react";
|
||||||
import { storePDF, getPDF } from "../utils/indexedDB"; // Korrekte Importe für die PDF-Funktionen
|
|
||||||
|
|
||||||
function Footer() {
|
function Footer() {
|
||||||
const [pdfName, setPdfName] = useState("");
|
|
||||||
const [showSlider, setShowSlider] = useState(false);
|
const [showSlider, setShowSlider] = useState(false);
|
||||||
const sliderRef = useRef(null);
|
const sliderRef = useRef(null);
|
||||||
|
|
||||||
@@ -27,41 +25,14 @@ function Footer() {
|
|||||||
//"XIOPM.PDF",
|
//"XIOPM.PDF",
|
||||||
];
|
];
|
||||||
|
|
||||||
useEffect(() => {
|
// Funktion zum Laden der PDFs direkt aus dem öffentlichen Verzeichnis
|
||||||
async function loadAndStorePDFs() {
|
const loadPDF = (fileName) => {
|
||||||
try {
|
const pdfUrl = `/doku/${fileName}`; // Annahme: Die PDFs liegen im Ordner "public/doku"
|
||||||
for (const fileName of pdfFiles) {
|
window.open(pdfUrl, "_blank"); // Öffnet die PDF in einem neuen Tab
|
||||||
const storedPdf = await getPDF(fileName);
|
setShowSlider(false);
|
||||||
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);
|
|
||||||
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(() => {
|
useEffect(() => {
|
||||||
function handleClickOutside(event) {
|
function handleClickOutside(event) {
|
||||||
if (sliderRef.current && !sliderRef.current.contains(event.target)) {
|
if (sliderRef.current && !sliderRef.current.contains(event.target)) {
|
||||||
|
|||||||
@@ -163,7 +163,14 @@ function Dashboard() {
|
|||||||
<div className="flex flex-row p-2 space-x-2">
|
<div className="flex flex-row p-2 space-x-2">
|
||||||
<Icon icon="bx:code-block" className="text-xl text-blue-400" />
|
<Icon icon="bx:code-block" className="text-xl text-blue-400" />
|
||||||
<p className="text-sm text-gray-600">
|
<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>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,29 +3,10 @@ import { useEffect } from "react";
|
|||||||
import { useRouter } from "next/navigation";
|
import { useRouter } from "next/navigation";
|
||||||
import { ClipLoader } from "react-spinners";
|
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() {
|
export default function WaitPage() {
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
||||||
useEffect(() => {
|
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
|
// Timer to redirect after 20 seconds
|
||||||
const timer = setTimeout(() => {
|
const timer = setTimeout(() => {
|
||||||
router.push("/");
|
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
|
// Exportiere die Funktion initializeDatabase
|
||||||
export async function initializeDatabase() {
|
/* export async function initializeDatabase() {
|
||||||
try {
|
try {
|
||||||
const db = await openDB("CPLDatabase", 1, {
|
const db = await openDB("CPLDatabase", 1, {
|
||||||
upgrade(db) {
|
upgrade(db) {
|
||||||
if (!db.objectStoreNames.contains("pdfs")) {
|
|
||||||
db.createObjectStore("pdfs");
|
|
||||||
}
|
|
||||||
if (!db.objectStoreNames.contains("pages")) {
|
|
||||||
db.createObjectStore("pages");
|
|
||||||
}
|
|
||||||
if (!db.objectStoreNames.contains("cplVariables")) {
|
if (!db.objectStoreNames.contains("cplVariables")) {
|
||||||
db.createObjectStore("cplVariables");
|
db.createObjectStore("cplVariables");
|
||||||
}
|
}
|
||||||
@@ -36,14 +31,4 @@ export async function getFromIndexedDB(key) {
|
|||||||
const db = await initializeDatabase();
|
const db = await initializeDatabase();
|
||||||
return await db.get("cplVariables", key);
|
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