Changeset 31
- Timestamp:
- 04/06/06 13:59:06 (2 years ago)
- Files:
-
- plotkit/trunk/PlotKit/Canvas.js (modified) (1 diff)
- plotkit/trunk/PlotKit/EasyPlot.js (added)
- plotkit/trunk/PlotKit/PlotKit.js (modified) (3 diffs)
- plotkit/trunk/PlotKit/PlotKit_Packed.js (modified) (33 diffs)
- plotkit/trunk/PlotKit/SweetCanvas.js (modified) (3 diffs)
- plotkit/trunk/doc/PlotKit.Base.html (modified) (1 diff)
- plotkit/trunk/doc/PlotKit.Canvas.html (modified) (1 diff)
- plotkit/trunk/doc/PlotKit.Layout.html (modified) (1 diff)
- plotkit/trunk/doc/PlotKit.QuickStart.html (modified) (1 diff)
- plotkit/trunk/doc/PlotKit.Renderer.html (modified) (1 diff)
- plotkit/trunk/doc/PlotKit.SVG.html (modified) (1 diff)
- plotkit/trunk/doc/PlotKit.SweetCanvas.html (modified) (1 diff)
- plotkit/trunk/doc/PlotKit.SweetSVG.html (modified) (1 diff)
- plotkit/trunk/doc/PlotKit.html (modified) (1 diff)
- plotkit/trunk/doc/SVGCanvasCompat.html (modified) (1 diff)
- plotkit/trunk/tests/quickstart-easy.html (added)
- plotkit/trunk/tests/quickstart-horiz.html (added)
- plotkit/trunk/tests/sample.txt (added)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
plotkit/trunk/PlotKit/Canvas.js
r19 r31 252 252 253 253 // create paths 254 var makePath = function( ) {255 c ontext.beginPath();256 c ontext.moveTo(this.area.x, this.area.y + this.area.h);257 var addPoint = function(c ontext, point) {254 var makePath = function(ctx) { 255 ctx.beginPath(); 256 ctx.moveTo(this.area.x, this.area.y + this.area.h); 257 var addPoint = function(ctx_, point) { 258 258 if (point.name == setName) 259 c ontext.lineTo(this.area.w * point.x + this.area.x,260 this.area.h * point.y + this.area.y);259 ctx_.lineTo(this.area.w * point.x + this.area.x, 260 this.area.h * point.y + this.area.y); 261 261 }; 262 MochiKit.Iter.forEach(this.layout.points, partial(addPoint, c ontext), this);263 c ontext.lineTo(this.area.w + this.area.x,262 MochiKit.Iter.forEach(this.layout.points, partial(addPoint, ctx), this); 263 ctx.lineTo(this.area.w + this.area.x, 264 264 this.area.h + this.area.y); 265 c ontext.lineTo(this.area.x, this.area.y + this.area.h);266 c ontext.closePath();265 ctx.lineTo(this.area.x, this.area.y + this.area.h); 266 ctx.closePath(); 267 267 }; 268 268 269 269 if (this.options.shouldFill) { 270 bind(makePath, this)( );270 bind(makePath, this)(context); 271 271 context.fill(); 272 272 } 273 273 if (this.options.shouldStroke) { 274 bind(makePath, this)( );274 bind(makePath, this)(context); 275 275 context.stroke(); 276 276 } plotkit/trunk/PlotKit/PlotKit.js
r19 r31 83 83 84 84 } else { 85 if (typeof( MochiKit.__compat__) == 'undefined') {86 MochiKit.__compat__ = true;85 if (typeof(PlotKit.__compat__) == 'undefined') { 86 PlotKit.__compat__ = true; 87 87 } 88 88 (function () { 89 if (typeof(document) == "undefined") { 90 return; 91 } 92 89 93 var scripts = document.getElementsByTagName("script"); 90 94 var kXULNSURI = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; … … 105 109 106 110 } 111 107 112 if (base === null) { 108 113 return; … … 110 115 var modules = PlotKit.PlotKit.SUBMODULES; 111 116 for (var i = 0; i < modules.length; i++) { 112 if ( MochiKit[modules[i]]) {117 if (PlotKit[modules[i]]) { 113 118 continue; 114 119 } plotkit/trunk/PlotKit/PlotKit_Packed.js
r21 r31 209 209 PlotKit.Layout.valid_styles=["bar","line","pie","point"]; 210 210 PlotKit.Layout=function(_36,_37){ 211 this.options={"barWidthFillFraction":0.75," xOriginIsZero":true,"yOriginIsZero":true,"xAxis":null,"yAxis":null,"xTicks":null,"yTicks":null,"xNumberOfTicks":10,"yNumberOfTicks":5,"xTickPrecision":1,"yTickPrecision":3,"pieRadius":0.4};211 this.options={"barWidthFillFraction":0.75,"barOrientation":"vertical","xOriginIsZero":true,"yOriginIsZero":true,"xAxis":null,"yAxis":null,"xTicks":null,"yTicks":null,"xNumberOfTicks":10,"yNumberOfTicks":5,"xTickPrecision":1,"yTickPrecision":3,"pieRadius":0.4}; 212 212 this.style=_36; 213 213 MochiKit.Base.update(this.options,_37?_37:{}); … … 272 272 this._evaluateScales(); 273 273 if(this.style=="bar"){ 274 if(this.options.barOrientation=="horizontal"){ 275 this._evaluateHorizBarCharts(); 276 }else{ 274 277 this._evaluateBarCharts(); 278 } 275 279 this._evaluateBarTicks(); 276 280 }else{ … … 434 438 } 435 439 }; 436 PlotKit.Layout.prototype._evaluate LineCharts=function(){440 PlotKit.Layout.prototype._evaluateHorizBarCharts=function(){ 437 441 var _93=MochiKit.Base.keys; 438 442 var _94=MochiKit.Base.items; 439 443 var _95=_93(this.datasets).length; 444 var _96=10000000; 445 var _97=this._uniqueXValues(); 446 for(var i=1;i<_97.length;i++){ 447 _96=Math.min(Math.abs(_97[i]-_97[i-1]),_96); 448 } 449 var _98=0; 450 var _99=0; 451 var _100=0; 452 if(_97.length==1){ 453 _96=1; 454 this.xscale=1; 455 this.minxval=_97[0]; 456 _98=1*this.options.barWidthFillFraction; 457 _99=_98/_95; 458 _100=(1-this.options.barWidthFillFraction)/2; 459 }else{ 460 this.xscale=(1-_96/this.xrange)/this.xrange; 461 _98=_96*this.xscale*this.options.barWidthFillFraction; 462 _99=_98/_95; 463 _100=_96*this.xscale*(1-this.options.barWidthFillFraction)/2; 464 } 465 this.minxdelta=_96; 466 this.bars=new Array(); 467 var i=0; 468 for(var _101 in this.datasets){ 469 var _102=this.datasets[_101]; 470 for(var j=0;j<_102.length;j++){ 471 var item=_102[j]; 472 var rect={y:((parseFloat(item[0])-this.minxval)*this.xscale)+(i*_99)+_100,x:0,h:_99,w:((parseFloat(item[1])-this.minyval)*this.yscale),xval:parseFloat(item[0]),yval:parseFloat(item[1]),name:_101}; 473 this.bars.push(rect); 474 } 475 i++; 476 } 477 }; 478 PlotKit.Layout.prototype._evaluateLineCharts=function(){ 479 var keys=MochiKit.Base.keys; 480 var _106=MochiKit.Base.items; 481 var _107=keys(this.datasets).length; 440 482 this.points=new Array(); 441 483 var i=0; 442 for(var _ 96in this.datasets){443 var _ 97=this.datasets[_96];444 _ 97.sort(function(a,b){484 for(var _108 in this.datasets){ 485 var _109=this.datasets[_108]; 486 _109.sort(function(a,b){ 445 487 return compare(parseFloat(a[0]),parseFloat(b[0])); 446 488 }); 447 for(var j=0;j<_ 97.length;j++){448 var item=_ 97[j];449 var _1 01={x:((parseFloat(item[0])-this.minxval)*this.xscale),y:1-((parseFloat(item[1])-this.minyval)*this.yscale),xval:parseFloat(item[0]),yval:parseFloat(item[1]),name:_96};450 this.points.push(_1 01);489 for(var j=0;j<_109.length;j++){ 490 var item=_109[j]; 491 var _112={x:((parseFloat(item[0])-this.minxval)*this.xscale),y:1-((parseFloat(item[1])-this.minyval)*this.yscale),xval:parseFloat(item[0]),yval:parseFloat(item[1]),name:_108}; 492 this.points.push(_112); 451 493 } 452 494 i++; … … 454 496 }; 455 497 PlotKit.Layout.prototype._evaluatePieCharts=function(){ 456 var _1 02=MochiKit.Base.items;498 var _113=MochiKit.Base.items; 457 499 var sum=MochiKit.Iter.sum; 458 var _1 04=MochiKit.Base.itemgetter;459 var _1 05=keys(this.datasets).length;460 var _1 06=_102(this.datasets)[0][1];461 var _1 07=sum(map(_104(1),_106));500 var _115=MochiKit.Base.itemgetter; 501 var _116=keys(this.datasets).length; 502 var _117=_113(this.datasets)[0][1]; 503 var _118=sum(map(_115(1),_117)); 462 504 this.slices=new Array(); 463 var _1 08=0;464 for(var i=0;i<_1 06.length;i++){465 var _1 09=_106[i][1]/_107;466 var _1 10=_108*Math.PI*2;467 var _1 11=(_108+_109)*Math.PI*2;468 var _1 12={fraction:_109,xval:_106[i][0],yval:_106[i][1],startAngle:_110,endAngle:_111};469 this.slices.push(_1 12);470 _1 08+=_109;505 var _119=0; 506 for(var i=0;i<_117.length;i++){ 507 var _120=_117[i][1]/_118; 508 var _121=_119*Math.PI*2; 509 var _122=(_119+_120)*Math.PI*2; 510 var _123={fraction:_120,xval:_117[i][0],yval:_117[i][1],startAngle:_121,endAngle:_122}; 511 this.slices.push(_123); 512 _119+=_120; 471 513 } 472 514 }; 473 515 PlotKit.Layout.prototype._evaluateLineTicksForXAxis=function(){ 474 var _1 13=MochiKit.Base.isUndefinedOrNull;516 var _124=MochiKit.Base.isUndefinedOrNull; 475 517 if(this.options.xTicks){ 476 518 this.xticks=new Array(); 477 var _1 14=function(tick){478 var _1 16=tick.label;479 if(_1 13(_116)){480 _1 16=tick.v.toString();519 var _125=function(tick){ 520 var _127=tick.label; 521 if(_124(_127)){ 522 _127=tick.v.toString(); 481 523 } 482 524 var pos=this.xscale*(tick.v-this.minxval); 483 this.xticks.push([pos,_1 16]);484 }; 485 MochiKit.Iter.forEach(this.options.xTicks,bind(_1 14,this));525 this.xticks.push([pos,_127]); 526 }; 527 MochiKit.Iter.forEach(this.options.xTicks,bind(_125,this)); 486 528 }else{ 487 529 if(this.options.xNumberOfTicks){ 488 var _1 18=this._uniqueXValues();489 var _1 19=this.xrange/this.options.xNumberOfTicks;490 var _1 20=0;530 var _129=this._uniqueXValues(); 531 var _130=this.xrange/this.options.xNumberOfTicks; 532 var _131=0; 491 533 this.xticks=new Array(); 492 for(var i=0;i<=_1 18.length;i++){493 if(_1 18[i]>=(_120)*_119){494 var pos=this.xscale*(_1 18[i]-this.minxval);534 for(var i=0;i<=_129.length;i++){ 535 if(_129[i]>=(_131)*_130){ 536 var pos=this.xscale*(_129[i]-this.minxval); 495 537 if((pos>1)||(pos<0)){ 496 538 return; 497 539 } 498 this.xticks.push([pos,_1 18[i]]);499 _1 20++;500 } 501 if(_1 20>this.options.xNumberOfTicks){540 this.xticks.push([pos,_129[i]]); 541 _131++; 542 } 543 if(_131>this.options.xNumberOfTicks){ 502 544 break; 503 545 } … … 507 549 }; 508 550 PlotKit.Layout.prototype._evaluateLineTicksForYAxis=function(){ 509 var _1 21=MochiKit.Base.isUndefinedOrNull;551 var _132=MochiKit.Base.isUndefinedOrNull; 510 552 if(this.options.yTicks){ 511 553 this.yticks=new Array(); 512 var _1 22=function(tick){513 var _1 23=tick.label;514 if(_1 21(_123)){515 _1 23=tick.v.toString();554 var _133=function(tick){ 555 var _134=tick.label; 556 if(_132(_134)){ 557 _134=tick.v.toString(); 516 558 } 517 559 var pos=1-(this.yscale*(tick.v+this.minxval)); … … 519 561 return; 520 562 } 521 this.yticks.push([pos,_1 23]);522 }; 523 MochiKit.Iter.forEach(this.options.yTicks,bind(_1 22,this));563 this.yticks.push([pos,_134]); 564 }; 565 MochiKit.Iter.forEach(this.options.yTicks,bind(_133,this)); 524 566 }else{ 525 567 if(this.options.yNumberOfTicks){ 526 568 this.yticks=new Array(); 527 var _1 24=PlotKit.Base.roundInterval;569 var _135=PlotKit.Base.roundInterval; 528 570 var prec=this.options.yTickPrecision; 529 var _1 26=_124(this.yrange,this.options.yNumberOfTicks,this.options.yTickPrecision);571 var _137=_135(this.yrange,this.options.yNumberOfTicks,this.options.yTickPrecision); 530 572 for(var i=0;i<=this.options.yNumberOfTicks;i++){ 531 var yval=this.minyval+(i*_1 26);573 var yval=this.minyval+(i*_137); 532 574 var pos=1-((yval-this.minyval)*this.yscale); 533 575 this.yticks.push([pos,MochiKit.Format.roundToFixed(yval,1)]); … … 542 584 PlotKit.Layout.prototype._evaluateBarTicks=function(){ 543 585 this._evaluateLineTicks(); 544 var _1 28=function(tick){586 var _139=function(tick){ 545 587 return [tick[0]+(this.minxdelta*this.xscale)/2,tick[1]]; 546 588 }; 547 this.xticks=MochiKit.Base.map(bind(_128,this),this.xticks); 589 this.xticks=MochiKit.Base.map(bind(_139,this),this.xticks); 590 if(this.options.barOrientation=="horizontal"){ 591 var _140=this.xticks; 592 this.xticks=this.yticks; 593 this.yticks=_140; 594 var _141=function(tick){ 595 return [1-tick[0],tick[1]]; 596 }; 597 this.xticks=MochiKit.Base.map(_141,this.xticks); 598 } 548 599 }; 549 600 PlotKit.Layout.prototype._evaluatePieTicks=function(){ 550 var _1 29=MochiKit.Base.isUndefinedOrNull;551 var _1 30=MochiKit.Format.numberFormatter("#%");601 var _142=MochiKit.Base.isUndefinedOrNull; 602 var _143=MochiKit.Format.numberFormatter("#%"); 552 603 this.xticks=new Array(); 553 604 if(this.options.xTicks){ 554 var _1 31=new Array();605 var _144=new Array(); 555 606 for(var i=0;i<this.slices.length;i++){ 556 _1 31[this.slices[i].xval]=this.slices[i];607 _144[this.slices[i].xval]=this.slices[i]; 557 608 } 558 609 for(var i=0;i<this.options.xTicks.length;i++){ 559 610 var tick=this.options.xTicks[i]; 560 var _1 32=_131[tick.v];561 var _1 33=tick.label;562 if(_1 32){563 if(_1 29(_133)){564 _1 33=tick.v.toString();565 } 566 _1 33+=" ("+_130(_132.fraction)+")";567 this.xticks.push([tick.v,_1 33]);611 var _145=_144[tick.v]; 612 var _146=tick.label; 613 if(_145){ 614 if(_142(_146)){ 615 _146=tick.v.toString(); 616 } 617 _146+=" ("+_143(_145.fraction)+")"; 618 this.xticks.push([tick.v,_146]); 568 619 } 569 620 } 570 621 }else{ 571 622 for(var i=0;i<this.slices.length;i++){ 572 var _1 32=this.slices[i];573 var _1 33=_132.xval+" ("+_130(_132.fraction)+")";574 this.xticks.push([_1 32.xval,_133]);623 var _145=this.slices[i]; 624 var _146=_145.xval+" ("+_143(_145.fraction)+")"; 625 this.xticks.push([_145.xval,_146]); 575 626 } 576 627 } … … 580 631 this.hitTestCache.xlookup=new Array(); 581 632 this.hitTestCache.x2maxy=new Array(); 582 var _1 34=MochiKit.Base.listMax;583 var _1 35=MochiKit.Base.itemgetter;633 var _147=MochiKit.Base.listMax; 634 var _148=MochiKit.Base.itemgetter; 584 635 var map=MochiKit.Base.map; 585 var _1 36=keys(this.datasets);586 for(var i=0;i<_1 36.length;i++){587 var _1 37=this.datasets[_136[i]];588 for(var j=0;j<_1 37.length;j++){589 var xval=_1 37[j][0];590 var yval=_1 37[j][1];636 var _149=keys(this.datasets); 637 for(var i=0;i<_149.length;i++){ 638 var _150=this.datasets[_149[i]]; 639 for(var j=0;j<_150.length;j++){ 640 var xval=_150[j][0]; 641 var yval=_150[j][1]; 591 642 if(this.hitTestCache.xlookup[xval]){ 592 this.hitTestCache.xlookup[xval].push([yval,_1 36[i]]);593 }else{ 594 this.hitTestCache.xlookup[xval]=[[yval,_1 36[i]]];643 this.hitTestCache.xlookup[xval].push([yval,_149[i]]); 644 }else{ 645 this.hitTestCache.xlookup[xval]=[[yval,_149[i]]]; 595 646 } 596 647 } 597 648 } 598 649 for(var x in this.hitTestCache.xlookup){ 599 var _1 39=this.hitTestCache.xlookup[x];600 this.hitTestCache.x2maxy[x]=_1 34(map(_135(0),_139));650 var _152=this.hitTestCache.xlookup[x]; 651 this.hitTestCache.x2maxy[x]=_147(map(_148(0),_152)); 601 652 } 602 653 }; … … 631 682 return this.__repr__(); 632 683 }; 633 PlotKit.CanvasRenderer=function(_1 40,_141,_142){684 PlotKit.CanvasRenderer=function(_153,_154,_155){ 634 685 if(arguments.length>0){ 635 this.__init__(_1 40,_141,_142);636 } 637 }; 638 PlotKit.CanvasRenderer.prototype.__init__=function(_1 43,_144,_145){639 var _1 46=MochiKit.Base.isUndefinedOrNull;640 var _1 47=MochiKit.Color.Color;641 this.options={"drawBackground":true,"backgroundColor":_1 47.whiteColor(),"padding":{left:30,right:30,top:5,bottom:10},"colorScheme":PlotKit.Base.palette(PlotKit.Base.baseColors()[0]),"strokeColor":_147.whiteColor(),"strokeColorTransform":"asStrokeColor","strokeWidth":0.5,"shouldFill":true,"shouldStroke":true,"drawXAxis":true,"drawYAxis":true,"axisLineColor":_147.blackColor(),"axisLineWidth":0.5,"axisTickSize":3,"axisLabelColor":_147.blackColor(),"axisLabelFont":"Arial","axisLabelFontSize":9,"axisLabelWidth":50,"pieRadius":0.4,"enableEvents":true};642 MochiKit.Base.update(this.options,_1 45?_145:{});643 this.layout=_1 44;644 this.style=_1 44.style;645 this.element=_1 43;686 this.__init__(_153,_154,_155); 687 } 688 }; 689 PlotKit.CanvasRenderer.prototype.__init__=function(_156,_157,_158){ 690 var _159=MochiKit.Base.isUndefinedOrNull; 691 var _160=MochiKit.Color.Color; 692 this.options={"drawBackground":true,"backgroundColor":_160.whiteColor(),"padding":{left:30,right:30,top:5,bottom:10},"colorScheme":PlotKit.Base.palette(PlotKit.Base.baseColors()[0]),"strokeColor":_160.whiteColor(),"strokeColorTransform":"asStrokeColor","strokeWidth":0.5,"shouldFill":true,"shouldStroke":true,"drawXAxis":true,"drawYAxis":true,"axisLineColor":_160.blackColor(),"axisLineWidth":0.5,"axisTickSize":3,"axisLabelColor":_160.blackColor(),"axisLabelFont":"Arial","axisLabelFontSize":9,"axisLabelWidth":50,"pieRadius":0.4,"enableEvents":true}; 693 MochiKit.Base.update(this.options,_158?_158:{}); 694 this.layout=_157; 695 this.style=_157.style; 696 this.element=_156; 646 697 this.container=this.element.parentNode; 647 698 this.isIE=PlotKit.Base.excanvasSupported(); 648 if(this.isIE&&!_1 46(G_vmlCanvasManager)){699 if(this.isIE&&!_159(G_vmlCanvasManager)){ 649 700 this.IEDelay=0.5; 650 701 this.maxTries=5; … … 655 706 this.height=this.element.height; 656 707 this.width=this.element.width; 657 if(_1 46(this.element)){708 if(_159(this.element)){ 658 709 throw "CanvasRenderer() - passed canvas is not found"; 659 710 } … … 661 712 throw "CanvasRenderer() - Canvas is not supported."; 662 713 } 663 if(_1 46(this.container)||(this.container.nodeName.toLowerCase()!="div")){714 if(_159(this.container)||(this.container.nodeName.toLowerCase()!="div")){ 664 715 throw "CanvasRenderer() - <canvas> needs to be enclosed in <div>"; 665 716 } … … 685 736 this.renderDelay=null; 686 737 } 687 var _1 48=this.element.getContext("2d");738 var _161=this.element.getContext("2d"); 688 739 } 689 740 catch(e){ … … 714 765 } 715 766 }; 716 PlotKit.CanvasRenderer.prototype._renderBarChartWrap=function(data,_1 50){717 var _1 51=this.element.getContext("2d");718 var _1 52=this.options.colorScheme.length;719 var _1 53=this.options.colorScheme;720 var _1 54=MochiKit.Base.keys(this.layout.datasets);721 var _1 55=_154.length;722 for(var i=0;i<_1 55;i++){723 var _1 56=_154[i];724 var _1 57=_153[i%_152];725 _1 51.save();726 _1 51.fillStyle=_157.toRGBString();767 PlotKit.CanvasRenderer.prototype._renderBarChartWrap=function(data,_163){ 768 var _164=this.element.getContext("2d"); 769 var _165=this.options.colorScheme.length; 770 var _166=this.options.colorScheme; 771 var _167=MochiKit.Base.keys(this.layout.datasets); 772 var _168=_167.length; 773 for(var i=0;i<_168;i++){ 774 var _169=_167[i]; 775 var _170=_166[i%_165]; 776 _164.save(); 777 _164.fillStyle=_170.toRGBString(); 727 778 if(this.options.strokeColor){ 728 _1 51.strokeStyle=this.options.strokeColor.toRGBString();779 _164.strokeStyle=this.options.strokeColor.toRGBString(); 729 780 }else{ 730 781 if(this.options.strokeColorTransform){ 731 _1 51.strokeStyle=_157[this.options.strokeColorTransform]().toRGBString();732 } 733 } 734 _1 51.lineWidth=this.options.strokeWidth;735 var _1 58=function(obj){736 if(obj.name==_1 56){737 _1 50(_151,obj);738 } 739 }; 740 MochiKit.Iter.forEach(data,bind(_1 58,this));741 _1 51.restore();782 _164.strokeStyle=_170[this.options.strokeColorTransform]().toRGBString(); 783 } 784 } 785 _164.lineWidth=this.options.strokeWidth; 786 var _171=function(obj){ 787 if(obj.name==_169){ 788 _163(_164,obj); 789 } 790 }; 791 MochiKit.Iter.forEach(data,bind(_171,this)); 792 _164.restore(); 742 793 } 743 794 }; 744 795 PlotKit.CanvasRenderer.prototype._renderBarChart=function(){ 745 796 var bind=MochiKit.Base.bind; 746 var _1 60=function(_161,bar){797 var _173=function(_174,bar){ 747 798 var x=this.area.w*bar.x+this.area.x; 748 799 var y=this.area.h*bar.y+this.area.y; … … 753 804 } 754 805 if(this.options.shouldFill){ 755 _1 61.fillRect(x,y,w,h);806 _174.fillRect(x,y,w,h); 756 807 } 757 808 if(this.options.shouldStroke){ 758 _1 61.strokeRect(x,y,w,h);759 } 760 }; 761 this._renderBarChartWrap(this.layout.bars,bind(_1 60,this));809 _174.strokeRect(x,y,w,h); 810 } 811 }; 812 this._renderBarChartWrap(this.layout.bars,bind(_173,this)); 762 813 }; 763 814 PlotKit.CanvasRenderer.prototype._renderLineChart=function(){ 764 var _1 64=this.element.getContext("2d");765 var _1 65=this.options.colorScheme.length;766 var _1 66=this.options.colorScheme;767 var _1 67=MochiKit.Base.keys(this.layout.datasets);768 var _1 68=_167.length;815 var _177=this.element.getContext("2d"); 816 var _178=this.options.colorScheme.length; 817 var _179=this.options.colorScheme; 818 var _180=MochiKit.Base.keys(this.layout.datasets); 819 var _181=_180.length; 769 820 var bind=MochiKit.Base.bind; 770 var _1 69=MochiKit.Base.partial;771 for(var i=0;i<_1 68;i++){772 var _1 70=_167[i];773 var _1 71=_166[i%_165];774 var _1 72=this.options.strokeColorTransform;775 _1 64.save();776 _1 64.fillStyle=_171.toRGBString();821 var _182=MochiKit.Base.partial; 822 for(var i=0;i<_181;i++){ 823 var _183=_180[i]; 824 var _184=_179[i%_178]; 825 var _185=this.options.strokeColorTransform; 826 _177.save(); 827 _177.fillStyle=_184.toRGBString(); 777 828 if(this.options.strokeColor){ 778 _1 64.strokeStyle=this.options.strokeColor.toRGBString();829 _177.strokeStyle=this.options.strokeColor.toRGBString(); 779 830 }else{ 780 831 if(this.options.strokeColorTransform){ 781 _1 64.strokeStyle=_171[_172]().toRGBString();782 } 783 } 784 _1 64.lineWidth=this.options.strokeWidth;785 var _1 73=function(){786 _164.beginPath();787 _164.moveTo(this.area.x,this.area.y+this.area.h);788 var _1 74=function(_164,_175){789 if(_1 75.name==_170){790 _164.lineTo(this.area.w*_175.x+this.area.x,this.area.h*_175.y+this.area.y);791 } 792 }; 793 MochiKit.Iter.forEach(this.layout.points,_1 69(_174,context),this);794 c ontext.lineTo(this.area.w+this.area.x,this.area.h+this.area.y);795 c ontext.lineTo(this.area.x,this.area.y+this.area.h);796 c ontext.closePath();832 _177.strokeStyle=_184[_185]().toRGBString(); 833 } 834 } 835 _177.lineWidth=this.options.strokeWidth; 836 var _186=function(ctx){ 837 ctx.beginPath(); 838 ctx.moveTo(this.area.x,this.area.y+this.area.h); 839 var _188=function(ctx_,_190){ 840 if(_190.name==_183){ 841 ctx_.lineTo(this.area.w*_190.x+this.area.x,this.area.h*_190.y+this.area.y); 842 } 843 }; 844 MochiKit.Iter.forEach(this.layout.points,_182(_188,ctx),this); 845 ctx.lineTo(this.area.w+this.area.x,this.area.h+this.area.y); 846 ctx.lineTo(this.area.x,this.area.y+this.area.h); 847 ctx.closePath(); 797 848 }; 798 849 if(this.options.shouldFill){ 799 bind(_1 73,this)();800 context.fill();850 bind(_186,this)(_177); 851 _177.fill(); 801 852 } 802 853 if(this.options.shouldStroke){ 803 bind(_1 73,this)();804 context.stroke();805 } 806 context.restore();854 bind(_186,this)(_177); 855 _177.stroke(); 856 } 857 _177.restore(); 807 858 } 808 859 }; 809 860 PlotKit.CanvasRenderer.prototype._renderPieChart=function(){ 810 var _1 76=this.element.getContext("2d");811 var _1 77=this.options.colorScheme.length;812 var _1 78=this.layout.slices;813 var _1 79=this.area.x+this.area.w*0.5;814 var _1 80=this.area.y+this.area.h*0.5;815 var _1 81=Math.min(this.area.w*this.options.pieRadius,this.area.h*this.options.pieRadius);861 var _191=this.element.getContext("2d"); 862 var _192=this.options.colorScheme.length; 863 var _193=this.layout.slices; 864 var _194=this.area.x+this.area.w*0.5; 865 var _195=this.area.y+this.area.h*0.5; 866 var _196=Math.min(this.area.w*this.options.pieRadius,this.area.h*this.options.pieRadius); 816 867 if(this.isIE){ 817 _1 79=parseInt(_179);818 _1 80=parseInt(_180);819 _1 81=parseInt(_181);820 } 821 for(var i=0;i<_1 78.length;i++){822 var _1 82=this.options.colorScheme[i%_177];823 _1 76.save();824 _1 76.fillStyle=_182.toRGBString();825 var _1 83=function(){826 _1 76.beginPath();827 _1 76.moveTo(_179,_180);828 _1 76.arc(_179,_180,_181,_178[i].startAngle-Math.PI/2,_178[i].endAngle-Math.PI/2,false);829 _1 76.lineTo(_179,_180);830 _1 76.closePath();831 }; 832 if(Math.abs(_1 78[i].startAngle-_178[i].endAngle)>0.001){868 _194=parseInt(_194); 869 _195=parseInt(_195); 870 _196=parseInt(_196); 871 } 872 for(var i=0;i<_193.length;i++){ 873 var _197=this.options.colorScheme[i%_192]; 874 _191.save(); 875 _191.fillStyle=_197.toRGBString(); 876 var _198=function(){ 877 _191.beginPath(); 878 _191.moveTo(_194,_195); 879 _191.arc(_194,_195,_196,_193[i].startAngle-Math.PI/2,_193[i].endAngle-Math.PI/2,false); 880 _191.lineTo(_194,_195); 881 _191.closePath(); 882 }; 883 if(Math.abs(_193[i].startAngle-_193[i].endAngle)>0.001){ 833 884 if(this.options.shouldFill){ 834 _1 83();835 _1 76.fill();885 _198(); 886 _191.fill(); 836 887 } 837 888 if(this.options.shouldStroke){ 838 _1 83();839 _1 76.lineWidth=this.options.strokeWidth;889 _198(); 890 _191.lineWidth=this.options.strokeWidth; 840 891 if(this.options.strokeColor){ 841 _1 76.strokeStyle=this.options.strokeColor.toRGBString();892 _191.strokeStyle=this.options.strokeColor.toRGBString(); 842 893 }else{ 843 894 if(this.options.strokeColorTransform){ 844 _1 76.strokeStyle=_182[this.options.strokeColorTransform]().toRGBString();845 } 846 } 847 _1 76.stroke();848 } 849 } 850 _1 76.restore();895 _191.strokeStyle=_197[this.options.strokeColorTransform]().toRGBString(); 896 } 897 } 898 _191.stroke(); 899 } 900 } 901 _191.restore(); 851 902 } 852 903 }; … … 861 912 return; 862 913 } 863 var _1 84=this.element.getContext("2d");864 var _ 185={"style":{"position":"absolute","fontSize":this.options.axisLabelFontSize+"px","zIndex":10,"color":this.options.axisLabelColor.toRGBString(),"width":this.options.axisLabelWidth+"px","overflow":"hidden"}};865 _1 84.save();866 _1 84.strokeStyle=this.options.axisLineColor.toRGBString();867 _1 84.lineWidth=this.options.axisLineWidth;914 var _199=this.element.getContext("2d"); 915 var _200={"style":{"position":"absolute","fontSize":this.options.axisLabelFontSize+"px","zIndex":10,"color":this.options.axisLabelColor.toRGBString(),"width":this.options.axisLabelWidth+"px","overflow":"hidden"}}; 916 _199.save(); 917 _199.strokeStyle=this.options.axisLineColor.toRGBString(); 918 _199.lineWidth=this.options.axisLineWidth; 868 919 if(this.options.drawYAxis){ 869 920 if(this.layout.yticks){ 870 var _ 186=function(tick){921 var _201=function(tick){ 871 922 var x=this.area.x; 872 923 var y=this.area.y+tick[0]*this.area.h; 873 _1 84.beginPath();874 _1 84.moveTo(x,y);875 _1 84.lineTo(x-this.options.axisTickSize,y);876 _1 84.closePath();877 _1 84.stroke();878 var _ 187=DIV(_185,tick[1]);879 _ 187.style.top=(y-this.options.axisLabelFontSize)+"px";880 _ 187.style.left=(x-this.options.padding.left-this.options.axisTickSize)+"px";881 _ 187.style.textAlign="right";882 _ 187.style.width=(this.options.padding.left-this.options.axisTickSize*2)+"px";883 MochiKit.DOM.appendChildNodes(this.container,_ 187);884 this.ylabels.push(_ 187);885 }; 886 MochiKit.Iter.forEach(this.layout.yticks,bind(_ 186,this));887 } 888 _1 84.beginPath();889 _1 84.moveTo(this.area.x,this.area.y);890 _1 84.lineTo(this.area.x,this.area.y+this.area.h);891 _1 84.closePath();892 _1 84.stroke();924 _199.beginPath(); 925 _199.moveTo(x,y); 926 _199.lineTo(x-this.options.axisTickSize,y); 927 _199.closePath(); 928 _199.stroke(); 929 var _202=DIV(_200,tick[1]); 930 _202.style.top=(y-this.options.axisLabelFontSize)+"px"; 931 _202.style.left=(x-this.options.padding.left-this.options.axisTickSize)+"px"; 932 _202.style.textAlign="right"; 933 _202.style.width=(this.options.padding.left-this.options.axisTickSize*2)+"px"; 934 MochiKit.DOM.appendChildNodes(this.container,_202); 935 this.ylabels.push(_202); 936 }; 937 MochiKit.Iter.forEach(this.layout.yticks,bind(_201,this)); 938 } 939 _199.beginPath(); 940 _199.moveTo(this.area.x,this.area.y); 941 _199.lineTo(this.area.x,this.area.y+this.area.h); 942 _199.closePath(); 943 _199.stroke(); 893 944 } 894 945 if(this.options.drawXAxis){ 895 946 if(this.layout.xticks){ 896 var _ 186=function(tick){947 var _201=function(tick){ 897 948 var x=this.area.x+tick[0]*this.area.w; 898 949 var y=this.area.y+this.area.h; 899 _1 84.beginPath();900 _1 84.moveTo(x,y);901 _1 84.lineTo(x,y+this.options.axisTickSize);902 _1 84.closePath();903 _1 84.stroke();904 var _ 188=DIV(_185,tick[1]);905 _ 188.style.top=(y+this.options.axisTickSize)+"px";906 _ 188.style.left=(x-this.options.axisLabelWidth/2)+"px";907 _ 188.style.textAlign="center";908 _ 188.style.width=this.options.axisLabelWidth+"px";909 MochiKit.DOM.appendChildNodes(this.container,_ 188);910 this.xlabels.push(_ 188);911 }; 912 MochiKit.Iter.forEach(this.layout.xticks,bind(_ 186,this));913 } 914 _1 84.beginPath();915 _1 84.moveTo(this.area.x,this.area.y+this.area.h);916 _1 84.lineTo(this.area.x+this.area.w,this.area.y+this.area.h);917 _1 84.closePath();918 _1 84.stroke();919 } 920 _1 84.restore();950 _199.beginPath(); 951 _199.moveTo(x,y); 952 _199.lineTo(x,y+this.options.axisTickSize); 953 _199.closePath(); 954 _199.stroke(); 955 var _203=DIV(_200,tick[1]); 956 _203.style.top=(y+this.options.axisTickSize)+"px"; 957 _203.style.left=(x-this.options.axisLabelWidth/2)+"px"; 958 _203.style.textAlign="center"; 959 _203.style.width=this.options.axisLabelWidth+"px"; 960 MochiKit.DOM.appendChildNodes(this.container,_203); 961 this.xlabels.push(_203); 962 }; 963 MochiKit.Iter.forEach(this.layout.xticks,bind(_201,this)); 964 } 965 _199.beginPath(); 966 _199.moveTo(this.area.x,this.area.y+this.area.h); 967 _199.lineTo(this.area.x+this.area.w,this.area.y+this.area.h); 968 _199.closePath(); 969 _199.stroke(); 970 } 971 _199.restore(); 921 972 }; 922 973 PlotKit.CanvasRenderer.prototype._renderPieAxis=function(){ … … 925 976 } 926 977 if(this.layout.xticks){ 927 var _ 189=new Array();978 var _204=new Array(); 928 979 for(var i=0;i<this.layout.slices.length;i++){ 929 _ 189[this.layout.slices[i].xval]=this.layout.slices[i];930 } 931 var _ 190=this.area.x+this.area.w*0.5;932 var _ 191=this.area.y+this.area.h*0.5;933 var _ 192=Math.min(this.area.w*this.options.pieRadius,this.area.h*this.options.pieRadius);934 var _ 193=this.options.axisLabelWidth;980 _204[this.layout.slices[i].xval]=this.layout.slices[i]; 981 } 982 var _205=this.area.x+this.area.w*0.5; 983 var _206=this.area.y+this.area.h*0.5; 984 var _207=Math.min(this.area.w*this.options.pieRadius,this.area.h*this.options.pieRadius); 985 var _208=this.options.axisLabelWidth; 935 986 for(var i=0;i<this.layout.xticks.length;i++){ 936 var _ 194=_189[this.layout.xticks[i][0]];937 if(MochiKit.Base.isUndefinedOrNull(_ 194)){987 var _209=_204[this.layout.xticks[i][0]]; 988 if(MochiKit.Base.isUndefinedOrNull(_209)){ 938 989 continue; 939 990 } 940 var _ 195=(_194.startAngle+_194.endAngle)/2;941 var _ 196=_195;942 if(_ 196>Math.PI*2){943 _ 196=_196-Math.PI*2;944 }else{ 945 if(_ 196<0){946 _ 196=_196+Math.PI*2;947 } 948 } 949 var _ 197=_190+Math.sin(_196)*(_192+10);950 var _ 198=_191-Math.cos(_196)*(_192+10);951 var _ 199={"position":"absolute","zIndex":11,"width":_193+"px","fontSize":this.options.axisLabelFontSize+"px","overflow":"hidden","color":this.options.axisLabelColor.toHexString()};952 if(_ 196<=Math.PI*0.5){953 _ 199["textAlign"]="left";954 _ 199["verticalAlign"]="top";955 _ 199["left"]=_197+"px";956 _ 199["top"]=(_198-this.options.axisLabelFontSize)+"px";957 }else{ 958 if((_ 196>Math.PI*0.5)&&(_196<=Math.PI)){959 _ 199["textAlign"]="left";960 _ 199["verticalAlign"]="bottom";961 _ 199["left"]=_197+"px";962 _ 199["top"]=_198+"px";963 }else{ 964 if((_ 196>Math.PI)&&(_196<=Math.PI*1.5)){965 _ 199["textAlign"]="right";966 _ 199["verticalAlign"]="bottom";967 _ 199["left"]=(_197-_193)+"px";968 _ 199["top"]=_198+"px";969 }else{ 970 _ 199["textAlign"]="right";971 _ 199["verticalAlign"]="bottom";972 _ 199["left"]=(_197-_193)+"px";973 _ 199["top"]=(_198-this.options.axisLabelFontSize)+"px";974 } 975 } 976 } 977 var _2 00=DIV({"style":_199},this.layout.xticks[i][1]);978 this.xlabels.push(_2 00);979 MochiKit.DOM.appendChildNodes(this.container,_2 00);991 var _210=(_209.startAngle+_209.endAngle)/2; 992 var _211=_210; 993 if(_211>Math.PI*2){ 994 _211=_211-Math.PI*2; 995 }else{ 996 if(_211<0){ 997 _211=_211+Math.PI*2; 998 } 999 } 1000 var _212=_205+Math.sin(_211)*(_207+10); 1001 var _213=_206-Math.cos(_211)*(_207+10); 1002 var _214={"position":"absolute","zIndex":11,"width":_208+"px","fontSize":this.options.axisLabelFontSize+"px","overflow":"hidden","color":this.options.axisLabelColor.toHexString()}; 1003 if(_211<=Math.PI*0.5){ 1004 _214["textAlign"]="left"; 1005 _214["verticalAlign"]="top"; 1006 _214["left"]=_212+"px"; 1007 _214["top"]=(_213-this.options.axisLabelFontSize)+"px"; 1008 }else{ 1009 if((_211>Math.PI*0.5)&&(_211<=Math.PI)){ 1010 _214["textAlign"]="left"; 1011 _214["verticalAlign"]="bottom"; 1012 _214["left"]=_212+"px"; 1013 _214["top"]=_213+"px"; 1014 }else{ 1015 if((_211>Math.PI)&&(_211<=Math.PI*1.5)){ 1016 _214["textAlign"]="right"; 1017 _214["verticalAlign"]="bottom"; 1018 _214["left"]=(_212-_208)+"px"; 1019 _214["top"]=_213+"px"; 1020 }else{ 1021 _214["textAlign"]="right"; 1022 _214["verticalAlign"]="bottom"; 1023 _214["left"]=(_212-_208)+"px"; 1024 _214["top"]=(_213-this.options.axisLabelFontSize)+"px"; 1025 } 1026 } 1027 } 1028 var _215=DIV({"style":_214},this.layout.xticks[i][1]); 1029 this.xlabels.push(_215); 1030 MochiKit.DOM.appendChildNodes(this.container,_215); 980 1031 } 981 1032 } 982 1033 }; 983 1034 PlotKit.CanvasRenderer.prototype._renderBackground=function(){ 984 var _2 01=this.element.getContext("2d");985 _2 01.save();986 _2 01.fillStyle=this.options.backgroundColor.toRGBString();987 _2 01.fillRect(0,0,this.width,this.height);988 _2 01.restore();1035 var _216=this.element.getContext("2d"); 1036 _216.save(); 1037 _216.fillStyle=this.options.backgroundColor.toRGBString(); 1038 _216.fillRect(0,0,this.width,this.height); 1039 _216.restore(); 989 1040 }; 990 1041 PlotKit.CanvasRenderer.prototype.clear=function(){ … … 995 1046 this.clearDelay=null; 996 1047 } 997 var _2 02=this.element.getContext("2d");1048 var _217=this.element.getContext("2d"); 998 1049 } 999 1050 catch(e){ … … 1004 1055 } 1005 1056 } 1006 var _2 02=this.element.getContext("2d");1007 _2 02.clearRect(0,0,this.width,this.height);1057 var _217=this.element.getContext("2d"); 1058 _217.clearRect(0,0,this.width,this.height); 1008 1059 MochiKit.Iter.forEach(this.xlabels,MochiKit.DOM.removeElement); 1009 1060 MochiKit.Iter.forEach(this.ylabels,MochiKit.DOM.removeElement); … … 1012 1063 }; 1013 1064 PlotKit.CanvasRenderer.prototype._initialiseEvents=function(){ 1014 var _2 03=MochiKit.Signal.connect;1065 var _218=MochiKit.Signal.connect; 1015 1066 var bind=MochiKit.Base.bind; 1016 1067 MochiKit.Signal.registerSignals(this,["onmouseover","onclick","onmouseout","onmousemove"]); 1017 _2 03(this.element,"onclick",bind(this.onclick,this));1068 _218(this.element,"onclick",bind(this.onclick,this)); 1018 1069 }; 1019 1070 PlotKit.CanvasRenderer.prototype._resolveObject=function(e){ 1020 1071 var x=(e.mouse().page.x-PlotKit.Base.findPosX(this.element)-this.area.x)/this.area.w; 1021 1072 var y=(e.mouse().page.y-PlotKit.Base.findPosY(this.element)-this.area.y)/this.area.h; 1022 var _2 05=this.layout.hitTest(x,y);1023 if(_2 05){1024 return _2 05;1073 var _220=this.layout.hitTest(x,y); 1074 if(_220){ 1075 return _220; 1025 1076 } 1026 1077 return null; 1027 1078 }; 1028 PlotKit.CanvasRenderer.prototype._createEventObject=function(_2 06,e){1029 if(_2 06==null){1079 PlotKit.CanvasRenderer.prototype._createEventObject=function(_221,e){ 1080 if(_221==null){ 1030 1081 return null; 1031 1082 } 1032 e.chart=_2 06;1083 e.chart=_221; 1033 1084 return e; 1034 1085 }; 1035 1086 PlotKit.CanvasRenderer.prototype.onclick=function(e){ 1036 var _2 07=this._resolveObject(e);1037 var _2 08=this._createEventObject(_207,e);1038 if(_2 08!=null){1039 MochiKit.Signal.signal(this,"onclick",_2 08);1087 var _222=this._resolveObject(e); 1088 var _223=this._createEventObject(_222,e); 1089 if(_223!=null){ 1090 MochiKit.Signal.signal(this,"onclick",_223); 1040 1091 } 1041 1092 }; 1042 1093 PlotKit.CanvasRenderer.prototype.onmouseover=function(e){ 1043 var _2 09=this._resolveObject(e);1044 var _2 10=this._createEventObject(_209,e);1045 if(_2 10!=null){1046 signal(this,"onmouseover",_2 10);1094 var _224=this._resolveObject(e); 1095 var _225=this._createEventObject(_224,e); 1096 if(_225!=null){ 1097 signal(this,"onmouseover",_225); 1047 1098 } 1048 1099 }; 1049 1100 PlotKit.CanvasRenderer.prototype.onmouseout=function(e){ 1050 var _2 11=this._resolveObject(e);1051 var _2 12=this._createEventObject(_211,e);1052 if(_2 12==null){1101 var _226=this._resolveObject(e); 1102 var _227=this._createEventObject(_226,e); 1103 if(_227==null){ 1053 1104 signal(this,"onmouseout",e); 1054 1105 }else{ 1055 signal(this,"onmouseout",_2 12);1106 signal(this,"onmouseout",_227); 1056 1107 } 1057 1108 }; 1058 1109 PlotKit.CanvasRenderer.prototype.onmousemove=function(e){ 1059 var _2 13=this._resolveObject(e);1060 var _2 14=this._createEventObject(_213,e);1061 if((_2 13==null)&&(this.event_isinside==null)){1110 var _228=this._resolveObject(e); 1111 var _229=this._createEventObject(_228,e); 1112 if((_228==null)&&(this.event_isinside==null)){ 1062 1113 return; 1063 1114 } 1064 if((_2 13!=null)&&(this.event_isinside==null)){1065 signal(this,"onmouseover",_2 14);1066 } 1067 if((_2 13==null)&&(this.event_isinside!=null)){1068 signal(this,"onmouseout",_2 14);1069 } 1070 if((_2 13!=null)&&(this.event_isinside!=null)){1071 signal(this,"onmousemove",_2 14);1072 } 1073 this.event_isinside=_2 13;1074 }; 1075 PlotKit.CanvasRenderer.isSupported=function(_2 15){1076 var _2 16=null;1115 if((_228!=null)&&(this.event_isinside==null)){ 1116 signal(this,"onmouseover",_229); 1117 } 1118 if((_228==null)&&(this.event_isinside!=null)){ 1119 signal(this,"onmouseout",_229); 1120 } 1121 if((_228!=null)&&(this.event_isinside!=null)){ 1122 signal(this,"onmousemove",_229); 1123 } 1124 this.event_isinside=_228; 1125 }; 1126 PlotKit.CanvasRenderer.isSupported=function(_230){ 1127 var _231=null; 1077 1128 try{ 1078 if(MochiKit.Base.isUndefinedOrNull(_2 15)){1079 _2 16=MochiKit.DOM.CANVAS({});1080 }else{ 1081 _2 16=MochiKit.DOM.getElement(_215);1082 } 1083 var _2 17=_216.getContext("2d");1129 if(MochiKit.Base.isUndefinedOrNull(_230)){ 1130 _231=MochiKit.DOM.CANVAS({}); 1131 }else{ 1132 _231=MochiKit.DOM.getElement(_230); 1133 } 1134 var _232=_231.getContext("2d"); 1084 1135 } 1085 1136 catch(e){ 1086 1137 var ie=navigator.appVersion.match(/MSIE (\d\.\d)/); 1087 var _2 19=(navigator.userAgent.toLowerCase().indexOf("opera")!=-1);1088 if((!ie)||(ie[1]<6)||(_2 19)){1138 var _234=(navigator.userAgent.toLowerCase().indexOf("opera")!=-1); 1139 if((!ie)||(ie[1]<6)||(_234)){ 1089 1140 return false; 1090 1141 } … … 1112 1163 throw "PlotKit depends on MochiKit.{Base,Color,DOM,Format} and PlotKit.Layout"; 1113 1164 } 1114 PlotKit.SVGRenderer=function(_2 20,_221,_222){1165 PlotKit.SVGRenderer=function(_235,_236,_237){ 1115 1166 if(arguments.length>0){ 1116 this.__init__(_2 20,_221,_222);1167 this.__init__(_



