Loading src/app/Admin/Experience/ExperienceListClient.tsx +12 −1 Original line number Diff line number Diff line Loading @@ -17,10 +17,19 @@ const getJobTitle = (translations?: ExperienceTranslation[]): string => { ); }; const getJobLinkText = (translations?: ExperienceTranslation[]): string => { if (!translations || translations.length === 0) return ''; return ( translations.find(t => t.language_code === 'fr')?.link_text || translations[0].link_text || '' ); }; export default function ExperienceListClient({ data }: ExperienceListClientProps) { const router = useRouter(); const Experiences = Array.isArray(data?.experiences) ? data.experiences : []; console.log("Experience", Experiences); const [selectedExperiences, setselectedExperiences] = useState<Record<number, boolean>>({}); const handleSelect = (id: number, checked: boolean) => { setselectedExperiences((prev) => ({ ...prev, [id]: checked })); Loading Loading @@ -100,6 +109,7 @@ export default function ExperienceListClient({ data }: ExperienceListClientProps <th></th> <th>ID</th> <th>Title</th> <th>Company</th> <th>Start Date</th> <th>End Date</th> <th>Edit</th> Loading @@ -118,6 +128,7 @@ export default function ExperienceListClient({ data }: ExperienceListClientProps </td> <td>{experience.id}</td> <td>{getJobTitle(experience.translations)}</td> <td>{getJobLinkText(experience.translations)}</td> <td>{experience.start_date ? new Date(experience.start_date).toISOString().split('T')[0] : ''}</td> <td>{experience.end_date ? new Date(experience.end_date).toISOString().split('T')[0] : ''}</td> <td> Loading src/app/Admin/Experience/edit/[id]/ExperienceEditPageClient.tsx +20 −3 Original line number Diff line number Diff line Loading @@ -41,7 +41,8 @@ export default function ExperienceEditPageClient({ data, enabledLanguage }: Expe language_code: t.language_code || "", job_title: t.job_title || "", job_description: t.job_description || "", job_place: t.job_place || "" job_place: t.job_place || "", link_text: t.link_text || "" }; }); } else if (data.translations && typeof data.translations === 'object') { Loading @@ -50,13 +51,14 @@ export default function ExperienceEditPageClient({ data, enabledLanguage }: Expe language_code: t.language_code || "", job_title: t.job_title || "", job_description: t.job_description || "", job_place: t.job_place || "" job_place: t.job_place || "", link_text: t.link_text || "" }; }); } enabledLanguageList.forEach((l) => { if (!initial[l.language_code]) { initial[l.language_code] = { language_code: "", job_title: "", job_description: "", job_place: "" }; initial[l.language_code] = { language_code: "", job_title: "", job_description: "", job_place: "", link_text: "" }; } }); return initial; Loading Loading @@ -263,6 +265,21 @@ export default function ExperienceEditPageClient({ data, enabledLanguage }: Expe }))} /> </div> <div className="mb-3"> <label htmlFor={`link_text-${lang.language_code}`} className="form-label">Company / Link text</label> <input id={`link_text-${lang.language_code}`} className="form-control" value={translations[lang.language_code]?.link_text || ""} onChange={e => setTranslations(prev => ({ ...prev, [lang.language_code]: { ...prev[lang.language_code], link_text: e.target.value } }))} /> </div> <div className="mb-3"> <label htmlFor={`job_place-${lang.language_code}`} className="form-label">Job Place</label> <input Loading src/app/Admin/Experience/edit/[id]/actions.tsx +4 −2 Original line number Diff line number Diff line Loading @@ -28,7 +28,8 @@ export async function saveExperience( language_code, job_title: t.job_title, job_description: t.job_description, job_place: t.job_place job_place: t.job_place, link_text: t.link_text })); const body = JSON.stringify({ Loading Loading @@ -68,7 +69,8 @@ export async function saveNewExperience( language_code, job_title: t.job_title, job_description: t.job_description, job_place: t.job_place job_place: t.job_place, link_text: t.link_text })); const body = JSON.stringify({ end_date: end_date ? formatDate(end_date) : null, Loading src/types/CustomTypes.ts +1 −0 Original line number Diff line number Diff line Loading @@ -69,6 +69,7 @@ export type ExperienceTranslation = { language_code: string; job_description: string; job_place: string; link_text: string; }; export type ExperienceTranslations = { Loading Loading
src/app/Admin/Experience/ExperienceListClient.tsx +12 −1 Original line number Diff line number Diff line Loading @@ -17,10 +17,19 @@ const getJobTitle = (translations?: ExperienceTranslation[]): string => { ); }; const getJobLinkText = (translations?: ExperienceTranslation[]): string => { if (!translations || translations.length === 0) return ''; return ( translations.find(t => t.language_code === 'fr')?.link_text || translations[0].link_text || '' ); }; export default function ExperienceListClient({ data }: ExperienceListClientProps) { const router = useRouter(); const Experiences = Array.isArray(data?.experiences) ? data.experiences : []; console.log("Experience", Experiences); const [selectedExperiences, setselectedExperiences] = useState<Record<number, boolean>>({}); const handleSelect = (id: number, checked: boolean) => { setselectedExperiences((prev) => ({ ...prev, [id]: checked })); Loading Loading @@ -100,6 +109,7 @@ export default function ExperienceListClient({ data }: ExperienceListClientProps <th></th> <th>ID</th> <th>Title</th> <th>Company</th> <th>Start Date</th> <th>End Date</th> <th>Edit</th> Loading @@ -118,6 +128,7 @@ export default function ExperienceListClient({ data }: ExperienceListClientProps </td> <td>{experience.id}</td> <td>{getJobTitle(experience.translations)}</td> <td>{getJobLinkText(experience.translations)}</td> <td>{experience.start_date ? new Date(experience.start_date).toISOString().split('T')[0] : ''}</td> <td>{experience.end_date ? new Date(experience.end_date).toISOString().split('T')[0] : ''}</td> <td> Loading
src/app/Admin/Experience/edit/[id]/ExperienceEditPageClient.tsx +20 −3 Original line number Diff line number Diff line Loading @@ -41,7 +41,8 @@ export default function ExperienceEditPageClient({ data, enabledLanguage }: Expe language_code: t.language_code || "", job_title: t.job_title || "", job_description: t.job_description || "", job_place: t.job_place || "" job_place: t.job_place || "", link_text: t.link_text || "" }; }); } else if (data.translations && typeof data.translations === 'object') { Loading @@ -50,13 +51,14 @@ export default function ExperienceEditPageClient({ data, enabledLanguage }: Expe language_code: t.language_code || "", job_title: t.job_title || "", job_description: t.job_description || "", job_place: t.job_place || "" job_place: t.job_place || "", link_text: t.link_text || "" }; }); } enabledLanguageList.forEach((l) => { if (!initial[l.language_code]) { initial[l.language_code] = { language_code: "", job_title: "", job_description: "", job_place: "" }; initial[l.language_code] = { language_code: "", job_title: "", job_description: "", job_place: "", link_text: "" }; } }); return initial; Loading Loading @@ -263,6 +265,21 @@ export default function ExperienceEditPageClient({ data, enabledLanguage }: Expe }))} /> </div> <div className="mb-3"> <label htmlFor={`link_text-${lang.language_code}`} className="form-label">Company / Link text</label> <input id={`link_text-${lang.language_code}`} className="form-control" value={translations[lang.language_code]?.link_text || ""} onChange={e => setTranslations(prev => ({ ...prev, [lang.language_code]: { ...prev[lang.language_code], link_text: e.target.value } }))} /> </div> <div className="mb-3"> <label htmlFor={`job_place-${lang.language_code}`} className="form-label">Job Place</label> <input Loading
src/app/Admin/Experience/edit/[id]/actions.tsx +4 −2 Original line number Diff line number Diff line Loading @@ -28,7 +28,8 @@ export async function saveExperience( language_code, job_title: t.job_title, job_description: t.job_description, job_place: t.job_place job_place: t.job_place, link_text: t.link_text })); const body = JSON.stringify({ Loading Loading @@ -68,7 +69,8 @@ export async function saveNewExperience( language_code, job_title: t.job_title, job_description: t.job_description, job_place: t.job_place job_place: t.job_place, link_text: t.link_text })); const body = JSON.stringify({ end_date: end_date ? formatDate(end_date) : null, Loading
src/types/CustomTypes.ts +1 −0 Original line number Diff line number Diff line Loading @@ -69,6 +69,7 @@ export type ExperienceTranslation = { language_code: string; job_description: string; job_place: string; link_text: string; }; export type ExperienceTranslations = { Loading