feat(dashboard): add last updated at course sort option (#823)
Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Rotimi Best <rotimi-best@users.noreply.github.com>
This commit is contained in:
co-authored by
Cursor Agent
Rotimi Best
parent
753f9b3d7b
commit
9b9dccc07a
@@ -19,6 +19,7 @@ export const EXERCISE_TEMPLATE_TAGS = {
|
|||||||
/** Named sort keys for course lists (URL `sort`, localStorage, filter UI). */
|
/** Named sort keys for course lists (URL `sort`, localStorage, filter UI). */
|
||||||
export const CourseSortBy = {
|
export const CourseSortBy = {
|
||||||
DateCreated: 'date_created',
|
DateCreated: 'date_created',
|
||||||
|
LastUpdatedAt: 'last_updated_at',
|
||||||
Published: 'published',
|
Published: 'published',
|
||||||
Lessons: 'lessons'
|
Lessons: 'lessons'
|
||||||
} as const;
|
} as const;
|
||||||
@@ -68,6 +69,7 @@ export function parseCourseSortOrder(value: string | null | undefined): CourseSo
|
|||||||
|
|
||||||
export const COURSE_SORT_OPTIONS = [
|
export const COURSE_SORT_OPTIONS = [
|
||||||
{ value: CourseSortBy.DateCreated, label: 'courses.course_filter.date_created' },
|
{ value: CourseSortBy.DateCreated, label: 'courses.course_filter.date_created' },
|
||||||
|
{ value: CourseSortBy.LastUpdatedAt, label: 'courses.course_filter.last_updated_at' },
|
||||||
{ value: CourseSortBy.Published, label: 'courses.course_filter.published' },
|
{ value: CourseSortBy.Published, label: 'courses.course_filter.published' },
|
||||||
{ value: CourseSortBy.Lessons, label: 'courses.course_filter.lessons' }
|
{ value: CourseSortBy.Lessons, label: 'courses.course_filter.lessons' }
|
||||||
] as const;
|
] as const;
|
||||||
|
|||||||
@@ -39,6 +39,13 @@
|
|||||||
return coursesFiltered.sort(
|
return coursesFiltered.sort(
|
||||||
(a, b) => new Date(a.createdAt ?? '').getTime() - new Date(b.createdAt ?? '').getTime()
|
(a, b) => new Date(a.createdAt ?? '').getTime() - new Date(b.createdAt ?? '').getTime()
|
||||||
);
|
);
|
||||||
|
} else if (sortKey === CourseSortBy.LastUpdatedAt) {
|
||||||
|
return coursesFiltered.sort((a, b) => {
|
||||||
|
const aUpdatedAt = new Date(a.updatedAt ?? a.createdAt ?? '').getTime();
|
||||||
|
const bUpdatedAt = new Date(b.updatedAt ?? b.createdAt ?? '').getTime();
|
||||||
|
|
||||||
|
return bUpdatedAt - aUpdatedAt;
|
||||||
|
});
|
||||||
} else if (sortKey === CourseSortBy.Published) {
|
} else if (sortKey === CourseSortBy.Published) {
|
||||||
return coursesFiltered.sort((a, b) => Number(b.isPublished) - Number(a.isPublished));
|
return coursesFiltered.sort((a, b) => Number(b.isPublished) - Number(a.isPublished));
|
||||||
} else if (sortKey === CourseSortBy.Lessons) {
|
} else if (sortKey === CourseSortBy.Lessons) {
|
||||||
|
|||||||
@@ -2613,6 +2613,7 @@
|
|||||||
"most_lessons": "Lektioner: Flest først",
|
"most_lessons": "Lektioner: Flest først",
|
||||||
"fewest_lessons": "Lektioner: Færrest først",
|
"fewest_lessons": "Lektioner: Færrest først",
|
||||||
"date_created": "Dato oprettet",
|
"date_created": "Dato oprettet",
|
||||||
|
"last_updated_at": "Sidst opdateret",
|
||||||
"published": "Udgivet",
|
"published": "Udgivet",
|
||||||
"lessons": "Lektioner"
|
"lessons": "Lektioner"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -2613,6 +2613,7 @@
|
|||||||
"most_lessons": "Lektionen: Meiste zuerst",
|
"most_lessons": "Lektionen: Meiste zuerst",
|
||||||
"fewest_lessons": "Lektionen: Wenigste zuerst",
|
"fewest_lessons": "Lektionen: Wenigste zuerst",
|
||||||
"date_created": "Erstellungsdatum",
|
"date_created": "Erstellungsdatum",
|
||||||
|
"last_updated_at": "Zuletzt aktualisiert",
|
||||||
"published": "Veröffentlicht",
|
"published": "Veröffentlicht",
|
||||||
"lessons": "Lektionen"
|
"lessons": "Lektionen"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1861,6 +1861,7 @@
|
|||||||
"most_lessons": "Lessons: Most first",
|
"most_lessons": "Lessons: Most first",
|
||||||
"fewest_lessons": "Lessons: Fewest first",
|
"fewest_lessons": "Lessons: Fewest first",
|
||||||
"date_created": "Date Created",
|
"date_created": "Date Created",
|
||||||
|
"last_updated_at": "Last Updated At",
|
||||||
"published": "Published",
|
"published": "Published",
|
||||||
"lessons": "Lessons"
|
"lessons": "Lessons"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -2613,6 +2613,7 @@
|
|||||||
"most_lessons": "Lecciones: más primero",
|
"most_lessons": "Lecciones: más primero",
|
||||||
"fewest_lessons": "Lecciones: menos primero",
|
"fewest_lessons": "Lecciones: menos primero",
|
||||||
"date_created": "Fecha de creación",
|
"date_created": "Fecha de creación",
|
||||||
|
"last_updated_at": "Última actualización",
|
||||||
"published": "Publicado",
|
"published": "Publicado",
|
||||||
"lessons": "Lecciones"
|
"lessons": "Lecciones"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -2613,6 +2613,7 @@
|
|||||||
"most_lessons": "Leçons : plus d'abord",
|
"most_lessons": "Leçons : plus d'abord",
|
||||||
"fewest_lessons": "Leçons : moins d'abord",
|
"fewest_lessons": "Leçons : moins d'abord",
|
||||||
"date_created": "Date de création",
|
"date_created": "Date de création",
|
||||||
|
"last_updated_at": "Dernière mise à jour",
|
||||||
"published": "Publié",
|
"published": "Publié",
|
||||||
"lessons": "Leçons"
|
"lessons": "Leçons"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -2613,6 +2613,7 @@
|
|||||||
"most_lessons": "पाठ: सबसे अधिक पहले",
|
"most_lessons": "पाठ: सबसे अधिक पहले",
|
||||||
"fewest_lessons": "पाठ: सबसे कम पहले",
|
"fewest_lessons": "पाठ: सबसे कम पहले",
|
||||||
"date_created": "दिनांक निर्मित",
|
"date_created": "दिनांक निर्मित",
|
||||||
|
"last_updated_at": "अंतिम अपडेट",
|
||||||
"published": "प्रकाशित",
|
"published": "प्रकाशित",
|
||||||
"lessons": "सबक"
|
"lessons": "सबक"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -2613,6 +2613,7 @@
|
|||||||
"most_lessons": "Lekcje: od największej liczby",
|
"most_lessons": "Lekcje: od największej liczby",
|
||||||
"fewest_lessons": "Lekcje: od najmniejszej liczby",
|
"fewest_lessons": "Lekcje: od najmniejszej liczby",
|
||||||
"date_created": "Data utworzenia",
|
"date_created": "Data utworzenia",
|
||||||
|
"last_updated_at": "Ostatnia aktualizacja",
|
||||||
"published": "Opublikowano",
|
"published": "Opublikowano",
|
||||||
"lessons": "Lekcje"
|
"lessons": "Lekcje"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -2613,6 +2613,7 @@
|
|||||||
"most_lessons": "Lições: mais primeiro",
|
"most_lessons": "Lições: mais primeiro",
|
||||||
"fewest_lessons": "Lições: menos primeiro",
|
"fewest_lessons": "Lições: menos primeiro",
|
||||||
"date_created": "Data de criação",
|
"date_created": "Data de criação",
|
||||||
|
"last_updated_at": "Última atualização",
|
||||||
"published": "Publicado",
|
"published": "Publicado",
|
||||||
"lessons": "Lições"
|
"lessons": "Lições"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -2613,6 +2613,7 @@
|
|||||||
"most_lessons": "Уроки: сначала больше",
|
"most_lessons": "Уроки: сначала больше",
|
||||||
"fewest_lessons": "Уроки: сначала меньше",
|
"fewest_lessons": "Уроки: сначала меньше",
|
||||||
"date_created": "Дата создания",
|
"date_created": "Дата создания",
|
||||||
|
"last_updated_at": "Последнее обновление",
|
||||||
"published": "Опубликовано",
|
"published": "Опубликовано",
|
||||||
"lessons": "Уроки"
|
"lessons": "Уроки"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -2613,6 +2613,7 @@
|
|||||||
"most_lessons": "Bài học: Nhiều nhất trước",
|
"most_lessons": "Bài học: Nhiều nhất trước",
|
||||||
"fewest_lessons": "Bài học: Ít nhất trước",
|
"fewest_lessons": "Bài học: Ít nhất trước",
|
||||||
"date_created": "Ngày tạo",
|
"date_created": "Ngày tạo",
|
||||||
|
"last_updated_at": "Cập nhật lần cuối",
|
||||||
"published": "Đã xuất bản",
|
"published": "Đã xuất bản",
|
||||||
"lessons": "Bài học"
|
"lessons": "Bài học"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -156,6 +156,13 @@
|
|||||||
? new Date(a.createdAt ?? '').getTime() - new Date(b.createdAt ?? '').getTime()
|
? new Date(a.createdAt ?? '').getTime() - new Date(b.createdAt ?? '').getTime()
|
||||||
: new Date(b.createdAt ?? '').getTime() - new Date(a.createdAt ?? '').getTime()
|
: new Date(b.createdAt ?? '').getTime() - new Date(a.createdAt ?? '').getTime()
|
||||||
);
|
);
|
||||||
|
} else if (sortKey === CourseSortBy.LastUpdatedAt) {
|
||||||
|
return sortedCourses.sort((a, b) => {
|
||||||
|
const aUpdatedAt = new Date(a.updatedAt ?? a.createdAt ?? '').getTime();
|
||||||
|
const bUpdatedAt = new Date(b.updatedAt ?? b.createdAt ?? '').getTime();
|
||||||
|
|
||||||
|
return selectedOrder === CourseSortOrder.Asc ? aUpdatedAt - bUpdatedAt : bUpdatedAt - aUpdatedAt;
|
||||||
|
});
|
||||||
} else if (sortKey === CourseSortBy.Published) {
|
} else if (sortKey === CourseSortBy.Published) {
|
||||||
return sortedCourses.sort((a, b) =>
|
return sortedCourses.sort((a, b) =>
|
||||||
selectedOrder === CourseSortOrder.Asc
|
selectedOrder === CourseSortOrder.Asc
|
||||||
|
|||||||
Reference in New Issue
Block a user