Ticket #770: ticke770.patch

File ticke770.patch, 3.4 KB (added by FND, 4 years ago)
  • association/plugins/SparklinePlugin/SparklinePlugin.js

    diff --git a/association/plugins/SparklinePlugin/SparklinePlugin.js b/association/plugins/SparklinePlugin/SparklinePlugin.js
    index 1aff2d2..13c634c 100644
    a b  
    11/*** 
    22|''Name''|SparklinePlugin| 
    33|''Description''|provides support for [[sparklines|http://www.edwardtufte.com/bboard/q-and-a-fetch-msg?msg_id=0001OR&topic_id=1]]| 
    4 |''Version''|1.0.0| 
     4|''Version''|2.0.0| 
    55|''Status''|stable| 
    66|''Source''|http://www.tiddlywiki.com/coreplugins.html#SparklinePlugin| 
    77|''~CodeRepository:''|http://svn.tiddlywiki.org/Trunk/association/plugins/SparklinePlugin/SparklinePlugin.js | 
    88|''License''|[[BSD open source license]]| 
    9 |''~CoreVersion''|2.3.0| 
     9|''~CoreVersion''|2.4.1| 
    1010|''Feedback''|[[TiddlyWiki community|http://groups.google.com/group/TiddlyWiki]] | 
    1111|''Keywords''|visualization| 
    1212!Usage 
     
    2929//-- 
    3030 
    3131config.macros.sparkline = {}; 
     32 
     33config.macros.sparkline.byNum = function(a,b) 
     34{ 
     35return parseInt(b)-parseInt(a); 
     36}; 
    3237config.macros.sparkline.handler = function(place,macroName,params) 
    3338{ 
    3439        var data = []; 
    35         var min = 0; 
    36         var max = 0; 
     40        var min; 
     41        var max; 
     42        var highest = []; 
     43        var boxHeight = 100; 
     44        var tickWidth = 10; 
     45        var tickBorderWidth = 0; 
     46        var datalength = 0; 
    3747        var v; 
    3848        for(var t=0; t<params.length; t++) { 
    3949                v = parseInt(params[t]); 
     
    4353                        max = v; 
    4454                data.push(v); 
    4555        } 
    46         if(data.length < 1) 
     56        if(data.length < 1){ 
    4757                return; 
    48         var box = createTiddlyElement(place,"span",null,"sparkline",String.fromCharCode(160)); 
     58        }else{ 
     59                //highest.clear(); 
     60                datalength += data.length; 
     61                for (var i = 0, item; item = data[i]; i++ ){ 
     62                        highest[i] = item; 
     63                } 
     64                highest.sort(config.macros.sparkline.byNum); 
     65        } 
     66 
     67        var box = createTiddlyElement(place,"span",null,"sparkline",''); 
    4968        box.title = data.join(","); 
    50         var w = box.offsetWidth; 
    51         var h = box.offsetHeight; 
    52         box.style.paddingRight = (data.length * 2 - w) + "px"; 
     69        box.style.display = 'block'; 
     70        box.style.width = datalength * tickWidth+"px"; 
     71        box.style.height = boxHeight+"px"; 
    5372        box.style.position = "relative"; 
    54         for(var d=0; d<data.length; d++) { 
     73 
     74        for( var i = 0 ; i < datalength ; i++ ) { 
    5575                var tick = document.createElement("img"); 
    56                 tick.border = 0; 
     76                tick.style.border = tickBorderWidth; 
    5777                tick.className = "sparktick"; 
    58                 tick.style.position = "absolute"; 
    5978                tick.src = "data:image/gif,GIF89a%01%00%01%00%91%FF%00%FF%FF%FF%00%00%00%C0%C0%C0%00%00%00!%F9%04%01%00%00%02%00%2C%00%00%00%00%01%00%01%00%40%02%02T%01%00%3B"; 
    60                 tick.style.left = d*2 + "px"; 
    61                 tick.style.width = "2px"; 
    62                 v = Math.floor(((data[d] - min)/(max-min)) * h); 
    63                 tick.style.top = (h-v) + "px"; 
    64                 tick.style.height = v + "px"; 
     79 
     80                tick.style.width = tickWidth+'px'; 
     81                tick.style.height = (isNaN((data[i]/highest[0])*boxHeight)?boxHeight:parseInt((data[i]/highest[0])*boxHeight)) +"px"; 
     82                tick.style.float = 'left'; 
    6583                box.appendChild(tick); 
    6684        } 
    6785}; 
     
    6987 
    7088} 
    7189//}}} 
     90 
     91//{{{ 
     92// Add clear function 
     93Array.prototype.clear = function() 
     94{ 
     95        for(var i=0, item; item = this[i]; i++) { 
     96                delete item; 
     97        } 
     98        if(this.length > 0){return -1;} 
     99        else{return 0;} 
     100}; 
     101//}}} 
     102 No newline at end of file