Haciendo ajestes al buscador, empezando con operaciones de busqueda y detalles internas de la busqueda
parent
0440e82747
commit
88fb8b99c2
@ -1,14 +1,36 @@
|
|||||||
package com.example.proyectofinal.controllers;
|
package com.example.proyectofinal.controllers;
|
||||||
|
|
||||||
|
|
||||||
|
import org.springframework.ui.Model;
|
||||||
|
import com.example.proyectofinal.models.empresas.Empresa;
|
||||||
|
import com.example.proyectofinal.repositories.empresas.EmpressaRepository;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
@Controller
|
@Controller
|
||||||
@RequestMapping("/buscador")
|
@RequestMapping("/buscador")
|
||||||
public class BuscadorController {
|
public class BuscadorController {
|
||||||
|
@Autowired
|
||||||
|
private EmpressaRepository empressaRepository;
|
||||||
@GetMapping
|
@GetMapping
|
||||||
public String buscador(){
|
public String buscador(){
|
||||||
return "buscador";
|
return "buscador_admin";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/search")
|
||||||
|
public String search(@RequestParam String query, @RequestParam(required = false) String optempresa, String optskill, String optalumno, String optoferta, Model model) {
|
||||||
|
if(optempresa != null){
|
||||||
|
ArrayList<Empresa> empresas = empressaRepository.getEmpressaByKeywordsOrName("*"+query+"*");
|
||||||
|
model.addAttribute("empresas", empresas);
|
||||||
|
}
|
||||||
|
return "list_empresas";
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -0,0 +1,67 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns:th="http://www.thymeleaf.org">
|
||||||
|
<head>
|
||||||
|
<title>Buscador</title>
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
height: 100vh;
|
||||||
|
margin: 10px;
|
||||||
|
background-color: #f0f0f0;
|
||||||
|
font-family: Arial, sans-serif;
|
||||||
|
}
|
||||||
|
form {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
width: 50%;
|
||||||
|
}
|
||||||
|
.search-container {
|
||||||
|
display: flex;
|
||||||
|
width: 100%;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
input[type="text"] {
|
||||||
|
flex-grow: 1;
|
||||||
|
padding: 15px;
|
||||||
|
margin-right: 10px;
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
.checkboxes {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
width: 50%;
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<form action="/buscador/search" method="get" id="searchForm">
|
||||||
|
<div class="search-container" id="searchContainer">
|
||||||
|
<input type="text" name="query" placeholder="Buscar...">
|
||||||
|
<input type="submit" value="Buscar">
|
||||||
|
</div>
|
||||||
|
<div class="checkboxes">
|
||||||
|
<input type="checkbox" id="optionEmpresa" name="optempresa" value="OptEmpresa">
|
||||||
|
<label for="optionEmpresa"> Empresa por nombre y/o keywords</label><br>
|
||||||
|
<input type="checkbox" id="optionEmpresaPorSecot" name="optempporsector" value="optionEmpresaPorSecot">
|
||||||
|
<label for="optionEmpresaPorSecot"> Empresa por Sector</label><br>
|
||||||
|
<input type="checkbox" id="optionAlumno" name="optalumno" value="OptAlumno">
|
||||||
|
<label for="optionAlumno">Alumno</label><br>
|
||||||
|
<input type="checkbox" id="optionOferta" name="optoferta" value="OptOferta">
|
||||||
|
<label for="optionOferta"> Oferta</label><br>
|
||||||
|
<input type="checkbox" id="optionSkill" name="optskill" value="OptSkill" disabled>
|
||||||
|
<label for="optionSkill"> Skill</label><br>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
<script>
|
||||||
|
window.onload = function() {
|
||||||
|
document.querySelector('form').reset();
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,51 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css" integrity="sha384-xOolHFLEh07PJGoPkLv1IbcEPTNtaed2xpHsD9ESMhqIYd0nLMwNLD69Npy4HI+N" crossorigin="anonymous">
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Title</title>
|
||||||
|
<style>
|
||||||
|
.keywords-cell {
|
||||||
|
max-width: 10px;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-Fy6S3B9q64WdZWQUiU+q4/2Lc9npb8tCaSX9FK7E8HnRr0Jz8D6OP9dO5Vg3Q9ct" crossorigin="anonymous"></script>
|
||||||
|
|
||||||
|
<div class="table">
|
||||||
|
<h1>Listado de Empresas</h1>
|
||||||
|
<table class ="table table-hover table-responsive-xl">
|
||||||
|
<thead class="thread-light">
|
||||||
|
<tr>
|
||||||
|
<th>Id</th>
|
||||||
|
<th>Nombre</th>
|
||||||
|
<th>Apellido 1</th>
|
||||||
|
<th>Apellido 2</th>
|
||||||
|
<th>Fecha Nacimiento</th>
|
||||||
|
<th>NIA</th>
|
||||||
|
<th>Keywords</th>
|
||||||
|
<th>Skills</th>
|
||||||
|
<th>Ciclo</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr th:each="alumno :${alumnos}">
|
||||||
|
<td>[[${alumno.id}]]</td>
|
||||||
|
<td>[[${alumno.nombre}]]</td>
|
||||||
|
<td>[[${alumno.apellido}]]</td>
|
||||||
|
<td>[[${alumno.apellido2}]]</td>
|
||||||
|
<td>[[${alumno.fechaNacimiento}]]</td>
|
||||||
|
<td>[[${alumno.genero}]]</td>
|
||||||
|
<td>[[${alumno.nia}]]</td>
|
||||||
|
<td class="keywords-cell" th:each="keyword : ${#strings.arraySplit(empresa.keywords, ',')}">[[${keyword}]]</td>
|
||||||
|
<td>[[${alumno.ciclo}]]</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,48 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css" integrity="sha384-xOolHFLEh07PJGoPkLv1IbcEPTNtaed2xpHsD9ESMhqIYd0nLMwNLD69Npy4HI+N" crossorigin="anonymous">
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Title</title>
|
||||||
|
<style>
|
||||||
|
.keywords-cell {
|
||||||
|
max-height: 50px; /* Adjust as needed */
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-Fy6S3B9q64WdZWQUiU+q4/2Lc9npb8tCaSX9FK7E8HnRr0Jz8D6OP9dO5Vg3Q9ct" crossorigin="anonymous"></script>
|
||||||
|
<div class="table">
|
||||||
|
<h1>Listado de Empresas</h1>
|
||||||
|
<table class ="table table-hover table-responsive-xl">
|
||||||
|
<thead class="thread-light">
|
||||||
|
<tr>
|
||||||
|
<th>Id</th>
|
||||||
|
<th>Nombre</th>
|
||||||
|
<th>Cif</th>
|
||||||
|
<th>Correo</th>
|
||||||
|
<th>Telefono</th>
|
||||||
|
<th class="keywords-cell">Keywords</th>
|
||||||
|
<th>Sector</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr th:each="empresa :${empresas}">
|
||||||
|
<td>[[${empresa.id}]]</td>
|
||||||
|
<td>[[${empresa.nombre}]]</td>
|
||||||
|
<td>[[${empresa.cif}]]</td>
|
||||||
|
<td>[[${empresa.correo}]]</td>
|
||||||
|
<td>[[${empresa.telefono}]]</td>
|
||||||
|
<td class="keywords-cell">
|
||||||
|
<div th:each="keyword : ${#strings.arraySplit(empresa.keywords, ',')}">[[${keyword}]]</div>
|
||||||
|
</td>
|
||||||
|
<td>[[${empresa.sector.nombre}]]</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Reference in new issue