work order progress
parent
f007dd1f63
commit
659318c536
|
|
@ -0,0 +1,3 @@
|
|||
import type { RequestHandler } from "express";
|
||||
export declare const handler: RequestHandler;
|
||||
export default handler;
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
import * as configFunctions from "../../helpers/functions.config.js";
|
||||
import { getWorkOrder } from "../../helpers/lotOccupancyDB/getWorkOrder.js";
|
||||
export const handler = (request, response) => {
|
||||
const workOrder = getWorkOrder(request.params.workOrderId);
|
||||
if (!workOrder) {
|
||||
return response.redirect(configFunctions.getProperty("reverseProxy.urlPrefix") +
|
||||
"/workOrders/?error=workOrderIdNotFound");
|
||||
}
|
||||
response.render("workOrder-edit", {
|
||||
headTitle: "Work Order #" + workOrder.workOrderNumber,
|
||||
workOrder
|
||||
});
|
||||
};
|
||||
export default handler;
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
import type { RequestHandler } from "express";
|
||||
|
||||
import * as configFunctions from "../../helpers/functions.config.js";
|
||||
|
||||
import { getWorkOrder } from "../../helpers/lotOccupancyDB/getWorkOrder.js";
|
||||
|
||||
export const handler: RequestHandler = (request, response) => {
|
||||
const workOrder = getWorkOrder(request.params.workOrderId);
|
||||
|
||||
if (!workOrder) {
|
||||
return response.redirect(
|
||||
configFunctions.getProperty("reverseProxy.urlPrefix") +
|
||||
"/workOrders/?error=workOrderIdNotFound"
|
||||
);
|
||||
}
|
||||
|
||||
response.render("workOrder-edit", {
|
||||
headTitle: "Work Order #" + workOrder.workOrderNumber,
|
||||
workOrder
|
||||
});
|
||||
};
|
||||
|
||||
export default handler;
|
||||
|
|
@ -64,6 +64,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
lotOccupancyId
|
||||
}, (responseJSON) => {
|
||||
if (responseJSON.success) {
|
||||
cityssm.disableNavBlocker();
|
||||
window.location.href =
|
||||
urlPrefix +
|
||||
"/lotOccupancies?t=" +
|
||||
|
|
@ -119,36 +120,58 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
for (const occupancyTypeField of responseJSON.occupancyTypeFields) {
|
||||
occupancyTypeFieldIds +=
|
||||
"," + occupancyTypeField.occupancyTypeFieldId;
|
||||
const fieldName = "lotOccupancyFieldValue_" +
|
||||
occupancyTypeField.occupancyTypeFieldId;
|
||||
const fieldId = "lotOccupancy--" + fieldName;
|
||||
const fieldElement = document.createElement("div");
|
||||
fieldElement.className = "field";
|
||||
fieldElement.innerHTML =
|
||||
'<label class="label" for="lotOccupancy--lotOccupancyFieldValue_' +
|
||||
occupancyTypeField.occupancyTypeFieldId +
|
||||
'<label class="label" for="' +
|
||||
fieldId +
|
||||
'"></label>' +
|
||||
'<div class="control"></div>';
|
||||
fieldElement.querySelector("label").textContent =
|
||||
occupancyTypeField.occupancyTypeField;
|
||||
const inputElement = document.createElement("input");
|
||||
inputElement.className = "input";
|
||||
inputElement.id =
|
||||
"lotOccupancy--lotOccupancyFieldValue_" +
|
||||
occupancyTypeField.occupancyTypeFieldId;
|
||||
inputElement.name =
|
||||
"lotOccupancyFieldValue_" +
|
||||
occupancyTypeField.occupancyTypeFieldId;
|
||||
inputElement.type = "text";
|
||||
inputElement.required = occupancyTypeField.isRequired;
|
||||
inputElement.minLength =
|
||||
occupancyTypeField.minimumLength;
|
||||
inputElement.maxLength =
|
||||
occupancyTypeField.maximumLength;
|
||||
if (occupancyTypeField.pattern &&
|
||||
occupancyTypeField.pattern !== "") {
|
||||
inputElement.pattern = occupancyTypeField.pattern;
|
||||
if (occupancyTypeField.occupancyTypeFieldValues === "") {
|
||||
const inputElement = document.createElement("input");
|
||||
inputElement.className = "input";
|
||||
inputElement.id = fieldId;
|
||||
inputElement.name = fieldName;
|
||||
inputElement.type = "text";
|
||||
inputElement.required =
|
||||
occupancyTypeField.isRequired;
|
||||
inputElement.minLength =
|
||||
occupancyTypeField.minimumLength;
|
||||
inputElement.maxLength =
|
||||
occupancyTypeField.maximumLength;
|
||||
if (occupancyTypeField.pattern &&
|
||||
occupancyTypeField.pattern !== "") {
|
||||
inputElement.pattern =
|
||||
occupancyTypeField.pattern;
|
||||
}
|
||||
fieldElement
|
||||
.querySelector(".control")
|
||||
.append(inputElement);
|
||||
}
|
||||
else {
|
||||
fieldElement.querySelector(".control").innerHTML =
|
||||
'<div class="select is-fullwidth"><select id="' +
|
||||
fieldId +
|
||||
'" name="' +
|
||||
fieldName +
|
||||
'">' +
|
||||
'<option value="">(Not Set)</option>' +
|
||||
"</select></div>";
|
||||
fieldElement.querySelector("select").required =
|
||||
occupancyTypeField.isRequired;
|
||||
const optionValues = occupancyTypeField.occupancyTypeFieldValues.split("\n");
|
||||
for (const optionValue of optionValues) {
|
||||
const optionElement = document.createElement("option");
|
||||
optionElement.value = optionValue;
|
||||
optionElement.textContent = optionValue;
|
||||
fieldElement.querySelector("select").append(optionElement);
|
||||
}
|
||||
}
|
||||
fieldElement
|
||||
.querySelector(".control")
|
||||
.append(inputElement);
|
||||
lotOccupancyFieldsContainerElement.append(fieldElement);
|
||||
}
|
||||
lotOccupancyFieldsContainerElement.insertAdjacentHTML("beforeend", '<input name="occupancyTypeFieldIds" type="hidden" value="' +
|
||||
|
|
|
|||
|
|
@ -110,6 +110,7 @@ declare const bulmaJS: BulmaJS;
|
|||
errorMessage?: string;
|
||||
}) => {
|
||||
if (responseJSON.success) {
|
||||
cityssm.disableNavBlocker();
|
||||
window.location.href =
|
||||
urlPrefix +
|
||||
"/lotOccupancies?t=" +
|
||||
|
|
@ -187,43 +188,77 @@ declare const bulmaJS: BulmaJS;
|
|||
occupancyTypeFieldIds +=
|
||||
"," + occupancyTypeField.occupancyTypeFieldId;
|
||||
|
||||
const fieldName =
|
||||
"lotOccupancyFieldValue_" +
|
||||
occupancyTypeField.occupancyTypeFieldId;
|
||||
|
||||
const fieldId = "lotOccupancy--" + fieldName;
|
||||
|
||||
const fieldElement = document.createElement("div");
|
||||
fieldElement.className = "field";
|
||||
fieldElement.innerHTML =
|
||||
'<label class="label" for="lotOccupancy--lotOccupancyFieldValue_' +
|
||||
occupancyTypeField.occupancyTypeFieldId +
|
||||
'<label class="label" for="' +
|
||||
fieldId +
|
||||
'"></label>' +
|
||||
'<div class="control"></div>';
|
||||
|
||||
fieldElement.querySelector("label").textContent =
|
||||
occupancyTypeField.occupancyTypeField;
|
||||
|
||||
const inputElement = document.createElement("input");
|
||||
inputElement.className = "input";
|
||||
inputElement.id =
|
||||
"lotOccupancy--lotOccupancyFieldValue_" +
|
||||
occupancyTypeField.occupancyTypeFieldId;
|
||||
inputElement.name =
|
||||
"lotOccupancyFieldValue_" +
|
||||
occupancyTypeField.occupancyTypeFieldId;
|
||||
inputElement.type = "text";
|
||||
|
||||
inputElement.required = occupancyTypeField.isRequired;
|
||||
inputElement.minLength =
|
||||
occupancyTypeField.minimumLength;
|
||||
inputElement.maxLength =
|
||||
occupancyTypeField.maximumLength;
|
||||
|
||||
if (
|
||||
occupancyTypeField.pattern &&
|
||||
occupancyTypeField.pattern !== ""
|
||||
occupancyTypeField.occupancyTypeFieldValues === ""
|
||||
) {
|
||||
inputElement.pattern = occupancyTypeField.pattern;
|
||||
}
|
||||
const inputElement =
|
||||
document.createElement("input");
|
||||
|
||||
fieldElement
|
||||
.querySelector(".control")
|
||||
.append(inputElement);
|
||||
inputElement.className = "input";
|
||||
|
||||
inputElement.id = fieldId;
|
||||
|
||||
inputElement.name = fieldName;
|
||||
|
||||
inputElement.type = "text";
|
||||
|
||||
inputElement.required =
|
||||
occupancyTypeField.isRequired;
|
||||
inputElement.minLength =
|
||||
occupancyTypeField.minimumLength;
|
||||
inputElement.maxLength =
|
||||
occupancyTypeField.maximumLength;
|
||||
|
||||
if (
|
||||
occupancyTypeField.pattern &&
|
||||
occupancyTypeField.pattern !== ""
|
||||
) {
|
||||
inputElement.pattern =
|
||||
occupancyTypeField.pattern;
|
||||
}
|
||||
|
||||
fieldElement
|
||||
.querySelector(".control")
|
||||
.append(inputElement);
|
||||
} else {
|
||||
fieldElement.querySelector(".control").innerHTML =
|
||||
'<div class="select is-fullwidth"><select id="' +
|
||||
fieldId +
|
||||
'" name="' +
|
||||
fieldName +
|
||||
'">' +
|
||||
'<option value="">(Not Set)</option>' +
|
||||
"</select></div>";
|
||||
|
||||
fieldElement.querySelector("select").required =
|
||||
occupancyTypeField.isRequired;
|
||||
|
||||
const optionValues = occupancyTypeField.occupancyTypeFieldValues.split("\n");
|
||||
|
||||
for (const optionValue of optionValues) {
|
||||
const optionElement = document.createElement("option");
|
||||
optionElement.value = optionValue;
|
||||
optionElement.textContent = optionValue;
|
||||
fieldElement.querySelector("select").append(optionElement);
|
||||
}
|
||||
}
|
||||
|
||||
lotOccupancyFieldsContainerElement.append(fieldElement);
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -1,9 +1,12 @@
|
|||
import { Router } from "express";
|
||||
import * as permissionHandlers from "../handlers/permissions.js";
|
||||
import handler_search from "../handlers/workOrders-get/search.js";
|
||||
import handler_doSearchWorkOrders from "../handlers/workOrders-post/doSearchWorkOrders.js";
|
||||
import handler_view from "../handlers/workOrders-get/view.js";
|
||||
import handler_edit from "../handlers/workOrders-get/edit.js";
|
||||
export const router = Router();
|
||||
router.get("/", handler_search);
|
||||
router.post("/doSearchWorkOrders", handler_doSearchWorkOrders);
|
||||
router.get("/:workOrderId", handler_view);
|
||||
router.get("/:workOrderId/edit", permissionHandlers.updateGetHandler, handler_edit);
|
||||
export default router;
|
||||
|
|
|
|||
|
|
@ -1,13 +1,14 @@
|
|||
import { Router } from "express";
|
||||
|
||||
import * as permissionHandlers from "../handlers/permissions.js";
|
||||
import * as configFunctions from "../helpers/functions.config.js";
|
||||
|
||||
import handler_search from "../handlers/workOrders-get/search.js";
|
||||
import handler_doSearchWorkOrders from "../handlers/workOrders-post/doSearchWorkOrders.js";
|
||||
|
||||
import handler_view from "../handlers/workOrders-get/view.js";
|
||||
|
||||
import handler_edit from "../handlers/workOrders-get/edit.js";
|
||||
|
||||
export const router = Router();
|
||||
|
||||
router.get("/", handler_search);
|
||||
|
|
@ -16,4 +17,8 @@ router.post("/doSearchWorkOrders", handler_doSearchWorkOrders);
|
|||
|
||||
router.get("/:workOrderId", handler_view);
|
||||
|
||||
router.get("/:workOrderId/edit",
|
||||
permissionHandlers.updateGetHandler,
|
||||
handler_edit);
|
||||
|
||||
export default router;
|
||||
|
|
|
|||
|
|
@ -18,7 +18,8 @@
|
|||
|
||||
<body>
|
||||
<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"
|
||||
style="z-index:1100">
|
||||
<div class="container">
|
||||
<div class="navbar-brand">
|
||||
<a class="navbar-item" href="<%= urlPrefix %>/dashboard">
|
||||
|
|
|
|||
|
|
@ -1,194 +1,189 @@
|
|||
<%- include('_header'); -%>
|
||||
|
||||
<div class="columns is-variable is-4-mobile is-4-tablet is-block-print" id="is-site-layout">
|
||||
|
||||
<div class="column is-block-print">
|
||||
<nav class="breadcrumb">
|
||||
<ul>
|
||||
<li><a href="<%= urlPrefix %>/dashboard">Home</a></li>
|
||||
<li>
|
||||
<a href="<%= urlPrefix %>/maps">
|
||||
<span class="icon is-small"><i class="far fa-map" aria-hidden="true"></i></span>
|
||||
<span><%= configFunctions.getProperty("aliases.maps") %></span>
|
||||
</a>
|
||||
</li>
|
||||
<% if (!isCreate) { %>
|
||||
<li><a href="<%= urlPrefix %>/maps/<%= map.mapId %>"><%= map.mapName || "(No Name)" %></a></li>
|
||||
<nav class="breadcrumb">
|
||||
<ul>
|
||||
<li><a href="<%= urlPrefix %>/dashboard">Home</a></li>
|
||||
<li>
|
||||
<a href="<%= urlPrefix %>/maps">
|
||||
<span class="icon is-small"><i class="far fa-map" aria-hidden="true"></i></span>
|
||||
<span><%= configFunctions.getProperty("aliases.maps") %></span>
|
||||
</a>
|
||||
</li>
|
||||
<% if (!isCreate) { %>
|
||||
<li><a href="<%= urlPrefix %>/maps/<%= map.mapId %>"><%= map.mapName || "(No Name)" %></a></li>
|
||||
<% } %>
|
||||
<li class="is-active">
|
||||
<a href="#" aria-current="page">
|
||||
<% if (isCreate) { %>
|
||||
Create a New <%= configFunctions.getProperty("aliases.map") %>
|
||||
<% } else { %>
|
||||
Update
|
||||
<% } %>
|
||||
<li class="is-active">
|
||||
<a href="#" aria-current="page">
|
||||
<% if (isCreate) { %>
|
||||
Create a New <%= configFunctions.getProperty("aliases.map") %>
|
||||
<% } else { %>
|
||||
Update
|
||||
<% } %>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<h1 class="title is-1">
|
||||
<% if (isCreate) { %>
|
||||
Create a New <%= configFunctions.getProperty("aliases.map") %>
|
||||
<% } else { %>
|
||||
Update <%= configFunctions.getProperty("aliases.map") %>
|
||||
<% } %>
|
||||
</h1>
|
||||
<h1 class="title is-1">
|
||||
<% if (isCreate) { %>
|
||||
Create a New <%= configFunctions.getProperty("aliases.map") %>
|
||||
<% } else { %>
|
||||
Update <%= configFunctions.getProperty("aliases.map") %>
|
||||
<% } %>
|
||||
</h1>
|
||||
|
||||
<form id="form--map">
|
||||
<input id="map--mapId" name="mapId" type="hidden" value="<%= map.mapId %>" />
|
||||
<form id="form--map">
|
||||
<input id="map--mapId" name="mapId" type="hidden" value="<%= map.mapId %>" />
|
||||
|
||||
<div class="columns">
|
||||
<div class="column">
|
||||
<div class="panel">
|
||||
<div class="panel-block is-block">
|
||||
<div class="columns">
|
||||
<div class="column">
|
||||
<div class="panel">
|
||||
<div class="panel-block is-block">
|
||||
<div class="field">
|
||||
<label class="label" for="map--mapName"><%= configFunctions.getProperty("aliases.map") %> Name</label>
|
||||
<div class="control">
|
||||
<input class="input" id="map--mapName" name="mapName" type="text" value="<%= map.mapName %>" maxlength="200" required />
|
||||
</div>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label class="label" for="map--mapDescription"><%= configFunctions.getProperty("aliases.map") %> Description</label>
|
||||
<div class="control">
|
||||
<textarea class="textarea" id="map--mapDescription" name="mapDescription"><%= map.mapDescription %></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="column">
|
||||
<div class="panel">
|
||||
<h2 class="panel-heading">Address</h2>
|
||||
<div class="panel-block is-block">
|
||||
<div class="field">
|
||||
<label class="label" for="map--mapAddress1">Address</label>
|
||||
<div class="control">
|
||||
<input class="input" id="map--mapAddress1" name="mapAddress1" type="text" value="<%= map.mapAddress1 %>" maxlength="50" placeholder="Line 1" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="field">
|
||||
<div class="control">
|
||||
<input class="input" id="map--mapAddress2" name="mapAddress2" type="text" value="<%= map.mapAddress2 %>" maxlength="50" placeholder="Line 2" aria-label="Address Line 2" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="columns">
|
||||
<div class="column is-8">
|
||||
<div class="field">
|
||||
<label class="label" for="map--mapName"><%= configFunctions.getProperty("aliases.map") %> Name</label>
|
||||
<label class="label" for="map--mapCity">City</label>
|
||||
<div class="control">
|
||||
<input class="input" id="map--mapName" name="mapName" type="text" value="<%= map.mapName %>" maxlength="200" required />
|
||||
<input class="input" id="map--mapCity" name="mapCity" value="<%= map.mapCity %>" maxlength="20" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="column">
|
||||
<div class="field">
|
||||
<label class="label" for="map--mapDescription"><%= configFunctions.getProperty("aliases.map") %> Description</label>
|
||||
<label class="label" for="map--mapProvince">Province</label>
|
||||
<div class="control">
|
||||
<textarea class="textarea" id="map--mapDescription" name="mapDescription"><%= map.mapDescription %></textarea>
|
||||
<input class="input" id="map--mapProvince" name="mapProvince" value="<%= map.mapProvince %>" maxlength="2" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="column">
|
||||
<div class="panel">
|
||||
<h2 class="panel-heading">Address</h2>
|
||||
<div class="panel-block is-block">
|
||||
<div class="columns">
|
||||
<div class="column">
|
||||
<div class="field">
|
||||
<label class="label" for="map--mapAddress1">Address</label>
|
||||
<label class="label" for="map--mapPostalCode">Postal Code</label>
|
||||
<div class="control">
|
||||
<input class="input" id="map--mapAddress1" name="mapAddress1" type="text" value="<%= map.mapAddress1 %>" maxlength="50" placeholder="Line 1" />
|
||||
<input class="input" id="map--mapPostalCode" name="mapPostalCode" value="<%= map.mapPostalCode %>" maxlength="7" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="column">
|
||||
<div class="field">
|
||||
<label class="label" for="map--mapPhoneNumber">Phone Number</label>
|
||||
<div class="control">
|
||||
<input class="input" id="map--mapAddress2" name="mapAddress2" type="text" value="<%= map.mapAddress2 %>" maxlength="50" placeholder="Line 2" aria-label="Address Line 2" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="columns">
|
||||
<div class="column is-8">
|
||||
<div class="field">
|
||||
<label class="label" for="map--mapCity">City</label>
|
||||
<div class="control">
|
||||
<input class="input" id="map--mapCity" name="mapCity" value="<%= map.mapCity %>" maxlength="20" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="column">
|
||||
<div class="field">
|
||||
<label class="label" for="map--mapProvince">Province</label>
|
||||
<div class="control">
|
||||
<input class="input" id="map--mapProvince" name="mapProvince" value="<%= map.mapProvince %>" maxlength="2" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="columns">
|
||||
<div class="column">
|
||||
<div class="field">
|
||||
<label class="label" for="map--mapPostalCode">Postal Code</label>
|
||||
<div class="control">
|
||||
<input class="input" id="map--mapPostalCode" name="mapPostalCode" value="<%= map.mapPostalCode %>" maxlength="7" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="column">
|
||||
<div class="field">
|
||||
<label class="label" for="map--mapPhoneNumber">Phone Number</label>
|
||||
<div class="control">
|
||||
<input class="input" id="map--mapPhoneNumber" name="mapPhoneNumber" value="<%= map.mapPhoneNumber %>" maxlength="30" />
|
||||
</div>
|
||||
</div>
|
||||
<input class="input" id="map--mapPhoneNumber" name="mapPhoneNumber" value="<%= map.mapPhoneNumber %>" maxlength="30" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="columns">
|
||||
<div class="column">
|
||||
<div class="panel">
|
||||
<h2 class="panel-heading">Geographic Location</h2>
|
||||
<div class="panel-block is-block">
|
||||
<div class="field">
|
||||
<label class="label" for="map--mapLatitude">Latitude</label>
|
||||
<div class="control">
|
||||
<input class="input" id="map--mapLatitude" name="mapLatitude" type="number" min="-90" max="90" step="0.00000001" value="<%= map.mapLatitude %>" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label class="label" for="map--mapLongitude">Longitude</label>
|
||||
<div class="control">
|
||||
<input class="input" id="map--mapLongitude" name="mapLongitude" type="number" min="-180" max="180" step="0.00000001" value="<%= map.mapLongitude %>" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="column">
|
||||
<div class="panel">
|
||||
<h2 class="panel-heading">Image</h2>
|
||||
<div class="panel-block is-block">
|
||||
<div class="field">
|
||||
<label class="label" for="map--mapSVG">SVG File</label>
|
||||
<div class="control">
|
||||
<div class="select is-fullwidth">
|
||||
<select id="map--mapSVG" name="mapSVG">
|
||||
<option value="">(Select a File)</option>
|
||||
<% for (const mapSVG of mapSVGs) { %>
|
||||
<option value="<%= mapSVG %>" <%= (map.mapSVG === mapSVG) ? " selected" : "" %>>
|
||||
<%= mapSVG %>
|
||||
</option>
|
||||
<% } %>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="has-text-right is-hidden-print">
|
||||
<button class="button is-primary" type="submit">
|
||||
<span class="icon is-small"><i class="fas fa-save" aria-hidden="true"></i></span>
|
||||
<span>
|
||||
<%= (isCreate ? "Create": "Update") %>
|
||||
<%= configFunctions.getProperty("aliases.map") %>
|
||||
</span>
|
||||
</button>
|
||||
<% if (!isCreate) { %>
|
||||
<div class="dropdown is-right ml-2">
|
||||
<div class="dropdown-trigger">
|
||||
<button class="button" type="button">
|
||||
<span>More Options</span>
|
||||
<span class="icon is-small">
|
||||
<i class="fas fa-angle-down" aria-hidden="true"></i>
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="dropdown-menu">
|
||||
<div class="dropdown-content">
|
||||
<a class="dropdown-item" id="button--deleteMap" href="#">
|
||||
<span class="icon is-small"><i class="fas fa-trash has-text-danger" aria-hidden="true"></i></span>
|
||||
<span>Delete <%= configFunctions.getProperty("aliases.map") %></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<% } %>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="columns">
|
||||
<div class="column">
|
||||
<div class="panel">
|
||||
<h2 class="panel-heading">Geographic Location</h2>
|
||||
<div class="panel-block is-block">
|
||||
<div class="field">
|
||||
<label class="label" for="map--mapLatitude">Latitude</label>
|
||||
<div class="control">
|
||||
<input class="input" id="map--mapLatitude" name="mapLatitude" type="number" min="-90" max="90" step="0.00000001" value="<%= map.mapLatitude %>" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label class="label" for="map--mapLongitude">Longitude</label>
|
||||
<div class="control">
|
||||
<input class="input" id="map--mapLongitude" name="mapLongitude" type="number" min="-180" max="180" step="0.00000001" value="<%= map.mapLongitude %>" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="column">
|
||||
<div class="panel">
|
||||
<h2 class="panel-heading">Image</h2>
|
||||
<div class="panel-block is-block">
|
||||
<div class="field">
|
||||
<label class="label" for="map--mapSVG">SVG File</label>
|
||||
<div class="control">
|
||||
<div class="select is-fullwidth">
|
||||
<select id="map--mapSVG" name="mapSVG">
|
||||
<option value="">(Select a File)</option>
|
||||
<% for (const mapSVG of mapSVGs) { %>
|
||||
<option value="<%= mapSVG %>" <%= (map.mapSVG === mapSVG) ? " selected" : "" %>>
|
||||
<%= mapSVG %>
|
||||
</option>
|
||||
<% } %>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="has-text-right is-hidden-print">
|
||||
<button class="button is-primary" type="submit">
|
||||
<span class="icon is-small"><i class="fas fa-save" aria-hidden="true"></i></span>
|
||||
<span>
|
||||
<%= (isCreate ? "Create": "Update") %>
|
||||
<%= configFunctions.getProperty("aliases.map") %>
|
||||
</span>
|
||||
</button>
|
||||
<% if (!isCreate) { %>
|
||||
<div class="dropdown is-right ml-2">
|
||||
<div class="dropdown-trigger">
|
||||
<button class="button" type="button">
|
||||
<span>More Options</span>
|
||||
<span class="icon is-small">
|
||||
<i class="fas fa-angle-down" aria-hidden="true"></i>
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="dropdown-menu">
|
||||
<div class="dropdown-content">
|
||||
<a class="dropdown-item" id="button--deleteMap" href="#">
|
||||
<span class="icon is-small"><i class="fas fa-trash has-text-danger" aria-hidden="true"></i></span>
|
||||
<span>Delete <%= configFunctions.getProperty("aliases.map") %></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<% } %>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<%- include('_footerA'); -%>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,115 +1,109 @@
|
|||
<%- include('_header'); -%>
|
||||
|
||||
<div class="columns is-variable is-4-mobile is-4-tablet is-block-print" id="is-site-layout">
|
||||
<nav class="breadcrumb">
|
||||
<ul>
|
||||
<li><a href="<%= urlPrefix %>/dashboard">Home</a></li>
|
||||
<li>
|
||||
<a href="<%= urlPrefix %>/maps">
|
||||
<span class="icon is-small"><i class="far fa-map" aria-hidden="true"></i></span>
|
||||
<span><%= configFunctions.getProperty("aliases.maps") %></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="is-active">
|
||||
<a href="#" aria-current="page">
|
||||
<%= map.mapName || "(No Name)" %>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<div class="column is-block-print">
|
||||
<nav class="breadcrumb">
|
||||
<ul>
|
||||
<li><a href="<%= urlPrefix %>/dashboard">Home</a></li>
|
||||
<li>
|
||||
<a href="<%= urlPrefix %>/maps">
|
||||
<span class="icon is-small"><i class="far fa-map" aria-hidden="true"></i></span>
|
||||
<span><%= configFunctions.getProperty("aliases.maps") %></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="is-active">
|
||||
<a href="#" aria-current="page">
|
||||
<%= map.mapName || "(No Name)" %>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<h1 class="title is-1">
|
||||
<%= map.mapName || "(No Name)" %>
|
||||
</h1>
|
||||
|
||||
<h1 class="title is-1">
|
||||
<%= map.mapName || "(No Name)" %>
|
||||
</h1>
|
||||
<% if (user.userProperties.canUpdate) { %>
|
||||
<div class="fixed-container is-fixed-bottom-right mx-4 my-4 has-text-right is-hidden-print">
|
||||
<a class="button is-circle is-primary has-tooltip-left" data-tooltip="Update <%= configFunctions.getProperty("aliases.map") %>" href="<%= urlPrefix %>/maps/<%= map.mapId %>/edit">
|
||||
<i class="fas fa-pencil-alt" aria-hidden="true"></i>
|
||||
<span class="sr-only">Update <%= configFunctions.getProperty("aliases.map") %></span>
|
||||
</a>
|
||||
</div>
|
||||
<% } %>
|
||||
|
||||
<% if (user.userProperties.canUpdate) { %>
|
||||
<div class="fixed-container is-fixed-bottom-right mx-4 my-4 has-text-right is-hidden-print">
|
||||
<a class="button is-circle is-primary has-tooltip-left" data-tooltip="Update <%= configFunctions.getProperty("aliases.map") %>" href="<%= urlPrefix %>/maps/<%= map.mapId %>/edit">
|
||||
<i class="fas fa-pencil-alt" aria-hidden="true"></i>
|
||||
<span class="sr-only">Update <%= configFunctions.getProperty("aliases.map") %></span>
|
||||
</a>
|
||||
<div class="panel">
|
||||
<div class="panel-block is-block">
|
||||
<div class="columns">
|
||||
<% if (map.mapDescription && map.mapDescription !== "") { %>
|
||||
<div class="column">
|
||||
<strong>Description</strong><br />
|
||||
<%= map.mapDescription %>
|
||||
</div>
|
||||
<% } %>
|
||||
<div class="column">
|
||||
<strong>Address</strong><br />
|
||||
<% if (map.mapAddress1 !== "") { %>
|
||||
<%= map.mapAddress1 %><br />
|
||||
<% } %>
|
||||
<% if (map.mapAddress2 !== "") { %>
|
||||
<%= map.mapAddress2 %><br />
|
||||
<% } %>
|
||||
<%= map.mapCity %>, <%= map.mapProvince %><br />
|
||||
<%= map.mapPostalCode %>
|
||||
</div>
|
||||
</div>
|
||||
<% if (map.mapPhoneNumber !== "") { %>
|
||||
<div class="column">
|
||||
<strong>Phone Number</strong><br />
|
||||
<%= map.mapPhoneNumber %>
|
||||
</div>
|
||||
<% } %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="columns">
|
||||
<div class="column">
|
||||
<div class="panel">
|
||||
<h2 class="panel-heading">Geographic Location</h2>
|
||||
<div class="panel-block is-block">
|
||||
<div class="columns">
|
||||
<% if (map.mapDescription && map.mapDescription !== "") { %>
|
||||
<div class="column">
|
||||
<strong>Description</strong><br />
|
||||
<%= map.mapDescription %>
|
||||
</div>
|
||||
<% } %>
|
||||
<div class="column">
|
||||
<strong>Address</strong><br />
|
||||
<% if (map.mapAddress1 !== "") { %>
|
||||
<%= map.mapAddress1 %><br />
|
||||
<% } %>
|
||||
<% if (map.mapAddress2 !== "") { %>
|
||||
<%= map.mapAddress2 %><br />
|
||||
<% } %>
|
||||
<%= map.mapCity %>, <%= map.mapProvince %><br />
|
||||
<%= map.mapPostalCode %>
|
||||
</div>
|
||||
</div>
|
||||
<% if (map.mapPhoneNumber !== "") { %>
|
||||
<div class="column">
|
||||
<strong>Phone Number</strong><br />
|
||||
<%= map.mapPhoneNumber %>
|
||||
<% if (map.mapLatitude && map.mapLongitude) { %>
|
||||
<div id="map--leaflet" data-map-latitude="<%= map.mapLatitude %>" data-map-longitude="<%= map.mapLongitude %>" style="height:300px"></div>
|
||||
<% } else { %>
|
||||
<div class="message is-info">
|
||||
<p class="message-body">There are no geographic coordinates associated with this <%= configFunctions.getProperty("aliases.map").toLowerCase() %>.</p>
|
||||
</div>
|
||||
<% } %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="columns">
|
||||
<div class="column">
|
||||
<div class="panel">
|
||||
<h2 class="panel-heading">Geographic Location</h2>
|
||||
<div class="panel-block is-block">
|
||||
<% if (map.mapLatitude && map.mapLongitude) { %>
|
||||
<div id="map--leaflet" data-map-latitude="<%= map.mapLatitude %>" data-map-longitude="<%= map.mapLongitude %>" style="height:300px"></div>
|
||||
<% } else { %>
|
||||
<div class="message is-info">
|
||||
<p class="message-body">There are no geographic coordinates associated with this <%= configFunctions.getProperty("aliases.map").toLowerCase() %>.</p>
|
||||
</div>
|
||||
<% } %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="column">
|
||||
<div class="panel">
|
||||
<h2 class="panel-heading">Image</h2>
|
||||
<div class="panel-block is-block">
|
||||
<% if (map.mapSVG) { %>
|
||||
<% const imageURL = urlPrefix + "/images/maps/" + map.mapSVG %>
|
||||
<a class="image" href="<%= urlPrefix %>/images/maps/<%= map.mapSVG %>" target="_blank">
|
||||
<%- include('../public/images/maps/' + map.mapSVG); -%>
|
||||
</a>
|
||||
<% } else { %>
|
||||
<div class="message is-info">
|
||||
<p class="message-body">There are no image associated with this <%= configFunctions.getProperty("aliases.map").toLowerCase() %>.</p>
|
||||
</div>
|
||||
<% } %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="column">
|
||||
<div class="panel">
|
||||
<h2 class="panel-heading">
|
||||
Related Searches
|
||||
</h2>
|
||||
<div class="panel-block">
|
||||
<a class="button is-link" href="<%= urlPrefix %>/lots?mapId=<%= map.mapId %>">
|
||||
<span class="icon is-small"><i class="fas fa-vector-square" aria-hidden="true"></i></span>
|
||||
<span class="mr-2"><%= configFunctions.getProperty("aliases.lots") %></span>
|
||||
<span class="tag"><%= map.lotCount %></span>
|
||||
</a>
|
||||
<h2 class="panel-heading">Image</h2>
|
||||
<div class="panel-block is-block">
|
||||
<% if (map.mapSVG) { %>
|
||||
<% const imageURL = urlPrefix + "/images/maps/" + map.mapSVG %>
|
||||
<a class="image" href="<%= urlPrefix %>/images/maps/<%= map.mapSVG %>" target="_blank">
|
||||
<%- include('../public/images/maps/' + map.mapSVG); -%>
|
||||
</a>
|
||||
<% } else { %>
|
||||
<div class="message is-info">
|
||||
<p class="message-body">There are no image associated with this <%= configFunctions.getProperty("aliases.map").toLowerCase() %>.</p>
|
||||
</div>
|
||||
<% } %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel">
|
||||
<h2 class="panel-heading">
|
||||
Related Searches
|
||||
</h2>
|
||||
<div class="panel-block">
|
||||
<a class="button is-link" href="<%= urlPrefix %>/lots?mapId=<%= map.mapId %>">
|
||||
<span class="icon is-small"><i class="fas fa-vector-square" aria-hidden="true"></i></span>
|
||||
<span class="mr-2"><%= configFunctions.getProperty("aliases.lots") %></span>
|
||||
<span class="tag"><%= map.lotCount %></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,27 @@
|
|||
<%- include('_header'); -%>
|
||||
|
||||
<nav class="breadcrumb">
|
||||
<ul>
|
||||
<li><a href="<%= urlPrefix %>/dashboard">Home</a></li>
|
||||
<li>
|
||||
<a href="<%= urlPrefix %>/workOrders">
|
||||
<span class="icon is-small"><i class="fas fa-hard-hat" aria-hidden="true"></i></span>
|
||||
<span>Work Orders</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="<%= urlPrefix %>/workOrders/<%= workOrder.workOrderId %>">
|
||||
Work Order #<%= workOrder.workOrderNumber || "(No Number)" %>
|
||||
</a>
|
||||
</li>
|
||||
<li class="is-active">
|
||||
<a href="#" aria-current="page">
|
||||
Update Work Order
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<%- include('_footerA'); -%>
|
||||
|
||||
<%- include('_footerB'); -%>
|
||||
|
|
@ -3,10 +3,12 @@
|
|||
<nav class="breadcrumb">
|
||||
<ul>
|
||||
<li><a href="<%= urlPrefix %>/dashboard">Home</a></li>
|
||||
<li class="is-active"><a href="#" aria-current="page">
|
||||
<li class="is-active">
|
||||
<a href="#" aria-current="page">
|
||||
<span class="icon is-small"><i class="fas fa-hard-hat" aria-hidden="true"></i></span>
|
||||
<span>Work Orders</span>
|
||||
</a></li>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,38 +1,197 @@
|
|||
<%- include('_header'); -%>
|
||||
|
||||
<div class="columns is-variable is-4-mobile is-4-tablet is-block-print" id="is-site-layout">
|
||||
<nav class="breadcrumb">
|
||||
<ul>
|
||||
<li><a href="<%= urlPrefix %>/dashboard">Home</a></li>
|
||||
<li>
|
||||
<a href="<%= urlPrefix %>/workOrders">
|
||||
<span class="icon is-small"><i class="fas fa-hard-hat" aria-hidden="true"></i></span>
|
||||
<span>Work Orders</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="is-active">
|
||||
<a href="#" aria-current="page">
|
||||
Work Order #<%= workOrder.workOrderNumber || "(No Number)" %>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<div class="column is-block-print">
|
||||
<nav class="breadcrumb">
|
||||
<h1 class="title is-1">
|
||||
Work Order #<%= workOrder.workOrderNumber || "(No Number)" %>
|
||||
</h1>
|
||||
|
||||
<% if (user.userProperties.canUpdate) { %>
|
||||
<div class="fixed-container is-fixed-bottom-right mx-4 my-4 has-text-right is-hidden-print">
|
||||
<a class="button is-circle is-primary has-tooltip-left" data-tooltip="Update Work Order" href="<%= urlPrefix %>/workOrders/<%= workOrder.workOrderId %>/edit">
|
||||
<i class="fas fa-pencil-alt" aria-hidden="true"></i>
|
||||
<span class="sr-only">Update Work Order</span>
|
||||
</a>
|
||||
</div>
|
||||
<% } %>
|
||||
|
||||
<div class="panel">
|
||||
<div class="panel-block is-block">
|
||||
<div class="columns">
|
||||
<div class="column">
|
||||
<p class="mb-2">
|
||||
<strong>Work Order Type</strong><br />
|
||||
<%= workOrder.workOrderType %>
|
||||
</p>
|
||||
<p>
|
||||
<strong>Description</strong><br />
|
||||
<% if (workOrder.workOrderDescription) { %>
|
||||
<%= workOrder.workOrderDescription %>
|
||||
<% } else { %>
|
||||
<span class="has-text-grey">(No Description)</span>
|
||||
<% } %>
|
||||
</p>
|
||||
</div>
|
||||
<div class="column">
|
||||
<p class="mb-2">
|
||||
<strong>Open Date</strong><br />
|
||||
<%= workOrder.workOrderOpenDateString %>
|
||||
</p>
|
||||
<p>
|
||||
<strong>Close Date</strong><br />
|
||||
<% if (workOrder.workOrderCloseDate) { %>
|
||||
<%= workOrder.workOrderCloseDateString %>
|
||||
<% } else { %>
|
||||
<span class="has-text-grey">(No Close Date)</span>
|
||||
<% } %>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel">
|
||||
<h2 class="panel-heading">Related <%= configFunctions.getProperty("aliases.lots") %></h2>
|
||||
<div class="panel-block is-block">
|
||||
<%
|
||||
const tabToSelect = (workOrder.workOrderLotOccupancies.length > 0 || workOrder.workOrderLots.length === 0 ? "lotOccupancies" : "lots");
|
||||
%>
|
||||
<div class="tabs is-boxed">
|
||||
<ul>
|
||||
<li><a href="<%= urlPrefix %>/dashboard">Home</a></li>
|
||||
<li>
|
||||
<a href="<%= urlPrefix %>/workOrders">
|
||||
<span class="icon is-small"><i class="fas fa-hard-hat" aria-hidden="true"></i></span>
|
||||
<span>Work Orders</span>
|
||||
<li class="<%= (tabToSelect === "lotOccupancies" ? "is-active" : "") %>">
|
||||
<a href="#relatedTab--lotOccupancies">
|
||||
<span><%= configFunctions.getProperty("aliases.occupancies") %></span>
|
||||
<span class="ml-2 tag"><%= workOrder.workOrderLotOccupancies.length %></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="is-active">
|
||||
<a href="#" aria-current="page">
|
||||
Work Order #<%= workOrder.workOrderNumber || "(No Number)" %>
|
||||
<li class="<%= (tabToSelect === "lots" ? "is-active" : "") %>">
|
||||
<a href="#relatedTab--lots">
|
||||
<span><%= configFunctions.getProperty("aliases.lots") %></span>
|
||||
<span class="ml-2 tag"><%= workOrder.workOrderLots.length %></span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<h1 class="title is-1">
|
||||
Work Order #<%= workOrder.workOrderNumber || "(No Number)" %>
|
||||
</h1>
|
||||
|
||||
<% if (user.userProperties.canUpdate) { %>
|
||||
<div class="fixed-container is-fixed-bottom-right mx-4 my-4 has-text-right is-hidden-print">
|
||||
<a class="button is-circle is-primary has-tooltip-left" data-tooltip="Update Work Order" href="<%= urlPrefix %>/workOrders/<%= workOrder.workOrderId %>/edit">
|
||||
<i class="fas fa-pencil-alt" aria-hidden="true"></i>
|
||||
<span class="sr-only">Update Work Order</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="tab-container">
|
||||
<div class="<%= (tabToSelect === "lotOccupancies" ? "" : "is-hidden") %>" id="relatedTab--lotOccupancies">
|
||||
<% if (workOrder.workOrderLotOccupancies.length === 0) { %>
|
||||
<div class="message is-info">
|
||||
<p class="message-body">
|
||||
There are no
|
||||
<%= configFunctions.getProperty("aliases.lot").toLowerCase() %>
|
||||
<%= configFunctions.getProperty("aliases.occupancy").toLowerCase() %>
|
||||
records associated with this work order.
|
||||
</p>
|
||||
</div>
|
||||
<% } else { %>
|
||||
<table class="table is-fullwidth is-striped is-hoverable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="has-width-1"></th>
|
||||
<th>Occupancy Type</th>
|
||||
<th><%= configFunctions.getProperty("aliases.lot") %></th>
|
||||
<th>Start Date</th>
|
||||
<th>End Date</th>
|
||||
<th><%= configFunctions.getProperty("aliases.occupants") %></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% for (const lotOccupancy of workOrder.workOrderLotOccupancies) { %>
|
||||
<% const isActive = !(lotOccupancy.occupancyEndDate && lotOccupancy.occupancyEndDate < currentDate); %>
|
||||
<tr>
|
||||
<td class="has-text-centered">
|
||||
<% if (isActive) { %>
|
||||
<i class="fas fa-play" title="Current <%= configFunctions.getProperty("aliases.occupancy") %>"></i>
|
||||
<% } else { %>
|
||||
<i class="fas fa-stop" title="Previous <%= configFunctions.getProperty("aliases.occupancy") %>"></i>
|
||||
<% } %>
|
||||
</td>
|
||||
<td>
|
||||
<a class="has-text-weight-bold"
|
||||
href="<%= urlPrefix %>/lotOccupancies/<%= lotOccupancy.lotOccupancyId %>">
|
||||
<%= lotOccupancy.occupancyType %>
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<% if (lotOccupancy.lotId) { %>
|
||||
<%= lotOccupancy.lotName %>
|
||||
<% } else { %>
|
||||
<span class="has-text-grey">(No <%= configFunctions.getProperty("aliases.lot") %>)</span>
|
||||
<% } %>
|
||||
</td>
|
||||
<td><%= lotOccupancy.occupancyStartDateString %></td>
|
||||
<td>
|
||||
<% if (lotOccupancy.occupancyEndDate) { %>
|
||||
<%= lotOccupancy.occupancyEndDateString %>
|
||||
<% } else { %>
|
||||
<span class="has-text-grey">(No End Date)</span>
|
||||
<% } %>
|
||||
</td>
|
||||
<td>
|
||||
<% if (lotOccupancy.lotOccupancyOccupants.length === 0) { %>
|
||||
<span class="has-text-grey">(No <%= configFunctions.getProperty("aliases.occupants") %>)</span>
|
||||
<% } else { %>
|
||||
<% const occupant = lotOccupancy.lotOccupancyOccupants[0]; %>
|
||||
<%= occupant.occupantName %>
|
||||
<%= (lotOccupancy.lotOccupancyOccupants.length > 1 ? " plus " + (lotOccupancy.lotOccupancyOccupants.length - 1) : "") %>
|
||||
<% } %>
|
||||
</td>
|
||||
</tr>
|
||||
<% } %>
|
||||
</tbody>
|
||||
</table>
|
||||
<% } %>
|
||||
</div>
|
||||
<% } %>
|
||||
|
||||
<div class="<%= (tabToSelect === "lots" ? "" : "is-hidden") %>" id="relatedTab--lots">
|
||||
<% if (workOrder.workOrderLots.length === 0) { %>
|
||||
<div class="message is-info">
|
||||
<p class="message-body">
|
||||
There are no
|
||||
<%= configFunctions.getProperty("aliases.lots").toLowerCase() %>
|
||||
records associated with this work order.
|
||||
</p>
|
||||
</div>
|
||||
<% } else { %>
|
||||
<table class="table is-fullwidth is-striped is-hoverable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><%= configFunctions.getProperty("aliases.lot") %></th>
|
||||
<th><%= configFunctions.getProperty("aliases.map") %></th>
|
||||
<th><%= configFunctions.getProperty("aliases.lot") %> Type</th>
|
||||
<th>Status</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% for (const lot of workOrder.workOrderLots) { %>
|
||||
<tr>
|
||||
<td>
|
||||
<a class="has-text-weight-bold" href="<%= urlPrefix %>/lots/<%= lot.lotId %>"><%= lot.lotName %></a>
|
||||
</td>
|
||||
<td><%= lot.mapName %></td>
|
||||
<td><%= lot.lotType %></td>
|
||||
<td><%= lot.lotStatus %></td>
|
||||
</tr>
|
||||
<% } %>
|
||||
</tbody>
|
||||
</table>
|
||||
<% } %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue