From 667163976e4e51fc3ebf191525e44d97c8a724dc Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 01 May 2014 14:31:18 -0400
Subject: [PATCH] Overdue labeling, notify changed tickets control

---
 src/main/java/com/gitblit/wicket/pages/TicketsPage.java |   26 ++++++++++++++++++++++----
 1 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/gitblit/wicket/pages/TicketsPage.java b/src/main/java/com/gitblit/wicket/pages/TicketsPage.java
index 984b375..b7e392a 100644
--- a/src/main/java/com/gitblit/wicket/pages/TicketsPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/TicketsPage.java
@@ -20,6 +20,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.Comparator;
 import java.util.List;
 import java.util.Set;
 import java.util.TreeSet;
@@ -657,9 +658,20 @@
 		} else {
 			add(new Label("newMilestone").setVisible(false));
 		}
-		
+
 		// milestones list
-		List<TicketMilestone> allMilestones = app().tickets().getMilestones(repositoryModel);
+		List<TicketMilestone> allMilestones = new ArrayList<TicketMilestone>(app().tickets().getMilestones(repositoryModel));
+		Collections.sort(allMilestones, new Comparator<TicketMilestone>() {
+			@Override
+			public int compare(TicketMilestone o1, TicketMilestone o2) {
+				if (o2.isOpen() && !o1.isOpen()) {
+					return 1;
+				} else if (o1.isOpen() && !o2.isOpen()) {
+					return -1;
+				}
+				return o2.due.compareTo(o1.due);
+			}
+		});
 		ListDataProvider<TicketMilestone> allMilestonesDp = new ListDataProvider<TicketMilestone>(allMilestones);
 		DataView<TicketMilestone> milestonesList = new DataView<TicketMilestone>("milestoneList", allMilestonesDp) {
 			private static final long serialVersionUID = 1L;
@@ -671,15 +683,21 @@
 				item.add(new LinkPanel("milestoneName", null, tm.name, TicketsPage.class, params).setRenderBodyOnly(true));
 
 				String css;
+				String status = tm.status.name();
 				switch (tm.status) {
 				case Open:
-					css = "aui-lozenge aui-lozenge-subtle";
+					if (tm.isOverdue()) {
+						css = "aui-lozenge aui-lozenge-subtle aui-lozenge-error";
+						status = "overdue";
+					} else {
+						css = "aui-lozenge aui-lozenge-subtle";
+					}
 					break;
 				default:
 					css = "aui-lozenge";
 					break;
 				}
-				Label stateLabel = new Label("milestoneState", tm.status.name());
+				Label stateLabel = new Label("milestoneState", status);
 				WicketUtils.setCssClass(stateLabel, css);
 				item.add(stateLabel);
 

--
Gitblit v1.9.1