/** * @override */ function PreRender($args = array()) { $id = $this->id; $this->_basicOptions['center'] = '[jscode]' . $this->_basicOptions['center']; $this->_basicOptions['mapTypeId'] = '[jscode]' . $this->_basicOptions['mapTypeId']; if ($this->AutoShowHints) { $this->_basicOptions['autoShowHints'] = true; } $init = array("wdf.gmap.init('{$id}'," . system_to_json($this->_basicOptions) . ");"); foreach ($this->_markers as $m) { list($lat, $lng, $opt) = $m; $init[] = "wdf.gmap.addMarker('{$id}',{$lat},{$lng}," . json_encode($opt) . ");"; } foreach ($this->_addresses as $a) { if (is_array($a)) { $init[] = "wdf.gmap.addAddress('{$id}'," . json_encode($a['address']) . "," . json_encode($a['title']) . ");"; } else { $init[] = "wdf.gmap.addAddress('{$id}'," . json_encode($a) . ");"; } } $init[] = "wdf.gmap.showAllMarkers('{$id}');"; $this->_addLoadCallback('maps', $init); return parent::PreRender($args); }
/** * @override */ function PreRender($args = array()) { if (count($this->_data) > 1) { $id = $this->id; $opts = json_encode($this->gvOptions); if (count($this->_data) > 0) { array_walk_recursive($this->_data, function (&$item, &$key) { if ($item instanceof DateTime) { $item = "[jscode]new Date(" . $item->getTimestamp() * 1000 . ")"; } }); $d = system_to_json($this->_data); $js = "var d=google.visualization.arrayToDataTable({$d});" . "var c=new google.visualization.{$this->gvType}(\$('#{$id}').get(0));" . "google.visualization.events.addListener(c, 'ready', function(){ \$('#{$id}').data('ready',true); });" . "c.draw(d,{$opts});" . "\$('#{$id}').data('googlechart', c);"; } else { $q = buildQuery($this->id, 'Query'); $js = "var {$id} = new google.visualization.Query('{$q}');" . "{$id}.setQuery('{$this->gvQuery}');" . "{$id}.send(function(r){ if(r.isError()){ \$('#{$id}').html(r.getDetailedMessage()); }else{ var c=new google.visualization.{$this->gvType}(\$('#{$id}').get(0));" . "google.visualization.events.addListener(c, 'ready', function(){ \$('#{$id}').data('ready',true); });" . "c.draw(r.getDataTable(),{$opts});" . "\$('#{$id}').data('googlechart', c);}});"; } $this->_addLoadCallback('visualization', $js, true); } else { $t = $this->opt('title'); $this->css('text-align', 'center')->content(($t ? "<b>{$t}:</b> " : "") . tds("TXT_NO_DATA", "No data found"), true); } if (isset($this->gvOptions['width'])) { $this->css('width', "{$this->gvOptions['width']}px"); } if (isset($this->gvOptions['height'])) { $this->css('height', "{$this->gvOptions['height']}px"); } return parent::PreRender($args); }