#72 - Advanced sorting by creation date doesn't work correctly
- bug fixed, the behavior of `< advanced created` sorting method corrected - new unit tests to cover the scenario
This commit is contained in:
parent
6298c08581
commit
aa31bee80c
|
@ -107,9 +107,9 @@ Lines starting with `//` are ignored
|
||||||
For extremely large vaults use with caution, as the sorting needs to scan all files inside a folder to determine the folder's modified date
|
For extremely large vaults use with caution, as the sorting needs to scan all files inside a folder to determine the folder's modified date
|
||||||
- `> advanced modified` - by modified time reverse, the most recently modified item goes first. For folders, their modification date is derived from the most recently modified direct child file.
|
- `> advanced modified` - by modified time reverse, the most recently modified item goes first. For folders, their modification date is derived from the most recently modified direct child file.
|
||||||
For extremely large vaults use with caution, as the sorting needs to scan all files inside a folder to determine the folder's modified date
|
For extremely large vaults use with caution, as the sorting needs to scan all files inside a folder to determine the folder's modified date
|
||||||
- `< advanced created` - by created time, the oldest item goes first. For folders, their creation date is derived from the oldest direct child file.
|
- `< advanced created` - by created time, the oldest item goes first. For folders, their creation date is derived from the oldest (ctime) direct child file.
|
||||||
For extremely large vaults use with caution, as the sorting needs to scan all files inside a folder to determine the folder's created date
|
For extremely large vaults use with caution, as the sorting needs to scan all files inside a folder to determine the folder's created date
|
||||||
- `> advanced created` - by created time reverse, the newest item goes first. For folders, their creation date is derived from the newest direct child file.
|
- `> advanced created` - by created time reverse, the newest item goes first. For folders, their creation date is derived from the oldest (ctime) direct child file.
|
||||||
For extremely large vaults use with caution, as the sorting needs to scan all files inside a folder to determine the folder's created date
|
For extremely large vaults use with caution, as the sorting needs to scan all files inside a folder to determine the folder's created date
|
||||||
|
|
||||||
#### At group level only (aka secondary sorting rule)
|
#### At group level only (aka secondary sorting rule)
|
||||||
|
|
|
@ -79,15 +79,14 @@ describe('determineSortingGroup', () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
// when
|
// when
|
||||||
const result = determineSortingGroup(file, sortSpec)
|
const result: FolderItemForSorting = determineSortingGroup(file, sortSpec)
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(result).toEqual({
|
expect(result).toEqual({
|
||||||
groupIdx: 0,
|
groupIdx: 0,
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "References.md",
|
sortString: "References.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/References.md'
|
path: 'Some parent folder/References.md'
|
||||||
});
|
});
|
||||||
|
@ -105,15 +104,14 @@ describe('determineSortingGroup', () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
// when
|
// when
|
||||||
const result = determineSortingGroup(file, sortSpec)
|
const result: FolderItemForSorting = determineSortingGroup(file, sortSpec)
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(result).toEqual({
|
expect(result).toEqual({
|
||||||
groupIdx: 1, // This indicates the last+1 idx (no match)
|
groupIdx: 1, // This indicates the last+1 idx (no match)
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "References.md",
|
sortString: "References.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 555,
|
ctime: MOCK_TIMESTAMP + 555,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 555,
|
|
||||||
mtime: MOCK_TIMESTAMP + 666,
|
mtime: MOCK_TIMESTAMP + 666,
|
||||||
path: 'Some parent folder/References.md'
|
path: 'Some parent folder/References.md'
|
||||||
});
|
});
|
||||||
|
@ -140,8 +138,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 1, // This indicates the last+1 idx (no match)
|
groupIdx: 1, // This indicates the last+1 idx (no match)
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "Part123:-icle.md",
|
sortString: "Part123:-icle.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 555,
|
ctime: MOCK_TIMESTAMP + 555,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 555,
|
|
||||||
mtime: MOCK_TIMESTAMP + 666,
|
mtime: MOCK_TIMESTAMP + 666,
|
||||||
path: 'Some parent folder/Part123:-icle.md'
|
path: 'Some parent folder/Part123:-icle.md'
|
||||||
});
|
});
|
||||||
|
@ -169,8 +166,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 1, // This indicates the last+1 idx
|
groupIdx: 1, // This indicates the last+1 idx
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "Part123:-icle.md",
|
sortString: "Part123:-icle.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 555,
|
ctime: MOCK_TIMESTAMP + 555,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 555,
|
|
||||||
mtime: MOCK_TIMESTAMP + 666,
|
mtime: MOCK_TIMESTAMP + 666,
|
||||||
path: 'Some parent folder/Part123:-icle.md'
|
path: 'Some parent folder/Part123:-icle.md'
|
||||||
});
|
});
|
||||||
|
@ -198,8 +194,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 0, // Matched!
|
groupIdx: 0, // Matched!
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "Part123:-icle.md",
|
sortString: "Part123:-icle.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 555,
|
ctime: MOCK_TIMESTAMP + 555,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 555,
|
|
||||||
mtime: MOCK_TIMESTAMP + 666,
|
mtime: MOCK_TIMESTAMP + 666,
|
||||||
path: 'Some parent folder/Part123:-icle.md'
|
path: 'Some parent folder/Part123:-icle.md'
|
||||||
});
|
});
|
||||||
|
@ -228,8 +223,7 @@ describe('determineSortingGroup', () => {
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "00000123////Part123:-icle.md",
|
sortString: "00000123////Part123:-icle.md",
|
||||||
matchGroup: '00000123//',
|
matchGroup: '00000123//',
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 555,
|
ctime: MOCK_TIMESTAMP + 555,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 555,
|
|
||||||
mtime: MOCK_TIMESTAMP + 666,
|
mtime: MOCK_TIMESTAMP + 666,
|
||||||
path: 'Some parent folder/Part123:-icle.md'
|
path: 'Some parent folder/Part123:-icle.md'
|
||||||
});
|
});
|
||||||
|
@ -257,8 +251,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 1, // This indicates the last+1 idx
|
groupIdx: 1, // This indicates the last+1 idx
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "Part:123-icle.md",
|
sortString: "Part:123-icle.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 555,
|
ctime: MOCK_TIMESTAMP + 555,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 555,
|
|
||||||
mtime: MOCK_TIMESTAMP + 666,
|
mtime: MOCK_TIMESTAMP + 666,
|
||||||
path: 'Some parent folder/Part:123-icle.md'
|
path: 'Some parent folder/Part:123-icle.md'
|
||||||
});
|
});
|
||||||
|
@ -287,8 +280,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 0, // Matched!
|
groupIdx: 0, // Matched!
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "Part:123-icle.md",
|
sortString: "Part:123-icle.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 555,
|
ctime: MOCK_TIMESTAMP + 555,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 555,
|
|
||||||
mtime: MOCK_TIMESTAMP + 666,
|
mtime: MOCK_TIMESTAMP + 666,
|
||||||
path: 'Some parent folder/Part:123-icle.md'
|
path: 'Some parent folder/Part:123-icle.md'
|
||||||
});
|
});
|
||||||
|
@ -319,8 +311,7 @@ describe('determineSortingGroup', () => {
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "00000001|00000023////Part:1 1-23.456-icle.md",
|
sortString: "00000001|00000023////Part:1 1-23.456-icle.md",
|
||||||
matchGroup: '00000001|00000023//',
|
matchGroup: '00000001|00000023//',
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 555,
|
ctime: MOCK_TIMESTAMP + 555,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 555,
|
|
||||||
mtime: MOCK_TIMESTAMP + 666,
|
mtime: MOCK_TIMESTAMP + 666,
|
||||||
path: 'Some parent folder/Part:1 1-23.456-icle.md'
|
path: 'Some parent folder/Part:1 1-23.456-icle.md'
|
||||||
});
|
});
|
||||||
|
@ -349,8 +340,7 @@ describe('determineSortingGroup', () => {
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "00000123////Part:123-icle.md",
|
sortString: "00000123////Part:123-icle.md",
|
||||||
matchGroup: '00000123//',
|
matchGroup: '00000123//',
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 555,
|
ctime: MOCK_TIMESTAMP + 555,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 555,
|
|
||||||
mtime: MOCK_TIMESTAMP + 666,
|
mtime: MOCK_TIMESTAMP + 666,
|
||||||
path: 'Some parent folder/Part:123-icle.md'
|
path: 'Some parent folder/Part:123-icle.md'
|
||||||
});
|
});
|
||||||
|
@ -376,8 +366,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 0,
|
groupIdx: 0,
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "References.md",
|
sortString: "References.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/References.md'
|
path: 'Some parent folder/References.md'
|
||||||
});
|
});
|
||||||
|
@ -403,8 +392,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 0,
|
groupIdx: 0,
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "Ref2erences.md",
|
sortString: "Ref2erences.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/Ref2erences.md'
|
path: 'Some parent folder/Ref2erences.md'
|
||||||
});
|
});
|
||||||
|
@ -432,8 +420,7 @@ describe('determineSortingGroup', () => {
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: '00000001|00000030|00000006|00001900////Reference i.xxx.vi.mcm.md',
|
sortString: '00000001|00000030|00000006|00001900////Reference i.xxx.vi.mcm.md',
|
||||||
matchGroup: "00000001|00000030|00000006|00001900//",
|
matchGroup: "00000001|00000030|00000006|00001900//",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/Reference i.xxx.vi.mcm.md'
|
path: 'Some parent folder/Reference i.xxx.vi.mcm.md'
|
||||||
});
|
});
|
||||||
|
@ -456,8 +443,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 1, // This indicates the last+1 idx
|
groupIdx: 1, // This indicates the last+1 idx
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "References.md",
|
sortString: "References.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/References.md'
|
path: 'Some parent folder/References.md'
|
||||||
});
|
});
|
||||||
|
@ -483,8 +469,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 0,
|
groupIdx: 0,
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "References.md",
|
sortString: "References.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/References.md'
|
path: 'Some parent folder/References.md'
|
||||||
});
|
});
|
||||||
|
@ -510,8 +495,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 0,
|
groupIdx: 0,
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "References 12.md",
|
sortString: "References 12.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/References 12.md'
|
path: 'Some parent folder/References 12.md'
|
||||||
});
|
});
|
||||||
|
@ -539,8 +523,7 @@ describe('determineSortingGroup', () => {
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: '00000001|00000030|00000006|00001900////Reference i.xxx.vi.mcm.md',
|
sortString: '00000001|00000030|00000006|00001900////Reference i.xxx.vi.mcm.md',
|
||||||
matchGroup: "00000001|00000030|00000006|00001900//",
|
matchGroup: "00000001|00000030|00000006|00001900//",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/Reference i.xxx.vi.mcm.md'
|
path: 'Some parent folder/Reference i.xxx.vi.mcm.md'
|
||||||
});
|
});
|
||||||
|
@ -563,8 +546,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 1, // This indicates the last+1 idx
|
groupIdx: 1, // This indicates the last+1 idx
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "References.md",
|
sortString: "References.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/References.md'
|
path: 'Some parent folder/References.md'
|
||||||
});
|
});
|
||||||
|
@ -589,8 +571,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 1, // This indicates the last+1 idx
|
groupIdx: 1, // This indicates the last+1 idx
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "References.md",
|
sortString: "References.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/References.md'
|
path: 'Some parent folder/References.md'
|
||||||
});
|
});
|
||||||
|
@ -616,8 +597,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 0,
|
groupIdx: 0,
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "References.md",
|
sortString: "References.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/References.md'
|
path: 'Some parent folder/References.md'
|
||||||
});
|
});
|
||||||
|
@ -643,8 +623,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 0,
|
groupIdx: 0,
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "References 12.md",
|
sortString: "References 12.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/References 12.md'
|
path: 'Some parent folder/References 12.md'
|
||||||
});
|
});
|
||||||
|
@ -672,8 +651,7 @@ describe('determineSortingGroup', () => {
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: '00000001|00000030|00000006|00001900////Reference i.xxx.vi.mcm.md',
|
sortString: '00000001|00000030|00000006|00001900////Reference i.xxx.vi.mcm.md',
|
||||||
matchGroup: "00000001|00000030|00000006|00001900//",
|
matchGroup: "00000001|00000030|00000006|00001900//",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/Reference i.xxx.vi.mcm.md'
|
path: 'Some parent folder/Reference i.xxx.vi.mcm.md'
|
||||||
});
|
});
|
||||||
|
@ -696,8 +674,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 1, // This indicates the last+1 idx
|
groupIdx: 1, // This indicates the last+1 idx
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "References.md",
|
sortString: "References.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/References.md'
|
path: 'Some parent folder/References.md'
|
||||||
});
|
});
|
||||||
|
@ -722,8 +699,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 1, // This indicates the last+1 idx
|
groupIdx: 1, // This indicates the last+1 idx
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "References.md",
|
sortString: "References.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/References.md'
|
path: 'Some parent folder/References.md'
|
||||||
});
|
});
|
||||||
|
@ -762,8 +738,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 1, // The lastIdx+1, group not determined
|
groupIdx: 1, // The lastIdx+1, group not determined
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "References.md",
|
sortString: "References.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/References.md'
|
path: 'Some parent folder/References.md'
|
||||||
});
|
});
|
||||||
|
@ -800,8 +775,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 1, // lastIdx + 1, group not determined
|
groupIdx: 1, // lastIdx + 1, group not determined
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "References.md",
|
sortString: "References.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/References.md'
|
path: 'Some parent folder/References.md'
|
||||||
});
|
});
|
||||||
|
@ -838,8 +812,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 0,
|
groupIdx: 0,
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "References.md",
|
sortString: "References.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/References.md'
|
path: 'Some parent folder/References.md'
|
||||||
} as FolderItemForSorting);
|
} as FolderItemForSorting);
|
||||||
|
@ -876,8 +849,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 0,
|
groupIdx: 0,
|
||||||
isFolder: true,
|
isFolder: true,
|
||||||
sortString: "References",
|
sortString: "References",
|
||||||
ctimeNewest: DEFAULT_FOLDER_CTIME,
|
ctime: DEFAULT_FOLDER_CTIME,
|
||||||
ctimeOldest: DEFAULT_FOLDER_CTIME,
|
|
||||||
mtime: DEFAULT_FOLDER_MTIME,
|
mtime: DEFAULT_FOLDER_MTIME,
|
||||||
path: 'References',
|
path: 'References',
|
||||||
folder: folder
|
folder: folder
|
||||||
|
@ -910,8 +882,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 1, // The lastIdx+1, group not determined
|
groupIdx: 1, // The lastIdx+1, group not determined
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "References.md",
|
sortString: "References.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/References.md'
|
path: 'Some parent folder/References.md'
|
||||||
});
|
});
|
||||||
|
@ -942,8 +913,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 0,
|
groupIdx: 0,
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "References.md",
|
sortString: "References.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/References.md'
|
path: 'Some parent folder/References.md'
|
||||||
});
|
});
|
||||||
|
@ -974,8 +944,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 1, // The lastIdx+1, group not determined
|
groupIdx: 1, // The lastIdx+1, group not determined
|
||||||
isFolder: true,
|
isFolder: true,
|
||||||
sortString: "TestEmptyFolder",
|
sortString: "TestEmptyFolder",
|
||||||
ctimeNewest: 0,
|
ctime: 0,
|
||||||
ctimeOldest: 0,
|
|
||||||
mtime: 0,
|
mtime: 0,
|
||||||
path: 'TestEmptyFolder',
|
path: 'TestEmptyFolder',
|
||||||
folder: {
|
folder: {
|
||||||
|
@ -1014,8 +983,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 1, // The lastIdx+1, group not determined
|
groupIdx: 1, // The lastIdx+1, group not determined
|
||||||
isFolder: true,
|
isFolder: true,
|
||||||
sortString: "TestEmptyFolder",
|
sortString: "TestEmptyFolder",
|
||||||
ctimeNewest: 0,
|
ctime: 0,
|
||||||
ctimeOldest: 0,
|
|
||||||
mtime: 0,
|
mtime: 0,
|
||||||
path: 'TestEmptyFolder',
|
path: 'TestEmptyFolder',
|
||||||
folder: {
|
folder: {
|
||||||
|
@ -1054,8 +1022,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 0,
|
groupIdx: 0,
|
||||||
isFolder: true,
|
isFolder: true,
|
||||||
sortString: "TestEmptyFolder",
|
sortString: "TestEmptyFolder",
|
||||||
ctimeNewest: 0,
|
ctime: 0,
|
||||||
ctimeOldest: 0,
|
|
||||||
mtime: 0,
|
mtime: 0,
|
||||||
path: 'TestEmptyFolder',
|
path: 'TestEmptyFolder',
|
||||||
folder: {
|
folder: {
|
||||||
|
@ -1097,8 +1064,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 1, // The lastIdx+1, group not determined
|
groupIdx: 1, // The lastIdx+1, group not determined
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "References.md",
|
sortString: "References.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/References.md'
|
path: 'Some parent folder/References.md'
|
||||||
});
|
});
|
||||||
|
@ -1133,8 +1099,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 1, // The lastIdx+1, group not determined
|
groupIdx: 1, // The lastIdx+1, group not determined
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "References.md",
|
sortString: "References.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/References.md'
|
path: 'Some parent folder/References.md'
|
||||||
});
|
});
|
||||||
|
@ -1168,8 +1133,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 0,
|
groupIdx: 0,
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "References.md",
|
sortString: "References.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/References.md'
|
path: 'Some parent folder/References.md'
|
||||||
});
|
});
|
||||||
|
@ -1204,8 +1168,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 0,
|
groupIdx: 0,
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "References.md",
|
sortString: "References.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/References.md'
|
path: 'Some parent folder/References.md'
|
||||||
});
|
});
|
||||||
|
@ -1236,8 +1199,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 1, // The lastIdx+1, group not determined
|
groupIdx: 1, // The lastIdx+1, group not determined
|
||||||
isFolder: true,
|
isFolder: true,
|
||||||
sortString: "TestEmptyFolder",
|
sortString: "TestEmptyFolder",
|
||||||
ctimeNewest: 0,
|
ctime: 0,
|
||||||
ctimeOldest: 0,
|
|
||||||
mtime: 0,
|
mtime: 0,
|
||||||
path: 'TestEmptyFolder',
|
path: 'TestEmptyFolder',
|
||||||
folder: {
|
folder: {
|
||||||
|
@ -1279,8 +1241,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 0,
|
groupIdx: 0,
|
||||||
isFolder: true,
|
isFolder: true,
|
||||||
sortString: "TestEmptyFolder",
|
sortString: "TestEmptyFolder",
|
||||||
ctimeNewest: 0,
|
ctime: 0,
|
||||||
ctimeOldest: 0,
|
|
||||||
mtime: 0,
|
mtime: 0,
|
||||||
path: 'TestEmptyFolder',
|
path: 'TestEmptyFolder',
|
||||||
folder: {
|
folder: {
|
||||||
|
@ -1325,8 +1286,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 0,
|
groupIdx: 0,
|
||||||
isFolder: true,
|
isFolder: true,
|
||||||
sortString: "TestEmptyFolder",
|
sortString: "TestEmptyFolder",
|
||||||
ctimeNewest: 0,
|
ctime: 0,
|
||||||
ctimeOldest: 0,
|
|
||||||
mtime: 0,
|
mtime: 0,
|
||||||
path: 'TestEmptyFolder',
|
path: 'TestEmptyFolder',
|
||||||
folder: {
|
folder: {
|
||||||
|
@ -1369,8 +1329,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 0,
|
groupIdx: 0,
|
||||||
isFolder: true,
|
isFolder: true,
|
||||||
sortString: "TestEmptyFolder",
|
sortString: "TestEmptyFolder",
|
||||||
ctimeNewest: 0,
|
ctime: 0,
|
||||||
ctimeOldest: 0,
|
|
||||||
mtime: 0,
|
mtime: 0,
|
||||||
path: 'TestEmptyFolder',
|
path: 'TestEmptyFolder',
|
||||||
folder: {
|
folder: {
|
||||||
|
@ -1416,8 +1375,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 0,
|
groupIdx: 0,
|
||||||
isFolder: true,
|
isFolder: true,
|
||||||
sortString: "TestEmptyFolder",
|
sortString: "TestEmptyFolder",
|
||||||
ctimeNewest: 0,
|
ctime: 0,
|
||||||
ctimeOldest: 0,
|
|
||||||
mtime: 0,
|
mtime: 0,
|
||||||
path: 'TestEmptyFolder',
|
path: 'TestEmptyFolder',
|
||||||
folder: {
|
folder: {
|
||||||
|
@ -1460,8 +1418,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 1, // lastIdx+1 - no match
|
groupIdx: 1, // lastIdx+1 - no match
|
||||||
isFolder: true,
|
isFolder: true,
|
||||||
sortString: "TestEmptyFolder",
|
sortString: "TestEmptyFolder",
|
||||||
ctimeNewest: 0,
|
ctime: 0,
|
||||||
ctimeOldest: 0,
|
|
||||||
mtime: 0,
|
mtime: 0,
|
||||||
path: 'TestEmptyFolder',
|
path: 'TestEmptyFolder',
|
||||||
folder: {
|
folder: {
|
||||||
|
@ -1507,8 +1464,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 1, // lastIdx+1 - no match
|
groupIdx: 1, // lastIdx+1 - no match
|
||||||
isFolder: true,
|
isFolder: true,
|
||||||
sortString: "TestEmptyFolder",
|
sortString: "TestEmptyFolder",
|
||||||
ctimeNewest: 0,
|
ctime: 0,
|
||||||
ctimeOldest: 0,
|
|
||||||
mtime: 0,
|
mtime: 0,
|
||||||
path: 'TestEmptyFolder',
|
path: 'TestEmptyFolder',
|
||||||
folder: {
|
folder: {
|
||||||
|
@ -1557,8 +1513,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 0,
|
groupIdx: 0,
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "References.md",
|
sortString: "References.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/References.md',
|
path: 'Some parent folder/References.md',
|
||||||
metadataFieldValue: 'direct metadata on file'
|
metadataFieldValue: 'direct metadata on file'
|
||||||
|
@ -1597,8 +1552,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 0,
|
groupIdx: 0,
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "References.md",
|
sortString: "References.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/References.md',
|
path: 'Some parent folder/References.md',
|
||||||
metadataFieldValue: 'direct metadata on file'
|
metadataFieldValue: 'direct metadata on file'
|
||||||
|
@ -1637,8 +1591,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 0,
|
groupIdx: 0,
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "References.md",
|
sortString: "References.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/References.md',
|
path: 'Some parent folder/References.md',
|
||||||
metadataFieldValue: 'direct metadata on file'
|
metadataFieldValue: 'direct metadata on file'
|
||||||
|
@ -1677,8 +1630,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 0,
|
groupIdx: 0,
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "References.md",
|
sortString: "References.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/References.md',
|
path: 'Some parent folder/References.md',
|
||||||
metadataFieldValue: 'direct metadata on file'
|
metadataFieldValue: 'direct metadata on file'
|
||||||
|
@ -1717,8 +1669,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 0,
|
groupIdx: 0,
|
||||||
isFolder: true,
|
isFolder: true,
|
||||||
sortString: "References",
|
sortString: "References",
|
||||||
ctimeNewest: DEFAULT_FOLDER_CTIME,
|
ctime: DEFAULT_FOLDER_CTIME,
|
||||||
ctimeOldest: DEFAULT_FOLDER_CTIME,
|
|
||||||
mtime: DEFAULT_FOLDER_MTIME,
|
mtime: DEFAULT_FOLDER_MTIME,
|
||||||
path: 'References',
|
path: 'References',
|
||||||
metadataFieldValue: 'metadata on folder note',
|
metadataFieldValue: 'metadata on folder note',
|
||||||
|
@ -1759,8 +1710,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 0,
|
groupIdx: 0,
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "References.md",
|
sortString: "References.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/References.md',
|
path: 'Some parent folder/References.md',
|
||||||
metadataFieldValue: 'direct metadata on file, not obvious'
|
metadataFieldValue: 'direct metadata on file, not obvious'
|
||||||
|
@ -1798,8 +1748,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 0,
|
groupIdx: 0,
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "References.md",
|
sortString: "References.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/References.md',
|
path: 'Some parent folder/References.md',
|
||||||
metadataFieldValue: 'direct metadata on file, tricky'
|
metadataFieldValue: 'direct metadata on file, tricky'
|
||||||
|
@ -1837,8 +1786,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 0,
|
groupIdx: 0,
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "References.md",
|
sortString: "References.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/References.md',
|
path: 'Some parent folder/References.md',
|
||||||
metadataFieldValue: 'direct metadata on file, under default name'
|
metadataFieldValue: 'direct metadata on file, under default name'
|
||||||
|
@ -1885,8 +1833,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 3,
|
groupIdx: 3,
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "Abcdef!.md",
|
sortString: "Abcdef!.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/Abcdef!.md'
|
path: 'Some parent folder/Abcdef!.md'
|
||||||
});
|
});
|
||||||
|
@ -1935,8 +1882,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 1, // Imposed by combined groups
|
groupIdx: 1, // Imposed by combined groups
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "Hello :-) ha.md",
|
sortString: "Hello :-) ha.md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/Hello :-) ha.md'
|
path: 'Some parent folder/Hello :-) ha.md'
|
||||||
});
|
});
|
||||||
|
@ -1944,8 +1890,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 1, // Imposed by combined groups
|
groupIdx: 1, // Imposed by combined groups
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "Hello World :-).md",
|
sortString: "Hello World :-).md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/Hello World :-).md'
|
path: 'Some parent folder/Hello World :-).md'
|
||||||
});
|
});
|
||||||
|
@ -1990,8 +1935,7 @@ describe('determineSortingGroup', () => {
|
||||||
groupIdx: 2, // Imposed by combined groups
|
groupIdx: 2, // Imposed by combined groups
|
||||||
isFolder: false,
|
isFolder: false,
|
||||||
sortString: "Hello :-).md",
|
sortString: "Hello :-).md",
|
||||||
ctimeNewest: MOCK_TIMESTAMP + 222,
|
ctime: MOCK_TIMESTAMP + 222,
|
||||||
ctimeOldest: MOCK_TIMESTAMP + 222,
|
|
||||||
mtime: MOCK_TIMESTAMP + 333,
|
mtime: MOCK_TIMESTAMP + 333,
|
||||||
path: 'Some parent folder/Hello :-).md'
|
path: 'Some parent folder/Hello :-).md'
|
||||||
});
|
});
|
||||||
|
@ -2017,19 +1961,29 @@ describe('determineFolderDatesIfNeeded', () => {
|
||||||
determineFolderDatesIfNeeded([result], sortSpec)
|
determineFolderDatesIfNeeded([result], sortSpec)
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(result.ctimeOldest).toEqual(DEFAULT_FOLDER_CTIME)
|
expect(result.ctime).toEqual(DEFAULT_FOLDER_CTIME)
|
||||||
expect(result.ctimeNewest).toEqual(DEFAULT_FOLDER_CTIME)
|
|
||||||
expect(result.mtime).toEqual(DEFAULT_FOLDER_CTIME)
|
expect(result.mtime).toEqual(DEFAULT_FOLDER_CTIME)
|
||||||
})
|
})
|
||||||
it('should correctly determine dates, if triggered', () => {
|
it.each(
|
||||||
|
[
|
||||||
|
[CustomSortOrder.byCreatedTimeReverseAdvanced, undefined],
|
||||||
|
[CustomSortOrder.byCreatedTimeAdvanced, undefined],
|
||||||
|
[CustomSortOrder.byModifiedTimeAdvanced, undefined],
|
||||||
|
[CustomSortOrder.byModifiedTimeReverseAdvanced, undefined],
|
||||||
|
[CustomSortOrder.alphabetical, CustomSortOrder.byCreatedTimeReverseAdvanced],
|
||||||
|
[CustomSortOrder.alphabetical, CustomSortOrder.byCreatedTimeAdvanced],
|
||||||
|
[CustomSortOrder.alphabetical, CustomSortOrder.byModifiedTimeAdvanced],
|
||||||
|
[CustomSortOrder.alphabetical, CustomSortOrder.byModifiedTimeReverseAdvanced]
|
||||||
|
])('should correctly determine dates, if triggered by %s under default %s', (order: CustomSortOrder, folderOrder: CustomSortOrder | undefined) => {
|
||||||
// given
|
// given
|
||||||
const folder: TFolder = mockTFolderWithChildren('Test folder 1')
|
const folder: TFolder = mockTFolderWithChildren('Test folder 1')
|
||||||
const OUTSIDERS_GROUP_IDX = 0
|
const OUTSIDERS_GROUP_IDX = 0
|
||||||
const sortSpec: CustomSortSpec = {
|
const sortSpec: CustomSortSpec = {
|
||||||
targetFoldersPaths: ['/'],
|
targetFoldersPaths: ['/'],
|
||||||
|
defaultOrder: folderOrder,
|
||||||
groups: [{
|
groups: [{
|
||||||
type: CustomSortGroupType.Outsiders,
|
type: CustomSortGroupType.Outsiders,
|
||||||
order: CustomSortOrder.byCreatedTimeReverseAdvanced
|
order: order
|
||||||
}],
|
}],
|
||||||
outsidersGroupIdx: OUTSIDERS_GROUP_IDX
|
outsidersGroupIdx: OUTSIDERS_GROUP_IDX
|
||||||
}
|
}
|
||||||
|
@ -2039,8 +1993,7 @@ describe('determineFolderDatesIfNeeded', () => {
|
||||||
determineFolderDatesIfNeeded([result], sortSpec)
|
determineFolderDatesIfNeeded([result], sortSpec)
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(result.ctimeOldest).toEqual(TIMESTAMP_OLDEST)
|
expect(result.ctime).toEqual(TIMESTAMP_OLDEST)
|
||||||
expect(result.ctimeNewest).toEqual(TIMESTAMP_NEWEST)
|
|
||||||
expect(result.mtime).toEqual(TIMESTAMP_NEWEST)
|
expect(result.mtime).toEqual(TIMESTAMP_NEWEST)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
|
@ -51,9 +51,8 @@ export interface FolderItemForSorting {
|
||||||
sortString: string // fragment (or full name) to be used for sorting
|
sortString: string // fragment (or full name) to be used for sorting
|
||||||
metadataFieldValue?: string // relevant to metadata-based sorting only
|
metadataFieldValue?: string // relevant to metadata-based sorting only
|
||||||
matchGroup?: string // advanced - used for secondary sorting rule, to recognize 'same regex match'
|
matchGroup?: string // advanced - used for secondary sorting rule, to recognize 'same regex match'
|
||||||
ctimeOldest: number // for a file, both ctime values are the same. For folder, they can be different:
|
ctime: number // for a file ctime is obvious, for a folder = ctime of the oldest child file
|
||||||
ctimeNewest: number // ctimeOldest = ctime of the oldest child file, ctimeNewest = ctime of the newest child file
|
mtime: number // for a file mtime is obvious, for a folder = date of most recently modified child file
|
||||||
mtime: number
|
|
||||||
isFolder: boolean
|
isFolder: boolean
|
||||||
folder?: TFolder
|
folder?: TFolder
|
||||||
}
|
}
|
||||||
|
@ -98,10 +97,10 @@ export let Sorters: { [key in CustomSortOrder]: SorterFn } = {
|
||||||
[CustomSortOrder.byModifiedTimeAdvanced]: (a: FolderItemForSorting, b: FolderItemForSorting) => a.mtime - b.mtime,
|
[CustomSortOrder.byModifiedTimeAdvanced]: (a: FolderItemForSorting, b: FolderItemForSorting) => a.mtime - b.mtime,
|
||||||
[CustomSortOrder.byModifiedTimeReverse]: (a: FolderItemForSorting, b: FolderItemForSorting) => (a.isFolder && b.isFolder) ? CollatorCompare(a.sortString, b.sortString) : (b.mtime - a.mtime),
|
[CustomSortOrder.byModifiedTimeReverse]: (a: FolderItemForSorting, b: FolderItemForSorting) => (a.isFolder && b.isFolder) ? CollatorCompare(a.sortString, b.sortString) : (b.mtime - a.mtime),
|
||||||
[CustomSortOrder.byModifiedTimeReverseAdvanced]: (a: FolderItemForSorting, b: FolderItemForSorting) => b.mtime - a.mtime,
|
[CustomSortOrder.byModifiedTimeReverseAdvanced]: (a: FolderItemForSorting, b: FolderItemForSorting) => b.mtime - a.mtime,
|
||||||
[CustomSortOrder.byCreatedTime]: (a: FolderItemForSorting, b: FolderItemForSorting) => (a.isFolder && b.isFolder) ? CollatorCompare(a.sortString, b.sortString) : (a.ctimeNewest - b.ctimeNewest),
|
[CustomSortOrder.byCreatedTime]: (a: FolderItemForSorting, b: FolderItemForSorting) => (a.isFolder && b.isFolder) ? CollatorCompare(a.sortString, b.sortString) : (a.ctime - b.ctime),
|
||||||
[CustomSortOrder.byCreatedTimeAdvanced]: (a: FolderItemForSorting, b: FolderItemForSorting) => a.ctimeNewest - b.ctimeNewest,
|
[CustomSortOrder.byCreatedTimeAdvanced]: (a: FolderItemForSorting, b: FolderItemForSorting) => a.ctime - b.ctime,
|
||||||
[CustomSortOrder.byCreatedTimeReverse]: (a: FolderItemForSorting, b: FolderItemForSorting) => (a.isFolder && b.isFolder) ? CollatorCompare(a.sortString, b.sortString) : (b.ctimeOldest - a.ctimeOldest),
|
[CustomSortOrder.byCreatedTimeReverse]: (a: FolderItemForSorting, b: FolderItemForSorting) => (a.isFolder && b.isFolder) ? CollatorCompare(a.sortString, b.sortString) : (b.ctime - a.ctime),
|
||||||
[CustomSortOrder.byCreatedTimeReverseAdvanced]: (a: FolderItemForSorting, b: FolderItemForSorting) => b.ctimeOldest - a.ctimeOldest,
|
[CustomSortOrder.byCreatedTimeReverseAdvanced]: (a: FolderItemForSorting, b: FolderItemForSorting) => b.ctime - a.ctime,
|
||||||
[CustomSortOrder.byMetadataFieldAlphabetical]: sorterByMetadataField(StraightOrder),
|
[CustomSortOrder.byMetadataFieldAlphabetical]: sorterByMetadataField(StraightOrder),
|
||||||
[CustomSortOrder.byMetadataFieldTrueAlphabetical]: sorterByMetadataField(StraightOrder, TrueAlphabetical),
|
[CustomSortOrder.byMetadataFieldTrueAlphabetical]: sorterByMetadataField(StraightOrder, TrueAlphabetical),
|
||||||
[CustomSortOrder.byMetadataFieldAlphabeticalReverse]: sorterByMetadataField(ReverseOrder),
|
[CustomSortOrder.byMetadataFieldAlphabeticalReverse]: sorterByMetadataField(ReverseOrder),
|
||||||
|
@ -363,8 +362,7 @@ export const determineSortingGroup = function (entry: TFile | TFolder, spec: Cus
|
||||||
isFolder: aFolder,
|
isFolder: aFolder,
|
||||||
folder: aFolder ? (entry as TFolder) : undefined,
|
folder: aFolder ? (entry as TFolder) : undefined,
|
||||||
path: entry.path,
|
path: entry.path,
|
||||||
ctimeNewest: aFile ? entryAsTFile.stat.ctime : DEFAULT_FOLDER_CTIME,
|
ctime: aFile ? entryAsTFile.stat.ctime : DEFAULT_FOLDER_CTIME,
|
||||||
ctimeOldest: aFile ? entryAsTFile.stat.ctime : DEFAULT_FOLDER_CTIME,
|
|
||||||
mtime: aFile ? entryAsTFile.stat.mtime : DEFAULT_FOLDER_MTIME
|
mtime: aFile ? entryAsTFile.stat.mtime : DEFAULT_FOLDER_MTIME
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -384,41 +382,42 @@ export const sortOrderNeedsFolderDates = (order: CustomSortOrder | undefined, se
|
||||||
|
|
||||||
// Syntax sugar for readability
|
// Syntax sugar for readability
|
||||||
export type ModifiedTime = number
|
export type ModifiedTime = number
|
||||||
export type CreatedTimeNewest = number
|
export type CreatedTime = number
|
||||||
export type CreatedTimeOldest = number
|
|
||||||
|
|
||||||
export const determineDatesForFolder = (folder: TFolder, now: number): [ModifiedTime, CreatedTimeNewest, CreatedTimeOldest] => {
|
export const determineDatesForFolder = (folder: TFolder, now: number): [ModifiedTime, CreatedTime] => {
|
||||||
let mtimeOfFolder: ModifiedTime = DEFAULT_FOLDER_MTIME
|
let mtimeOfFolder: ModifiedTime = DEFAULT_FOLDER_MTIME
|
||||||
let ctimeNewestOfFolder: CreatedTimeNewest = DEFAULT_FOLDER_CTIME
|
let ctimeOfFolder: CreatedTime = DEFAULT_FOLDER_CTIME
|
||||||
let ctimeOldestOfFolder: CreatedTimeOldest = now
|
|
||||||
folder.children.forEach((item) => {
|
folder.children.forEach((item) => {
|
||||||
if (!isFolder(item)) {
|
if (!isFolder(item)) {
|
||||||
const file: TFile = item as TFile
|
const file: TFile = item as TFile
|
||||||
if (file.stat.mtime > mtimeOfFolder) {
|
if (file.stat.mtime > mtimeOfFolder) {
|
||||||
mtimeOfFolder = file.stat.mtime
|
mtimeOfFolder = file.stat.mtime
|
||||||
}
|
}
|
||||||
if (file.stat.ctime > ctimeNewestOfFolder) {
|
if (file.stat.ctime < ctimeOfFolder || ctimeOfFolder === DEFAULT_FOLDER_CTIME) {
|
||||||
ctimeNewestOfFolder = file.stat.ctime
|
ctimeOfFolder = file.stat.ctime
|
||||||
}
|
|
||||||
if (file.stat.ctime < ctimeOldestOfFolder) {
|
|
||||||
ctimeOldestOfFolder = file.stat.ctime
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
return [mtimeOfFolder, ctimeNewestOfFolder, ctimeOldestOfFolder]
|
return [mtimeOfFolder, ctimeOfFolder]
|
||||||
}
|
}
|
||||||
|
|
||||||
export const determineFolderDatesIfNeeded = (folderItems: Array<FolderItemForSorting>, sortingSpec: CustomSortSpec) => {
|
export const determineFolderDatesIfNeeded = (folderItems: Array<FolderItemForSorting>, sortingSpec: CustomSortSpec) => {
|
||||||
const Now: number = Date.now()
|
const Now: number = Date.now()
|
||||||
folderItems.forEach((item) => {
|
folderItems.forEach((item) => {
|
||||||
|
if (item.folder) {
|
||||||
|
const folderDefaultSortRequiresFolderDate: boolean = !!(sortingSpec.defaultOrder && sortOrderNeedsFolderDates(sortingSpec.defaultOrder))
|
||||||
|
let groupSortRequiresFolderDate: boolean = false
|
||||||
|
if (!folderDefaultSortRequiresFolderDate) {
|
||||||
const groupIdx: number | undefined = item.groupIdx
|
const groupIdx: number | undefined = item.groupIdx
|
||||||
if (groupIdx !== undefined) {
|
if (groupIdx !== undefined) {
|
||||||
const groupOrder: CustomSortOrder | undefined = sortingSpec.groups[groupIdx].order
|
const groupOrder: CustomSortOrder | undefined = sortingSpec.groups[groupIdx].order
|
||||||
if (sortOrderNeedsFolderDates(groupOrder)) {
|
groupSortRequiresFolderDate = sortOrderNeedsFolderDates(groupOrder)
|
||||||
if (item.folder) {
|
|
||||||
[item.mtime, item.ctimeNewest, item.ctimeOldest] = determineDatesForFolder(item.folder, Now)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (folderDefaultSortRequiresFolderDate || groupSortRequiresFolderDate) {
|
||||||
|
[item.mtime, item.ctime] = determineDatesForFolder(item.folder, Now)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue