linting
parent
3a0b8a2ca1
commit
65b71e7f17
|
|
@ -330,9 +330,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
'Displaying ' +
|
'Displaying ' +
|
||||||
(offset + 1).toString() +
|
(offset + 1).toString() +
|
||||||
' to ' +
|
' to ' +
|
||||||
Math.min(count, limit + offset) +
|
Math.min(count, limit + offset).toString() +
|
||||||
' of ' +
|
' of ' +
|
||||||
count +
|
count.toString() +
|
||||||
'</div>' +
|
'</div>' +
|
||||||
'</div>') +
|
'</div>') +
|
||||||
('<div class="level-right">' +
|
('<div class="level-right">' +
|
||||||
|
|
|
||||||
|
|
@ -440,9 +440,9 @@ declare const bulmaJS: BulmaJS
|
||||||
'Displaying ' +
|
'Displaying ' +
|
||||||
(offset + 1).toString() +
|
(offset + 1).toString() +
|
||||||
' to ' +
|
' to ' +
|
||||||
Math.min(count, limit + offset) +
|
Math.min(count, limit + offset).toString() +
|
||||||
' of ' +
|
' of ' +
|
||||||
count +
|
count.toString() +
|
||||||
'</div>' +
|
'</div>' +
|
||||||
'</div>') +
|
'</div>') +
|
||||||
('<div class="level-right">' +
|
('<div class="level-right">' +
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -1,32 +1,32 @@
|
||||||
</main>
|
</main>
|
||||||
<footer class="footer has-background-grey-lighter has-text-dark is-hidden-print mt-4">
|
<footer class="footer has-background-grey-lighter has-text-dark is-hidden-print mt-4">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="content has-text-right">
|
<div class="content has-text-right">
|
||||||
<p class="has-text-grey-dark">
|
<p class="has-text-grey-dark">
|
||||||
<strong>
|
<strong>
|
||||||
<%= configFunctions.getProperty("application.applicationName") %>
|
<%= configFunctions.getProperty("application.applicationName") %>
|
||||||
</strong><br />
|
</strong><br />
|
||||||
Build <%= buildNumber %>
|
Build <%= buildNumber %>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
<script>
|
<script>
|
||||||
window.exports = window.exports || {};
|
window.exports = window.exports || {};
|
||||||
exports.aliases = {
|
exports.aliases = {
|
||||||
map: "<%= configFunctions.getProperty("aliases.map") %>",
|
map: "<%= configFunctions.getProperty("aliases.map") %>",
|
||||||
maps: "<%= configFunctions.getProperty("aliases.maps") %>",
|
maps: "<%= configFunctions.getProperty("aliases.maps") %>",
|
||||||
lot: "<%= configFunctions.getProperty("aliases.lot") %>",
|
lot: "<%= configFunctions.getProperty("aliases.lot") %>",
|
||||||
lots: "<%= configFunctions.getProperty("aliases.lots") %>",
|
lots: "<%= configFunctions.getProperty("aliases.lots") %>",
|
||||||
occupancy: "<%= configFunctions.getProperty("aliases.occupancy") %>",
|
occupancy: "<%= configFunctions.getProperty("aliases.occupancy") %>",
|
||||||
occupancies: "<%= configFunctions.getProperty("aliases.occupancies") %>",
|
occupancies: "<%= configFunctions.getProperty("aliases.occupancies") %>",
|
||||||
occupancyStartDate: "<%= configFunctions.getProperty("aliases.occupancyStartDate") %>",
|
occupancyStartDate: "<%= configFunctions.getProperty("aliases.occupancyStartDate") %>",
|
||||||
occupant: "<%= configFunctions.getProperty("aliases.occupant") %>",
|
occupant: "<%= configFunctions.getProperty("aliases.occupant") %>",
|
||||||
occupants: "<%= configFunctions.getProperty("aliases.occupants") %>",
|
occupants: "<%= configFunctions.getProperty("aliases.occupants") %>",
|
||||||
externalReceiptNumber: "<%= configFunctions.getProperty("aliases.externalReceiptNumber") %>",
|
externalReceiptNumber: "<%= configFunctions.getProperty("aliases.externalReceiptNumber") %>",
|
||||||
workOrderOpenDate: "<%= configFunctions.getProperty("aliases.workOrderOpenDate") %>",
|
workOrderOpenDate: "<%= configFunctions.getProperty("aliases.workOrderOpenDate") %>",
|
||||||
workOrderCloseDate: "<%= configFunctions.getProperty("aliases.workOrderCloseDate") %>"
|
workOrderCloseDate: "<%= configFunctions.getProperty("aliases.workOrderCloseDate") %>"
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<script src="<%= urlPrefix %>/lib/cityssm-bulma-js/bulma-js.js"></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>
|
<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/leaflet/leaflet.js"></script>
|
||||||
<script src="<%= urlPrefix %>/lib/randomcolor/randomcolor.js"></script>
|
<script src="<%= urlPrefix %>/lib/randomcolor/randomcolor.js"></script>
|
||||||
<script>
|
<script>
|
||||||
cityssm.htmlModalFolder ="<%= urlPrefix %>/html/";
|
cityssm.htmlModalFolder ="<%= urlPrefix %>/html/";
|
||||||
bulmaJS.init();
|
bulmaJS.init();
|
||||||
</script>
|
</script>
|
||||||
<script src="<%= urlPrefix %>/lib/cityssm-bulma-webapp-js/dist/cityssm-theme.min.js" defer></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>
|
<script src="<%= urlPrefix %>/lib/fa/js/all.min.js" defer></script>
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,2 @@
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|
|
||||||
|
|
@ -2,114 +2,115 @@
|
||||||
<html class="has-navbar-fixed-top is-fullwidth" lang="en">
|
<html class="has-navbar-fixed-top is-fullwidth" lang="en">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<meta name="csrf-token" content="<%= csrfToken %>">
|
<meta name="csrf-token" content="<%= csrfToken %>">
|
||||||
|
|
||||||
<title>
|
<title>
|
||||||
<%= headTitle %>: <%= configFunctions.getProperty("application.applicationName") %>
|
<%= headTitle %>:
|
||||||
</title>
|
<%= 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 %>/stylesheets/style.css" />
|
||||||
<link rel="stylesheet" href="<%= urlPrefix %>/lib/leaflet/leaflet.css" />
|
<link rel="stylesheet" href="<%= urlPrefix %>/lib/leaflet/leaflet.css" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<nav class="navbar is-light is-fixed-top is-static-print" id="cityssm-theme--navbar" role="navigation"
|
<nav class="navbar is-light is-fixed-top is-static-print" id="cityssm-theme--navbar" role="navigation"
|
||||||
aria-label="main navigation">
|
aria-label="main navigation">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="navbar-brand">
|
<div class="navbar-brand">
|
||||||
<a class="navbar-item" href="<%= urlPrefix %>/dashboard">
|
<a class="navbar-item" href="<%= urlPrefix %>/dashboard">
|
||||||
<img class="mr-3" src="<%= urlPrefix + configFunctions.getProperty("application.logoURL") %>" alt=""
|
<img class="mr-3"
|
||||||
height="28" />
|
src="<%= urlPrefix + configFunctions.getProperty("application.logoURL") %>"
|
||||||
<strong><%= configFunctions.getProperty("application.applicationName") %></strong>
|
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>
|
||||||
|
<a class="navbar-item" href="<%= urlPrefix %>/maps" accesskey="4">
|
||||||
<a class="navbar-burger burger is-hidden-print" role="button" aria-label="menu" aria-expanded="false">
|
<span class="icon mr-1">
|
||||||
<span aria-hidden="true"></span>
|
<i class="far fa-fw fa-map" aria-hidden="true"></i>
|
||||||
<span aria-hidden="true"></span>
|
</span>
|
||||||
<span aria-hidden="true"></span>
|
<span><%= configFunctions.getProperty("aliases.maps") %></span>
|
||||||
</a>
|
</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>
|
||||||
|
|
||||||
<div class="navbar-menu">
|
<div class="navbar-end">
|
||||||
<div class="navbar-start">
|
<a class="navbar-item" id="cityssm-theme--logout-button" role="button" href="#" accesskey="x">
|
||||||
<a class="navbar-item" href="<%= urlPrefix %>/workOrders" accesskey="1">
|
<span class="icon mr-1">
|
||||||
<span class="icon mr-1">
|
<i class="fas fa-fw fa-sign-out-alt" aria-hidden="true"></i>
|
||||||
<i class="fas fa-hard-hat" aria-hidden="true"></i>
|
</span>
|
||||||
</span>
|
<span>Log Out <%=user.userName %></span>
|
||||||
<span>Work Orders</span>
|
</a>
|
||||||
</a>
|
</div>
|
||||||
|
|
||||||
<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>
|
</div>
|
||||||
</nav>
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
<main class="container pt-2 px-3 mr-auto has-min-page-height"
|
<main class="container pt-2 px-3 mr-auto has-min-page-height"
|
||||||
data-session-keep-alive-millis="<%= configFunctions.keepAliveMillis %>"
|
data-session-keep-alive-millis="<%= configFunctions.keepAliveMillis %>"
|
||||||
data-url-prefix="<%= urlPrefix %>"
|
data-url-prefix="<%= urlPrefix %>"
|
||||||
data-can-update="<%= user.userProperties.canUpdate ? "true" : "false" %>"
|
data-can-update="<%= user.userProperties.canUpdate ? "true" : "false" %>"
|
||||||
data-is-admin="<%= user.userProperties.isAdmin ? "true" : "false" %>"
|
data-is-admin="<%= user.userProperties.isAdmin ? "true" : "false" %>"
|
||||||
data-api-key="<%= user.userProperties.apiKey %>">
|
data-api-key="<%= user.userProperties.apiKey %>">
|
||||||
|
|
@ -1,45 +1,45 @@
|
||||||
<aside class="menu">
|
<aside class="menu">
|
||||||
<h2 class="menu-label">
|
<h2 class="menu-label">
|
||||||
Administrator Tools
|
Administrator Tools
|
||||||
</h2>
|
</h2>
|
||||||
<ul class="menu-list">
|
<ul class="menu-list">
|
||||||
<li>
|
<li>
|
||||||
<a class="<%= (headTitle === "Fee Management" ? "is-active" : "") %>" href="<%= urlPrefix %>/admin/fees">
|
<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 class="icon"><i class="fas fa-fw fa-dollar-sign" aria-hidden="true"></i></span>
|
||||||
<span>Fee Management</span>
|
<span>Fee Management</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a class="<%= (headTitle === configFunctions.getProperty("aliases.occupancy") + " Type Management" ? "is-active" : "") %>" href="<%= urlPrefix %>/admin/occupancyTypes">
|
<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 class="icon"><i class="fas fa-fw fa-user-friends" aria-hidden="true"></i></span>
|
||||||
<span><%= configFunctions.getProperty("aliases.occupancy") %> Type Management</span>
|
<span><%= configFunctions.getProperty("aliases.occupancy") %> Type Management</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a class="<%= (headTitle === configFunctions.getProperty("aliases.lot") + " Type Management" ? "is-active" : "") %>" href="<%= urlPrefix %>/admin/lotTypes">
|
<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 class="icon"><i class="fas fa-fw fa-vector-square" aria-hidden="true"></i></span>
|
||||||
<span><%= configFunctions.getProperty("aliases.lot") %> Type Management</span>
|
<span><%= configFunctions.getProperty("aliases.lot") %> Type Management</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a class="<%= (headTitle === "Config Table Management" ? "is-active" : "") %>" href="<%= urlPrefix %>/admin/tables">
|
<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 class="icon"><i class="fas fa-fw fa-table" aria-hidden="true"></i></span>
|
||||||
<span>Config Table Management</span>
|
<span>Config Table Management</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a class="<%= (headTitle === "Database Maintenance" ? "is-active" : "") %>" href="<%= urlPrefix %>/admin/database">
|
<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 class="icon"><i class="fas fa-fw fa-database" aria-hidden="true"></i></span>
|
||||||
<span>Database Maintenance</span>
|
<span>Database Maintenance</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<% if (configFunctions.getProperty("application.ntfyStartup")) { %>
|
<% if (configFunctions.getProperty("application.ntfyStartup")) { %>
|
||||||
<li>
|
<li>
|
||||||
<a class="<%= (headTitle === "Ntfy Startup Notification" ? "is-active" : "") %>" href="<%= urlPrefix %>/admin/ntfyStartup">
|
<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 class="icon"><i class="fas fa-fw fa-comment-alt" aria-hidden="true"></i></span>
|
||||||
<span>Ntfy Startup Notification</span>
|
<span>Ntfy Startup Notification</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<% } %>
|
<% } %>
|
||||||
</ul>
|
</ul>
|
||||||
</aside>
|
</aside>
|
||||||
|
|
@ -1,41 +1,41 @@
|
||||||
<aside class="menu">
|
<aside class="menu">
|
||||||
<h2 class="menu-label">
|
<h2 class="menu-label">
|
||||||
Work Orders
|
Work Orders
|
||||||
</h2>
|
</h2>
|
||||||
<ul class="menu-list">
|
<ul class="menu-list">
|
||||||
<li>
|
<li>
|
||||||
<a class="<%= (headTitle === "Work Order Search" ? "is-active" : "") %>" href="<%= urlPrefix %>/workOrders">
|
<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 class="icon"><i class="fas fa-fw fa-hard-hat" aria-hidden="true"></i></span>
|
||||||
<span>Work Order Search</span>
|
<span>Work Order Search</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h2 class="menu-label">
|
<h2 class="menu-label">
|
||||||
Milestones
|
Milestones
|
||||||
</h2>
|
</h2>
|
||||||
<ul class="menu-list">
|
<ul class="menu-list">
|
||||||
<li>
|
<li>
|
||||||
<a class="<%= (headTitle.endsWith("Milestone Calendar") ? "is-active" : "") %>" href="<%= urlPrefix %>/workOrders/milestoneCalendar">
|
<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 class="icon"><i class="fas fa-fw fa-calendar" aria-hidden="true"></i></span>
|
||||||
<span>Milestone Calendar</span>
|
<span>Milestone Calendar</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a class="<%= (headTitle.endsWith("Outlook Integration") ? "is-active" : "") %>" href="<%= urlPrefix %>/workOrders/outlook">
|
<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 class="icon"><i class="fas fa-fw fa-envelope-open-text" aria-hidden="true"></i></span>
|
||||||
<span>Outlook Integration</span>
|
<span>Outlook Integration</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h2 class="menu-label">
|
<h2 class="menu-label">
|
||||||
Help
|
Help
|
||||||
</h2>
|
</h2>
|
||||||
<ul class="menu-list">
|
<ul class="menu-list">
|
||||||
<li>
|
<li>
|
||||||
<a href="https://cityssm.github.io/lot-occupancy-system/docs/workOrders.html" target="_blank" rel="noopener noreferrer">
|
<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 class="icon"><i class="fas fa-fw fa-question-circle" aria-hidden="true"></i></span>
|
||||||
<span>Work Order Documentation</span>
|
<span>Work Order Documentation</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</aside>
|
</aside>
|
||||||
|
|
@ -1,403 +1,404 @@
|
||||||
<%- include('_header'); -%>
|
<%- include('_header'); -%>
|
||||||
|
|
||||||
<h1 class="title is-1">
|
<h1 class="title is-1">
|
||||||
<%= configFunctions.getProperty("application.applicationName") %>
|
<%= configFunctions.getProperty("application.applicationName") %>
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<div class="columns">
|
<div class="columns">
|
||||||
<% if (workOrderMilestones.length > 0) { %>
|
<% if (workOrderMilestones.length > 0) { %>
|
||||||
<% const workOrderPrints = configFunctions.getProperty("settings.workOrders.prints"); %>
|
<% const workOrderPrints = configFunctions.getProperty("settings.workOrders.prints"); %>
|
||||||
<div class="column is-4">
|
<div class="column is-4">
|
||||||
<div class="panel is-info">
|
<div class="panel is-info">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<div class="level is-mobile">
|
<div class="level is-mobile">
|
||||||
<div class="level-left">
|
<div class="level-left">
|
||||||
<div class="level-item">
|
<div class="level-item">
|
||||||
<h2 class="title is-5 has-text-weight-bold has-text-white">
|
<h2 class="title is-5 has-text-weight-bold has-text-white">
|
||||||
Today's Milestones
|
Today's Milestones
|
||||||
</h2>
|
</h2>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="level-right">
|
<div class="level-right">
|
||||||
<div class="level-item">
|
<div class="level-item">
|
||||||
<span class="tag"><%= workOrderMilestones.length %></span>
|
<span class="tag"><%= workOrderMilestones.length %></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<% for (const milestone of workOrderMilestones) { %>
|
<% for (const milestone of workOrderMilestones) { %>
|
||||||
<div class="panel-block is-block">
|
<div class="panel-block is-block">
|
||||||
<div class="columns is-mobile">
|
<div class="columns is-mobile">
|
||||||
<div class="column is-narrow">
|
<div class="column is-narrow">
|
||||||
<% if (milestone.workOrderMilestoneCompletionDate) { %>
|
<% if (milestone.workOrderMilestoneCompletionDate) { %>
|
||||||
<span class="icon is-small has-tooltip-right" data-tooltip="Completed">
|
<span class="icon is-small has-tooltip-right" data-tooltip="Completed">
|
||||||
<i class="fas fa-check" aria-label="Completed"></i>
|
<i class="fas fa-check" aria-label="Completed"></i>
|
||||||
</span>
|
</span>
|
||||||
<% } else { %>
|
<% } else { %>
|
||||||
<span class="icon is-small has-tooltip-right" data-tooltip="Incomplete">
|
<span class="icon is-small has-tooltip-right" data-tooltip="Incomplete">
|
||||||
<i class="far fa-square" aria-label="Incomplete"></i>
|
<i class="far fa-square" aria-label="Incomplete"></i>
|
||||||
</span>
|
</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>
|
</div>
|
||||||
</div>
|
<div class="column">
|
||||||
<% } %>
|
<% if (workOrderPrints.length > 0) { %>
|
||||||
<div class="column">
|
<span class="is-pulled-right">
|
||||||
<div class="columns is-desktop">
|
<a class="button is-small" data-tooltip="Print Work Order" href="<%=urlPrefix %>/print/<%= workOrderPrints[0] %>/?workOrderId=<%= milestone.workOrderId %>" target="_blank" aria-label="Print">
|
||||||
<div class="column">
|
<i class="fas fa-print" aria-hidden="true"></i>
|
||||||
<div class="card">
|
</a>
|
||||||
<div class="card-content">
|
</span>
|
||||||
<div class="media">
|
<% } %>
|
||||||
<div class="media-left">
|
<% if (milestone.workOrderMilestoneTime) { %>
|
||||||
<i class="fas fa-3x fa-fw fa-hard-hat" aria-hidden="true"></i>
|
<%= milestone.workOrderMilestoneTimeString %><br />
|
||||||
</div>
|
<% } %>
|
||||||
<div class="media-content has-text-black">
|
<% if (milestone.workOrderMilestoneTypeId) { %>
|
||||||
<div class="level is-marginless is-mobile">
|
<strong><%= milestone.workOrderMilestoneType %></strong><br />
|
||||||
<div class="level-left">
|
<% } %>
|
||||||
<div class="level-item">
|
<span class="is-size-7">
|
||||||
<h2 class="title is-4 is-marginless">
|
<a href="<%= urlPrefix %>/workOrders/<%= milestone.workOrderId %>">
|
||||||
<a href="<%= urlPrefix %>/workOrders">Work Orders</a>
|
<i class="fas fa-circle" data-work-order-number="<%= milestone.workOrderNumber %>" aria-label="Work Order"></i>
|
||||||
</h2>
|
<%= milestone.workOrderNumber %>
|
||||||
</div>
|
</a><br />
|
||||||
</div>
|
<%
|
||||||
<% if (workOrderCount > 0) { %>
|
if (milestone.workOrderLots.length > 0) {
|
||||||
<div class="level-right">
|
for (const lot of milestone.workOrderLots) {
|
||||||
<div class="level-item">
|
%>
|
||||||
<a class="tag is-info" href="<%= urlPrefix %>/workOrders/?workOrderOpenDateString=<%= dateTimeFunctions.dateToString(new Date()) %>"><%= workOrderCount %> Open Today</a>
|
<span class="has-tooltip-right" data-tooltip="<%= lot.mapName %>">
|
||||||
</div>
|
<i class="fas fa-fw fa-vector-square" aria-label="<%= configFunctions.getProperty("aliases.lot") %>"></i>
|
||||||
</div>
|
<%= lot.lotName %>
|
||||||
<% } %>
|
</span><br />
|
||||||
</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) { %>
|
if (milestone.workOrderLotOccupancies.length > 0) {
|
||||||
<h2 class="title is-3">Administrator Tools</h2>
|
for (const occupancy of milestone.workOrderLotOccupancies) {
|
||||||
|
for (const occupant of occupancy.lotOccupancyOccupants) {
|
||||||
<div class="card">
|
%>
|
||||||
<div class="card-content">
|
<span class="has-tooltip-right" data-tooltip="<%= occupant.lotOccupantType %>">
|
||||||
<div class="media">
|
<i class="fas fa-fw fa-<%= occupant.fontAwesomeIconClass || 'user' %>" aria-label="<%= configFunctions.getProperty("aliases.occupancy") %>"></i>
|
||||||
<div class="media-left">
|
<%= occupant.occupantName %>
|
||||||
<span class="fa-layers fa-3x fa-fw" aria-hidden="true">
|
</span><br />
|
||||||
<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">
|
</span>
|
||||||
<a href="<%= urlPrefix %>/admin/fees">Fee Management</a>
|
</div>
|
||||||
</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>
|
||||||
<div class="card-content">
|
</div>
|
||||||
<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>
|
</div>
|
||||||
|
|
||||||
<%- include('_footerA'); -%>
|
<%- include('_footerA'); -%>
|
||||||
|
|
|
||||||
159
views/login.ejs
159
views/login.ejs
|
|
@ -2,95 +2,96 @@
|
||||||
<html class="has-background-grey" id="is-login-page" lang="en" style="background-image:url('<%= urlPrefix + configFunctions.getProperty("application.backgroundURL") %>')">
|
<html class="has-background-grey" id="is-login-page" lang="en" style="background-image:url('<%= urlPrefix + configFunctions.getProperty("application.backgroundURL") %>')">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<title>
|
<title>
|
||||||
Login: <%= configFunctions.getProperty("application.applicationName") %>
|
Login:
|
||||||
</title>
|
<%= configFunctions.getProperty("application.applicationName") %>
|
||||||
|
</title>
|
||||||
|
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
<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>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<div class="columns is-vcentered is-centered has-min-page-height is-marginless">
|
<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">
|
<div class="column is-half-widescreen is-two-thirds-desktop is-three-quarters-tablet">
|
||||||
<main class="box mx-3 my-3">
|
<main class="box mx-3 my-3">
|
||||||
<div class="columns is-vcentered">
|
<div class="columns is-vcentered">
|
||||||
<div class="column has-text-centered">
|
<div class="column has-text-centered">
|
||||||
<img src="<%= urlPrefix + configFunctions.getProperty("application.logoURL") %>" alt="" style="max-height:400px" />
|
<img src="<%= urlPrefix + configFunctions.getProperty("application.logoURL") %>" alt="" style="max-height:400px" />
|
||||||
</div>
|
</div>
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<h1 class="title is-3 has-text-centered">
|
<h1 class="title is-3 has-text-centered">
|
||||||
<%= configFunctions.getProperty("application.applicationName") %>
|
<%= configFunctions.getProperty("application.applicationName") %>
|
||||||
</h1>
|
</h1>
|
||||||
<form id="form--login" method="post" action="<%= urlPrefix %>/login">
|
<form id="form--login" method="post" action="<%= urlPrefix %>/login">
|
||||||
<input name="_csrf" type="hidden" value="<%= csrfToken %>" />
|
<input name="_csrf" type="hidden" value="<%= csrfToken %>" />
|
||||||
<input name="redirect" type="hidden" value="<%= redirect %>" />
|
<input name="redirect" type="hidden" value="<%= redirect %>" />
|
||||||
|
|
||||||
<div class="field has-addons">
|
<div class="field has-addons">
|
||||||
<div class="control">
|
<div class="control">
|
||||||
<span class="button is-static"><%= configFunctions.getProperty("application.userDomain") %>\</span>
|
<span class="button is-static"><%= configFunctions.getProperty("application.userDomain") %>\</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="control is-expanded">
|
<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 />
|
<input class="input" id="login--userName" name="userName" type="text" placeholder="User Name" value="<%= userName %>" aria-label="User Name" autofocus required />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label class="sr-only" for="login--password">Password</label>
|
<label class="sr-only" for="login--password">Password</label>
|
||||||
<div class="control has-icons-left has-tooltip-right" data-tooltip="Password" >
|
<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 />
|
<input class="input" id="login--password" name="password" type="password" placeholder="Password" required />
|
||||||
<span class="icon is-small is-left">
|
<span class="icon is-small is-left">
|
||||||
<i class="fas fa-key" aria-hidden="true"></i>
|
<i class="fas fa-key" aria-hidden="true"></i>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<% if (useTestDatabases) { %>
|
<% if (useTestDatabases) { %>
|
||||||
<div class="message is-small is-warning">
|
<div class="message is-small is-warning">
|
||||||
<p class="message-body has-text-centered">
|
<p class="message-body has-text-centered">
|
||||||
Testing databases in use!
|
Testing databases in use!
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<% } %>
|
<% } %>
|
||||||
<div class="level is-mobile">
|
<div class="level is-mobile">
|
||||||
<div class="level-left has-text-danger">
|
<div class="level-left has-text-danger">
|
||||||
<% if (message !== "") { %>
|
<% if (message !== "") { %>
|
||||||
<span class="icon">
|
<span class="icon">
|
||||||
<i class="fas fa-exclamation-triangle" aria-hidden="true"></i>
|
<i class="fas fa-exclamation-triangle" aria-hidden="true"></i>
|
||||||
</span>
|
</span>
|
||||||
<span><%= message %></span>
|
<span><%= message %></span>
|
||||||
<% } %>
|
<% } %>
|
||||||
</div>
|
</div>
|
||||||
<div class="level-right has-text-right">
|
<div class="level-right has-text-right">
|
||||||
<button class="button is-link" type="submit">
|
<button class="button is-link" type="submit">
|
||||||
<span class="icon">
|
<span class="icon">
|
||||||
<i class="fas fa-sign-in-alt" aria-hidden="true"></i>
|
<i class="fas fa-sign-in-alt" aria-hidden="true"></i>
|
||||||
</span>
|
</span>
|
||||||
<span>Log In</span>
|
<span>Log In</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
<hr />
|
<hr />
|
||||||
<div class="has-text-right has-text-grey-dark is-size-7">
|
<div class="has-text-right has-text-grey-dark is-size-7">
|
||||||
Build <%= buildNumber %><br />
|
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" 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>
|
<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>
|
</div>
|
||||||
</div>
|
|
||||||
</main>
|
|
||||||
</div>
|
</div>
|
||||||
|
</main>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<script src="<%= urlPrefix %>/lib/fa/js/all.min.js" defer></script>
|
<script src="<%= urlPrefix %>/lib/fa/js/all.min.js" defer></script>
|
||||||
<script>
|
<script>
|
||||||
try {
|
try {
|
||||||
window.localStorage.clear();
|
window.localStorage.clear();
|
||||||
} catch (e) {}
|
} catch (e) {}
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
Loading…
Reference in New Issue