This commit is contained in:
Lucàs
2023-05-20 16:20:01 +02:00
4 changed files with 62 additions and 42 deletions
+1 -1
View File
@@ -42,7 +42,7 @@ export default function MapComponent(props: any) {
<MapContainer <MapContainer
center={location} center={location}
zoom={13} zoom={13}
minZoom={8} minZoom={6}
zoomControl={false} zoomControl={false}
style={{ width: "100vw", height: "100vw" }} style={{ width: "100vw", height: "100vw" }}
> >
+32 -17
View File
@@ -6,10 +6,10 @@ import {
SliderThumb, SliderThumb,
SliderTrack, SliderTrack,
Tooltip, Tooltip,
} from '@chakra-ui/react'; } from "@chakra-ui/react";
import {Controller, ControllerProps} from 'react-hook-form'; import { Controller, ControllerProps } from "react-hook-form";
import {FaWalking} from 'react-icons/fa'; import { FaWalking } from "react-icons/fa";
type CustomSliderProps = { type CustomSliderProps = {
label: string; label: string;
@@ -19,7 +19,7 @@ type CustomSliderProps = {
showTooltipDistance: boolean; showTooltipDistance: boolean;
setShowTooltipDistance: React.Dispatch<React.SetStateAction<boolean>>; setShowTooltipDistance: React.Dispatch<React.SetStateAction<boolean>>;
name: string; name: string;
} & Omit<ControllerProps, 'render'>; } & Omit<ControllerProps, "render">;
export default function CustomSlider(props: CustomSliderProps) { export default function CustomSlider(props: CustomSliderProps) {
const { const {
@@ -35,30 +35,45 @@ export default function CustomSlider(props: CustomSliderProps) {
return ( return (
<> <>
<FormLabel as={'legend'} htmlFor={name}>{label}</FormLabel> <FormLabel as={"legend"} htmlFor={name}>
<Controller{...controllerProps} name={name} {label}
render={({field: {onChange}}) => ( </FormLabel>
<Slider aria-label={'distance'} min={20} max={250} <Controller
id={'distance'} color={'pink.500'} {...controllerProps}
name={name}
render={({ field: { onChange } }) => (
<Slider
aria-label={"distance"}
min={20}
max={100}
id={"distance"}
color={"pink.500"}
defaultValue={defaultValue} defaultValue={defaultValue}
onChange={v => { onChange={(v) => {
setSliderDistanceValue(v); setSliderDistanceValue(v);
onChange(v); onChange(v);
}} }}
onMouseEnter={() => setShowTooltipDistance(true)} onMouseEnter={() => setShowTooltipDistance(true)}
onMouseLeave={() => setShowTooltipDistance(false)}> onMouseLeave={() => setShowTooltipDistance(false)}
>
<SliderTrack> <SliderTrack>
<SliderFilledTrack bgColor={'purple.500'}/> <SliderFilledTrack bgColor={"purple.500"} />
</SliderTrack> </SliderTrack>
<Tooltip hasArrow bg="purple.500" color="white" <Tooltip
placement="top" isOpen={showTooltipDistance} hasArrow
label={`${sliderDistanceValue} km`}> bg="purple.500"
color="white"
placement="top"
isOpen={showTooltipDistance}
label={`${sliderDistanceValue} km`}
>
<SliderThumb boxSize={6}> <SliderThumb boxSize={6}>
<Box color={'purple.500'} as={FaWalking}/> <Box color={"purple.500"} as={FaWalking} />
</SliderThumb> </SliderThumb>
</Tooltip> </Tooltip>
</Slider> </Slider>
)}/> )}
/>
</> </>
); );
} }
+8 -3
View File
@@ -56,7 +56,7 @@ export default function Map() {
} = useQuery({ } = useQuery({
queryKey: ["listBars"], queryKey: ["listBars"],
refetchOnWindowFocus: false, refetchOnWindowFocus: false,
enabled: !isLoading && location[0] !== null, enabled: Boolean(loggedUser) && loggedUser.location.length > 0,
queryFn: async () => { queryFn: async () => {
///Utiliser api de noratim ///Utiliser api de noratim
@@ -64,11 +64,16 @@ export default function Map() {
"https://data.opendatasoft.com/api/v2/catalog/datasets/osm-fr-bars%40babel/exports/json?" "https://data.opendatasoft.com/api/v2/catalog/datasets/osm-fr-bars%40babel/exports/json?"
); );
const coordinates = location[1].toString() + " " + location[0].toString(); let coordinates;
if (location[0] === null || location[1] === null) {
const co = loggedUser.location.split(",");
coordinates = co[1].toString() + " " + co[0].toString();
} else
coordinates = location[1].toString() + " " + location[0].toString();
urlBars.searchParams.append( urlBars.searchParams.append(
"where", "where",
`distance(geo_point_2d,geom'POINT(${coordinates})',75km)` `distance(geo_point_2d,geom'POINT(${coordinates})',${loggedUser.distance}km)`
); );
urlBars.searchParams.append("limit", "-1"); urlBars.searchParams.append("limit", "-1");
urlBars.searchParams.append("offset", "0"); urlBars.searchParams.append("offset", "0");
+8 -8
View File
@@ -26,7 +26,7 @@ import CustomFalseEditable from "@/components/layout/profile/CustomFalseEditable
import CustomEditableArea from "@/components/layout/profile/CustomEditableArea"; import CustomEditableArea from "@/components/layout/profile/CustomEditableArea";
import CustomRadioGender from "@/components/layout/profile/CustomRadioGender"; import CustomRadioGender from "@/components/layout/profile/CustomRadioGender";
import CustomRangeSlider from "@/components/layout/profile/CustomRangeSlider"; import CustomRangeSlider from "@/components/layout/profile/CustomRangeSlider";
// import CustomSlider from "@/components/layout/user_profile/CustomSlider"; import CustomSlider from "@/components/layout/profile/CustomSlider";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import { useForm } from "react-hook-form"; import { useForm } from "react-hook-form";
@@ -42,8 +42,8 @@ export default function UserProfile() {
const [showTooltipAge, setShowTooltipAge] = useState(false); const [showTooltipAge, setShowTooltipAge] = useState(false);
const [sliderAgeValue, setSliderAgeValue] = useState([[] as number[]]); const [sliderAgeValue, setSliderAgeValue] = useState([[] as number[]]);
// const [showTooltipDistance, setShowTooltipDistance] = useState(false); const [showTooltipDistance, setShowTooltipDistance] = useState(false);
// const [sliderDistanceValue, setSliderDistanceValue] = useState<number>(0); const [sliderDistanceValue, setSliderDistanceValue] = useState<number>(0);
const { const {
handleSubmit, handleSubmit,
@@ -76,7 +76,7 @@ export default function UserProfile() {
const { user } = session as unknown as Session; const { user } = session as unknown as Session;
setSliderAgeValue([user.ageMin, user.ageMax]); setSliderAgeValue([user.ageMin, user.ageMax]);
// setSliderDistanceValue(user.distance); setSliderDistanceValue(user.distance);
return fetch(`/api/users/${user.id}`) return fetch(`/api/users/${user.id}`)
.then((res) => res.json()) .then((res) => res.json())
@@ -162,7 +162,7 @@ export default function UserProfile() {
}; };
return ( return (
<Box bgColor={"purple.50"}> <Box height={"100%"}>
<Container justifyContent={"center"} maxW={"70rem"} mt={"1rem"}> <Container justifyContent={"center"} maxW={"70rem"} mt={"1rem"}>
<Flex flexDirection={"column"} alignItems={"center"} gap={"1rem"}> <Flex flexDirection={"column"} alignItems={"center"} gap={"1rem"}>
<Box width={"50%"}> <Box width={"50%"}>
@@ -332,16 +332,16 @@ export default function UserProfile() {
sliderAgeValue={sliderAgeValue} sliderAgeValue={sliderAgeValue}
/> />
</Box> </Box>
{/* <CustomSlider <CustomSlider
control={control} control={control}
label={"Distance :"} label={"Distance des bars :"}
name={"distance"} name={"distance"}
defaultValue={userData.distance} defaultValue={userData.distance}
setSliderDistanceValue={setSliderDistanceValue} setSliderDistanceValue={setSliderDistanceValue}
setShowTooltipDistance={setShowTooltipDistance} setShowTooltipDistance={setShowTooltipDistance}
showTooltipDistance={showTooltipDistance} showTooltipDistance={showTooltipDistance}
sliderDistanceValue={sliderDistanceValue} sliderDistanceValue={sliderDistanceValue}
/> */} />
</Box> </Box>
<Divider colorScheme={"purple"} /> <Divider colorScheme={"purple"} />
<Center position={"sticky"} bottom={0} gap={"1rem"} my={"1rem"}> <Center position={"sticky"} bottom={0} gap={"1rem"} my={"1rem"}>