fix: Alle Icons in digitalen Ein- und Ausgängen lokal eingebunden

- Icons input, login, output und switch lokal installiert und verwendet
- Keine Internet-Abhängigkeit mehr für Icon-Anzeige
- Projekt ist vollständig offlinefähig
This commit is contained in:
ISA
2025-04-29 13:58:18 +02:00
parent 0e0674b8a5
commit 60634140ca
5 changed files with 35 additions and 9 deletions

View File

@@ -1,9 +1,12 @@
"use client"; "use client";
// /components/main/einausgaenge/DigitalInputs.tsx // /components/main/einausgaenge/DigitalInputs.tsx
import React from "react"; import React from "react";
import { Icon } from "@iconify/react";
import { useSelector } from "react-redux"; import { useSelector } from "react-redux";
import { RootState } from "../../../redux/store"; import { RootState } from "../../../redux/store";
import { Icon } from "@iconify/react";
import settingsIcon from "@iconify/icons-mdi/settings";
import inputIcon from "@iconify/icons-mdi/input";
import loginIcon from "@iconify/icons-mdi/login";
type Props = { type Props = {
openInputModal: (input: any) => void; openInputModal: (input: any) => void;
@@ -21,7 +24,7 @@ export default function DigitalInputs({ openInputModal, inputRange }: Props) {
<div className="bg-white shadow-md border border-gray-200 p-3 rounded-lg w-full"> <div className="bg-white shadow-md border border-gray-200 p-3 rounded-lg w-full">
<h2 className="text-sm font-bold mb-3 flex items-center laptop:text-xs"> <h2 className="text-sm font-bold mb-3 flex items-center laptop:text-xs">
<Icon <Icon
icon="mdi:input" icon={inputIcon}
className="text-littwin-blue mr-2 text-xl laptop:text-lg" className="text-littwin-blue mr-2 text-xl laptop:text-lg"
/> />
Meldungseingänge {inputRange.start + 1} {inputRange.end} Meldungseingänge {inputRange.start + 1} {inputRange.end}
@@ -48,7 +51,7 @@ export default function DigitalInputs({ openInputModal, inputRange }: Props) {
<tr key={input.id} className="border-b"> <tr key={input.id} className="border-b">
<td className="flex items-center px-1 py-1 laptop:px-0.5 laptop:py-0.5"> <td className="flex items-center px-1 py-1 laptop:px-0.5 laptop:py-0.5">
<Icon <Icon
icon="mdi:login" icon={loginIcon}
className="text-gray-600 mr-1 text-base laptop:text-sm" className="text-gray-600 mr-1 text-base laptop:text-sm"
/> />
{input.id} {input.id}
@@ -89,7 +92,7 @@ export default function DigitalInputs({ openInputModal, inputRange }: Props) {
</td> </td>
<td className="px-1 py-1 laptop:px-0.5 laptop:py-0.5"> <td className="px-1 py-1 laptop:px-0.5 laptop:py-0.5">
<Icon <Icon
icon="mdi:settings" icon={settingsIcon}
className="text-gray-400 text-base cursor-pointer" className="text-gray-400 text-base cursor-pointer"
onClick={() => openInputModal(input)} onClick={() => openInputModal(input)}
/> />

View File

@@ -1,8 +1,11 @@
"use client"; // /components/main/einausgaenge/DigitalOutputs.tsx "use client"; // /components/main/einausgaenge/DigitalOutputs.tsx
import React from "react"; import React from "react";
import { Icon } from "@iconify/react";
import { useSelector } from "react-redux"; import { useSelector } from "react-redux";
import { RootState } from "../../../redux/store"; import { RootState } from "../../../redux/store";
import { Icon } from "@iconify/react";
import settingsIcon from "@iconify/icons-mdi/settings";
import outputIcon from "@iconify/icons-mdi/output";
import switchIcon from "@iconify/icons-ion/switch";
export default function DigitalOutputs({ openOutputModal }) { export default function DigitalOutputs({ openOutputModal }) {
const digitalOutputs = useSelector( const digitalOutputs = useSelector(
@@ -12,7 +15,7 @@ export default function DigitalOutputs({ openOutputModal }) {
return ( return (
<div className="bg-white shadow-md border border-gray-200 p-3 rounded-lg w-full h-fit max-h-[400px] overflow-auto"> <div className="bg-white shadow-md border border-gray-200 p-3 rounded-lg w-full h-fit max-h-[400px] overflow-auto">
<h2 className="text-sm font-bold mb-3 flex items-center"> <h2 className="text-sm font-bold mb-3 flex items-center">
<Icon icon="mdi:output" className="text-littwin-blue mr-2 text-xl" /> <Icon icon={outputIcon} className="text-littwin-blue mr-2 text-xl" />
Digitale Ausgänge Digitale Ausgänge
</h2> </h2>
<table className="w-full text-xs border-collapse bg-white rounded-lg"> <table className="w-full text-xs border-collapse bg-white rounded-lg">
@@ -29,7 +32,7 @@ export default function DigitalOutputs({ openOutputModal }) {
<tr key={output.id} className="border-b"> <tr key={output.id} className="border-b">
<td className="flex items-center px-1 py-1"> <td className="flex items-center px-1 py-1">
<Icon <Icon
icon="mdi:output" icon={outputIcon}
className="text-gray-600 mr-1 text-base" className="text-gray-600 mr-1 text-base"
/> />
{output.id} {output.id}
@@ -47,7 +50,7 @@ export default function DigitalOutputs({ openOutputModal }) {
</td> </td>
<td className="px-1 py-1"> <td className="px-1 py-1">
<Icon <Icon
icon="mdi:settings" icon={settingsIcon}
className="text-gray-400 text-base cursor-pointer" className="text-gray-400 text-base cursor-pointer"
onClick={() => openOutputModal(output)} onClick={() => openOutputModal(output)}
/> />

View File

@@ -6,5 +6,5 @@
2: Patch oder Hotfix (Bugfixes oder kleine Änderungen). 2: Patch oder Hotfix (Bugfixes oder kleine Änderungen).
*/ */
const webVersion = "1.6.311"; const webVersion = "1.6.312";
export default webVersion; export default webVersion;

18
package-lock.json generated
View File

@@ -10,6 +10,8 @@
"dependencies": { "dependencies": {
"@fontsource/roboto": "^5.1.0", "@fontsource/roboto": "^5.1.0",
"@iconify-icons/ri": "^1.2.10", "@iconify-icons/ri": "^1.2.10",
"@iconify/icons-ion": "^1.2.10",
"@iconify/icons-mdi": "^1.2.48",
"@iconify/json": "^2.2.253", "@iconify/json": "^2.2.253",
"@iconify/react": "^5.0.2", "@iconify/react": "^5.0.2",
"@reduxjs/toolkit": "^2.3.0", "@reduxjs/toolkit": "^2.3.0",
@@ -745,6 +747,22 @@
"@iconify/types": "*" "@iconify/types": "*"
} }
}, },
"node_modules/@iconify/icons-ion": {
"version": "1.2.10",
"resolved": "https://registry.npmjs.org/@iconify/icons-ion/-/icons-ion-1.2.10.tgz",
"integrity": "sha512-8vd2gihc8fkugNH+bqnNpgAbXJl2AyTiGRgpDG/ELDUyscvUefEE/kW7uz6NnPUYH293vR+tdiruLIgvVsQfNA==",
"dependencies": {
"@iconify/types": "*"
}
},
"node_modules/@iconify/icons-mdi": {
"version": "1.2.48",
"resolved": "https://registry.npmjs.org/@iconify/icons-mdi/-/icons-mdi-1.2.48.tgz",
"integrity": "sha512-1Tiq+iX1d2MzrdDiw45Tc9HuhNgg8H4vvaKNV+kF+jmr/kPG+YyeLMyXUKp4bwv+gheIAgNpZPjuqAPRkmMieA==",
"dependencies": {
"@iconify/types": "*"
}
},
"node_modules/@iconify/json": { "node_modules/@iconify/json": {
"version": "2.2.299", "version": "2.2.299",
"resolved": "https://registry.npmjs.org/@iconify/json/-/json-2.2.299.tgz", "resolved": "https://registry.npmjs.org/@iconify/json/-/json-2.2.299.tgz",

View File

@@ -15,6 +15,8 @@
"dependencies": { "dependencies": {
"@fontsource/roboto": "^5.1.0", "@fontsource/roboto": "^5.1.0",
"@iconify-icons/ri": "^1.2.10", "@iconify-icons/ri": "^1.2.10",
"@iconify/icons-ion": "^1.2.10",
"@iconify/icons-mdi": "^1.2.48",
"@iconify/json": "^2.2.253", "@iconify/json": "^2.2.253",
"@iconify/react": "^5.0.2", "@iconify/react": "^5.0.2",
"@reduxjs/toolkit": "^2.3.0", "@reduxjs/toolkit": "^2.3.0",