"use client"; import "./RatingSection.scss"; import Image from "next/image"; import { useEffect, useState } from "react"; import { useRouter } from "next/navigation"; import SectionHeader from "@/entities/SectionHeader/SectionHeader"; import SearchForm from "@/features/SearchBar/SearchForm"; import arrow_down_icon from "./icons/arrow-down.svg"; import arrow_up_icon from "./icons/arrow-up.svg"; import like_icon from "./icons/like.svg"; import message_icon from "./icons/message.svg"; import { useRatingStore } from "./ratingSectionStore"; import { useShallow } from "zustand/react/shallow"; import Link from "next/link"; import { ROAD_TYPES, ROAD_TYPES_COLORS, } from "@/shared/variables/road-types"; import RoadType from "@/entities/RoadType/RoadType"; interface IRatingSectionProps { [key: string]: string; } const RatingSection: React.FC = ({ categories = "1,2,3,4,5,6", queryMap, queryRating, }: IRatingSectionProps) => { const [ratingSearch, setRatingSearch] = useState( queryRating || "" ); const router = useRouter(); const reports = useRatingStore(useShallow((state) => state.data)); const getReports = useRatingStore( useShallow((state) => state.getReports) ); useEffect(() => { getReports(ratingSearch); }, []); const handleSubmit: React.FormEventHandler< HTMLFormElement > = async (e) => { e.preventDefault(); const formData = new FormData(e.currentTarget); setRatingSearch(formData.get("rating-search") as string); router.push( `/?тип-дороги=${categories}${ queryMap ? `&поиск-на-карте=${queryMap}` : "" }${ratingSearch ? `&поиск-рейтинг=${ratingSearch}` : ""}`, { scroll: false, } ); getReports(ratingSearch); }; const sliceDate = (date: string) => { return `${date.slice(8, 10)}.${date.slice(5, 7)}.${date.slice( 0, 4 )}`; }; const sliceLocation = (location: string) => { if (location.length > 15) return `${location.slice(0, 15)}...`; return location; }; const sliceDescription = (description: string) => { if (description.length > 49) { return `${description.slice(0, 50)}...`; } return description; }; return (
setRatingSearch(e.target.value)} name="rating-search" placeholder="Введите адрес" value={ratingSearch} handleSubmit={handleSubmit} />
{reports.results.length !== 0 ? ( reports.results.map((report) => ( )) ) : ( )}
Дата Arrow Down Arrow Up
Адрес Статус Описание
Комментарии Arrow Down Arrow Up
Рейтинг Arrow Down Arrow Up
{sliceDate(report.created_at)} {sliceLocation(report.location[0].address)} {ROAD_TYPES[report.category]}

{sliceDescription(report.description)}

Message Icon {report.count_reviews}
Like Icon {report.total_likes}
Упс, адрес не найден
); }; export default RatingSection;