Created
August 9, 2018 17:30
-
-
Save jmoglesby/3cea1af997330aef9396bf419974d832 to your computer and use it in GitHub Desktop.
Example code: Helper methods used in `items/index.html.erb` and `items/show.html.erb` from www.speedie.equipment
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module ItemsHelper | |
def current_status_display_for_item(item) | |
case item.service_events.order(:service_date, :created_at).last&.status | |
when 'In Service' | |
'<span class="badge badge-success">In Service</span>'.html_safe | |
when 'Repair' | |
'<span class="badge badge-warning"> | |
Repair | |
</span>'.html_safe | |
when 'Out of Service' | |
'<span class="badge badge-danger"> | |
Out of Service | |
</span>'.html_safe | |
when 'Discarded' | |
'<span class="badge badge-dark"> | |
Discarded | |
</span>'.html_safe | |
when 'Sold' | |
'<span class="badge badge-secondary"> | |
Sold | |
</span>'.html_safe | |
when 'Missing' | |
'<span class="badge badge-primary"> | |
Missing | |
</span>'.html_safe | |
end | |
end | |
def next_calibration_due_for_item(item) | |
item.calibration_events.order(:date_performed, :created_at).last&.date_performed >> | |
item.item_type.calibration_interval_in_months | |
end | |
def next_calibration_due_display_for_item(item) | |
case item.service_events.order(:service_date, :created_at).last&.status | |
when 'In Service' | |
if item.calibration_events.any? | |
if item.service_events.order(:service_date, :created_at).last&.service_date > | |
item.calibration_events.order(:date_performed, :created_at).last&.date_performed && | |
item.service_events.count > 1 | |
'<span class="font-weight-bold text-danger"> | |
Calibration Required To Bring Back In Service | |
</span>'.html_safe | |
else | |
'<span class="font-weight-bold"> | |
Next Due: | |
</span>'.html_safe + | |
(item.calibration_events.order(:date_performed, :created_at).last&.date_performed >> | |
item.item_type.calibration_interval_in_months).strftime("%m/%d/%Y") | |
end | |
else | |
'<span class="font-weight-bold text-danger"> | |
No Calibration Record Exists Yet | |
</span>'.html_safe | |
end | |
when 'Repair' | |
if item.calibration_events.any? | |
if item.service_events.order(:service_date, :created_at).last&.service_date > | |
item.calibration_events.order(:date_performed, :created_at).last&.date_performed && | |
item.service_events.count > 1 | |
'<span class="font-weight-bold text-danger"> | |
Calibration Required To Bring Back In Service | |
</span>'.html_safe | |
else | |
'<span class="font-weight-bold"> | |
Next Due: | |
</span>'.html_safe + | |
(item.calibration_events.order(:date_performed, :created_at).last&.date_performed >> | |
item.item_type.calibration_interval_in_months).strftime("%m/%d/%Y") | |
end | |
else | |
'<span class="font-weight-bold text-danger"> | |
No Calibration Record Exists Yet | |
</span>'.html_safe | |
end | |
when 'Missing' | |
if item.calibration_events.any? | |
'<span class="font-weight-bold"> | |
Next Due: | |
</span>'.html_safe + | |
(item.calibration_events.order(:date_performed, :created_at).last&.date_performed >> | |
item.item_type.calibration_interval_in_months).strftime("%m/%d/%Y") | |
else | |
'<span class="font-weight-bold text-danger"> | |
No Calibration Record Exists Yet | |
</span>'.html_safe | |
end | |
when 'Out of Service' | |
'<span class="font-weight-bold text-info"> | |
Calibration Requried When Brought Back Into Service | |
</span>'.html_safe | |
when 'Discarded' | |
when 'Sold' | |
end | |
end | |
def overdue_for_calibration_display_for_item(item) | |
if item.calibration_events.any? && | |
item.service_events.order(:service_date, :created_at).last&.status == 'In Service' | |
&& (DateTime.now.to_date > | |
(item.calibration_events.order(:date_performed, :created_at).last&.date_performed >> | |
item.item_type.calibration_interval_in_months)) | |
'<span class="font-weight-bold text-danger"> << Overdue!!</span>'.html_safe | |
end | |
end | |
def sieve_diameter_display_for_item(item) | |
case item.sieve_diameter | |
when '18 inch' | |
'18"' | |
when '12 inch' | |
'12"' | |
when '8 inch' | |
'8"' | |
when '3 inch' | |
'3"' | |
when 'Gilson' | |
'Gilson' | |
end | |
end | |
# View helpers for displaying all the variables | |
# associated with certain item_types | |
def item_type_variables_suffix_display_for_item(item) | |
if item.has_item_type_variables == true | |
case item.item_type.name | |
when 'Sieve' | |
sieve_diameter_display_for_item(item) | |
when 'Saw' | |
item.saw_type | |
when 'Caliper' | |
item.caliper_type | |
when 'Penetrometer' | |
item.penetrometer_type | |
when 'Proctor Hammer' | |
item.proctor_hammer_weight | |
when 'Flask' | |
item.flask_type | |
end | |
end | |
end | |
def item_type_variables_affix_display_for_item(item) | |
if item.has_item_type_variables == true | |
case item.item_type.name | |
when 'Sieve' | |
if item.sieve_type == 'Fine' | |
'(' + item.fine_sieve_opening_size + ')' | |
else | |
'(' + item.coarse_sieve_opening_size + ')' | |
end | |
when 'Flask' | |
'(' + item.volume + ')' | |
when 'Proctor Mold 4"' | |
'(' + item.proctor_mold_type + ')' | |
when 'Proctor Mold 6"' | |
'(' + item.proctor_mold_six_type + ')' | |
when 'Scale' | |
'(' + item.scale_resolution + ' res; ' + item.scale_range + ' max)' | |
when 'Capping Mold' | |
'(' + item.capping_mold_size + ')' | |
when 'Groove Tool' | |
'(' + item.groove_tool_type + ')' | |
when 'Marshall Hammer' | |
'(' + item.operation_type + ')' | |
when 'Marshall Pedestal' | |
'(' + item.marshall_compaction_pedestal_number + ')' | |
when 'Thermometer' | |
'(' + item.thermometer_type + ')' | |
when 'Caliper' | |
'(' + item.caliper_size + ')' | |
when 'Gauge' | |
'(' + item.gauge_type + ')' | |
end | |
end | |
end | |
def meets_spec_icon_display_for_item(item) | |
if item.meets_specifications? | |
fa_icon 'check-circle', class: 'text-success' | |
else | |
fa_icon 'times-circle', class: 'text-danger' | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment