Plugin Directory

Changeset 208040


Ignore:
Timestamp:
02/19/2010 05:54:47 PM (16 years ago)
Author:
dugbug
Message:

0.8

Location:
easy-chart-builder/trunk
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • easy-chart-builder/trunk/easy-chart-builder.php

    r202637 r208040  
    22/*
    33Plugin Name: Easy Chart Builder
    4 Version: 0.7
     4Version: 0.8
    55Plugin URI: http://www.dyerware.com/main/easy-chart-builder
    66Description: Creates a chart directly in your post or page via shortcut.  Manages sizing of chart to support wptouch and other mobile themes.
     
    3333    {   
    3434        $jsDir = get_option('siteurl') . '/wp-content/plugins/easy-chart-builder/js/';
    35         wp_register_script('wpEasyCharts', "{$jsDir}easy-chart-builder.js", false, '0.9');       
     35        wp_register_script('wpEasyCharts', "{$jsDir}easy-chart-builder.js", false, '0.10');       
    3636    }
    3737
     
    104104                'group11values' => '0,0,0',
    105105                'group12values' => '0,0,0',
     106                'group1markers' => '',
     107                'group2markers' => '',
     108                'group3markers' => '',
     109                'group4markers' => '',
     110                'group5markers' => '',
     111                'group6markers' => '',
     112                'group7markers' => '',
     113                'group8markers' => '',
     114                'group9markers' => '',
     115                'group10markers' => '',
     116                'group11markers' => '',
     117                'group12markers' => '',
     118                'markercolor' => 'FFFF00',             
    106119                'imagealtattr' => 'dyerware',
    107120                'imagetitleattr' => '',
     
    172185        return <<<ecbCode
    173186<div id={$chartDiv} style='width:100%;'  style='text-align:center;' align='center'>
     187<!-- Easy Chart Builder by dyerware -->
    174188<img id={$chartImg} style='{$chartConfig['imgstyle']}' alt='{$chartConfig['imagealtattr']}' title='{$chartConfig['imagetitleattr']}'  align='center' border='0' />
    175189{$dataShow}
  • easy-chart-builder/trunk/js/easy-chart-builder.js

    r202637 r208040  
    11/**
    22 * Handle: easyChartBuilder
    3  * Version: 0.9
     3 * Version: 0.10
    44 * Enqueue: true
    55 *
     
    8585};
    8686   
    87 easyChartBuilder.prototype.vertBarChart = function(chartId, chartImg, chartWidth, chartHeight, chartHandle)
    88 {
    89     var chartTitle = chartHandle["title"];
    90    
    91     var tempString = chartHandle["groupnames"];
    92     var tempGroupNames = tempString.split(",");
    93     var chartGroups = tempGroupNames.length;
    94     var chartGroupNames = this.constructList(tempString, ",", "|",0, false);
    95    
    96     tempString = chartHandle["groupcolors"];
    97     var chartColors = this.constructList(tempString, ",", ",",0, false);
    98    
    99     tempString = chartHandle["valuenames"];
    100     var chartValueNames = "|" + this.constructList(tempString, ",", "|",0, false);
    101 
    102     var groupName;
    103     var chartValues = new Array(chartGroups);
    104     for (var i = 0; i < chartGroups; i++)
    105     {
    106         groupName = "group" + (i+1) + "values";
    107         tempString = chartHandle[groupName];
    108        
    109         chartValues[i] = this.extractValues(tempString, ",", 0);
    110     }
    111    
    112     var hideChartData = chartHandle["hidechartdata"];
    113     if (hideChartData == false)
    114     {
    115         var tblIdContainer = document.getElementById(chartId + "_data");
    116         var tblId = document.getElementById(chartId + "_dataTable");
    117         if (tblId == undefined && tblIdContainer != undefined)
    118         {
    119             tblId = document.createElement('div');
    120             tblId.setAttribute('id',chartId + '_dataTable'); 
    121 
    122             tblId.innerHTML = this.buildChartData(chartHandle, tempGroupNames, chartValues);
    123             tblIdContainer.appendChild(tblId);
    124         }
    125     }
    126    
    127     var maxMin = this.normalizeValues(chartValues, true, chartHandle);   
    128     var minAxis = chartHandle["minaxis"];
    129     if (minAxis == "")
    130     {
    131         if (maxMin[1] < 0)
    132              {minAxis = maxMin[1];}
    133         else {minAxis = "0";}
    134     }
    135    
    136     tempString = chartHandle["watermark"];
    137     var wmColor = chartHandle["watermarkcolor"];
    138     var wmPrep = this.buildWatermark(maxMin, tempString, wmColor);     
    139    
    140     var chartValuesString = this.encodeValues(chartValues, ",");
    141     var chartColor = chartHandle["chartcolor"];
    142     var chartFadeColor = chartHandle["chartfadecolor"];                   
    143         var url_src ="http://chart.apis.google.com/chart?cht=bvg&chbh=r,0.2,1.0&chs=" + chartWidth + "x" + chartHeight +
    144     "&chma=10,10,10,40" +
    145     "&chf=c,lg,90," + chartColor + ",0.2," + chartFadeColor + ",0|bg,s,00000000" +
    146     "&chtt=" + chartTitle +
    147     "&chdl=" + chartGroupNames + "&chdlp=b" +
    148     "&chco=" + chartColors + "&chd=e:" + chartValuesString +
    149     "&chxt=y,x&chxr=0," + minAxis + "," + maxMin[0] + "&chxl=1:" + chartValueNames + wmPrep;
    150    
    151     chartImg.src = url_src;
    152 };
    153 
    154    
    155 easyChartBuilder.prototype.horizBarChart = function(chartId, chartImg, chartWidth, chartHeight, chartHandle)
     87   
     88 easyChartBuilder.prototype.groupChart = function(chartType, chartId, chartImg, chartWidth, chartHeight, chartHandle)
    15689{
    15790    var chartTitle = chartHandle["title"];
     
    203136    tempString = chartHandle["watermark"];
    204137    var wmColor = chartHandle["watermarkcolor"];
    205     var wmPrep = this.buildWatermark(maxMin, tempString, wmColor);
     138    var wmPrep = this.buildWatermark(maxMin, tempString, wmColor, chartHandle["minaxis"]);
    206139         
    207140    var chartValuesString = this.encodeValues(chartValues, ","); 
    208141    var chartColor = chartHandle["chartcolor"];
    209142    var chartFadeColor = chartHandle["chartfadecolor"];
    210         var url_src ="http://chart.apis.google.com/chart?cht=bhg&chbh=r,0.2,1.0&chs=" + chartWidth + "x" + chartHeight +
    211     "&chma=10,10,10,40" +
    212     "&chf=c,lg,90," + chartColor + ",0.2," + chartFadeColor + ",0|bg,s,00000000" +
    213     "&chtt=" + chartTitle +
    214     "&chdl=" + chartGroupNames + "&chdlp=b" +
    215     "&chco=" + chartColors + "&chd=e:" + chartValuesString +
    216     "&chxt=x,y&chxr=0," + minAxis + "," + maxMin[0] + "&chxl=1:" + chartValueNames + wmPrep;
    217    
     143   
     144    var chartMarkers = this.buildMarkers(chartHandle, tempGroupNames.length);
     145   
     146    var url_src = null;   
     147    var common_parts = "chs=" + chartWidth + "x" + chartHeight +
     148        "&chma=10,10,10,40" +
     149        "&chf=c,lg,90," + chartColor + ",0.2," + chartFadeColor + ",0|bg,s,00000000" +
     150        "&chtt=" + chartTitle +
     151        "&chdl=" + chartGroupNames + "&chdlp=b" +
     152        "&chco=" + chartColors + "&chd=e:" + chartValuesString + "&chxl=1:" + chartValueNames + wmPrep +
     153        chartMarkers;
     154   
     155    if (chartType == "vertbar")
     156    {
     157        url_src ="http://chart.apis.google.com/chart?cht=bvg&chbh=r,0.2,1.0&" + common_parts +
     158        "&chxt=y,x&chxr=0," + minAxis + "," + maxMin[0];
     159    }
     160    else if (chartType == "horizbar")
     161    {
     162        url_src ="http://chart.apis.google.com/chart?cht=bhg&chbh=r,0.2,1.0&" + common_parts +
     163        "&chxt=x,y&chxr=0," + minAxis + "," + maxMin[0];
     164    }
     165    else if (chartType == "vertbarstack")
     166    {
     167        url_src ="http://chart.apis.google.com/chart?cht=bvs&chbh=r,0.2,1.0&" + common_parts +
     168        "&chxt=y,x&chxr=0," + minAxis + "," + maxMin[0];
     169    }
     170    else if (chartType == "horizbarstack")
     171    {
     172        url_src ="http://chart.apis.google.com/chart?cht=bhs&chbh=r,0.2,1.0&" + common_parts +
     173        "&chxt=x,y&chxr=0," + minAxis + "," + maxMin[0];
     174    }   
     175    else if (chartType == "line")
     176    {   
     177        url_src ="http://chart.apis.google.com/chart?cht=lc&" + common_parts +
     178        "&chxt=y,x&chxr=0," + minAxis + "," + maxMin[0];
     179    }   
     180    else
     181    {
     182        alert("Unknown chart type: " + chartType);
     183        url_src = "NO_VALID_CHART_TYPE";
     184    }   
     185
     186 
    218187    chartImg.src = url_src;
    219188};
    220 
    221 easyChartBuilder.prototype.lineChart = function(chartId, chartImg, chartWidth, chartHeight, chartHandle)
    222 {
    223     var chartTitle = chartHandle["title"];
    224    
    225     var tempString = chartHandle["groupnames"];
    226     var tempGroupNames = tempString.split(",");
    227     var chartGroups = tempGroupNames.length;
    228     var chartGroupNames = this.constructList(tempString, ",", "|",0, false);
    229    
    230     tempString = chartHandle["groupcolors"];
    231     var chartColors = this.constructList(tempString, ",", ",",0, false);
    232    
    233     tempString = chartHandle["valuenames"];
    234     var chartValueNames = "|" + this.constructList(tempString, ",", "|",0, false);
    235 
    236     var groupName;
    237     var chartValues = new Array(chartGroups);
    238     for (var i = 0; i < chartGroups; i++)
    239     {
    240         groupName = "group" + (i+1) + "values";
    241         tempString = chartHandle[groupName];
    242        
    243         chartValues[i] = this.extractValues(tempString, ",", 0);
    244     }
    245    
    246     var hideChartData = chartHandle["hidechartdata"];
    247     if (hideChartData == false)
    248     {
    249         var tblIdContainer = document.getElementById(chartId + "_data");
    250         var tblId = document.getElementById(chartId + "_dataTable");
    251         if (tblId == undefined && tblIdContainer != undefined)
    252         {
    253             tblId = document.createElement('div');
    254             tblId.setAttribute('id',chartId + '_dataTable'); 
    255                                
    256             tblId.innerHTML = this.buildChartData(chartHandle, tempGroupNames, chartValues);
    257             tblIdContainer.appendChild(tblId);
    258         }
    259     }
    260    
    261     // max,min,ratio
    262     var maxMin = this.normalizeValues(chartValues, true, chartHandle);   
    263     tempString = chartHandle["watermark"];
    264     var wmColor = chartHandle["watermarkcolor"];
    265     var wmPrep = this.buildWatermark(maxMin, tempString, wmColor); 
    266 
    267     var chartValuesString = this.encodeValues(chartValues, ",");
    268     var chartColor = chartHandle["chartcolor"];
    269     var chartFadeColor = chartHandle["chartfadecolor"];     
    270        
    271     var minAxis = chartHandle["minaxis"];
    272     if (minAxis == "")
    273     {
    274         if (maxMin[1] < 0)
    275              {minAxis = maxMin[1];}
    276         else {minAxis = "0";}
    277     }
    278                    
    279     var url_src ="http://chart.apis.google.com/chart?cht=lc&chs=" + chartWidth + "x" + chartHeight +
    280     "&chma=10,10,10,40" +
    281     "&chf=c,lg,90," + chartColor + ",0.2," + chartFadeColor + ",0|bg,s,00000000" +
    282     "&chtt=" + chartTitle +
    283     "&chdl=" + chartGroupNames + "&chdlp=b" +
    284     "&chco=" + chartColors + "&chd=e:" + chartValuesString +
    285     "&chxt=y,x&chxr=0," + minAxis + "," + maxMin[0] + "&chxl=1:" + chartValueNames + wmPrep;
    286    
    287     chartImg.src = url_src;
    288 };
    289 
    290 easyChartBuilder.prototype.buildWatermark = function(maxMin, wmString, wmColor)
     189 
     190easyChartBuilder.prototype.buildMarkers = function(handle, numGroups)
     191{
     192    var markColor = handle["markercolor"];
     193    var markStr = "";
     194    var letter = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
     195    var letterIndex = 0;
     196   
     197    for (var t=0;t<numGroups;t++)
     198    {
     199        var groupMarkStr = handle["group" + (t+1) + "markers"];
     200       
     201        if (groupMarkStr == '')
     202        {
     203            continue;
     204        }
     205       
     206        var marks = groupMarkStr.split(",");
     207        if (marks.length == 0 || marks == '')
     208        {
     209            continue;
     210        }
     211       
     212        for (var m = 0; m < marks.length; m++)
     213        {
     214            var prep = "y;s=map_xpin_letter;d=pin_sright," + letter.charAt(letterIndex) + "," + markColor +
     215            ";dp=" + marks[m] + ";ds="+t+";of=12,0";
     216           
     217            if (letterIndex)
     218            {
     219                markStr = markStr + "|" + prep;
     220            }
     221            else
     222            {
     223                markStr = "&chem=" + prep;
     224            }
     225           
     226            letterIndex++;
     227        }
     228    }
     229   
     230    return markStr;
     231}; 
     232
     233easyChartBuilder.prototype.buildWatermark = function(maxMin, wmString, wmColor, minAxis)
    291234{
    292235    var wm = new Array();
     
    301244    if (wm.length == 1)
    302245        wm[1] = maxMin[1];
    303    
     246       
     247    var maxit = maxMin[0];
     248   
     249    if (minAxis != "")
     250    {
     251        var lowValue = parseFloat(minAxis);
     252
     253        if (wm[0] <= lowValue)
     254            {wm[0] = 0.0;}
     255        else
     256            {wm[0] -= lowValue;}
     257        if (wm[1] <= lowValue)
     258            {wm[1] = 0.0;}
     259        else
     260            {wm[1] -= lowValue;}   
     261           
     262        if (maxit <= lowValue)
     263            {maxit = 0.0;}
     264        else
     265            {maxit -= lowValue;}
     266    }
     267       
    304268    // Normalize watermarks
    305     var size = maxMin[0] - maxMin[1];
    306    
    307     wm[0] = wm[0] / maxMin[0];
    308     wm[1] = wm[1] / maxMin[0];
     269    wm[0] = wm[0] / maxit;
     270    wm[1] = wm[1] / maxit;
    309271    var trimMe = new Number(wm[0]);
    310272    wm[0] = trimMe.toPrecision(2);
    311273    trimMe = new Number(wm[1]);
    312274    wm[1] = trimMe.toPrecision(2);
    313 
     275   
    314276    return "&chm=r," + wmColor + ",0," + wm[0] + "," + wm[1];
    315277}
     
    452414    if (hasAxis == true && minAxis != "")
    453415    {
    454         var lowValue = parseInt(minAxis);
     416        var lowValue = parseFloat(minAxis);
    455417       
    456418        for (t = 0; t < len; t++)
     
    567529        this.pieChart(chartId, imgId, new_width, new_height, chartHandle);
    568530    }
     531    else
     532    {
     533        this.groupChart(chartType, chartId, imgId, new_width, new_height, chartHandle);
     534    }
     535   
     536    /*
    569537    else if (chartType == "vertbar")
    570538    {
     
    584552        imgId.src = "NO_VALID_CHART_TYPE";
    585553    }   
     554    */
    586555};
    587556
  • easy-chart-builder/trunk/readme.txt

    r202637 r208040  
    55Tags: chart,graph,charts,graphs,line,review,rating,comparison,mobile,shortcode,dyerware
    66Requires at least: 2.8
    7 Tested up to: 2.9.1
    8 Stable tag: 0.7
     7Tested up to: 2.9.2
     8Stable tag: 0.8
    99
    1010This plugin allows you to easily create charts within your blog by use of shortcodes.
     
    1313== Description ==
    1414
    15 This plugin allows you to easily insert charts into your blog, making use shortcodes. While multipurpose, the chart system is intended to make it easy for posting detailed review measurements of some sort, such as video card comparisons.  You specify the names of the devices being measured, the tests performed, and each device's measurements for said test.
     15This plugin allows you to easily insert charts into your blog, by way of shortcodes. While multipurpose, the chart system is intended to make it easy for posting detailed review measurements of some sort, such as poll data, video card comparisons, sports scores, etc.  You specify the names of the devices being measured, the tests performed, and each device's measurements for said test.
    1616
    1717The shortcode is supported on posts, pages, and in widgets.
     
    1919Graphs scale to meet the size of the end-user client display, and support mobile displays such as those rendered by the wptouch plugin.
    2020
    21 Charts supported are horizontal bar, vertical bar, line graph, and pie.  More can be added if desired.
     21Charts supported are horizontal bar, stacked horizontal bar, vertical bar, stacked vertical bar, line graph, and pie.  More can be added if desired.
    2222
    2323PHP5 Required.
     
    63636. The line chart sans data table (colors are configurable)
    6464
     657. Marker shown.  You can add markers on datapoints for discussion
     66
    6567
    6668== Upgrade Notice ==
     69
     70= 0.8 =
     71Markers, two new chart types, and bugfixes
    6772
    6873= 0.7 =
     
    8085
    8186== Changelog ==
     87
     88= 0.8 =
     89 * New: Two new chart types (horizbarstack and vertbarstack)
     90 * New: Markers.  Place one or more marker in the graph.
     91 * Linecharts now work with clipping
     92 * Watermark bug with clipping fixed
     93 * Smaller javascript component for faster loading
    8294
    8395= 0.7 =
Note: See TracChangeset for help on using the changeset viewer.