fix: simplify date-only due labels
This commit is contained in:
@@ -66,15 +66,15 @@ describe('getTaskDuePresentation date-only tasks', () => {
|
||||
})
|
||||
|
||||
it.each([
|
||||
['2026-09-09', '9月9日', '已过期1天', 'overdue'],
|
||||
['2026-09-10', '9月10日', '今天', 'neutral'],
|
||||
['2026-09-11', '9月11日', '还有1天', 'neutral'],
|
||||
['2027-01-02', '2027年1月2日', '还有114天', 'neutral'],
|
||||
] as const)('formats %s by local calendar day', (dueAt, absoluteText, relativeText, state) => {
|
||||
['2026-09-08', '2天', 'overdue', '已过期2天'],
|
||||
['2026-09-10', '今天', 'neutral', '今天'],
|
||||
['2026-09-12', '2天', 'neutral', '还有2天'],
|
||||
] as const)('uses compact visual copy for %s while preserving the full description', (dueAt, relativeText, state, fullRelativeText) => {
|
||||
const result = getTaskDuePresentation({ dueAt, dueHasTime: false, completed: false, nowMs })
|
||||
expect(result).toMatchObject({ datetime: dueAt, absoluteText, relativeText, state })
|
||||
expect(result?.fullText).toContain('截止日期:')
|
||||
expect(result?.fullText).toContain('2026年' === absoluteText.slice(0, 5) ? absoluteText : dueAt.startsWith('2026') ? `2026年${absoluteText}` : absoluteText)
|
||||
expect(result).toMatchObject({ datetime: dueAt, relativeText, state })
|
||||
expect(result?.relativeText).not.toMatch(/还有|已过期|月|日/)
|
||||
expect(result?.fullText).toContain(`截止日期:2026年${Number(dueAt.slice(5, 7))}月${Number(dueAt.slice(8, 10))}日`)
|
||||
expect(result?.fullText).toContain(fullRelativeText)
|
||||
})
|
||||
|
||||
it('compares calendar dates across a DST-sized 23 hour gap', () => {
|
||||
@@ -86,18 +86,18 @@ describe('getTaskDuePresentation date-only tasks', () => {
|
||||
completed: false,
|
||||
nowMs: before.getTime(),
|
||||
})
|
||||
expect(result?.relativeText).toBe('还有1天')
|
||||
expect(result?.relativeText).toBe('1天')
|
||||
expect(result?.fullText).toContain('还有1天')
|
||||
})
|
||||
|
||||
it.each([
|
||||
['2026-09-09', '已完成(原定1天前)'],
|
||||
['2026-09-10', '已完成(原定今天)'],
|
||||
['2026-09-12', '已完成(原定2天后)'],
|
||||
])('uses completed neutral wording for %s', (dueAt, relativeText) => {
|
||||
expect(getTaskDuePresentation({ dueAt, dueHasTime: false, completed: true, nowMs })).toMatchObject({
|
||||
relativeText,
|
||||
state: 'completed',
|
||||
})
|
||||
])('uses minimal completed visual copy and preserves the detailed description for %s', (dueAt, fullRelativeText) => {
|
||||
const result = getTaskDuePresentation({ dueAt, dueHasTime: false, completed: true, nowMs })
|
||||
expect(result).toMatchObject({ relativeText: '已完成', state: 'completed' })
|
||||
expect(result?.fullText).toContain(fullRelativeText)
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
@@ -161,13 +161,15 @@ export function getTaskDuePresentation(input: {
|
||||
const dayDelta = calendarDelta(parsed.date, now)
|
||||
const absoluteDateText = absoluteDate(parsed.date, now.getFullYear())
|
||||
const absoluteText = input.dueHasTime ? `${absoluteDateText} ${localTime(parsed.date)}` : absoluteDateText
|
||||
const completedDescription = completedRelative(dayDelta)
|
||||
const dateOnlyDescription = dayDelta === 0
|
||||
? '今天'
|
||||
: dayDelta > 0 ? `还有${dayDelta}天` : `已过期${Math.abs(dayDelta)}天`
|
||||
const relativeText = input.completed
|
||||
? completedRelative(dayDelta)
|
||||
? (input.dueHasTime ? completedDescription : '已完成')
|
||||
: input.dueHasTime
|
||||
? timedRelative(parsed.date.getTime() - input.nowMs)
|
||||
: dayDelta === 0
|
||||
? '今天'
|
||||
: dayDelta > 0 ? `还有${dayDelta}天` : `已过期${Math.abs(dayDelta)}天`
|
||||
: dayDelta === 0 ? '今天' : `${Math.abs(dayDelta)}天`
|
||||
const state: TaskDueState = input.completed
|
||||
? 'completed'
|
||||
: input.dueHasTime ? (parsed.date.getTime() < input.nowMs ? 'overdue' : 'neutral') : (dayDelta < 0 ? 'overdue' : 'neutral')
|
||||
@@ -178,7 +180,7 @@ export function getTaskDuePresentation(input: {
|
||||
datetime: parsed.datetime,
|
||||
absoluteText,
|
||||
relativeText,
|
||||
fullText: `${kind}:${fullAbsolute},${relativeText}`,
|
||||
fullText: `${kind}:${fullAbsolute},${input.completed ? completedDescription : input.dueHasTime ? relativeText : dateOnlyDescription}`,
|
||||
state,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user