Finale-Version
parent
1741131f7b
commit
c0d33f1aa9
Binary file not shown.
|
@ -7,6 +7,7 @@ import jakarta.servlet.http.HttpServletRequest;
|
|||
import jakarta.servlet.http.HttpServletResponse;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.sql.*;
|
||||
|
||||
@WebServlet("/LoginServlet")
|
||||
|
@ -16,7 +17,8 @@ public class LoginServlet extends HttpServlet {
|
|||
private static final String DB_URL = "jdbc:sqlite:C:/Users/asus/personal.db";
|
||||
|
||||
@Override
|
||||
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||||
protected void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
String username = request.getParameter("username");
|
||||
String password = request.getParameter("password");
|
||||
|
||||
|
@ -45,6 +47,12 @@ public class LoginServlet extends HttpServlet {
|
|||
private String authenticateUser(String username, String password) {
|
||||
String role = null;
|
||||
|
||||
try {
|
||||
Class.forName("org.sqlite.JDBC");
|
||||
} catch (ClassNotFoundException ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
|
||||
String mitarbeiterQuery = "SELECT 'Mitarbeiter' as role FROM mitarbeiter WHERE email = ? AND password = ?";
|
||||
String chefQuery = "SELECT 'Chef' as role FROM chef WHERE email = ? AND password = ?";
|
||||
|
||||
|
@ -78,5 +86,6 @@ public class LoginServlet extends HttpServlet {
|
|||
e.printStackTrace();
|
||||
}
|
||||
return role;
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,129 @@
|
|||
package com.cafe.verwaltung;
|
||||
|
||||
import jakarta.servlet.annotation.WebServlet;
|
||||
import jakarta.servlet.http.HttpServlet;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.sql.*;
|
||||
|
||||
@WebServlet("/AktualisiereDatenServlet")
|
||||
public class AktualisiereDatenServlet extends HttpServlet {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
private static final String DB_URL = "jdbc:sqlite:C:/Users/asus/personal.db";
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws IOException {
|
||||
String mitarbeiterNr = request.getParameter("mitarbeiterNr");
|
||||
if (mitarbeiterNr == null || mitarbeiterNr.isEmpty()) {
|
||||
response.sendError(HttpServletResponse.SC_BAD_REQUEST, "MitarbeiterNr fehlt.");
|
||||
return;
|
||||
}
|
||||
|
||||
response.setContentType("text/plain;charset=UTF-8");
|
||||
|
||||
try {
|
||||
Class.forName("org.sqlite.JDBC");
|
||||
} catch (ClassNotFoundException ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
|
||||
try (Connection conn = DriverManager.getConnection(DB_URL)) {
|
||||
String query = "SELECT m.mitarbeiterNr, m.vorname, m.nachname, m.telefonNr, m.email, " +
|
||||
"m.strasse, m.hausnummer, m.ortsNr AS ort, m.password " +
|
||||
"FROM Mitarbeiter m " +
|
||||
"WHERE m.mitarbeiterNr = ?";
|
||||
|
||||
try (PreparedStatement stmt = conn.prepareStatement(query)) {
|
||||
stmt.setInt(1, Integer.parseInt(mitarbeiterNr));
|
||||
try (ResultSet rs = stmt.executeQuery()) {
|
||||
if (rs.next()) {
|
||||
String csvOutput = String.join(",",
|
||||
rs.getString("mitarbeiterNr"),
|
||||
rs.getString("vorname"),
|
||||
rs.getString("nachname"),
|
||||
rs.getString("telefonNr"),
|
||||
rs.getString("email"),
|
||||
rs.getString("strasse"),
|
||||
rs.getString("hausnummer"),
|
||||
rs.getString("ort"),
|
||||
rs.getString("password")
|
||||
);
|
||||
response.getWriter().print(csvOutput);
|
||||
} else {
|
||||
response.sendError(HttpServletResponse.SC_NOT_FOUND, "Mitarbeiter nicht gefunden.");
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Datenbankfehler: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||
throws IOException {
|
||||
// Parameter aus der Anfrage lesen
|
||||
String mitarbeiterNr = request.getParameter("mitarbeiterNr");
|
||||
String vorname = request.getParameter("vorname");
|
||||
String nachname = request.getParameter("nachname");
|
||||
String telefonNr = request.getParameter("telefonNr");
|
||||
String email = request.getParameter("email");
|
||||
String strasse = request.getParameter("strasse");
|
||||
String hausnummer = request.getParameter("hausnummer");
|
||||
String ortsNr = request.getParameter("ort");
|
||||
String password = request.getParameter("password");
|
||||
|
||||
// Überprüfung, ob alle Felder gefüllt sind
|
||||
if (mitarbeiterNr == null || mitarbeiterNr.isEmpty() ||
|
||||
vorname == null || vorname.isEmpty() ||
|
||||
nachname == null || nachname.isEmpty() ||
|
||||
telefonNr == null || telefonNr.isEmpty() ||
|
||||
email == null || email.isEmpty() ||
|
||||
strasse == null || strasse.isEmpty() ||
|
||||
hausnummer == null || hausnummer.isEmpty() ||
|
||||
ortsNr == null || ortsNr.isEmpty() ||
|
||||
password == null || password.isEmpty()) {
|
||||
|
||||
response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Alle Felder müssen ausgefüllt sein.");
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
Class.forName("org.sqlite.JDBC");
|
||||
} catch (ClassNotFoundException ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
|
||||
try (Connection conn = DriverManager.getConnection(DB_URL)) {
|
||||
String query = "UPDATE Mitarbeiter SET vorname = ?, nachname = ?, telefonNr = ?, email = ?, " +
|
||||
"strasse = ?, hausnummer = ?, ortsNr = ?, password = ? WHERE mitarbeiterNr = ?";
|
||||
|
||||
try (PreparedStatement stmt = conn.prepareStatement(query)) {
|
||||
stmt.setString(1, vorname);
|
||||
stmt.setString(2, nachname);
|
||||
stmt.setString(3, telefonNr);
|
||||
stmt.setString(4, email);
|
||||
stmt.setString(5, strasse);
|
||||
stmt.setString(6, hausnummer);
|
||||
stmt.setInt(7, Integer.parseInt(ortsNr));
|
||||
stmt.setString(8, password);
|
||||
stmt.setInt(9, Integer.parseInt(mitarbeiterNr));
|
||||
|
||||
int rowsUpdated = stmt.executeUpdate();
|
||||
if (rowsUpdated > 0) {
|
||||
response.setStatus(HttpServletResponse.SC_OK);
|
||||
response.getWriter().write("Mitarbeiterdaten erfolgreich aktualisiert.");
|
||||
} else {
|
||||
response.sendError(HttpServletResponse.SC_NOT_FOUND, "Mitarbeiter nicht gefunden.");
|
||||
}
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Datenbankfehler: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
package com.cafe.verwaltung;
|
||||
|
||||
import jakarta.servlet.ServletException;
|
||||
import jakarta.servlet.annotation.WebServlet;
|
||||
import jakarta.servlet.http.HttpServlet;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.sql.*;
|
||||
|
||||
|
||||
@WebServlet("/LoeschenMitarbeiterServlet")
|
||||
public class LoeschenMitarbeiterServlet extends HttpServlet {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
private static final String DB_URL = "jdbc:sqlite:C:/Users/asus/personal.db";
|
||||
|
||||
@Override
|
||||
protected void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||
throws IOException {
|
||||
String mitarbeiterNr = request.getParameter("mitarbeiterNr");
|
||||
|
||||
try {
|
||||
Class.forName("org.sqlite.JDBC");
|
||||
} catch (ClassNotFoundException ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
|
||||
if (mitarbeiterNr == null || mitarbeiterNr.isEmpty()) {
|
||||
response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Ungültige Mitarbeiter-Nr.");
|
||||
return;
|
||||
}
|
||||
|
||||
try (Connection conn = DriverManager.getConnection(DB_URL)) {
|
||||
String query = "DELETE FROM Mitarbeiter WHERE mitarbeiterNr = ?";
|
||||
try (PreparedStatement stmt = conn.prepareStatement(query)) {
|
||||
stmt.setInt(1, Integer.parseInt(mitarbeiterNr));
|
||||
stmt.executeUpdate();
|
||||
response.setStatus(HttpServletResponse.SC_OK);
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Datenbankfehler: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,63 @@
|
|||
package com.cafe.verwaltung;
|
||||
|
||||
import jakarta.servlet.annotation.WebServlet;
|
||||
import jakarta.servlet.http.HttpServlet;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.sql.*;
|
||||
|
||||
@WebServlet("/MitarbeiterDatenServlet")
|
||||
public class MitarbeiterDatenServlet extends HttpServlet {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
private static final String DB_URL = "jdbc:sqlite:C:/Users/asus/personal.db";
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws IOException {
|
||||
response.setContentType("text/plain;charset=UTF-8");
|
||||
|
||||
try {
|
||||
Class.forName("org.sqlite.JDBC");
|
||||
} catch (ClassNotFoundException ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
|
||||
try (PrintWriter out = response.getWriter()) {
|
||||
try (Connection conn = DriverManager.getConnection(DB_URL)) {
|
||||
String query = "SELECT m.mitarbeiterNr, m.vorname, m.nachname, m.telefonNr, m.email, " +
|
||||
"m.strasse, m.hausnummer, o.name AS ort, o.plz, m.password " +
|
||||
"FROM Mitarbeiter m " +
|
||||
"JOIN Orte o ON m.ortsNr = o.ortsNr " +
|
||||
"ORDER BY m.mitarbeiterNr";
|
||||
|
||||
try (PreparedStatement stmt = conn.prepareStatement(query);
|
||||
ResultSet rs = stmt.executeQuery()) {
|
||||
|
||||
StringBuilder csvOutput = new StringBuilder();
|
||||
csvOutput.append("mitarbeiterNr,vorname,nachname,telefonNr,email,strasse,hausNr,ort,plz,password\n");
|
||||
|
||||
while (rs.next()) {
|
||||
csvOutput.append(rs.getInt("mitarbeiterNr")).append(",")
|
||||
.append(rs.getString("vorname")).append(",")
|
||||
.append(rs.getString("nachname")).append(",")
|
||||
.append(rs.getString("telefonNr")).append(",")
|
||||
.append(rs.getString("email")).append(",")
|
||||
.append(rs.getString("strasse")).append(",")
|
||||
.append(rs.getString("hausnummer")).append(",")
|
||||
.append(rs.getString("ort")).append(",")
|
||||
.append(rs.getString("plz")).append(",")
|
||||
.append(rs.getString("password")).append("\n");
|
||||
}
|
||||
|
||||
out.print(csvOutput.toString());
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Datenbankfehler: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,80 @@
|
|||
package com.cafe.verwaltung;
|
||||
|
||||
import jakarta.servlet.ServletException;
|
||||
import java.sql.*;
|
||||
import jakarta.servlet.annotation.WebServlet;
|
||||
import jakarta.servlet.http.HttpServlet;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
|
||||
|
||||
@WebServlet("/NeuerMitarbeiterServlet")
|
||||
public class NeuerMitarbeiterServlet extends HttpServlet {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
private static final String DB_URL = "jdbc:sqlite:C:/Users/asus/personal.db";
|
||||
|
||||
@Override
|
||||
protected void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||
throws IOException {
|
||||
String vorname = request.getParameter("vorname");
|
||||
String nachname = request.getParameter("nachname");
|
||||
String telefonNr = request.getParameter("telefonNr");
|
||||
String email = request.getParameter("email");
|
||||
String strasse = request.getParameter("strasse");
|
||||
String hausNr = request.getParameter("hausnummer");
|
||||
String ortsnr = request.getParameter("ort");
|
||||
String password = request.getParameter("password");
|
||||
|
||||
/*
|
||||
System.out.println("Vorname: " + vorname);
|
||||
System.out.println("Nachname: " + nachname);
|
||||
System.out.println("TelefonNr: " + telefonNr);
|
||||
System.out.println("Email: " + email);
|
||||
System.out.println("Strasse: " + strasse);
|
||||
System.out.println("HausNr: " + hausNr);
|
||||
System.out.println("Ort: " + ortsnr);
|
||||
System.out.println("Password: " + password);
|
||||
*/
|
||||
|
||||
// Validierung: Überprüfe, ob Pflichtfelder null oder leer sind
|
||||
if (isEmpty(vorname) || isEmpty(nachname) || isEmpty(telefonNr) ||
|
||||
isEmpty(email) || isEmpty(strasse) || isEmpty(hausNr) ||
|
||||
isEmpty(ortsnr) || isEmpty(password)) {
|
||||
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
|
||||
response.getWriter().write("Bitte alle Felder ausfüllen.");
|
||||
return;
|
||||
}
|
||||
|
||||
try (Connection conn = DriverManager.getConnection(DB_URL)) {
|
||||
String query = "INSERT INTO mitarbeiter (vorname, nachname, telefonNr, email, strasse, hausnummer, ortsNr, password) VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
|
||||
try (PreparedStatement stmt = conn.prepareStatement(query)) {
|
||||
stmt.setString(1, vorname);
|
||||
stmt.setString(2, nachname);
|
||||
stmt.setString(3, telefonNr);
|
||||
stmt.setString(4, email);
|
||||
stmt.setString(5, strasse);
|
||||
stmt.setString(6, hausNr);
|
||||
stmt.setInt(7, Integer.parseInt(ortsnr)); // Konvertiere Ort zu Integer
|
||||
stmt.setString(8, password);
|
||||
stmt.executeUpdate();
|
||||
response.setStatus(HttpServletResponse.SC_OK);
|
||||
}
|
||||
} catch (NumberFormatException e) {
|
||||
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
|
||||
response.getWriter().write("Fehler: " + e.getMessage());
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
||||
response.getWriter().write("Datenbankfehler: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isEmpty(String value) {
|
||||
return value == null || value.trim().isEmpty();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -70,4 +70,36 @@
|
|||
<servlet-mapping>
|
||||
<servlet-name>SchichtenDatenServlet</servlet-name>
|
||||
<url-pattern>/SchichtenDatenServlet</url-pattern>
|
||||
</servlet-mapping>
|
||||
<servlet>
|
||||
<servlet-name>MitarbeiterDatenServlet</servlet-name>
|
||||
<servlet-class>com.cafe.verwaltung</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>MitarbeiterDatenServlet</servlet-name>
|
||||
<url-pattern>/MitarbeiterDatenServlet</url-pattern>
|
||||
</servlet-mapping>
|
||||
<servlet>
|
||||
<servlet-name>LoeschenMitarbeiterServlet</servlet-name>
|
||||
<servlet-class>com.cafe.verwaltung</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>LoeschenMitarbeiterServlet</servlet-name>
|
||||
<url-pattern>/LoeschenMitarbeiterServlet</url-pattern>
|
||||
</servlet-mapping>
|
||||
<servlet>
|
||||
<servlet-name>NeuerMitarbeiterServlet</servlet-name>
|
||||
<servlet-class>com.cafe.verwaltung</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>NeuerMitarbeiterServlet</servlet-name>
|
||||
<url-pattern>/NeuerMitarbeiterServlet</url-pattern>
|
||||
</servlet-mapping>
|
||||
<servlet>
|
||||
<servlet-name>AktualisiereDatenServlet</servlet-name>
|
||||
<servlet-class>com.cafe.verwaltung</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>AktualisiereDatenServlet</servlet-name>
|
||||
<url-pattern>/AktualisiereDatenServlet</url-pattern>
|
||||
</servlet-mapping></web-app>
|
|
@ -30,7 +30,6 @@
|
|||
<li><a href="/Projekt_SE2/chef.jsp" class="aktiv"><i class="fa-solid fa-house"></i> Startseite</a></li>
|
||||
<li><a href="/Projekt_SE2/chefFunktionen/schichtenPlan.jsp"><i class="fa-solid fa-calendar-days"></i> Schichtenplan</a></li>
|
||||
<li><a href="/Projekt_SE2/chefFunktionen/mitarbeiterVerwaltung.jsp"><i class="fa-solid fa-users-gear"></i> Mitarbeiterverwaltung</a></li>
|
||||
<li><a href="/Projekt_SE2/chefFunktionen/produktVerwaltung.jsp"><i class="fa-solid fa-folder"></i> Produktverwaltung</a></li>
|
||||
<li><a href="#" onclick="openLogoutPopup()"><i class="fa-solid fa-right-to-bracket"></i> Abmelden</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
@ -55,7 +54,7 @@
|
|||
Hier kannst du alles verwalten, was dein Lokal so besonders macht.<br>
|
||||
In der vertrauten und professionellen Umgebung<br>
|
||||
hast du die Kontrolle über alle Abläufe.<br>
|
||||
<strong>Pflege die Speise- und Getränkekarte, verwalte deine Mitarbeiter<br>
|
||||
<strong>Verwalte deine Mitarbeiter<br>
|
||||
und behalte den Überblick über die Schichtpläne.</strong><br>
|
||||
Falls du Unterstützung brauchst, steht dir unser Support-Team jederzeit zur Verfügung.<br>
|
||||
Wir freuen uns, dich auf dem Weg zum Erfolg begleiten zu dürfen.<br>
|
||||
|
|
|
@ -30,7 +30,6 @@
|
|||
<li><a href="/Projekt_SE2/chef.jsp"><i class="fa-solid fa-house"></i> Startseite</a></li>
|
||||
<li><a href="/Projekt_SE2/chefFunktionen/schichtenPlan.jsp"><i class="fa-solid fa-calendar-days"></i> Schichtenplan</a></li>
|
||||
<li><a href="/Projekt_SE2/chefFunktionen/mitarbeiterVerwaltung.jsp" class="aktiv"><i class="fa-solid fa-users-gear"></i> Mitarbeiterverwaltung</a></li>
|
||||
<li><a href="/Projekt_SE2/chefFunktionen/produktVerwaltung.jsp"><i class="fa-solid fa-folder"></i> Produktverwaltung</a></li>
|
||||
<li><a href="#" onclick="openLogoutPopup()"><i class="fa-solid fa-right-to-bracket"></i> Abmelden</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
@ -50,15 +49,95 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Popup für Mitarbeiterverwaltung -->
|
||||
<div id="popupOverlay" style="display: none;">
|
||||
<div id="popupContent">
|
||||
<h3 id="popupMessage">Neuen Mitarbeiter hinzufügen</h3>
|
||||
<form id="mitarbeiterForm">
|
||||
<label for="vorname">Vorname:</label>
|
||||
<input type="text" id="vorname" name="vorname" placeholder="Vorname eingeben" required /><br><br>
|
||||
|
||||
<label for="nachname">Nachname:</label>
|
||||
<input type="text" id="nachname" name="nachname" placeholder="Nachname eingeben" required /><br><br>
|
||||
|
||||
<label for="telefon">Telefonnummer:</label>
|
||||
<input type="text" id="telefonNr" name="telefonNr" placeholder="Telefonnummer eingeben" required /><br><br>
|
||||
|
||||
<label for="email">E-Mail:</label>
|
||||
<input type="email" id="email" name="email" placeholder="E-Mail eingeben" required /><br><br>
|
||||
|
||||
<label for="strasse">Straße:</label>
|
||||
<input type="text" id="strasse" name="strasse" placeholder="Straße eingeben" required /><br><br>
|
||||
|
||||
<label for="hausnummer">Hausnummer:</label>
|
||||
<input type="text" id="hausnummer" name="hausnummer" placeholder="Hausnummer eingeben" required /><br><br>
|
||||
|
||||
<label for="ort">Ort:</label>
|
||||
<input type="number" id="ort" name="ort" placeholder="Ort eingeben (1, 2, 3)" required /><br>
|
||||
<small>Hinweis: 1 = Mannheim, 2 = Schwetzingen, 3 = Heidelberg</small><br><br>
|
||||
|
||||
<label for="password">Passwort:</label>
|
||||
<input type="password" id="password" name="password" placeholder="Passwort eingeben" required /><br><br>
|
||||
|
||||
<button type="button" id="popupConfirmButton">Speichern</button>
|
||||
<button type="button" onclick="closePopup()">Abbrechen</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Popup für Nachrichten -->
|
||||
<div id="messagePopup" class="popup" style="display: none;">
|
||||
<div class="popup-content">
|
||||
<h3 id="messagePopupMessage"></h3>
|
||||
<button type="button" onclick="closeMessagePopup()">OK</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="errorPopup" class="popup" style="display: none;">
|
||||
<div class="popup-content">
|
||||
<h3 id="errorPopupMessage"></h3>
|
||||
<button type="button" onclick="closeErrorPopup()">OK</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="willkommenstext">
|
||||
<p>
|
||||
<span class="einleitung">Willkommen zur Mitarbeiterverwaltung<br>vom EJSS Palast</span><br>
|
||||
<strong>Hier kannst du alle deine Mitarbeiter verwalten, ihre Daten einsehen und deren Passwörter aktuellisieren.</strong><br>
|
||||
<strong>Hier kannst du alle deine Mitarbeiter verwalten, ihre Daten einsehen und aktualisieren.</strong><br>
|
||||
Falls du Unterstützung brauchst, steht dir unser Support-Team jederzeit zur Verfügung.<br>
|
||||
Wir freuen uns, dich auf dem Weg zum Erfolg begleiten zu dürfen.<br>
|
||||
<em>Dein EJSS Palast Admin-Team</em>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<h2>Mitarbeiterverwaltung</h2>
|
||||
<table id="mitarbeiterTabelle">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Mitarbeiter-Nr</th>
|
||||
<th>Vorname</th>
|
||||
<th>Nachname</th>
|
||||
<th>Telefon</th>
|
||||
<th>Email</th>
|
||||
<th>Straße</th>
|
||||
<th>Haus-Nr</th>
|
||||
<th>Ort</th>
|
||||
<th>PLZ</th>
|
||||
<th>Aktionen</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!-- Dynamische Inhalte -->
|
||||
</tbody>
|
||||
</table>
|
||||
<div style="text-align: center; margin-top: 20px;">
|
||||
<button id="neuerMitarbeiterButton" onclick="neuerMitarbeiter()">Neuer Mitarbeiter</button>
|
||||
</div>
|
||||
|
||||
|
||||
</main>
|
||||
<a href="#Anfang"><h4>Zurück zum Anfang</h4></a>
|
||||
<footer>
|
||||
|
@ -75,6 +154,7 @@
|
|||
</div>
|
||||
</footer>
|
||||
|
||||
<script src="/Projekt_SE2/chefFunktionen/mitarbeiterVerwaltungScript.js"></script>
|
||||
<script src="/Projekt_SE2/chefFunktionen/chefScript.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -0,0 +1,257 @@
|
|||
document.addEventListener("DOMContentLoaded", () => {
|
||||
loadMitarbeiter();
|
||||
});
|
||||
|
||||
function loadMitarbeiter() {
|
||||
fetch("/Projekt_SE2/MitarbeiterDatenServlet")
|
||||
.then(response => response.text())
|
||||
.then(csv => {
|
||||
const rows = csv.trim().split("\n").slice(1); // Überspringe die Kopfzeile
|
||||
const tbody = document.querySelector("#mitarbeiterTabelle tbody");
|
||||
tbody.innerHTML = "";
|
||||
|
||||
rows.forEach(row => {
|
||||
const columns = row.split(",");
|
||||
const tr = document.createElement("tr");
|
||||
tr.innerHTML = `
|
||||
<td>${columns[0]}</td> <!-- Mitarbeiter-Nr -->
|
||||
<td>${columns[1]}</td> <!-- Vorname -->
|
||||
<td>${columns[2]}</td> <!-- Nachname -->
|
||||
<td>${columns[3]}</td> <!-- Telefon -->
|
||||
<td>${columns[4]}</td> <!-- Email -->
|
||||
<td>${columns[5]}</td> <!-- Straße -->
|
||||
<td>${columns[6]}</td> <!-- Hausnummer -->
|
||||
<td>${columns[7]}</td> <!-- Ort -->
|
||||
<td>${columns[8]}</td> <!-- Passwort -->
|
||||
<td>
|
||||
<button onclick="bearbeitenMitarbeiter(${columns[0]})">Bearbeiten</button>
|
||||
<button onclick="loeschenMitarbeiter(${columns[0]})">Löschen</button>
|
||||
</td>
|
||||
`;
|
||||
tbody.appendChild(tr);
|
||||
});
|
||||
})
|
||||
.catch(error => showPopup("Fehler beim Laden der Mitarbeiter: " + error.message));
|
||||
}
|
||||
|
||||
function neuerMitarbeiter() {
|
||||
document.getElementById("popupOverlay").style.display = "flex";
|
||||
document.getElementById("popupMessage").innerText = "Neuen Mitarbeiter hinzufügen";
|
||||
clearPopupFields();
|
||||
|
||||
document.getElementById("popupConfirmButton").onclick = () => {
|
||||
const newMitarbeiter = {
|
||||
vorname: document.getElementById("vorname").value.trim(),
|
||||
nachname: document.getElementById("nachname").value.trim(),
|
||||
telefonNr: document.getElementById("telefonNr").value.trim(),
|
||||
email: document.getElementById("email").value.trim(),
|
||||
strasse: document.getElementById("strasse").value.trim(),
|
||||
hausnummer: document.getElementById("hausnummer").value.trim(),
|
||||
ort: document.getElementById("ort").value.trim(),
|
||||
password: document.getElementById("password").value.trim()
|
||||
};
|
||||
|
||||
|
||||
|
||||
if (Object.values(newMitarbeiter).some(value => value === "")) {
|
||||
showPopup("Fehler: Bitte alle Felder ausfüllen.");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
fetch("/Projekt_SE2/NeuerMitarbeiterServlet", {
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/x-www-form-urlencoded"
|
||||
},
|
||||
body: new URLSearchParams(newMitarbeiter).toString()
|
||||
})
|
||||
.then(response => {
|
||||
if (response.ok) {
|
||||
loadMitarbeiter();
|
||||
closePopup();
|
||||
showPopup("Neuer Mitarbeiter erfolgreich hinzugefügt!");
|
||||
} else {
|
||||
showPopup("Fehler beim Hinzufügen des Mitarbeiters.");
|
||||
}
|
||||
})
|
||||
.catch(error => showPopup("Fehler beim Hinzufügen: " + error.message));
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
function bearbeitenMitarbeiter(mitarbeiterNr) {
|
||||
fetch(`/Projekt_SE2/AktualisiereDatenServlet?mitarbeiterNr=${mitarbeiterNr}`)
|
||||
.then(response => response.text())
|
||||
.then(csv => {
|
||||
const rows = csv.trim().split("\n");
|
||||
if (rows.length === 0 || rows[0] === "") {
|
||||
throw new Error("Keine Mitarbeiterdaten gefunden.");
|
||||
}
|
||||
|
||||
const mitarbeiterData = rows[0].split(",");
|
||||
if (mitarbeiterData.length < 9) {
|
||||
throw new Error("Ungültige CSV-Daten erhalten.");
|
||||
}
|
||||
|
||||
// Felder mit den CSV-Daten füllen
|
||||
document.getElementById("vorname").value = mitarbeiterData[1];
|
||||
document.getElementById("nachname").value = mitarbeiterData[2];
|
||||
document.getElementById("telefonNr").value = mitarbeiterData[3];
|
||||
document.getElementById("email").value = mitarbeiterData[4];
|
||||
document.getElementById("strasse").value = mitarbeiterData[5];
|
||||
document.getElementById("hausnummer").value = mitarbeiterData[6];
|
||||
document.getElementById("ort").value = mitarbeiterData[7];
|
||||
document.getElementById("password").value = mitarbeiterData[8];
|
||||
|
||||
// Popup anzeigen
|
||||
document.getElementById("popupOverlay").style.display = "flex";
|
||||
document.getElementById("popupMessage").innerText = "Mitarbeiter bearbeiten";
|
||||
|
||||
// Speichern-Funktion setzen
|
||||
document.getElementById("popupConfirmButton").onclick = () => {
|
||||
saveMitarbeiter(mitarbeiterNr); // Erfolgsmeldung wird in saveMitarbeiter angezeigt
|
||||
};
|
||||
})
|
||||
.catch(error => showPopup("Fehler beim Laden der Mitarbeiterdetails: " + error.message));
|
||||
}
|
||||
|
||||
|
||||
function saveMitarbeiter(mitarbeiterNr) {
|
||||
// Debug-Ausgabe zur Verfolgung
|
||||
// console.log("Speichern von Mitarbeiter:", mitarbeiterNr);
|
||||
|
||||
// Sammeln der Formulardaten
|
||||
const formData = {
|
||||
vorname: document.getElementById("vorname").value.trim(),
|
||||
nachname: document.getElementById("nachname").value.trim(),
|
||||
telefonNr: document.getElementById("telefonNr").value.trim(),
|
||||
email: document.getElementById("email").value.trim(),
|
||||
strasse: document.getElementById("strasse").value.trim(),
|
||||
hausnummer: document.getElementById("hausnummer").value.trim(),
|
||||
ort: document.getElementById("ort").value.trim(),
|
||||
password: document.getElementById("password").value.trim()
|
||||
};
|
||||
|
||||
// Validierung: Überprüfen, ob alle Felder ausgefüllt sind
|
||||
const unfilledFields = Object.entries(formData).filter(([key, value]) => !value);
|
||||
if (unfilledFields.length > 0) {
|
||||
const fehlendeFelder = unfilledFields.map(([key]) => key).join(", ");
|
||||
showPopup(`Fehler: Die folgenden Felder sind leer: ${fehlendeFelder}`);
|
||||
return;
|
||||
}
|
||||
|
||||
// URL je nach Kontext (Aktualisierung oder Neuerstellung)
|
||||
const servletURL = mitarbeiterNr
|
||||
? `/Projekt_SE2/AktualisiereDatenServlet`
|
||||
: "/Projekt_SE2/NeuerMitarbeiterServlet";
|
||||
|
||||
// Bei Update wird die MitarbeiterNr angehängt
|
||||
if (mitarbeiterNr) {
|
||||
formData.mitarbeiterNr = mitarbeiterNr;
|
||||
}
|
||||
|
||||
// Debug-Ausgabe der Daten
|
||||
console.log("Gesendete Daten:", formData);
|
||||
|
||||
fetch(servletURL, {
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/x-www-form-urlencoded"
|
||||
},
|
||||
body: new URLSearchParams(formData).toString() // Daten in x-www-form-urlencoded-Format umwandeln
|
||||
})
|
||||
.then(response => {
|
||||
if (!response.ok) {
|
||||
// Fehlertext vom Server lesen
|
||||
return response.text().then((text) => {
|
||||
throw new Error(text);
|
||||
});
|
||||
}
|
||||
const successMessage = mitarbeiterNr
|
||||
? "Mitarbeiter erfolgreich aktualisiert!"
|
||||
: "Neuer Mitarbeiter erfolgreich hinzugefügt!";
|
||||
showPopup(successMessage);
|
||||
closePopup();
|
||||
loadMitarbeiter(); // Tabelle neu laden
|
||||
})
|
||||
.catch((error) => showPopup("Fehler beim Speichern: " + error.message));
|
||||
}
|
||||
|
||||
|
||||
// Mitarbeiter löschen
|
||||
function loeschenMitarbeiter(mitarbeiterNr) {
|
||||
const confirmation = confirm("Möchten Sie diesen Mitarbeiter wirklich löschen?");
|
||||
if (confirmation) {
|
||||
fetch(`/Projekt_SE2/LoeschenMitarbeiterServlet`, {
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/x-www-form-urlencoded"
|
||||
},
|
||||
body: `mitarbeiterNr=${mitarbeiterNr}`
|
||||
})
|
||||
.then(response => {
|
||||
if (response.ok) {
|
||||
// Mitarbeiter erfolgreich gelöscht
|
||||
alert("Mitarbeiter erfolgreich gelöscht!");
|
||||
loadMitarbeiter(); // Aktualisiere die Tabelle
|
||||
} else {
|
||||
// Fehler vom Server lesen und anzeigen
|
||||
return response.text().then((errorMessage) => {
|
||||
showPopup("Fehler beim Löschen des Mitarbeiters: " + errorMessage);
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
// Netzwerk- oder andere Fehler anzeigen
|
||||
showPopup("Fehler beim Löschen des Mitarbeiters: " + error.message);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Neuer Mitarbeiter hinzufügen
|
||||
|
||||
// Popup schließen
|
||||
function closePopup() {
|
||||
document.getElementById("popupOverlay").style.display = "none";
|
||||
clearPopupFields();
|
||||
}
|
||||
|
||||
// Felder im Popup leeren
|
||||
function clearPopupFields() {
|
||||
document.getElementById("vorname").value = "";
|
||||
document.getElementById("nachname").value = "";
|
||||
document.getElementById("telefonNr").value = "";
|
||||
document.getElementById("email").value = "";
|
||||
document.getElementById("strasse").value = "";
|
||||
document.getElementById("hausnummer").value = "";
|
||||
document.getElementById("ort").value = "";
|
||||
document.getElementById("password").value = "";
|
||||
}
|
||||
|
||||
|
||||
// Popup-Nachricht anzeigen
|
||||
function showPopup(message) {
|
||||
const popupOverlay = document.getElementById("popupOverlay");
|
||||
const popupMessage = document.getElementById("popupMessage");
|
||||
|
||||
popupMessage.textContent = message;
|
||||
popupOverlay.style.display = "flex";
|
||||
}
|
||||
|
||||
// Popup-Nachricht mit Bestätigung anzeigen
|
||||
function showPopupWithConfirmation(message, onConfirm) {
|
||||
const popupOverlay = document.getElementById("popupOverlay");
|
||||
const popupMessage = document.getElementById("popupMessage");
|
||||
|
||||
popupMessage.textContent = message;
|
||||
|
||||
const confirmButton = document.getElementById("popupConfirmButton");
|
||||
confirmButton.style.display = "inline-block";
|
||||
confirmButton.onclick = () => {
|
||||
closePopup();
|
||||
onConfirm();
|
||||
};
|
||||
|
||||
popupOverlay.style.display = "flex";
|
||||
}
|
|
@ -1,80 +0,0 @@
|
|||
<%@ page language="java" contentType="text/html; charset=UTF-8"
|
||||
pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>EJSS Palast - Produktverwaltung</title>
|
||||
<link rel="icon" href="/Projekt_SE2/Bilder/EJS_Palast_logo.jpg" type="image/x-icon" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.1/css/all.min.css"/>
|
||||
<link rel="stylesheet" href="/Projekt_SE2/styles.css" />
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Playwrite+GB+S:ital,wght@0,100..400;1,100..400&display=swap"
|
||||
rel="stylesheet">
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Gowun+Dodum&family=Playwrite+GB+S:ital,wght@0,100..400;1,100..400&display=swap"
|
||||
rel="stylesheet">
|
||||
</head>
|
||||
<body>
|
||||
<header id="Anfang">
|
||||
<img src="/Projekt_SE2/Bilder/EJS_Palast_logo.jpg" alt="EJS Logo" class="logoOben">
|
||||
<h1>EJSS Palast - Chef</h1>
|
||||
</header>
|
||||
<nav>
|
||||
<span class="menu-icon" onclick="toggleMenu()">☰ Menu</span>
|
||||
<div class="navigation">
|
||||
<ul>
|
||||
<li><a href="/Projekt_SE2/chef.jsp"><i class="fa-solid fa-house"></i> Startseite</a></li>
|
||||
<li><a href="/Projekt_SE2/chefFunktionen/schichtenPlan.jsp"><i class="fa-solid fa-calendar-days"></i> Schichtenplan</a></li>
|
||||
<li><a href="/Projekt_SE2/chefFunktionen/mitarbeiterVerwaltung.jsp"><i class="fa-solid fa-users-gear"></i> Mitarbeiterverwaltung</a></li>
|
||||
<li><a href="/Projekt_SE2/chefFunktionen/produktVerwaltung.jsp" class="aktiv"><i class="fa-regular fa-folder-open"></i> Produktverwaltung</a></li>
|
||||
<li><a href="#" onclick="openLogoutPopup()"><i class="fa-solid fa-right-to-bracket"></i> Abmelden</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
<main>
|
||||
|
||||
|
||||
<!-- Popup-HTML -->
|
||||
<div id="logoutPopup" class="popup">
|
||||
<div class="popup-content">
|
||||
<h3>Abmelden</h3>
|
||||
<p>Möchten Sie sich wirklich abmelden?</p><br>
|
||||
<div class="popup-actions">
|
||||
<button onclick="confirmLogout()">Ja</button><br><hr>
|
||||
<button onclick="closeLogoutPopup()">Nein</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="willkommenstext">
|
||||
<p>
|
||||
<span class="einleitung">Willkommen zur Produktverwaltung<br>vom EJSS Palast</span><br>
|
||||
<strong>Hier kannst du alle deine Produkt-Angebote verwalten, neue einfügen, löschen und aktuellisieren</strong><br>
|
||||
Falls du Unterstützung brauchst, steht dir unser Support-Team jederzeit zur Verfügung.<br>
|
||||
Wir freuen uns, dich auf dem Weg zum Erfolg begleiten zu dürfen.<br>
|
||||
<em>Dein EJSS Palast Admin-Team</em>
|
||||
</p>
|
||||
</div>
|
||||
</main>
|
||||
<a href="#Anfang"><h4>Zurück zum Anfang</h4></a>
|
||||
<footer>
|
||||
<img src="/Projekt_SE2/Bilder/EJS_Palast_logo.jpg" alt="EJS Logo" class="logo">
|
||||
<p>
|
||||
<small>Anschrift:<br>
|
||||
Musterstrasse 10<br>
|
||||
68163 Mannheim</small>
|
||||
</p>
|
||||
<div class="socials">
|
||||
<a href="https://www.facebook.com" target="_blank"><i class="fa-brands fa-facebook"></i></a>
|
||||
<a href="https://www.instagram.com" target="_blank"><i class="fa-brands fa-instagram"></i></a>
|
||||
<a href="tel:004962012345678" class="call-icon"><i class="fa-solid fa-phone"></i></a>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script src="/Projekt_SE2/chefFunktionen/chefScript.js"></script>
|
||||
</body>
|
||||
</html>
|
|
@ -30,7 +30,6 @@
|
|||
<li><a href="/Projekt_SE2/chef.jsp"><i class="fa-solid fa-house"></i> Startseite</a></li>
|
||||
<li><a href="/Projekt_SE2/chefFunktionen/schichtenPlan.jsp" class="aktiv"><i class="fa-solid fa-calendar-days"></i> Schichtenplan</a></li>
|
||||
<li><a href="/Projekt_SE2/chefFunktionen/mitarbeiterVerwaltung.jsp"><i class="fa-solid fa-users-gear"></i> Mitarbeiterverwaltung</a></li>
|
||||
<li><a href="/Projekt_SE2/chefFunktionen/produktVerwaltung.jsp"><i class="fa-solid fa-folder"></i> Produktverwaltung</a></li>
|
||||
<li><a href="#" onclick="openLogoutPopup()"><i class="fa-solid fa-right-to-bracket"></i> Abmelden</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
@ -363,7 +363,10 @@ footer {
|
|||
background-color: #333;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
padding: 20px;
|
||||
padding: 10px 20px;
|
||||
font-size: 14px;
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*Öffnungszeiten */
|
||||
|
@ -1056,3 +1059,130 @@ footer .call-icon:hover {
|
|||
background-color: #6c2f3d;
|
||||
}
|
||||
|
||||
#popupMessage {
|
||||
font-size: 16px; /* Standard-Schriftgröße */
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
|
||||
/* Popup-Overlay */
|
||||
#popupOverlay {
|
||||
display: none; /* Popup ist standardmäßig ausgeblendet */
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: rgba(0, 0, 0, 0.5); /* Hintergrund mit Transparenz */
|
||||
z-index: 1000; /* Sicherstellen, dass es über anderen Elementen liegt */
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
/* Popup-Container */
|
||||
#popupContent {
|
||||
background: white;
|
||||
padding: 20px;
|
||||
border-radius: 5px;
|
||||
box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1);
|
||||
max-width: 400px;
|
||||
width: 90%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* Popup-Fehlernachrichten */
|
||||
.popup-content {
|
||||
background: white;
|
||||
padding: 20px;
|
||||
border-radius: 5px;
|
||||
text-align: center;
|
||||
max-width: 300px;
|
||||
width: 90%;
|
||||
margin: auto;
|
||||
z-index: 1001;
|
||||
}
|
||||
|
||||
/* Verhindern, dass der Rest der Seite gescrollt wird */
|
||||
body.popup-open {
|
||||
overflow: hidden;
|
||||
}
|
||||
/* Allgemeine Tabelleneinstellungen */
|
||||
#mitarbeiterTabelle {
|
||||
width: 90%;
|
||||
margin: 20px auto;
|
||||
border-collapse: collapse;
|
||||
font-family: Arial, sans-serif;
|
||||
font-size: 14px;
|
||||
|
||||
}
|
||||
|
||||
#mitarbeiterTabelle thead {
|
||||
background-color: #5b2c25; /* Dunkles Braun */
|
||||
color: white;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
#mitarbeiterTabelle th, #mitarbeiterTabelle td {
|
||||
padding: 12px; /* Gleichmäßiger Innenabstand */
|
||||
border: 1px solid #ddd; /* Dünne Rahmenlinie */
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
#mitarbeiterTabelle tbody tr:nth-child(even) {
|
||||
background-color: #f9f9f9; /* Hellgrauer Hintergrund für jede zweite Zeile */
|
||||
}
|
||||
|
||||
#mitarbeiterTabelle tbody tr:hover {
|
||||
background-color: #f1f1f1; /* Hellgrau beim Überfahren */
|
||||
}
|
||||
|
||||
/* Styling der Buttons */
|
||||
#mitarbeiterTabelle button {
|
||||
padding: 5px 12px; /* Innenabstand für die Buttons */
|
||||
font-size: 14px;
|
||||
border: none;
|
||||
border-radius: 4px; /* Runde Ecken */
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/* Eintragen-Button */
|
||||
#mitarbeiterTabelle button.eintragen {
|
||||
background-color: #5b2c25; /* Dunkles Braun */
|
||||
color: white;
|
||||
margin-right: 5px; /* Abstand zwischen Buttons */
|
||||
}
|
||||
|
||||
/* Austragen-Button */
|
||||
#mitarbeiterTabelle button.austragen {
|
||||
background-color: #ddd; /* Hellgrau */
|
||||
color: #333; /* Dunkle Schrift */
|
||||
}
|
||||
|
||||
/* Hover-Effekt für Buttons */
|
||||
#mitarbeiterTabelle button:hover {
|
||||
opacity: 0.9; /* Transparenz bei Hover */
|
||||
}
|
||||
|
||||
#neuerMitarbeiterButton {
|
||||
display: block;
|
||||
margin: 20px auto; /* Zentriert den Button horizontal und fügt Abstand ein */
|
||||
padding: 10px 20px; /* Größe des Buttons */
|
||||
background-color: #6c3b2a; /* Dunkelbraune Farbe */
|
||||
color: #fff; /* Weißer Text */
|
||||
border: none; /* Entfernt den Rahmen */
|
||||
border-radius: 5px; /* Runde Ecken */
|
||||
font-size: 16px; /* Schriftgröße */
|
||||
font-weight: bold;
|
||||
cursor: pointer; /* Zeigt einen Zeiger beim Hover */
|
||||
transition: background-color 0.3s ease; /* Animation für Hover */
|
||||
}
|
||||
|
||||
#neuerMitarbeiterButton:hover {
|
||||
background-color: #8a4c38; /* Hellere braune Farbe beim Hover */
|
||||
}
|
||||
|
||||
#neuerMitarbeiterButton:active {
|
||||
background-color: #56271a; /* Noch dunkler bei Klick */
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue