Finished phase006
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
<%= form_with model: [vehicle, maintenance_schedule] do |form| %>
|
||||
<% if maintenance_schedule.errors.any? %>
|
||||
<section>
|
||||
<h2><%= pluralize(maintenance_schedule.errors.count, "error") %> prevented this maintenance schedule from being saved</h2>
|
||||
|
||||
<ul>
|
||||
<% maintenance_schedule.errors.full_messages.each do |message| %>
|
||||
<li><%= message %></li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</section>
|
||||
<% end %>
|
||||
|
||||
<div>
|
||||
<%= form.label :maintenance_type %><br>
|
||||
<%= form.text_field :maintenance_type, required: true %>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<%= form.label :mileage_interval %><br>
|
||||
<%= form.number_field :mileage_interval, min: 1, required: true %>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<%= form.label :time_interval, "Time interval in days" %><br>
|
||||
<%= form.number_field :time_interval, min: 1, required: true %>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<%= form.label :baseline_odometer %><br>
|
||||
<%= form.number_field :baseline_odometer, min: 0, required: true %>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<%= form.label :baseline_date %><br>
|
||||
<%= form.date_field :baseline_date, max: Date.current, required: true %>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<%= form.check_box :active %>
|
||||
<%= form.label :active %>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<%= form.submit %>
|
||||
</div>
|
||||
<% end %>
|
||||
@@ -0,0 +1,7 @@
|
||||
<main>
|
||||
<p><%= link_to "Back to maintenance schedules", vehicle_maintenance_schedules_path(@vehicle) %></p>
|
||||
|
||||
<h1>Edit Maintenance Schedule</h1>
|
||||
|
||||
<%= render "form", vehicle: @vehicle, maintenance_schedule: @maintenance_schedule %>
|
||||
</main>
|
||||
@@ -0,0 +1,46 @@
|
||||
<main>
|
||||
<p><%= notice %></p>
|
||||
|
||||
<p><%= link_to "Back to vehicle", vehicle_path(@vehicle) %></p>
|
||||
|
||||
<h1>Maintenance Schedules</h1>
|
||||
<p><%= @vehicle.year %> <%= @vehicle.make %> <%= @vehicle.model %></p>
|
||||
|
||||
<p><%= link_to "New maintenance schedule", new_vehicle_maintenance_schedule_path(@vehicle) %></p>
|
||||
|
||||
<% if @maintenance_schedules.any? %>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Type</th>
|
||||
<th>Mileage interval</th>
|
||||
<th>Time interval</th>
|
||||
<th>Baseline odometer</th>
|
||||
<th>Baseline date</th>
|
||||
<th>Status</th>
|
||||
<th>Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% @maintenance_schedules.each do |schedule| %>
|
||||
<tr>
|
||||
<td><%= link_to schedule.maintenance_type, vehicle_maintenance_schedule_path(@vehicle, schedule) %></td>
|
||||
<td><%= number_with_delimiter(schedule.mileage_interval) %> miles</td>
|
||||
<td><%= schedule.time_interval %> days</td>
|
||||
<td><%= number_with_delimiter(schedule.baseline_odometer) %></td>
|
||||
<td><%= schedule.baseline_date %></td>
|
||||
<td><%= schedule.active? ? "Active" : "Inactive" %></td>
|
||||
<td>
|
||||
<%= link_to "Edit", edit_vehicle_maintenance_schedule_path(@vehicle, schedule) %>
|
||||
<% if schedule.active? %>
|
||||
<%= button_to "Deactivate", deactivate_vehicle_maintenance_schedule_path(@vehicle, schedule), method: :patch %>
|
||||
<% end %>
|
||||
</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
<% else %>
|
||||
<p>No maintenance schedules recorded.</p>
|
||||
<% end %>
|
||||
</main>
|
||||
@@ -0,0 +1,7 @@
|
||||
<main>
|
||||
<p><%= link_to "Back to maintenance schedules", vehicle_maintenance_schedules_path(@vehicle) %></p>
|
||||
|
||||
<h1>New Maintenance Schedule</h1>
|
||||
|
||||
<%= render "form", vehicle: @vehicle, maintenance_schedule: @maintenance_schedule %>
|
||||
</main>
|
||||
@@ -0,0 +1,26 @@
|
||||
<main>
|
||||
<p><%= notice %></p>
|
||||
|
||||
<p><%= link_to "Back to maintenance schedules", vehicle_maintenance_schedules_path(@vehicle) %></p>
|
||||
|
||||
<h1><%= @maintenance_schedule.maintenance_type %></h1>
|
||||
|
||||
<dl>
|
||||
<dt>Mileage interval</dt>
|
||||
<dd><%= number_with_delimiter(@maintenance_schedule.mileage_interval) %> miles</dd>
|
||||
|
||||
<dt>Time interval</dt>
|
||||
<dd><%= @maintenance_schedule.time_interval %> days</dd>
|
||||
|
||||
<dt>Baseline odometer</dt>
|
||||
<dd><%= number_with_delimiter(@maintenance_schedule.baseline_odometer) %></dd>
|
||||
|
||||
<dt>Baseline date</dt>
|
||||
<dd><%= @maintenance_schedule.baseline_date %></dd>
|
||||
|
||||
<dt>Status</dt>
|
||||
<dd><%= @maintenance_schedule.active? ? "Active" : "Inactive" %></dd>
|
||||
</dl>
|
||||
|
||||
<p><%= link_to "Edit", edit_vehicle_maintenance_schedule_path(@vehicle, @maintenance_schedule) %></p>
|
||||
</main>
|
||||
@@ -49,6 +49,54 @@
|
||||
<section>
|
||||
<h2>Maintenance Schedules</h2>
|
||||
|
||||
<p><%= link_to "Manage maintenance schedules", vehicle_maintenance_schedules_path(@vehicle) %></p>
|
||||
|
||||
<% 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? %>
|
||||
<section>
|
||||
<h3>Overdue Maintenance</h3>
|
||||
<ul>
|
||||
<% overdue_statuses.each do |status| %>
|
||||
<li>
|
||||
<%= status.schedule.maintenance_type %> is overdue: <%= status.reason %>.
|
||||
Due at <%= number_with_delimiter(status.due_odometer) %> miles or <%= status.due_date %>.
|
||||
</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</section>
|
||||
<% end %>
|
||||
|
||||
<% if upcoming_statuses.any? %>
|
||||
<section>
|
||||
<h3>Upcoming Maintenance</h3>
|
||||
<ul>
|
||||
<% upcoming_statuses.each do |status| %>
|
||||
<li>
|
||||
<%= status.schedule.maintenance_type %> is upcoming: <%= status.reason %>.
|
||||
Due at <%= number_with_delimiter(status.due_odometer) %> miles or <%= status.due_date %>.
|
||||
</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</section>
|
||||
<% end %>
|
||||
|
||||
<% if no_history_statuses.any? %>
|
||||
<section>
|
||||
<h3>No Maintenance History</h3>
|
||||
<ul>
|
||||
<% no_history_statuses.each do |status| %>
|
||||
<li>
|
||||
<%= 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 %>.
|
||||
</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</section>
|
||||
<% end %>
|
||||
|
||||
<% if @maintenance_schedules.any? %>
|
||||
<table>
|
||||
<thead>
|
||||
@@ -56,14 +104,21 @@
|
||||
<th>Type</th>
|
||||
<th>Mileage interval</th>
|
||||
<th>Time interval</th>
|
||||
<th>Next due odometer</th>
|
||||
<th>Next due date</th>
|
||||
<th>Status</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% @maintenance_schedules.each do |schedule| %>
|
||||
<% status = @maintenance_schedule_statuses.fetch(schedule) %>
|
||||
<tr>
|
||||
<td><%= schedule.maintenance_type %></td>
|
||||
<td><%= number_with_delimiter(schedule.mileage_interval) %> miles</td>
|
||||
<td><%= schedule.time_interval %> days</td>
|
||||
<td><%= number_with_delimiter(status.due_odometer) %></td>
|
||||
<td><%= status.due_date %></td>
|
||||
<td><%= status.status_label %></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
|
||||
Reference in New Issue
Block a user