Index: view.py
===================================================================
--- view.py	(revision 33)
+++ view.py	(revision 51)
@@ -6,45 +6,12 @@
 import sys
 from mixi import Mixi, load
 
-CMDS = ["all", "diary", "footprint", "per_weekday", "per_hour", "latest"]
+CMDS = ["latest", "all", "diary", "footprint", "per_weekday", "per_hour"]
 WEEKDAYS = u'譛育↓豌エ譛ィ驥大悄譌・'
 
 def all(mixi):
-    logs = mixi.logs
-    diaries = mixi.diaries
+    latest(mixi, days=None)
 
-    for idx, (y,m,d,hr,mn,id,title) in enumerate(diaries):
-        start = datetime.datetime(y,m,d,hr,mn)
-        if idx < len(diaries) - 1:
-            to = datetime.datetime(*diaries[idx + 1][:5])
-        else:
-            to = datetime.datetime.now()
-        delta = to - start
-        delta_hours = delta.days * 24 + delta.seconds / 60.0 / 60
-        footprint = len(mixi.get_log(start=start, to=to))
-
-        print "%04d.%02d.%02d(%s) %02d:%02d %-20s  (%d / %4.1f; avg %.1f per hour)"%(y, m, d, WEEKDAYS[start.weekday()], hr, mn, title, footprint, delta_hours, footprint / delta_hours)
-
-    names = {}
-    days = {}
-    hours = {}
-    by_ids = {}
-    for y,m,d,h,s,id,name in logs:
-        day = datetime.date(y, m, d)
-        k = '%04d.%02d.%02d(%s)'%(y,m,d, WEEKDAYS[day.weekday()])
-        days[k] = days.get(k, 0) + 1
-        hours[h] = hours.get(h, 0) + 1
-        by_ids[id] = by_ids.get(id, 0) + 1
-        names[id] = name
-
-    mygraph.draw(days)
-    mygraph.draw(hours)
-
-    by_names = {}
-    for id in by_ids:
-        by_names[names[id]] = by_ids[id]
-    mygraph.draw(by_names, True)
-
 def per_hour(mixi):
     logs = mixi.logs
     start = datetime.datetime(*logs[0][0:4])
@@ -64,11 +31,14 @@
     logs = mixi.logs
     diaries = mixi.diaries
 
-    limit = datetime.datetime.now() - datetime.timedelta(days=days)
+    if days:
+        limit = datetime.datetime.now() - datetime.timedelta(days=days)
+    else:
+        limit = None
 
     for idx, (y,m,d,hr,mn,id,title) in enumerate(diaries):
         start = datetime.datetime(y,m,d,hr,mn)
-        if start < limit: continue
+        if limit and start < limit: continue
         if idx < len(diaries) - 1:
             to = datetime.datetime(*diaries[idx + 1][:5])
         else:
@@ -77,7 +47,7 @@
         delta_hours = delta.days * 24 + delta.seconds / 60.0 / 60
         footprint = len(mixi.get_log(start=start, to=to))
 
-        print "%04d.%02d.%02d(%s) %02d:%02d %-20s  (%d / %4.1f; avg %.1f per hour)"%(y, m, d, WEEKDAYS[start.weekday()], hr, mn, title, footprint, delta_hours, footprint / delta_hours)
+        print "%04d.%02d.%02d(%s) %02d:%02d %s  (%2d / %4.1f; avg %.1f per hour)"%(y, m, d, WEEKDAYS[start.weekday()], hr, mn, title + ' ' * (20 - mygraph.str_width(title)), footprint, delta_hours, footprint / delta_hours)
 
     names = {}
     days = {}
@@ -85,7 +55,7 @@
     by_ids = {}
     for y,m,d,h,s,id,name in logs:
         day = datetime.datetime(y, m, d, 0, 0)
-        if day < limit: continue
+        if limit and day < limit: continue
         k = '%04d.%02d.%02d(%s)'%(y,m,d, WEEKDAYS[day.weekday()])
         days[k] = days.get(k, 0) + 1
         hours[h] = hours.get(h, 0) + 1
@@ -102,12 +72,12 @@
 
 
 def main():
-    cmd = sys.argv[1] if len(sys.argv) > 1 else "all"
+    cmd = sys.argv[1] if len(sys.argv) > 1 else CMDS[0]
     if not (cmd in CMDS):
         print "usage: python view.py []"
         print "   is:"
         for c in CMDS:
-            print "    %s"%(c)
+            print "    %s%s"%(c, " (default)" if c == CMDS[0] else "")
         sys.exit(1)
 
     mixi = Mixi()