Class: IvyMeter::Event

Inherits:
Object
  • Object
show all
Includes:
Prop
Defined in:
lib/ivymeter/events/base.rb,
lib/ivymeter/events/tray.rb,
lib/ivymeter/events/piece.rb,
lib/ivymeter/events/bundle.rb,
lib/ivymeter/events/container.rb

Direct Known Subclasses

BundleEvent, ContainerEvent, PieceEvent, TrayEvent

Defined Under Namespace

Classes: BundleEvent, ContainerEvent, PieceEvent, TrayEvent

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Prop

included

Class Method Details

.from_csv(row) ⇒ Object



39
40
41
42
43
44
45
46
47
48
# File 'lib/ivymeter/events/base.rb', line 39

def from_csv(row)
  event = new
  property_mappings.each do |attr_name, mappings|
    value = row[mappings[:csv]]
    next if value.nil?

    event.send("#{attr_name}=", convert_value(value, mappings[:type]))
  end
  event
end

.from_json(json_data) ⇒ Object



28
29
30
31
32
33
34
35
36
37
# File 'lib/ivymeter/events/base.rb', line 28

def from_json(json_data)
  event = new
  property_mappings.each do |attr_name, mappings|
    value = json_data[mappings[:json]]
    next if value.nil?

    event.send("#{attr_name}=", convert_value(value, mappings[:type]))
  end
  event
end

.inherited(subclass) ⇒ Object



13
14
15
# File 'lib/ivymeter/events/base.rb', line 13

def inherited(subclass)
  subclass.instance_variable_set(:@property_mappings, property_mappings.dup)
end

.prop(name, json_name, csv_name, type: nil) ⇒ Object



17
18
19
20
21
22
# File 'lib/ivymeter/events/base.rb', line 17

def prop(name, json_name, csv_name, type: nil)
  attr_accessor name

  @property_mappings ||= {}
  @property_mappings[name] = { json: json_name, csv: csv_name, type: type }
end

.property_mappingsObject



24
25
26
# File 'lib/ivymeter/events/base.rb', line 24

def property_mappings
  @property_mappings || {}
end

Instance Method Details

#actual?Boolean

Returns:

  • (Boolean)


152
153
154
# File 'lib/ivymeter/events/base.rb', line 152

def actual?
  handling_event_type == 'A'
end

#assumed?Boolean

Returns:

  • (Boolean)


168
169
170
# File 'lib/ivymeter/events/base.rb', line 168

def assumed?
  assumed_actual? || assumed_logical?
end

#assumed_actual?Boolean

Returns:

  • (Boolean)


156
157
158
# File 'lib/ivymeter/events/base.rb', line 156

def assumed_actual?
  handling_event_type == 'AA'
end

#assumed_logical?Boolean

Returns:

  • (Boolean)


164
165
166
# File 'lib/ivymeter/events/base.rb', line 164

def assumed_logical?
  handling_event_type == 'AL'
end

#clearance_cutoff_timeObject



184
185
186
# File 'lib/ivymeter/events/base.rb', line 184

def clearance_cutoff_time
  opcode&.clearance_cutoff_time
end

#logical?Boolean

Returns:

  • (Boolean)


160
161
162
# File 'lib/ivymeter/events/base.rb', line 160

def logical?
  handling_event_type == 'L'
end

#mail_phaseObject



188
189
190
# File 'lib/ivymeter/events/base.rb', line 188

def mail_phase
  opcode&.mail_phase
end

#opcodeObject



172
173
174
# File 'lib/ivymeter/events/base.rb', line 172

def opcode
  @opcode ||= OpCode.find(scan_event_code)
end

#process_descriptionObject



192
193
194
# File 'lib/ivymeter/events/base.rb', line 192

def process_description
  opcode&.process_description
end

#stop_the_clock_scan?Boolean

Returns:

  • (Boolean)


176
177
178
# File 'lib/ivymeter/events/base.rb', line 176

def stop_the_clock_scan?
  opcode&.stop_the_clock_scan?
end

#to_json(*_args) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/ivymeter/events/base.rb', line 64

def to_json(*_args)
  result = {}
  self.class.property_mappings.each do |attr_name, mappings|
    value = send(attr_name)
    if value.is_a?(DateTime) && mappings[:type] == :datetime
      value = value.strftime('%Y-%m-%d %H:%M:%S%z')
    elsif value.is_a?(Date) && mappings[:type] == :date
      value = value.strftime('%Y-%m-%d')
    end
    result[mappings[:json]] = value
  end
  result.compact.to_json
end

#unexpected_opcode?Boolean

Returns:

  • (Boolean)


180
181
182
# File 'lib/ivymeter/events/base.rb', line 180

def unexpected_opcode?
  opcode&.unexpected?
end