Class: Redmine::FieldFormat::RecordList
- Inherits:
-
List
- Object
- Base
- List
- Redmine::FieldFormat::RecordList
show all
- Defined in:
- lib/redmine/field_format.rb
Instance Method Summary
collapse
Methods inherited from List
#bulk_edit_tag, #edit_tag, #query_filter_options
Methods inherited from Base
#after_save_custom_value, #before_custom_field_save, #bulk_edit_tag, #cast_custom_value, #cast_value, #edit_tag, field_attributes, #formatted_custom_value, #formatted_value, #label, #name, #possible_values_options, #query_filter_options, #set_custom_field_value, #validate_custom_field, #validate_single_value, #value_from_keyword
#uri_with_link_safe_scheme?, #uri_with_safe_scheme?
Methods included from I18n
#current_language, #day_letter, #day_name, #find_language, #format_date, #format_hours, #format_time, included, #l, #l_hours, #l_hours_short, #l_or_humanize, #languages_options, #ll, #lu, #month_name, #set_language_if_valid, #valid_languages
Instance Method Details
#cast_single_value(custom_field, value, customized = nil) ⇒ Object
763
764
765
|
# File 'lib/redmine/field_format.rb', line 763
def cast_single_value(custom_field, value, customized=nil)
target_class.find_by_id(value.to_i) if value.present?
end
|
#group_statement(custom_field) ⇒ Object
800
801
802
|
# File 'lib/redmine/field_format.rb', line 800
def group_statement(custom_field)
Arel.sql "COALESCE(#{join_alias custom_field}.value, '')"
end
|
#join_for_order_statement(custom_field) ⇒ Object
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
|
# File 'lib/redmine/field_format.rb', line 804
def join_for_order_statement(custom_field)
alias_name = join_alias(custom_field)
"LEFT OUTER JOIN #{CustomValue.table_name} #{alias_name}" \
" ON #{alias_name}.customized_type = '#{custom_field.class.customized_class.base_class.name}'" \
" AND #{alias_name}.customized_id = #{custom_field.class.customized_class.table_name}.id" \
" AND #{alias_name}.custom_field_id = #{custom_field.id}" \
" AND (#{custom_field.visibility_by_project_condition})" \
" AND #{alias_name}.value <> ''" \
" AND #{alias_name}.id = (SELECT max(#{alias_name}_2.id) FROM #{CustomValue.table_name} #{alias_name}_2" \
" WHERE #{alias_name}_2.customized_type = #{alias_name}.customized_type" \
" AND #{alias_name}_2.customized_id = #{alias_name}.customized_id" \
" AND #{alias_name}_2.custom_field_id = #{alias_name}.custom_field_id)" \
" LEFT OUTER JOIN #{target_class.table_name} #{value_join_alias custom_field}" \
" ON CAST(CASE #{alias_name}.value WHEN '' THEN '0' ELSE #{alias_name}.value END AS decimal(30,0))" \
" = #{value_join_alias custom_field}.id"
end
|
#order_statement(custom_field) ⇒ Object
794
795
796
797
798
|
# File 'lib/redmine/field_format.rb', line 794
def order_statement(custom_field)
if target_class.respond_to?(:fields_for_order_statement)
target_class.fields_for_order_statement(value_join_alias(custom_field))
end
end
|
#possible_custom_value_options(custom_value) ⇒ Object
775
776
777
778
779
780
781
782
|
# File 'lib/redmine/field_format.rb', line 775
def possible_custom_value_options(custom_value)
options = possible_values_options(custom_value.custom_field, custom_value.customized)
missing = [custom_value.value_was].flatten.reject(&:blank?) - options.map(&:last)
if missing.any?
options += target_class.where(:id => missing.map(&:to_i)).map {|o| [o.to_s, o.id.to_s]}
end
options
end
|
#reset_target_class ⇒ Object
771
772
773
|
# File 'lib/redmine/field_format.rb', line 771
def reset_target_class
@target_class = nil
end
|
#target_class ⇒ Object
767
768
769
|
# File 'lib/redmine/field_format.rb', line 767
def target_class
@target_class ||= self.class.name[/^(.*::)?(.+)Format$/, 2].constantize rescue nil
end
|
#validate_custom_value(custom_value) ⇒ Object
784
785
786
787
788
789
790
791
792
|
# File 'lib/redmine/field_format.rb', line 784
def validate_custom_value(custom_value)
values = Array.wrap(custom_value.value).reject {|value| value.to_s == ''}
invalid_values = values - possible_custom_value_options(custom_value).map(&:last)
if invalid_values.any?
[::I18n.t('activerecord.errors.messages.inclusion')]
else
[]
end
end
|