<%= notice %>
<%= flash[:warning] %>
<%= link_to "Back to vehicles", vehicles_path %>
<%= @vehicle.year %> <%= @vehicle.make %> <%= @vehicle.model %>
<%= link_to "Edit", edit_vehicle_path(@vehicle) %>
<% if @vehicle.active? %>
| <%= button_to "Deactivate", @vehicle, method: :delete %>
<% end %>
Vehicle Details
- Make
- <%= @vehicle.make %>
- Model
- <%= @vehicle.model %>
- Year
- <%= @vehicle.year %>
- Color
- <%= @vehicle.color %>
- VIN
- <%= @vehicle.vin %>
- Licence plate
- <%= @vehicle.licence_plate %>
- Current odometer
- <%= number_with_delimiter(@vehicle.current_odometer) %>
- Fuel tank size
- <%= @vehicle.fuel_tank_size %>
- Status
- <%= @vehicle.active? ? "Active" : "Inactive" %>
Maintenance Schedules
<%= link_to "Manage maintenance schedules", vehicle_maintenance_schedules_path(@vehicle) %>
<% overdue_statuses = @maintenance_schedule_statuses.values.select(&:overdue?) %>
<% upcoming_statuses = @maintenance_schedule_statuses.values.select(&:upcoming?) %>
<% no_history_statuses = @maintenance_schedule_statuses.values.select(&:no_history?) %>
<% if overdue_statuses.any? %>
Overdue Maintenance
<% overdue_statuses.each do |status| %>
-
<%= status.schedule.maintenance_type %> is overdue: <%= status.reason %>.
Due at <%= number_with_delimiter(status.due_odometer) %> miles or <%= status.due_date %>.
<% end %>
<% end %>
<% if upcoming_statuses.any? %>
Upcoming Maintenance
<% upcoming_statuses.each do |status| %>
-
<%= status.schedule.maintenance_type %> is upcoming: <%= status.reason %>.
Due at <%= number_with_delimiter(status.due_odometer) %> miles or <%= status.due_date %>.
<% end %>
<% end %>
<% if no_history_statuses.any? %>
No Maintenance History
<% no_history_statuses.each do |status| %>
-
<%= status.schedule.maintenance_type %> has no matching maintenance entry yet.
Baseline due point is <%= number_with_delimiter(status.due_odometer) %> miles or <%= status.due_date %>.
<% end %>
<% end %>
<% if @maintenance_schedules.any? %>
| Type |
Mileage interval |
Time interval |
Next due odometer |
Next due date |
Status |
<% @maintenance_schedules.each do |schedule| %>
<% status = @maintenance_schedule_statuses.fetch(schedule) %>
| <%= schedule.maintenance_type %> |
<%= number_with_delimiter(schedule.mileage_interval) %> miles |
<%= schedule.time_interval %> days |
<%= number_with_delimiter(status.due_odometer) %> |
<%= status.due_date %> |
<%= status.status_label %> |
<% end %>
<% else %>
No maintenance schedules recorded.
<% end %>
Record Fuel
<%= form_with model: [@vehicle, @fuel_entry] do |form| %>
<% if @fuel_entry.errors.any? %>
<%= pluralize(@fuel_entry.errors.count, "error") %> prevented this fuel entry from being saved
<% @fuel_entry.errors.full_messages.each do |message| %>
- <%= message %>
<% end %>
<% end %>
<%= form.label :odometer %>
<%= form.number_field :odometer, min: @vehicle.current_odometer, required: true %>
<%= form.label :gallons_pumped %>
<%= form.number_field :gallons_pumped, min: 0.01, step: "0.01", required: true %>
<%= form.label :price_paid %>
<%= form.number_field :price_paid, min: 0.01, step: "0.01", required: true %>
<%= form.label :date %>
<%= form.date_field :date, max: Date.current, required: true %>
<%= form.submit "Record fuel" %>
<% end %>
Record Maintenance
<% if @maintenance_schedules.any? %>
<%= form_with model: [@vehicle, @maintenance_entry], data: {
controller: "maintenance-odometer-warning",
maintenance_odometer_warning_current_odometer_value: @vehicle.current_odometer,
maintenance_odometer_warning_threshold_value: 500
} do |form| %>
<% if @maintenance_entry.errors.any? %>
<%= pluralize(@maintenance_entry.errors.count, "error") %> prevented this maintenance entry from being saved
<% @maintenance_entry.errors.full_messages.each do |message| %>
- <%= message %>
<% end %>
<% end %>
<%= form.label :name, "Maintenance type" %>
<%= form.select :name, options_for_select(@maintenance_schedules.map(&:maintenance_type), @maintenance_entry.name), { prompt: "Choose maintenance type" }, required: true %>
<%= form.label :odometer %>
<%= form.number_field :odometer, min: 0, required: true, data: {
maintenance_odometer_warning_target: "odometer",
action: "input->maintenance-odometer-warning#check change->maintenance-odometer-warning#check"
} %>
Warning: this maintenance odometer is more than 500 miles behind the current vehicle odometer.
<%= form.label :cost %>
<%= form.number_field :cost, min: 0, step: "0.01", required: true %>
<%= form.label :date %>
<%= form.date_field :date, max: Date.current, required: true %>
<%= form.label :notes %>
<%= form.text_area :notes, required: true %>
<%= form.submit "Record maintenance" %>
<% end %>
<% else %>
Add a maintenance schedule before recording maintenance.
<% end %>
Fuel History
<% if @fuel_entries.any? %>
| Date |
Odometer |
Gallons |
Price paid |
Updated by |
<% @fuel_entries.each do |entry| %>
| <%= entry.date %> |
<%= number_with_delimiter(entry.odometer) %> |
<%= entry.gallons_pumped %> |
<%= number_to_currency(entry.price_paid) %> |
<%= entry.updated_by_user.name %> |
<% end %>
<% else %>
No fuel entries recorded.
<% end %>
Maintenance History
<% if @maintenance_entries.any? %>
| Date |
Name |
Odometer |
Cost |
Notes |
Updated by |
<% @maintenance_entries.each do |entry| %>
| <%= entry.date %> |
<%= entry.name %> |
<%= number_with_delimiter(entry.odometer) %> |
<%= number_to_currency(entry.cost) %> |
<%= entry.notes %> |
<%= entry.updated_by_user.name %> |
<% end %>
<% else %>
No maintenance entries recorded.
<% end %>