diff options
| author | Christian Weiske <cweiske@cweiske.de> | 2014-01-23 17:05:49 +0100 |
|---|---|---|
| committer | Christian Weiske <cweiske@cweiske.de> | 2014-01-23 17:05:49 +0100 |
| commit | e86787a8eb6a31fbe95f1a3854d66e25e5e63c67 (patch) | |
| tree | 1b311ee39e02a597bf5d83c325f975de71f398f4 /src/bdrem/Renderer | |
| parent | 441c72bbf3d29be5c7f5eb0fd43ac267fe059c2f (diff) | |
| download | bdrem-e86787a8eb6a31fbe95f1a3854d66e25e5e63c67.tar.gz bdrem-e86787a8eb6a31fbe95f1a3854d66e25e5e63c67.zip | |
html renderer, console renderer uses pear's Console_Table
Diffstat (limited to 'src/bdrem/Renderer')
| -rw-r--r-- | src/bdrem/Renderer/Console.php | 47 | ||||
| -rw-r--r-- | src/bdrem/Renderer/Html.php | 93 | ||||
| -rw-r--r-- | src/bdrem/Renderer/HtmlTable.php | 58 |
3 files changed, 172 insertions, 26 deletions
diff --git a/src/bdrem/Renderer/Console.php b/src/bdrem/Renderer/Console.php index 2cd185f..01d6eb2 100644 --- a/src/bdrem/Renderer/Console.php +++ b/src/bdrem/Renderer/Console.php @@ -5,35 +5,30 @@ class Renderer_Console { public function render($arEvents) { - $s = "Days Age Name Event Date\n"; - $s .= "---- --- ---------------------------------------- -------------------- ----------\n"; - foreach ($arEvents as $event) { - $s .= sprintf( - "%3d %4s %s %s %s\n", - $event->days, - $event->age, - $this->str_pad($event->title, 40), - $this->str_pad($event->type, 20), - $event->date - ); - } - return $s; - } + $tbl = new \Console_Table( + CONSOLE_TABLE_ALIGN_LEFT, + array('sect' => '', 'rule' => '-', 'vert' => '') + ); + $tbl->setAlign(0, CONSOLE_TABLE_ALIGN_RIGHT); + $tbl->setAlign(1, CONSOLE_TABLE_ALIGN_RIGHT); - public function str_pad( - $input, $pad_length, $pad_string = ' ', $pad_type = STR_PAD_RIGHT - ) { - $l = mb_strlen($input, 'utf-8'); - if ($l >= $pad_length) { - return $input; - } + $tbl->setHeaders( + array('Days', 'Age', 'Name', 'Event', 'Date', 'Day') + ); - $p = str_repeat($pad_string, $pad_length - $l); - if ($pad_type == STR_PAD_RIGHT) { - return $input . $p; - } else { - return $p . $input; + foreach ($arEvents as $event) { + $tbl->addRow( + array( + $event->days, + $event->age, + wordwrap($event->title, 30, "\n", true), + wordwrap($event->type, 20, "\n", true), + $event->date, + strftime('%a', strtotime($event->localDate)) + ) + ); } + return $tbl->getTable(); } } ?> diff --git a/src/bdrem/Renderer/Html.php b/src/bdrem/Renderer/Html.php new file mode 100644 index 0000000..bb027d2 --- /dev/null +++ b/src/bdrem/Renderer/Html.php @@ -0,0 +1,93 @@ +<?php +namespace bdrem; + +class Renderer_Html +{ + public function render($arEvents) + { + $tr = new Renderer_HtmlTable(); + $table = $tr->render($arEvents); + $s = <<<HTM +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + <head> + <title>bdrem</title> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + <style type="text/css"> +table { + border: 1px solid black; + border-collapse: collapse; + margin-left: auto; + margin-right: auto; +} +td, th { + border: 1px solid grey; + border-left: 0px; + border-right: 0px; + padding: 0.1ex 1ex; +} + +tr.prev td { + background-color: #C4DDF4; +} +tr.today td { + background-color: #FEDCBA; +} +tr.next td { + background-color: #DEFABC; +} +tr:hover td { + background-color: white; +} + +.r { + text-align: right; +} + +tr td.icon { + background-color: white; +} +tr.prev td.icon { + color: #00A; +} +tr.today td.icon { + color: black; + background-color: #FEDCBA; +} +tr.next td.icon { + color: #080; +} + +tr.d-3 td.icon:before { + content: "\342\227\224" +} +tr.d-2 td.icon:before { + content: "\342\227\221" +} +tr.d-1 td.icon:before { + content: "\342\227\225" +} +tr.d0 td.icon:before { + content: "\342\230\205" +} +tr.d1 td.icon:before { + content: "\342\227\225" +} +tr.d2 td.icon:before { + content: "\342\227\221" +} +tr.d3 td.icon:before { + content: "\342\227\224" +} + </style> + </head> + <body> +$table + </body> +</html> +HTM; + return $s; + } +} +?> diff --git a/src/bdrem/Renderer/HtmlTable.php b/src/bdrem/Renderer/HtmlTable.php new file mode 100644 index 0000000..574036f --- /dev/null +++ b/src/bdrem/Renderer/HtmlTable.php @@ -0,0 +1,58 @@ +<?php +namespace bdrem; + +class Renderer_HtmlTable +{ + public function render($arEvents) + { + $s = <<<HTM +<table> + <thead> + <tr> + <th colspan="2">Days</th> + <th>Age</th> + <th>Event</th> + <th>Name</th> + <th>Date</th> + <th>Day</th> + </tr> + </thead> + <tbody> + +HTM; + foreach ($arEvents as $event) { + $class = 'd' . $event->days; + if ($event->days < 0) { + $class .= ' prev'; + } else if ($event->days == 0) { + $class .= ' today'; + } else { + $class .= ' next'; + } + $s .= sprintf( + '<tr class="' . trim($class) . '">' + . '<td class="icon"></td>' + . '<td class="r">%d</td>' + . '<td class="r">%s</td>' + . '<td>%s</td>' + . '<td>%s</td>' + . '<td class="r">%s</td>' + . '<td>%s</td>' + . "</tr>\n", + $event->days, + $event->age, + $event->title, + $event->type, + $event->date, + strftime('%a', strtotime($event->localDate)) + ); + } + $s .= <<<HTM + </tbody> +</table> + +HTM; + return $s; + } +} +?> |
