cityssm/contract-expiration-tracker

View on GitHub
views/contracts.ejs

Summary

Maintainability
Test Coverage
<!DOCTYPE html>
<html class="has-background-white-ter" lang="en">

<head>
  <title>
    <%= configFunctions.getProperty("customizations.applicationName") %>
  </title>
  <%- include('_headTags'); -%>
</head>

<body>
  <nav class="navbar is-dark mb-3">
    <div class="navbar-brand">
      <span class="navbar-item">
        <img src="<%= urlPrefix %>/images/logo.svg" alt="" />
      </span>
      <h1 class="navbar-item has-text-weight-bold">
        <%= configFunctions.getProperty("customizations.applicationName") %>
      </h1>
      <a class="navbar-burger" role="button" aria-label="menu" aria-expanded="false">
        <span aria-hidden="true"></span>
        <span aria-hidden="true"></span>
        <span aria-hidden="true"></span>
      </a>
    </div>
    <div class="navbar-menu">
      <% if (user.canUpdate) { %>
        <div class="navbar-start">
          <a class="navbar-item" id="navbar--contractCategoryUsersMaint" href="#">
            <span class="icon"><i class="fas fa-fw fa-users-cog" aria-hidden="true"></i></span>
            <span><%= configFunctions.getProperty("customizations.contractCategory.alias") %> User Maintenance</span>
          </a>
        </div>
      <% } %>
      <div class="navbar-end">
        <div class="navbar-item has-dropdown">
          <a class="navbar-link" href="#">
            <span class="icon"><i class="fas fa-fw fa-user" aria-hidden="true"></i></span>
            <span><%= user.userName %></span>
          </a>
          <div class="navbar-dropdown is-right">
            <a class="navbar-item" id="navbar--resetUserAccessGUIDs" href="#">
              <span class="icon"><i class="fas fa-key" aria-hidden="true"></i></span>
              <span>Reset Export Keys</span>
            </a>
            <hr class="navbar-divider">
            <a class="navbar-item" href="<%= urlPrefix %>/logout">
              <span class="icon"><i class="fas fa-sign-out-alt" aria-hidden="true"></i></span>
              <span>Log Out</span>
            </a>
          </div>
        </div>
      </div>
    </div>
  </nav>
  <main class="container py-2 has-min-page-height">
    <% if (user.canUpdate) { %>
      <div class="fixed-container is-fixed-bottom-right mr-4 mb-4 is-hidden-print">
        <button class="button is-circle is-success has-tooltip-left" id="button--addContract" data-tooltip="Add a New <%= configFunctions.getProperty("customizations.contract.alias") %>" type="button">
          <i class="fas fa-plus" aria-hidden="true"></i>
          <span class="is-sr-only">Add</span>
        </button>
      </div>
    <% } %>
    <form class="box" id="form--filters">
      <div class="columns">
        <div class="column">
          <div class="field">
            <div class="control is-expanded has-icons-left">
              <div class="select is-fullwidth">
                <select id="filters--contractCategory" name="contractCategory" aria-label="Filter by <%= configFunctions.getProperty("customizations.contractCategory.alias") %>">
                  <option value="">(All Available <%= configFunctions.getProperty("customizations.contractCategory.aliasPlural") %>)</option>
                </select>
              </div>
              <span class="icon is-small is-left">
                <i class="fas fa-archive" aria-hidden="true"></i>
              </span>
            </div>
          </div>
        </div>
        <div class="column">
          <div class="field">
            <div class="control has-icons-left">
              <input class="input" id="filters--searchString" name="searchString" type="text" placeholder="Search <%= configFunctions.getProperty("customizations.contract.aliasPlural") %>" aria-label="Filter by <%= configFunctions.getProperty("customizations.contract.alias") %> Details" />
              <span class="icon is-small is-left">
                <i class="fas fa-search" aria-hidden="true"></i>
              </span>
            </div>
          </div>
        </div>
      </div>
      <div class="columns">
        <div class="column">
          <div class="control is-expanded has-icons-left">
            <div class="select is-fullwidth">
              <select id="filters--hasBeenReplaced" name="hasBeenReplaced" aria-label="Filter by Replacement Status">
                <option value="">(All Replacement Statuses)</option>
                <option value="1">Has Been Replaced</option>
                <option value="0">Not Marked as Replaced</option>
              </select>
            </div>
            <span class="icon is-small is-left">
              <i class="fas fa-fast-forward" aria-hidden="true"></i>
            </span>
          </div>
        </div>
        <div class="column">
          <% if (user.canUpdate) { %>
            <div class="control is-expanded has-icons-left">
              <div class="select is-fullwidth">
                <select id="filters--managingUserName" name="managingUserName" aria-label="Filter by Managing User">
                  <option value="">(All Managing Users)</option>
                  <% for (const managingUserName of configFunctions.getProperty("permissions.canUpdate").sort()) { %>
                    <option value="<%= managingUserName %>"><%= managingUserName %></option>
                  <% } %>
                </select>
              </div>
              <span class="icon is-small is-left">
                <i class="fas fa-id-card" aria-hidden="true"></i>
              </span>
            </div>
          <% } else { %>
            <input id="filters--managingUserName" name="managingUserName" type="hidden" value="" />
          <% } %>
        </div>
      </div>
      <div class="facheck">
        <input id="filters--includeExpired" name="includeExpired" type="checkbox" />
        <label for="filters--includeExpired">Include Expired <%= configFunctions.getProperty("customizations.contract.aliasPlural") %></label>
      </div>
    </form>
    <div id="container--results">
      <div class="has-text-centered p-4">
        <span class="icon">
          <i class="fas fa-4x fa-spinner fa-pulse" aria-hidden="true"></i>
        </span>
      </div>
    </div>
    <div class="columns is-hidden-print mt-4">
      <div class="column">
        <div class="has-text-centered is-size-7">
          <strong>Export Filtered <%= configFunctions.getProperty("customizations.contract.aliasPlural") %></strong><br />
          <a class="button is-small mt-2" id="export--csv" href="#" target="_blank">
            <span class="icon"><i class="fas fa-table" aria-hidden="true"></i></span>
            <span>CSV</span>
          </a>
        </div>
      </div>
      <div class="column">
        <div class="has-text-centered is-size-7 mb-4">
          <strong>Subscribe to Filtered <%= configFunctions.getProperty("customizations.contract.aliasPlural") %></strong><br />
          <div class="field has-addons is-justify-content-center my-2">
            <div class="control">
              <a class="button is-small" id="export--ical" href="#" target="_blank">
                <span class="icon"><i class="fas fa-calendar" aria-hidden="true"></i></span>
                <span>iCal</span>
              </a>
            </div>
            <div class="control">
              <a class="button is-small" id="export--atom" href="#" target="_blank">
                <span class="icon"><i class="fas fa-rss" aria-hidden="true"></i></span>
                <span>Atom</span>
              </a>
            </div>
            <div class="control">
              <a class="button is-small" id="export--rss" href="#" target="_blank">
                <span class="icon"><i class="fas fa-rss" aria-hidden="true"></i></span>
                <span>RSS</span>
              </a>
            </div>
          </div>
          Right-click and copy links for best results.
        </div>
  </main>
  <footer class="has-background-black-ter has-text-white-ter px-3 py-6">
    <strong class="has-text-white-ter"><%= configFunctions.getProperty("customizations.applicationName") %></strong><br />
    Build <%= buildNumber %><br />
    <a class="has-text-white" href="https://cityssm.github.io/contract-expiration-tracker/docs/" target="_blank" rel="nofollow noreferrer">
      Help
    </a>
    &middot;
    <a class="has-text-white" href="https://github.com/cityssm/contract-expiration-tracker" target="_blank" rel="nofollow noreferrer">
      GitHub
    </a>
  </footer>
  <script>
    window.exports = window.exports || {};

    exports.userName = "<%= user.userName %>";
    exports.canUpdate = <%= user.canUpdate %>;
    exports.guidA = "<%= user.guidA %>";
    exports.guidB = "<%= user.guidB %>";

    exports.urlPrefix = "<%= urlPrefix %>";

    exports.docuShare_isEnabled = <%= configFunctions.getProperty("docuShare.isEnabled") %>;

    exports.customizations_contract_alias = "<%= configFunctions.getProperty("customizations.contract.alias") %>";
    exports.customizations_contract_aliasPlural = "<%= configFunctions.getProperty("customizations.contract.aliasPlural") %>";

    exports.customizations_contractCategory_alias = "<%= configFunctions.getProperty("customizations.contractCategory.alias") %>";
    exports.customizations_contractCategory_aliasPlural = "<%= configFunctions.getProperty("customizations.contractCategory.aliasPlural") %>";

    exports.customizations_contractParty_alias = "<%= configFunctions.getProperty("customizations.contractParty.alias") %>";
    exports.customizations_contractParty_aliasPlural = "<%= configFunctions.getProperty("customizations.contractParty.aliasPlural") %>";

    exports.contractCategories = <%- JSON.stringify(contractCategories) %>;

    <% if (user.canUpdate) { %>
      exports.canUpdateUserNames = <%- JSON.stringify(configFunctions.getProperty("permissions.canUpdate").sort()) %>;
    <% } %>
  </script>
  <script src="<%= urlPrefix %>/lib/bulma-js/bulma-js.js"></script>
  <script src="<%= urlPrefix %>/lib/bulma-webapp-js/cityssm.min.js"></script>
  <script>
    bulmaJS.init();
    cityssm.htmlModalFolder ="<%= urlPrefix %>/html/";
  </script>
  <script src="<%= urlPrefix %>/lib/date-diff/date-diff.min.js"></script>
  <script src="<%= urlPrefix %>/javascripts/contracts.min.js"></script>
  <% if (user.canUpdate) { %>
    <script src="<%= urlPrefix %>/javascripts/admin.min.js"></script>
  <% } %>
</body>
</html>