Sha256: 48b7d6d1e9b541a79456831d52bf54d3267b4c0bad4ae619c0afdaa3791474dc

Contents?: true

Size: 1.16 KB

Versions: 2

Compression:

Stored size: 1.16 KB

Contents

module MeterCat

  class MetersController < ApplicationController

    layout :set_layout

    before_action :_authenticate!
    before_action :_authorize!

    DEFAULT_DAYS = 7

    def index
      set_meters

      respond_to do |format|
        format.html { MeterCat.add(:meter_cat_html) }
        format.csv do
          MeterCat.add(:meter_cat_csv)
          render plain: Meter.to_csv(@range, @names), content_type: 'text/csv'
        end
      end
    end

    private

    def set_layout
      return MeterCat.config.layout
    end

    def _authenticate!
      instance_eval(&MeterCat.config.authenticate_with)
    end

    def _authorize!
      instance_eval(&MeterCat.config.authorize_with)
    end

    # rubocop:disable Metrics/AbcSize
    def set_meters
      date = params[:date]
      @date = Date.civil(date[:year].to_i, date[:month].to_i, date[:day].to_i) if date

      @days = params[:days].to_i if params[:days]
      @names = params[:names].map(&:to_sym) if params[:names]

      @all_names = MeterCat.names
      @date ||= Date.today
      @days ||= DEFAULT_DAYS

      @range = (@date - @days)..@date
      @meters = Meter.to_h(@range, @names)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
meter_cat-5.0.1 app/controllers/meter_cat/meters_controller.rb
meter_cat-5.0.0 app/controllers/meter_cat/meters_controller.rb