Exemple #1
0
 /**
  * @param RendererRegistry $renderers
  * @return \rtens\domin\delivery\web\Element[]
  */
 public function headElements(RendererRegistry $renderers)
 {
     $renderer = $renderers->getRenderer($this->content);
     if ($renderer instanceof WebRenderer) {
         return $renderer->headElements($this->content);
     }
     return [];
 }
Exemple #2
0
 /**
  * @param mixed $value
  * @return mixed
  */
 public function render($value)
 {
     $delimiter = PHP_EOL;
     $lines = [];
     foreach ($value as $key => $item) {
         $lines[] = $key . ': ' . $this->renderers->getRenderer($item)->render($item);
     }
     return PHP_EOL . implode($delimiter, $lines) . PHP_EOL;
 }
Exemple #3
0
 /**
  * @param mixed $value
  * @return array|Element[]
  */
 public function headElements($value)
 {
     $content = $this->getContent($value);
     $renderer = $this->renderers->getRenderer($content);
     if ($renderer instanceof WebRenderer) {
         return $renderer->headElements($content);
     }
     return [];
 }
Exemple #4
0
 /**
  * @param RendererRegistry $renderers
  * @return \rtens\domin\delivery\web\Element[]
  */
 public function headElements(RendererRegistry $renderers)
 {
     $elements = [HeadElements::jquery()];
     $renderer = $renderers->getRenderer($this->content);
     if ($renderer instanceof WebRenderer) {
         $elements = array_merge($elements, $renderer->headElements($this->content));
     }
     return $elements;
 }
Exemple #5
0
 /**
  * @param mixed $value
  * @return mixed
  */
 public function render($value)
 {
     $delimiter = PHP_EOL . PHP_EOL;
     $isList = array_keys($value) == range(0, count($value) - 1);
     $lines = [];
     foreach ($value as $key => $item) {
         $lines[] = ($isList ? '' : $key . ': ') . $this->renderers->getRenderer($item)->render($item);
     }
     return PHP_EOL . implode($delimiter, $lines) . PHP_EOL;
 }
Exemple #6
0
 /**
  * @param array $array
  * @return array|Element[]
  */
 public function headElements($array)
 {
     $elements = [];
     foreach ($array as $item) {
         $renderer = $this->renderers->getRenderer($item);
         if ($renderer instanceof WebRenderer) {
             $elements = array_merge($elements, $renderer->headElements($item));
         }
     }
     return $elements;
 }
Exemple #7
0
 function collectsHeadElementsOfItems()
 {
     $itemRenderer = Mockster::of(WebRenderer::class);
     $this->registry->add(Mockster::mock($itemRenderer));
     Mockster::stub($itemRenderer->handles(Argument::any()))->will()->return_(true);
     Mockster::stub($itemRenderer->headElements('foo'))->will()->return_([new Element('foo')]);
     Mockster::stub($itemRenderer->headElements(Argument::object(\DateTime::class)))->will()->return_([new Element('bar')]);
     $elements = $this->renderer->headElements(['foo', new \DateTime()]);
     $this->assert->size($elements, 2);
     $this->assert((string) $elements[0], '<foo></foo>');
     $this->assert((string) $elements[1], '<bar></bar>');
 }
 function configureTableRendering()
 {
     $this->renderers->add(new ElementRenderer());
     $this->renderers->add(new PrimitiveRenderer());
     $data = [json_decode('{"one":"uno","two":"dos","three":"tres"}'), json_decode('{"one":"un","two":"deux","three":"trois"}')];
     $table = (new ObjectTable($data, $this->types))->selectProperties(['three', 'one'])->setHeader('one', '1')->setFilter('three', function ($s) {
         return strtoupper($s);
     });
     $this->assert->contains($this->tableRenderer->render($table), "<th>Three</th>\n<th>1</th>");
     $this->assert->contains($this->tableRenderer->render($table), "<td>TRES</td>\n<td>uno</td>");
     $this->assert->contains($this->tableRenderer->render($table), "<td>TROIS</td>\n<td>un</td>");
 }
Exemple #9
0
 /**
  * @param Table $value
  * @return array|Element[]
  */
 public function headElements($value)
 {
     $elements = [];
     foreach ($value->getItems() as $item) {
         foreach ($value->getCells($item) as $cell) {
             $renderer = $this->renderers->getRenderer($cell);
             if ($renderer instanceof WebRenderer) {
                 $elements = array_merge($elements, $renderer->headElements($cell));
             }
         }
     }
     return $elements;
 }
Exemple #10
0
 /**
  * @param DataTable $value
  * @return array|Element[]
  */
 public function headElements($value)
 {
     $elements = [];
     $table = $value->getTable();
     $renderer = $this->renderers->getRenderer($table);
     if ($renderer instanceof WebRenderer) {
         $elements = $renderer->headElements($table);
     }
     $options = json_encode($value->getOptions());
     $elements[] = HeadElements::style('//cdn.datatables.net/1.10.7/css/jquery.dataTables.min.css');
     $elements[] = HeadElements::script('//cdn.datatables.net/1.10.7/js/jquery.dataTables.min.js');
     $elements[] = new Element('script', [], ["\n            \$(function () {\n                \$('.data-table > table').dataTable({$options});\n            });\n        "]);
     return $elements;
 }
Exemple #11
0
 private function registerRenderers()
 {
     $links = new LinkPrinter($this->links, $this->actions, $this->parser, $this->token);
     $this->renderers->add(new ElementRenderer());
     $this->renderers->add(new BooleanRenderer());
     $this->renderers->add(new ColorRenderer());
     $this->renderers->add(new PrimitiveRenderer());
     $this->renderers->add(new DateTimeRenderer());
     $this->renderers->add(new DateIntervalRenderer());
     $this->renderers->add(new TextRenderer());
     $this->renderers->add(new HtmlRenderer());
     $this->renderers->add(new IdentifierRenderer($links));
     $this->renderers->add(new FileRenderer());
     $this->renderers->add(new ImageRenderer());
     $this->renderers->add(new ScatterChartRenderer());
     $this->renderers->add(new ChartRenderer());
     $this->renderers->add(new DelayedOutputRenderer());
     $this->renderers->add(new DashboardItemRenderer($this->renderers));
     $this->renderers->add(new ActionListRenderer($this->parser));
     $this->renderers->add(new ActionPanelRenderer($this->renderers, $this->actions, $this->fields));
     $this->renderers->add(new DataTableRenderer($this->renderers));
     $this->renderers->add(new TableRenderer($this->renderers, $links));
     $this->renderers->add(new ListRenderer($this->renderers, $links));
     $this->renderers->add(new MapRenderer($this->renderers, $links));
     $this->renderers->add(new ObjectRenderer($this->renderers, $this->types, $links));
 }
Exemple #12
0
 /**
  * @param mixed $value
  * @return mixed
  */
 public function render($value)
 {
     if (method_exists($value, '__toString')) {
         return (string) $value;
     }
     $output = ['### ' . (new \ReflectionClass($value))->getShortName() . ' ###'];
     $reader = new PropertyReader($this->types, $value);
     foreach ($reader->readInterface($value) as $property) {
         if (!$property->canGet()) {
             continue;
         }
         $propertyValue = $property->get($value);
         $rendered = $this->renderers->getRenderer($propertyValue)->render($propertyValue);
         $output[] = ucfirst($property->name()) . ': ' . rtrim(str_replace(PHP_EOL, PHP_EOL . '    ', $rendered));
     }
     return implode(PHP_EOL, $output) . PHP_EOL;
 }
Exemple #13
0
 function nestedTables()
 {
     $this->renderers->add(new PrimitiveRenderer());
     $this->renderers->add($this->tableRenderer);
     $tableInTable = new ArrayTable([['table' => new ArrayTable([['one' => 'uno', 'two' => 'dos']])]]);
     $this->tableRenderer->render($tableInTable);
     $this->tableRenderer->headElements($tableInTable);
     $this->assert->pass();
 }
Exemple #14
0
 protected function handleValueResult(ValueResult $result)
 {
     $value = $result->getValue();
     $renderer = $this->renderers->getRenderer($value);
     if ($renderer instanceof WebRenderer) {
         $this->headElements = $renderer->headElements($value);
     }
     $this->model['output'] = $renderer->render($value);
     if (!$this->action->isModifying()) {
         $this->crumbs->updateCrumbs($this->action, $this->actionId);
     }
 }
Exemple #15
0
 function collectHeadElementsOfProperties()
 {
     $propertyRenderer = Mockster::of(WebRenderer::class);
     $this->renderers->add(Mockster::mock($propertyRenderer));
     Mockster::stub($propertyRenderer->handles(Argument::any()))->will()->return_(true);
     Mockster::stub($propertyRenderer->headElements('uno'))->will()->return_([new Element('one')]);
     Mockster::stub($propertyRenderer->headElements('bar'))->will()->return_([new Element('foo')]);
     $elements = $this->renderer->headElements(json_decode('{"one":"uno", "foo":"bar"}'));
     $this->assert->size($elements, 2);
     $this->assert((string) $elements[0], '<one></one>');
     $this->assert((string) $elements[1], '<foo></foo>');
 }
Exemple #16
0
 private function registerRenderers()
 {
     $this->renderers->add(new BooleanRenderer());
     $this->renderers->add(new PrimitiveRenderer());
     $this->renderers->add(new DateTimeRenderer());
     $this->renderers->add(new DateIntervalRenderer());
     $this->renderers->add(new HtmlRenderer());
     $this->renderers->add(new IdentifierRenderer());
     $this->renderers->add(new FileRenderer(''));
     $this->renderers->add(new DelayedOutputRenderer());
     $this->renderers->add(new ObjectTableRenderer($this->renderers));
     $this->renderers->add(new DataTableRenderer($this->renderers));
     $this->renderers->add(new TableRenderer($this->renderers));
     $this->renderers->add(new ChartRenderer($this->renderers));
     $this->renderers->add(new ArrayRenderer($this->renderers));
     $this->renderers->add(new ObjectRenderer($this->renderers, $this->types));
 }
Exemple #17
0
 private function givenARendererFor_RenderingWith($value, $callback)
 {
     $renderer = Mockster::of(Renderer::class);
     $this->renderers->add(Mockster::mock($renderer));
     Mockster::stub($renderer->handles($value))->will()->return_(true);
     Mockster::stub($renderer->render(Argument::any()))->will()->forwardTo($callback);
 }
Exemple #18
0
 private function whenIExecute($id)
 {
     $fields = new FieldRegistry();
     foreach ($this->fields as $field) {
         $fields->add(Mockster::mock($field));
     }
     $renderers = new RendererRegistry();
     foreach ($this->renderers as $renderer) {
         $renderers->add(Mockster::mock($renderer));
     }
     $executor = new Executor($this->action->registry, $fields, $renderers, Mockster::mock($this->reader));
     $this->result = $executor->execute($id);
 }
Exemple #19
0
 private function givenAllValuesAreRenderedWith($callback)
 {
     $renderer = Mockster::of(Renderer::class);
     $this->renderers->add(Mockster::mock($renderer));
     Mockster::stub($renderer->handles(Arg::any()))->will()->return_(true);
     Mockster::stub($renderer->render(Arg::any()))->will()->forwardTo($callback);
 }
Exemple #20
0
 /**
  * @param DataTable $value
  * @return mixed
  */
 public function render($value)
 {
     $table = $value->getTable();
     return $this->renderers->getRenderer($table)->render($table);
 }
Exemple #21
0
 protected function render($value)
 {
     return $this->renderers->getRenderer($value)->render($value);
 }