chores: add plugin for daily commute route planner

This commit is contained in:
James Harrison
2025-02-15 11:14:32 +01:00
parent 22bc4bb30e
commit a33cce93db
9 changed files with 224 additions and 0 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

+43
View File
@@ -0,0 +1,43 @@
module Plugins
class Routes < Base
def locals
{ routes:, origin:, destination:, last_updated: }
end
private
def routes
[
{
name: "Via N234",
distance: "13.2 km",
duration: "17 min",
is_fastest: true,
travel_mode: '🚘'
},
{
name: "via R. São Romão/N234 and N234",
distance: "15.8 km",
duration: "18 min",
is_fastest: false,
travel_mode: '🚘'
},
{
name: "via CM1037",
distance: "12.9 km",
duration: "18 min",
is_fastest: false,
travel_mode: '🚘'
}
]
end
def origin = "Febres, Portugal"
end
def destination = "Ourentã, Portugal"
end
def last_updated = "7:30 AM"
end
end
+57
View File
@@ -0,0 +1,57 @@
<div class="view view--full">
<div class="layout layout--col gap--space-between">
<div class="grid grid--cols-2">
<div class="item">
<div class="meta"></div>
<div class="content">
<span class="value value--small"><%= origin %><%= destination %></span>
</div>
</div>
<div class="item">
<div class="meta"></div>
<div class="content">
<span class="value value--small"><%= last_updated %> </span>
<span class="label">Last Updated</span>
</div>
</div>
</div>
<div class="w-full b-h-gray-5"></div>
<div class="columns">
<% routes.each do |route| %>
<div class="column">
<div class="list">
<div class="item <%= 'bg-gray-5' if route[:is_fastest] %>">
<div class="meta">
<% if route[:is_fastest] %>
<span class="index"></span>
<% end %>
</div>
<div class="content">
<span class="title title--small"><%= route[:name] %> (<%= route[:travel_mode] %>)</span>
<div class="flex gap--xsmall">
<span class="label label--small label--underline"><%= route[:duration] %></span>
<span class="label label--small label--underline"><%= route[:distance] %></span>
</div>
<div class="flex gap--xsmall">
<% if route[:is_fastest] %>
<span class="label label--small">Fastest Route</span>
<% else %>
<span class="label label--small">Alternative Route</span>
<% end %>
</div>
</div>
</div>
</div>
</div>
<% end %>
</div>
</div>
<div class="title_bar">
<img class="image" src="<%= Rails.application.credentials.base_url %>/images/map-pin.svg" />
<span class="title">Daily Commute</span>
<span class="instance">Route Planner</span>
</div>
</div>
@@ -0,0 +1,46 @@
<div class="view view--half_horizontal">
<div class="layout gap--space-between">
<div class="item">
<div class="meta"></div>
<div class="content">
<span class="value"><%= origin %><%= destination %></span>
</div>
</div>
<div class="w-full b-h-gray-5"></div>
<div class="columns">
<% routes.each do |route| %>
<div class="column">
<div class="item <%= 'bg-gray-5' if route[:is_fastest] %>">
<div class="meta">
<% if route[:is_fastest] %>
<span class="index"></span>
<% end %>
</div>
<div class="content">
<span class="title title--small"> <%= route[:name] %> (<%= route[:travel_mode] %>) </span>
<div class="flex gap--xsmall">
<span class="label label--small label--underline"><%= route[:duration] %></span>
<span class="label label--small"><%= route[:distance] %></span>
</div>
<% if route[:is_fastest] %>
<span class="label label--small">Fastest Route</span>
<% else %>
<span class="label label--small">Alternative Route</span>
<% end %>
</div>
</div>
</div>
<% end %>
</div>
</div>
<div class="title_bar">
<img class="image" src="<%= Rails.application.credentials.base_url %>/images/map-pin.svg" />
<span class="title">Daily Commute</span>
<span class="instance">Route Planner</span>
</div>
</div>
@@ -0,0 +1,43 @@
<div class="view view--half_vertical">
<div class="layout layout--col gap--medium">
<div class="item">
<div class="meta"></div>
<div class="content">
<span class="value"><%= origin %><%= destination %></span>
</div>
</div>
<div class="w-full b-h-gray-5"></div>
<div class="list">
<% routes.each do |route| %>
<div class="item <%= 'bg-gray-5' if route[:is_fastest] %>">
<div class="meta">
<% if route[:is_fastest] %>
<span class="index"></span>
<% end %>
</div>
<div class="content">
<span class="title title--small"> <%= route[:name] %> (<%= route[:travel_mode] %>) </span>
<div class="flex gap--xsmall">
<span class="label label--small label--underline"><%= route[:duration] %></span>
<span class="label label--small">(<%= route[:distance] %>)</span>
</div>
<% if route[:is_fastest] %>
<span class="label label--small">Fastest Route</span>
<% else %>
<span class="label label--small">Alternative Route</span>
<% end %>
</div>
</div>
<% end %>
</div>
</div>
<div class="title_bar">
<img class="image" src="<%= Rails.application.credentials.base_url %>/images/map-pin.svg" />
<span class="title">Daily Commute</span>
<span class="instance">Route Planner</span>
</div>
</div>
+35
View File
@@ -0,0 +1,35 @@
<div class="view view--quadrant">
<div class="layout layout--col">
<div class="item">
<div class="meta"></div>
<div class="content">
<span class="value"><%= origin %><%= destination %></span>
</div>
</div>
<div class="w-full b-h-gray-5"></div>
<% routes.each_with_index do |route, index| %>
<div class="item <%= 'bg-gray-5' if route[:is_fastest] %>">
<div class="meta">
<% if route[:is_fastest] %>
<span class="index"></span>
<% end %>
</div>
<div class="content">
<span class="title title--small"> <%= route[:name] %> (<%= route[:travel_mode] %>)</span>
<div class="flex gap--xsmall">
<span class="label label--small label--underline"><%= route[:duration] %></span>
<span class="label label--small">(<%= route[:distance] %>)</span>
</div>
</div>
</div>
<% end %>
</div>
<div class="title_bar">
<img class="image" src="<%= Rails.application.credentials.base_url %>/images/map-pin.svg" />
<span class="title">Daily Commute</span>
<span class="instance">Route Planner</span>
</div>
</div>