hosts: better seen formatting, fix word wrapping
authorTero Marttila <terom@paivola.fi>
Wed, 24 Oct 2012 19:54:21 +0300
changeset 27 38d050c657da
parent 26 589249097230
child 28 9940bc6c0a34
hosts: better seen formatting, fix word wrapping
pvl/verkko/hosts.py
static/style.css
--- a/pvl/verkko/hosts.py	Wed Oct 24 19:42:16 2012 +0300
+++ b/pvl/verkko/hosts.py	Wed Oct 24 19:54:21 2012 +0300
@@ -13,6 +13,7 @@
 # XXX: this should actually be DHCPHost
 class Host (object) :
     DATE_FMT = '%Y%m%d'
+    TIME_FMT = '%H:%M:%S'
     
     MAC_HEX = r'([A-Za-z0-9]{2})'
     MAC_SEP = r'[-:.]?'
@@ -86,12 +87,20 @@
             return "{self.state}: {self.error}".format(self=self)
         else :
             return self.state
+    
+    @classmethod
+    def format_datetime (cls, dt) :
+        if (datetime.datetime.now() - dt).days :
+            return dt.strftime(cls.DATE_FMT)
+
+        else :
+            return dt.strftime(cls.TIME_FMT)
 
     def seen (self) :
         return (
-                html.span(title=self.first_seen)(self.first_seen.strftime(self.DATE_FMT)),
+                html.span(title=self.first_seen)(self.format_datetime(self.first_seen)),
                 '-',
-                html.span(title=self.last_seen)(self.last_seen.strftime(self.DATE_FMT)),
+                html.span(title=self.last_seen)(self.format_datetime(self.last_seen))
         )
 
     def dns (self) :
@@ -162,7 +171,7 @@
             ('MAC',         'mac',      'mac',      'mac'   ),
             ('Hostname',    'name',     False,      False   ),
             ('Network',     'net',      'net',      False   ),
-            ('Seen',        'seen',     'seen',     False   ),
+            ('Seen',        'seen',     'seen',     'seen'  ),
             ('State',       'state',    'state',    False   ), 
         )
 
@@ -212,7 +221,7 @@
                 cell = value
 
             if filter :
-                cell = html.a(href=self.url(ListHandler, **{attr: value}))(value)
+                cell = html.a(href=self.url(ListHandler, **{attr: value}))(cell)
 
             if cssclass is True :
                 cssclass = attr
@@ -257,7 +266,7 @@
                     render_cell('name', host.name, htmlvalue=host.render_name()),
                     render_cell('gw', host.gw),
 
-                    html.td(host.seen()),
+                    render_cell('seen', host.seen()),
                     html.td(class_=host.state_class(), title=host.state_title())(host.state),
                 ) for i, host in enumerate(hosts)
             ),
--- a/static/style.css	Wed Oct 24 19:42:16 2012 +0300
+++ b/static/style.css	Wed Oct 24 19:54:21 2012 +0300
@@ -104,6 +104,9 @@
     border: thin solid #ffffff;
 
     padding: 0.25em 1em;
+    
+    /* Do not normally wrap */
+    white-space: nowrap;
 }
 
 thead a,
@@ -167,7 +170,6 @@
 /*
  * Hosts
  */
-
 .id
 {
     font-weight: bold;
@@ -180,6 +182,17 @@
     font-family: monospace;
 }
 
+td.name
+{
+    /* Wrap */
+    white-space: normal;
+}
+
+
+.seen
+{
+}
+
 .dhcp-search {      background-color: #444488; }
 .dhcp-ack {         background-color: #448844; }
 .dhcp-nak {         background-color: #884444; }