Class: RedmineExtensions::EasyQueryHelpers::Outputs

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/redmine_extensions/easy_query_helpers/outputs.rb

Overview

—– OUTPUTS HELPER CLASS —-

Instance Method Summary collapse

Constructor Details

#initialize(presenter, view_context = nil) ⇒ Outputs



7
8
9
10
11
12
13
14
15
# File 'lib/redmine_extensions/easy_query_helpers/outputs.rb', line 7

def initialize(presenter, view_context = nil)
  if presenter.is_a?(RedmineExtensions::BasePresenter)
    @presenter = presenter
    @query = @presenter.model
  else
    @presenter = @query = presenter
  end
  @view_context = view_context
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args) ⇒ Object



67
68
69
70
71
72
73
# File 'lib/redmine_extensions/easy_query_helpers/outputs.rb', line 67

def method_missing(name, *args)
  if name.to_s.ends_with?('?')
    output_enabled?(name.to_s[0..-2])
  else
    super
  end
end

Instance Method Details

#available_output_namesObject



39
40
41
# File 'lib/redmine_extensions/easy_query_helpers/outputs.rb', line 39

def available_output_names
  @available_output_names ||= RedmineExtensions::QueryOutput.available_outputs_for( @query )
end

#available_outputsObject



43
44
45
# File 'lib/redmine_extensions/easy_query_helpers/outputs.rb', line 43

def available_outputs
  @available_outputs ||= RedmineExtensions::QueryOutput.available_output_klasses_for( @query ).map{|klass| klass.new(@presenter, self) }
end

#each(style = :enabled, &block) ⇒ Object



25
26
27
28
29
30
31
# File 'lib/redmine_extensions/easy_query_helpers/outputs.rb', line 25

def each(style = :enabled, &block)
  if style == :enabled
    outputs.each(&block)
  else
    available_outputs.each(&block)
  end
end

#enabled_outputsObject



33
34
35
36
37
# File 'lib/redmine_extensions/easy_query_helpers/outputs.rb', line 33

def enabled_outputs
  res = @query.outputs
  res << 'list' if res.empty? && available_outputs.empty?
  res
end

#output_enabled?(output) ⇒ Boolean



47
48
49
# File 'lib/redmine_extensions/easy_query_helpers/outputs.rb', line 47

def output_enabled?(output)
  enabled_outputs.include?(output.to_s)
end

#outputsObject



21
22
23
# File 'lib/redmine_extensions/easy_query_helpers/outputs.rb', line 21

def outputs
  @outputs ||= enabled_outputs.map{|o| RedmineExtensions::QueryOutput.output_klass_for(o).new(@presenter, self) }.sort_by{|a| a.order}
end

#render_dataObject



59
60
61
62
63
64
65
# File 'lib/redmine_extensions/easy_query_helpers/outputs.rb', line 59

def render_data
  if outputs.any?
    outputs.map{ |output| output.render_data }.join('').html_safe
  else
    view_context.l(:label_no_output)
  end
end

#render_editObject



55
56
57
# File 'lib/redmine_extensions/easy_query_helpers/outputs.rb', line 55

def render_edit
  outputs.map{ |output| output.render_edit }.join('').html_safe
end

#render_edit_selects(style = :check_box, options = {}) ⇒ Object



51
52
53
# File 'lib/redmine_extensions/easy_query_helpers/outputs.rb', line 51

def render_edit_selects(style=:check_box, options={})
  available_output_instances.map{|o| o.render_edit_box(style, options) }.join('').html_safe
end

#view_contextObject



17
18
19
# File 'lib/redmine_extensions/easy_query_helpers/outputs.rb', line 17

def view_context
  @view_context || @presenter.h
end