mirror of
https://github.com/estruyf/vscode-front-matter.git
synced 2026-05-03 12:02:27 +02:00
39 lines
1.6 KiB
TypeScript
39 lines
1.6 KiB
TypeScript
import { SortOption } from '../dashboardWebView/constants/SortOption';
|
|
import { Page, SortingOption } from '../dashboardWebView/models';
|
|
import { Sorting } from '../helpers/Sorting';
|
|
import { SortOrder, SortType } from '../models';
|
|
|
|
export const sortPages = (pages: Page[], sorting: SortingOption | null) => {
|
|
if (sorting && sorting.id === SortOption.FileNameAsc) {
|
|
pages = pages.sort(Sorting.alphabetically('fmFileName'));
|
|
} else if (sorting && sorting.id === SortOption.FileNameDesc) {
|
|
pages = pages.sort(Sorting.alphabetically('fmFileName')).reverse();
|
|
} else if (sorting && sorting.id === SortOption.PublishedAsc) {
|
|
pages = pages.sort(Sorting.number('fmPublished'));
|
|
} else if (sorting && sorting.id === SortOption.LastModifiedAsc) {
|
|
pages = pages.sort(Sorting.number('fmModified'));
|
|
} else if (sorting && sorting.id === SortOption.PublishedDesc) {
|
|
pages = pages.sort(Sorting.number('fmPublished')).reverse();
|
|
} else if (sorting && sorting.id === SortOption.LastModifiedDesc) {
|
|
pages = pages.sort(Sorting.number('fmModified')).reverse();
|
|
} else if (sorting && sorting.id && sorting.name) {
|
|
const { order, name, type } = sorting;
|
|
|
|
if (type === SortType.string) {
|
|
pages = pages.sort(Sorting.alphabetically(name));
|
|
} else if (type === SortType.date) {
|
|
pages = pages.sort(Sorting.date(name));
|
|
} else if (type === SortType.number) {
|
|
pages = pages.sort(Sorting.number(name));
|
|
}
|
|
|
|
if (order === SortOrder.desc) {
|
|
pages = pages.reverse();
|
|
}
|
|
} else {
|
|
pages = pages.sort(Sorting.number('fmModified')).reverse();
|
|
}
|
|
|
|
return pages;
|
|
};
|