Files
nobat724_front/components/clinics/index.js
T
hamedandClaude Opus 4.8 d9dc976ab3 fix(pagination): read pagination from meta instead of page
backend جدید clinicpro صفحه‌بندی را در پاسخ تحت کلید meta برمی‌گرداند
({totalRecords, totalPages, currentPage})، نه page. به همین دلیل
PaginationContent مقدار totalRecords نمی‌گرفت و count=NaN می‌شد و
صفحه‌بندی مخفی می‌ماند. اصلاح در صفحات /doctors و /clinics.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 00:56:26 +03:30

64 lines
1.9 KiB
JavaScript

"use client";
import { useState } from "react";
import List from "./list";
import SearchBar from "./head/SearchBar";
import HeadPageList from "@/app/component/head";
import specialtiesData from "@/data/specialties.json";
import { useSearchParams } from "next/navigation";
// Data
import states from "@/data/state.json";
import cities from "@/data/city.json";
function ClinicsPage({ clinics, matchedCity, matchedState }) {
const searchParams = useSearchParams();
const [page, setPage] = useState(clinics?.meta?.currentPage || 1);
const [filteredClinics, setFilteredClinics] = useState(clinics?.data);
const selectedState = searchParams.get("state") || matchedState?.name;
const selectedCity =
searchParams.get("city") ||
(matchedCity?.name && matchedCity?.id !== "600"
? matchedCity?.name
: false);
const [selected, setSelected] = useState({
province:
selectedState && states.find((item) => item.name === selectedState),
city: selectedCity && cities.find((item) => item.name === selectedCity),
specialty: searchParams.get("specialty") || "",
});
return (
<div>
<HeadPageList
title="لیست کلینیک ها و درمانگاه های تخصصی"
detail="در قسمت زیر می توانید کلینیک مورد نظر خود را جستجو نمایید"
>
<SearchBar
limit={12}
setPage={setPage}
selected={selected}
state={matchedState}
setSelected={setSelected}
specialties={specialtiesData}
setFilteredClinics={setFilteredClinics}
/>
</HeadPageList>
<List
limit={12}
page={page}
setPage={setPage}
selected={selected}
clinics={filteredClinics}
pages={clinics?.meta || {}}
setFilteredClinics={setFilteredClinics}
/>
</div>
);
}
export default ClinicsPage;