Return-Path: X-Original-To: notmuch@notmuchmail.org Delivered-To: notmuch@notmuchmail.org Received: from localhost (localhost [127.0.0.1]) by olra.theworths.org (Postfix) with ESMTP id 1F1AB431FC2 for ; Fri, 14 Feb 2014 08:52:21 -0800 (PST) X-Virus-Scanned: Debian amavisd-new at olra.theworths.org X-Amavis-Alert: BAD HEADER SECTION, Duplicate header field: "References" X-Spam-Flag: NO X-Spam-Score: 0 X-Spam-Level: X-Spam-Status: No, score=0 tagged_above=-999 required=5 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001] autolearn=disabled Received: from olra.theworths.org ([127.0.0.1]) by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Xw4i8B8aHNuj for ; Fri, 14 Feb 2014 08:52:13 -0800 (PST) Received: from qmta08.westchester.pa.mail.comcast.net (qmta08.westchester.pa.mail.comcast.net [76.96.62.80]) by olra.theworths.org (Postfix) with ESMTP id 573A2431FBC for ; Fri, 14 Feb 2014 08:52:13 -0800 (PST) Received: from omta14.westchester.pa.mail.comcast.net ([76.96.62.60]) by qmta08.westchester.pa.mail.comcast.net with comcast id SEvt1n0061HzFnQ58GsCoN; Fri, 14 Feb 2014 16:52:13 +0000 Received: from odin.tremily.us ([24.18.63.50]) by omta14.westchester.pa.mail.comcast.net with comcast id SGqB1n00R152l3L3aGqCfR; Fri, 14 Feb 2014 16:50:13 +0000 Received: from mjolnir.tremily.us (unknown [192.168.0.140]) by odin.tremily.us (Postfix) with ESMTPS id 6290B103A9A0; Fri, 14 Feb 2014 08:50:11 -0800 (PST) Received: (nullmailer pid 18383 invoked by uid 1000); Fri, 14 Feb 2014 16:48:57 -0000 From: "W. Trevor King" To: notmuch@notmuchmail.org Subject: [PATCH v4 1/4] nmbug-status: Color threads in HTML output Date: Fri, 14 Feb 2014 08:48:52 -0800 Message-Id: X-Mailer: git-send-email 1.8.5.2.8.g0f6c0d1 In-Reply-To: References: In-Reply-To: References: DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=comcast.net; s=q20121106; t=1392396733; bh=38zNAfzgI9JTABLqHGVuexbLAvczTWS39FsLjXEa3u4=; h=Received:Received:Received:Received:From:To:Subject:Date: Message-Id; b=HcyF61ppZL1JIUhYGoG8dFN1HyoHtIzyhHLq+fXjdTeoBazmq6IJAiHPT/AnLbSRn tiwcCGWfY2fDwRxLURvX1lRrsDBNRGJPClGB0DeQMws6gI4ikCt3ucf3Umg7pn48VD Saiz+KdevkNEGZyYiVNHLEnYT1juINgzf9rKMb/mKw0jbsWjn99WrrM6IRdrZKsVyQ XNHiJ5k9Xbc0HbQOesHUba5ETCE1fS4OT5ZWLpeSRthCQT6qLT8P03grdEhcCA+m7k U/ZxIgYgYlry2F1y5lTsCd+29zJb+Ya7+OzALSRg4hpTDbKZoRPFskC3DrQ/0adsO6 Jx8aU6A+fZXMg== Cc: Tomi Ollila X-BeenThere: notmuch@notmuchmail.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 Feb 2014 16:52:21 -0000 Add tbody sections so we don't have to color every row. Multiple tbody sections are allowed [1]. Use CSS 3's nth-child to handle even/odd coloring (skipping the spacer rows) [2], which is supported on the major browsers [3]. border-spacing is from CCS 2.1 [4,5]. I'm using it to avoid whitespace between td cells. border-radius is from CCS 3 [6,7]. I'm using it to make the colored sections a bit less harsh. I tried adding rounded borders to the tbody itself doesn't work, but I couldn't get that to work without setting the tbody's display to 'block'. That rounded the corners, but collapsed the cell spacing (e.g. columns were no longer aligned). This commit's by-corner-td approach is not particularly elegant, but it works. The td padding entries just ensure that the cell body is suitably far from the edges that it doesn't fall outside of the rounded corners. The doubled-braces are escapes from Python's str.format. [1]: http://www.w3.org/TR/html5/tabular-data.html#the-table-element [2]: http://www.w3.org/TR/css3-selectors/#nth-child-pseudo [3]: https://developer.mozilla.org/en-US/docs/Web/CSS/:nth-child#Browser_compatibility [4]: http://www.w3.org/TR/CSS2/tables.html#propdef-border-spacing [5]: https://developer.mozilla.org/en-US/docs/Web/CSS/border-spacing#Browser_compatibility [6]: http://www.w3.org/TR/css3-background/#the-border-radius [7]: https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius#Browser_compatibility --- devel/nmbug/nmbug-status | 55 +++++++++++++++++++++++++++++++++++++----------- 1 file changed, 43 insertions(+), 12 deletions(-) diff --git a/devel/nmbug/nmbug-status b/devel/nmbug/nmbug-status index 1c390e6..a8bacab 100755 --- a/devel/nmbug/nmbug-status +++ b/devel/nmbug/nmbug-status @@ -205,19 +205,22 @@ class HtmlPage (Page): return stream.write('\n') for thread in threads: + stream.write(' \n') for message_display_data in thread: stream.write(( - '\n' - ' \n' - ' \n' - '\n' - '\n' - ' \n' - ' \n' - '\n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' ).format(**message_display_data)) + stream.write(' \n') if thread != threads[-1]: - stream.write('\n') + stream.write( + ' \n') stream.write('
{date}{message-id-term}
{from}{subject}
{date}{message-id-term}
{from}{subject}


\n') def _message_display_data(self, *args, **kwargs): @@ -246,8 +249,35 @@ _PAGES['html'] = HtmlPage( header=''' - -Notmuch Patches + + Notmuch Patches +

Notmuch Patches

@@ -256,7 +286,8 @@ Generated: {date}
For more infomation see nmbug

Views

-'''.format(date=datetime.datetime.utcnow().date()), +'''.format(date=datetime.datetime.utcnow().date(), + border_radius='0.5em'), footer='\n\n', ) -- 1.8.5.2.8.g0f6c0d1