244 lines
6.7 KiB
Plaintext
244 lines
6.7 KiB
Plaintext
<main>
|
|
<p><%= notice %></p>
|
|
<p><%= flash[:warning] %></p>
|
|
|
|
<p><%= link_to "Back to vehicles", vehicles_path %></p>
|
|
|
|
<h1><%= @vehicle.year %> <%= @vehicle.make %> <%= @vehicle.model %></h1>
|
|
|
|
<div>
|
|
<%= link_to "Edit", edit_vehicle_path(@vehicle) %>
|
|
<% if @vehicle.active? %>
|
|
| <%= button_to "Deactivate", @vehicle, method: :delete %>
|
|
<% end %>
|
|
</div>
|
|
|
|
<section>
|
|
<h2>Vehicle Details</h2>
|
|
|
|
<dl>
|
|
<dt>Make</dt>
|
|
<dd><%= @vehicle.make %></dd>
|
|
|
|
<dt>Model</dt>
|
|
<dd><%= @vehicle.model %></dd>
|
|
|
|
<dt>Year</dt>
|
|
<dd><%= @vehicle.year %></dd>
|
|
|
|
<dt>Color</dt>
|
|
<dd><%= @vehicle.color %></dd>
|
|
|
|
<dt>VIN</dt>
|
|
<dd><%= @vehicle.vin %></dd>
|
|
|
|
<dt>Licence plate</dt>
|
|
<dd><%= @vehicle.licence_plate %></dd>
|
|
|
|
<dt>Current odometer</dt>
|
|
<dd><%= number_with_delimiter(@vehicle.current_odometer) %></dd>
|
|
|
|
<dt>Fuel tank size</dt>
|
|
<dd><%= @vehicle.fuel_tank_size %></dd>
|
|
|
|
<dt>Status</dt>
|
|
<dd><%= @vehicle.active? ? "Active" : "Inactive" %></dd>
|
|
</dl>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Maintenance Schedules</h2>
|
|
|
|
<% if @maintenance_schedules.any? %>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Type</th>
|
|
<th>Mileage interval</th>
|
|
<th>Time interval</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<% @maintenance_schedules.each do |schedule| %>
|
|
<tr>
|
|
<td><%= schedule.maintenance_type %></td>
|
|
<td><%= number_with_delimiter(schedule.mileage_interval) %> miles</td>
|
|
<td><%= schedule.time_interval %> days</td>
|
|
</tr>
|
|
<% end %>
|
|
</tbody>
|
|
</table>
|
|
<% else %>
|
|
<p>No maintenance schedules recorded.</p>
|
|
<% end %>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Record Fuel</h2>
|
|
|
|
<%= form_with model: [@vehicle, @fuel_entry] do |form| %>
|
|
<% if @fuel_entry.errors.any? %>
|
|
<section>
|
|
<h3><%= pluralize(@fuel_entry.errors.count, "error") %> prevented this fuel entry from being saved</h3>
|
|
|
|
<ul>
|
|
<% @fuel_entry.errors.full_messages.each do |message| %>
|
|
<li><%= message %></li>
|
|
<% end %>
|
|
</ul>
|
|
</section>
|
|
<% end %>
|
|
|
|
<div>
|
|
<%= form.label :odometer %><br>
|
|
<%= form.number_field :odometer, min: @vehicle.current_odometer, required: true %>
|
|
</div>
|
|
|
|
<div>
|
|
<%= form.label :gallons_pumped %><br>
|
|
<%= form.number_field :gallons_pumped, min: 0.01, step: "0.01", required: true %>
|
|
</div>
|
|
|
|
<div>
|
|
<%= form.label :price_paid %><br>
|
|
<%= form.number_field :price_paid, min: 0.01, step: "0.01", required: true %>
|
|
</div>
|
|
|
|
<div>
|
|
<%= form.label :date %><br>
|
|
<%= form.date_field :date, max: Date.current, required: true %>
|
|
</div>
|
|
|
|
<div>
|
|
<%= form.submit "Record fuel" %>
|
|
</div>
|
|
<% end %>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Record Maintenance</h2>
|
|
|
|
<% 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? %>
|
|
<section>
|
|
<h3><%= pluralize(@maintenance_entry.errors.count, "error") %> prevented this maintenance entry from being saved</h3>
|
|
|
|
<ul>
|
|
<% @maintenance_entry.errors.full_messages.each do |message| %>
|
|
<li><%= message %></li>
|
|
<% end %>
|
|
</ul>
|
|
</section>
|
|
<% end %>
|
|
|
|
<div>
|
|
<%= form.label :name, "Maintenance type" %><br>
|
|
<%= form.select :name, options_for_select(@maintenance_schedules.map(&:maintenance_type), @maintenance_entry.name), { prompt: "Choose maintenance type" }, required: true %>
|
|
</div>
|
|
|
|
<div>
|
|
<%= form.label :odometer %><br>
|
|
<%= 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"
|
|
} %>
|
|
</div>
|
|
|
|
<p hidden data-maintenance-odometer-warning-target="warning">
|
|
Warning: this maintenance odometer is more than 500 miles behind the current vehicle odometer.
|
|
</p>
|
|
|
|
<div>
|
|
<%= form.label :cost %><br>
|
|
<%= form.number_field :cost, min: 0, step: "0.01", required: true %>
|
|
</div>
|
|
|
|
<div>
|
|
<%= form.label :date %><br>
|
|
<%= form.date_field :date, max: Date.current, required: true %>
|
|
</div>
|
|
|
|
<div>
|
|
<%= form.label :notes %><br>
|
|
<%= form.text_area :notes, required: true %>
|
|
</div>
|
|
|
|
<div>
|
|
<%= form.submit "Record maintenance" %>
|
|
</div>
|
|
<% end %>
|
|
<% else %>
|
|
<p>Add a maintenance schedule before recording maintenance.</p>
|
|
<% end %>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Fuel History</h2>
|
|
|
|
<% if @fuel_entries.any? %>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Date</th>
|
|
<th>Odometer</th>
|
|
<th>Gallons</th>
|
|
<th>Price paid</th>
|
|
<th>Updated by</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<% @fuel_entries.each do |entry| %>
|
|
<tr>
|
|
<td><%= entry.date %></td>
|
|
<td><%= number_with_delimiter(entry.odometer) %></td>
|
|
<td><%= entry.gallons_pumped %></td>
|
|
<td><%= number_to_currency(entry.price_paid) %></td>
|
|
<td><%= entry.updated_by_user.name %></td>
|
|
</tr>
|
|
<% end %>
|
|
</tbody>
|
|
</table>
|
|
<% else %>
|
|
<p>No fuel entries recorded.</p>
|
|
<% end %>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Maintenance History</h2>
|
|
|
|
<% if @maintenance_entries.any? %>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Date</th>
|
|
<th>Name</th>
|
|
<th>Odometer</th>
|
|
<th>Cost</th>
|
|
<th>Notes</th>
|
|
<th>Updated by</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<% @maintenance_entries.each do |entry| %>
|
|
<tr>
|
|
<td><%= entry.date %></td>
|
|
<td><%= entry.name %></td>
|
|
<td><%= number_with_delimiter(entry.odometer) %></td>
|
|
<td><%= number_to_currency(entry.cost) %></td>
|
|
<td><%= entry.notes %></td>
|
|
<td><%= entry.updated_by_user.name %></td>
|
|
</tr>
|
|
<% end %>
|
|
</tbody>
|
|
</table>
|
|
<% else %>
|
|
<p>No maintenance entries recorded.</p>
|
|
<% end %>
|
|
</section>
|
|
</main>
|