@@ -157,14 +157,18 @@ class CardReceivedDate extends CardDate {
157157 const endAt = this . data ( ) . getEnd ( ) ;
158158 const startAt = this . data ( ) . getStart ( ) ;
159159 const theDate = this . date . get ( ) ;
160- // if dueAt, endAt and startAt exist & are > receivedAt, receivedAt doesn't need to be flagged
160+ const now = this . now . get ( ) ;
161+
162+ // Received date logic: if received date is after start, due, or end dates, it's overdue
161163 if (
162164 ( startAt && isAfter ( theDate , startAt ) ) ||
163165 ( endAt && isAfter ( theDate , endAt ) ) ||
164166 ( dueAt && isAfter ( theDate , dueAt ) )
165- )
166- classes += 'long-overdue' ;
167- else classes += 'current' ;
167+ ) {
168+ classes += 'overdue' ;
169+ } else {
170+ classes += 'not-due' ;
171+ }
168172 return classes ;
169173 }
170174
@@ -193,16 +197,22 @@ class CardStartDate extends CardDate {
193197 }
194198
195199 classes ( ) {
196- let classes = 'start-date' + ' ';
200+ let classes = 'start-date ' ;
197201 const dueAt = this . data ( ) . getDue ( ) ;
198202 const endAt = this . data ( ) . getEnd ( ) ;
199203 const theDate = this . date . get ( ) ;
200204 const now = this . now . get ( ) ;
201- // if dueAt or endAt exist & are > startAt, startAt doesn't need to be flagged
202- if ( ( endAt && isAfter ( theDate , endAt ) ) || ( dueAt && isAfter ( theDate , dueAt ) ) )
203- classes += 'long-overdue' ;
204- else if ( isAfter ( theDate , now ) ) classes += '' ;
205- else classes += 'current' ;
205+
206+ // Start date logic: if start date is after due or end dates, it's overdue
207+ if ( ( endAt && isAfter ( theDate , endAt ) ) || ( dueAt && isAfter ( theDate , dueAt ) ) ) {
208+ classes += 'overdue' ;
209+ } else if ( isAfter ( theDate , now ) ) {
210+ // Start date is in the future - not due yet
211+ classes += 'not-due' ;
212+ } else {
213+ // Start date is today or in the past - current/active
214+ classes += 'current' ;
215+ }
206216 return classes ;
207217 }
208218
@@ -231,17 +241,33 @@ class CardDueDate extends CardDate {
231241 }
232242
233243 classes ( ) {
234- let classes = 'due-date' + ' ';
244+ let classes = 'due-date ' ;
235245 const endAt = this . data ( ) . getEnd ( ) ;
236246 const theDate = this . date . get ( ) ;
237247 const now = this . now . get ( ) ;
238- // if the due date is after the end date, green - done early
239- if ( endAt && isAfter ( theDate , endAt ) ) classes += 'current' ;
240- // if there is an end date, don't need to flag the due date
241- else if ( endAt ) classes += '' ;
242- else if ( diff ( now , theDate , 'days' ) >= 2 ) classes += 'long-overdue' ;
243- else if ( diff ( now , theDate , 'minute' ) >= 0 ) classes += 'due' ;
244- else if ( diff ( now , theDate , 'days' ) >= - 1 ) classes += 'almost-due' ;
248+
249+ // If there's an end date and it's before the due date, task is completed early
250+ if ( endAt && isBefore ( endAt , theDate ) ) {
251+ classes += 'completed-early' ;
252+ }
253+ // If there's an end date, don't show due date status since task is completed
254+ else if ( endAt ) {
255+ classes += 'completed' ;
256+ }
257+ // Due date logic based on current time
258+ else {
259+ const daysDiff = diff ( theDate , now , 'days' ) ;
260+ if ( daysDiff < 0 ) {
261+ // Due date is in the past - overdue
262+ classes += 'overdue' ;
263+ } else if ( daysDiff <= 1 ) {
264+ // Due today or tomorrow - due soon
265+ classes += 'due-soon' ;
266+ } else {
267+ // Due date is more than 1 day away - not due yet
268+ classes += 'not-due' ;
269+ }
270+ }
245271 return classes ;
246272 }
247273
@@ -270,12 +296,23 @@ class CardEndDate extends CardDate {
270296 }
271297
272298 classes ( ) {
273- let classes = 'end-date' + ' ';
299+ let classes = 'end-date ' ;
274300 const dueAt = this . data ( ) . getDue ( ) ;
275301 const theDate = this . date . get ( ) ;
276- if ( ! dueAt ) classes += '' ;
277- else if ( isBefore ( theDate , dueAt ) ) classes += 'current' ;
278- else if ( isAfter ( theDate , dueAt ) ) classes += 'due' ;
302+
303+ if ( ! dueAt ) {
304+ // No due date set - just show as completed
305+ classes += 'completed' ;
306+ } else if ( isBefore ( theDate , dueAt ) ) {
307+ // End date is before due date - completed early
308+ classes += 'completed-early' ;
309+ } else if ( isAfter ( theDate , dueAt ) ) {
310+ // End date is after due date - completed late
311+ classes += 'completed-late' ;
312+ } else {
313+ // End date equals due date - completed on time
314+ classes += 'completed-on-time' ;
315+ }
279316 return classes ;
280317 }
281318
0 commit comments