From: anuko Date: Tue, 26 Dec 2017 14:21:06 +0000 (+0000) Subject: Added a couple of test files for experimentation with rendering of tables. X-Git-Tag: timetracker_1.19-1~1437 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=b363b0ad58a3671563975206704a4d9aa354a92f;p=timetracker.git Added a couple of test files for experimentation with rendering of tables. --- diff --git a/WEB-INF/templates/footer.tpl b/WEB-INF/templates/footer.tpl index 345ef379..7c5de958 100644 --- a/WEB-INF/templates/footer.tpl +++ b/WEB-INF/templates/footer.tpl @@ -12,7 +12,7 @@
-
 Anuko Time Tracker 1.12.3.3690 | Copyright © Anuko | +  Anuko Time Tracker 1.12.3.3691 | Copyright © Anuko | {$i18n.footer.credits} | {$i18n.footer.license} | {$i18n.footer.improve} diff --git a/WEB-INF/templates/table_test.tpl b/WEB-INF/templates/table_test.tpl new file mode 100644 index 00000000..cf7e4b2b --- /dev/null +++ b/WEB-INF/templates/table_test.tpl @@ -0,0 +1,12 @@ +{$forms.weekTimeForm.open} + + + + +
{$forms.weekTimeForm.week_durations.control}
+ + + + +
{$forms.weekTimeForm.btn_submit.control}
+{$forms.weekTimeForm.close} diff --git a/table_test.php b/table_test.php new file mode 100644 index 00000000..d4b21c74 --- /dev/null +++ b/table_test.php @@ -0,0 +1,118 @@ + 'something goes here too', // Row ideentifier. + 'label' => 'This is a label for row 0', + 'day_0' => array('id' => '0_0', 'duration' => '00:00'), + 'day_1' => array('id' => '0_1', 'duration' => '01:00'), + 'day_2' => array('id' => '0_2', 'duration' => '02:00'), + 'day_3' => array('id' => '0_3', 'duration' => null), + 'day_4' => array('id' => '0_4', 'duration' => '04:00') + ), + array( // Row 1. + 'label' => 'This is a label for row 1', + 'day_0' => array('id' => '1_0', 'duration' => '00:30'), + 'day_1' => array('id' => '1_1', 'duration' => '01:30'), + 'day_2' => array('id' => '1_2', 'duration' => '02:30'), + ) +); + +$totals = array( + 'label' => 'Total:', + 'day_0' => '00:30', + 'day_1' => '02:30', + 'day_2' => '04:30', + 'day_3' => null, + 'day_4' => '04:00', + 'day_5' => null, + 'day_6' => null +); + +// Define rendering class for a label field to the left of durations. +class LabelCellRenderer extends DefaultCellRenderer { + function render(&$table, $value, $row, $column, $selected = false) { + $this->setOptions(array('width'=>200,'valign'=>'middle')); + $this->setValue(htmlspecialchars($value)); + return $this->toString(); + } +} + +// Define rendering class for a single cell for time entry in week view table. +class TimeCellRenderer extends DefaultCellRenderer { + function render(&$table, $value, $row, $column, $selected = false) { + $field_name = $table->getValueAtName($row,$column)['id']; // Our text field names (and ids) are like x_y (row_column). + $field = new TextField($field_name); + $field->setFormName($table->getFormName()); + $field->setSize(2); + $field->setValue($table->getValueAt($row,$column)['duration']); + $this->setValue($field->getHtml()); + return $this->toString(); + } +} + +// Elements of weekTimeForm. +$form = new Form('weekTimeForm'); + +// Create week_durations table. +$table = new Table('week_durations'); +// $table->setIAScript('markModified'); // TODO: write a script to mark table or particular cells as modified. +$table->setTableOptions(array('width'=>'100%','cellspacing'=>'1','cellpadding'=>'3','border'=>'0')); +$table->setRowOptions(array('valign'=>'top','class'=>'tableHeader')); +$table->setData($durations_with_labels); +// Add columns to table. +$table->addColumn(new TableColumn('label', '', new LabelCellRenderer(), $totals['label'])); +$table->addColumn(new TableColumn('day_0', 'day 0', new TimeCellRenderer(), $totals['day_0'])); +$table->addColumn(new TableColumn('day_1', 'day 1', new TimeCellRenderer(), $totals['day_1'])); +$table->addColumn(new TableColumn('day_2', 'day 2', new TimeCellRenderer(), $totals['day_2'])); +$table->addColumn(new TableColumn('day_3', 'day 3', new TimeCellRenderer(), $totals['day_3'])); +$table->addColumn(new TableColumn('day_4', 'day 4', new TimeCellRenderer(), $totals['day_4'])); +$table->addColumn(new TableColumn('day_5', 'day 5', new TimeCellRenderer())); +$table->addColumn(new TableColumn('day_6', 'day 6', new TimeCellRenderer())); +$table->setInteractive(false); +$form->addInputElement($table); + +$form->addInput(array('type'=>'submit','name'=>'btn_submit','value'=>$i18n->getKey('button.submit'))); + +// Submit. +if ($request->isPost()) { + if ($request->getParameter('btn_submit')) { + } +} + +$smarty->assign('forms', array($form->getName()=>$form->toArray())); +$smarty->assign('title', $i18n->getKey('title.time')); +$smarty->assign('content_page_name', 'table_test.tpl'); +$smarty->display('index.tpl');