feat: khi người dùng click vào nút Chi tiết hành trình thì sẽ dựa vào ngày của hệ thống mà chuyển đến Chặng đó
This commit is contained in:
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+5
-5
File diff suppressed because one or more lines are too long
+2
File diff suppressed because one or more lines are too long
-2
File diff suppressed because one or more lines are too long
-2
File diff suppressed because one or more lines are too long
-221
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
-5
File diff suppressed because one or more lines are too long
Vendored
+17
-2
@@ -6,8 +6,23 @@
|
|||||||
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
|
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
|
||||||
<script src="https://accounts.google.com/gsi/client" async defer></script>
|
<script src="https://accounts.google.com/gsi/client" async defer></script>
|
||||||
<title>Travel Planner</title>
|
<title>Travel Planner</title>
|
||||||
<script type="module" crossorigin src="/assets/index-FtyTkPzF.js"></script>
|
|
||||||
<link rel="stylesheet" crossorigin href="/assets/index-DQ8dDKht.css">
|
<!-- Open Graph Meta Tags for Social Media Sharing -->
|
||||||
|
<meta property="og:type" content="website" />
|
||||||
|
<meta property="og:url" content="https://yotrip.labz.io.vn" />
|
||||||
|
<meta property="og:title" content="Travel Planner - Lên kế hoạch chuyến đi của bạn" />
|
||||||
|
<meta property="og:description" content="Khám phá những hành trình tuyệt vời và chia sẻ khoảnh khắc đẹp với cộng đồng du lịch." />
|
||||||
|
<meta property="og:image" content="https://yotrip.labz.io.vn/background.avif" />
|
||||||
|
<meta property="og:image:width" content="1200" />
|
||||||
|
<meta property="og:image:height" content="630" />
|
||||||
|
|
||||||
|
<!-- Twitter Card Meta Tags -->
|
||||||
|
<meta name="twitter:card" content="summary_large_image" />
|
||||||
|
<meta name="twitter:title" content="Travel Planner - Lên kế hoạch chuyến đi của bạn" />
|
||||||
|
<meta name="twitter:description" content="Khám phá những hành trình tuyệt vời và chia sẻ khoảnh khắc đẹp với cộng đồng du lịch." />
|
||||||
|
<meta name="twitter:image" content="https://yotrip.labz.io.vn/background.avif" />
|
||||||
|
<script type="module" crossorigin src="/assets/index-BGRXypxd.js"></script>
|
||||||
|
<link rel="stylesheet" crossorigin href="/assets/index-CRk_hghu.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="root"></div>
|
<div id="root"></div>
|
||||||
|
|||||||
@@ -203,12 +203,14 @@ export const ItineraryTimeline = ({
|
|||||||
const allLocations = useMemo(() => legs.flatMap(l => l.locations), [legs]);
|
const allLocations = useMemo(() => legs.flatMap(l => l.locations), [legs]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
console.log("ItineraryTimeline: Legs updated", legs);
|
const storedLegId = sessionStorage.getItem('defaultExpandedLegId');
|
||||||
// Initialize first leg as expanded when legs change
|
if (storedLegId) {
|
||||||
if (legs.length > 0 && !expandedStageId) {
|
setExpandedStageId(storedLegId);
|
||||||
|
sessionStorage.removeItem('defaultExpandedLegId');
|
||||||
|
} else if (legs.length > 0 && !expandedStageId) {
|
||||||
setExpandedStageId(legs[0].id);
|
setExpandedStageId(legs[0].id);
|
||||||
}
|
}
|
||||||
}, [legs]);
|
}, [legs, expandedStageId]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div id="itinerary-timeline-print-zone" className="timeline-scroll-container itinerary-timeline-container">
|
<div id="itinerary-timeline-print-zone" className="timeline-scroll-container itinerary-timeline-container">
|
||||||
|
|||||||
@@ -109,6 +109,42 @@ export const MemberDashboard: React.FC<MemberDashboardProps> = ({
|
|||||||
const [shareStatus, setShareStatus] = useState<any | null>(null);
|
const [shareStatus, setShareStatus] = useState<any | null>(null);
|
||||||
const [loadingShare, setLoadingShare] = useState(false);
|
const [loadingShare, setLoadingShare] = useState(false);
|
||||||
|
|
||||||
|
const handleNavigateToItinerary = (tour: any) => {
|
||||||
|
let targetLegId = null;
|
||||||
|
|
||||||
|
if (tour?.legs && tour.legs.length > 0) {
|
||||||
|
const today = new Date();
|
||||||
|
today.setHours(0, 0, 0, 0);
|
||||||
|
|
||||||
|
for (const leg of tour.legs) {
|
||||||
|
const rawStart = leg.startDate || leg.plannedStart || leg.date;
|
||||||
|
const rawEnd = leg.endDate || leg.plannedEnd || leg.date;
|
||||||
|
|
||||||
|
if (rawStart) {
|
||||||
|
const startBound = new Date(rawStart);
|
||||||
|
startBound.setHours(0, 0, 0, 0);
|
||||||
|
|
||||||
|
const endBound = rawEnd ? new Date(rawEnd) : new Date(rawStart);
|
||||||
|
endBound.setHours(23, 59, 59, 999);
|
||||||
|
|
||||||
|
if (today >= startBound && today <= endBound) {
|
||||||
|
targetLegId = leg.id;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!targetLegId) {
|
||||||
|
targetLegId = tour.legs[0].id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (targetLegId) {
|
||||||
|
sessionStorage.setItem('defaultExpandedLegId', targetLegId);
|
||||||
|
}
|
||||||
|
onViewTour(tour.id, 'dashboard');
|
||||||
|
};
|
||||||
|
|
||||||
const handleOpenShareModal = async (tour: any) => {
|
const handleOpenShareModal = async (tour: any) => {
|
||||||
setSharingTour(tour);
|
setSharingTour(tour);
|
||||||
setShareStatus(null);
|
setShareStatus(null);
|
||||||
@@ -1460,7 +1496,7 @@ const renderInitialsAvatar = (name: string, sizeClass = 'w-10 h-10 text-sm') =>
|
|||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
onClick={() => onViewTour(tour.id, 'dashboard')}
|
onClick={() => handleNavigateToItinerary(tour)}
|
||||||
className="flex-1 py-2 px-2 bg-slate-900 hover:bg-slate-800 text-slate-850 hover:text-white rounded-xl text-xs font-bold transition-all border border-slate-800 hover:border-slate-700 flex items-center justify-center gap-1"
|
className="flex-1 py-2 px-2 bg-slate-900 hover:bg-slate-800 text-slate-850 hover:text-white rounded-xl text-xs font-bold transition-all border border-slate-800 hover:border-slate-700 flex items-center justify-center gap-1"
|
||||||
>
|
>
|
||||||
<span>Chi tiết hành trình</span>
|
<span>Chi tiết hành trình</span>
|
||||||
|
|||||||
Reference in New Issue
Block a user