Skip to content
Snippets Groups Projects
Commit 01064590 authored by Tyler Lemburg's avatar Tyler Lemburg
Browse files

Add ranges to minutes

parent f4572bf2
No related branches found
No related tags found
No related merge requests found
...@@ -9,7 +9,7 @@ class AddSpacePermissions < ActiveRecord::Migration ...@@ -9,7 +9,7 @@ class AddSpacePermissions < ActiveRecord::Migration
end end
def down def down
remove_column :user_has_permissions, :service_space_id, :integer, :default => 1 remove_column :user_has_permissions, :service_space_id
Permission.find_by(:id => 8).delete Permission.find_by(:id => 8).delete
end end
......
require 'active_record'
class AddMinutesRanges < ActiveRecord::Migration
def change
add_column :resources, :time_slot_type, :string, :default => 'exact'
add_column :resources, :min_minutes_per_reservation, :integer
add_column :resources, :max_minutes_per_reservation, :integer
add_column :resources, :increment_minutes_per_reservation, :integer
end
end
\ No newline at end of file
...@@ -32,7 +32,11 @@ post '/:service_space_url_name/admin/resources/create/?' do ...@@ -32,7 +32,11 @@ post '/:service_space_url_name/admin/resources/create/?' do
resource.service_space_id = @space.id resource.service_space_id = @space.id
resource.needs_authorization = true resource.needs_authorization = true
resource.is_reservable = params.checked?('is_reservable') resource.is_reservable = params.checked?('is_reservable')
resource.time_slot_type = params[:time_slot_type]
resource.minutes_per_reservation = params[:minutes_per_reservation] resource.minutes_per_reservation = params[:minutes_per_reservation]
resource.min_minutes_per_reservation = params[:min_minutes_per_reservation]
resource.max_minutes_per_reservation = params[:max_minutes_per_reservation]
resource.increment_minutes_per_reservation = params[:increment_minutes_per_reservation]
resource.needs_approval = false resource.needs_approval = false
resource.max_reservations_per_slot = 5 resource.max_reservations_per_slot = 5
resource.save resource.save
...@@ -68,7 +72,11 @@ post '/:service_space_url_name/admin/resources/:resource_id/edit/?' do ...@@ -68,7 +72,11 @@ post '/:service_space_url_name/admin/resources/:resource_id/edit/?' do
resource.model = params[:model] resource.model = params[:model]
resource.description = params[:description] resource.description = params[:description]
resource.is_reservable = params.checked?('is_reservable') resource.is_reservable = params.checked?('is_reservable')
resource.time_slot_type = params[:time_slot_type]
resource.minutes_per_reservation = params[:minutes_per_reservation] resource.minutes_per_reservation = params[:minutes_per_reservation]
resource.min_minutes_per_reservation = params[:min_minutes_per_reservation]
resource.max_minutes_per_reservation = params[:max_minutes_per_reservation]
resource.increment_minutes_per_reservation = params[:increment_minutes_per_reservation]
resource.save resource.save
flash(:success, 'Resource Updated', "Your resource #{resource.name} has been updated.") flash(:success, 'Resource Updated', "Your resource #{resource.name} has been updated.")
......
...@@ -47,17 +47,17 @@ get '/:service_space_url_name/resources/:resource_id/reserve/?' do ...@@ -47,17 +47,17 @@ get '/:service_space_url_name/resources/:resource_id/reserve/?' do
# calculate the available start times for reservation # calculate the available start times for reservation
if space_hour.nil? if space_hour.nil?
start = 0 start = 0
while start + (resource.minutes_per_reservation || 15) <= 1440 while start + (resource.minutes_per_reservation || resource.min_minutes_per_reservation || 15) <= 1440
available_start_times << start available_start_times << start
start += (resource.minutes_per_reservation || 15) start += (resource.minutes_per_reservation || resource.min_minutes_per_reservation || 15)
end end
else else
space_hour.hours.sort{|x,y| x[:start] <=> y[:start]}.each do |record| space_hour.hours.sort{|x,y| x[:start] <=> y[:start]}.each do |record|
if record[:status] == 'open' if record[:status] == 'open'
start = record[:start] start = record[:start]
while start + (resource.minutes_per_reservation || 15) <= record[:end] while start + (resource.minutes_per_reservation || resource.min_minutes_per_reservation || 15) <= record[:end]
available_start_times << start available_start_times << start
start += (resource.minutes_per_reservation || 15) start += (resource.minutes_per_reservation || resource.min_minutes_per_reservation || 15)
end end
end end
end end
......
...@@ -30,6 +30,14 @@ class Integer ...@@ -30,6 +30,14 @@ class Integer
"$#{self / 100.0}" "$#{self / 100.0}"
end end
def minutes_output
if self < 60
"#{self} minutes"
else
"#{(self / 60)} hours #{self % 60} minutes"
end
end
alias_method :second, :seconds alias_method :second, :seconds
alias_method :minute, :minutes alias_method :minute, :minutes
alias_method :hour, :hours alias_method :hour, :hours
......
...@@ -6,9 +6,6 @@ ...@@ -6,9 +6,6 @@
<label for="name">Name</label> <label for="name">Name</label>
<input type="text" name="name" id="name" value='<%= resource.name %>'/> <input type="text" name="name" id="name" value='<%= resource.name %>'/>
<label for="model">Model</label>
<input type="text" name="model" id="model" value='<%= resource.model %>'/>
<label for="description">Description</label> <label for="description">Description</label>
<textarea id="description" name="description"><%= resource.description %></textarea> <textarea id="description" name="description"><%= resource.description %></textarea>
...@@ -17,8 +14,14 @@ ...@@ -17,8 +14,14 @@
<label for="is-reservable">Requires Reservation?</label> <label for="is-reservable">Requires Reservation?</label>
</div> </div>
<div> <div>
<label for="minutes-per-reservation">Minutes Per Reservation</label> <label for="minutes-per-reservation">Minutes Per Reservation</label><br>
<input type="number" name="minutes_per_reservation" id="minutes-per-reservation" value="<%= resource.minutes_per_reservation %>"> <input type="radio" name="time_slot_type" id="time-slot-type-exact" value="exact" <%= 'checked="checked"' if resource.time_slot_type == 'exact' %>>
<label for="time-slot-type-exact">Exactly:</label> <input type="number" name="minutes_per_reservation" id="minutes-per-reservation" value="<%= resource.minutes_per_reservation %>"><br><br>
<input type="radio" name="time_slot_type" id="time-slot-type-range" value="range" <%= 'checked="checked"' if resource.time_slot_type == 'range' %>>
<label for="time-slot-type-range">Range:</label>
<label for="min-minutes-per-reservation">Min:</label> <input style="width: 100px" type="number" name="min_minutes_per_reservation" id="min-minutes-per-reservation" value="<%= resource.min_minutes_per_reservation %>">
<label for="max-minutes-per-reservation">Max:</label> <input style="width: 100px" type="number" name="max_minutes_per_reservation" id="max-minutes-per-reservation" value="<%= resource.max_minutes_per_reservation %>">
<label for="increment-minutes-per-reservation">Increment:</label> <input style="width: 100px" type="number" name="increment_minutes_per_reservation" id="increment-minutes-per-reservation" value="<%= resource.increment_minutes_per_reservation %>">
</div> </div>
<br> <br>
......
...@@ -155,17 +155,25 @@ end %> ...@@ -155,17 +155,25 @@ end %>
</div> </div>
<label for="reservation-length">Reserve resource for:</label><br> <label for="reservation-length">Reserve resource for:</label><br>
<% if resource.minutes_per_reservation.nil? %> <% if resource.time_slot_type == 'exact' %>
<input style="width: 50px" disabled="disabled" value="<%= resource.minutes_per_reservation %>" />&nbsp;&nbsp;<label>minutes</label>
<input type="hidden" name="length" value="<%= resource.minutes_per_reservation %>" />
<% elsif resource.time_slot_type == 'range' %>
<select id="reservation-length" name="length">
<% i = resource.min_minutes_per_reservation %>
<% while i <= resource.max_minutes_per_reservation %>
<option value="<%= i %>"><%= i.minutes_output %></option>
<% i += resource.increment_minutes_per_reservation %>
<% end %>
</select>
<% else resource.minutes_per_reservation.nil? %>
<select id="reservation-length" name="length"> <select id="reservation-length" name="length">
<% (1..4).each do |i| %> <% (1..4).each do |i| %>
<option value="<%=i*15%>"><%=i*15%> minutes</option> <option value="<%=i*15%>"><%=i*15%> minutes</option>
<% end %> <% end %>
<option value="90">1.5 hours</option> <option value="90">1.5 hours</option>
<option value="120">2 hours</option> <option value="120">2 hours</option>
</select> </select>
<% else %>
<input style="width: 50px" disabled="disabled" value="<%= resource.minutes_per_reservation %>" />&nbsp;&nbsp;<label>minutes</label>
<input type="hidden" name="length" value="<%= resource.minutes_per_reservation %>" />
<% end %> <% end %>
<br><br> <br><br>
<button type="submit" class="wdn-button wdn-button-brand"><%= reservation.nil? ? 'Reserve' : 'Update' %></button> <button type="submit" class="wdn-button wdn-button-brand"><%= reservation.nil? ? 'Reserve' : 'Update' %></button>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment