Tighten seed filters
This commit is contained in:
@@ -26,6 +26,22 @@ public class DropdownApi {
|
||||
return apiClient.getObjectMapper().readValue(response, new TypeReference<List<DropdownOption>>() {});
|
||||
}
|
||||
|
||||
public List<DropdownOption> getProductCategories() throws Exception {
|
||||
String response = apiClient.getRawResponse("/api/v1/dropdowns/product-categories");
|
||||
if (response == null || response.isEmpty()) {
|
||||
throw new IllegalStateException("Empty response from product categories endpoint");
|
||||
}
|
||||
return apiClient.getObjectMapper().readValue(response, new TypeReference<List<DropdownOption>>() {});
|
||||
}
|
||||
|
||||
public List<DropdownOption> getPetSpecies() throws Exception {
|
||||
String response = apiClient.getRawResponse("/api/v1/dropdowns/pet-species");
|
||||
if (response == null || response.isEmpty()) {
|
||||
throw new IllegalStateException("Empty response from pet species endpoint");
|
||||
}
|
||||
return apiClient.getObjectMapper().readValue(response, new TypeReference<List<DropdownOption>>() {});
|
||||
}
|
||||
|
||||
public List<DropdownOption> getProducts() throws Exception {
|
||||
String response = apiClient.getRawResponse("/api/v1/dropdowns/products");
|
||||
if (response == null || response.isEmpty()) {
|
||||
|
||||
@@ -15,6 +15,8 @@ import javafx.scene.layout.StackPane;
|
||||
import javafx.stage.Modality;
|
||||
import javafx.stage.Stage;
|
||||
import org.example.petshopdesktop.api.dto.pet.PetResponse;
|
||||
import org.example.petshopdesktop.api.dto.common.DropdownOption;
|
||||
import org.example.petshopdesktop.api.endpoints.DropdownApi;
|
||||
import org.example.petshopdesktop.api.endpoints.PetApi;
|
||||
import org.example.petshopdesktop.controllers.dialogcontrollers.PetDialogController;
|
||||
import org.example.petshopdesktop.models.Pet;
|
||||
@@ -156,8 +158,7 @@ public class PetController {
|
||||
colPetPrice.setCellValueFactory(new PropertyValueFactory<Pet,Double>("petPrice"));
|
||||
configureImageColumn(colPetImage);
|
||||
|
||||
cbSpeciesFilter.setItems(FXCollections.observableArrayList("All Species", "Dog", "Cat", "Bird", "Fish", "Rabbit", "Hamster"));
|
||||
cbSpeciesFilter.getSelectionModel().selectFirst();
|
||||
loadSpeciesFilter();
|
||||
|
||||
cbStatusFilter.setItems(FXCollections.observableArrayList("All Statuses", "Available", "Adopted", "Pending"));
|
||||
cbStatusFilter.getSelectionModel().selectFirst();
|
||||
@@ -245,6 +246,26 @@ public class PetController {
|
||||
displayFilteredPet(txtSearch.getText());
|
||||
}
|
||||
|
||||
private void loadSpeciesFilter() {
|
||||
new Thread(() -> {
|
||||
try {
|
||||
List<String> values = DropdownApi.getInstance().getPetSpecies().stream()
|
||||
.map(DropdownOption::getLabel)
|
||||
.collect(Collectors.toList());
|
||||
values.add(0, "All Species");
|
||||
Platform.runLater(() -> {
|
||||
cbSpeciesFilter.setItems(FXCollections.observableArrayList(values));
|
||||
cbSpeciesFilter.getSelectionModel().selectFirst();
|
||||
});
|
||||
} catch (Exception e) {
|
||||
Platform.runLater(() -> ActivityLogger.getInstance().logException(
|
||||
"PetController.loadSpeciesFilter",
|
||||
e,
|
||||
"Loading species filter options"));
|
||||
}
|
||||
}).start();
|
||||
}
|
||||
|
||||
private String selectedSpecies() {
|
||||
String value = cbSpeciesFilter.getValue();
|
||||
return value == null || value.equals("All Species") ? null : value;
|
||||
|
||||
@@ -269,7 +269,7 @@ public class ProductController {
|
||||
all.setId(null);
|
||||
all.setLabel("All Categories");
|
||||
options.add(all);
|
||||
options.addAll(DropdownApi.getInstance().getCategories());
|
||||
options.addAll(DropdownApi.getInstance().getProductCategories());
|
||||
Platform.runLater(() -> {
|
||||
cbCategoryFilter.setItems(FXCollections.observableArrayList(options));
|
||||
cbCategoryFilter.getSelectionModel().selectFirst();
|
||||
|
||||
@@ -89,7 +89,7 @@ public class ProductDialogController {
|
||||
|
||||
//Set up combobox for selecting category
|
||||
try {
|
||||
List<DropdownOption> categories = DropdownApi.getInstance().getCategories();
|
||||
List<DropdownOption> categories = DropdownApi.getInstance().getProductCategories();
|
||||
if (categories != null) {
|
||||
ObservableList<DropdownOption> categoriesObs = FXCollections.observableArrayList(categories);
|
||||
cbProdCategory.setItems(categoriesObs);
|
||||
|
||||
Reference in New Issue
Block a user