Sha256: 2344c7350f87f76156ca2b928611c18599a624309cf9ce010b65d50596417396

Contents?: true

Size: 1.87 KB

Versions: 1

Compression:

Stored size: 1.87 KB

Contents

module Mitamirri

  class ContentReport

    # Search params
    attr_accessor :site
    attr_accessor :time_period
    attr_accessor :visit_kind
    
    # Initialization
    
    def initialize(args = {})
      args.each{|k,v| self.send("#{k}=",v) if self.respond_to?(k)} 
      self.time_period = args[:time_period] || 'past 3 months'
      self.sessions
    end
    
    def sessions
      @sessions ||= TrackableSession.search(
        :site => self.site,
        :time_period => self.time_period,
        :visit_kind => self.visit_kind
      )
    end

    # Generate an array of dates spanning the appropriate time period.
    def dates
      return @dates if @dates
      @dates = []
      case self.time_period
        when 'past month'
          _increment = 1
        when 'past 3 months'
          _increment = 2
        when 'past 6 months'
          _increment = 5
        when 'past 12 months'
          _increment = 11
        else 'all time'
          _increment = 24
      end
      
      (1.._increment).each{ |i| @dates << (Time.zone.now - i.months).beginning_of_month }
      @dates.reverse!
      @dates << Time.zone.now.end_of_month
      @dates
    end
    
    # Graphing data
 
    def pages_series(args)
      TrackableAction.pages_histogram(args).map{|datum| ContentStat.new(:url => datum[0], :views => datum[1].to_i)}
    end
    
    def entrance_pages_series(args)
      TrackableSession.entrance_pages_histogram(args).map{|datum| ContentStat.new(:url => datum[0], :views => datum[1].to_i)}
    end
    
    def exit_pages_series(args)
      TrackableSession.exit_pages_histogram(args).map{|datum| ContentStat.new(:url => datum[0], :views => datum[1].to_i)}
    end
    
    # Inner stat classes

    class ContentStat
      attr_accessor :url
      attr_accessor :views
      def initialize(args)
        args.each{ |k,v| self.send("#{k}=", v) }
      end
    end

  end
  
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mitamirri-0.13.8 lib/mitamirri/content_report.rb