From b56442d48b197df90769fbc693fe6b640e3bcc3e Mon Sep 17 00:00:00 2001 From: jon ander Date: Fri, 11 Apr 2025 17:54:32 +0200 Subject: [PATCH] Add BotonDTO class and update home page to use button fragments for dynamic button rendering --- .../GestionInventario/DataInitializer.java | 6 ++ .../controllers/UserController.java | 6 ++ .../GestionInventario/dto/BotonDTO.java | 74 ++++++++++++++++++ src/main/resources/db/Modelo_Inventario.mwb | Bin 18301 -> 18333 bytes .../templates/fragments/buttons.html | 28 +++++++ src/main/resources/templates/home.html | 29 +++---- 6 files changed, 126 insertions(+), 17 deletions(-) create mode 100644 src/main/java/com/ieslamar/GestionInventario/dto/BotonDTO.java create mode 100644 src/main/resources/templates/fragments/buttons.html diff --git a/src/main/java/com/ieslamar/GestionInventario/DataInitializer.java b/src/main/java/com/ieslamar/GestionInventario/DataInitializer.java index dc1ce8e..c8f112c 100644 --- a/src/main/java/com/ieslamar/GestionInventario/DataInitializer.java +++ b/src/main/java/com/ieslamar/GestionInventario/DataInitializer.java @@ -1,5 +1,6 @@ package com.ieslamar.GestionInventario; +import com.ieslamar.GestionInventario.dto.BotonDTO; import com.ieslamar.GestionInventario.entities.Role; import com.ieslamar.GestionInventario.services.UserService; import org.springframework.boot.CommandLineRunner; @@ -16,6 +17,11 @@ public class DataInitializer { // userService.registerUser("user", "user123", Role.USER.name(), "user123@ejemplo.com",null); // }; // } +// public static void test(){ +// BotonDTO boton1 = new BotonDTO("Inventario", "/Inventario/management"); +// boton1.isRequireAdmin(); +// +// } } diff --git a/src/main/java/com/ieslamar/GestionInventario/controllers/UserController.java b/src/main/java/com/ieslamar/GestionInventario/controllers/UserController.java index 862f9b8..c5f9ba8 100644 --- a/src/main/java/com/ieslamar/GestionInventario/controllers/UserController.java +++ b/src/main/java/com/ieslamar/GestionInventario/controllers/UserController.java @@ -1,6 +1,7 @@ package com.ieslamar.GestionInventario.controllers; +import com.ieslamar.GestionInventario.dto.BotonDTO; import com.ieslamar.GestionInventario.entities.User; import com.ieslamar.GestionInventario.services.UserService; import org.springframework.beans.factory.annotation.Autowired; @@ -28,6 +29,11 @@ public class UserController { @GetMapping("/home") public String homePage(Model model) { + List botones = List.of( + new BotonDTO("Inventario", "/Inventario/management", false, null), + new BotonDTO("Gestión", "/Inventario/management", true, "button_salir") + ); + model.addAttribute("buttons", botones); return "home"; // Retorna la vista home.html } diff --git a/src/main/java/com/ieslamar/GestionInventario/dto/BotonDTO.java b/src/main/java/com/ieslamar/GestionInventario/dto/BotonDTO.java new file mode 100644 index 0000000..bf64d88 --- /dev/null +++ b/src/main/java/com/ieslamar/GestionInventario/dto/BotonDTO.java @@ -0,0 +1,74 @@ +package com.ieslamar.GestionInventario.dto; + +import lombok.Getter; +import lombok.Setter; + +public class BotonDTO { + private String texto; + private String url; + private boolean requireAdmin; + private String cssClass; + + public BotonDTO(String texto, String url) { + this(texto, url, false, null); + } + + public BotonDTO(String texto, String url, boolean requireAdmin) { + this(texto, url, requireAdmin, null); + } + + public BotonDTO(String texto, String url, String cssClass) { + this(texto, url, false, cssClass); + } + + public BotonDTO(String texto, String url, boolean requireAdmin, String cssClass) { + this.texto = texto; + this.url = url; + this.requireAdmin = requireAdmin; + this.cssClass = cssClass; + } + + public String getTexto() { + return texto; + } + + public void setTexto(String texto) { + this.texto = texto; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public boolean isRequireAdmin() { + return requireAdmin; + } + + public void setRequireAdmin(boolean requireAdmin) { + this.requireAdmin = requireAdmin; + } + + public String getCssClass() { + return cssClass; + } + + public void setCssClass(String cssClass) { + this.cssClass = cssClass; + } + + @Override + public String toString() { + return "BotonDTO{" + + "texto='" + texto + '\'' + + ", url='" + url + '\'' + + ", requireAdmin=" + requireAdmin + + ", cssClass='" + cssClass + '\'' + + '}'; + } +} + + diff --git a/src/main/resources/db/Modelo_Inventario.mwb b/src/main/resources/db/Modelo_Inventario.mwb index 146d70a95d30d8e1e6bae34c0463aa0f1ed569a3..bb62a4ddf3d350b4d7f90720f0f02f620167d852 100644 GIT binary patch delta 11381 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 delta 11302 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 + + + +
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/home.html b/src/main/resources/templates/home.html index 238c22d..9736a0f 100644 --- a/src/main/resources/templates/home.html +++ b/src/main/resources/templates/home.html @@ -1,27 +1,22 @@ - + Home

Bienvenido a Gestión de Inventario

-
- - - - - - -
- - - -
+
+
+ +
+ + +
+ + +