linting
parent
3a0b8a2ca1
commit
65b71e7f17
|
|
@ -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">' +
|
||||
|
|
|
|||
|
|
@ -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
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -1,3 +1,2 @@
|
|||
</body>
|
||||
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -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 %>">
|
||||
|
|
@ -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>
|
||||
|
|
@ -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>
|
||||
|
|
@ -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'); -%>
|
||||
|
|
|
|||
161
views/login.ejs
161
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") %>')">
|
||||
|
||||
<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>
|
||||
|
|
|
|||
Loading…
Reference in New Issue