sunrise-cms/views/burialSite-edit.ejs

473 lines
21 KiB
Plaintext

<%- include('_header'); -%>
<nav class="breadcrumb">
<ul>
<li><a href="<%= urlPrefix %>/dashboard">Home</a></li>
<li>
<a href="<%= urlPrefix %>/lots">
<span class="icon is-small"><i class="fas fa-vector-square" aria-hidden="true"></i></span>
<span><%= configFunctions.getConfigProperty("aliases.lots") %></span>
</a>
</li>
<% if (!isCreate) { %>
<li>
<a href="<%= urlPrefix %>/lots/<%= lot.lotId %>" accesskey="v">
<%= lot.lotName %>
</a>
</li>
<% } %>
<li class="is-active">
<a href="#" aria-current="page">
<% if (isCreate) { %>
Create a New <%= configFunctions.getConfigProperty("aliases.lot") %>
<% } else { %>
Update <%= configFunctions.getConfigProperty("aliases.lot") %>
<% } %>
</a>
</li>
</ul>
</nav>
<h1 class="title is-1">
<% if (isCreate) { %>
Create a New <%= configFunctions.getConfigProperty("aliases.lot") %>
<% } else { %>
<%= lot.lotName %>
<% } %>
</h1>
<div class="level is-fixed-bottom is-mobile has-background-white has-shadow is-hidden-print">
<div class="level-left">
<% if (!isCreate) { %>
<span class="level-item has-text-weight-bold">
<%= lot.lotName %>
</span>
<% } %>
</div>
<div class="level-right">
<% if (isCreate) { %>
<div class="level-item">
<a class="button is-danger is-inverted" href="<%= urlPrefix %>/lots">
Cancel
</a>
</div>
<% } else { %>
<div class="level-item">
<div class="dropdown is-right is-up">
<div class="dropdown-trigger">
<button class="button" type="button">
<span>More Options</span>
<span class="icon is-small">
<i class="fas fa-angle-up" aria-hidden="true"></i>
</span>
</button>
</div>
<div class="dropdown-menu">
<div class="dropdown-content">
<a class="dropdown-item" id="button--deleteLot" href="#">
<span class="icon is-small"><i class="fas fa-trash has-text-danger" aria-hidden="true"></i></span>
<span>Delete <%= configFunctions.getConfigProperty("aliases.lot") %></span>
</a>
</div>
</div>
</div>
</div>
<% } %>
<div class="level-item">
<button class="button is-light is-primary" type="submit" form="form--lot">
<span class="icon is-small"><i class="fas fa-save" aria-hidden="true"></i></span>
<span>
<%= (isCreate ? "Create" : "Update") %>
<%= configFunctions.getConfigProperty("aliases.lot") %>
</span>
</button>
</div>
</div>
</div>
<form class="mb-5" id="form--lot">
<input id="lot--lotId" name="lotId" type="hidden" value="<%= isCreate ? "" : lot.lotId %>" />
<div class="panel">
<div class="panel-block is-block">
<div class="columns">
<div class="column">
<div class="field">
<label class="label" for="lot--lotName">
<%= configFunctions.getConfigProperty("aliases.lot") %> Name
</label>
<div class="control">
<input class="input" id="lot--lotName" name="lotName" value="<%= lot.lotName %>"
<% if (configFunctions.getConfigProperty("settings.lot.lotNamePattern")) { %>
pattern="<%= configFunctions.getConfigProperty("settings.lot.lotNamePattern").source %>"
<% } %>
maxlength="100"
required
accesskey="f"
<%= (isCreate ? " autofocus" : "") %> />
</div>
<% if (configFunctions.getConfigProperty("settings.lot.lotNameHelpText")) { %>
<p class="help">
<%- configFunctions.getConfigProperty("settings.lot.lotNameHelpText").replace(/\n/g, "<br />") %>
</p>
<% } %>
</div>
</div>
<div class="column">
<label class="label" for="lot--burialSiteTypeId">
<%= configFunctions.getConfigProperty("aliases.lot") %> Type
</label>
<div class="field has-addons">
<div class="control is-expanded">
<div class="select is-fullwidth">
<select
<% if (!isCreate) { %>
class="is-readonly"
<% } %>
id="lot--burialSiteTypeId" name="burialSiteTypeId" required>
<% if (isCreate) { %>
<option value="">(No Type)</option>
<% } %>
<% let typeIsFound = false; %>
<% for (const lotType of lotTypes) { %>
<%
if (lot.burialSiteTypeId === lotType.burialSiteTypeId) {
typeIsFound = true;
}
%>
<option value="<%= lotType.burialSiteTypeId %>"
<%= (lot.burialSiteTypeId === lotType.burialSiteTypeId ? " selected" : "") %>
<%= (!isCreate && lot.burialSiteTypeId !== lotType.burialSiteTypeId ? " disabled" : "") %>>
<%= lotType.lotType %>
</option>
<% } %>
<% if (lot.burialSiteTypeId && !typeIsFound) { %>
<option value="<%= lot.burialSiteTypeId %>" selected>
<%= lot.lotType %>
</option>
<% } %>
</select>
</div>
</div>
<div class="control">
<button class="button is-unlock-field-button" data-tooltip="Unlock Field" type="button" aria-label="Unlock Field">
<i class="fas fa-unlock" aria-hidden="true"></i>
</button>
</div>
</div>
<label class="label" for="lot--burialSiteStatusId">
<%= configFunctions.getConfigProperty("aliases.lot") %> Status
</label>
<div class="field">
<div class="control">
<div class="select is-fullwidth">
<select id="lot--burialSiteStatusId" name="burialSiteStatusId">
<option value="">(No Status)</option>
<% let statusIsFound = false; %>
<% for (const lotStatus of lotStatuses) { %>
<%
if (lot.burialSiteStatusId === lotStatus.burialSiteStatusId) {
statusIsFound = true;
}
%>
<option value="<%= lotStatus.burialSiteStatusId %>"
<%= (lot.burialSiteStatusId === lotStatus.burialSiteStatusId ? " selected" : "") %>>
<%= lotStatus.lotStatus %>
</option>
<% } %>
<% if (lot.burialSiteStatusId && !statusIsFound) { %>
<option value="<%= lot.burialSiteStatusId %>" selected>
<%= lot.lotStatus %>
</option>
<% } %>
</select>
</div>
</div>
</div>
</div>
<div class="column">
<div id="container--lotFields">
<% if (isCreate) { %>
<div class="message is-info">
<p class="message-body">
Select the <%= configFunctions.getConfigProperty("aliases.lot").toLowerCase() %> type to load the available fields.
</p>
</div>
<% } else if (lot.lotFields.length === 0) { %>
<div class="message is-info">
<p class="message-body">
The current <%= configFunctions.getConfigProperty("aliases.lot").toLowerCase() %> type has no additional fields.
</p>
</div>
<% } else { %>
<% let lotTypeFieldIds = ""; %>
<% for (const lotField of lot.lotFields) { %>
<% lotTypeFieldIds += "," + lotField.lotTypeFieldId; %>
<div class="field">
<label class="label" for="lot--lotFieldValue_<%= lotField.lotTypeFieldId %>">
<%= lotField.lotTypeField %>
</label>
<div class="control">
<% if (lotField.fieldType === 'select' || (lotField.lotTypeFieldValues ?? '') !== "") { %>
<%
const fieldValues = lotField.lotTypeFieldValues.split("\n");
let valueFound = false;
%>
<div class="select is-fullwidth">
<select id="lot--lotFieldValue_<%= lotField.lotTypeFieldId %>"
name="lotFieldValue_<%= lotField.lotTypeFieldId %>">
<% if (!lotField.isRequired || lotField.lotFieldValue === "") { %>
<option value="">(Not Set)</option>
<% } %>
<% for (const fieldValue of fieldValues) { %>
<%
if (fieldValue === lotField.lotFieldValue) {
valueFound = true;
}
%>
<option value="<%= fieldValue %>"
<%= (fieldValue === lotField.lotFieldValue ? " selected" : "") %>>
<%= fieldValue %>
</option>
<% } %>
<% if (!valueFound && lotField.lotFieldValue !== "") { %>
<option value="<%= lotField.lotFieldValue %>" selected>
<%= lotField.lotFieldValue %>
</option>
<% } %>
</select>
</div>
<% } else { %>
<input class="input"
id="lot--lotFieldValue_<%= lotField.lotTypeFieldId %>"
name="lotFieldValue_<%= lotField.lotTypeFieldId %>"
type="<%= lotField.fieldType %>"
value="<%= lotField.lotFieldValue %>"
<% if (lotField.pattern !== "") { %>
pattern="<%= lotField.pattern %>"
<% } %>
minlength="<%= lotField.minimumLength %>"
maxlength="<%= lotField.maximumLength %>"
<%= lotField.isRequired ? " required" : "" %> />
<% } %>
</div>
</div>
<% } %>
<input id="lot--lotTypeFieldIds" name="lotTypeFieldIds" type="hidden" value="<%= lotTypeFieldIds.slice(1) %>" />
<% } %>
</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="lot--lotLatitude">Latitude</label>
<div class="control">
<input class="input" id="lot--lotLatitude" name="lotLatitude" type="number" min="-90" max="90" step="0.00000001" value="<%= lot.lotLatitude %>" onwheel="return false" />
</div>
</div>
<div class="field">
<label class="label" for="lot--lotLongitude">Longitude</label>
<div class="control">
<input class="input" id="lot--lotLongitude" name="lotLongitude" type="number" min="-180" max="180" step="0.00000001" value="<%= lot.lotLongitude %>" onwheel="return false" />
</div>
</div>
</div>
</div>
</div>
<div class="column">
<div class="panel">
<h2 class="panel-heading">Image</h2>
<div class="panel-block is-block">
<label class="label" for="lot--mapId"><%= configFunctions.getConfigProperty("aliases.map") %></label>
<div class="field has-addons">
<div class="control is-expanded">
<div class="select is-fullwidth">
<select
<% if (!isCreate) { %>
class="is-readonly"
<% } %>
id="lot--mapId" name="mapId">
<option value="" <%= (!isCreate && lot.mapId ? " disabled" : "") %>>
(No <%= configFunctions.getConfigProperty("aliases.map") %> Selected)
</option>
<% let mapIsFound = false; %>
<% for (const map of maps) { %>
<%
if (lot.mapId === map.mapId) {
mapIsFound = true;
}
%>
<option value="<%= map.mapId %>"
<%= (lot.mapId === map.mapId ? " selected" : "") %>
<%= (!isCreate && lot.mapId !== map.mapId ? " disabled" : "") %>>
<%= map.mapName || "(No Name)" %>
</option>
<% } %>
<% if (lot.mapId && !mapIsFound) { %>
<option value="<%= lot.mapId %>" selected>
<%= lot.mapName %>
</option>
<% } %>
</select>
</div>
</div>
<div class="control">
<button class="button is-unlock-field-button" data-tooltip="Unlock Field" type="button" aria-label="Unlock Field">
<i class="fas fa-unlock" aria-hidden="true"></i>
</button>
</div>
</div>
<div class="field">
<label class="label" for="lot--mapKey">
<%= configFunctions.getConfigProperty("aliases.map") %> SVG ID
</label>
<div class="control">
<input class="input" id="lot--mapKey" name="mapKey" value="<%= lot.mapKey %>" maxlength="100" pattern="^[\d\w-]*$" />
</div>
</div>
</div>
</div>
</div>
</div>
</form>
<% if (isCreate) { %>
<div class="message is-info">
<p class="message-body">
Additional options will be available after the record has been created.
</p>
</div>
<% } else { %>
<div class="panel">
<div class="panel-heading">
<div class="level is-mobile">
<div class="level-left">
<div class="level-item">
<h2 class="has-text-weight-bold is-size-5">
Comments
</h2>
</div>
</div>
<div class="level-right">
<div class="level-item">
<button class="button is-small is-success" id="lotComments--add" type="button">
<span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span>
<span>Add a Comment</span>
</button>
</div>
</div>
</div>
</div>
<div class="panel-block is-block" id="container--lotComments"></div>
</div>
<div class="panel">
<div class="panel-heading">
<div class="level is-mobile">
<div class="level-left">
<div class="level-item">
<h2 class="has-text-weight-bold is-size-5">
<%= configFunctions.getConfigProperty("aliases.occupancies") %>
<span class="tag"><%= lot.lotOccupancies.length %></span>
</h2>
</div>
</div>
<div class="level-right">
<div class="level-item">
<a class="button is-success is-small has-text-weight-normal" href="<%= urlPrefix %>/lotOccupancies/new?lotId=<%= lot.lotId %>">
<span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span>
<span>Create New <%= configFunctions.getConfigProperty("aliases.occupancy") %></span>
</a>
</div>
</div>
</div>
</div>
<div class="panel-block is-block">
<% if (lot.lotOccupancies.length === 0) { %>
<div class="message is-info">
<p class="message-body">
There are no <%= configFunctions.getConfigProperty("aliases.occupancy").toLowerCase() %> records
asscociated with this <%= configFunctions.getConfigProperty("aliases.lot") %>.
</p>
</div>
<% } else { %>
<table class="table is-fullwidth is-striped is-hoverable">
<thead>
<tr>
<th class="has-width-10">&nbsp;</th>
<th><%= configFunctions.getConfigProperty("aliases.occupancy") %> Type</th>
<th><%= configFunctions.getConfigProperty("aliases.occupancyStartDate") %></th>
<th>End Date</th>
<th><%= configFunctions.getConfigProperty("aliases.occupants") %></th>
</tr>
</thead>
<tbody>
<% const currentDate = dateTimeFunctions.dateToInteger(new Date()); %>
<% for (const lotOccupancy of lot.lotOccupancies) { %>
<% const isActive = !(lotOccupancy.occupancyEndDate && lotOccupancy.occupancyEndDate < currentDate); %>
<tr>
<td class="has-text-centered">
<% if (isActive) { %>
<i class="fas fa-play" title="Current <%= configFunctions.getConfigProperty("aliases.occupancy") %>"></i>
<% } else { %>
<i class="fas fa-stop" title="Previous <%= configFunctions.getConfigProperty("aliases.occupancy") %>"></i>
<% } %>
</td>
<td>
<a class="has-text-weight-bold" href="<%= urlPrefix %>/lotOccupancies/<%= lotOccupancy.lotOccupancyId %>">
<%= lotOccupancy.occupancyType %>
</a><br />
<span class="is-size-7">
#<%= lotOccupancy.lotOccupancyId %>
</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.getConfigProperty("aliases.occupants") %>)</span>
<% } else { %>
<% for (const occupant of lotOccupancy.lotOccupancyOccupants) { %>
<span class="has-tooltip-left" data-tooltip="<%= occupant.lotOccupantType %>">
<i class="fas fa-fw fa-<%= occupant.fontAwesomeIconClass || 'user' %>" aria-hidden="true"></i>
<%= occupant.occupantName + ' ' + occupant.occupantFamilyName %>
</span><br />
<% } %>
<% } %>
</td>
</tr>
<% } %>
</tbody>
</table>
<% } %>
</div>
</div>
<% } %>
<%- include('_footerA'); -%>
<% if (!isCreate) { %>
<script>
exports.lotComments = <%- JSON.stringify(lot.lotComments) %>;
</script>
<% } %>
<script src="<%= urlPrefix %>/javascripts/lotEdit.js"></script>
<%- include('_footerB'); -%>