From 2fe88b5c010589e3ae63ac894cade6ffd1918e67 Mon Sep 17 00:00:00 2001 From: Massimiliano De Luise <66636702+MDeLuise@users.noreply.github.com> Date: Sun, 10 Sep 2023 17:00:54 +0200 Subject: [PATCH] feature: sort plant alphabetically in homepage (#30) --- .../plantit/plant/PlantController.java | 3 ++- frontend/src/components/AddPlant.tsx | 18 +++++++++++++++--- frontend/src/components/Home.tsx | 2 +- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/backend/src/main/java/com/github/mdeluise/plantit/plant/PlantController.java b/backend/src/main/java/com/github/mdeluise/plantit/plant/PlantController.java index 30a0ca3a..3e8e4a13 100644 --- a/backend/src/main/java/com/github/mdeluise/plantit/plant/PlantController.java +++ b/backend/src/main/java/com/github/mdeluise/plantit/plant/PlantController.java @@ -34,7 +34,8 @@ public ResponseEntity> getAll(@RequestParam(defaultValue = "0", r @RequestParam(defaultValue = "id", required = false) String sortBy, @RequestParam(defaultValue = "DESC", required = false) Sort.Direction sortDir) { - final Pageable pageable = PageRequest.of(pageNo, pageSize, sortDir, sortBy); + final Sort ignoreCaseSort = Sort.by(new Sort.Order(sortDir, sortBy).ignoreCase()); + final Pageable pageable = PageRequest.of(pageNo, pageSize, ignoreCaseSort); final Page result = plantService.getAll(pageable); return ResponseEntity.ok(result.map(plantDTOConverter::convertToDTO)); } diff --git a/frontend/src/components/AddPlant.tsx b/frontend/src/components/AddPlant.tsx index e8d9b94e..d5271993 100644 --- a/frontend/src/components/AddPlant.tsx +++ b/frontend/src/components/AddPlant.tsx @@ -133,7 +133,11 @@ export default function AddPlant(props: { }) .then((res) => { props.setOpen(false); - props.plants.push(res); + let insertHere = props.plants.findIndex((pl) => { + return pl.personalName.toLowerCase() > res.personalName.toLowerCase(); + }); + insertHere = Math.max(0, insertHere); + props.plants.splice(insertHere, 0, res); props.entity!.id = res.botanicalInfo.id; setName(); cleanup(); @@ -167,7 +171,11 @@ export default function AddPlant(props: { .then((imgRes) => { props.setOpen(false); res.botanicalInfo.imageUrl = "/" + imgRes.data.id; - props.plants.push(res); + let insertHere = props.plants.findIndex((pl) => { + return pl.personalName.toLowerCase() > res.personalName.toLowerCase(); + }); + insertHere = Math.max(0, insertHere); + props.plants.splice(insertHere, 0, res); setName(); cleanup(); }) @@ -176,7 +184,11 @@ export default function AddPlant(props: { }); } else { props.setOpen(false); - props.plants.push(res); + let insertHere = props.plants.findIndex((pl) => { + return pl.personalName.toLowerCase() > res.personalName.toLowerCase(); + }); + insertHere = Math.max(0, insertHere); + props.plants.splice(insertHere, 0, res); setName(); cleanup(); } diff --git a/frontend/src/components/Home.tsx b/frontend/src/components/Home.tsx index 063270ce..b4b5ec42 100644 --- a/frontend/src/components/Home.tsx +++ b/frontend/src/components/Home.tsx @@ -192,7 +192,7 @@ export default function Home(props: { isLoggedIn: () => boolean, requestor: Axio }; const getEntities = (count: number): void => { - props.requestor.get(`plant?pageSize=${count}`) + props.requestor.get(`plant?sortBy=personalName&sortDir=ASC&pageSize=${count}`) .then((res) => { let newEntities: plant[] = []; res.data.content.forEach((en: plant) => {