views/contracts.ejs
<!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>
·
<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>