Class: MegaBar::ModelDisplay

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/mega_bar/model_display.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#authorizedObject

Returns the value of attribute authorized.



8
9
10
# File 'app/models/mega_bar/model_display.rb', line 8

def authorized
  @authorized
end

#edit_field_displayObject

Returns the value of attribute edit_field_display.



8
9
10
# File 'app/models/mega_bar/model_display.rb', line 8

def edit_field_display
  @edit_field_display
end

#index_field_displayObject

Returns the value of attribute index_field_display.



8
9
10
# File 'app/models/mega_bar/model_display.rb', line 8

def index_field_display
  @index_field_display
end

#new_field_displayObject

Returns the value of attribute new_field_display.



8
9
10
# File 'app/models/mega_bar/model_display.rb', line 8

def new_field_display
  @new_field_display
end

#show_field_displayObject

Returns the value of attribute show_field_display.



8
9
10
# File 'app/models/mega_bar/model_display.rb', line 8

def show_field_display
  @show_field_display
end

Class Method Details

.deterministic_id(block_id, model_id, action, series = nil) ⇒ Object

Deterministic ID generation for ModelDisplays ID range: 2000-2999



17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'app/models/mega_bar/model_display.rb', line 17

def self.deterministic_id(block_id, model_id, action, series = nil)
  # Include series to make model displays unique per series
  identifier = series ? "#{block_id}_#{model_id}_#{action}_#{series}" : "#{block_id}_#{model_id}_#{action}"
  hash = Digest::MD5.hexdigest(identifier)
  base_id = 2000 + (hash.to_i(16) % 1000)
  
  # Check for collisions and increment if needed
  while MegaBar::ModelDisplay.exists?(id: base_id)
    base_id += 1
    break if base_id >= 3000  # Don't overflow into next range
  end
  
  base_id
end

Instance Method Details

#make_collection_settingsObject



47
48
49
# File 'app/models/mega_bar/model_display.rb', line 47

def make_collection_settings
  ModelDisplayCollection.create(model_display_id: self.id) if self.collection_or_member == 'collection'
end

#make_field_displaysObject



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'app/models/mega_bar/model_display.rb', line 51

def make_field_displays
  actions = []
  fields = Field.by_model(self.model_id)
  fields.each do | field | 
    case self.action
    when 'new'
      actions << {format: field.default_data_format, field_id: field.id, header: field.field.humanize}  if !FieldDisplay.by_model_display_id(self.id).by_fields(field.id).present?
    when 'index'
      actions << {format: 'textread', field_id: field.id, header: field.field.humanize}  if !FieldDisplay.by_model_display_id(self.id).by_fields(field.id).present? 
    when 'show'
      actions << {format: 'textread', field_id: field.id, header: field.field.humanize}  if !FieldDisplay.by_model_display_id(self.id).by_fields(field.id).present?
    when 'edit'
      actions << {format: field.default_data_format_edit, field_id: field.id, header: field.field.humanize}  if !FieldDisplay.by_model_display_id(self.id).by_fields(field.id).present?
    else 
      actions << {format: 'textread', field_id: field.id, header: field.field.humanize}  if !FieldDisplay.by_model_display_id(self.id).by_fields(field.id).present?          
    end
  end
  actions.each do | action |
    FieldDisplay.create(model_display_id: self.id, :field_id=>action[:field_id], :format=>action[:format], :header=>action[:header])
  end
end