Commit e22b7ecd authored by Paul Asmuth's avatar Paul Asmuth
Browse files

pie_widget

parent f3a0d575
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -275,15 +275,15 @@ FnordMetric.namespace :ulikeme do

  gauge :abtest_sidebar_btn_leute_treffen, 
    :tick => 1.day.to_i, 
    :title => "Sidebar-Button (A/B): 'leute_treffen'"
    :title => "leute_treffen"

  gauge :abtest_sidebar_btn_jetzt_losflirten, 
    :tick => 1.day.to_i, 
    :title => "Sidebar-Button (A/B): 'jetzt_losflirten'"
    :title => "jetzt_losflirten"

  gauge :abtest_sidebar_btn_dates_finden, 
    :tick => 1.day.to_i, 
    :title => "Sidebar-Button (A/B): 'dates_finden'"
    :title => "dates_finden"


  event :abtest_sidebar_btn_click do
+1 −0
Original line number Diff line number Diff line
@@ -130,6 +130,7 @@ require "fnordmetric/timeline_widget"
require "fnordmetric/numbers_widget"
require "fnordmetric/bars_widget"
require "fnordmetric/toplist_widget"
require "fnordmetric/pie_widget"
require "fnordmetric/namespace"
require "fnordmetric/gauge_modifiers"
require "fnordmetric/gauge_calculations"
+23 −0
Original line number Diff line number Diff line
class FnordMetric::PieWidget  < FnordMetric::Widget

  def data
    super.merge(
      :gauges => gauges.map(&:name),
      :gauge_titles => gauge_titles,
      :autoupdate => (@opts[:autoupdate] || 60)
    )
  end

  def gauge_titles
    {}.tap do |_hash|
      gauges.each do |gauge|
        _hash.merge!(gauge.name => gauge.title)
      end
    end
  end

  def has_tick?
    false
  end

end
 No newline at end of file
+111 −1
Original line number Diff line number Diff line
@@ -507,7 +507,6 @@ var FnordMetric = (function(){
              defaultSeriesType: series_type, 
              height: 270 
            },
            series: [],
            title: { text: '' },
            xAxis: {       
             categories: label_data
@@ -580,6 +579,116 @@ var FnordMetric = (function(){
  };


  var pieWidget = function(){
    
    function render(opts){
      
      var widget_uid = getNextWidgetUID();
      var chart=false;

      function redraw(first_time, silent){
        if(!silent){ $(opts.elem).css('opacity', 0.5); }
        var gauge_values = {};
        var gauges_left = opts.gauges.length;
        $(opts.gauges).each(function(i,gauge){
          gauges_left -= 1;
          gauge_values[gauge] = 123;
          if(gauges_left==0){
            redrawChart(first_time, gauge_values);
          }
        //  $.ajax({
        //    url: '/'+currentNamespace+'/gauge/'+gauge, 
        //    success: function(){
        //      
        //    }
        //  });         
        });
      }

      function redrawChart(first_time, gauge_values){       
      
        var series_data = [];
        
        for(_gkey in gauge_values){
          series_data.push([
            opts.gauge_titles[_gkey],
            gauge_values[_gkey]
          ]);
        } 
          
        chart = new Highcharts.Chart({     
          chart: { 
            renderTo: 'container-'+widget_uid, 
            defaultSeriesType: 'pie', 
            height: 270,
            spacingTop: -10,
            spacingBottom: 30
          },
          credits: {
            enabled: false
          },
          title: { text: '' },
          legend: {
            layout: 'horizontal',
            align: 'top',
            verticalAlign: 'top',
            margin: 25,
            borderWidth: 0
          },
          plotOptions: {
            pie: {
              animation: first_time,
              dataLabels: {
                formatter: function() {
                  return '<b>'+ this.point.name +'</b><br />'+ this.percentage.toFixed(1) +' %';
                }
              }
            }
          },
          series: [
            {
              name: opts.title,
              data: series_data
            }
          ]
        });

        //chart.redraw();
        $(opts.elem).css('opacity', 1);
      }
    
      function drawLayout(){
        $(opts.elem).append( $('<div></div>').attr('class', 'headbar small').append(
          $('<span></span>').html(opts.title)
        ) ).append( 
          $('<div></div>').attr('id', 'container-'+widget_uid).css({
            height: 270
          })
        );
      }

      drawLayout();
      redraw(true);

      if(opts.autoupdate){  
        var autoupdate_interval = window.setInterval(function(){
          redraw(false, true);
        }, opts.autoupdate*1000);

        $('body').bind('fm_dashboard_close', function(){
          window.clearInterval(autoupdate_interval);
        });  
      }

    }

    return {
      render: render  
    };

  };


  var sessionView = (function(){
    
    var listElem = $('<ul class="session_list"></ul>');
@@ -879,6 +988,7 @@ var FnordMetric = (function(){
      if(widget.klass=='BarsWidget'){ barsWidget().render(widget); }
      if(widget.klass=='NumbersWidget'){ numbersWidget().render(widget); }
      if(widget.klass=='ToplistWidget'){ toplistWidget().render(widget); }
      if(widget.klass=='PieWidget'){ pieWidget().render(widget); }
    };

    function resizeWidget(wkey){
+1 −1
Original line number Diff line number Diff line
@@ -296,7 +296,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

== Todos

  -> pie-widget, funnel-widget
  -> funnel-widget
  -> combine/calculation gauges via opts_gauge({}, &block) (+calculate ctr)
  -> timeline_widget: 'compare mode': compate gauge to yesterday
  -> fix include_current