ninjs 0.10.2 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. data/Gemfile +1 -0
  2. data/Gemfile.lock +64 -0
  3. data/Rakefile +4 -1
  4. data/VERSION +1 -1
  5. data/bin/ninjs +14 -5
  6. data/lib/ninjs.rb +0 -3
  7. data/lib/ninjs/command.rb +67 -110
  8. data/lib/ninjs/configuration.rb +33 -39
  9. data/lib/ninjs/project.rb +14 -31
  10. data/ninjs.conf +7 -0
  11. data/ninjs.gemspec +63 -5
  12. data/repository/jquery/1.5.js +16 -0
  13. data/repository/jquery/latest.js +1 -1
  14. data/repository/jquery/mobile/1.0a3.js +123 -0
  15. data/repository/jquery/mobile/1.0a3/assets/css/jquery.mobile.css +1652 -0
  16. data/repository/jquery/mobile/1.0a3/assets/images/jquerymobile/ajax-loader.png +0 -0
  17. data/repository/jquery/mobile/1.0a3/assets/images/jquerymobile/form-check-off.png +0 -0
  18. data/repository/jquery/mobile/1.0a3/assets/images/jquerymobile/form-check-on.png +0 -0
  19. data/repository/jquery/mobile/1.0a3/assets/images/jquerymobile/form-radio-off.png +0 -0
  20. data/repository/jquery/mobile/1.0a3/assets/images/jquerymobile/form-radio-on.png +0 -0
  21. data/repository/jquery/mobile/1.0a3/assets/images/jquerymobile/icon-search-black.png +0 -0
  22. data/repository/jquery/mobile/1.0a3/assets/images/jquerymobile/icons-18-black.png +0 -0
  23. data/repository/jquery/mobile/1.0a3/assets/images/jquerymobile/icons-18-white.png +0 -0
  24. data/repository/jquery/mobile/1.0a3/assets/images/jquerymobile/icons-36-black.png +0 -0
  25. data/repository/jquery/mobile/1.0a3/assets/images/jquerymobile/icons-36-white.png +0 -0
  26. data/repository/jquery/mobile/latest.js +1 -0
  27. data/spec/fixtures/global.js +7 -0
  28. data/spec/fixtures/global.module.js +7 -0
  29. data/spec/fixtures/myapplication.js +576 -0
  30. data/spec/fixtures/nin.js +573 -0
  31. data/spec/fixtures/ninjs.conf +6 -0
  32. data/spec/fixtures/test.elements.js +4 -0
  33. data/spec/fixtures/test.js +15 -0
  34. data/spec/fixtures/test.model.js +3 -0
  35. data/spec/fixtures/test.module.js +10 -0
  36. data/spec/fixtures/updated.myapplication.js +27 -0
  37. data/spec/fixtures/utilities.js +162 -0
  38. data/spec/ninjs_spec.rb +257 -0
  39. data/spec/spec_helper.rb +2 -1
  40. data/tmp/ff9e83aa019b712b90200b8d1b8fa0c7e14576af.json +1 -0
  41. data/tmp/metric_fu/_data/20110305.yml +1548 -0
  42. data/tmp/metric_fu/output/bluff-min.js +1 -0
  43. data/tmp/metric_fu/output/churn.html +692 -0
  44. data/tmp/metric_fu/output/excanvas.js +35 -0
  45. data/tmp/metric_fu/output/flay.html +566 -0
  46. data/tmp/metric_fu/output/flay.js +11 -0
  47. data/tmp/metric_fu/output/flog.html +2392 -0
  48. data/tmp/metric_fu/output/flog.js +12 -0
  49. data/tmp/metric_fu/output/hotspots.html +3607 -0
  50. data/tmp/metric_fu/output/index.html +572 -0
  51. data/tmp/metric_fu/output/js-class.js +1 -0
  52. data/tmp/metric_fu/output/lib_ninjs.rb.html +49 -0
  53. data/tmp/metric_fu/output/lib_ninjs_command.rb.html +137 -0
  54. data/tmp/metric_fu/output/lib_ninjs_configuration.rb.html +107 -0
  55. data/tmp/metric_fu/output/lib_ninjs_dependencies.rb.html +34 -0
  56. data/tmp/metric_fu/output/lib_ninjs_helpers.rb.html +34 -0
  57. data/tmp/metric_fu/output/lib_ninjs_manifest.rb.html +27 -0
  58. data/tmp/metric_fu/output/lib_ninjs_project.rb.html +236 -0
  59. data/tmp/metric_fu/output/rails_best_practices.js +11 -0
  60. data/tmp/metric_fu/output/rcov.html +566 -0
  61. data/tmp/metric_fu/output/rcov.js +11 -0
  62. data/tmp/metric_fu/output/reek.html +1294 -0
  63. data/tmp/metric_fu/output/reek.js +20 -0
  64. data/tmp/metric_fu/output/roodi.html +599 -0
  65. data/tmp/metric_fu/output/roodi.js +11 -0
  66. data/tmp/metric_fu/report.yml +1548 -0
  67. data/tmp/metric_fu/scratch/rcov/rcov.txt +1 -0
  68. metadata +94 -27
  69. data/spec/test_spec.rb +0 -5
@@ -0,0 +1 @@
1
+ Bluff={VERSION:'0.3.6',array:function(c){if(c.length===undefined)return[c];var d=[],f=c.length;while(f--)d[f]=c[f];return d},array_new:function(c,d){var f=[];while(c--)f.push(d);return f},each:function(c,d,f){for(var g=0,h=c.length;g<h;g++){d.call(f||null,c[g],g)}},index:function(c,d){for(var f=0,g=c.length;f<g;f++){if(c[f]===d)return f}return-1},keys:function(c){var d=[],f;for(f in c)d.push(f);return d},map:function(d,f,g){var h=[];this.each(d,function(c){h.push(f.call(g||null,c))});return h},reverse_each:function(c,d,f){var g=c.length;while(g--)d.call(f||null,c[g],g)},sum:function(c){var d=0,f=c.length;while(f--)d+=c[f];return d},Mini:{}};Bluff.Base=new JS.Class({extend:{DEBUG:false,DATA_LABEL_INDEX:0,DATA_VALUES_INDEX:1,DATA_COLOR_INDEX:2,LEGEND_MARGIN:20,TITLE_MARGIN:20,LABEL_MARGIN:10,DEFAULT_MARGIN:20,DEFAULT_TARGET_WIDTH:800,THOUSAND_SEPARATOR:','},top_margin:null,bottom_margin:null,right_margin:null,left_margin:null,title_margin:null,legend_margin:null,labels:null,center_labels_over_point:null,has_left_labels:null,x_axis_label:null,y_axis_label:null,y_axis_increment:null,colors:null,title:null,font:null,font_color:null,hide_line_markers:null,hide_legend:null,hide_title:null,hide_line_numbers:null,no_data_message:null,title_font_size:null,legend_font_size:null,marker_font_size:null,marker_color:null,marker_count:null,minimum_value:null,maximum_value:null,sort:null,additional_line_values:null,stacked:null,legend_box_size:null,tooltips:false,initialize:function(c,d){this._0=new Bluff.Renderer(c);d=d||this.klass.DEFAULT_TARGET_WIDTH;var f;if(typeof d!=='number'){f=d.split('x');this._j=parseFloat(f[0]);this._y=parseFloat(f[1])}else{this._j=parseFloat(d);this._y=this._j*0.75}this.initialize_ivars();this._1e();this.theme_keynote()},initialize_ivars:function(){this._d=800;this._L=800*(this._y/this._j);this._5=0;this.marker_count=null;this.maximum_value=this.minimum_value=null;this._a=false;this._2=[];this.labels={};this._q={};this.sort=true;this.title=null;this._b=this._j/this._d;this.marker_font_size=21.0;this.legend_font_size=20.0;this.title_font_size=36.0;this.top_margin=this.bottom_margin=this.left_margin=this.right_margin=this.klass.DEFAULT_MARGIN;this.legend_margin=this.klass.LEGEND_MARGIN;this.title_margin=this.klass.TITLE_MARGIN;this.legend_box_size=20.0;this.no_data_message="No Data";this.hide_line_markers=this.hide_legend=this.hide_title=this.hide_line_numbers=false;this.center_labels_over_point=true;this.has_left_labels=false;this.additional_line_values=[];this._1w=[];this._k={};this.x_axis_label=this.y_axis_label=null;this.y_axis_increment=null;this.stacked=null;this._9=null},set_margins:function(c){this.top_margin=this.left_margin=this.right_margin=this.bottom_margin=c},set_font:function(c){this.font=c;this._0.font=this.font},add_color:function(c){this.colors.push(c)},replace_colors:function(c){this.colors=c||[];this._m=0},set_theme:function(c){this._1e();this._k={colors:['black','white'],additional_line_colors:[],marker_color:'white',font_color:'black',background_colors:null,background_image:null};for(var d in c)this._k[d]=c[d];this.colors=this._k.colors;this.marker_color=this._k.marker_color;this.font_color=this._k.font_color||this.marker_color;this._1w=this._k.additional_line_colors;this._X()},theme_keynote:function(){this._Y='#6886B4';this._Z='#FDD84E';this._r='#72AE6E';this._z='#D1695E';this._10='#8A6EAF';this._A='#EFAA43';this._B='white';this.colors=[this._Z,this._Y,this._r,this._z,this._10,this._A,this._B];this.set_theme({colors:this.colors,marker_color:'white',font_color:'white',background_colors:['black','#4a465a']})},theme_37signals:function(){this._r='#339933';this._10='#cc99cc';this._Y='#336699';this._Z='#FFF804';this._z='#ff0000';this._A='#cf5910';this._C='black';this.colors=[this._Z,this._Y,this._r,this._z,this._10,this._A,this._C];this.set_theme({colors:this.colors,marker_color:'black',font_color:'black',background_colors:['#d1edf5','white']})},theme_rails_keynote:function(){this._r='#00ff00';this._11='#333333';this._A='#ff5d00';this._z='#f61100';this._B='white';this._12='#999999';this._C='black';this.colors=[this._r,this._11,this._A,this._z,this._B,this._12,this._C];this.set_theme({colors:this.colors,marker_color:'white',font_color:'white',background_colors:['#0083a3','#0083a3']})},theme_odeo:function(){this._11='#202020';this._B='white';this._1x='#a21764';this._r='#8ab438';this._12='#999999';this._1y='#3a5b87';this._C='black';this.colors=[this._11,this._B,this._1y,this._1x,this._r,this._12,this._C];this.set_theme({colors:this.colors,marker_color:'white',font_color:'white',background_colors:['#ff47a4','#ff1f81']})},theme_pastel:function(){this.colors=['#a9dada','#aedaa9','#daaea9','#dadaa9','#a9a9da','#daaeda','#dadada'];this.set_theme({colors:this.colors,marker_color:'#aea9a9',font_color:'black',background_colors:'white'})},theme_greyscale:function(){this.colors=['#282828','#383838','#686868','#989898','#c8c8c8','#e8e8e8'];this.set_theme({colors:this.colors,marker_color:'#aea9a9',font_color:'black',background_colors:'white'})},data:function(f,g,h){g=(g===undefined)?[]:g;h=h||null;g=Bluff.array(g);this._2.push([f,g,(h||this._1z())]);this._5=(g.length>this._5)?g.length:this._5;Bluff.each(g,function(c,d){if(c===undefined)return;if(this.maximum_value===null&&this.minimum_value===null)this.maximum_value=this.minimum_value=c;this.maximum_value=this._1f(c)?c:this.maximum_value;if(this.maximum_value>=0)this._a=true;this.minimum_value=this._1A(c)?c:this.minimum_value;if(this.minimum_value<0)this._a=true},this)},draw:function(){if(this.stacked)this._1B();this._1C();this._u(function(){this._0.rectangle(this.left_margin,this.top_margin,this._d-this.right_margin,this._L-this.bottom_margin);this._0.rectangle(this._1,this._7,this._l,this._g)})},clear:function(){this._X()},_1C:function(){if(!this._a)return this._1D();this._13();this._1E();if(this.sort)this._1F();this._1G();this._M();this._1H();this._1I()},_13:function(g){if(this._9===null||g===true){this._9=[];if(!this._a)return;this._1g();Bluff.each(this._2,function(d){var f=[];Bluff.each(d[this.klass.DATA_VALUES_INDEX],function(c){if(c===null||c===undefined)f.push(null);else f.push((c-this.minimum_value)/this._i)},this);this._9.push([d[this.klass.DATA_LABEL_INDEX],f,d[this.klass.DATA_COLOR_INDEX]])},this)}},_1g:function(){this._i=this.maximum_value-this.minimum_value;this._i=this._i>0?this._i:1;this._1h=100/Math.pow(10,Math.round(Math.LOG10E*Math.log(this._i)))},_1E:function(){this._N=this.hide_line_markers?0:this._D(this.marker_font_size);this._1i=this.hide_title?0:this._D(this.title_font_size);this._1j=this.hide_legend?0:this._D(this.legend_font_size);var c,d,f,g,h,i,j;if(this.hide_line_markers){this._1=this.left_margin;this._14=this.right_margin;this._1k=this.bottom_margin}else{d=0;if(this.has_left_labels){c='';for(j in this.labels){c=c.length>this.labels[j].length?c:this.labels[j]}d=this._O(this.marker_font_size,c)*1.25}else{d=this._O(this.marker_font_size,this._15(this.maximum_value))}f=this.hide_line_numbers&&!this.has_left_labels?0.0:d+this.klass.LABEL_MARGIN*2;this._1=this.left_margin+f+(this.y_axis_label===null?0.0:this._N+this.klass.LABEL_MARGIN*2);g=-Infinity;for(j in this.labels)g=g>Number(j)?g:Number(j);g=Math.round(g);h=(g>=(this._5-1)&&this.center_labels_over_point)?this._O(this.marker_font_size,this.labels[g])/2:0;this._14=this.right_margin+h;this._1k=this.bottom_margin+this._N+this.klass.LABEL_MARGIN}this._l=this._d-this._14;this._6=this._d-this._1-this._14;this._7=this.top_margin+(this.hide_title?this.title_margin:this._1i+this.title_margin)+(this.hide_legend?this.legend_margin:this._1j+this.legend_margin);i=(this.x_axis_label===null)?0.0:this._N+this.klass.LABEL_MARGIN;this._g=this._L-this._1k-i;this._3=this._g-this._7},_1H:function(){if(this.x_axis_label){var c=this._g+this.klass.LABEL_MARGIN*2+this._N;this._0.fill=this.font_color;if(this.font)this._0.font=this.font;this._0.stroke='transparent';this._0.pointsize=this._e(this.marker_font_size);this._0.gravity='north';this._0.annotate_scaled(this._d,1.0,0.0,c,this.x_axis_label,this._b);this._u(function(){this._0.line(0.0,c,this._d,c)})}},_M:function(){if(this.hide_line_markers)return;if(this.y_axis_increment===null){if(this.marker_count===null){Bluff.each([3,4,5,6,7],function(c){if(!this.marker_count&&this._i%c===0)this.marker_count=c},this);this.marker_count=this.marker_count||4}this._16=(this._i>0)?this._17(this._i/this.marker_count):1}else{this.maximum_value=Math.max(Math.ceil(this.maximum_value),this.y_axis_increment);this.minimum_value=Math.floor(this.minimum_value);this._1g();this._13(true);this.marker_count=Math.round(this._i/this.y_axis_increment);this._16=this.y_axis_increment}this._1J=this._3/(this._i/this._16);var d,f,g,h;for(d=0,f=this.marker_count;d<=f;d++){g=this._7+this._3-d*this._1J;this._0.stroke=this.marker_color;this._0.stroke_width=1;this._0.line(this._1,g,this._l,g);h=d*this._16+this.minimum_value;if(!this.hide_line_numbers){this._0.fill=this.font_color;if(this.font)this._0.font=this.font;this._0.font_weight='normal';this._0.stroke='transparent';this._0.pointsize=this._e(this.marker_font_size);this._0.gravity='east';this._0.annotate_scaled(this._1-this.klass.LABEL_MARGIN,1.0,0.0,g,this._15(h),this._b)}}},_1l:function(c){return(this._d-c)/2},_1G:function(){if(this.hide_legend)return;this._P=Bluff.map(this._2,function(c){return c[this.klass.DATA_LABEL_INDEX]},this);var i=this.legend_box_size;if(this.font)this._0.font=this.font;this._0.pointsize=this.legend_font_size;var j=[[]];Bluff.each(this._P,function(c){var d=j.length-1;var f=this._0.get_type_metrics(c);var g=f.width+i*2.7;j[d].push(g);if(Bluff.sum(j[d])>(this._d*0.9))j.push([j[d].pop()])},this);var k=this._1l(Bluff.sum(j[0]));var l=this.hide_title?this.top_margin+this.title_margin:this.top_margin+this.title_margin+this._1i;this._u(function(){this._0.stroke_width=1;this._0.line(0,l,this._d,l)});Bluff.each(this._P,function(c,d){this._0.fill=this.font_color;if(this.font)this._0.font=this.font;this._0.pointsize=this._e(this.legend_font_size);this._0.stroke='transparent';this._0.font_weight='normal';this._0.gravity='west';this._0.annotate_scaled(this._d,1.0,k+(i*1.7),l,c,this._b);this._0.stroke='transparent';this._0.fill=this._2[d][this.klass.DATA_COLOR_INDEX];this._0.rectangle(k,l-i/2.0,k+i,l+i/2.0);this._0.pointsize=this.legend_font_size;var f=this._0.get_type_metrics(c);var g=f.width+(i*2.7),h;j[0].shift();if(j[0].length==0){this._u(function(){this._0.line(0.0,l,this._d,l)});j.shift();if(j.length>0)k=this._1l(Bluff.sum(j[0]));h=Math.max(this._1j,i)+this.legend_margin;if(j.length>0){l+=h;this._7+=h;this._3=this._g-this._7}}else{k+=g}},this);this._m=0},_1I:function(){if(this.hide_title||!this.title)return;this._0.fill=this.font_color;if(this.font)this._0.font=this.font;this._0.pointsize=this._e(this.title_font_size);this._0.font_weight='bold';this._0.gravity='north';this._0.annotate_scaled(this._d,1.0,0,this.top_margin,this.title,this._b)},_c:function(c,d){if(this.hide_line_markers)return;var f;if(this.labels[d]&&!this._q[d]){f=this._g+this.klass.LABEL_MARGIN;this._0.fill=this.font_color;if(this.font)this._0.font=this.font;this._0.stroke='transparent';this._0.font_weight='normal';this._0.pointsize=this._e(this.marker_font_size);this._0.gravity='north';this._0.annotate_scaled(1.0,1.0,c,f,this.labels[d],this._b);this._q[d]=true;this._u(function(){this._0.stroke_width=1;this._0.line(0.0,f,this._d,f)})}},_E:function(c,d,f,g,h,i,j){if(!this.tooltips)return;this._0.tooltip(c,d,f,g,h,i,j)},_1D:function(){this._0.fill=this.font_color;if(this.font)this._0.font=this.font;this._0.stroke='transparent';this._0.font_weight='normal';this._0.pointsize=this._e(80);this._0.gravity='center';this._0.annotate_scaled(this._d,this._L/2,0,10,this.no_data_message,this._b)},_X:function(){var c=this._k.background_colors;switch(true){case c instanceof Array:this._1K.apply(this,c);break;case typeof c==='string':this._1L(c);break;default:this._1M(this._k.background_image);break}},_1L:function(c){this._0.render_solid_background(this._j,this._y,c)},_1K:function(c,d){this._0.render_gradiated_background(this._j,this._y,c,d)},_1M:function(c){},_1e:function(){this._m=0;this._q={};this._k={};this._0.scale(this._b,this._b)},_2a:function(c){return this._b*c},_e:function(c){var d=c*this._b;return d},_Q:function(c,d){return(c>d)?d:c},_1f:function(c,d){return c>this.maximum_value},_1A:function(c,d){return c<this.minimum_value},_1m:function(c,d){return c},_2b:function(c,d){return c},_17:function(c){if(c==0)return 1.0;var d=1.0;while(c<10){c*=10;d/=10}while(c>100){c/=10;d*=10}return Math.floor(c)*d},_1F:function(){var f=this._1N,g=this.klass.DATA_VALUES_INDEX;this._9.sort(function(c,d){return f(d[g])-f(c[g])});this._2.sort(function(c,d){return f(d[g])-f(c[g])})},_1N:function(d){var f=0;Bluff.each(d,function(c){f+=(c||0)});return f},_1B:function(){var g=[],h=this._5;while(h--)g[h]=0;Bluff.each(this._2,function(f){Bluff.each(f[this.klass.DATA_VALUES_INDEX],function(c,d){g[d]+=c},this);f[this.klass.DATA_VALUES_INDEX]=Bluff.array(g)},this)},_u:function(c){if(this.klass.DEBUG){this._0.fill='transparent';this._0.stroke='turquoise';c.call(this)}},_1z:function(){if(this._m<this.colors.length){this._m+=1}else{this._m=0}var c=(this._m==0)?this.colors.length:this._m;return this.colors[c-1]},_15:function(c){var d=this.klass.THOUSAND_SEPARATOR,f=(this._i%this.marker_count==0||this.y_axis_increment!==null)?String(Math.round(c)):String(Math.floor(c*this._1h)/this._1h);var g=f.split('.');g[0]=g[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g,'$1'+d);return g.join('.')},_D:function(c){return this._0.caps_height(c)},_O:function(c,d){return this._0.text_width(c,d)}});Bluff.Area=new JS.Class(Bluff.Base,{draw:function(){this.callSuper();if(!this._a)return;this._R=this._6/(this._5-1);this._0.stroke='transparent';Bluff.each(this._9,function(h){var i=[],j=0.0,k=0.0;Bluff.each(h[this.klass.DATA_VALUES_INDEX],function(c,d){var f=this._1+(this._R*d);var g=this._7+(this._3-c*this._3);if(j>0&&k>0){i.push(f);i.push(g)}else{i.push(this._1);i.push(this._g-1);i.push(f);i.push(g)}this._c(f,d);j=f;k=g},this);i.push(this._l);i.push(this._g-1);i.push(this._1);i.push(this._g-1);this._0.fill=h[this.klass.DATA_COLOR_INDEX];this._0.polyline(i)},this)}});Bluff.BarConversion=new JS.Class({mode:null,zero:null,graph_top:null,graph_height:null,minimum_value:null,spread:null,getLeftYRightYscaled:function(c,d){var f;switch(this.mode){case 1:d[0]=this.graph_top+this.graph_height*(1-c)+1;d[1]=this.graph_top+this.graph_height-1;break;case 2:d[0]=this.graph_top+1;d[1]=this.graph_top+this.graph_height*(1-c)-1;break;case 3:f=c-this.minimum_value/this.spread;if(c>=this.zero){d[0]=this.graph_top+this.graph_height*(1-(f-this.zero))+1;d[1]=this.graph_top+this.graph_height*(1-this.zero)-1}else{d[0]=this.graph_top+this.graph_height*(1-(f-this.zero))+1;d[1]=this.graph_top+this.graph_height*(1-this.zero)-1}break;default:d[0]=0.0;d[1]=0.0}}});Bluff.Bar=new JS.Class(Bluff.Base,{bar_spacing:0.9,draw:function(){this.center_labels_over_point=(Bluff.keys(this.labels).length>this._5);this.callSuper();if(!this._a)return;this._1O()},_1O:function(){this._8=this._6/(this._5*this._2.length);var n=(this._8*(1-this.bar_spacing))/2;this._0.stroke_opacity=0.0;var m=new Bluff.BarConversion();m.graph_height=this._3;m.graph_top=this._7;if(this.minimum_value>=0){m.mode=1}else{if(this.maximum_value<=0){m.mode=2}else{m.mode=3;m.spread=this._i;m.minimum_value=this.minimum_value;m.zero=-this.minimum_value/this._i}}Bluff.each(this._9,function(j,k){var l=this._2[k][this.klass.DATA_VALUES_INDEX];Bluff.each(j[this.klass.DATA_VALUES_INDEX],function(c,d){var f=this._1+(this._8*(k+d+((this._2.length-1)*d)))+n;var g=f+this._8*this.bar_spacing;var h=[];m.getLeftYRightYscaled(c,h);this._0.fill=j[this.klass.DATA_COLOR_INDEX];this._0.rectangle(f,h[0],g,h[1]);this._E(f,h[0],g-f,h[1]-h[0],j[this.klass.DATA_LABEL_INDEX],j[this.klass.DATA_COLOR_INDEX],l[d]);var i=this._1+(this._2.length*this._8*d)+(this._2.length*this._8/2.0);this._c(i-(this.center_labels_over_point?this._8/2.0:0.0),d)},this)},this);if(this.center_labels_over_point)this._c(this._l,this._5)}});Bluff.Line=new JS.Class(Bluff.Base,{baseline_value:null,baseline_color:null,line_width:null,dot_radius:null,hide_dots:null,hide_lines:null,initialize:function(c){if(arguments.length>3)throw'Wrong number of arguments';if(arguments.length===1||(typeof arguments[1]!=='number'&&typeof arguments[1]!=='string'))this.callSuper(c,null);else this.callSuper();this.hide_dots=this.hide_lines=false;this.baseline_color='red';this.baseline_value=null},draw:function(){this.callSuper();if(!this._a)return;this.x_increment=(this._5>1)?(this._6/(this._5-1)):this._6;var m;if(this._S!==undefined){m=this._7+(this._3-this._S*this._3);this._0.push();this._0.stroke=this.baseline_color;this._0.fill_opacity=0.0;this._0.stroke_width=3.0;this._0.line(this._1,m,this._1+this._6,m);this._0.pop()}Bluff.each(this._9,function(i,j){var k=null,l=null;var n=this._2[j][this.klass.DATA_VALUES_INDEX];this._1P=this._1Q(i);Bluff.each(i[this.klass.DATA_VALUES_INDEX],function(c,d){var f=this._1+(this.x_increment*d);if(typeof c!=='number')return;this._c(f,d);var g=this._7+(this._3-c*this._3);this._0.stroke=i[this.klass.DATA_COLOR_INDEX];this._0.fill=i[this.klass.DATA_COLOR_INDEX];this._0.stroke_opacity=1.0;this._0.stroke_width=this.line_width||this._Q(this._j/(this._9[0][this.klass.DATA_VALUES_INDEX].length*6),3.0);var h=this.dot_radius||this._Q(this._j/(this._9[0][this.klass.DATA_VALUES_INDEX].length*2),7.0);if(!this.hide_lines&&k!==null&&l!==null){this._0.line(k,l,f,g)}else if(this._1P){this._0.circle(f,g,f-h,g)}if(!this.hide_dots)this._0.circle(f,g,f-h,g);this._E(f-h,g-h,2*h,2*h,i[this.klass.DATA_LABEL_INDEX],i[this.klass.DATA_COLOR_INDEX],n[d]);k=f;l=g},this)},this)},_13:function(){this.maximum_value=Math.max(this.maximum_value,this.baseline_value);this.callSuper();if(this.baseline_value!==null)this._S=this.baseline_value/this.maximum_value},_1Q:function(d){var f=0;Bluff.each(d[this.klass.DATA_VALUES_INDEX],function(c){if(c!==undefined)f+=1});return f===1}});Bluff.Dot=new JS.Class(Bluff.Base,{draw:function(){this.has_left_labels=true;this.callSuper();if(!this._a)return;var k=1.0;this._F=this._3/this._5;this._18=this._F*k/this._9.length;this._0.stroke_opacity=0.0;var l=Bluff.array_new(this._5,0),n=Bluff.array_new(this._5,this._1),m=(this._F*(1-k))/2;Bluff.each(this._9,function(i,j){Bluff.each(i[this.klass.DATA_VALUES_INDEX],function(c,d){var f=this._1+(c*this._6)-Math.round(this._18/6.0);var g=this._7+(this._F*d)+m+Math.round(this._18/2.0);if(j===0){this._0.stroke=this.marker_color;this._0.stroke_width=1.0;this._0.opacity=0.1;this._0.line(this._1,g,this._1+this._6,g)}this._0.fill=i[this.klass.DATA_COLOR_INDEX];this._0.stroke='transparent';this._0.circle(f,g,f+Math.round(this._18/3.0),g);var h=this._7+(this._F*d+this._F/2)+m;this._c(h,d)},this)},this)},_M:function(){if(this.hide_line_markers)return;this._0.stroke_antialias=false;this._0.stroke_width=1;var c=5;var d=this._17(this.maximum_value/c);for(var f=0;f<=c;f++){var g=(this._l-this._1)/c,h=this._l-(g*f)-1,i=f-c,j=Math.abs(i)*d;this._0.stroke=this.marker_color;this._0.line(h,this._g,h,this._g+0.5*this.klass.LABEL_MARGIN);if(!this.hide_line_numbers){this._0.fill=this.font_color;if(this.font)this._0.font=this.font;this._0.stroke='transparent';this._0.pointsize=this._e(this.marker_font_size);this._0.gravity='center';this._0.annotate_scaled(0,0,h,this._g+(this.klass.LABEL_MARGIN*2.0),j,this._b)}this._0.stroke_antialias=true}},_c:function(c,d){if(this.labels[d]&&!this._q[d]){this._0.fill=this.font_color;if(this.font)this._0.font=this.font;this._0.stroke='transparent';this._0.font_weight='normal';this._0.pointsize=this._e(this.marker_font_size);this._0.gravity='east';this._0.annotate_scaled(1,1,this._1-this.klass.LABEL_MARGIN*2.0,c,this.labels[d],this._b);this._q[d]=true}}});Bluff.Net=new JS.Class(Bluff.Base,{hide_dots:null,line_width:null,dot_radius:null,initialize:function(){this.callSuper();this.hide_dots=false;this.hide_line_numbers=true},draw:function(){this.callSuper();if(!this._a)return;this._v=this._3/2.0;this._w=this._1+(this._6/2.0);this._x=this._7+(this._3/2.0)-10;this._R=this._6/(this._5-1);var s=this.dot_radius||this._Q(this._j/(this._9[0][this.klass.DATA_VALUES_INDEX].length*2.5),7.0);this._0.stroke_opacity=1.0;this._0.stroke_width=this.line_width||this._Q(this._j/(this._9[0][this.klass.DATA_VALUES_INDEX].length*4),3.0);var r;if(this._S!==undefined){r=this._7+(this._3-this._S*this._3);this._0.push();this._0.stroke_color=this.baseline_color;this._0.fill_opacity=0.0;this._0.stroke_width=5;this._0.line(this._1,r,this._1+this._6,r);this._0.pop()}Bluff.each(this._9,function(o){var p=null,q=null;Bluff.each(o[this.klass.DATA_VALUES_INDEX],function(c,d){if(c===undefined)return;var f=d*Math.PI*2/this._5,g=c*this._v,h=this._w+Math.sin(f)*g,i=this._x-Math.cos(f)*g,j=(d+1<o[this.klass.DATA_VALUES_INDEX].length)?d+1:0,k=j*Math.PI*2/this._5,l=o[this.klass.DATA_VALUES_INDEX][j]*this._v,n=this._w+Math.sin(k)*l,m=this._x-Math.cos(k)*l;this._0.stroke=o[this.klass.DATA_COLOR_INDEX];this._0.fill=o[this.klass.DATA_COLOR_INDEX];this._0.line(h,i,n,m);if(!this.hide_dots)this._0.circle(h,i,h-s,i)},this)},this)},_M:function(){if(this.hide_line_markers)return;this._v=this._3/2.0;this._w=this._1+(this._6/2.0);this._x=this._7+(this._3/2.0)-10;var c,d;for(var f=0,g=this._5;f<g;f++){c=f*Math.PI*2/this._5;this._0.stroke=this.marker_color;this._0.stroke_width=1;this._0.line(this._w,this._x,this._w+Math.sin(c)*this._v,this._x-Math.cos(c)*this._v);d=labels[f]?labels[f]:'000';this._c(this._w,this._x,c*360/(2*Math.PI),this._v,d)}},_c:function(c,d,f,g,h){var i=1.1,j=c,k=d,l=f*Math.PI/180,n=j+(g*i*Math.sin(l)),m=k-(g*i*Math.cos(l));this._0.fill=this.marker_color;if(this.font)this._0.font=this.font;this._0.pointsize=this._e(20);this._0.stroke='transparent';this._0.font_weight='bold';this._0.gravity='center';this._0.annotate_scaled(0,0,n,m,h,this._b)}});Bluff.Pie=new JS.Class(Bluff.Base,{extend:{TEXT_OFFSET_PERCENTAGE:0.08},zero_degreee:null,hide_labels_less_than:null,initialize_ivars:function(){this.callSuper();this.zero_degree=0.0;this.hide_labels_less_than=0.0},draw:function(){this.hide_line_markers=true;this.callSuper();if(!this._a)return;var j=this._3,k=(Math.min(this._6,this._3)/2.0)*0.8,l=this._1+(this._6-j)/2.0,n=this._1+(this._6/2.0),m=this._7+(this._3/2.0)-10,o=this._1R(),p=this.zero_degree,q=this.klass.DATA_VALUES_INDEX;if(this.sort)this._2.sort(function(a,b){return a[q][0]-b[q][0]});Bluff.each(this._2,function(c,d){if(c[this.klass.DATA_VALUES_INDEX][0]>0){this._0.fill=c[this.klass.DATA_COLOR_INDEX];var f=(c[this.klass.DATA_VALUES_INDEX][0]/o)*360;this._0.circle(n,m,n+k,m,p,p+f+0.5);var g=p+((p+f)-p)/2,h=Math.round((c[this.klass.DATA_VALUES_INDEX][0]/o)*100.0),i;if(h>=this.hide_labels_less_than){i=this._15(c[this.klass.DATA_VALUES_INDEX][0]);this._c(n,m,g,k+(k*this.klass.TEXT_OFFSET_PERCENTAGE),i)}p+=f}},this)},_c:function(c,d,f,g,h){var i=20.0,j=c,k=d,l=g+i,n=l*0.15,m=j+((l+n)*Math.cos(f*Math.PI/180)),o=k+(l*Math.sin(f*Math.PI/180));this._0.fill=this.font_color;if(this.font)this._0.font=this.font;this._0.pointsize=this._e(this.marker_font_size);this._0.font_weight='bold';this._0.gravity='center';this._0.annotate_scaled(0,0,m,o,h,this._b)},_1R:function(){var d=0;Bluff.each(this._2,function(c){d+=c[this.klass.DATA_VALUES_INDEX][0]},this);return d}});Bluff.SideBar=new JS.Class(Bluff.Base,{bar_spacing:0.9,draw:function(){this.has_left_labels=true;this.callSuper();if(!this._a)return;this._G=this._3/this._5;this._8=this._G*this.bar_spacing/this._9.length;this._0.stroke_opacity=0.0;var q=Bluff.array_new(this._5,0),s=Bluff.array_new(this._5,this._1),r=(this._G*(1-this.bar_spacing))/2;Bluff.each(this._9,function(m,o){var p=this._2[o][this.klass.DATA_VALUES_INDEX];Bluff.each(m[this.klass.DATA_VALUES_INDEX],function(c,d){var f=this._1+(this._6-c*this._6-q[d]),g=this._1+this._6-q[d],h=g-f,i=s[d]-1,j=this._7+(this._G*d)+(this._8*o)+r,k=i+h,l=j+this._8;q[d]+=(c*this._6);this._0.stroke='transparent';this._0.fill=m[this.klass.DATA_COLOR_INDEX];this._0.rectangle(i,j,k,l);this._E(i,j,k-i,l-j,m[this.klass.DATA_LABEL_INDEX],m[this.klass.DATA_COLOR_INDEX],p[d]);var n=this._7+(this._G*d+this._G/2);this._c(n,d)},this)},this)},_M:function(){if(this.hide_line_markers)return;this._0.stroke_antialias=false;this._0.stroke_width=1;var c=5;var d=this._17(this.maximum_value/c),f,g,h,i;for(var j=0;j<=c;j++){f=(this._l-this._1)/c;g=this._l-(f*j)-1;h=j-c;i=Math.abs(h)*d;this._0.stroke=this.marker_color;this._0.line(g,this._g,g,this._7);if(!this.hide_line_numbers){this._0.fill=this.font_color;if(this.font)this._0.font=this.font;this._0.stroke='transparent';this._0.pointsize=this._e(this.marker_font_size);this._0.gravity='center';this._0.annotate_scaled(0,0,g,this._g+(this.klass.LABEL_MARGIN*2.0),i,this._b)}}},_c:function(c,d){if(this.labels[d]&&!this._q[d]){this._0.fill=this.font_color;if(this.font)this._0.font=this.font;this._0.stroke='transparent';this._0.font_weight='normal';this._0.pointsize=this._e(this.marker_font_size);this._0.gravity='east';this._0.annotate_scaled(1,1,this._1-this.klass.LABEL_MARGIN*2.0,c,this.labels[d],this._b);this._q[d]=true}}});Bluff.Spider=new JS.Class(Bluff.Base,{hide_text:null,hide_axes:null,transparent_background:null,initialize:function(c,d,f){this.callSuper(c,f);this._1S=d;this.hide_legend=true},draw:function(){this.hide_line_markers=true;this.callSuper();if(!this._a)return;var c=this._3,d=this._3/2.0,f=this._1+(this._6-c)/2.0,g=this._1+(this._6/2.0),h=this._7+(this._3/2.0)-25;this._1T=d/this._1S;var i=this._1U(),j=0.0,k=(2*Math.PI)/this._2.length,l=0.0;if(!this.hide_axes)this._1V(g,h,d,k);this._1W(g,h,k)},_1n:function(c){return c*this._1T},_c:function(c,d,f,g,h){var i=50,j=c,k=d+0,l=j+((g+i)*Math.cos(f)),n=k+((g+i)*Math.sin(f));this._0.fill=this.marker_color;if(this.font)this._0.font=this.font;this._0.pointsize=this._e(this.legend_font_size);this._0.stroke='transparent';this._0.font_weight='bold';this._0.gravity='center';this._0.annotate_scaled(0,0,l,n,h,this._b)},_1V:function(g,h,i,j,k){if(this.hide_axes)return;var l=0.0;Bluff.each(this._2,function(c){this._0.stroke=k||c[this.klass.DATA_COLOR_INDEX];this._0.stroke_width=5.0;var d=i*Math.cos(l);var f=i*Math.sin(l);this._0.line(g,h,g+d,h+f);if(!this.hide_text)this._c(g,h,l,i,c[this.klass.DATA_LABEL_INDEX]);l+=j},this)},_1W:function(d,f,g,h){var i=[],j=0.0;Bluff.each(this._2,function(c){i.push(d+this._1n(c[this.klass.DATA_VALUES_INDEX][0])*Math.cos(j));i.push(f+this._1n(c[this.klass.DATA_VALUES_INDEX][0])*Math.sin(j));j+=g},this);this._0.stroke_width=1.0;this._0.stroke=h||this.marker_color;this._0.fill=h||this.marker_color;this._0.fill_opacity=0.4;this._0.polyline(i)},_1U:function(){var d=0.0;Bluff.each(this._2,function(c){d+=c[this.klass.DATA_VALUES_INDEX][0]},this);return d}});Bluff.Base.StackedMixin=new JS.Module({_19:function(){var g={};Bluff.each(this._2,function(f){Bluff.each(f[this.klass.DATA_VALUES_INDEX],function(c,d){if(!g[d])g[d]=0.0;g[d]+=c},this)},this);for(var h in g){if(g[h]>this.maximum_value)this.maximum_value=g[h]}this.minimum_value=0}});Bluff.StackedArea=new JS.Class(Bluff.Base,{include:Bluff.Base.StackedMixin,last_series_goes_on_bottom:null,draw:function(){this._19();this.callSuper();if(!this._a)return;this._R=this._6/(this._5-1);this._0.stroke='transparent';var n=Bluff.array_new(this._5,0);var m=null;var o=this.last_series_goes_on_bottom?'reverse_each':'each';Bluff[o](this._9,function(h){var i=m;m=[];Bluff.each(h[this.klass.DATA_VALUES_INDEX],function(c,d){var f=this._1+(this._R*d);var g=this._7+(this._3-c*this._3-n[d]);n[d]+=(c*this._3);m.push(f);m.push(g);this._c(f,d)},this);var j,k,l;if(i){j=Bluff.array(m);for(k=i.length/2-1;k>=0;k--){j.push(i[2*k]);j.push(i[2*k+1])}j.push(m[0]);j.push(m[1])}else{j=Bluff.array(m);j.push(this._l);j.push(this._g-1);j.push(this._1);j.push(this._g-1);j.push(m[0]);j.push(m[1])}this._0.fill=h[this.klass.DATA_COLOR_INDEX];this._0.polyline(j)},this)}});Bluff.StackedBar=new JS.Class(Bluff.Base,{include:Bluff.Base.StackedMixin,bar_spacing:0.9,draw:function(){this._19();this.callSuper();if(!this._a)return;this._8=this._6/this._5;var m=(this._8*(1-this.bar_spacing))/2;this._0.stroke_opacity=0.0;var o=Bluff.array_new(this._5,0);Bluff.each(this._9,function(k,l){var n=this._2[l][this.klass.DATA_VALUES_INDEX];Bluff.each(k[this.klass.DATA_VALUES_INDEX],function(c,d){var f=this._1+(this._8*d)+(this._8*this.bar_spacing/2.0);this._c(f,d);if(c==0)return;var g=this._1+(this._8*d)+m;var h=this._7+(this._3-c*this._3-o[d])+1;var i=g+this._8*this.bar_spacing;var j=this._7+this._3-o[d]-1;o[d]+=(c*this._3);this._0.fill=k[this.klass.DATA_COLOR_INDEX];this._0.rectangle(g,h,i,j);this._E(g,h,i-g,j-h,k[this.klass.DATA_LABEL_INDEX],k[this.klass.DATA_COLOR_INDEX],n[d])},this)},this)}});Bluff.AccumulatorBar=new JS.Class(Bluff.StackedBar,{draw:function(){if(this._2.length!==1)throw'Incorrect number of datasets';var g=[],h=0,i=[];Bluff.each(this._2[0][this.klass.DATA_VALUES_INDEX],function(d){var f=-Infinity;Bluff.each(i,function(c){f=Math.max(f,c)});i.push((h>0)?(d+f):d);g.push(i[h]-d);h+=1},this);this.data("Accumulator",g);this.callSuper()}});Bluff.SideStackedBar=new JS.Class(Bluff.SideBar,{include:Bluff.Base.StackedMixin,bar_spacing:0.9,draw:function(){this.has_left_labels=true;this._19();this.callSuper();if(!this._a)return;this._8=this._3/this._5;var q=Bluff.array_new(this._5,0),s=Bluff.array_new(this._5,this._1),r=(this._8*(1-this.bar_spacing))/2;Bluff.each(this._9,function(m,o){this._0.fill=m[this.klass.DATA_COLOR_INDEX];var p=this._2[o][this.klass.DATA_VALUES_INDEX];Bluff.each(m[this.klass.DATA_VALUES_INDEX],function(c,d){var f=this._1+(this._6-c*this._6-q[d])+1;var g=this._1+this._6-q[d]-1;var h=g-f;var i=s[d],j=this._7+(this._8*d)+r,k=i+h,l=j+this._8*this.bar_spacing;s[d]+=h;q[d]+=(c*this._6-2);this._0.rectangle(i,j,k,l);this._E(i,j,k-i,l-j,m[this.klass.DATA_LABEL_INDEX],m[this.klass.DATA_COLOR_INDEX],p[d]);var n=this._7+(this._8*d)+(this._8*this.bar_spacing/2.0);this._c(n,d)},this)},this)},_1f:function(c,d){d=d||0;return this._1m(c,d)>this.maximum_value},_1m:function(d,f){var g=0;Bluff.each(this._2,function(c){g+=c[this.klass.DATA_VALUES_INDEX][f]},this);return g}});Bluff.Mini.Legend=new JS.Module({hide_mini_legend:false,_1a:function(){if(this.hide_mini_legend)return;this._1X=this._L;this._y+=this._2.length*this._D(this._e(this.legend_font_size))*1.7;this._X()},_1b:function(){if(this.hide_mini_legend)return;this._P=Bluff.map(this._2,function(c){return c[this.klass.DATA_LABEL_INDEX]},this);var f=40.0,g=10.0,h=100.0,i=40.0;if(this.font)this._0.font=this.font;this._0.pointsize=this.legend_font_size;var j=h,k=this._1X+i;this._u(function(){this._0.line(0.0,k,this._d,k)});Bluff.each(this._P,function(c,d){this._0.fill=this.font_color;if(this.font)this._0.font=this.font;this._0.pointsize=this._e(this.legend_font_size);this._0.stroke='transparent';this._0.font_weight='normal';this._0.gravity='west';this._0.annotate_scaled(this._d,1.0,j+(f*1.7),k,this._1Y(c),this._b);this._0.stroke='transparent';this._0.fill=this._2[d][this.klass.DATA_COLOR_INDEX];this._0.rectangle(j,k-f/2.0,j+f,k+f/2.0);k+=this._D(this.legend_font_size)*1.7},this);this._m=0},_1Y:function(c){var d=String(c);while(this._O(this._e(this.legend_font_size),d)>(this._j-this.legend_left_margin-this.right_margin)&&(d.length>1))d=d.substr(0,d.length-1);return d+(d.length<String(c).length?"...":'')}});Bluff.Mini.Bar=new JS.Class(Bluff.Bar,{include:Bluff.Mini.Legend,initialize_ivars:function(){this.callSuper();this.hide_legend=true;this.hide_title=true;this.hide_line_numbers=true;this.marker_font_size=50.0;this.minimum_value=0.0;this.maximum_value=0.0;this.legend_font_size=60.0},draw:function(){this._1a();this.callSuper();this._1b()}});Bluff.Mini.Pie=new JS.Class(Bluff.Pie,{include:Bluff.Mini.Legend,initialize_ivars:function(){this.callSuper();this.hide_legend=true;this.hide_title=true;this.hide_line_numbers=true;this.marker_font_size=60.0;this.legend_font_size=60.0},draw:function(){this._1a();this.callSuper();this._1b()}});Bluff.Mini.SideBar=new JS.Class(Bluff.SideBar,{include:Bluff.Mini.Legend,initialize_ivars:function(){this.callSuper();this.hide_legend=true;this.hide_title=true;this.hide_line_numbers=true;this.marker_font_size=50.0;this.legend_font_size=50.0},draw:function(){this._1a();this.callSuper();this._1b()}});Bluff.Renderer=new JS.Class({extend:{WRAPPER_CLASS:'bluff-wrapper',TEXT_CLASS:'bluff-text',TARGET_CLASS:'bluff-tooltip-target'},font:'Arial, Helvetica, Verdana, sans-serif',gravity:'north',initialize:function(c){this._n=document.getElementById(c);this._4=this._n.getContext('2d')},scale:function(c,d){this._f=c;this._h=d||c},caps_height:function(c){var d=this._T(c,'X'),f=this._H(d).height;this._U(d);return f},text_width:function(c,d){var f=this._T(c,d);var g=this._H(f).width;this._U(f);return g},get_type_metrics:function(c){var d=this._T(this.pointsize,c);document.body.appendChild(d);var f=this._H(d);this._U(d);return f},clear:function(c,d){this._n.width=c;this._n.height=d;this._4.clearRect(0,0,c,d);var f=this._1o(),g=f.childNodes,h=g.length;f.style.width=c+'px';f.style.height=d+'px';while(h--){if(g[h].tagName.toLowerCase()!=='canvas')this._U(g[h])}},push:function(){this._4.save()},pop:function(){this._4.restore()},render_gradiated_background:function(c,d,f,g){this.clear(c,d);var h=this._4.createLinearGradient(0,0,0,d);h.addColorStop(0,f);h.addColorStop(1,g);this._4.fillStyle=h;this._4.fillRect(0,0,c,d)},render_solid_background:function(c,d,f){this.clear(c,d);this._4.fillStyle=f;this._4.fillRect(0,0,c,d)},annotate_scaled:function(c,d,f,g,h,i){var j=(c*i)>=1?(c*i):1;var k=(d*i)>=1?(d*i):1;var h=this._T(this.pointsize,h);h.style.color=this.fill;h.style.fontWeight=this.font_weight;h.style.textAlign='center';h.style.left=(this._f*f+this._1Z(h,j))+'px';h.style.top=(this._h*g+this._20(h,k))+'px'},tooltip:function(d,f,g,h,i,j,k){if(g<0)d+=g;if(h<0)f+=h;var l=this._n.parentNode,n=document.createElement('div');n.className=this.klass.TARGET_CLASS;n.style.position='absolute';n.style.left=(this._f*d-3)+'px';n.style.top=(this._h*f-3)+'px';n.style.width=(this._f*Math.abs(g)+5)+'px';n.style.height=(this._h*Math.abs(h)+5)+'px';n.style.fontSize=0;n.style.overflow='hidden';Bluff.Event.observe(n,'mouseover',function(c){Bluff.Tooltip.show(i,j,k)});Bluff.Event.observe(n,'mouseout',function(c){Bluff.Tooltip.hide()});l.appendChild(n)},circle:function(c,d,f,g,h,i){var j=Math.sqrt(Math.pow(f-c,2)+Math.pow(g-d,2));this._4.fillStyle=this.fill;this._4.beginPath();var k=(h||0)*Math.PI/180;var l=(i||360)*Math.PI/180;if(h!==undefined&&i!==undefined){this._4.moveTo(this._f*(c+j*Math.cos(l)),this._h*(d+j*Math.sin(l)));this._4.lineTo(this._f*c,this._h*d);this._4.lineTo(this._f*(c+j*Math.cos(k)),this._h*(d+j*Math.sin(k)))}this._4.arc(this._f*c,this._h*d,this._f*j,k,l,false);this._4.fill()},line:function(c,d,f,g){this._4.strokeStyle=this.stroke;this._4.lineWidth=this.stroke_width;this._4.beginPath();this._4.moveTo(this._f*c,this._h*d);this._4.lineTo(this._f*f,this._h*g);this._4.stroke()},polyline:function(c){this._4.fillStyle=this.fill;this._4.globalAlpha=this.fill_opacity||1;try{this._4.strokeStyle=this.stroke}catch(e){}var d=c.shift(),f=c.shift();this._4.beginPath();this._4.moveTo(this._f*d,this._h*f);while(c.length>0){d=c.shift();f=c.shift();this._4.lineTo(this._f*d,this._h*f)}this._4.fill()},rectangle:function(c,d,f,g){var h;if(c>f){h=c;c=f;f=h}if(d>g){h=d;d=g;g=h}try{this._4.fillStyle=this.fill;this._4.fillRect(this._f*c,this._h*d,this._f*(f-c),this._h*(g-d))}catch(e){}try{this._4.strokeStyle=this.stroke;if(this.stroke!=='transparent')this._4.strokeRect(this._f*c,this._h*d,this._f*(f-c),this._h*(g-d))}catch(e){}},_1Z:function(c,d){var f=this._H(c).width;switch(this.gravity){case'west':return 0;case'east':return d-f;case'north':case'south':case'center':return(d-f)/2}},_20:function(c,d){var f=this._H(c).height;switch(this.gravity){case'north':return 0;case'south':return d-f;case'west':case'east':case'center':return(d-f)/2}},_1o:function(){var c=this._n.parentNode;if(c.className===this.klass.WRAPPER_CLASS)return c;c=document.createElement('div');c.className=this.klass.WRAPPER_CLASS;c.style.position='relative';c.style.border='none';c.style.padding='0 0 0 0';this._n.parentNode.insertBefore(c,this._n);c.appendChild(this._n);return c},_T:function(c,d){var f=this._21(d);f.style.fontFamily=this.font;f.style.fontSize=(typeof c==='number')?c+'px':c;return f},_21:function(c){var d=document.createElement('div');d.className=this.klass.TEXT_CLASS;d.style.position='absolute';d.appendChild(document.createTextNode(c));this._1o().appendChild(d);return d},_U:function(c){c.parentNode.removeChild(c);if(c.className===this.klass.TARGET_CLASS)Bluff.Event.stopObserving(c)},_H:function(c){var d=c.style.display;return(d&&d!=='none')?{width:c.offsetWidth,height:c.offsetHeight}:{width:c.clientWidth,height:c.clientHeight}}});Bluff.Event={_V:[],_1p:(window.attachEvent&&navigator.userAgent.indexOf('Opera')===-1),observe:function(d,f,g,h){var i=Bluff.map(this._1q(d,f),function(c){return c._22});if(Bluff.index(i,g)!==-1)return;var j=function(c){g.call(h||null,d,Bluff.Event._23(c))};this._V.push({_W:d,_1c:f,_22:g,_1r:j});if(d.addEventListener)d.addEventListener(f,j,false);else d.attachEvent('on'+f,j)},stopObserving:function(d){var f=d?this._1q(d):this._V;Bluff.each(f,function(c){if(c._W.removeEventListener)c._W.removeEventListener(c._1c,c._1r,false);else c._W.detachEvent('on'+c._1c,c._1r)})},_1q:function(d,f){var g=[];Bluff.each(this._V,function(c){if(d&&c._W!==d)return;if(f&&c._1c!==f)return;g.push(c)});return g},_23:function(c){if(!this._1p)return c;if(!c)return false;if(c._24)return c;c._24=true;var d=this._25(c);c.target=c.srcElement;c.pageX=d.x;c.pageY=d.y;return c},_25:function(c){var d=document.documentElement,f=document.body||{scrollLeft:0,scrollTop:0};return{x:c.pageX||(c.clientX+(d.scrollLeft||f.scrollLeft)-(d.clientLeft||0)),y:c.pageY||(c.clientY+(d.scrollTop||f.scrollTop)-(d.clientTop||0))}}};if(Bluff.Event._1p)window.attachEvent('onunload',function(){Bluff.Event.stopObserving();Bluff.Event._V=null});if(navigator.userAgent.indexOf('AppleWebKit/')>-1)window.addEventListener('unload',function(){},false);Bluff.Tooltip=new JS.Singleton({LEFT_OFFSET:20,TOP_OFFSET:-6,DATA_LENGTH:8,CLASS_NAME:'bluff-tooltip',setup:function(){this._o=document.createElement('div');this._o.className=this.CLASS_NAME;this._o.style.position='absolute';this.hide();document.body.appendChild(this._o);Bluff.Event.observe(document.body,'mousemove',function(c,d){this._o.style.left=(d.pageX+this.LEFT_OFFSET)+'px';this._o.style.top=(d.pageY+this.TOP_OFFSET)+'px'},this)},show:function(c,d,f){f=Number(String(f).substr(0,this.DATA_LENGTH));this._o.innerHTML='<span class="color" style="background: '+d+';">&nbsp;</span> <span class="label">'+c+'</span> <span class="data">'+f+'</span>';this._o.style.display=''},hide:function(){this._o.style.display='none'}});Bluff.Event.observe(window,'load',Bluff.Tooltip.method('setup'));Bluff.TableReader=new JS.Class({NUMBER_FORMAT:/\-?(0|[1-9]\d*)(\.\d+)?(e[\+\-]?\d+)?/i,initialize:function(c,d){this._26=(typeof c==='string')?document.getElementById(c):c;this._1s=!!d},get_data:function(){if(!this._2)this._1t();return this._2},get_labels:function(){if(!this._1d)this._1t();return this._1d},get_title:function(){return this._27},get_series:function(c){if(this._2[c])return this._2[c];return this._2[c]={points:[]}},_1t:function(){this._I=this._p=0;this._J=this._K=0;this._2=[];this._1d={};this._s=[];this._t=[];this._1u(this._26);if((this._s.length>1&&this._t.length===1)||this._s.length<this._t.length){if(!this._1s)this._1v()}else{if(this._1s)this._1v()}Bluff.each(this._t,function(c,d){this.get_series(d-this._K).name=c},this);Bluff.each(this._s,function(c,d){this._1d[d-this._J]=c},this)},_1u:function(c){this._28(c);var d,f=c.childNodes,g=f.length;for(d=0;d<g;d++)this._1u(f[d])},_28:function(c){if(!c.tagName)return;var d=this._29(c.innerHTML),f,g;switch(c.tagName.toUpperCase()){case'TR':if(!this._a)this._J=this._I;this._I+=1;this._p=0;break;case'TD':if(!this._a)this._K=this._p;this._a=true;this._p+=1;d=d.match(this.NUMBER_FORMAT);if(d===null){this.get_series(f).points[g]=null}else{f=this._p-this._K-1;g=this._I-this._J-1;this.get_series(f).points[g]=parseFloat(d[0])}break;case'TH':this._p+=1;if(this._p===1&&this._I===1)this._s[0]=this._t[0]=d;else if(c.scope==="row"||this._p===1)this._s[this._I-1]=d;else this._t[this._p-1]=d;break;case'CAPTION':this._27=d;break}},_1v:function(){var h=this._2,i;this._2=[];Bluff.each(h,function(f,g){Bluff.each(f.points,function(c,d){this.get_series(d).points[g]=c},this)},this);i=this._s;this._s=this._t;this._t=i;i=this._J;this._J=this._K;this._K=i},_29:function(c){return c.replace(/<\/?[^>]+>/gi,'')},extend:{Mixin:new JS.Module({data_from_table:function(d,f){var g=new Bluff.TableReader(d,f),h=g.get_data();Bluff.each(h,function(c){this.data(c.name,c.points)},this);this.labels=g.get_labels();this.title=g.get_title()||this.title}})}});Bluff.Base.include(Bluff.TableReader.Mixin);
@@ -0,0 +1,692 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
+ <html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'>
3
+ <head>
4
+ <meta content='text/html; charset=utf-8' http-equiv='Content-Type' />
5
+ <meta content='en' http-equiv='Content-Language' />
6
+ <title>metrics</title>
7
+ <style>
8
+ /*
9
+ Copyright (c) 2008, Yahoo! Inc. All rights reserved.
10
+ Code licensed under the BSD License:
11
+ http://developer.yahoo.net/yui/license.txt
12
+ version: 2.5.2
13
+ */
14
+ html{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym {border:0;font-variant:normal;}sup {vertical-align:text-top;}sub {vertical-align:text-bottom;}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit;}input,textarea,select{*font-size:100%;}legend{color:#000;}
15
+
16
+ /* --------------------------------------------------------------
17
+
18
+ buttons.css
19
+ * Gives you some great CSS-only buttons.
20
+
21
+ Created by Kevin Hale [particletree.com]
22
+ * particletree.com/features/rediscovering-the-button-element
23
+
24
+ See Readme.txt in this folder for instructions.
25
+
26
+ -------------------------------------------------------------- */
27
+
28
+ button {
29
+ display:block;
30
+ float:left;
31
+ margin:0 0.583em 0.667em 0;
32
+ padding:5px 10px 5px 7px; /* Links */
33
+
34
+ border:1px solid #dedede;
35
+ border-top:1px solid #eee;
36
+ border-left:1px solid #eee;
37
+
38
+ background-color:#f5f5f5;
39
+ font-family:"Lucida Grande", Tahoma, Arial, Verdana, sans-serif;
40
+ font-size:100%;
41
+ line-height:130%;
42
+ text-decoration:none;
43
+ font-weight:bold;
44
+ color:#565656;
45
+ cursor:pointer;
46
+ }
47
+ button {
48
+ width:auto;
49
+ overflow:visible;
50
+ padding:4px 10px 3px 7px; /* IE6 */
51
+ }
52
+ button[type] {
53
+ padding:4px 10px 4px 7px; /* Firefox */
54
+ line-height:17px; /* Safari */
55
+ }
56
+ *:first-child+html button[type] {
57
+ padding:4px 10px 3px 7px; /* IE7 */
58
+ }
59
+ button img {
60
+ margin:0 3px -3px 0 !important;
61
+ padding:0;
62
+ border:none;
63
+ width:16px;
64
+ height:16px;
65
+ float:none;
66
+ }
67
+
68
+
69
+ /* Button colors
70
+ -------------------------------------------------------------- */
71
+
72
+ /* Standard */
73
+ button:hover {
74
+ background-color:#dff4ff;
75
+ border:1px solid #c2e1ef;
76
+ color:#336699;
77
+ }
78
+
79
+ /* Positive */
80
+ body .positive {
81
+ color:#529214;
82
+ }
83
+ button.positive:hover {
84
+ background-color:#E6EFC2;
85
+ border:1px solid #C6D880;
86
+ color:#529214;
87
+ }
88
+
89
+ /* Negative */
90
+ body .negative {
91
+ color:#d12f19;
92
+ }
93
+ button.negative:hover {
94
+ background:#fbe3e4;
95
+ border:1px solid #fbc2c4;
96
+ color:#d12f19;
97
+ }
98
+
99
+ html {
100
+ background-color: #e0e0e0; }
101
+
102
+ body {
103
+ font-size: 100%;
104
+ font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
105
+ color: #333333; }
106
+
107
+ a {
108
+ color: #ed1556;
109
+ text-decoration: none; }
110
+ a:hover {
111
+ color: #ffffff;
112
+ background-color: #ed1556; }
113
+
114
+ #header, #content, #footer {
115
+ margin: 0 auto;
116
+ background: #eeeeee;
117
+ padding: 0 2em;
118
+ z-index: 0;
119
+ position: relative;
120
+ font-size: 1em; }
121
+
122
+ #header {
123
+ background: #ffffff; }
124
+ #header h1 {
125
+ font-weight: bold;
126
+ font-size: 1.5em; }
127
+ #header address.watermark {
128
+ position: absolute;
129
+ font-weight: bold;
130
+ right: 3em;
131
+ top: 0;
132
+ font-size: .75em;
133
+ color: #cccccc; }
134
+ #header address.watermark a {
135
+ color: #cccccc;
136
+ font-weight: bold;
137
+ font-size: 2em; }
138
+ #header address.watermark a:hover {
139
+ background: transparent;
140
+ color: #aaaaaa; }
141
+
142
+ #content {
143
+ padding-top: 1em;
144
+ padding-bottom: 2em; }
145
+ #content strong {
146
+ font-weight: bold; }
147
+ #content em {
148
+ font-style: italic; }
149
+ #content h1, #content h2, #content h3, #content h4, #content h5, #content h6 {
150
+ color: #4e4e4e; }
151
+ #content h1 {
152
+ font-size: 2em;
153
+ font-weight: bold;
154
+ margin-bottom: .75em;
155
+ padding: .25em 0;
156
+ line-height: 1.2;
157
+ border-bottom: 1px solid #c0c0c0; }
158
+ #content h2 {
159
+ font-weight: bold;
160
+ font-size: 1.5em;
161
+ margin: 1em 0 .2em; }
162
+ #content h3 {
163
+ font-weight: bold;
164
+ font-size: 1.25em;
165
+ margin: .25em 0; }
166
+ #content h4, #content h5, #content h6 {
167
+ font-weight: bold;
168
+ margin-top: .5em; }
169
+ #content code, #content pre, #content textarea, #content input {
170
+ font-family: Monaco, Deja Vu Sans Mono, Inconsolata, Consolas, monospace; }
171
+ #content form p {
172
+ margin-top: 1em;
173
+ position: relative; }
174
+ #content form p.checkbox label {
175
+ margin-top: 0 !important; }
176
+ #content form input.text, #content form textarea {
177
+ width: 30em;
178
+ padding: .2em .4em;
179
+ color: #4e4e4e; }
180
+ #content form input.text {
181
+ height: 1.4em; }
182
+ #content form label {
183
+ float: left;
184
+ display: block;
185
+ margin-top: .5em;
186
+ width: 8em;
187
+ margin-right: .75em; }
188
+ #content form .with_errors label {
189
+ background: red;
190
+ color: white;
191
+ position: relative;
192
+ top: -.7em; }
193
+ #content form .with_errors.required label {
194
+ position: static;
195
+ margin-right: .25em;
196
+ padding: 0 .2em; }
197
+ #content form .with_errors input, #content form .with_errors textarea {
198
+ border: 2px solid #f22;
199
+ background: #fee;
200
+ color: #222222; }
201
+ #content form .required label {
202
+ float: none;
203
+ display: block;
204
+ width: auto;
205
+ position: relative;
206
+ font-weight: bold;
207
+ margin-top: 1em;
208
+ text-indent: -.65em; }
209
+ #content form .required label:before {
210
+ content: "* ";
211
+ color: #ed1556; }
212
+ #content form .required input.text {
213
+ width: 25.6em;
214
+ font-size: 24px;
215
+ font-weight: bold; }
216
+ #content form .normal {
217
+ margin-top: 2em; }
218
+ #content form h2.notifier label {
219
+ float: none;
220
+ width: auto;
221
+ margin-right: 0; }
222
+ #content form h2.notifier label .warning {
223
+ font-size: .5em;
224
+ font-weight: normal;
225
+ color: #999999; }
226
+ #content form fieldset {
227
+ padding-bottom: 1em;
228
+ margin-left: 1.35em;
229
+ border-bottom: 1px solid #c0c0c0;
230
+ margin-bottom: 1em; }
231
+ #content form fieldset h3 {
232
+ margin-top: 1em;
233
+ margin-bottom: 0; }
234
+ #content form fieldset p.normal {
235
+ margin-top: 1em; }
236
+ #content form fieldset p label {
237
+ width: 6.7em; }
238
+ #content form p.submit {
239
+ margin-top: 2em; }
240
+ #content form p.submit:after {
241
+ display: block;
242
+ clear: both;
243
+ float: none;
244
+ content: ".";
245
+ text-indent: -9999em;
246
+ text-align: left; }
247
+ #content form p.submit.destroy button, #content form p.submit.manual-build button {
248
+ float: none;
249
+ display: inline; }
250
+ #content form p.submit.manual-build button {
251
+ margin-right: 0; }
252
+ #content #build form, #content #last_build form {
253
+ font-size: .75em; }
254
+ #content #build form p.submit, #content #last_build form p.submit {
255
+ margin: 0;
256
+ padding: 0;
257
+ position: absolute;
258
+ right: .5em;
259
+ top: 1.25em; }
260
+ #content .blank_slate p, #content .error p {
261
+ position: relative;
262
+ top: .3em; }
263
+ #content .blank_slate h1, #content .error h1 {
264
+ border-width: 0;
265
+ margin: 0;
266
+ padding: 0; }
267
+ #content .blank_slate h1 button, #content .error h1 button {
268
+ float: none;
269
+ border: 0 none;
270
+ background: transparent;
271
+ display: inline;
272
+ color: #ed1556;
273
+ padding: 0.25em 0;
274
+ margin: 0; }
275
+ #content .blank_slate h1 button:hover, #content .error h1 button:hover {
276
+ background: #ed1556;
277
+ color: #ffffff; }
278
+ #content .error dt {
279
+ margin-top: 1.4em;
280
+ margin-bottom: .3em;
281
+ font-size: 1.75em;
282
+ font-family: Georgia, Times New Roman, serif; }
283
+ #content .error dd {
284
+ line-height: 1.4; }
285
+ #content .error .backtrace {
286
+ margin: 1em 0;
287
+ overflow: scroll;
288
+ height: 30em;
289
+ border: 1px solid #c0c0c0;
290
+ line-height: 1.6; }
291
+ #content #projects {
292
+ margin: 1em 0 2em;
293
+ border-top: 1px solid #c0c0c0; }
294
+ #content #projects li {
295
+ position: relative;
296
+ border-bottom: 1px solid #c0c0c0; }
297
+ #content #projects li.odd {
298
+ background: #e6e6e6; }
299
+ #content #projects li.building {
300
+ background: transparent url(/spinner.gif) no-repeat scroll right; }
301
+ #content #projects li a {
302
+ font-size: 2em;
303
+ padding: .25em;
304
+ line-height: 1.2;
305
+ font-weight: bold;
306
+ display: block; }
307
+ #content #projects li a.success {
308
+ color: #337022; }
309
+ #content #projects li a.failed {
310
+ color: #ff1100; }
311
+ #content #projects li .meta {
312
+ position: absolute;
313
+ right: .6em;
314
+ top: 1.5em;
315
+ font-size: 0.8em;
316
+ color: #999999;
317
+ text-align: right; }
318
+ #content #projects li.building .meta {
319
+ right: 1.6em; }
320
+ #content #projects li.success .meta {
321
+ color: #337022; }
322
+ #content #projects li.failed .meta {
323
+ color: #ff1100; }
324
+ #content #previous_builds li a {
325
+ display: block;
326
+ padding: .25em;
327
+ margin-bottom: .25em;
328
+ border-width: 1px;
329
+ border-style: solid; }
330
+ #content #previous_builds li a strong {
331
+ font-size: 1.3em; }
332
+ #content #previous_builds li a .attribution {
333
+ font-size: .9em; }
334
+ #content #projects li.success a, #content #previous_builds li.success a {
335
+ background-color: #bbf8aa;
336
+ border-color: #99d688;
337
+ color: #337022; }
338
+ #content #projects li.success a .attribution, #content #previous_builds li.success a .attribution {
339
+ color: #77b466; }
340
+ #content #projects li.success a:hover, #content #previous_builds li.success a:hover {
341
+ background-color: #ddffcc; }
342
+ #content #projects li.failed a, #content #previous_builds li.failed a {
343
+ background-color: #ffbbaa;
344
+ border-color: #dd9988;
345
+ color: #ff1100; }
346
+ #content #projects li.failed a .attribution, #content #previous_builds li.failed a .attribution {
347
+ color: #bb7766; }
348
+ #content #projects li.failed a:hover, #content #previous_builds li.failed a:hover {
349
+ background-color: #ffddcc; }
350
+ #content #build, #content #last_build {
351
+ position: relative; }
352
+ #content #build h1, #content #build blockquote, #content #last_build h1, #content #last_build blockquote {
353
+ border-width: 0 1px;
354
+ border-style: solid; }
355
+ #content #build h1, #content #last_build h1 {
356
+ border-top-width: 1px; }
357
+ #content #build blockquote, #content #last_build blockquote {
358
+ bottom-bottom-width: 1px;
359
+ line-height: 1.4; }
360
+ #content #build.success h1, #content #build.success blockquote, #content #last_build.success h1, #content #last_build.success blockquote {
361
+ background-color: #bbf8aa;
362
+ border-color: #99d688 #ccffbb #ccffbb #99d688; }
363
+ #content #build.success h1, #content #last_build.success h1 {
364
+ color: #337022; }
365
+ #content #build.success .meta, #content #last_build.success .meta {
366
+ color: #77b466; }
367
+ #content #build.failed h1, #content #build.failed blockquote, #content #last_build.failed h1, #content #last_build.failed blockquote {
368
+ background-color: #ffbbaa;
369
+ border-color: #dd9988 #ffccbb #ffccbb #dd9988; }
370
+ #content #build.failed h1, #content #last_build.failed h1 {
371
+ color: #ff1100; }
372
+ #content #build.failed .meta, #content #last_build.failed .meta {
373
+ color: #bb7766; }
374
+ #content #build h1, #content #last_build h1 {
375
+ margin-top: .5em;
376
+ margin-bottom: 0;
377
+ padding: .25em;
378
+ color: #337022; }
379
+ #content #build blockquote, #content #last_build blockquote {
380
+ padding: .75em;
381
+ margin-bottom: 2em; }
382
+ #content #build blockquote .meta, #content #last_build blockquote .meta {
383
+ margin-top: 1em;
384
+ display: block;
385
+ font-size: .9em; }
386
+ #content #build pre.output, #content #last_build pre.output {
387
+ background: #111;
388
+ color: #fff;
389
+ padding: .5em;
390
+ overflow: auto;
391
+ max-height: 50em;
392
+ font-size: .825em; }
393
+ #content #build pre.output .color30, #content #last_build pre.output .color30 {
394
+ color: #333; }
395
+ #content #build pre.output .color31, #content #last_build pre.output .color31 {
396
+ color: #e33; }
397
+ #content #build pre.output .color32, #content #last_build pre.output .color32 {
398
+ color: #3e3; }
399
+ #content #build pre.output .color33, #content #last_build pre.output .color33 {
400
+ color: #ee3; }
401
+ #content #build pre.output .color34, #content #last_build pre.output .color34 {
402
+ color: #33e; }
403
+ #content #build pre.output .color35, #content #last_build pre.output .color35 {
404
+ color: #e3e; }
405
+ #content #build pre.output .color36, #content #last_build pre.output .color36 {
406
+ color: #3ee; }
407
+ #content #build pre.output .color37, #content #last_build pre.output .color37 {
408
+ color: #fff; }
409
+ #content #push_path {
410
+ display: block;
411
+ margin-top: 1em;
412
+ margin-left: 2em; }
413
+
414
+ a.success {
415
+ color: #bbf8aa; }
416
+ a.success:hover {
417
+ background-color: #bbf8aa;
418
+ color: white; }
419
+ a.failed {
420
+ color: #ffbbaa; }
421
+ a.failed:hover {
422
+ background-color: #ffbbaa;
423
+ color: white; }
424
+
425
+ #footer {
426
+ padding: 1.5em 2.5em;
427
+ border-top: 1px solid #ccc;
428
+ font-size: .8em;
429
+ color: #666;
430
+ text-align: right; }
431
+ #footer strong {
432
+ font-weight: bold; }
433
+
434
+ table {
435
+ margin-top: 20px;
436
+ border-collapse: collapse;
437
+ border: 1px solid #666;
438
+ background: #fff;
439
+ margin-bottom: 20px;
440
+ }
441
+
442
+ table tr.light {
443
+ background: #fff;
444
+ }
445
+
446
+ table tr.dark {
447
+ background: #f9f9f9;
448
+ }
449
+
450
+ table tr:hover {
451
+ background: #FFFFC0;
452
+ }
453
+
454
+ table td, table th {
455
+ padding: 4px;
456
+ font-size: 11px;
457
+ }
458
+ table th {
459
+ text-align: center;
460
+ color: #337022;
461
+ background: #DDFFCC;
462
+ font-weight: bold;
463
+ border: #99D688 1px solid;
464
+ }
465
+
466
+ table td {
467
+ border: #d0d0d0 1px solid;
468
+ }
469
+
470
+ table td.score {
471
+ text-align: right;
472
+ }
473
+
474
+ .warning {
475
+ background: yellow;
476
+ }
477
+ .rcov_code td {
478
+ border-bottom: 1px solid #ddd ;
479
+ padding: 0;
480
+ margin: 0;
481
+ }
482
+ .rcov_code tr {
483
+ border: 0px;
484
+ padding:0px;
485
+ margin: 0px;
486
+ }
487
+ .rcov_code pre {
488
+ border: 0px;
489
+ padding: 0px;
490
+ margin: 0px;
491
+ }
492
+ .rcov_run {}
493
+ .rcov_not_run {
494
+ background-color: #d88;
495
+ }
496
+ .rcov_run a, .rcov_not_run a {
497
+ text-decoration: none;
498
+ }
499
+ .rcov_run a {
500
+ color: #333;
501
+ }
502
+ .rcov_not_run a {
503
+ color: #000;
504
+ }
505
+ .rcov_overflow {
506
+ overflow: auto;
507
+ font-size: 50%;
508
+ }
509
+
510
+ .bluff-tooltip {
511
+ background: #fff;
512
+ border: 1px solid #d1edf5;
513
+ padding: 8px 8px 6px;
514
+ }
515
+ .bluff-tooltip .color {
516
+ display: block;
517
+ height: 4px;
518
+ width: 30px;
519
+ margin: 0 0 4px;
520
+ overflow: hidden;
521
+ }
522
+ .bluff-tooltip .data {
523
+ font-weight: bold;
524
+ }
525
+
526
+ </style>
527
+ <link REL="SHORTCUT ICON" HREF="/favicon.ico">
528
+ <script language="javascript" src="js-class.js" type="text/javascript"></script>
529
+ <script language="javascript" src="bluff-min.js" type="text/javascript"></script>
530
+ <script language="javascript" src="excanvas.js" type="text/javascript"></script>
531
+ </head>
532
+ <body>
533
+ <div id='header'>
534
+ <h1><a href="/">metrics</a> | <a href="index.html">ninjs</a></h1>
535
+ <address class='watermark'>
536
+ built with
537
+ <a href='http://metric-fu.rubyforge.org/'>metric-fu</a>
538
+ </address>
539
+ </div>
540
+ <div id='content'>
541
+ <h3>Source Control Churn Results</h3>
542
+ <p>Files that change a lot in your project may be bad a sign.
543
+ This task uses your source control log to identify those files.
544
+ </p>
545
+ <table>
546
+ <tr>
547
+ <th>File Path</th>
548
+ <th>Times Changed</th>
549
+ </tr>
550
+
551
+
552
+ <tr>
553
+ <td><a href='txmt://open/?url=file:///Volumes/Storage/Development/ninjs/README.textile'>README.textile</a></td>
554
+ <td>14</td>
555
+ </tr>
556
+
557
+
558
+ <tr>
559
+ <td><a href='txmt://open/?url=file:///Volumes/Storage/Development/ninjs/ninjs.gemspec'>ninjs.gemspec</a></td>
560
+ <td>12</td>
561
+ </tr>
562
+
563
+
564
+ <tr>
565
+ <td><a href='txmt://open/?url=file:///Volumes/Storage/Development/ninjs/lib/ninjs/project.rb'>lib/ninjs/project.rb</a></td>
566
+ <td>10</td>
567
+ </tr>
568
+
569
+
570
+ <tr>
571
+ <td><a href='txmt://open/?url=file:///Volumes/Storage/Development/ninjs/repository/ninjs/core/nin.js'>repository/ninjs/core/nin.js</a></td>
572
+ <td>9</td>
573
+ </tr>
574
+
575
+
576
+ <tr>
577
+ <td><a href='txmt://open/?url=file:///Volumes/Storage/Development/ninjs/bin/ninjs'>bin/ninjs</a></td>
578
+ <td>7</td>
579
+ </tr>
580
+
581
+
582
+ <tr>
583
+ <td><a href='txmt://open/?url=file:///Volumes/Storage/Development/ninjs/repository/ninjs/core/existence.js'>repository/ninjs/core/existence.js</a></td>
584
+ <td>5</td>
585
+ </tr>
586
+
587
+
588
+ <tr>
589
+ <td><a href='txmt://open/?url=file:///Volumes/Storage/Development/ninjs/Rakefile'>Rakefile</a></td>
590
+ <td>4</td>
591
+ </tr>
592
+
593
+
594
+ <tr>
595
+ <td><a href='txmt://open/?url=file:///Volumes/Storage/Development/ninjs/repository/ninjs/core/module.js'>repository/ninjs/core/module.js</a></td>
596
+ <td>4</td>
597
+ </tr>
598
+
599
+
600
+ <tr>
601
+ <td><a href='txmt://open/?url=file:///Volumes/Storage/Development/ninjs/lib/ninjs/configuration.rb'>lib/ninjs/configuration.rb</a></td>
602
+ <td>4</td>
603
+ </tr>
604
+
605
+
606
+ <tr>
607
+ <td><a href='txmt://open/?url=file:///Volumes/Storage/Development/ninjs/lib/ninjs/command.rb'>lib/ninjs/command.rb</a></td>
608
+ <td>4</td>
609
+ </tr>
610
+
611
+
612
+ <tr>
613
+ <td><a href='txmt://open/?url=file:///Volumes/Storage/Development/ninjs/lib/ninjs/dependencies.rb'>lib/ninjs/dependencies.rb</a></td>
614
+ <td>3</td>
615
+ </tr>
616
+
617
+
618
+ <tr>
619
+ <td><a href='txmt://open/?url=file:///Volumes/Storage/Development/ninjs/VERSION'>VERSION</a></td>
620
+ <td>3</td>
621
+ </tr>
622
+
623
+
624
+ <tr>
625
+ <td><a href='txmt://open/?url=file:///Volumes/Storage/Development/ninjs/lib/ninjs.rb'>lib/ninjs.rb</a></td>
626
+ <td>3</td>
627
+ </tr>
628
+
629
+
630
+ <tr>
631
+ <td><a href='txmt://open/?url=file:///Volumes/Storage/Development/ninjs/repository/ninjs/tests/index.html'>repository/ninjs/tests/index.html</a></td>
632
+ <td>3</td>
633
+ </tr>
634
+
635
+
636
+ <tr>
637
+ <td><a href='txmt://open/?url=file:///Volumes/Storage/Development/ninjs/repository/ninjs/tests/ninjs.test.js'>repository/ninjs/tests/ninjs.test.js</a></td>
638
+ <td>3</td>
639
+ </tr>
640
+
641
+
642
+ <tr>
643
+ <td><a href='txmt://open/?url=file:///Volumes/Storage/Development/ninjs/Gemfile'>Gemfile</a></td>
644
+ <td>3</td>
645
+ </tr>
646
+
647
+
648
+ <tr>
649
+ <td><a href='txmt://open/?url=file:///Volumes/Storage/Development/ninjs/spec/ninjs_spec.rb'>spec/ninjs_spec.rb</a></td>
650
+ <td>3</td>
651
+ </tr>
652
+
653
+
654
+ <tr>
655
+ <td><a href='txmt://open/?url=file:///Volumes/Storage/Development/ninjs/README'>README</a></td>
656
+ <td>3</td>
657
+ </tr>
658
+
659
+
660
+ </table>
661
+
662
+
663
+ <p>Classes that change a lot in your project may be bad a sign.</p>
664
+ <table>
665
+ <tr>
666
+ <th>File Path</th>
667
+ <th>Times Changed</th>
668
+ </tr>
669
+
670
+
671
+ </table>
672
+
673
+
674
+
675
+ <p>Methods that change a lot in your project may be bad a sign.</p>
676
+ <table>
677
+ <tr>
678
+ <th>File Path</th>
679
+ <th>Times Changed</th>
680
+ </tr>
681
+
682
+
683
+ </table>
684
+
685
+
686
+
687
+
688
+ <p>Generated on 2011-03-05 14:06:52 -0600</p>
689
+
690
+ </div>
691
+ </body>
692
+ </html>