Use :nth-child selector instead of css class to colorize tables.
authorEmil Mikulic <emikulic@gmail.com>
Mon, 28 Mar 2016 04:08:11 +0000 (15:08 +1100)
committerEmil Mikulic <emikulic@gmail.com>
Mon, 28 Mar 2016 04:08:11 +0000 (15:08 +1100)
Suggested by: Daniel Aleksandersen https://www.daniel.priv.no/

hosts_db.c
static/style.css

index c1193a1..710a0e0 100644 (file)
@@ -40,8 +40,7 @@ typedef const void * (key_func_t)(const struct bucket *);
 typedef int (find_func_t)(const struct bucket *, const void *);
 typedef struct bucket * (make_func_t)(const void *);
 typedef void (format_cols_func_t)(struct str *);
 typedef int (find_func_t)(const struct bucket *, const void *);
 typedef struct bucket * (make_func_t)(const void *);
 typedef void (format_cols_func_t)(struct str *);
-typedef void (format_row_func_t)(struct str *, const struct bucket *,
-   const char *);
+typedef void (format_row_func_t)(struct str *, const struct bucket *);
 
 struct hashtable {
    uint8_t bits;     /* size of hashtable in bits */
 
 struct hashtable {
    uint8_t bits;     /* size of hashtable in bits */
@@ -313,16 +312,14 @@ format_cols_host(struct str *buf)
 }
 
 static void
 }
 
 static void
-format_row_host(struct str *buf, const struct bucket *b,
-   const char *css_class)
+format_row_host(struct str *buf, const struct bucket *b)
 {
    const char *ip = addr_to_str(&(b->u.host.addr));
 
    str_appendf(buf,
 {
    const char *ip = addr_to_str(&(b->u.host.addr));
 
    str_appendf(buf,
-      "<tr class=\"%s\">\n"
+      "<tr>\n"
       " <td><a href=\"./%s/\">%s</a></td>\n"
       " <td>%s</td>\n",
       " <td><a href=\"./%s/\">%s</a></td>\n"
       " <td>%s</td>\n",
-      css_class,
       ip, ip,
       (b->u.host.dns == NULL) ? "" : b->u.host.dns);
 
       ip, ip,
       (b->u.host.dns == NULL) ? "" : b->u.host.dns);
 
@@ -391,13 +388,12 @@ format_cols_port_tcp(struct str *buf)
 }
 
 static void
 }
 
 static void
-format_row_port_tcp(struct str *buf, const struct bucket *b,
-   const char *css_class)
+format_row_port_tcp(struct str *buf, const struct bucket *b)
 {
    const struct port_tcp *p = &(b->u.port_tcp);
 
    str_appendf(buf,
 {
    const struct port_tcp *p = &(b->u.port_tcp);
 
    str_appendf(buf,
-      "<tr class=\"%s\">\n"
+      "<tr>\n"
       " <td class=\"num\">%u</td>\n"
       " <td>%s</td>\n"
       " <td class=\"num\">%'qu</td>\n"
       " <td class=\"num\">%u</td>\n"
       " <td>%s</td>\n"
       " <td class=\"num\">%'qu</td>\n"
@@ -405,7 +401,6 @@ format_row_port_tcp(struct str *buf, const struct bucket *b,
       " <td class=\"num\">%'qu</td>\n"
       " <td class=\"num\">%'qu</td>\n"
       "</tr>\n",
       " <td class=\"num\">%'qu</td>\n"
       " <td class=\"num\">%'qu</td>\n"
       "</tr>\n",
-      css_class,
       p->port,
       getservtcp(p->port),
       (qu)b->in,
       p->port,
       getservtcp(p->port),
       (qu)b->in,
@@ -431,20 +426,18 @@ format_cols_port_udp(struct str *buf)
 }
 
 static void
 }
 
 static void
-format_row_port_udp(struct str *buf, const struct bucket *b,
-   const char *css_class)
+format_row_port_udp(struct str *buf, const struct bucket *b)
 {
    const struct port_udp *p = &(b->u.port_udp);
 
    str_appendf(buf,
 {
    const struct port_udp *p = &(b->u.port_udp);
 
    str_appendf(buf,
-      "<tr class=\"%s\">\n"
+      "<tr>\n"
       " <td class=\"num\">%u</td>\n"
       " <td>%s</td>\n"
       " <td class=\"num\">%'qu</td>\n"
       " <td class=\"num\">%'qu</td>\n"
       " <td class=\"num\">%'qu</td>\n"
       "</tr>\n",
       " <td class=\"num\">%u</td>\n"
       " <td>%s</td>\n"
       " <td class=\"num\">%'qu</td>\n"
       " <td class=\"num\">%'qu</td>\n"
       " <td class=\"num\">%'qu</td>\n"
       "</tr>\n",
-      css_class,
       p->port,
       getservudp(p->port),
       (qu)b->in,
       p->port,
       getservudp(p->port),
       (qu)b->in,
@@ -469,20 +462,18 @@ format_cols_ip_proto(struct str *buf)
 }
 
 static void
 }
 
 static void
-format_row_ip_proto(struct str *buf, const struct bucket *b,
-   const char *css_class)
+format_row_ip_proto(struct str *buf, const struct bucket *b)
 {
    const struct ip_proto *p = &(b->u.ip_proto);
 
    str_appendf(buf,
 {
    const struct ip_proto *p = &(b->u.ip_proto);
 
    str_appendf(buf,
-      "<tr class=\"%s\">\n"
+      "<tr>\n"
       " <td class=\"num\">%u</td>\n"
       " <td>%s</td>\n"
       " <td class=\"num\">%'qu</td>\n"
       " <td class=\"num\">%'qu</td>\n"
       " <td class=\"num\">%'qu</td>\n"
       "</tr>\n",
       " <td class=\"num\">%u</td>\n"
       " <td>%s</td>\n"
       " <td class=\"num\">%'qu</td>\n"
       " <td class=\"num\">%'qu</td>\n"
       " <td class=\"num\">%'qu</td>\n"
       "</tr>\n",
-      css_class,
       p->proto,
       getproto(p->proto),
       (qu)b->in,
       p->proto,
       getproto(p->proto),
       (qu)b->in,
@@ -958,7 +949,7 @@ format_table(struct str *buf, struct hashtable *ht, unsigned int start,
    ht->format_cols_func(buf);
 
    for (i=start; i<end; i++) {
    ht->format_cols_func(buf);
 
    for (i=start; i<end; i++) {
-      ht->format_row_func(buf, table[i], alt ? "alt1" : "alt2");
+      ht->format_row_func(buf, table[i]);
       alt = !alt; /* alternate class for table rows */
    }
    free(table);
       alt = !alt; /* alternate class for table rows */
    }
    free(table);
index 06b1b9a..91d8ad3 100644 (file)
@@ -38,9 +38,9 @@ td.num { text-align:right; }
 th { background-color:#EFEFEF; font-weight: bold;
      padding-top:2px; padding-bottom:2px; }
 th a { color:black; border-bottom:1px dotted; }
 th { background-color:#EFEFEF; font-weight: bold;
      padding-top:2px; padding-bottom:2px; }
 th a { color:black; border-bottom:1px dotted; }
-tr.alt1 { background:#FFFFFF; }
-tr.alt2 { background:#FAFAFA; }
-tr.alt1:hover, tr.alt2:hover { background:#EFEFEF; }
+tr:nth-child(odd)  { background:#FFFFFF; }
+tr:nth-child(even) { background:#FAFAFA; }
+tr:hover { background:#EFEFEF; }
 body, td, th, p, input, textarea
                { font-family: Tahoma, Verdana, sans-serif;
                  font-size: small; }
 body, td, th, p, input, textarea
                { font-family: Tahoma, Verdana, sans-serif;
                  font-size: small; }