change save button when unsaved changes

deepsource-autofix-76c6eb20
Dan Gowans 2023-02-27 15:23:53 -05:00
parent 5eb925c2cd
commit 81a6c9de6b
18 changed files with 620 additions and 411 deletions

View File

@ -9,13 +9,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
const isCreate = lotId === '';
// Main form
let refreshAfterSave = isCreate;
function setUnsavedChanges() {
var _a;
los.setUnsavedChanges();
(_a = document
.querySelector("button[type='submit'][form='form--lot']")) === null || _a === void 0 ? void 0 : _a.classList.remove('is-light');
}
function clearUnsavedChanges() {
var _a;
los.clearUnsavedChanges();
(_a = document
.querySelector("button[type='submit'][form='form--lot']")) === null || _a === void 0 ? void 0 : _a.classList.add('is-light');
}
const formElement = document.querySelector('#form--lot');
function updateLot(formEvent) {
formEvent.preventDefault();
cityssm.postJSON(los.urlPrefix + '/lots/' + (isCreate ? 'doCreateLot' : 'doUpdateLot'), formElement, (responseJSON) => {
cityssm.postJSON(los.urlPrefix + '/lots/' + (isCreate ? 'doCreateLot' : 'doUpdateLot'), formElement, (rawResponseJSON) => {
var _a;
const responseJSON = rawResponseJSON;
if (responseJSON.success) {
los.clearUnsavedChanges();
clearUnsavedChanges();
if (isCreate || refreshAfterSave) {
window.location.href = los.getLotURL(responseJSON.lotId, true, true);
}
@ -38,7 +51,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
formElement.addEventListener('submit', updateLot);
const formInputElements = formElement.querySelectorAll('input, select');
for (const formInputElement of formInputElements) {
formInputElement.addEventListener('change', los.setUnsavedChanges);
formInputElement.addEventListener('change', setUnsavedChanges);
}
los.initializeUnlockFieldButtons(formElement);
(_a = document
@ -89,8 +102,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
var _a;
if (responseJSON.lotTypeFields.length === 0) {
lotFieldsContainerElement.innerHTML = `<div class="message is-info">
<p class="message-body">There are no additional fields for this ${los.escapedAliases.lot} type.</p>
</div>`;
<p class="message-body">There are no additional fields for this ${los.escapedAliases.lot} type.</p>
</div>`;
return;
}
lotFieldsContainerElement.innerHTML = '';

View File

@ -20,6 +20,20 @@ declare const bulmaJS: BulmaJS
let refreshAfterSave = isCreate
function setUnsavedChanges(): void {
los.setUnsavedChanges()
document
.querySelector("button[type='submit'][form='form--lot']")
?.classList.remove('is-light')
}
function clearUnsavedChanges(): void {
los.clearUnsavedChanges()
document
.querySelector("button[type='submit'][form='form--lot']")
?.classList.add('is-light')
}
const formElement = document.querySelector('#form--lot') as HTMLFormElement
function updateLot(formEvent: SubmitEvent): void {
@ -28,13 +42,15 @@ declare const bulmaJS: BulmaJS
cityssm.postJSON(
los.urlPrefix + '/lots/' + (isCreate ? 'doCreateLot' : 'doUpdateLot'),
formElement,
(responseJSON: {
success: boolean
lotId?: number
errorMessage?: string
}) => {
(rawResponseJSON) => {
const responseJSON = rawResponseJSON as {
success: boolean
lotId?: number
errorMessage?: string
}
if (responseJSON.success) {
los.clearUnsavedChanges()
clearUnsavedChanges()
if (isCreate || refreshAfterSave) {
window.location.href = los.getLotURL(responseJSON.lotId, true, true)
@ -60,7 +76,7 @@ declare const bulmaJS: BulmaJS
const formInputElements = formElement.querySelectorAll('input, select')
for (const formInputElement of formInputElements) {
formInputElement.addEventListener('change', los.setUnsavedChanges)
formInputElement.addEventListener('change', setUnsavedChanges)
}
los.initializeUnlockFieldButtons(formElement)
@ -130,8 +146,8 @@ declare const bulmaJS: BulmaJS
(responseJSON: { lotTypeFields: recordTypes.LotTypeField[] }) => {
if (responseJSON.lotTypeFields.length === 0) {
lotFieldsContainerElement.innerHTML = `<div class="message is-info">
<p class="message-body">There are no additional fields for this ${los.escapedAliases.lot} type.</p>
</div>`
<p class="message-body">There are no additional fields for this ${los.escapedAliases.lot} type.</p>
</div>`
return
}

View File

@ -10,15 +10,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
* Main form
*/
let refreshAfterSave = isCreate;
function setUnsavedChanges() {
var _a;
los.setUnsavedChanges();
(_a = document
.querySelector("button[type='submit'][form='form--lotOccupancy']")) === null || _a === void 0 ? void 0 : _a.classList.remove('is-light');
}
function clearUnsavedChanges() {
var _a;
los.clearUnsavedChanges();
(_a = document
.querySelector("button[type='submit'][form='form--lotOccupancy']")) === null || _a === void 0 ? void 0 : _a.classList.add('is-light');
}
const formElement = document.querySelector('#form--lotOccupancy');
formElement.addEventListener('submit', (formEvent) => {
formEvent.preventDefault();
cityssm.postJSON(los.urlPrefix +
'/lotOccupancies/' +
(isCreate ? 'doCreateLotOccupancy' : 'doUpdateLotOccupancy'), formElement, (responseJSON) => {
(isCreate ? 'doCreateLotOccupancy' : 'doUpdateLotOccupancy'), formElement, (rawResponseJSON) => {
var _a;
const responseJSON = rawResponseJSON;
if (responseJSON.success) {
los.clearUnsavedChanges();
clearUnsavedChanges();
if (isCreate || refreshAfterSave) {
window.location.href = los.getLotOccupancyURL(responseJSON.lotOccupancyId, true, true);
}
@ -40,15 +53,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
});
const formInputElements = formElement.querySelectorAll('input, select');
for (const formInputElement of formInputElements) {
formInputElement.addEventListener('change', los.setUnsavedChanges);
formInputElement.addEventListener('change', setUnsavedChanges);
}
function doCopy() {
cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doCopyLotOccupancy', {
lotOccupancyId
}, (responseJSON) => {
}, (rawResponseJSON) => {
var _a;
const responseJSON = rawResponseJSON;
if (responseJSON.success) {
cityssm.disableNavBlocker();
clearUnsavedChanges();
window.location.href = los.getLotOccupancyURL(responseJSON.lotOccupancyId, true);
}
else {
@ -88,10 +102,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
function doDelete() {
cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doDeleteLotOccupancy', {
lotOccupancyId
}, (responseJSON) => {
}, (rawResponseJSON) => {
var _a;
const responseJSON = rawResponseJSON;
if (responseJSON.success) {
cityssm.disableNavBlocker();
clearUnsavedChanges();
window.location.href = los.getLotOccupancyURL();
}
else {
@ -119,7 +134,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
let createCloseModalFunction;
function doCreate(formEvent) {
formEvent.preventDefault();
cityssm.postJSON(los.urlPrefix + '/workOrders/doCreateWorkOrder', formEvent.currentTarget, (responseJSON) => {
cityssm.postJSON(los.urlPrefix + '/workOrders/doCreateWorkOrder', formEvent.currentTarget, (rawResponseJSON) => {
const responseJSON = rawResponseJSON;
if (responseJSON.success) {
createCloseModalFunction();
bulmaJS.confirm({
@ -188,8 +204,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doGetOccupancyTypeFields', {
occupancyTypeId: occupancyTypeIdElement.value
}, (responseJSON) => {
}, (rawResponseJSON) => {
var _a, _b;
const responseJSON = rawResponseJSON;
if (responseJSON.occupancyTypeFields.length === 0) {
lotOccupancyFieldsContainerElement.innerHTML = `<div class="message is-info">
<p class="message-body">There are no additional fields for this ${los.escapedAliases.occupancy} type.</p>
@ -297,8 +314,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
function searchLots() {
lotSelectResultsElement.innerHTML =
los.getLoadingParagraphHTML('Searching...');
cityssm.postJSON(los.urlPrefix + '/lots/doSearchLots', lotSelectFormElement, (responseJSON) => {
cityssm.postJSON(los.urlPrefix + '/lots/doSearchLots', lotSelectFormElement, (rawResponseJSON) => {
var _a, _b;
const responseJSON = rawResponseJSON;
if (responseJSON.count === 0) {
lotSelectResultsElement.innerHTML = `<div class="message is-info">
<p class="message-body">No results.</p>
@ -340,8 +358,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
function createLotAndSelect(submitEvent) {
submitEvent.preventDefault();
const lotName = lotSelectModalElement.querySelector('#lotCreate--lotName').value;
cityssm.postJSON(los.urlPrefix + '/lots/doCreateLot', submitEvent.currentTarget, (responseJSON) => {
cityssm.postJSON(los.urlPrefix + '/lots/doCreateLot', submitEvent.currentTarget, (rawResponseJSON) => {
var _a;
const responseJSON = rawResponseJSON;
if (responseJSON.success) {
renderSelectedLotAndClose(responseJSON.lotId, lotName);
}

View File

@ -10,15 +10,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
* Main form
*/
let refreshAfterSave = isCreate;
function setUnsavedChanges() {
var _a;
los.setUnsavedChanges();
(_a = document
.querySelector("button[type='submit'][form='form--lotOccupancy']")) === null || _a === void 0 ? void 0 : _a.classList.remove('is-light');
}
function clearUnsavedChanges() {
var _a;
los.clearUnsavedChanges();
(_a = document
.querySelector("button[type='submit'][form='form--lotOccupancy']")) === null || _a === void 0 ? void 0 : _a.classList.add('is-light');
}
const formElement = document.querySelector('#form--lotOccupancy');
formElement.addEventListener('submit', (formEvent) => {
formEvent.preventDefault();
cityssm.postJSON(los.urlPrefix +
'/lotOccupancies/' +
(isCreate ? 'doCreateLotOccupancy' : 'doUpdateLotOccupancy'), formElement, (responseJSON) => {
(isCreate ? 'doCreateLotOccupancy' : 'doUpdateLotOccupancy'), formElement, (rawResponseJSON) => {
var _a;
const responseJSON = rawResponseJSON;
if (responseJSON.success) {
los.clearUnsavedChanges();
clearUnsavedChanges();
if (isCreate || refreshAfterSave) {
window.location.href = los.getLotOccupancyURL(responseJSON.lotOccupancyId, true, true);
}
@ -40,15 +53,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
});
const formInputElements = formElement.querySelectorAll('input, select');
for (const formInputElement of formInputElements) {
formInputElement.addEventListener('change', los.setUnsavedChanges);
formInputElement.addEventListener('change', setUnsavedChanges);
}
function doCopy() {
cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doCopyLotOccupancy', {
lotOccupancyId
}, (responseJSON) => {
}, (rawResponseJSON) => {
var _a;
const responseJSON = rawResponseJSON;
if (responseJSON.success) {
cityssm.disableNavBlocker();
clearUnsavedChanges();
window.location.href = los.getLotOccupancyURL(responseJSON.lotOccupancyId, true);
}
else {
@ -88,10 +102,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
function doDelete() {
cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doDeleteLotOccupancy', {
lotOccupancyId
}, (responseJSON) => {
}, (rawResponseJSON) => {
var _a;
const responseJSON = rawResponseJSON;
if (responseJSON.success) {
cityssm.disableNavBlocker();
clearUnsavedChanges();
window.location.href = los.getLotOccupancyURL();
}
else {
@ -119,7 +134,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
let createCloseModalFunction;
function doCreate(formEvent) {
formEvent.preventDefault();
cityssm.postJSON(los.urlPrefix + '/workOrders/doCreateWorkOrder', formEvent.currentTarget, (responseJSON) => {
cityssm.postJSON(los.urlPrefix + '/workOrders/doCreateWorkOrder', formEvent.currentTarget, (rawResponseJSON) => {
const responseJSON = rawResponseJSON;
if (responseJSON.success) {
createCloseModalFunction();
bulmaJS.confirm({
@ -188,8 +204,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doGetOccupancyTypeFields', {
occupancyTypeId: occupancyTypeIdElement.value
}, (responseJSON) => {
}, (rawResponseJSON) => {
var _a, _b;
const responseJSON = rawResponseJSON;
if (responseJSON.occupancyTypeFields.length === 0) {
lotOccupancyFieldsContainerElement.innerHTML = `<div class="message is-info">
<p class="message-body">There are no additional fields for this ${los.escapedAliases.occupancy} type.</p>
@ -297,8 +314,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
function searchLots() {
lotSelectResultsElement.innerHTML =
los.getLoadingParagraphHTML('Searching...');
cityssm.postJSON(los.urlPrefix + '/lots/doSearchLots', lotSelectFormElement, (responseJSON) => {
cityssm.postJSON(los.urlPrefix + '/lots/doSearchLots', lotSelectFormElement, (rawResponseJSON) => {
var _a, _b;
const responseJSON = rawResponseJSON;
if (responseJSON.count === 0) {
lotSelectResultsElement.innerHTML = `<div class="message is-info">
<p class="message-body">No results.</p>
@ -340,8 +358,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
function createLotAndSelect(submitEvent) {
submitEvent.preventDefault();
const lotName = lotSelectModalElement.querySelector('#lotCreate--lotName').value;
cityssm.postJSON(los.urlPrefix + '/lots/doCreateLot', submitEvent.currentTarget, (responseJSON) => {
cityssm.postJSON(los.urlPrefix + '/lots/doCreateLot', submitEvent.currentTarget, (rawResponseJSON) => {
var _a;
const responseJSON = rawResponseJSON;
if (responseJSON.success) {
renderSelectedLotAndClose(responseJSON.lotId, lotName);
}

View File

@ -23,6 +23,20 @@ declare const bulmaJS: BulmaJS
let refreshAfterSave = isCreate
function setUnsavedChanges(): void {
los.setUnsavedChanges()
document
.querySelector("button[type='submit'][form='form--lotOccupancy']")
?.classList.remove('is-light')
}
function clearUnsavedChanges(): void {
los.clearUnsavedChanges()
document
.querySelector("button[type='submit'][form='form--lotOccupancy']")
?.classList.add('is-light')
}
const formElement = document.querySelector(
'#form--lotOccupancy'
) as HTMLFormElement
@ -35,13 +49,15 @@ declare const bulmaJS: BulmaJS
'/lotOccupancies/' +
(isCreate ? 'doCreateLotOccupancy' : 'doUpdateLotOccupancy'),
formElement,
(responseJSON: {
success: boolean
lotOccupancyId?: number
errorMessage?: string
}) => {
(rawResponseJSON) => {
const responseJSON = rawResponseJSON as {
success: boolean
lotOccupancyId?: number
errorMessage?: string
}
if (responseJSON.success) {
los.clearUnsavedChanges()
clearUnsavedChanges()
if (isCreate || refreshAfterSave) {
window.location.href = los.getLotOccupancyURL(
@ -69,7 +85,7 @@ declare const bulmaJS: BulmaJS
const formInputElements = formElement.querySelectorAll('input, select')
for (const formInputElement of formInputElements) {
formInputElement.addEventListener('change', los.setUnsavedChanges)
formInputElement.addEventListener('change', setUnsavedChanges)
}
function doCopy(): void {
@ -78,13 +94,16 @@ declare const bulmaJS: BulmaJS
{
lotOccupancyId
},
(responseJSON: {
success: boolean
errorMessage?: string
lotOccupancyId?: number
}) => {
(rawResponseJSON) => {
const responseJSON = rawResponseJSON as {
success: boolean
errorMessage?: string
lotOccupancyId?: number
}
if (responseJSON.success) {
cityssm.disableNavBlocker()
clearUnsavedChanges()
window.location.href = los.getLotOccupancyURL(
responseJSON.lotOccupancyId,
true
@ -135,9 +154,14 @@ declare const bulmaJS: BulmaJS
{
lotOccupancyId
},
(responseJSON: { success: boolean; errorMessage?: string }) => {
(rawResponseJSON) => {
const responseJSON = rawResponseJSON as {
success: boolean
errorMessage?: string
}
if (responseJSON.success) {
cityssm.disableNavBlocker()
clearUnsavedChanges()
window.location.href = los.getLotOccupancyURL()
} else {
bulmaJS.alert({
@ -174,11 +198,13 @@ declare const bulmaJS: BulmaJS
cityssm.postJSON(
los.urlPrefix + '/workOrders/doCreateWorkOrder',
formEvent.currentTarget,
(responseJSON: {
success: boolean
errorMessage?: string
workOrderId?: number
}) => {
(rawResponseJSON) => {
const responseJSON = rawResponseJSON as {
success: boolean
errorMessage?: string
workOrderId?: number
}
if (responseJSON.success) {
createCloseModalFunction()
@ -287,9 +313,11 @@ declare const bulmaJS: BulmaJS
{
occupancyTypeId: occupancyTypeIdElement.value
},
(responseJSON: {
occupancyTypeFields: recordTypes.OccupancyTypeField[]
}) => {
(rawResponseJSON) => {
const responseJSON = rawResponseJSON as {
occupancyTypeFields: recordTypes.OccupancyTypeField[]
}
if (responseJSON.occupancyTypeFields.length === 0) {
lotOccupancyFieldsContainerElement.innerHTML = `<div class="message is-info">
<p class="message-body">There are no additional fields for this ${los.escapedAliases.occupancy} type.</p>
@ -459,7 +487,12 @@ declare const bulmaJS: BulmaJS
cityssm.postJSON(
los.urlPrefix + '/lots/doSearchLots',
lotSelectFormElement,
(responseJSON: { count: number; lots: recordTypes.Lot[] }) => {
(rawResponseJSON) => {
const responseJSON = rawResponseJSON as {
count: number
lots: recordTypes.Lot[]
}
if (responseJSON.count === 0) {
lotSelectResultsElement.innerHTML = `<div class="message is-info">
<p class="message-body">No results.</p>
@ -520,11 +553,13 @@ declare const bulmaJS: BulmaJS
cityssm.postJSON(
los.urlPrefix + '/lots/doCreateLot',
submitEvent.currentTarget,
(responseJSON: {
success: boolean
errorMessage?: string
lotId?: number
}) => {
(rawResponseJSON) => {
const responseJSON = rawResponseJSON as {
success: boolean
errorMessage?: string
lotId?: number
}
if (responseJSON.success) {
renderSelectedLotAndClose(responseJSON.lotId!, lotName)
} else {

View File

@ -8,12 +8,25 @@ Object.defineProperty(exports, "__esModule", { value: true });
.value;
const isCreate = mapId === '';
const mapForm = document.querySelector('#form--map');
function setUnsavedChanges() {
var _a;
los.setUnsavedChanges();
(_a = document
.querySelector("button[type='submit'][form='form--map']")) === null || _a === void 0 ? void 0 : _a.classList.remove('is-light');
}
function clearUnsavedChanges() {
var _a;
los.clearUnsavedChanges();
(_a = document
.querySelector("button[type='submit'][form='form--map']")) === null || _a === void 0 ? void 0 : _a.classList.add('is-light');
}
function updateMap(formEvent) {
formEvent.preventDefault();
cityssm.postJSON(los.urlPrefix + '/maps/' + (isCreate ? 'doCreateMap' : 'doUpdateMap'), mapForm, (responseJSON) => {
cityssm.postJSON(los.urlPrefix + '/maps/' + (isCreate ? 'doCreateMap' : 'doUpdateMap'), mapForm, (rawResponseJSON) => {
var _a;
const responseJSON = rawResponseJSON;
if (responseJSON.success) {
cityssm.disableNavBlocker();
clearUnsavedChanges();
if (isCreate) {
window.location.href = los.getMapURL(responseJSON.mapId, true);
}
@ -36,7 +49,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
mapForm.addEventListener('submit', updateMap);
const inputElements = mapForm.querySelectorAll('input, select');
for (const inputElement of inputElements) {
inputElement.addEventListener('change', cityssm.enableNavBlocker);
inputElement.addEventListener('change', setUnsavedChanges);
}
(_a = document
.querySelector('#button--deleteMap')) === null || _a === void 0 ? void 0 : _a.addEventListener('click', (clickEvent) => {
@ -44,8 +57,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
function doDelete() {
cityssm.postJSON(los.urlPrefix + '/maps/doDeleteMap', {
mapId
}, (responseJSON) => {
}, (rawResponseJSON) => {
var _a;
const responseJSON = rawResponseJSON;
if (responseJSON.success) {
window.location.href = los.getMapURL();
}

View File

@ -16,19 +16,35 @@ declare const bulmaJS: BulmaJS
const mapForm = document.querySelector('#form--map') as HTMLFormElement
function setUnsavedChanges(): void {
los.setUnsavedChanges()
document
.querySelector("button[type='submit'][form='form--map']")
?.classList.remove('is-light')
}
function clearUnsavedChanges(): void {
los.clearUnsavedChanges()
document
.querySelector("button[type='submit'][form='form--map']")
?.classList.add('is-light')
}
function updateMap(formEvent: SubmitEvent): void {
formEvent.preventDefault()
cityssm.postJSON(
los.urlPrefix + '/maps/' + (isCreate ? 'doCreateMap' : 'doUpdateMap'),
mapForm,
(responseJSON: {
success: boolean
mapId?: number
errorMessage?: string
}) => {
(rawResponseJSON) => {
const responseJSON = rawResponseJSON as {
success: boolean
mapId?: number
errorMessage?: string
}
if (responseJSON.success) {
cityssm.disableNavBlocker()
clearUnsavedChanges()
if (isCreate) {
window.location.href = los.getMapURL(responseJSON.mapId, true)
@ -55,7 +71,7 @@ declare const bulmaJS: BulmaJS
mapForm.querySelectorAll('input, select')
for (const inputElement of inputElements) {
inputElement.addEventListener('change', cityssm.enableNavBlocker)
inputElement.addEventListener('change', setUnsavedChanges)
}
document
@ -69,7 +85,12 @@ declare const bulmaJS: BulmaJS
{
mapId
},
(responseJSON: { success: boolean; errorMessage?: string }) => {
(rawResponseJSON) => {
const responseJSON = rawResponseJSON as {
success: boolean
errorMessage?: string
}
if (responseJSON.success) {
window.location.href = los.getMapURL()
} else {

View File

@ -11,14 +11,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
.querySelector('#workOrderEdit--workOrderOpenDateString')
.closest('.field'));
los.initializeUnlockFieldButtons(workOrderFormElement);
function setUnsavedChanges() {
var _a;
los.setUnsavedChanges();
(_a = document
.querySelector("button[type='submit'][form='form--workOrderEdit']")) === null || _a === void 0 ? void 0 : _a.classList.remove('is-light');
}
function clearUnsavedChanges() {
var _a;
los.clearUnsavedChanges();
(_a = document
.querySelector("button[type='submit'][form='form--workOrderEdit']")) === null || _a === void 0 ? void 0 : _a.classList.add('is-light');
}
workOrderFormElement.addEventListener('submit', (submitEvent) => {
submitEvent.preventDefault();
cityssm.postJSON(los.urlPrefix +
'/workOrders/' +
(isCreate ? 'doCreateWorkOrder' : 'doUpdateWorkOrder'), submitEvent.currentTarget, (responseJSON) => {
(isCreate ? 'doCreateWorkOrder' : 'doUpdateWorkOrder'), submitEvent.currentTarget, (rawResponseJSON) => {
var _a;
const responseJSON = rawResponseJSON;
if (responseJSON.success) {
cityssm.disableNavBlocker();
clearUnsavedChanges();
if (isCreate) {
window.location.href = los.getWorkOrderURL(responseJSON.workOrderId, true);
}
@ -38,9 +51,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
});
});
const inputElements = workOrderFormElement.querySelectorAll('input, select');
const inputElements = workOrderFormElement.querySelectorAll('input, select, textarea');
for (const inputElement of inputElements) {
inputElement.addEventListener('change', cityssm.enableNavBlocker);
inputElement.addEventListener('change', setUnsavedChanges);
}
/*
* Work Order Options
@ -48,9 +61,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
function doClose() {
cityssm.postJSON(los.urlPrefix + '/workOrders/doCloseWorkOrder', {
workOrderId
}, (responseJSON) => {
}, (rawResponseJSON) => {
var _a;
const responseJSON = rawResponseJSON;
if (responseJSON.success) {
clearUnsavedChanges();
window.location.href = los.getWorkOrderURL(workOrderId);
}
else {
@ -65,9 +80,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
function doDelete() {
cityssm.postJSON(los.urlPrefix + '/workOrders/doDeleteWorkOrder', {
workOrderId
}, (responseJSON) => {
}, (rawResponseJSON) => {
var _a;
const responseJSON = rawResponseJSON;
if (responseJSON.success) {
clearUnsavedChanges();
window.location.href = los.urlPrefix + '/workOrders';
}
else {
@ -89,28 +106,30 @@ Object.defineProperty(exports, "__esModule", { value: true });
bulmaJS.alert({
title: 'Outstanding Milestones',
message: `You cannot close a work order with outstanding milestones.
Either complete the outstanding milestones, or remove them from the work order.`,
Either complete the outstanding milestones, or remove them from the work order.`,
contextualColorName: 'warning'
});
/*
// Disable closing work orders with open milestones
bulmaJS.confirm({
title: "Close Work Order with Outstanding Milestones",
message:
"Are you sure you want to close this work order with outstanding milestones?",
contextualColorName: "danger",
okButton: {
text: "Yes, Close Work Order",
callbackFunction: doClose
}
title: "Close Work Order with Outstanding Milestones",
message:
"Are you sure you want to close this work order with outstanding milestones?",
contextualColorName: "danger",
okButton: {
text: "Yes, Close Work Order",
callbackFunction: doClose
}
});
*/
}
else {
bulmaJS.confirm({
title: 'Close Work Order',
message: 'Are you sure you want to close this work order?',
contextualColorName: 'info',
message: los.hasUnsavedChanges()
? 'Are you sure you want to close this work order with unsaved changes?'
: 'Are you sure you want to close this work order?',
contextualColorName: los.hasUnsavedChanges() ? 'warning' : 'info',
okButton: {
text: 'Yes, Close Work Order',
callbackFunction: doClose
@ -902,8 +921,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
/*
* Milestones
*/
function processMilestoneResponse(responseJSON) {
function processMilestoneResponse(rawResponseJSON) {
var _a;
const responseJSON = rawResponseJSON;
if (responseJSON.success) {
workOrderMilestones = responseJSON.workOrderMilestones;
renderMilestones();

View File

@ -11,14 +11,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
.querySelector('#workOrderEdit--workOrderOpenDateString')
.closest('.field'));
los.initializeUnlockFieldButtons(workOrderFormElement);
function setUnsavedChanges() {
var _a;
los.setUnsavedChanges();
(_a = document
.querySelector("button[type='submit'][form='form--workOrderEdit']")) === null || _a === void 0 ? void 0 : _a.classList.remove('is-light');
}
function clearUnsavedChanges() {
var _a;
los.clearUnsavedChanges();
(_a = document
.querySelector("button[type='submit'][form='form--workOrderEdit']")) === null || _a === void 0 ? void 0 : _a.classList.add('is-light');
}
workOrderFormElement.addEventListener('submit', (submitEvent) => {
submitEvent.preventDefault();
cityssm.postJSON(los.urlPrefix +
'/workOrders/' +
(isCreate ? 'doCreateWorkOrder' : 'doUpdateWorkOrder'), submitEvent.currentTarget, (responseJSON) => {
(isCreate ? 'doCreateWorkOrder' : 'doUpdateWorkOrder'), submitEvent.currentTarget, (rawResponseJSON) => {
var _a;
const responseJSON = rawResponseJSON;
if (responseJSON.success) {
cityssm.disableNavBlocker();
clearUnsavedChanges();
if (isCreate) {
window.location.href = los.getWorkOrderURL(responseJSON.workOrderId, true);
}
@ -38,9 +51,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
});
});
const inputElements = workOrderFormElement.querySelectorAll('input, select');
const inputElements = workOrderFormElement.querySelectorAll('input, select, textarea');
for (const inputElement of inputElements) {
inputElement.addEventListener('change', cityssm.enableNavBlocker);
inputElement.addEventListener('change', setUnsavedChanges);
}
/*
* Work Order Options
@ -48,9 +61,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
function doClose() {
cityssm.postJSON(los.urlPrefix + '/workOrders/doCloseWorkOrder', {
workOrderId
}, (responseJSON) => {
}, (rawResponseJSON) => {
var _a;
const responseJSON = rawResponseJSON;
if (responseJSON.success) {
clearUnsavedChanges();
window.location.href = los.getWorkOrderURL(workOrderId);
}
else {
@ -65,9 +80,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
function doDelete() {
cityssm.postJSON(los.urlPrefix + '/workOrders/doDeleteWorkOrder', {
workOrderId
}, (responseJSON) => {
}, (rawResponseJSON) => {
var _a;
const responseJSON = rawResponseJSON;
if (responseJSON.success) {
clearUnsavedChanges();
window.location.href = los.urlPrefix + '/workOrders';
}
else {
@ -89,28 +106,30 @@ Object.defineProperty(exports, "__esModule", { value: true });
bulmaJS.alert({
title: 'Outstanding Milestones',
message: `You cannot close a work order with outstanding milestones.
Either complete the outstanding milestones, or remove them from the work order.`,
Either complete the outstanding milestones, or remove them from the work order.`,
contextualColorName: 'warning'
});
/*
// Disable closing work orders with open milestones
bulmaJS.confirm({
title: "Close Work Order with Outstanding Milestones",
message:
"Are you sure you want to close this work order with outstanding milestones?",
contextualColorName: "danger",
okButton: {
text: "Yes, Close Work Order",
callbackFunction: doClose
}
title: "Close Work Order with Outstanding Milestones",
message:
"Are you sure you want to close this work order with outstanding milestones?",
contextualColorName: "danger",
okButton: {
text: "Yes, Close Work Order",
callbackFunction: doClose
}
});
*/
}
else {
bulmaJS.confirm({
title: 'Close Work Order',
message: 'Are you sure you want to close this work order?',
contextualColorName: 'info',
message: los.hasUnsavedChanges()
? 'Are you sure you want to close this work order with unsaved changes?'
: 'Are you sure you want to close this work order?',
contextualColorName: los.hasUnsavedChanges() ? 'warning' : 'info',
okButton: {
text: 'Yes, Close Work Order',
callbackFunction: doClose
@ -144,8 +163,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
/*
* Milestones
*/
function processMilestoneResponse(responseJSON) {
function processMilestoneResponse(rawResponseJSON) {
var _a;
const responseJSON = rawResponseJSON;
if (responseJSON.success) {
workOrderMilestones = responseJSON.workOrderMilestones;
renderMilestones();

View File

@ -28,6 +28,20 @@ declare const bulmaJS: BulmaJS
)
los.initializeUnlockFieldButtons(workOrderFormElement)
function setUnsavedChanges(): void {
los.setUnsavedChanges()
document
.querySelector("button[type='submit'][form='form--workOrderEdit']")
?.classList.remove('is-light')
}
function clearUnsavedChanges(): void {
los.clearUnsavedChanges()
document
.querySelector("button[type='submit'][form='form--workOrderEdit']")
?.classList.add('is-light')
}
workOrderFormElement.addEventListener('submit', (submitEvent) => {
submitEvent.preventDefault()
@ -36,13 +50,15 @@ declare const bulmaJS: BulmaJS
'/workOrders/' +
(isCreate ? 'doCreateWorkOrder' : 'doUpdateWorkOrder'),
submitEvent.currentTarget,
(responseJSON: {
success: boolean
workOrderId?: number
errorMessage?: string
}) => {
(rawResponseJSON) => {
const responseJSON = rawResponseJSON as {
success: boolean
workOrderId?: number
errorMessage?: string
}
if (responseJSON.success) {
cityssm.disableNavBlocker()
clearUnsavedChanges()
if (isCreate) {
window.location.href = los.getWorkOrderURL(
@ -66,11 +82,11 @@ declare const bulmaJS: BulmaJS
)
})
const inputElements: NodeListOf<HTMLInputElement | HTMLSelectElement> =
workOrderFormElement.querySelectorAll('input, select')
const inputElements: NodeListOf<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement> =
workOrderFormElement.querySelectorAll('input, select, textarea')
for (const inputElement of inputElements) {
inputElement.addEventListener('change', cityssm.enableNavBlocker)
inputElement.addEventListener('change', setUnsavedChanges)
}
/*
@ -83,8 +99,14 @@ declare const bulmaJS: BulmaJS
{
workOrderId
},
(responseJSON: { success: boolean; errorMessage?: string }) => {
(rawResponseJSON) => {
const responseJSON = rawResponseJSON as {
success: boolean
errorMessage?: string
}
if (responseJSON.success) {
clearUnsavedChanges()
window.location.href = los.getWorkOrderURL(workOrderId)
} else {
bulmaJS.alert({
@ -103,8 +125,14 @@ declare const bulmaJS: BulmaJS
{
workOrderId
},
(responseJSON: { success: boolean; errorMessage?: string }) => {
(rawResponseJSON) => {
const responseJSON = rawResponseJSON as {
success: boolean
errorMessage?: string
}
if (responseJSON.success) {
clearUnsavedChanges()
window.location.href = los.urlPrefix + '/workOrders'
} else {
bulmaJS.alert({
@ -130,28 +158,30 @@ declare const bulmaJS: BulmaJS
bulmaJS.alert({
title: 'Outstanding Milestones',
message: `You cannot close a work order with outstanding milestones.
Either complete the outstanding milestones, or remove them from the work order.`,
Either complete the outstanding milestones, or remove them from the work order.`,
contextualColorName: 'warning'
})
/*
// Disable closing work orders with open milestones
bulmaJS.confirm({
title: "Close Work Order with Outstanding Milestones",
message:
"Are you sure you want to close this work order with outstanding milestones?",
contextualColorName: "danger",
okButton: {
text: "Yes, Close Work Order",
callbackFunction: doClose
}
title: "Close Work Order with Outstanding Milestones",
message:
"Are you sure you want to close this work order with outstanding milestones?",
contextualColorName: "danger",
okButton: {
text: "Yes, Close Work Order",
callbackFunction: doClose
}
});
*/
} else {
bulmaJS.confirm({
title: 'Close Work Order',
message: 'Are you sure you want to close this work order?',
contextualColorName: 'info',
message: los.hasUnsavedChanges()
? 'Are you sure you want to close this work order with unsaved changes?'
: 'Are you sure you want to close this work order?',
contextualColorName: los.hasUnsavedChanges() ? 'warning' : 'info',
okButton: {
text: 'Yes, Close Work Order',
callbackFunction: doClose
@ -194,11 +224,13 @@ declare const bulmaJS: BulmaJS
* Milestones
*/
function processMilestoneResponse(responseJSON: {
success: boolean
errorMessage?: string
workOrderMilestones?: recordTypes.WorkOrderMilestone[]
}): void {
function processMilestoneResponse(rawResponseJSON: unknown): void {
const responseJSON = rawResponseJSON as {
success: boolean
errorMessage?: string
workOrderMilestones?: recordTypes.WorkOrderMilestone[]
}
if (responseJSON.success) {
workOrderMilestones = responseJSON.workOrderMilestones!
renderMilestones()

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{var e;const a=exports.los,t=document.querySelector("#map--mapId").value,s=""===t,l=document.querySelector("#form--map");l.addEventListener("submit",function(e){e.preventDefault(),cityssm.postJSON(a.urlPrefix+"/maps/"+(s?"doCreateMap":"doUpdateMap"),l,e=>{var t;e.success?(cityssm.disableNavBlocker(),s?window.location.href=a.getMapURL(e.mapId,!0):bulmaJS.alert({message:a.escapedAliases.Map+" Updated Successfully",contextualColorName:"success"})):bulmaJS.alert({title:"Error Updating "+a.escapedAliases.Map,message:null!==(t=e.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})})});const o=l.querySelectorAll("input, select");for(const e of o)e.addEventListener("change",cityssm.enableNavBlocker);null===(e=document.querySelector("#button--deleteMap"))||void 0===e||e.addEventListener("click",e=>{e.preventDefault(),bulmaJS.confirm({title:"Delete "+a.escapedAliases.Map,message:`Are you sure you want to delete this ${a.escapedAliases.map} and all related ${a.escapedAliases.lots}?`,contextualColorName:"warning",okButton:{text:`Yes, Delete ${a.escapedAliases.Map}`,callbackFunction:function(){cityssm.postJSON(a.urlPrefix+"/maps/doDeleteMap",{mapId:t},e=>{var t;e.success?window.location.href=a.getMapURL():bulmaJS.alert({title:"Error Deleting "+a.escapedAliases.Map,message:null!==(t=e.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})})}}})})})();
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{var e;const t=exports.los,a=document.querySelector("#map--mapId").value,s=""===a,o=document.querySelector("#form--map");function l(){var e;t.setUnsavedChanges(),null===(e=document.querySelector("button[type='submit'][form='form--map']"))||void 0===e||e.classList.remove("is-light")}o.addEventListener("submit",function(e){e.preventDefault(),cityssm.postJSON(t.urlPrefix+"/maps/"+(s?"doCreateMap":"doUpdateMap"),o,e=>{var a;const o=e;o.success?(function(){var e;t.clearUnsavedChanges(),null===(e=document.querySelector("button[type='submit'][form='form--map']"))||void 0===e||e.classList.add("is-light")}(),s?window.location.href=t.getMapURL(o.mapId,!0):bulmaJS.alert({message:t.escapedAliases.Map+" Updated Successfully",contextualColorName:"success"})):bulmaJS.alert({title:"Error Updating "+t.escapedAliases.Map,message:null!==(a=o.errorMessage)&&void 0!==a?a:"",contextualColorName:"danger"})})});const r=o.querySelectorAll("input, select");for(const e of r)e.addEventListener("change",l);null===(e=document.querySelector("#button--deleteMap"))||void 0===e||e.addEventListener("click",e=>{e.preventDefault(),bulmaJS.confirm({title:"Delete "+t.escapedAliases.Map,message:`Are you sure you want to delete this ${t.escapedAliases.map} and all related ${t.escapedAliases.lots}?`,contextualColorName:"warning",okButton:{text:`Yes, Delete ${t.escapedAliases.Map}`,callbackFunction:function(){cityssm.postJSON(t.urlPrefix+"/maps/doDeleteMap",{mapId:a},e=>{var a;const s=e;s.success?window.location.href=t.getMapURL():bulmaJS.alert({title:"Error Deleting "+t.escapedAliases.Map,message:null!==(a=s.errorMessage)&&void 0!==a?a:"",contextualColorName:"danger"})})}}})})})();

File diff suppressed because one or more lines are too long

View File

@ -68,7 +68,7 @@
</div>
<% } %>
<div class="level-item">
<button class="button is-primary" type="submit" form="form--lot">
<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") %>
@ -80,7 +80,7 @@
</div>
<form id="form--lot">
<form class="mb-5" id="form--lot">
<input id="lot--lotId" name="lotId" type="hidden" value="<%= isCreate ? "" : lot.lotId %>" />
<div class="panel">
@ -371,91 +371,91 @@
</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.getProperty("aliases.occupancies") %>
<span class="tag"><%= lot.lotOccupancies.length %></span>
</h2>
</div>
<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.getProperty("aliases.occupancies") %>
<span class="tag"><%= lot.lotOccupancies.length %></span>
</h2>
</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.getProperty("aliases.occupancy") %></span>
</a>
</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.getProperty("aliases.occupancy") %></span>
</a>
</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.getProperty("aliases.occupancy").toLowerCase() %> records
asscociated with this <%= configFunctions.getProperty("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.getProperty("aliases.occupancy") %> Type</th>
<th><%= configFunctions.getProperty("aliases.occupancyStartDate") %></th>
<th>End Date</th>
<th><%= configFunctions.getProperty("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.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><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.getProperty("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>
<div class="panel-block is-block">
<% if (lot.lotOccupancies.length === 0) { %>
<div class="message is-info">
<p class="message-body">
There are no <%= configFunctions.getProperty("aliases.occupancy").toLowerCase() %> records
asscociated with this <%= configFunctions.getProperty("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.getProperty("aliases.occupancy") %> Type</th>
<th><%= configFunctions.getProperty("aliases.occupancyStartDate") %></th>
<th>End Date</th>
<th><%= configFunctions.getProperty("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.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><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.getProperty("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>
<% } %>

View File

@ -4,42 +4,42 @@
<ul>
<li><a href="<%= urlPrefix %>/dashboard">Home</a></li>
<li>
<a href="<%= urlPrefix %>/lotOccupancies">
<span class="icon is-small">
<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>
<a href="<%= urlPrefix %>/lotOccupancies">
<span class="icon is-small">
<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>
</li>
<% if (!isCreate) { %>
<li>
<a href="<%= urlPrefix %>/lotOccupancies/<%= lotOccupancy.lotOccupancyId %>" accesskey="v">
<%= configFunctions.getProperty("aliases.occupancy") %> #<%= lotOccupancy.lotOccupancyId %>: <%= lotOccupancy.lotName || ("(No " + configFunctions.getProperty("aliases.lot") + ")") %>
</a>
<a href="<%= urlPrefix %>/lotOccupancies/<%= lotOccupancy.lotOccupancyId %>" accesskey="v">
<%= configFunctions.getProperty("aliases.occupancy") %> #<%= lotOccupancy.lotOccupancyId %>: <%= lotOccupancy.lotName || ("(No " + configFunctions.getProperty("aliases.lot") + ")") %>
</a>
</li>
<% } %>
<li class="is-active">
<a href="#" aria-current="page">
<% if (isCreate) { %>
Create a New <%= configFunctions.getProperty("aliases.occupancy") %> Record
<% } else { %>
Update <%= configFunctions.getProperty("aliases.occupancy") %>
<% } %>
</a>
</li>
<a href="#" aria-current="page">
<% if (isCreate) { %>
Create a New <%= configFunctions.getProperty("aliases.occupancy") %> Record
<% } else { %>
Update <%= configFunctions.getProperty("aliases.occupancy") %>
<% } %>
</a>
</li>
</ul>
</nav>
<% if (isCreate) { %>
<h1 class="title is-1">
Create a New <%= configFunctions.getProperty("aliases.occupancy") %> Record
Create a New <%= configFunctions.getProperty("aliases.occupancy") %> Record
</h1>
<% } else { %>
<h1 class="title is-1">
Update <%= configFunctions.getProperty("aliases.occupancy") %> #<%= lotOccupancy.lotOccupancyId %>
Update <%= configFunctions.getProperty("aliases.occupancy") %> #<%= lotOccupancy.lotOccupancyId %>
</h1>
<% } %>
@ -118,13 +118,13 @@
</div>
<% } %>
<div class="level-item">
<button class="button is-success" type="submit" form="form--lotOccupancy">
<button class="button is-primary is-light" type="submit" form="form--lotOccupancy">
<span class="icon is-small"><i class="fas fa-save" aria-hidden="true"></i></span>
<span>
<%= (isCreate ? "Create" : "Update") %>
<span class="is-hidden-touch">
<%= configFunctions.getProperty("aliases.occupancy") %> Record
</span>
<%= (isCreate ? "Create" : "Update") %>
<span class="is-hidden-touch">
<%= configFunctions.getProperty("aliases.occupancy") %> Record
</span>
</span>
</button>
</div>

View File

@ -4,36 +4,36 @@
<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>
<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 %>" accesskey="v">
<%= map.mapName || "(No Name)" %>
</a>
</li>
<li>
<a href="<%= urlPrefix %>/maps/<%= map.mapId %>" accesskey="v">
<%= 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
<% } %>
</a>
<a href="#" aria-current="page">
<% if (isCreate) { %>
Create a New <%= configFunctions.getProperty("aliases.map") %>
<% } else { %>
Update
<% } %>
</a>
</li>
</ul>
</nav>
<h1 class="title is-1">
<% if (isCreate) { %>
<% if (isCreate) { %>
Create a New <%= configFunctions.getProperty("aliases.map") %>
<% } else { %>
<% } else { %>
Update <%= configFunctions.getProperty("aliases.map") %>
<% } %>
<% } %>
</h1>
<div class="level is-fixed-bottom is-mobile has-background-white has-shadow is-hidden-print">
@ -48,27 +48,27 @@
<% if (!isCreate) { %>
<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--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 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--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>
<% } %>
<div class="level-item">
<button class="button is-primary" type="submit" form="form--map">
<button class="button is-primary is-light" type="submit" form="form--map">
<span class="icon is-small"><i class="fas fa-save" aria-hidden="true"></i></span>
<span>
<%= (isCreate ? "Create": "Update") %>

View File

@ -5,26 +5,26 @@
<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>
<span class="icon is-small"><i class="fas fa-hard-hat" aria-hidden="true"></i></span>
<span>Work Orders</span>
</a>
</li>
<% if (isCreate) { %>
<li class="is-active">
<a href="#" aria-current="page">
Create a New Work Order
</a>
<a href="#" aria-current="page">
Create a New Work Order
</a>
</li>
<% } else { %>
<li>
<a href="<%= urlPrefix %>/workOrders/<%= workOrder.workOrderId %>" accesskey="v">
Work Order #<%= workOrder.workOrderNumber || "(No Number)" %>
</a>
<a href="<%= urlPrefix %>/workOrders/<%= workOrder.workOrderId %>" accesskey="v">
Work Order #<%= workOrder.workOrderNumber || "(No Number)" %>
</a>
</li>
<li class="is-active">
<a href="#" aria-current="page">
Update Work Order
</a>
<a href="#" aria-current="page">
Update Work Order
</a>
</li>
<% } %>
</ul>
@ -32,7 +32,7 @@
<% if (isCreate) { %>
<h1 class="title is-1">
Create a New Work Order
Create a New Work Order
</h1>
<% } else { %>
<h1 class="title is-1">
@ -111,12 +111,12 @@
</div>
</div>
<% } %>
<button class="button is-success" type="submit" form="form--workOrderEdit">
<span class="icon is-small"><i class="fas fa-save" aria-hidden="true"></i></span>
<span>
<%= (isCreate ? "Create" : "Update") %>
<span class="is-hidden-touch">Work Order</span>
</span>
<button class="button is-primary is-light" type="submit" form="form--workOrderEdit">
<span class="icon is-small"><i class="fas fa-save" aria-hidden="true"></i></span>
<span>
<%= (isCreate ? "Create" : "Update") %>
<span class="is-hidden-touch">Work Order</span>
</span>
</button>
</div>
</div>
@ -129,80 +129,80 @@
<div class="panel">
<div class="panel-block is-block">
<div class="columns">
<div class="column">
<label class="label" for="workOrderEdit--workOrderNumber">Work Order Number</label>
<div class="field has-addons">
<div class="control is-expanded">
<input class="input <%= (isCreate ? "" : " is-readonly") %>" id="workOrderEdit--workOrderNumber" name="workOrderNumber" type="text" value="<%= workOrder.workOrderNumber %>" maxlength="50" readonly accesskey="f" <%= (isCreate ? "" : " required") %> />
</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 class="column">
<label class="label" for="workOrderEdit--workOrderNumber">Work Order Number</label>
<div class="field has-addons">
<div class="control is-expanded">
<input class="input <%= (isCreate ? "" : " is-readonly") %>" id="workOrderEdit--workOrderNumber" name="workOrderNumber" type="text" value="<%= workOrder.workOrderNumber %>" maxlength="50" readonly accesskey="f" <%= (isCreate ? "" : " required") %> />
</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>
<% if (isCreate) { %>
<p class="help">Leave work order number blank to autopopulate.</p>
<% } %>
</div>
<div class="column">
<div class="field">
<label class="label" for="workOrderEdit--workOrderTypeId">Work Order Type</label>
<div class="control">
<div class="select is-fullwidth">
<select id="workOrderEdit--workOrderTypeId" name="workOrderTypeId" required <%= (isCreate ? " autofocus" : "") %>>
<% if (isCreate && workOrderTypes.length > 1) { %>
<option value="">(Select Type)</option>
<% } %>
<% for (const workOrderType of workOrderTypes) { %>
<option value="<%= workOrderType.workOrderTypeId %>" <%= (workOrder.workOrderTypeId === workOrderType.workOrderTypeId ? " selected" : "") %>>
<%= workOrderType.workOrderType %>
</option>
<% } %>
</select>
</div>
</div>
<% if (isCreate) { %>
<p class="help">Leave work order number blank to autopopulate.</p>
<% } %>
</div>
<div class="column">
<div class="field">
<label class="label" for="workOrderEdit--workOrderTypeId">Work Order Type</label>
<div class="control">
<div class="select is-fullwidth">
<select id="workOrderEdit--workOrderTypeId" name="workOrderTypeId" required <%= (isCreate ? " autofocus" : "") %>>
<% if (isCreate && workOrderTypes.length > 1) { %>
<option value="">(Select Type)</option>
<% } %>
<% for (const workOrderType of workOrderTypes) { %>
<option value="<%= workOrderType.workOrderTypeId %>" <%= (workOrder.workOrderTypeId === workOrderType.workOrderTypeId ? " selected" : "") %>>
<%= workOrderType.workOrderType %>
</option>
<% } %>
</select>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="field">
<label class="label" for="workOrderEdit--workOrderDescription">Description</label>
<div class="control">
<textarea class="textarea" id="workOrderEdit--workOrderDescription" name="workOrderDescription"><%= workOrder.workOrderDescription %></textarea>
</div>
<label class="label" for="workOrderEdit--workOrderDescription">Description</label>
<div class="control">
<textarea class="textarea" id="workOrderEdit--workOrderDescription" name="workOrderDescription"><%= workOrder.workOrderDescription %></textarea>
</div>
</div>
<div class="columns">
<div class="column">
<div class="field">
<label class="label" for="workOrderEdit--workOrderOpenDateString"><%= configFunctions.getProperty("aliases.workOrderOpenDate") %></label>
<div class="control has-icons-left">
<%
const currentDateString = dateTimeFunctions.dateToString(new Date());
%>
<input class="input" id="workOrderEdit--workOrderOpenDateString" name="workOrderOpenDateString" type="date"
value="<%= workOrder.workOrderOpenDateString %>"
max="<%= workOrder.workOrderOpenDateString > currentDateString ? workOrder.workOrderOpenDateString : currentDateString %>"
required />
<span class="icon is-left">
<i class="fas fa-calendar" aria-hidden="true"></i>
</span>
</div>
<label class="label" for="workOrderEdit--workOrderOpenDateString"><%= configFunctions.getProperty("aliases.workOrderOpenDate") %></label>
<div class="control has-icons-left">
<%
const currentDateString = dateTimeFunctions.dateToString(new Date());
%>
<input class="input" id="workOrderEdit--workOrderOpenDateString" name="workOrderOpenDateString" type="date"
value="<%= workOrder.workOrderOpenDateString %>"
max="<%= workOrder.workOrderOpenDateString > currentDateString ? workOrder.workOrderOpenDateString : currentDateString %>"
required />
<span class="icon is-left">
<i class="fas fa-calendar" aria-hidden="true"></i>
</span>
</div>
</div>
</div>
<div class="column">
<label class="label" for="workOrderEdit--workOrderCloseDateString"><%= configFunctions.getProperty("aliases.workOrderCloseDate") %></label>
<div class="field has-addons">
<div class="control is-expanded">
<input class="input" id="workOrderEdit--workOrderCloseDateString" name="workOrderCloseDateString" type="date" value="<%= workOrder.workOrderCloseDateString %>" disabled readonly />
</div>
<div class="control">
<button class="button is-light is-success is-outlined" id="button--closeWorkOrder" type="button">
<span class="icon is-small"><i class="fas fa-stop-circle" aria-hidden="true"></i></span>
<span>
Close
</span>
</button>
</div>
<div class="control is-expanded">
<input class="input" id="workOrderEdit--workOrderCloseDateString" name="workOrderCloseDateString" type="date" value="<%= workOrder.workOrderCloseDateString %>" disabled readonly />
</div>
<div class="control">
<button class="button is-light is-success is-outlined" id="button--closeWorkOrder" type="button">
<span class="icon is-small"><i class="fas fa-stop-circle" aria-hidden="true"></i></span>
<span>
Close
</span>
</button>
</div>
</div>
</div>
</div>
@ -215,43 +215,43 @@
<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");
const tabToSelect = (workOrder.workOrderLotOccupancies.length > 0 || workOrder.workOrderLots.length === 0 ? "lotOccupancies" : "lots");
%>
<div class="tabs is-boxed">
<ul>
<li class="<%= (tabToSelect === "lotOccupancies" ? "is-active" : "") %>">
<a href="#relatedTab--lotOccupancies">
<span><%= configFunctions.getProperty("aliases.occupancies") %></span>
<span class="ml-2 tag"></span>
</a>
</li>
<li class="<%= (tabToSelect === "lots" ? "is-active" : "") %>">
<a href="#relatedTab--lots">
<span><%= configFunctions.getProperty("aliases.lots") %></span>
<span class="ml-2 tag"></span>
</a>
</li>
</ul>
<ul>
<li class="<%= (tabToSelect === "lotOccupancies" ? "is-active" : "") %>">
<a href="#relatedTab--lotOccupancies">
<span><%= configFunctions.getProperty("aliases.occupancies") %></span>
<span class="ml-2 tag"></span>
</a>
</li>
<li class="<%= (tabToSelect === "lots" ? "is-active" : "") %>">
<a href="#relatedTab--lots">
<span><%= configFunctions.getProperty("aliases.lots") %></span>
<span class="ml-2 tag"></span>
</a>
</li>
</ul>
</div>
<div class="tab-container">
<div class="<%= (tabToSelect === "lotOccupancies" ? "" : "is-hidden") %>" id="relatedTab--lotOccupancies">
<div class="box has-background-light has-text-right p-3">
<button class="button is-small is-success" id="button--addLotOccupancy" type="button">
<span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span>
<span>Add Related <%= configFunctions.getProperty("aliases.occupancy") %></span>
</button>
</div>
<div id="container--lotOccupancies"></div>
<div class="<%= (tabToSelect === "lotOccupancies" ? "" : "is-hidden") %>" id="relatedTab--lotOccupancies">
<div class="box has-background-light has-text-right p-3">
<button class="button is-small is-success" id="button--addLotOccupancy" type="button">
<span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span>
<span>Add Related <%= configFunctions.getProperty("aliases.occupancy") %></span>
</button>
</div>
<div class="<%= (tabToSelect === "lots" ? "" : "is-hidden") %>" id="relatedTab--lots">
<div class="box has-background-light has-text-right p-3">
<button class="button is-small is-success" id="button--addLot" type="button">
<span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span>
<span>Add Related <%= configFunctions.getProperty("aliases.lot") %></span>
</button>
</div>
<div id="container--lots"></div>
<div id="container--lotOccupancies"></div>
</div>
<div class="<%= (tabToSelect === "lots" ? "" : "is-hidden") %>" id="relatedTab--lots">
<div class="box has-background-light has-text-right p-3">
<button class="button is-small is-success" id="button--addLot" type="button">
<span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span>
<span>Add Related <%= configFunctions.getProperty("aliases.lot") %></span>
</button>
</div>
<div id="container--lots"></div>
</div>
</div>
</div>
</div>
@ -262,19 +262,19 @@
<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 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="workOrderComments--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 class="level-item">
<button class="button is-small is-success" id="workOrderComments--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>