deepsource-autofix-76c6eb20
Dan Gowans 2023-01-26 14:29:19 -05:00
parent 3a0b8a2ca1
commit 65b71e7f17
10 changed files with 685 additions and 683 deletions

View File

@ -330,9 +330,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
'Displaying ' +
(offset + 1).toString() +
' to ' +
Math.min(count, limit + offset) +
Math.min(count, limit + offset).toString() +
' of ' +
count +
count.toString() +
'</div>' +
'</div>') +
('<div class="level-right">' +

View File

@ -440,9 +440,9 @@ declare const bulmaJS: BulmaJS
'Displaying ' +
(offset + 1).toString() +
' to ' +
Math.min(count, limit + offset) +
Math.min(count, limit + offset).toString() +
' of ' +
count +
count.toString() +
'</div>' +
'</div>') +
('<div class="level-right">' +

File diff suppressed because one or more lines are too long

View File

@ -1,32 +1,32 @@
</main>
<footer class="footer has-background-grey-lighter has-text-dark is-hidden-print mt-4">
<div class="container">
<div class="content has-text-right">
<p class="has-text-grey-dark">
<strong>
<%= configFunctions.getProperty("application.applicationName") %>
</strong><br />
Build <%= buildNumber %>
</p>
</div>
<div class="container">
<div class="content has-text-right">
<p class="has-text-grey-dark">
<strong>
<%= configFunctions.getProperty("application.applicationName") %>
</strong><br />
Build <%= buildNumber %>
</p>
</div>
</div>
</footer>
<script>
window.exports = window.exports || {};
exports.aliases = {
map: "<%= configFunctions.getProperty("aliases.map") %>",
maps: "<%= configFunctions.getProperty("aliases.maps") %>",
lot: "<%= configFunctions.getProperty("aliases.lot") %>",
lots: "<%= configFunctions.getProperty("aliases.lots") %>",
occupancy: "<%= configFunctions.getProperty("aliases.occupancy") %>",
occupancies: "<%= configFunctions.getProperty("aliases.occupancies") %>",
occupancyStartDate: "<%= configFunctions.getProperty("aliases.occupancyStartDate") %>",
occupant: "<%= configFunctions.getProperty("aliases.occupant") %>",
occupants: "<%= configFunctions.getProperty("aliases.occupants") %>",
externalReceiptNumber: "<%= configFunctions.getProperty("aliases.externalReceiptNumber") %>",
workOrderOpenDate: "<%= configFunctions.getProperty("aliases.workOrderOpenDate") %>",
workOrderCloseDate: "<%= configFunctions.getProperty("aliases.workOrderCloseDate") %>"
};
window.exports = window.exports || {};
exports.aliases = {
map: "<%= configFunctions.getProperty("aliases.map") %>",
maps: "<%= configFunctions.getProperty("aliases.maps") %>",
lot: "<%= configFunctions.getProperty("aliases.lot") %>",
lots: "<%= configFunctions.getProperty("aliases.lots") %>",
occupancy: "<%= configFunctions.getProperty("aliases.occupancy") %>",
occupancies: "<%= configFunctions.getProperty("aliases.occupancies") %>",
occupancyStartDate: "<%= configFunctions.getProperty("aliases.occupancyStartDate") %>",
occupant: "<%= configFunctions.getProperty("aliases.occupant") %>",
occupants: "<%= configFunctions.getProperty("aliases.occupants") %>",
externalReceiptNumber: "<%= configFunctions.getProperty("aliases.externalReceiptNumber") %>",
workOrderOpenDate: "<%= configFunctions.getProperty("aliases.workOrderOpenDate") %>",
workOrderCloseDate: "<%= configFunctions.getProperty("aliases.workOrderCloseDate") %>"
};
</script>
<script src="<%= urlPrefix %>/lib/cityssm-bulma-js/bulma-js.js"></script>
<script src="<%= urlPrefix %>/lib/cityssm-bulma-webapp-js/dist/cityssm.min.js"></script>
@ -34,8 +34,8 @@
<script src="<%= urlPrefix %>/lib/leaflet/leaflet.js"></script>
<script src="<%= urlPrefix %>/lib/randomcolor/randomcolor.js"></script>
<script>
cityssm.htmlModalFolder ="<%= urlPrefix %>/html/";
bulmaJS.init();
cityssm.htmlModalFolder ="<%= urlPrefix %>/html/";
bulmaJS.init();
</script>
<script src="<%= urlPrefix %>/lib/cityssm-bulma-webapp-js/dist/cityssm-theme.min.js" defer></script>
<script src="<%= urlPrefix %>/lib/fa/js/all.min.js" defer></script>

View File

@ -1,3 +1,2 @@
</body>
</html>

View File

@ -2,114 +2,115 @@
<html class="has-navbar-fixed-top is-fullwidth" lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="csrf-token" content="<%= csrfToken %>">
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="csrf-token" content="<%= csrfToken %>">
<title>
<%= headTitle %>: <%= configFunctions.getProperty("application.applicationName") %>
</title>
<title>
<%= headTitle %>:
<%= configFunctions.getProperty("application.applicationName") %>
</title>
<link rel="icon" href="<%= urlPrefix + configFunctions.getProperty("application.logoURL") %>" />
<link rel="icon" href="<%= urlPrefix + configFunctions.getProperty("application.logoURL") %>" />
<link rel="stylesheet" href="<%= urlPrefix %>/stylesheets/style.css" />
<link rel="stylesheet" href="<%= urlPrefix %>/lib/leaflet/leaflet.css" />
<link rel="stylesheet" href="<%= urlPrefix %>/stylesheets/style.css" />
<link rel="stylesheet" href="<%= urlPrefix %>/lib/leaflet/leaflet.css" />
</head>
<body>
<nav class="navbar is-light is-fixed-top is-static-print" id="cityssm-theme--navbar" role="navigation"
aria-label="main navigation">
<div class="container">
<div class="navbar-brand">
<a class="navbar-item" href="<%= urlPrefix %>/dashboard">
<img class="mr-3" src="<%= urlPrefix + configFunctions.getProperty("application.logoURL") %>" alt=""
height="28" />
<strong><%= configFunctions.getProperty("application.applicationName") %></strong>
<nav class="navbar is-light is-fixed-top is-static-print" id="cityssm-theme--navbar" role="navigation"
aria-label="main navigation">
<div class="container">
<div class="navbar-brand">
<a class="navbar-item" href="<%= urlPrefix %>/dashboard">
<img class="mr-3"
src="<%= urlPrefix + configFunctions.getProperty("application.logoURL") %>"
alt=""
height="28" />
<strong><%= configFunctions.getProperty("application.applicationName") %></strong>
</a>
<a class="navbar-burger burger is-hidden-print" 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">
<div class="navbar-start">
<a class="navbar-item" href="<%= urlPrefix %>/workOrders" accesskey="1">
<span class="icon mr-1">
<i class="fas fa-hard-hat" aria-hidden="true"></i>
</span>
<span>Work Orders</span>
</a>
<a class="navbar-item" href="<%= urlPrefix %>/lotOccupancies" accesskey="2">
<span class="icon mr-1">
<span class="fa-layers fa-fw" aria-hidden="true">
<i class="fas fa-vector-square"></i>
<i class="fas fa-user" data-fa-transform="shrink-10"></i>
</span>
</span>
<span><%= configFunctions.getProperty("aliases.occupancies") %></span>
</a>
<div class="navbar-item has-dropdown">
<a class="navbar-link is-arrowless" href="#">
<span>More</span>
<span class="icon ml-1">
<i class="fas fa-angle-down" aria-hidden="true"></i>
</span>
</a>
<div class="navbar-dropdown">
<a class="navbar-item" href="<%= urlPrefix %>/lots" accesskey="3">
<span class="icon mr-1">
<i class="fas fa-fw fa-vector-square" aria-hidden="true"></i>
</span>
<span><%= configFunctions.getProperty("aliases.lots") %></span>
</a>
<a class="navbar-burger burger is-hidden-print" role="button" aria-label="menu" aria-expanded="false">
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
<a class="navbar-item" href="<%= urlPrefix %>/maps" accesskey="4">
<span class="icon mr-1">
<i class="far fa-fw fa-map" aria-hidden="true"></i>
</span>
<span><%= configFunctions.getProperty("aliases.maps") %></span>
</a>
<hr class="navbar-divider" />
<a class="navbar-item" href="<%= urlPrefix %>/reports">
<span class="icon mr-1">
<i class="fas fa-fw fa-file" aria-hidden="true"></i>
</span>
<span>Reports</span>
</a>
<hr class="navbar-divider" />
<a class="navbar-item" href="https://cityssm.github.io/lot-occupancy-system/docs"
target="_blank"
accesskey="h"
rel="noopener noreferrer">
<span class="icon mr-1">
<i class="fas fa-fw fa-question-circle" aria-hidden="true"></i>
</span>
<span>Help</span>
</a>
</div>
</div>
</div>
<div class="navbar-menu">
<div class="navbar-start">
<a class="navbar-item" href="<%= urlPrefix %>/workOrders" accesskey="1">
<span class="icon mr-1">
<i class="fas fa-hard-hat" aria-hidden="true"></i>
</span>
<span>Work Orders</span>
</a>
<a class="navbar-item" href="<%= urlPrefix %>/lotOccupancies" accesskey="2">
<span class="icon mr-1">
<span class="fa-layers fa-fw" aria-hidden="true">
<i class="fas fa-vector-square"></i>
<i class="fas fa-user" data-fa-transform="shrink-10"></i>
</span>
</span>
<span><%= configFunctions.getProperty("aliases.occupancies") %></span>
</a>
<div class="navbar-item has-dropdown">
<a class="navbar-link is-arrowless" href="#">
<span>More</span>
<span class="icon ml-1">
<i class="fas fa-angle-down" aria-hidden="true"></i>
</span>
</a>
<div class="navbar-dropdown">
<a class="navbar-item" href="<%= urlPrefix %>/lots" accesskey="3">
<span class="icon mr-1">
<i class="fas fa-fw fa-vector-square" aria-hidden="true"></i>
</span>
<span><%= configFunctions.getProperty("aliases.lots") %></span>
</a>
<a class="navbar-item" href="<%= urlPrefix %>/maps" accesskey="4">
<span class="icon mr-1">
<i class="far fa-fw fa-map" aria-hidden="true"></i>
</span>
<span><%= configFunctions.getProperty("aliases.maps") %></span>
</a>
<hr class="navbar-divider" />
<a class="navbar-item" href="<%= urlPrefix %>/reports">
<span class="icon mr-1">
<i class="fas fa-fw fa-file" aria-hidden="true"></i>
</span>
<span>Reports</span>
</a>
<hr class="navbar-divider" />
<a class="navbar-item" href="https://cityssm.github.io/lot-occupancy-system/docs"
target="_blank"
accesskey="h"
rel="noopener noreferrer">
<span class="icon mr-1">
<i class="fas fa-fw fa-question-circle" aria-hidden="true"></i>
</span>
<span>Help</span>
</a>
</div>
</div>
</div>
<div class="navbar-end">
<a class="navbar-item" id="cityssm-theme--logout-button" role="button" href="#" accesskey="x">
<span class="icon mr-1">
<i class="fas fa-fw fa-sign-out-alt" aria-hidden="true"></i>
</span>
<span>Log Out <%=user.userName %></span>
</a>
</div>
</div>
<div class="navbar-end">
<a class="navbar-item" id="cityssm-theme--logout-button" role="button" href="#" accesskey="x">
<span class="icon mr-1">
<i class="fas fa-fw fa-sign-out-alt" aria-hidden="true"></i>
</span>
<span>Log Out <%=user.userName %></span>
</a>
</div>
</div>
</nav>
</div>
</nav>
<main class="container pt-2 px-3 mr-auto has-min-page-height"
data-session-keep-alive-millis="<%= configFunctions.keepAliveMillis %>"
data-url-prefix="<%= urlPrefix %>"
data-can-update="<%= user.userProperties.canUpdate ? "true" : "false" %>"
data-is-admin="<%= user.userProperties.isAdmin ? "true" : "false" %>"
data-api-key="<%= user.userProperties.apiKey %>">
<main class="container pt-2 px-3 mr-auto has-min-page-height"
data-session-keep-alive-millis="<%= configFunctions.keepAliveMillis %>"
data-url-prefix="<%= urlPrefix %>"
data-can-update="<%= user.userProperties.canUpdate ? "true" : "false" %>"
data-is-admin="<%= user.userProperties.isAdmin ? "true" : "false" %>"
data-api-key="<%= user.userProperties.apiKey %>">

View File

@ -1,45 +1,45 @@
<aside class="menu">
<h2 class="menu-label">
Administrator Tools
</h2>
<ul class="menu-list">
<li>
<a class="<%= (headTitle === "Fee Management" ? "is-active" : "") %>" href="<%= urlPrefix %>/admin/fees">
<span class="icon"><i class="fas fa-fw fa-dollar-sign" aria-hidden="true"></i></span>
<span>Fee Management</span>
</a>
</li>
<li>
<a class="<%= (headTitle === configFunctions.getProperty("aliases.occupancy") + " Type Management" ? "is-active" : "") %>" href="<%= urlPrefix %>/admin/occupancyTypes">
<span class="icon"><i class="fas fa-fw fa-user-friends" aria-hidden="true"></i></span>
<span><%= configFunctions.getProperty("aliases.occupancy") %> Type Management</span>
</a>
</li>
<li>
<a class="<%= (headTitle === configFunctions.getProperty("aliases.lot") + " Type Management" ? "is-active" : "") %>" href="<%= urlPrefix %>/admin/lotTypes">
<span class="icon"><i class="fas fa-fw fa-vector-square" aria-hidden="true"></i></span>
<span><%= configFunctions.getProperty("aliases.lot") %> Type Management</span>
</a>
</li>
<li>
<a class="<%= (headTitle === "Config Table Management" ? "is-active" : "") %>" href="<%= urlPrefix %>/admin/tables">
<span class="icon"><i class="fas fa-fw fa-table" aria-hidden="true"></i></span>
<span>Config Table Management</span>
</a>
</li>
<li>
<a class="<%= (headTitle === "Database Maintenance" ? "is-active" : "") %>" href="<%= urlPrefix %>/admin/database">
<span class="icon"><i class="fas fa-fw fa-database" aria-hidden="true"></i></span>
<span>Database Maintenance</span>
</a>
</li>
<% if (configFunctions.getProperty("application.ntfyStartup")) { %>
<li>
<a class="<%= (headTitle === "Ntfy Startup Notification" ? "is-active" : "") %>" href="<%= urlPrefix %>/admin/ntfyStartup">
<span class="icon"><i class="fas fa-fw fa-comment-alt" aria-hidden="true"></i></span>
<span>Ntfy Startup Notification</span>
</a>
</li>
<% } %>
</ul>
<h2 class="menu-label">
Administrator Tools
</h2>
<ul class="menu-list">
<li>
<a class="<%= (headTitle === "Fee Management" ? "is-active" : "") %>" href="<%= urlPrefix %>/admin/fees">
<span class="icon"><i class="fas fa-fw fa-dollar-sign" aria-hidden="true"></i></span>
<span>Fee Management</span>
</a>
</li>
<li>
<a class="<%= (headTitle === configFunctions.getProperty("aliases.occupancy") + " Type Management" ? "is-active" : "") %>" href="<%= urlPrefix %>/admin/occupancyTypes">
<span class="icon"><i class="fas fa-fw fa-user-friends" aria-hidden="true"></i></span>
<span><%= configFunctions.getProperty("aliases.occupancy") %> Type Management</span>
</a>
</li>
<li>
<a class="<%= (headTitle === configFunctions.getProperty("aliases.lot") + " Type Management" ? "is-active" : "") %>" href="<%= urlPrefix %>/admin/lotTypes">
<span class="icon"><i class="fas fa-fw fa-vector-square" aria-hidden="true"></i></span>
<span><%= configFunctions.getProperty("aliases.lot") %> Type Management</span>
</a>
</li>
<li>
<a class="<%= (headTitle === "Config Table Management" ? "is-active" : "") %>" href="<%= urlPrefix %>/admin/tables">
<span class="icon"><i class="fas fa-fw fa-table" aria-hidden="true"></i></span>
<span>Config Table Management</span>
</a>
</li>
<li>
<a class="<%= (headTitle === "Database Maintenance" ? "is-active" : "") %>" href="<%= urlPrefix %>/admin/database">
<span class="icon"><i class="fas fa-fw fa-database" aria-hidden="true"></i></span>
<span>Database Maintenance</span>
</a>
</li>
<% if (configFunctions.getProperty("application.ntfyStartup")) { %>
<li>
<a class="<%= (headTitle === "Ntfy Startup Notification" ? "is-active" : "") %>" href="<%= urlPrefix %>/admin/ntfyStartup">
<span class="icon"><i class="fas fa-fw fa-comment-alt" aria-hidden="true"></i></span>
<span>Ntfy Startup Notification</span>
</a>
</li>
<% } %>
</ul>
</aside>

View File

@ -1,41 +1,41 @@
<aside class="menu">
<h2 class="menu-label">
Work Orders
</h2>
<ul class="menu-list">
<li>
<a class="<%= (headTitle === "Work Order Search" ? "is-active" : "") %>" href="<%= urlPrefix %>/workOrders">
<span class="icon"><i class="fas fa-fw fa-hard-hat" aria-hidden="true"></i></span>
<span>Work Order Search</span>
</a>
</li>
</ul>
<h2 class="menu-label">
Milestones
</h2>
<ul class="menu-list">
<li>
<a class="<%= (headTitle.endsWith("Milestone Calendar") ? "is-active" : "") %>" href="<%= urlPrefix %>/workOrders/milestoneCalendar">
<span class="icon"><i class="fas fa-fw fa-calendar" aria-hidden="true"></i></span>
<span>Milestone Calendar</span>
</a>
</li>
<li>
<a class="<%= (headTitle.endsWith("Outlook Integration") ? "is-active" : "") %>" href="<%= urlPrefix %>/workOrders/outlook">
<span class="icon"><i class="fas fa-fw fa-envelope-open-text" aria-hidden="true"></i></span>
<span>Outlook Integration</span>
</a>
</li>
</ul>
<h2 class="menu-label">
Help
</h2>
<ul class="menu-list">
<li>
<a href="https://cityssm.github.io/lot-occupancy-system/docs/workOrders.html" target="_blank" rel="noopener noreferrer">
<span class="icon"><i class="fas fa-fw fa-question-circle" aria-hidden="true"></i></span>
<span>Work Order Documentation</span>
</a>
</li>
</ul>
<h2 class="menu-label">
Work Orders
</h2>
<ul class="menu-list">
<li>
<a class="<%= (headTitle === "Work Order Search" ? "is-active" : "") %>" href="<%= urlPrefix %>/workOrders">
<span class="icon"><i class="fas fa-fw fa-hard-hat" aria-hidden="true"></i></span>
<span>Work Order Search</span>
</a>
</li>
</ul>
<h2 class="menu-label">
Milestones
</h2>
<ul class="menu-list">
<li>
<a class="<%= (headTitle.endsWith("Milestone Calendar") ? "is-active" : "") %>" href="<%= urlPrefix %>/workOrders/milestoneCalendar">
<span class="icon"><i class="fas fa-fw fa-calendar" aria-hidden="true"></i></span>
<span>Milestone Calendar</span>
</a>
</li>
<li>
<a class="<%= (headTitle.endsWith("Outlook Integration") ? "is-active" : "") %>" href="<%= urlPrefix %>/workOrders/outlook">
<span class="icon"><i class="fas fa-fw fa-envelope-open-text" aria-hidden="true"></i></span>
<span>Outlook Integration</span>
</a>
</li>
</ul>
<h2 class="menu-label">
Help
</h2>
<ul class="menu-list">
<li>
<a href="https://cityssm.github.io/lot-occupancy-system/docs/workOrders.html" target="_blank" rel="noopener noreferrer">
<span class="icon"><i class="fas fa-fw fa-question-circle" aria-hidden="true"></i></span>
<span>Work Order Documentation</span>
</a>
</li>
</ul>
</aside>

View File

@ -1,403 +1,404 @@
<%- include('_header'); -%>
<h1 class="title is-1">
<%= configFunctions.getProperty("application.applicationName") %>
<%= configFunctions.getProperty("application.applicationName") %>
</h1>
<div class="columns">
<% if (workOrderMilestones.length > 0) { %>
<% const workOrderPrints = configFunctions.getProperty("settings.workOrders.prints"); %>
<div class="column is-4">
<div class="panel is-info">
<div class="panel-heading">
<div class="level is-mobile">
<div class="level-left">
<div class="level-item">
<h2 class="title is-5 has-text-weight-bold has-text-white">
Today's Milestones
</h2>
</div>
</div>
<div class="level-right">
<div class="level-item">
<span class="tag"><%= workOrderMilestones.length %></span>
</div>
</div>
</div>
</div>
<% for (const milestone of workOrderMilestones) { %>
<div class="panel-block is-block">
<div class="columns is-mobile">
<div class="column is-narrow">
<% if (milestone.workOrderMilestoneCompletionDate) { %>
<span class="icon is-small has-tooltip-right" data-tooltip="Completed">
<i class="fas fa-check" aria-label="Completed"></i>
</span>
<% } else { %>
<span class="icon is-small has-tooltip-right" data-tooltip="Incomplete">
<i class="far fa-square" aria-label="Incomplete"></i>
</span>
<% } %>
</div>
<div class="column">
<% if (workOrderPrints.length > 0) { %>
<span class="is-pulled-right">
<a class="button is-small" data-tooltip="Print Work Order" href="<%=urlPrefix %>/print/<%= workOrderPrints[0] %>/?workOrderId=<%= milestone.workOrderId %>" target="_blank" aria-label="Print">
<i class="fas fa-print" aria-hidden="true"></i>
</a>
</span>
<% } %>
<% if (milestone.workOrderMilestoneTime) { %>
<%= milestone.workOrderMilestoneTimeString %><br />
<% } %>
<% if (milestone.workOrderMilestoneTypeId) { %>
<strong><%= milestone.workOrderMilestoneType %></strong><br />
<% } %>
<span class="is-size-7">
<a href="<%= urlPrefix %>/workOrders/<%= milestone.workOrderId %>">
<i class="fas fa-circle" data-work-order-number="<%= milestone.workOrderNumber %>" aria-label="Work Order"></i> <%= milestone.workOrderNumber %>
</a><br />
<%
if (milestone.workOrderLots.length > 0) {
for (const lot of milestone.workOrderLots) {
%>
<span class="has-tooltip-right" data-tooltip="<%= lot.mapName %>">
<i class="fas fa-fw fa-vector-square" aria-label="<%= configFunctions.getProperty("aliases.lot") %>"></i>
<%= lot.lotName %>
</span><br />
<%
}
}
if (milestone.workOrderLotOccupancies.length > 0) {
for (const occupancy of milestone.workOrderLotOccupancies) {
for (const occupant of occupancy.lotOccupancyOccupants) {
%>
<span class="has-tooltip-right" data-tooltip="<%= occupant.lotOccupantType %>">
<i class="fas fa-fw fa-<%= occupant.fontAwesomeIconClass || 'user' %>" aria-label="<%= configFunctions.getProperty("aliases.occupancy") %>"></i>
<%= occupant.occupantName %>
</span><br />
<%
}
}
}
%>
</span>
</div>
</div>
</div>
<% if (workOrderMilestones.length > 0) { %>
<% const workOrderPrints = configFunctions.getProperty("settings.workOrders.prints"); %>
<div class="column is-4">
<div class="panel is-info">
<div class="panel-heading">
<div class="level is-mobile">
<div class="level-left">
<div class="level-item">
<h2 class="title is-5 has-text-weight-bold has-text-white">
Today's Milestones
</h2>
</div>
</div>
<div class="level-right">
<div class="level-item">
<span class="tag"><%= workOrderMilestones.length %></span>
</div>
</div>
</div>
</div>
<% for (const milestone of workOrderMilestones) { %>
<div class="panel-block is-block">
<div class="columns is-mobile">
<div class="column is-narrow">
<% if (milestone.workOrderMilestoneCompletionDate) { %>
<span class="icon is-small has-tooltip-right" data-tooltip="Completed">
<i class="fas fa-check" aria-label="Completed"></i>
</span>
<% } else { %>
<span class="icon is-small has-tooltip-right" data-tooltip="Incomplete">
<i class="far fa-square" aria-label="Incomplete"></i>
</span>
<% } %>
</div>
<div class="column">
<% if (workOrderPrints.length > 0) { %>
<span class="is-pulled-right">
<a class="button is-small" data-tooltip="Print Work Order" href="<%=urlPrefix %>/print/<%= workOrderPrints[0] %>/?workOrderId=<%= milestone.workOrderId %>" target="_blank" aria-label="Print">
<i class="fas fa-print" aria-hidden="true"></i>
</a>
</span>
<% } %>
<% if (milestone.workOrderMilestoneTime) { %>
<%= milestone.workOrderMilestoneTimeString %><br />
<% } %>
<% if (milestone.workOrderMilestoneTypeId) { %>
<strong><%= milestone.workOrderMilestoneType %></strong><br />
<% } %>
<span class="is-size-7">
<a href="<%= urlPrefix %>/workOrders/<%= milestone.workOrderId %>">
<i class="fas fa-circle" data-work-order-number="<%= milestone.workOrderNumber %>" aria-label="Work Order"></i>
<%= milestone.workOrderNumber %>
</a><br />
<%
if (milestone.workOrderLots.length > 0) {
for (const lot of milestone.workOrderLots) {
%>
<span class="has-tooltip-right" data-tooltip="<%= lot.mapName %>">
<i class="fas fa-fw fa-vector-square" aria-label="<%= configFunctions.getProperty("aliases.lot") %>"></i>
<%= lot.lotName %>
</span><br />
<%
}
}
if (milestone.workOrderLotOccupancies.length > 0) {
for (const occupancy of milestone.workOrderLotOccupancies) {
for (const occupant of occupancy.lotOccupancyOccupants) {
%>
<span class="has-tooltip-right" data-tooltip="<%= occupant.lotOccupantType %>">
<i class="fas fa-fw fa-<%= occupant.fontAwesomeIconClass || 'user' %>" aria-label="<%= configFunctions.getProperty("aliases.occupancy") %>"></i>
<%= occupant.occupantName %>
</span><br />
<%
}
}
}
%>
</span>
</div>
</div>
</div>
<% } %>
<div class="column">
<div class="columns is-desktop">
<div class="column">
<div class="card">
<div class="card-content">
<div class="media">
<div class="media-left">
<i class="fas fa-3x fa-fw fa-hard-hat" aria-hidden="true"></i>
</div>
<div class="media-content has-text-black">
<div class="level is-marginless is-mobile">
<div class="level-left">
<div class="level-item">
<h2 class="title is-4 is-marginless">
<a href="<%= urlPrefix %>/workOrders">Work Orders</a>
</h2>
</div>
</div>
<% if (workOrderCount > 0) { %>
<div class="level-right">
<div class="level-item">
<a class="tag is-info" href="<%= urlPrefix %>/workOrders/?workOrderOpenDateString=<%= dateTimeFunctions.dateToString(new Date()) %>"><%= workOrderCount %> Open Today</a>
</div>
</div>
<% } %>
</div>
<p>View and maintain work orders.</p>
</div>
</div>
</div>
<div class="card-footer">
<% if (user.userProperties.canUpdate) { %>
<a class="card-footer-item" href="<%= urlPrefix %>/workOrders/new">
<span class="icon">
<i class="fas fa-plus" aria-hidden="true"></i>
</span>
<span>New Work Order</span>
</a>
<% } %>
<a class="card-footer-item" href="<%= urlPrefix %>/workOrders/milestoneCalendar">
<span class="icon">
<i class="fas fa-calendar" aria-hidden="true"></i>
</span>
<span>Milestone Calendar</span>
</a>
</div>
</div>
</div>
<div class="column">
<div class="card">
<div class="card-content">
<div class="media">
<div class="media-left">
<span class="fa-layers fa-3x fa-fw" aria-hidden="true">
<i class="fas fa-vector-square"></i>
<i class="fas fa-user" data-fa-transform="shrink-10"></i>
</span>
</div>
<div class="media-content has-text-black">
<h2 class="title is-4 is-marginless">
<a href="<%= urlPrefix %>/lotOccupancies"><%= configFunctions.getProperty("aliases.occupancies") %></a>
</h2>
<p>View and maintain current and past
<%= configFunctions.getProperty("aliases.occupancies").toLowerCase() %>.</p>
</div>
</div>
</div>
<% if (user.userProperties.canUpdate) { %>
<div class="card-footer">
<a class="card-footer-item" href="<%= urlPrefix %>/lotOccupancies/new">
<span class="icon">
<i class="fas fa-plus" aria-hidden="true"></i>
</span>
<span>New <%= configFunctions.getProperty("aliases.occupancy") %></span>
</a>
</div>
<% } %>
</div>
</div>
</div>
<div class="columns">
<div class="column">
<div class="card">
<div class="card-content">
<div class="media">
<div class="media-left">
<i class="fas fa-3x fa-fw fa-vector-square" aria-hidden="true"></i>
</div>
<div class="media-content has-text-black">
<h2 class="title is-4 is-marginless">
<a href="<%= urlPrefix %>/lots"><%= configFunctions.getProperty("aliases.lots") %></a>
</h2>
<p>View and maintain <%= configFunctions.getProperty("aliases.lots").toLowerCase() %> within a
<%= configFunctions.getProperty("aliases.map").toLowerCase() %>.</p>
</div>
</div>
</div>
<% if (user.userProperties.canUpdate) { %>
<div class="card-footer">
<a class="card-footer-item" href="<%= urlPrefix %>/lots/new">
<span class="icon">
<i class="fas fa-plus" aria-hidden="true"></i>
</span>
<span>New <%= configFunctions.getProperty("aliases.lot") %></span>
</a>
</div>
<% } %>
</div>
</div>
<div class="column">
<div class="card">
<div class="card-content">
<div class="media">
<div class="media-left">
<i class="far fa-3x fa-fw fa-map" aria-hidden="true"></i>
</div>
<div class="media-content has-text-black">
<h2 class="title is-4 is-marginless">
<a href="<%= urlPrefix %>/maps"><%= configFunctions.getProperty("aliases.maps") %></a>
</h2>
<p>View and maintain <%= configFunctions.getProperty("aliases.maps").toLowerCase() %>.</p>
</div>
</div>
</div>
<% if (user.userProperties.canUpdate) { %>
<div class="card-footer">
<a class="card-footer-item" href="<%= urlPrefix %>/maps/new">
<span class="icon">
<i class="fas fa-plus" aria-hidden="true"></i>
</span>
<span>New <%= configFunctions.getProperty("aliases.map") %></span>
</a>
</div>
<% } %>
</div>
</div>
</div>
<div class="columns">
<div class="column">
<div class="card">
<div class="card-content">
<div class="media">
<div class="media-left">
<i class="fas fa-3x fa-fw fa-file" aria-hidden="true"></i>
</div>
<div class="media-content has-text-black">
<h2 class="title is-4 is-marginless">
<a href="<%= urlPrefix %>/reports">Report Library</a>
</h2>
<p>Produce reports and export data.</p>
</div>
</div>
</div>
</div>
</div>
<div class="column">
<div class="card">
<div class="card-content">
<div class="media">
<div class="media-left">
<i class="fas fa-3x fa-fw fa-question-circle" aria-hidden="true"></i>
</div>
<div class="media-content has-text-black">
<h2 class="title is-4 is-marginless">
<a href="https://cityssm.github.io/lot-occupancy-system/docs" target="_blank"
rel="noopener noreferrer">Help Documentation</a>
</h2>
<p>Instructions on how to use this application.</p>
</div>
</div>
</div>
<div class="card-footer">
<a class="card-footer-item has-tooltip-bottom" data-tooltip="Latest Updates, Issue Tracker, Say Hello"
href="https://github.com/cityssm/lot-occupancy-system" target="_blank" rel="noreferrer">
<span class="icon">
<i class="fab fa-github" aria-hidden="true"></i>
</span>
GitHub
</a>
</div>
</div>
</div>
</div>
<% if (user.userProperties.isAdmin) { %>
<h2 class="title is-3">Administrator Tools</h2>
<div class="card">
<div class="card-content">
<div class="media">
<div class="media-left">
<span class="fa-layers fa-3x fa-fw" aria-hidden="true">
<i class="fas fa-dollar-sign"></i>
<i class="fas fa-cog" data-fa-transform="shrink-8 right-8 down-5" data-fa-glow="10"></i>
</span>
</div>
<div class="media-content has-text-black">
<h2 class="title is-4 is-marginless">
<a href="<%= urlPrefix %>/admin/fees">Fee Management</a>
</h2>
<p>
Manage fees for
<%= configFunctions.getProperty("aliases.lot").toLowerCase() %>
<%= configFunctions.getProperty("aliases.occupancy").toLowerCase() %>
and specific
<%= configFunctions.getProperty("aliases.lot").toLowerCase() %> types.
</p>
</div>
</div>
</div>
<div class="card-content">
<div class="media">
<div class="media-left">
<span class="fa-layers fa-3x fa-fw" aria-hidden="true">
<i class="fas fa-user-friends"></i>
<i class="fas fa-cog" data-fa-transform="shrink-8 right-8 down-5" data-fa-glow="10"></i>
</span>
</div>
<div class="media-content has-text-black">
<h2 class="title is-4 is-marginless">
<a href="<%= urlPrefix %>/admin/occupancyTypes"><%= configFunctions.getProperty("aliases.occupancy") %> Type Management</a>
</h2>
<p>
Manage
<%= configFunctions.getProperty("aliases.occupancy").toLowerCase() %> types,
the fields associated with them,
and their available print options.
</p>
</div>
</div>
</div>
<div class="card-content">
<div class="media">
<div class="media-left">
<span class="fa-layers fa-3x fa-fw" aria-hidden="true">
<i class="fas fa-vector-square"></i>
<i class="fas fa-cog" data-fa-transform="shrink-8 right-8 down-5" data-fa-glow="10"></i>
</span>
</div>
<div class="media-content has-text-black">
<h2 class="title is-4 is-marginless">
<a href="<%= urlPrefix %>/admin/lotTypes"><%= configFunctions.getProperty("aliases.lot") %> Type Management</a>
</h2>
<p>
Manage
<%= configFunctions.getProperty("aliases.lot").toLowerCase() %> types
and fields associated with them.
</p>
</div>
</div>
</div>
<div class="card-content">
<div class="media">
<div class="media-left">
<span class="fa-layers fa-3x fa-fw" aria-hidden="true">
<i class="fas fa-table"></i>
<i class="fas fa-cog" data-fa-transform="shrink-8 right-8 down-5" data-fa-glow="10"></i>
</span>
</div>
<div class="media-content has-text-black">
<h2 class="title is-4 is-marginless">
<a href="<%= urlPrefix %>/admin/tables">Config Table Management</a>
</h2>
<p>
Manage simple configuration tables fees for
work order types,
<%= configFunctions.getProperty("aliases.lot").toLowerCase() %> statuses,
and <%= configFunctions.getProperty("aliases.lot").toLowerCase() %> <%= configFunctions.getProperty("aliases.occupant").toLowerCase() %> types.
</p>
</div>
</div>
</div>
<div class="card-content">
<div class="media">
<div class="media-left">
<i class="fas fa-3x fa-fw fa-database" aria-hidden="true"></i>
</div>
<div class="media-content has-text-black">
<h2 class="title is-4 is-marginless">
<a href="<%= urlPrefix %>/admin/database">Database Maintenance</a>
</h2>
<p>
Backup the database before making significant updates.
Permanently delete records that have been previously deleted from the database.
</p>
</div>
</div>
</div>
<% if (configFunctions.getProperty("application.ntfyStartup")) { %>
<div class="card-content">
<div class="media">
<div class="media-left">
<i class="fas fa-3x fa-fw fa-comment-alt" aria-hidden="true"></i>
</div>
<div class="media-content has-text-black">
<h2 class="title is-4 is-marginless">
<a href="<%= urlPrefix %>/admin/ntfyStartup">Ntfy Startup Notification</a>
</h2>
<p>
Subscribe to application startup notifications on a phone or a desktop computer.
</p>
</div>
</div>
</div>
<% } %>
</div>
</div>
<% } %>
</div>
</div>
<% } %>
<div class="column">
<div class="columns is-desktop">
<div class="column">
<div class="card">
<div class="card-content">
<div class="media">
<div class="media-left">
<i class="fas fa-3x fa-fw fa-hard-hat" aria-hidden="true"></i>
</div>
<div class="media-content has-text-black">
<div class="level is-marginless is-mobile">
<div class="level-left">
<div class="level-item">
<h2 class="title is-4 is-marginless">
<a href="<%= urlPrefix %>/workOrders">Work Orders</a>
</h2>
</div>
</div>
<% if (workOrderCount > 0) { %>
<div class="level-right">
<div class="level-item">
<a class="tag is-info" href="<%= urlPrefix %>/workOrders/?workOrderOpenDateString=<%= dateTimeFunctions.dateToString(new Date()) %>"><%= workOrderCount %> Open Today</a>
</div>
</div>
<% } %>
</div>
<p>View and maintain work orders.</p>
</div>
</div>
</div>
<div class="card-footer">
<% if (user.userProperties.canUpdate) { %>
<a class="card-footer-item" href="<%= urlPrefix %>/workOrders/new">
<span class="icon">
<i class="fas fa-plus" aria-hidden="true"></i>
</span>
<span>New Work Order</span>
</a>
<% } %>
<a class="card-footer-item" href="<%= urlPrefix %>/workOrders/milestoneCalendar">
<span class="icon">
<i class="fas fa-calendar" aria-hidden="true"></i>
</span>
<span>Milestone Calendar</span>
</a>
</div>
</div>
</div>
<div class="column">
<div class="card">
<div class="card-content">
<div class="media">
<div class="media-left">
<span class="fa-layers fa-3x fa-fw" aria-hidden="true">
<i class="fas fa-vector-square"></i>
<i class="fas fa-user" data-fa-transform="shrink-10"></i>
</span>
</div>
<div class="media-content has-text-black">
<h2 class="title is-4 is-marginless">
<a href="<%= urlPrefix %>/lotOccupancies"><%= configFunctions.getProperty("aliases.occupancies") %></a>
</h2>
<p>View and maintain current and past
<%= configFunctions.getProperty("aliases.occupancies").toLowerCase() %>.</p>
</div>
</div>
</div>
<% if (user.userProperties.canUpdate) { %>
<div class="card-footer">
<a class="card-footer-item" href="<%= urlPrefix %>/lotOccupancies/new">
<span class="icon">
<i class="fas fa-plus" aria-hidden="true"></i>
</span>
<span>New <%= configFunctions.getProperty("aliases.occupancy") %></span>
</a>
</div>
<% } %>
</div>
</div>
</div>
<div class="columns">
<div class="column">
<div class="card">
<div class="card-content">
<div class="media">
<div class="media-left">
<i class="fas fa-3x fa-fw fa-vector-square" aria-hidden="true"></i>
</div>
<div class="media-content has-text-black">
<h2 class="title is-4 is-marginless">
<a href="<%= urlPrefix %>/lots"><%= configFunctions.getProperty("aliases.lots") %></a>
</h2>
<p>View and maintain <%= configFunctions.getProperty("aliases.lots").toLowerCase() %> within a
<%= configFunctions.getProperty("aliases.map").toLowerCase() %>.</p>
</div>
</div>
</div>
<% if (user.userProperties.canUpdate) { %>
<div class="card-footer">
<a class="card-footer-item" href="<%= urlPrefix %>/lots/new">
<span class="icon">
<i class="fas fa-plus" aria-hidden="true"></i>
</span>
<span>New <%= configFunctions.getProperty("aliases.lot") %></span>
</a>
</div>
<% } %>
</div>
</div>
<div class="column">
<div class="card">
<div class="card-content">
<div class="media">
<div class="media-left">
<i class="far fa-3x fa-fw fa-map" aria-hidden="true"></i>
</div>
<div class="media-content has-text-black">
<h2 class="title is-4 is-marginless">
<a href="<%= urlPrefix %>/maps"><%= configFunctions.getProperty("aliases.maps") %></a>
</h2>
<p>View and maintain <%= configFunctions.getProperty("aliases.maps").toLowerCase() %>.</p>
</div>
</div>
</div>
<% if (user.userProperties.canUpdate) { %>
<div class="card-footer">
<a class="card-footer-item" href="<%= urlPrefix %>/maps/new">
<span class="icon">
<i class="fas fa-plus" aria-hidden="true"></i>
</span>
<span>New <%= configFunctions.getProperty("aliases.map") %></span>
</a>
</div>
<% } %>
</div>
</div>
</div>
<div class="columns">
<div class="column">
<div class="card">
<div class="card-content">
<div class="media">
<div class="media-left">
<i class="fas fa-3x fa-fw fa-file" aria-hidden="true"></i>
</div>
<div class="media-content has-text-black">
<h2 class="title is-4 is-marginless">
<a href="<%= urlPrefix %>/reports">Report Library</a>
</h2>
<p>Produce reports and export data.</p>
</div>
</div>
</div>
</div>
</div>
<div class="column">
<div class="card">
<div class="card-content">
<div class="media">
<div class="media-left">
<i class="fas fa-3x fa-fw fa-question-circle" aria-hidden="true"></i>
</div>
<div class="media-content has-text-black">
<h2 class="title is-4 is-marginless">
<a href="https://cityssm.github.io/lot-occupancy-system/docs" target="_blank"
rel="noopener noreferrer">Help Documentation</a>
</h2>
<p>Instructions on how to use this application.</p>
</div>
</div>
</div>
<div class="card-footer">
<a class="card-footer-item has-tooltip-bottom" data-tooltip="Latest Updates, Issue Tracker, Say Hello"
href="https://github.com/cityssm/lot-occupancy-system" target="_blank" rel="noreferrer">
<span class="icon">
<i class="fab fa-github" aria-hidden="true"></i>
</span>
GitHub
</a>
</div>
</div>
</div>
</div>
<% if (user.userProperties.isAdmin) { %>
<h2 class="title is-3">Administrator Tools</h2>
<div class="card">
<div class="card-content">
<div class="media">
<div class="media-left">
<span class="fa-layers fa-3x fa-fw" aria-hidden="true">
<i class="fas fa-dollar-sign"></i>
<i class="fas fa-cog" data-fa-transform="shrink-8 right-8 down-5" data-fa-glow="10"></i>
</span>
</div>
<div class="media-content has-text-black">
<h2 class="title is-4 is-marginless">
<a href="<%= urlPrefix %>/admin/fees">Fee Management</a>
</h2>
<p>
Manage fees for
<%= configFunctions.getProperty("aliases.lot").toLowerCase() %>
<%= configFunctions.getProperty("aliases.occupancy").toLowerCase() %>
and specific
<%= configFunctions.getProperty("aliases.lot").toLowerCase() %> types.
</p>
</div>
</div>
</div>
<div class="card-content">
<div class="media">
<div class="media-left">
<span class="fa-layers fa-3x fa-fw" aria-hidden="true">
<i class="fas fa-user-friends"></i>
<i class="fas fa-cog" data-fa-transform="shrink-8 right-8 down-5" data-fa-glow="10"></i>
</span>
</div>
<div class="media-content has-text-black">
<h2 class="title is-4 is-marginless">
<a href="<%= urlPrefix %>/admin/occupancyTypes"><%= configFunctions.getProperty("aliases.occupancy") %> Type Management</a>
</h2>
<p>
Manage
<%= configFunctions.getProperty("aliases.occupancy").toLowerCase() %> types,
the fields associated with them,
and their available print options.
</p>
</div>
</div>
</div>
<div class="card-content">
<div class="media">
<div class="media-left">
<span class="fa-layers fa-3x fa-fw" aria-hidden="true">
<i class="fas fa-vector-square"></i>
<i class="fas fa-cog" data-fa-transform="shrink-8 right-8 down-5" data-fa-glow="10"></i>
</span>
</div>
<div class="media-content has-text-black">
<h2 class="title is-4 is-marginless">
<a href="<%= urlPrefix %>/admin/lotTypes"><%= configFunctions.getProperty("aliases.lot") %> Type Management</a>
</h2>
<p>
Manage
<%= configFunctions.getProperty("aliases.lot").toLowerCase() %> types
and fields associated with them.
</p>
</div>
</div>
</div>
<div class="card-content">
<div class="media">
<div class="media-left">
<span class="fa-layers fa-3x fa-fw" aria-hidden="true">
<i class="fas fa-table"></i>
<i class="fas fa-cog" data-fa-transform="shrink-8 right-8 down-5" data-fa-glow="10"></i>
</span>
</div>
<div class="media-content has-text-black">
<h2 class="title is-4 is-marginless">
<a href="<%= urlPrefix %>/admin/tables">Config Table Management</a>
</h2>
<p>
Manage simple configuration tables fees for
work order types,
<%= configFunctions.getProperty("aliases.lot").toLowerCase() %> statuses,
and <%= configFunctions.getProperty("aliases.lot").toLowerCase() %> <%= configFunctions.getProperty("aliases.occupant").toLowerCase() %> types.
</p>
</div>
</div>
</div>
<div class="card-content">
<div class="media">
<div class="media-left">
<i class="fas fa-3x fa-fw fa-database" aria-hidden="true"></i>
</div>
<div class="media-content has-text-black">
<h2 class="title is-4 is-marginless">
<a href="<%= urlPrefix %>/admin/database">Database Maintenance</a>
</h2>
<p>
Backup the database before making significant updates.
Permanently delete records that have been previously deleted from the database.
</p>
</div>
</div>
</div>
<% if (configFunctions.getProperty("application.ntfyStartup")) { %>
<div class="card-content">
<div class="media">
<div class="media-left">
<i class="fas fa-3x fa-fw fa-comment-alt" aria-hidden="true"></i>
</div>
<div class="media-content has-text-black">
<h2 class="title is-4 is-marginless">
<a href="<%= urlPrefix %>/admin/ntfyStartup">Ntfy Startup Notification</a>
</h2>
<p>
Subscribe to application startup notifications on a phone or a desktop computer.
</p>
</div>
</div>
</div>
<% } %>
</div>
<% } %>
</div>
</div>
<%- include('_footerA'); -%>

View File

@ -2,95 +2,96 @@
<html class="has-background-grey" id="is-login-page" lang="en" style="background-image:url('<%= urlPrefix + configFunctions.getProperty("application.backgroundURL") %>')">
<head>
<title>
Login: <%= configFunctions.getProperty("application.applicationName") %>
</title>
<title>
Login:
<%= configFunctions.getProperty("application.applicationName") %>
</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="icon" href="<%= urlPrefix + configFunctions.getProperty("application.logoURL") %>" />
<link rel="icon" href="<%= urlPrefix + configFunctions.getProperty("application.logoURL") %>" />
<link rel="stylesheet" href="<%= urlPrefix %>/stylesheets/style.css" />
<link rel="stylesheet" href="<%= urlPrefix %>/stylesheets/style.css" />
</head>
<body>
<div class="columns is-vcentered is-centered has-min-page-height is-marginless">
<div class="column is-half-widescreen is-two-thirds-desktop is-three-quarters-tablet">
<main class="box mx-3 my-3">
<div class="columns is-vcentered">
<div class="column has-text-centered">
<img src="<%= urlPrefix + configFunctions.getProperty("application.logoURL") %>" alt="" style="max-height:400px" />
</div>
<div class="column">
<h1 class="title is-3 has-text-centered">
<%= configFunctions.getProperty("application.applicationName") %>
</h1>
<form id="form--login" method="post" action="<%= urlPrefix %>/login">
<input name="_csrf" type="hidden" value="<%= csrfToken %>" />
<input name="redirect" type="hidden" value="<%= redirect %>" />
<div class="columns is-vcentered is-centered has-min-page-height is-marginless">
<div class="column is-half-widescreen is-two-thirds-desktop is-three-quarters-tablet">
<main class="box mx-3 my-3">
<div class="columns is-vcentered">
<div class="column has-text-centered">
<img src="<%= urlPrefix + configFunctions.getProperty("application.logoURL") %>" alt="" style="max-height:400px" />
</div>
<div class="column">
<h1 class="title is-3 has-text-centered">
<%= configFunctions.getProperty("application.applicationName") %>
</h1>
<form id="form--login" method="post" action="<%= urlPrefix %>/login">
<input name="_csrf" type="hidden" value="<%= csrfToken %>" />
<input name="redirect" type="hidden" value="<%= redirect %>" />
<div class="field has-addons">
<div class="control">
<span class="button is-static"><%= configFunctions.getProperty("application.userDomain") %>\</span>
</div>
<div class="control is-expanded">
<input class="input" id="login--userName" name="userName" type="text" placeholder="User Name" value="<%= userName %>" aria-label="User Name" autofocus required />
</div>
</div>
<div class="field">
<label class="sr-only" for="login--password">Password</label>
<div class="control has-icons-left has-tooltip-right" data-tooltip="Password" >
<input class="input" id="login--password" name="password" type="password" placeholder="Password" required />
<span class="icon is-small is-left">
<i class="fas fa-key" aria-hidden="true"></i>
</span>
</div>
</div>
<% if (useTestDatabases) { %>
<div class="message is-small is-warning">
<p class="message-body has-text-centered">
Testing databases in use!
</p>
</div>
<% } %>
<div class="level is-mobile">
<div class="level-left has-text-danger">
<% if (message !== "") { %>
<span class="icon">
<i class="fas fa-exclamation-triangle" aria-hidden="true"></i>
</span>
<span><%= message %></span>
<% } %>
</div>
<div class="level-right has-text-right">
<button class="button is-link" type="submit">
<span class="icon">
<i class="fas fa-sign-in-alt" aria-hidden="true"></i>
</span>
<span>Log In</span>
</button>
</div>
</div>
</form>
<hr />
<div class="has-text-right has-text-grey-dark is-size-7">
Build <%= buildNumber %><br />
<a class="has-text-grey-dark" href="https://cityssm.github.io/lot-occupancy-system/docs" target="_blank" rel="nofollow noreferrer" accesskey="h">Help</a>
<a class="has-text-grey-dark ml-4" href="https://github.com/cityssm/lot-occupancy-system" target="_blank" rel="noreferrer">GitHub</a>
</div>
</div>
</div>
</main>
<div class="field has-addons">
<div class="control">
<span class="button is-static"><%= configFunctions.getProperty("application.userDomain") %>\</span>
</div>
<div class="control is-expanded">
<input class="input" id="login--userName" name="userName" type="text" placeholder="User Name" value="<%= userName %>" aria-label="User Name" autofocus required />
</div>
</div>
<div class="field">
<label class="sr-only" for="login--password">Password</label>
<div class="control has-icons-left has-tooltip-right" data-tooltip="Password" >
<input class="input" id="login--password" name="password" type="password" placeholder="Password" required />
<span class="icon is-small is-left">
<i class="fas fa-key" aria-hidden="true"></i>
</span>
</div>
</div>
<% if (useTestDatabases) { %>
<div class="message is-small is-warning">
<p class="message-body has-text-centered">
Testing databases in use!
</p>
</div>
<% } %>
<div class="level is-mobile">
<div class="level-left has-text-danger">
<% if (message !== "") { %>
<span class="icon">
<i class="fas fa-exclamation-triangle" aria-hidden="true"></i>
</span>
<span><%= message %></span>
<% } %>
</div>
<div class="level-right has-text-right">
<button class="button is-link" type="submit">
<span class="icon">
<i class="fas fa-sign-in-alt" aria-hidden="true"></i>
</span>
<span>Log In</span>
</button>
</div>
</div>
</form>
<hr />
<div class="has-text-right has-text-grey-dark is-size-7">
Build <%= buildNumber %><br />
<a class="has-text-grey-dark" href="https://cityssm.github.io/lot-occupancy-system/docs" target="_blank" rel="nofollow noreferrer" accesskey="h">Help</a>
<a class="has-text-grey-dark ml-4" href="https://github.com/cityssm/lot-occupancy-system" target="_blank" rel="noreferrer">GitHub</a>
</div>
</div>
</div>
</main>
</div>
</div>
<script src="<%= urlPrefix %>/lib/fa/js/all.min.js" defer></script>
<script>
try {
window.localStorage.clear();
} catch (e) {}
</script>
<script src="<%= urlPrefix %>/lib/fa/js/all.min.js" defer></script>
<script>
try {
window.localStorage.clear();
} catch (e) {}
</script>
</body>
</html>
</html>