Class: Raport::Report
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Raport::Report
- Defined in:
- app/models/raport/report.rb,
app/services/raport/report/renderer.rb
Defined Under Namespace
Classes: Renderer
Instance Method Summary collapse
- #collection ⇒ Object
- #default_filename ⇒ Object
- #display_status_name ⇒ Object
-
#downloadable? ⇒ Boolean
Instance Methods —————————————————————————————.
- #enqueue! ⇒ Object
- #filename ⇒ Object
- #format ⇒ Object
- #perform! ⇒ Object
- #permalink(format = nil) ⇒ Object
- #resource_class ⇒ Object
- #status_css_classes ⇒ Object
- #template_path ⇒ Object
- #tmp_file_identifier ⇒ Object
- #tmp_filename ⇒ Object
- #working? ⇒ Boolean
Instance Method Details
#collection ⇒ Object
185 186 187 188 189 190 191 192 |
# File 'app/models/raport/report.rb', line 185 def collection @collection ||= begin query = select.present? ? resource_class.select(*select) : resource_class query = query.joins(*joins) if joins.any? query = query.where(where) if where.present? query.select("DISTINCT ON (#{resource_class.table_name}.id) #{resource_class.table_name}.*") end end |
#default_filename ⇒ Object
198 199 200 |
# File 'app/models/raport/report.rb', line 198 def default_filename [I18n.l(Time.zone.now, format: :dashed), action_name ? resource_class.human_attribute_name(action_name) : nil, resource_class.model_name.human(count: :other)].join('-') end |
#display_status_name ⇒ Object
223 224 225 |
# File 'app/models/raport/report.rb', line 223 def display_status_name self.class.human_state_name(state) end |
#downloadable? ⇒ Boolean
Instance Methods
161 162 163 |
# File 'app/models/raport/report.rb', line 161 def downloadable? finished? || failed? && file? end |
#enqueue! ⇒ Object
173 174 175 |
# File 'app/models/raport/report.rb', line 173 def enqueue! ReportsJob.perform_later(self) end |
#filename ⇒ Object
202 203 204 205 |
# File 'app/models/raport/report.rb', line 202 def filename = { invalid: :replace, undef: :replace, replace: '', universal_newline: true } @filename ||= [name || default_filename, format].join('.').gsub('.csv.csv', '.csv').encode(Encoding.find('ASCII'), ) end |
#format ⇒ Object
181 182 183 |
# File 'app/models/raport/report.rb', line 181 def format @format ||= template.scan(/\.(.*?)\./).first.first.to_sym end |
#perform! ⇒ Object
169 170 171 |
# File 'app/models/raport/report.rb', line 169 def perform! ReportJob.new(id).perform end |
#permalink(format = nil) ⇒ Object
215 216 217 |
# File 'app/models/raport/report.rb', line 215 def permalink(format = nil) [Rails.application.routes.url_helpers.admin_report_path(self.to_param, locale: I18n.locale), format].compact.join('.') end |
#resource_class ⇒ Object
194 195 196 |
# File 'app/models/raport/report.rb', line 194 def resource_class @resource_class ||= resource_class_name.constantize end |
#status_css_classes ⇒ Object
219 220 221 |
# File 'app/models/raport/report.rb', line 219 def status_css_classes Admin::BaseController.helpers.status_css_class(state).join(' ') end |
#template_path ⇒ Object
177 178 179 |
# File 'app/models/raport/report.rb', line 177 def template_path @template_path ||= File.path(template).gsub('app/views', '').split('.').first end |
#tmp_file_identifier ⇒ Object
211 212 213 |
# File 'app/models/raport/report.rb', line 211 def tmp_file_identifier 'tempfile' end |
#tmp_filename ⇒ Object
207 208 209 |
# File 'app/models/raport/report.rb', line 207 def tmp_filename @tmp_filename ||= [filename, tmp_file_identifier].join('.') end |
#working? ⇒ Boolean
165 166 167 |
# File 'app/models/raport/report.rb', line 165 def working? pending? || active? end |