Sha256: 192e6bf8cc6acbeef9debefe17219ee67ee594423823deca2e4d2757473bb275

Contents?: true

Size: 1.5 KB

Versions: 1

Compression:

Stored size: 1.5 KB

Contents

require "#{File.dirname(__FILE__)}/log_note"

module Footnotes
  module Notes
    class PartialsNote < LogNote

      def initialize(controller)
        super
        @controller = controller
      end

      def row
        :edit
      end

      def title
        "Partials (#{partials.size})"
      end

      def content
        rows = partials.map do |filename|
          href = Footnotes::Filter.prefix(filename,1,1)
          name = filename.gsub(Rails.root.join("app/views/"),"")
          [%{<a href="#{href}">#{name}</a>},"#{@partial_times[filename].sum}ms", @partial_counts[filename]]
        end
        mount_table(rows.unshift(%w(Partial Time Count)), :summary => "Partials for #{title}")
      end

      def self.load
        self.loaded = true unless loaded
      end

    protected
      #Generate a list of partials that were rendered, also build up render times and counts.
      #This is memoized so we can use its information in the title easily.
      def partials
        @partials ||= begin
          partials = []
          @partial_counts = {}
          @partial_times = {}
          Footnotes.view_subscriber.partials.each do |event|
            partial = event.payload[:identifier]
            @partial_times[partial] ||= []
            @partial_times[partial] << event.duration
            @partial_counts[partial] ||= 0
            @partial_counts[partial] += 1
            partials << partial unless partials.include?(partial)
          end
          partials.reverse
        end
      end

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rails3-footnotes-4.0.0.pre.4 lib/rails-footnotes/notes/partials_note.rb