diff --git a/src/main/bundles/dev.bundle b/src/main/bundles/dev.bundle index b08c0a8..7fef478 100644 Binary files a/src/main/bundles/dev.bundle and b/src/main/bundles/dev.bundle differ diff --git a/src/main/frontend/themes/sistema-mantenimiento/styles.css b/src/main/frontend/themes/sistema-mantenimiento/styles.css index 561e83c..474e405 100644 --- a/src/main/frontend/themes/sistema-mantenimiento/styles.css +++ b/src/main/frontend/themes/sistema-mantenimiento/styles.css @@ -72,43 +72,8 @@ } /* ------------------------ FIN -------------------------- */ /* -*/ /* */ - - -/* ---------------- Estilos para la vista de MantenimientosView.java ---------------- */ -/* Estilo para el mantenimiento header */ -.mantenimiento-header { - width: 100px; -} - -/* Estilo para el comboBox tipo de mantenimiento */ -.mantenimiento-combo { - margin-right: 15px; -} - -/* Estilo para los tipos de hardware */ -.mantenimiento-group { - width: 100px; -} - -/* Etiqueta MANTENIMIENTO */ -.mantenimiento-label { - margin-bottom: 10px; -} - -/* Estilo para los campos de texto */ -.mantenimiento-text-field { - margin-bottom: 15px; -} -/* ----------------------------- FIN --------------------------- */ -/* - */ -/* - */ - - /* --------------- Estilos para la vista de ActDiaria.java -------------- */ /* Estilo para el header */ .act-diaria-header { diff --git a/src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java b/src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java index f16099b..93230ec 100644 --- a/src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java +++ b/src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java @@ -53,4 +53,62 @@ public class DatabaseService { } return nomenclatura; } + + + /* -------------- Metodo para obtener a los usuarios ---------------- */ + public List getUsuarios() { + List usuarios = new ArrayList<>(); + String query = "select USUARIOID from USUARIOSFINAN"; + + try (Connection connection = getConnection(); + Statement statement = connection.createStatement(); + ResultSet resultSet = statement.executeQuery(query)) { + + while (resultSet.next()) { + usuarios.add(resultSet.getString("usuarioid")); + } + } catch (SQLException e) { + e.printStackTrace(); + } + return usuarios; + } + + + /* -------------- Metodo para obtener los departamentos ---------------- */ + public List getDepartamentos() { + List departamentos = new ArrayList<>(); + String query = "select DESCRIPCION from DEPARTAMENTOSFINAN"; + + try (Connection connection = getConnection(); + Statement statement = connection.createStatement(); + ResultSet resultSet = statement.executeQuery(query)) { + + while (resultSet.next()) { + departamentos.add(resultSet.getString("descripcion")); + } + } catch (SQLException e) { + e.printStackTrace(); + } + return departamentos; + } + + + + /* -------------- Metodo para obtener los tipos de hardware ---------------- */ + public List getTiposHardware() { + List tiposHardware = new ArrayList<>(); + String query = "select NOMBRETIPO from TIPOSHARDWARE"; + + try (Connection connection = getConnection(); + Statement statement = connection.createStatement(); + ResultSet resultSet = statement.executeQuery(query)) { + + while (resultSet.next()) { + tiposHardware.add(resultSet.getString("nombretipo")); + } + } catch (SQLException e) { + e.printStackTrace(); + } + return tiposHardware; + } } diff --git a/src/main/java/mx/gob/jumapacelaya/ui/MantenimientoView.java b/src/main/java/mx/gob/jumapacelaya/ui/MantenimientoView.java index da5305f..9121226 100644 --- a/src/main/java/mx/gob/jumapacelaya/ui/MantenimientoView.java +++ b/src/main/java/mx/gob/jumapacelaya/ui/MantenimientoView.java @@ -1,20 +1,28 @@ package mx.gob.jumapacelaya.ui; +import com.vaadin.flow.component.button.ButtonVariant; import com.vaadin.flow.component.checkbox.CheckboxGroup; import com.vaadin.flow.component.combobox.ComboBox; import com.vaadin.flow.component.datepicker.DatePicker; import com.vaadin.flow.component.dependency.CssImport; +import com.vaadin.flow.component.html.H1; +import com.vaadin.flow.component.html.H2; import com.vaadin.flow.component.html.Span; +import com.vaadin.flow.component.icon.Icon; +import com.vaadin.flow.component.icon.VaadinIcon; +import com.vaadin.flow.component.notification.Notification; import com.vaadin.flow.component.orderedlayout.HorizontalLayout; import com.vaadin.flow.component.orderedlayout.VerticalLayout; import com.vaadin.flow.component.radiobutton.RadioButtonGroup; import com.vaadin.flow.component.textfield.TextArea; import com.vaadin.flow.component.textfield.TextField; +import com.vaadin.flow.component.button.Button; import com.vaadin.flow.router.PageTitle; import com.vaadin.flow.router.Route; import jakarta.annotation.security.PermitAll; import mx.gob.jumapacelaya.services.DatabaseService; +import java.awt.*; import java.time.LocalDate; import java.util.List; @@ -25,9 +33,16 @@ import java.util.List; @CssImport("./themes/sistema-mantenimiento/styles.css") public class MantenimientoView extends VerticalLayout { + private final VerticalLayout controlsLayout; + private final DatabaseService databaseService; + private final VerticalLayout actualizacionesLayout; + public MantenimientoView() { - DatabaseService databaseService = new DatabaseService(); + this.databaseService = new DatabaseService(); + this.controlsLayout = new VerticalLayout(); + this.actualizacionesLayout = new VerticalLayout(); + HorizontalLayout fechaLayout = new HorizontalLayout(); //Componentes de texto TextField nomenclatura = new TextField("Nomenclatura"); nomenclatura.setReadOnly(true); @@ -37,15 +52,11 @@ public class MantenimientoView extends VerticalLayout { otras.setEnabled(false); otras.addClassName("mantenimiento-text-field"); - //Selector de fecha DatePicker fecha = new DatePicker("Fecha"); - //ComboBox - ComboBox area = new ComboBox("Area o Departamento"); - area.setItems("T.I", "Catastro", "Medicion"); //Areas de ejemplo - area.addClassName("mantenimiento-combo"); + //ComboBox Tipo de Mantenimiento ComboBox tipoMantt = new ComboBox<>("Tipo de Mantenimiento"); List tiposDeMantenimiento = databaseService.getTiposDeMantenimientos(); tipoMantt.setItems(tiposDeMantenimiento); @@ -68,82 +79,135 @@ public class MantenimientoView extends VerticalLayout { fecha.clear(); } }); + fechaLayout.add(fecha); + fechaLayout.addAndExpand(new HorizontalLayout()); + fechaLayout.add(tipoMantt, nomenclatura); + fechaLayout.setWidthFull(); - ComboBox usuario = new ComboBox("Usuario"); - usuario.setItems("Usuario1", "Usuario2", "Usuario3"); - - - //CheckBoxes LIMPIEZA DE EQUIPO - CheckboxGroup limpiezaEq = new CheckboxGroup<>(); - limpiezaEq.setWidthFull(); - limpiezaEq.setLabel("LIMPIEZA DE EQUIPO REALIZDA"); - limpiezaEq.setItems("CPU","Monitor","Laptop"); - limpiezaEq.setWidthFull(); - - CheckboxGroup escannerImp = new CheckboxGroup<>(); - escannerImp.setItems("Escaner", "Impresora", "Otro"); - escannerImp.setWidthFull(); - - //CheckBoxes ACTUALIZACIONES DE SEGURIDAD - CheckboxGroup actualiSeg = new CheckboxGroup(); - Span etiqueta = new Span("ACTUALIZACIONES DE SEGURIDAD INFORMATICA"); - actualiSeg.setLabel("Actualizaciones necesarias"); - actualiSeg.setItems("S.O", "Antivirus", "Firewall"); - - RadioButtonGroup forma = new RadioButtonGroup<>(); - forma.setLabel("Actividad realizada de forma:"); - forma.setItems("Remota", "Manual"); - - RadioButtonGroup masActu = new RadioButtonGroup<>(); - masActu.setLabel("¿Requiere mas actualizaciones?:"); - masActu.setItems("Si", "No"); - masActu.addValueChangeListener(event -> { - if ("Si".equals(event.getValue())) { - otras.setEnabled(true); - } else { - otras.setEnabled(false); - } + + HorizontalLayout departamentoLayout = new HorizontalLayout(); + //ComboBox Area o Departamento + ComboBox area = new ComboBox<>("Area o Departamento"); + List areas = databaseService.getDepartamentos(); + area.setItems(areas); + + ComboBox usuario = new ComboBox<>("Usuario"); + List usuarios = databaseService.getUsuarios(); + usuario.setItems(usuarios); + + departamentoLayout.add(area, usuario); + departamentoLayout.setWidthFull(); + + createHardwareSection(databaseService); + addActualizacionesSection(); + + + add(fechaLayout, departamentoLayout, controlsLayout, actualizacionesLayout); + } + + + private void createHardwareSection(DatabaseService databaseService) { + HorizontalLayout etiquetaLayout = new HorizontalLayout(); + Span etiqueta = new Span("Limpieza de Equipo Realizada"); + + //Boton para agregar otro tipo de hardware + Button btnAgregarTipo = new Button(new Icon(VaadinIcon.PLUS)); + btnAgregarTipo.addThemeVariants(ButtonVariant.LUMO_ICON); + btnAgregarTipo.setAriaLabel("Agregar Tipo"); + + //Listener del boton para agregar mas + btnAgregarTipo.addClickListener(event -> { + addNuevoTipo(); }); + etiquetaLayout.add(etiqueta, btnAgregarTipo); + controlsLayout.add(etiquetaLayout); + controlsLayout.setSpacing(false); + addNuevoTipo(); + } - //?Diseño del Layout de la fecha y la nomenclatura - HorizontalLayout header = new HorizontalLayout(); - header.setWidthFull(); - header.add(fecha); - header.addAndExpand(new HorizontalLayout()); - header.add(tipoMantt); - header.add(nomenclatura); + //Metodo para agregar un nuevo ComboBox de tipo de hardware y campos de texto + private void addNuevoTipo() { + ComboBox tipoHardware = new ComboBox<>(); + List tiposHardware = databaseService.getTiposHardware(); + tipoHardware.setItems(tiposHardware); + tipoHardware.setPlaceholder("Tipo de hardware"); + TextField noSerie = new TextField(); + noSerie.setEnabled(false); + noSerie.setPlaceholder("No. Serie"); - //?Diseño para los campos de area y el usuario - HorizontalLayout usuarioLayout = new HorizontalLayout(area, usuario/*, tipoEquipo*/); + TextField modelo = new TextField(); + modelo.setEnabled(false); + modelo.setPlaceholder("Modelo"); - //?Alineacion de los checkBoxes - HorizontalLayout checkboxLayout = new HorizontalLayout(forma, masActu, otras); + TextField placa = new TextField(); + placa.setEnabled(false); + placa.setPlaceholder("Placa"); + tipoHardware.addValueChangeListener(event -> { + String tipoSeleccionado = event.getValue(); - //?Reparaciones realizadas - VerticalLayout reparacionLayout = new VerticalLayout(); - Span etiqueta2 = new Span("Reparación Realizada al Equipo"); - TextField instalacion = new TextField("Instalacion de Software"); - TextField reparacion = new TextField("Reparacion de Hardware"); - TextField cambio = new TextField("Cambio de Dispositivo"); - reparacionLayout.add(etiqueta2, instalacion, reparacion, cambio); - reparacionLayout.setAlignItems(Alignment.STRETCH); - reparacionLayout.setVisible(false); - tipoMantt.addValueChangeListener(event -> { - if ("Correctivo".equals(event.getValue())) { - reparacionLayout.setVisible(true); + if (tipoSeleccionado != null) { + if ("MOUSE".equalsIgnoreCase(tipoSeleccionado) || "TECLADO".equalsIgnoreCase(tipoSeleccionado)) { + noSerie.setEnabled(false); + modelo.setEnabled(false); + placa.setEnabled(false); + } else { + noSerie.setEnabled(true); + modelo.setEnabled(true); + placa.setEnabled(true); + } } else { - reparacionLayout.setVisible(false); + noSerie.setEnabled(false); + modelo.setEnabled(false); + placa.setEnabled(false); } }); + //Boton para eliminar ese conjunto de hardware + Button btnEliminar = new Button(new Icon(VaadinIcon.TRASH)); + btnEliminar.addThemeVariants(ButtonVariant.LUMO_ICON, ButtonVariant.LUMO_ERROR); + btnEliminar.setAriaLabel("Eliminar Tipo"); + + //Crear nuevo layout horizontal con estos campos + HorizontalLayout hardwareDetailsLayout = new HorizontalLayout(); + hardwareDetailsLayout.add(tipoHardware, noSerie, modelo, placa, btnEliminar); + + + //Listener para eliminar el tipo + btnEliminar.addClickListener(event -> { + controlsLayout.remove(hardwareDetailsLayout); + }); - add(header, usuarioLayout, limpiezaEq, escannerImp, etiqueta, actualiSeg, checkboxLayout, reparacionLayout); + controlsLayout.add(hardwareDetailsLayout); } + + private void addActualizacionesSection() { + VerticalLayout etiquetaLayout = new VerticalLayout(); + Span Titulo = new Span("Actualizaciones de Seguridad Informatica:"); + etiquetaLayout.add(Titulo); + + CheckboxGroup actualizaciones = new CheckboxGroup<>(); + actualizaciones.setLabel("Actualizaciones Necesarias"); + actualizaciones.setItems("S.O", "Antivirus", "Firewall"); + + RadioButtonGroup formaGroup = new RadioButtonGroup<>(); + formaGroup.setLabel("Actividad Realizada de Forma:"); + formaGroup.setItems("Remota", "Manual"); + + VerticalLayout actualizacionesGroup = new VerticalLayout(); + actualizacionesGroup.add(actualizaciones); + + HorizontalLayout formasLayout = new HorizontalLayout(); + formasLayout.add(formaGroup); + + + actualizacionesLayout.add(Titulo, actualizacionesGroup, formasLayout); + actualizacionesLayout.setSpacing(false); + } }