From 9c2e8900a80c34e65b013e8bb5fd6a7b25f606e7 Mon Sep 17 00:00:00 2001
From: Jordan Lee <jordan@transmissionbt.com>
Date: Wed, 14 Sep 2011 16:26:13 +0000
Subject: [PATCH] fix pluralization bug in formatter.timeInterval()

---
 web/javascript/formatter.js | 47 ++++++++++++++++++++-----------------
 1 file changed, 25 insertions(+), 22 deletions(-)

diff --git a/web/javascript/formatter.js b/web/javascript/formatter.js
index f33ad7d0b..4503e33ce 100644
--- a/web/javascript/formatter.js
+++ b/web/javascript/formatter.js
@@ -185,28 +185,31 @@ Transmission.fmt = (function()
 
 		timeInterval: function(seconds)
 		{
-			var result;
-			var days = Math.floor(seconds / 86400);
-			var hours = Math.floor((seconds % 86400) / 3600);
-			var minutes = Math.floor((seconds % 3600) / 60);
-			var seconds = Math.floor((seconds % 3600) % 60);
-
-			if (days > 0 && hours === 0)
-				result = [ days, 'days' ];
-			else if (days > 0 && hours > 0)
-				result = [ days, 'days', hours, 'hr' ];
-			else if (hours > 0 && minutes === 0)
-				result = [ hours, 'hr' ];
-			else if (hours > 0 && minutes > 0)
-				result = [ hours,'hr', minutes, 'min' ];
-			else if (minutes > 0 && seconds === 0)
-				result = [ minutes, 'min' ];
-			else if (minutes > 0 && seconds > 0)
-				result = [ minutes, 'min', seconds, 'seconds' ];
-			else
-				result = [ seconds, 'seconds' ];
-
-			return result.join(' ');
+			var days    = Math.floor (seconds / 86400),
+			    hours   = Math.floor ((seconds % 86400) / 3600),
+			    minutes = Math.floor ((seconds % 3600) / 60),
+			    seconds = Math.floor (seconds % 60),
+			    d = days    + ' ' + (days    > 1 ? 'days'    : 'day'),
+			    h = hours   + ' ' + (hours   > 1 ? 'hours'   : 'hour'),
+			    m = minutes + ' ' + (minutes > 1 ? 'minutes' : 'minute'),
+			    s = seconds + ' ' + (seconds > 1 ? 'seconds' : 'second');
+
+			if (days) {
+				if (days >= 4 || !hours)
+					return d;
+				return d + ', ' + h;
+			}
+			if (hours) {
+				if (hours >= 4 || !minutes)
+					return h;
+				return h + ', ' + m;
+			}
+			if (minutes) {
+				if (minutes >= 4 || !seconds)
+					return m;
+				return m + ', ' + s;
+			}
+			return s;
 		},
 
 		timestamp: function(seconds)
-- 
2.40.0