mirror of
https://github.com/estruyf/vscode-front-matter.git
synced 2026-05-18 07:15:43 +02:00
#283 - Published date sorting
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
- [#276](https://github.com/estruyf/vscode-front-matter/issues/276): Add a Front Matter walkthrough for VS Code
|
||||
- [#270](https://github.com/estruyf/vscode-front-matter/issues/270): Only show media files from public folder if `pageBundle` is not enabled on any of the content types
|
||||
- [#282](https://github.com/estruyf/vscode-front-matter/issues/282): Insert relative paths for media files located in a page bundle (also sub-folders)
|
||||
- [#283](https://github.com/estruyf/vscode-front-matter/issues/283): Added published date sorting options for the content dashboard
|
||||
|
||||
### 🐞 Fixes
|
||||
|
||||
|
||||
@@ -18,6 +18,8 @@ export interface ISortingProps {
|
||||
}
|
||||
|
||||
export const sortOptions: SortingOption[] = [
|
||||
{ name: "Published (asc)", id: SortOption.PublishedAsc, order: SortOrder.asc, type: SortType.date },
|
||||
{ name: "Published (desc)", id: SortOption.PublishedDesc, order: SortOrder.desc, type: SortType.date },
|
||||
{ name: "Last modified (asc)", id: SortOption.LastModifiedAsc, order: SortOrder.asc, type: SortType.date },
|
||||
{ name: "Last modified (desc)", id: SortOption.LastModifiedDesc, order: SortOrder.desc, type: SortType.date },
|
||||
{ name: "By filename (asc)", id: SortOption.FileNameAsc, order: SortOrder.asc, type: SortType.string },
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
export enum SortOption {
|
||||
PublishedAsc = "PublishedAsc",
|
||||
PublishedDesc = "PublishedDesc",
|
||||
LastModifiedAsc = "LastModifiedAsc",
|
||||
LastModifiedDesc = "LastModifiedDesc",
|
||||
FileNameAsc = "FileNameAsc",
|
||||
|
||||
@@ -73,8 +73,12 @@ export default function usePages(pages: Page[]) {
|
||||
pagesSorted = pagesSorted.sort(Sorting.alphabetically("fmFileName"));
|
||||
} else if (sorting && sorting.id === SortOption.FileNameDesc) {
|
||||
pagesSorted = pagesSorted.sort(Sorting.alphabetically("fmFileName")).reverse();
|
||||
} else if (sorting && sorting.id === SortOption.PublishedAsc) {
|
||||
pagesSorted = pagesSorted.sort(Sorting.number("fmPublished"));
|
||||
} else if (sorting && sorting.id === SortOption.LastModifiedAsc) {
|
||||
pagesSorted = pagesSorted.sort(Sorting.number("fmModified"));
|
||||
} else if (sorting && sorting.id === SortOption.PublishedDesc) {
|
||||
pagesSorted = pagesSorted.sort(Sorting.number("fmPublished")).reverse();
|
||||
} else if (sorting && sorting.id === SortOption.LastModifiedDesc) {
|
||||
pagesSorted = pagesSorted.sort(Sorting.number("fmModified")).reverse();
|
||||
} else if (sorting && sorting.id && sorting.name) {
|
||||
|
||||
@@ -5,6 +5,7 @@ export interface Page {
|
||||
fmFilePath: string;
|
||||
fmFileName: string;
|
||||
fmModified: number;
|
||||
fmPublished: number | null | undefined;
|
||||
fmDraft: "Draft" | "Published",
|
||||
fmYear: number | null | undefined;
|
||||
fmPreviewImage: string;
|
||||
|
||||
@@ -215,7 +215,7 @@ export class ArticleHelper {
|
||||
const articleCt = ArticleHelper.getContentType(article.data);
|
||||
const modDateField = articleCt.fields.find(f => f.isModifiedDate);
|
||||
|
||||
return modDateField?.name || Settings.get(SETTING_MODIFIED_FIELD) as string || DefaultFields.PublishingDate;
|
||||
return modDateField?.name || Settings.get(SETTING_MODIFIED_FIELD) as string || DefaultFields.LastModified;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -139,18 +139,25 @@ export class PagesListener extends BaseListener {
|
||||
if (article?.data.title) {
|
||||
const wsFolder = Folders.getWorkspaceFolder();
|
||||
const descriptionField = Settings.get(SETTING_SEO_DESCRIPTION_FIELD) as string || DefaultFields.Description;
|
||||
|
||||
const dateField = ArticleHelper.getPublishDateField(article) || DefaultFields.PublishingDate;
|
||||
const dateFieldValue = article?.data[dateField] ? DateHelper.tryParse(article?.data[dateField]) : undefined;
|
||||
|
||||
const modifiedField = ArticleHelper.getModifiedDateField(article) || null;
|
||||
const modifiedFieldValue = modifiedField && article?.data[modifiedField] ? DateHelper.tryParse(article?.data[modifiedField])?.getTime() : undefined;
|
||||
|
||||
const staticFolder = Settings.get<string>(SETTING_CONTENT_STATIC_FOLDER);
|
||||
|
||||
const page: Page = {
|
||||
...article.data,
|
||||
// FrontMatter properties
|
||||
fmFolder: folderTitle,
|
||||
fmModified: fileMtime,
|
||||
fmFilePath: filePath,
|
||||
fmFileName: fileName,
|
||||
fmDraft: ContentType.getDraftStatus(article?.data),
|
||||
fmYear: article?.data[dateField] ? DateHelper.tryParse(article?.data[dateField])?.getFullYear() : null,
|
||||
fmModified: modifiedFieldValue ? modifiedFieldValue : fileMtime,
|
||||
fmPublished: dateFieldValue ? dateFieldValue.getTime() : null,
|
||||
fmYear: dateFieldValue ? dateFieldValue.getFullYear() : null,
|
||||
fmPreviewImage: "",
|
||||
fmTags: [],
|
||||
fmCategories: [],
|
||||
|
||||
Reference in New Issue
Block a user