You are here

public function FrxGraphTemplate::generate in Forena Reports 6.2

Same name and namespace in other branches
  1. 7.2 templates/FrxGraphTemplate.inc \FrxGraphTemplate::generate()
  2. 7.3 templates/FrxGraphTemplate.inc \FrxGraphTemplate::generate()

* * Enter description here ... *

Parameters

string $data_block: * @param SimpleXMLElement $xml * @param array $config

Overrides FrxTemplate::generate

File

templates/FrxGraphTemplate.inc, line 111

Class

FrxGraphTemplate

Code

public function generate($xml, $config) {
  $media = $this
    ->extract('media', $config);
  $media = $media ? $media : 'FrxSVGGraph';
  $div = $this
    ->blockDiv($config);
  if ($media == 'FrxSVGGraph') {

    // Clean series

    //if (count($config['series'])==1) $config['series'] = $config['series'][1];

    //if (count($config['seriesx'])==1) $config['seriesx'] = $config['seriesx'][1];
    if (@$config['series']) {
      foreach ($config['series'] as $i => $series) {
        if (!$series) {
          unset($config['series'][$i]);
        }
      }
    }

    // Clean colors
    if (isset($config['colors'])) {
      foreach ($config['colors'] as $i => $color) {
        if (!$color) {
          unset($color[$i]);
        }
      }
    }
    $type = $this
      ->extract('type', $config);
    $xpath = $this
      ->extract('xpath', $config);
    $clause = $this
      ->extract('clause', $config);
    $gen_table = $this
      ->extract('gen_table', $config);
    $frxparms = array(
      'type' => $type,
      'renderer' => 'FrxSVGGraph',
      'xpath' => $xpath,
      'options' => forena_query_string($config),
    );
    $svg = $this
      ->addNode($div, 2, 'svg', null, null, $frxparms);
    if ($gen_table) {
      $columns = $this
        ->columns($xml);
      $table = $this
        ->addNode($div, 4, 'table');
      $thead = $this
        ->addNode($table, 6, 'thead');
      $throw = $this
        ->addNode($thead, 8, 'tr');
      $tbody = $this
        ->addNode($table, 6, 'tbody');
      $tdrow = $this
        ->addNode($tbody, 8, 'tr', null, null, array(
        'foreach' => '*',
      ));
      if ($columns) {
        foreach ($columns as $col) {
          $this
            ->addNode($throw, 10, 'th', $col);
          $this
            ->addNode($tdrow, 10, 'td', '{' . $col . '}');
        }
      }
    }
  }
}