Proper tasks and tickets ordering
This commit is contained in:
@@ -459,13 +459,6 @@ List<Map<String, dynamic>> _processTasksInIsolate(
|
||||
}
|
||||
}
|
||||
|
||||
int? parseTaskNumberFromString(String? tn) {
|
||||
if (tn == null) return null;
|
||||
final m = RegExp(r'\d+').firstMatch(tn);
|
||||
if (m == null) return null;
|
||||
return int.tryParse(m.group(0)!);
|
||||
}
|
||||
|
||||
int parseCreatedAt(Map<String, dynamic> m) {
|
||||
final v = m['created_at'];
|
||||
if (v == null) return 0;
|
||||
@@ -488,36 +481,29 @@ List<Map<String, dynamic>> _processTasksInIsolate(
|
||||
if (rcmp != 0) return rcmp;
|
||||
|
||||
if (ra == 0) {
|
||||
// queued: higher priority first, then queue_order asc, then created_at
|
||||
// queued: higher priority first (lower number = higher priority),
|
||||
// then created_at descending (newest first)
|
||||
final pa = (a['priority'] as num?)?.toInt() ?? 1;
|
||||
final pb = (b['priority'] as num?)?.toInt() ?? 1;
|
||||
final pcmp = pb.compareTo(pa);
|
||||
if (pcmp != 0) return pcmp;
|
||||
final aOrder = (a['queue_order'] as int?) ?? 0x7fffffff;
|
||||
final bOrder = (b['queue_order'] as int?) ?? 0x7fffffff;
|
||||
final qcmp = aOrder.compareTo(bOrder);
|
||||
if (qcmp != 0) return qcmp;
|
||||
return parseCreatedAt(a).compareTo(parseCreatedAt(b));
|
||||
}
|
||||
|
||||
if (ra == 1) {
|
||||
return parseCreatedAt(a).compareTo(parseCreatedAt(b));
|
||||
}
|
||||
|
||||
if (ra == 2) {
|
||||
final an = parseTaskNumberFromString(a['task_number'] as String?);
|
||||
final bn = parseTaskNumberFromString(b['task_number'] as String?);
|
||||
if (an != null && bn != null) return bn.compareTo(an);
|
||||
if (an != null) return -1;
|
||||
if (bn != null) return 1;
|
||||
// Same priority: sort by created_at descending (newest first)
|
||||
return parseCreatedAt(b).compareTo(parseCreatedAt(a));
|
||||
}
|
||||
|
||||
final aOrder = (a['queue_order'] as int?) ?? 0x7fffffff;
|
||||
final bOrder = (b['queue_order'] as int?) ?? 0x7fffffff;
|
||||
final cmp = aOrder.compareTo(bOrder);
|
||||
if (cmp != 0) return cmp;
|
||||
return parseCreatedAt(a).compareTo(parseCreatedAt(b));
|
||||
if (ra == 1) {
|
||||
// in_progress: higher priority first (lower number = higher priority),
|
||||
// then created_at descending (newest first)
|
||||
final pa = (a['priority'] as num?)?.toInt() ?? 1;
|
||||
final pb = (b['priority'] as num?)?.toInt() ?? 1;
|
||||
final pcmp = pb.compareTo(pa);
|
||||
if (pcmp != 0) return pcmp;
|
||||
// Same priority: sort by created_at descending (newest first)
|
||||
return parseCreatedAt(b).compareTo(parseCreatedAt(a));
|
||||
}
|
||||
|
||||
// completed and cancelled: sort by created_at descending (newest first)
|
||||
return parseCreatedAt(b).compareTo(parseCreatedAt(a));
|
||||
});
|
||||
|
||||
return list;
|
||||
|
||||
Reference in New Issue
Block a user