handle limit page dashboard & change header profile user & get data from api in page clinics & clinic item and doctor item

This commit is contained in:
Ehsan
2025-06-01 01:08:25 +03:30
parent 80c74361eb
commit e292176a61
45 changed files with 223 additions and 258 deletions
@@ -28,7 +28,7 @@ function AboutDcotor({ doctor, loading }) {
}
`}
>
{doctor.detail}
{doctor?.detail}
</p>
<Button
className="!text-[#F17732] md:!hidden !text-[14px] !font-light !p-2"
@@ -44,7 +44,7 @@ function AboutDcotor({ doctor, loading }) {
تخصص ها
</p>
<ul className="flex flex-col mt-[12px] sm:flex-row gap-y-[16px] items-start sm:items-center justify-start gap-4">
{doctor.specialties.map((item, idx) => (
{doctor?.specialties?.map((item, idx) => (
<li key={idx} className="flex items-center justify-start gap-1">
<span className="w-2 h-2 bg-[#F17732] rounded-full"></span>
<TextLoading loading={loading} width={70} height={18}>
@@ -8,7 +8,7 @@ function ProgressAll({ doctor, loading }) {
<CircularLoading loading={loading} width={120} height={120}>
<CircularProgress
variant="determinate"
value={doctor.total_user_satisfaction}
value={doctor?.total_user_satisfaction}
sx={{
"& .MuiCircularProgress-circle": {
stroke: "#05BA58",
@@ -28,7 +28,7 @@ function ProgressAll({ doctor, loading }) {
رضایت کاربران
</p>
<p className="text-[#3B3B3B]">
{numberToArStyle(doctor.total_user_satisfaction)}%
{numberToArStyle(doctor?.total_user_satisfaction)}%
</p>
</div>
</CircularLoading>
@@ -5,7 +5,6 @@ import LikeDI from "@/components/icons/LikeDI";
import ProgressDetail from "@/app/component/ProfressDetail";
import TextLoading from "@/app/component/loading/Text";
import CustomLoading from "@/app/component/loading/Custom";
import CircularLoading from "@/app/component/loading/Circular";
function Chart({ doctor, loading }) {
return (
@@ -18,10 +17,10 @@ function Chart({ doctor, loading }) {
<TextLoading loading={loading} width={130} height={20}>
<div className="flex items-center justify-start gap-2.5">
<p className="text-[#616161] text-[14px] font-medium">
امتیاز کلی کاربران: {doctor.overall_score} از 5
امتیاز کلی کاربران: {doctor?.overall_score} از 5
</p>
<p className="text-[#7E7E7E] text-[14px] font-normal">
(از مجموع {doctor.comments.length} نظر)
(از مجموع {doctor?.comments?.length} نظر)
</p>
</div>
</TextLoading>
@@ -41,13 +40,13 @@ function Chart({ doctor, loading }) {
<div className="flex p-1 gap-0.5 items-start justify-center">
<StarDI />
<p className="text-[#616161] text-[12px] md:text-[14px] font-normal">
امتیاز: {doctor.point}
امتیاز: {doctor?.point}
</p>
</div>
<div className="flex p-1 items-start gap-0.5">
<LikeDI />
<p className="text-[#616161] text-[12px] md:text-[14px] font-normal">
{doctor.satisfaction}% رضایت کاربران
{doctor?.satisfaction}% رضایت کاربران
</p>
</div>
</CustomLoading>
@@ -58,7 +57,7 @@ function Chart({ doctor, loading }) {
loading ? "lg:w-full" : "lg:w-fit"
}`}
>
{doctor.progress_detail.map((item, idx) => (
{doctor?.progress_detail?.map((item, idx) => (
<TextLoading width="full" key={idx} height={20} loading={loading}>
<ProgressDetail data={item} />
</TextLoading>
@@ -48,7 +48,7 @@ function ModalAnswer({ doctor }) {
}}
/>
<ul className="flex w-full lg:w-fit flex-col items-start justify-start gap-1.5">
{doctor.progress_detail.map((item, idx) => (
{doctor?.progress_detail?.map((item, idx) => (
<ProgressChange data={item} key={idx} />
))}
</ul>
@@ -59,7 +59,7 @@ function ModalAnswer({ doctor }) {
multiline={true}
title="نظر خود را بنویسید..."
/>
<Link href={`/booking/${doctor.id}`} className="!mr-auto">
<Link href={`/booking/${doctor?.id}`} className="!mr-auto">
<Button
variant="contained"
className="!py-2.5 !px-4 gap-1 !text-[14px] !font-medium !mt-[32px] !shadownon"
@@ -8,11 +8,11 @@ function Locations({ doctor, loading }) {
موقعیت مکانی{" "}
</p>
<ul className="flex w-full mt-[24px] flex-col justify-center items-start">
{doctor.locations.map((item, idx) => (
{doctor?.locations?.map((item, idx) => (
<CustomLoading key={idx} loading={loading} width="full" height={40}>
<li className="w-full">
<Item data={item} />
{doctor.locations.length > idx + 1 && (
{doctor?.locations.length > idx + 1 && (
<span className="w-full h-px bg-[#EFEFEF] block my-[12px] md:my-[14px] lg:my-[16px]"></span>
)}
</li>