Skip to content
Snippets Groups Projects
Commit 860f3dfc authored by alvaro's avatar alvaro
Browse files

Improving graphical filters, adding leaflet map and google viz scatter chart

parent f76ef55e
No related branches found
No related tags found
No related merge requests found
......@@ -11,87 +11,85 @@ class Haanga_Extension_Filter_Googlemaps{
$names = explode(",", $varname);
$north = -90; $south=90; $east=-180; $west = 180;
$latArr =""; $longArr=""; $nameArr = "";
$w = "400";
$h = "300";
$zoom = "4";
if($names[3] != null && $names[3] != ""){
$w = $names[3];
}
if($names[4] != null && $names[4] != ""){
$h = $names[4];
}
if($names[5] != null && $names[4] != ""){
$zoom = $names[5];
}
$options = array();
$options['width'] = 500;
$options['height'] = 500;
$options['zoom'] = 10;
for($z=3; $z < count($names); $z++){
$pair = explode("=", $names[$z]);
$key = trim($pair[0], "\" '");
$value = trim($pair[1], "\" '");
$options[$key] = $value;
}
$w = $options['width'];
$h = $options['height'];
$z = intval($options['zoom']);
$points = array();
foreach($obj as $k){
if(!$firstColumn){
$latArr .= ', ';
$longArr .= ', ';
$nameArr .= ', ';
}
$latArr .= $k->$names[0]->value;
$currentPoint = array();
if($north < $k->$names[0]->value){
$north = $k->$names[0]->value;
}
$currentPoint['lat'] = $k->$names[0]->value;
if($south > $k->$names[0]->value){
$south = $k->$names[0]->value;
}
$longArr .= $k->$names[1]->value;
if($west > $k->$names[1]->value){
$west = $k->$names[1]->value;
}
if($east < $k->$names[1]->value){
$east = $k->$names[1]->value;
}
$currentPoint['long'] = $k->$names[1]->value;
$nameArr .= '"'.$k->$names[2]->value.'"';
$currentPoint['label'] = $k->$names[2]->value;
$firstColumn = false;
array_push($points, $currentPoint);
}
$pre = "<div id='map_canvas_".$randId."' style='width: ".$w."px; height: ".$h."px'></div><script type='text/javascript'
src='http://maps.googleapis.com/maps/api/js?sensor=false'></script>
$pre = "<div style='width:".$w."px;height:".$h."px;'><div id='map_canvas' style='height:100%;width:100%;border: 1px solid #333;' ></div></div>
<script src='https://maps.googleapis.com/maps/api/js?sensor=false'></script>
<script type='text/javascript'>
//<![CDATA[
function initialize() {
var myOptions = {
zoom: ".$zoom.",
center: new google.maps.LatLng(0, 0),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById('map_canvas_".$randId."'),
myOptions);
function initialize_$randId() {
var southWest = new google.maps.LatLng(".$south.", ".$west.");
var northEast = new google.maps.LatLng(".$north.", ".$east.");
var bounds = new google.maps.LatLngBounds(southWest, northEast);
map.fitBounds(bounds);
var lngSpan = northEast.lng() - southWest.lng();
var latSpan = northEast.lat() - southWest.lat();
var lngSpan = southWest.lng() - northEast.lng();
var latSpan = southWest.lat() + northEast.lat();
var locations = ".json_encode($points).";
var latArray = [".$latArr."];
var lonArray = [".$longArr."];
var labelArray = [".$nameArr."];
var marker = new Array();
for (var i = 0; i < labelArray.length; i++) {
var position = new google.maps.LatLng(latArray[i], lonArray[i]);
marker = new google.maps.Marker({position: position,map: map});
marker.setTitle(labelArray[i]);
var infowindow = new google.maps.InfoWindow({content: i+labelArray[i]});
google.maps.event.addListener(marker, 'click', (function(marker, i) {
var mapOptions = ".json_encode($options).";
mapOptions.mapTypeId= google.maps.MapTypeId.ROADMAP;
var map = new google.maps.Map(document.getElementById('map_canvas'),mapOptions);
var bounds = new google.maps.LatLngBounds(southWest, northEast);
map.fitBounds(bounds);
var infowindow = new google.maps.InfoWindow();
var marker, i;
for (i = 0; i < locations.length; i++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i].lat, locations[i].long),
title: locations[i].label,
map: map
});
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infowindow.setContent(labelArray[i]);
infowindow.setContent('<p>'+locations[i].label+'</p>')
infowindow.open(map, marker);
}
})(marker, i));
}
}
google.maps.event.addDomListener(window, 'load', initialize);
}
initialize_$randId();
//]]>
</script>";
return $pre;
......
<?php
class Haanga_Extension_Filter_GoogleVizBarChart{
public $is_safe = TRUE;
static function main($obj, $varname){
$data = "";
$i = 0;
$j = 0;
$firstColumn = true;
$options = array();
$names = explode(",", $varname);
$fieldCounter=0;
$varList = array();
foreach($names as $v){
if(strpos($v,"=")){
break;
}
$fieldCounter++;
$columnType = 'number';
if($firstColumn){
$columnType = 'string';
$firstColumn = false;
}
array_push($varList, $v);
$data .= " data.addColumn('".$columnType."', '".$v."');\n";
}
foreach($obj as $k){
foreach($varList as $v){
$value = ($j==0)?"'".$k->$v->value."'":$k->$v->value;
$data .=" data.setCell($i, $j, ".$value.");\n";
$j++;
}
$i++;
$j=0;
}
//Getting options
$options['height'] = 400;
$options['width'] = 400;
for($z=$fieldCounter; $z < count($names); $z++){
$pair = explode("=", $names[$z]);
$key = trim($pair[0], "\" '");
$value = trim($pair[1], "\" '");
$options[$key] = $value;
}
$divId = uniqid("columnchart_div");
$pre = "<div id='".$divId."'></div><script type='text/javascript' src='https://www.google.com/jsapi'></script>
<script type='text/javascript'>
var options_$divId = ".json_encode($options).";
google.load('visualization', '1', {packages:['corechart']});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = new google.visualization.DataTable();
data.addRows(".$i.");\n
".$data." var barchart = new google.visualization.BarChart(document.getElementById('".$divId."'));
barchart.draw(data, options_$divId);
}
</script>";
return $pre;
}
}
......@@ -7,17 +7,27 @@ class Haanga_Extension_Filter_GoogleVizColumnChart{
$i = 0;
$j = 0;
$firstColumn = true;
$options = array();
$names = explode(",", $varname);
$fieldCounter=0;
$varList = array();
foreach($names as $v){
if(strpos($v,"=")){
break;
}
$fieldCounter++;
$columnType = 'number';
if($firstColumn){
$columnType = 'string';
$firstColumn = false;
}
array_push($varList, $v);
$data .= " data.addColumn('".$columnType."', '".$v."');\n";
}
foreach($obj as $k){
foreach($names as $v){
foreach($varList as $v){
$value = ($j==0)?"'".$k->$v->value."'":$k->$v->value;
$data .=" data.setCell($i, $j, ".$value.");\n";
$j++;
......@@ -25,16 +35,29 @@ class Haanga_Extension_Filter_GoogleVizColumnChart{
$i++;
$j=0;
}
//Getting options
$options['height'] = 400;
$options['width'] = 400;
for($z=$fieldCounter; $z < count($names); $z++){
$pair = explode("=", $names[$z]);
$key = trim($pair[0], "\" '");
$value = trim($pair[1], "\" '");
$options[$key] = $value;
}
$divId = uniqid("columnchart_div");
$pre = "<div id='".$divId."'></div><script type='text/javascript' src='https://www.google.com/jsapi'></script>
<script type='text/javascript'>
var options_$divId = ".json_encode($options).";
google.load('visualization', '1', {packages:['corechart']});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = new google.visualization.DataTable();
data.addRows(".$i.");\n
".$data." var columnchart = new google.visualization.ColumnChart(document.getElementById('".$divId."'));
columnchart.draw(data, {showRowNumber: true, width: '80%'});
columnchart.draw(data, options_$divId);
}
</script>";
return $pre;
......
......@@ -5,18 +5,15 @@ class Haanga_Extension_Filter_GoogleVizPieChart{
static function main($obj, $varname){
$data = "";
$i = 0;
$options = array();
$randId = rand();
$firstColumn = true;
$names = explode(",", $varname);
$w = "400";
$h = "300";
$h = "400";
if($names[3] != null && $names[3] != ""){
$w = $names[3];
}
if($names[4] != null && $names[4] != ""){
$h = $names[4];
}
$options['width'] = $w;
$options['height'] = $h;
$data .= "data.addColumn('string', '".$names[0]."');";
$data .= "data.addColumn('number', '".$names[1]."');";
......@@ -25,16 +22,25 @@ class Haanga_Extension_Filter_GoogleVizPieChart{
$data .=" data.setCell($i, 1, ".$k->$names[1]->value.");\n";
$i++;
}
//Getting options
for($j=2; $j < count($names); $j++){
$pair = explode("=", $names[$j]);
$key = trim($pair[0], "\" '");
$value = trim($pair[1], "\" '");
$options[$key] = $value;
}
$pre = "<div id='piechart_div_".$randId."' style='width: ".$w."px; height: ".$h."px'></div><script type='text/javascript' src='https://www.google.com/jsapi'></script>
$pre = "<div id='piechart_div_".$randId."'></div><script type='text/javascript' src='https://www.google.com/jsapi'></script>
<script type='text/javascript'>
var options_$randId = ".json_encode($options).";
google.load('visualization', '1', {packages:['corechart']});
google.setOnLoadCallback(drawChart_".$randId.");
function drawChart_".$randId."() {
var data = new google.visualization.DataTable();
data.addRows(".$i.");\n
".$data." var piechart = new google.visualization.PieChart(document.getElementById('piechart_div_".$randId."'));
piechart.draw(data);
piechart.draw(data, options_$randId);
}
</script>";
return $pre;
......
<?php
class Haanga_Extension_Filter_GoogleVizScatterChart{
public $is_safe = TRUE;
static function main($obj, $varname){
$data = "";
$i = 0;
$j = 0;
$firstColumn = true;
$options = array();
$names = explode(",", $varname);
$fieldCounter=0;
$varList = array();
foreach($names as $v){
if(strpos($v,"=")){
break;
}
$fieldCounter++;
$columnType = 'number';
array_push($varList, $v);
$data .= " data.addColumn('".$columnType."', '".$v."');\n";
}
foreach($obj as $k){
foreach($varList as $v){
$value = $k->$v->value;
$data .=" data.setCell($i, $j, ".$value.");\n";
$j++;
}
$i++;
$j=0;
}
//Getting options
$options['height'] = 400;
$options['width'] = 400;
for($z=$fieldCounter; $z < count($names); $z++){
$pair = explode("=", $names[$z]);
$key = trim($pair[0], "\" '");
$value = trim($pair[1], "\" '");
$options[$key] = $value;
}
$divId = uniqid("columnchart_div");
$pre = "<div id='".$divId."'></div><script type='text/javascript' src='https://www.google.com/jsapi'></script>
<script type='text/javascript'>
var options_$divId = ".json_encode($options).";
google.load('visualization', '1', {packages:['corechart']});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = new google.visualization.DataTable();
data.addRows(".$i.");\n
".$data." var barchart = new google.visualization.ScatterChart(document.getElementById('".$divId."'));
barchart.draw(data, options_$divId);
}
</script>";
return $pre;
}
}
<?php
class Haanga_Extension_Filter_Leafletmaps{
public $is_safe = TRUE;
static function main($obj, $varname){
$data = "";
$i = 0;
$j = 0;
$randId = rand();
$firstColumn = true;
$names = explode(",", $varname);
$north = -90; $south=90; $east=-180; $west = 180;
$latArr =""; $longArr=""; $nameArr = "";
$options = array();
$options['width'] = 500;
$options['height'] = 500;
$options['zoom'] = 10;
for($z=3; $z < count($names); $z++){
$pair = explode("=", $names[$z]);
$key = trim($pair[0], "\" '");
$value = trim($pair[1], "\" '");
$options[$key] = $value;
}
$w = $options['width'];
$h = $options['height'];
$z = intval($options['zoom']);
$points = array();
foreach($obj as $k){
$currentPoint = array();
if($north < $k->$names[0]->value){
$north = $k->$names[0]->value;
}
$currentPoint['lat'] = $k->$names[0]->value;
if($south > $k->$names[0]->value){
$south = $k->$names[0]->value;
}
if($west > $k->$names[1]->value){
$west = $k->$names[1]->value;
}
if($east < $k->$names[1]->value){
$east = $k->$names[1]->value;
}
$currentPoint['long'] = $k->$names[1]->value;
$currentPoint['label'] = $k->$names[2]->value;
$firstColumn = false;
array_push($points, $currentPoint);
}
$centerLat = ($south+$north)/2;
$centerLon = ($east+$west)/2;
$pre = "<div id='map_$randId' style='height: 580px;'></div>
<script src='http://cdn.leafletjs.com/leaflet-0.4/leaflet.js'></script>
<script type='text/javascript'>
//<![CDATA[
function loadCssFile() {
var fileref=document.createElement('link');
fileref.setAttribute('rel', 'stylesheet');
fileref.setAttribute('type', 'text/css');
fileref.setAttribute('href', 'http://cdn.leafletjs.com/leaflet-0.4/leaflet.css');
document.getElementsByTagName('head')[0].appendChild(fileref);
}
function initialize_$randId() {
var locations = ".json_encode($points).";
var mapOptions = ".json_encode($options).";
mapOptions.attribution = osmAttrib;
map = new L.Map('map_$randId');
var osmUrl='http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';
var osmAttrib='Map data &copy; <a href=\"http://openstreetmap.org\">OpenStreetMap</a> contributors';
var osm = new L.TileLayer(osmUrl, mapOptions );
map.setView([$centerLat, $centerLon],mapOptions.zoom);
map.addLayer(osm);
for(var i=0;i<locations.length;i++){
L.marker([locations[i].lat, locations[i].long]).addTo(map).bindPopup(locations[i].label)
}
}
// loadCssFile();
initialize_$randId();
//]]>
</script>";
return $pre;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment