← back to NationalPaperHangers

views/admin/calendar.ejs

54 lines

<%- include('../partials/head', { title, admin: true }) %>
<%- include('partials/admin-header') %>
<section class="admin-main">
  <header class="admin-page-head"><h1>Calendar</h1><p class="muted">Set weekly availability and block time off. Customers self-book into open windows.</p></header>

  <div class="cal-layout">
    <section class="admin-section">
      <h2>Weekly availability</h2>
      <p class="muted">Recurring schedule. Slot length is set per-booking by the customer (default 60 min, 15 min buffer).</p>
      <table class="data-table availability-table">
        <thead><tr><th>Day</th><th>Start</th><th>End</th><th></th></tr></thead>
        <tbody id="availability-tbody">
          <% availability.forEach(function(a){ %>
            <tr data-id="<%= a.id %>">
              <td><%= ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'][a.day_of_week] %></td>
              <td><%= a.start_time %></td>
              <td><%= a.end_time %></td>
              <td><button type="button" class="btn btn-ghost btn-sm" data-remove-availability="<%= a.id %>">Remove</button></td>
            </tr>
          <% }); %>
        </tbody>
      </table>
      <form id="add-availability" class="inline-form-row">
        <select name="day_of_week" required>
          <option value="">Day…</option>
          <option value="0">Sun</option><option value="1">Mon</option><option value="2">Tue</option>
          <option value="3">Wed</option><option value="4">Thu</option><option value="5">Fri</option><option value="6">Sat</option>
        </select>
        <input type="time" name="start_time" required>
        <input type="time" name="end_time" required>
        <button type="submit" class="btn btn-primary btn-sm">Add window</button>
      </form>
    </section>

    <section class="admin-section">
      <h2>Time off / blocks</h2>
      <ul id="time-off-list" class="time-off-list"></ul>
      <form id="add-time-off" class="inline-form-row">
        <input type="datetime-local" name="start_at" required>
        <input type="datetime-local" name="end_at" required>
        <input type="text" name="reason" placeholder="Reason (optional)">
        <button type="submit" class="btn btn-primary btn-sm">Block</button>
      </form>
    </section>

    <section class="admin-section">
      <h2>Upcoming on your calendar</h2>
      <div id="upcoming-cal-list" class="muted">Loading…</div>
    </section>
  </div>
</section>
<%- include('../partials/footer') %>
<script src="/js/calendar-installer.js" defer></script>