Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,16 @@
import javafx.beans.binding.DoubleBinding;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.collections.transformation.FilteredList;
import javafx.collections.transformation.SortedList;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TableCell;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.*;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.HBox;
import javafx.stage.Modality;
Expand All @@ -51,6 +50,14 @@ public class AnimalController implements Initializable {
@FXML
private TableColumn<Animal, Void> acaoColumn;

@FXML
private Label numberOfResults;

@FXML
private TextField filterField;

private FilteredList<Animal> filteredData;

private Cliente cliente; // Dono dos pets que serão exibidos na tabela

private ObservableList<Animal> petsList = FXCollections.observableArrayList();
Expand Down Expand Up @@ -228,27 +235,43 @@ private void abrirModalExcluir(Long animalId) {
}
}

public void inicializarTabela() {
petsList.clear();
petsList.addAll(cliente.getPets());
tableView.setItems(petsList);
private void configurarBuscaPets() {
filteredData = new FilteredList<>(petsList, p -> true);
filterField.textProperty().addListener((observable, oldValue, newValue) -> {
filteredData.setPredicate(animal -> {
if (newValue == null || newValue.isEmpty()) {
return true;
}
String lowerCaseFilter = newValue.toLowerCase();
boolean matchesNome = animal.getNome().toLowerCase().contains(lowerCaseFilter);
boolean matchesEspecie = animal.getEspecie().toString().toLowerCase().contains(lowerCaseFilter);

return matchesNome || matchesEspecie;
});

SortedList<Animal> sortedData = new SortedList<>(filteredData);
sortedData.comparatorProperty().bind(tableView.comparatorProperty());

tableView.setItems(sortedData);
numberOfResults.setText(filteredData.size() + " registro(s) retornado(s)");
});
}

public void voltarParaPaginaClientes() {
filterField.clear();
ScreenManagerHolder.getInstance().switchTo(ScreenEnum.CLIENTES);
}

public void setCliente(Cliente cliente) {
this.cliente = cliente;
atualizarTableView();
configurarBuscaPets();
}

public void atualizarTableView() {
// Limpa a lista atual
petsList.clear();
// Adiciona os pets atualizados
petsList.addAll(cliente.getPets());
// Força um refresh na TableView
tableView.refresh();
petsList.setAll(cliente.getPets());
tableView.setItems(petsList);
numberOfResults.setText(petsList.size() + " registro(s) retornado(s)");
}

public void handleSuccessfulOperation(String message) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,11 @@
import com.carvalhotechsolutions.mundoanimal.repositories.ClienteRepository;
import com.carvalhotechsolutions.mundoanimal.utils.FeedbackManager;
import com.carvalhotechsolutions.mundoanimal.utils.ScreenManagerHolder;
import de.jensd.fx.glyphs.fontawesome.FontAwesomeIcon;
import javafx.animation.FadeTransition;
import javafx.animation.PauseTransition;
import javafx.beans.binding.DoubleBinding;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.collections.transformation.FilteredList;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
Expand All @@ -25,10 +23,8 @@
import javafx.scene.control.*;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;
import javafx.stage.Modality;
import javafx.stage.Stage;
import javafx.util.Duration;

import java.io.IOException;
import java.net.URL;
Expand All @@ -53,10 +49,18 @@ public class ClienteController implements Initializable {
@FXML
private TableColumn<Cliente, Void> acaoColumn;

@FXML
private Label numberOfResults;

@FXML
private TextField filterField;

private ClienteRepository clienteRepository = new ClienteRepository();

private ObservableList<Cliente> clientesList = FXCollections.observableArrayList();

private FilteredList<Cliente> filteredData;

@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
tableView.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY_ALL_COLUMNS);
Expand All @@ -82,6 +86,7 @@ public void initialize(URL url, ResourceBundle resourceBundle) {

configurarColunaAcao();
atualizarTableView();
configurarBuscaClientes(); // apos atualizarTableView()
}

private void configurarColunaAcao() {
Expand Down Expand Up @@ -262,14 +267,33 @@ private void abrirPaginaVerPets(Cliente cliente) {
// Configurar o controlador do modal
AnimalController animalController = ScreenManagerHolder.getInstance().getAnimalController();
animalController.setCliente(cliente);
animalController.inicializarTabela();
animalController.atualizarTableView();

ScreenManagerHolder.getInstance().switchTo(ScreenEnum.PETS);
}

public void atualizarTableView() {
clientesList = FXCollections.observableArrayList(clienteRepository.findAll());
tableView.setItems(clientesList);
clientesList.setAll(clienteRepository.findAll());
numberOfResults.setText(clientesList.size() + " registro(s) retornado(s)");
}

private void configurarBuscaClientes() {
filteredData = new FilteredList<>(clientesList, p -> true);
filterField.textProperty().addListener((observable, oldValue, newValue) -> {
filteredData.setPredicate(cliente -> {
if (newValue == null || newValue.isEmpty()) {
return true;
}
String lowerCaseFilter = newValue.toLowerCase();
boolean matchesCliente = cliente.getNome().toLowerCase().contains(lowerCaseFilter) ||
cliente.getTelefone().toLowerCase().contains(lowerCaseFilter);
boolean matchesPet = cliente.getPets().stream()
.anyMatch(pet -> pet.getNome().toLowerCase().contains(lowerCaseFilter));
return matchesCliente || matchesPet;
});
numberOfResults.setText(filteredData.size() + " registro(s) retornado(s)");
});
tableView.setItems(filteredData);
}

public void handleSuccessfulOperation(String message) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,15 @@
import javafx.beans.binding.DoubleBinding;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.collections.transformation.FilteredList;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TableCell;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.*;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.HBox;
import javafx.stage.Modality;
Expand All @@ -33,6 +31,9 @@ public class SecretarioController implements Initializable {
@FXML
private HBox feedbackContainer;

@FXML
private Label numberOfResults;

@FXML
private TableView<Secretario> tableView;

Expand All @@ -45,9 +46,14 @@ public class SecretarioController implements Initializable {
@FXML
private TableColumn<Secretario, Void> acaoColumn; // Ação

@FXML
private TextField filterField;

private SecretarioRepository secretarioRepository = new SecretarioRepository();

private ObservableList<Secretario> secretariosList;
private ObservableList<Secretario> secretariosList = FXCollections.observableArrayList();

private FilteredList<Secretario> filteredData;


@Override
Expand All @@ -71,11 +77,12 @@ public void initialize(URL url, ResourceBundle resourceBundle) {

configurarColunaAcao();
atualizarTableView();
configurarBuscaSecretarios();
}

public void atualizarTableView() {
secretariosList = FXCollections.observableArrayList(secretarioRepository.findAll());
tableView.setItems(secretariosList);
secretariosList.setAll(secretarioRepository.findAll());
numberOfResults.setText(secretariosList.size() + " registro(s) retornado(s)");
}

private void configurarColunaAcao() {
Expand Down Expand Up @@ -201,6 +208,22 @@ private void abrirModalExcluir(Long secretarioId) {
}
}

private void configurarBuscaSecretarios() {
filteredData = new FilteredList<>(secretariosList, p -> true);
filterField.textProperty().addListener((observable, oldValue, newValue) -> {
filteredData.setPredicate(secretario -> {
if (newValue == null || newValue.isEmpty()) {
return true;
}
String lowerCaseFilter = newValue.toLowerCase();
return secretario.getNomeUsuario().toLowerCase().contains(lowerCaseFilter)
|| secretario.getTelefone().toLowerCase().contains(lowerCaseFilter);
});
numberOfResults.setText(filteredData.size() + " registro(s) retornado(s)");
});
tableView.setItems(filteredData);
}

public void handleSuccessfulOperation(String message) {
FeedbackManager.showFeedback(
feedbackContainer,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,15 @@
import javafx.beans.binding.DoubleBinding;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.collections.transformation.FilteredList;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TableCell;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.*;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.HBox;
import javafx.stage.Modality;
Expand All @@ -33,6 +31,9 @@ public class ServicoController implements Initializable {
@FXML
private HBox feedbackContainer;

@FXML
private Label numberOfResults;

@FXML
private TableView<Servico> tableView;

Expand All @@ -48,10 +49,15 @@ public class ServicoController implements Initializable {
@FXML
private TableColumn<Servico, Void> acaoColumn;

@FXML
private TextField filterField;

private ServicoRepository servicoRepository = new ServicoRepository();

private ObservableList<Servico> servicosList = FXCollections.observableArrayList();

private FilteredList<Servico> filteredData;

@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
tableView.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY_ALL_COLUMNS);
Expand All @@ -76,6 +82,7 @@ public void initialize(URL url, ResourceBundle resourceBundle) {
configurarColunaValor();
configurarColunaAcao();
atualizarTableView();
configurarBuscaServicos();
}

private void configurarColunaAcao() {
Expand Down Expand Up @@ -219,8 +226,30 @@ private void abrirModalExcluir(Long servicoId) {
}

public void atualizarTableView() {
servicosList = FXCollections.observableArrayList(servicoRepository.findAll());
tableView.setItems(servicosList);
servicosList.setAll(servicoRepository.findAll());
numberOfResults.setText(servicosList.size() + " registro(s) retornado(s)");
}

private void configurarBuscaServicos() {
filteredData = new FilteredList<>(servicosList, p -> true);
filterField.textProperty().addListener((observable, oldValue, newValue) -> {
filteredData.setPredicate(servico -> {
if (newValue == null || newValue.isEmpty()) {
return true; // Se o campo de busca estiver vazio, mostra todos os serviços
}
String lowerCaseFilter = newValue.toLowerCase();

// Verificando se o nome do serviço, descrição ou preço contém o termo de busca
boolean matchesNome = servico.getNomeServico().toLowerCase().contains(lowerCaseFilter);
boolean matchesDescricao = servico.getDescricao() != null && servico.getDescricao().toLowerCase().contains(lowerCaseFilter);
boolean matchesPreco = servico.getValorServico().toString().contains(newValue); // Comparando com o preço

// Retorna true se qualquer um dos campos for um match
return matchesNome || matchesDescricao || matchesPreco;
});
numberOfResults.setText(filteredData.size() + " registro(s) retornado(s)");
});
tableView.setItems(filteredData);
}

public void handleSuccessfulOperation(String message) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,19 @@ public class FeedbackManager {
private static final String POPUP_FXML = "/fxml/popup/feedback.fxml";

public enum FeedbackType {
SUCCESS("CHECK_CIRCLE", "#43b554"),
ERROR("TIMES_CIRCLE", "#FF6F6F"),
WARNING("EXCLAMATION_CIRCLE", "#FFA500"),
INFO("INFO_CIRCLE", "#686AFF");
SUCCESS("CHECK_CIRCLE", "#FFFFFF", "#43b554"),
ERROR("TIMES_CIRCLE", "#FFFFFF" ,"#FF6F6F"),
WARNING("EXCLAMATION_CIRCLE", "#FFFFFF" ,"#FFA500"),
INFO("INFO_CIRCLE", "#FFFFFF" ,"#686AFF");

private final String icon;
private final String color;
private final String backgroundColor;

FeedbackType(String icon, String color) {
FeedbackType(String icon, String color, String backgroundColor) {
this.icon = icon;
this.color = color;
this.backgroundColor = backgroundColor;
}
}

Expand All @@ -36,6 +38,7 @@ public static void showFeedback(HBox container, String message, FeedbackType typ

// Configurar o estilo do popup
popupContent.getStyleClass().add("popup");
popupContent.setStyle(String.format("-fx-background-color: %s;", type.backgroundColor));

// Encontrar e configurar os componentes
FontAwesomeIcon icon = (FontAwesomeIcon) popupContent.lookup("#icon");
Expand Down
Loading