Class | DisplayToList |
In: |
app/models/display_to_list.rb
|
Parent: | Display |
一覧画面のモデル
BUTTON_TYPE | = | [ [N_("Display|New"), "new"], ] |
権限にしたがって利用可能かどうかを判定する。
# File app/models/display_to_list.rb, line 49 49: def available? 50: product.visible? 51: end
既定の一覧かどうかを判定する。
# File app/models/display_to_list.rb, line 148 148: def default_list? 149: default_list = DefaultList.find_by_user_id_and_product_id(User.current_id, product.id) 150: return default_list && id == default_list.display_id 151: end
適切な ConfigOutput のインスタンスを生成する。
# File app/models/display_to_list.rb, line 131 131: def generate_config_output 132: return config_output if config_output 133: user_id = User.current_id 134: raise "current user is expected" unless user_id 135: config_output = ConfigOutput.create!(:display_to_list_id => id, 136: :name => name, 137: :user_id => user_id) 138: items.each_with_index do |item,i| 139: ConfigOutputItem.create!(:config_output_id => config_output.id, 140: :item_id => item.id, 141: :name => item.name, 142: :position => i + 1) 143: end 144: return config_output 145: end
画面に抽出される条件を返す。 SearchCondition も参照する。
# File app/models/display_to_list.rb, line 55 55: def options_to_extract 56: options = (e = extract) ? {:conditions => e} : {} 57: if search_condition 58: if e = search_condition.extract 59: if options[:conditions] 60: options[:conditions] << " AND #{e}" 61: else 62: options[:conditions] = e 63: end 64: end 65: end 66: return options 67: end
画面でレコードを順序づける ORDER BY 句のハッシュを返す。
# File app/models/display_to_list.rb, line 70 70: def options_to_order_by 71: if search_condition 72: if options = search_condition.options_to_order_by 73: return options 74: end 75: end 76: orders = items.reject {|item| item.direction.blank? || item.direction =~ /none/i || item.position.blank?} 77: return {} if orders.empty? 78: orders = orders.sort {|i,j| (i.position && j.position) ? (i.position - j.position) : 0} 79: return {:order => orders.map(&:order).join(",")} 80: end
画面に表示される項目の条件を返す。
# File app/models/display_to_list.rb, line 83 83: def options_to_select 84: column_names = ["id"] 85: items.each do |i| 86: if i.readable? 87: case i 88: when ItemProper, ItemPlural 89: column_names << i.column_name 90: when ItemPolymorphic 91: column_names << "#{i.column_name}_id" 92: column_names << "#{i.column_name}_type" 93: end 94: end 95: end 96: return {:select => column_names.join(",")} 97: end
個人利用のためのコピーを返す。
# File app/models/display_to_list.rb, line 116 116: def private_copy 117: user = User.current 118: raise "current user is expected" unless user 119: display = DisplayToListPrivate.new 120: display.attributes = attributes 121: display.person_id = user.person_id 122: message_source = PoMessageSingular.find(name_po) 123: message_copy = message_source.private_copy 124: display.name_po = message_copy.id 125: display.save! 126: items.each {|item| item.private_copy(display.id)} 127: return display 128: end
# File app/models/display_to_list.rb, line 99 99: def query_options 100: options = {} 101: if product.is_a?(ProductMultiple) 102: options[:group] = product.pivot 103: end 104: options.update(options_to_extract) 105: options.update(options_to_order_by) 106: options.update(options_to_select) 107: return options 108: end
選択された項目を返す。
# File app/models/display_to_list.rb, line 111 111: def selected_items 112: items.select(&:selected?).sort_by(&:layout) 113: end