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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -11,14 +11,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
.querySelector('#workOrderEdit--workOrderOpenDateString') .querySelector('#workOrderEdit--workOrderOpenDateString')
.closest('.field')); .closest('.field'));
los.initializeUnlockFieldButtons(workOrderFormElement); 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) => { workOrderFormElement.addEventListener('submit', (submitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(los.urlPrefix + cityssm.postJSON(los.urlPrefix +
'/workOrders/' + '/workOrders/' +
(isCreate ? 'doCreateWorkOrder' : 'doUpdateWorkOrder'), submitEvent.currentTarget, (responseJSON) => { (isCreate ? 'doCreateWorkOrder' : 'doUpdateWorkOrder'), submitEvent.currentTarget, (rawResponseJSON) => {
var _a; var _a;
const responseJSON = rawResponseJSON;
if (responseJSON.success) { if (responseJSON.success) {
cityssm.disableNavBlocker(); clearUnsavedChanges();
if (isCreate) { if (isCreate) {
window.location.href = los.getWorkOrderURL(responseJSON.workOrderId, true); 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) { for (const inputElement of inputElements) {
inputElement.addEventListener('change', cityssm.enableNavBlocker); inputElement.addEventListener('change', setUnsavedChanges);
} }
/* /*
* Work Order Options * Work Order Options
@ -48,9 +61,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
function doClose() { function doClose() {
cityssm.postJSON(los.urlPrefix + '/workOrders/doCloseWorkOrder', { cityssm.postJSON(los.urlPrefix + '/workOrders/doCloseWorkOrder', {
workOrderId workOrderId
}, (responseJSON) => { }, (rawResponseJSON) => {
var _a; var _a;
const responseJSON = rawResponseJSON;
if (responseJSON.success) { if (responseJSON.success) {
clearUnsavedChanges();
window.location.href = los.getWorkOrderURL(workOrderId); window.location.href = los.getWorkOrderURL(workOrderId);
} }
else { else {
@ -65,9 +80,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
function doDelete() { function doDelete() {
cityssm.postJSON(los.urlPrefix + '/workOrders/doDeleteWorkOrder', { cityssm.postJSON(los.urlPrefix + '/workOrders/doDeleteWorkOrder', {
workOrderId workOrderId
}, (responseJSON) => { }, (rawResponseJSON) => {
var _a; var _a;
const responseJSON = rawResponseJSON;
if (responseJSON.success) { if (responseJSON.success) {
clearUnsavedChanges();
window.location.href = los.urlPrefix + '/workOrders'; window.location.href = los.urlPrefix + '/workOrders';
} }
else { else {
@ -89,28 +106,30 @@ Object.defineProperty(exports, "__esModule", { value: true });
bulmaJS.alert({ bulmaJS.alert({
title: 'Outstanding Milestones', title: 'Outstanding Milestones',
message: `You cannot close a work order with 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' contextualColorName: 'warning'
}); });
/* /*
// Disable closing work orders with open milestones // Disable closing work orders with open milestones
bulmaJS.confirm({ bulmaJS.confirm({
title: "Close Work Order with Outstanding Milestones", title: "Close Work Order with Outstanding Milestones",
message: message:
"Are you sure you want to close this work order with outstanding milestones?", "Are you sure you want to close this work order with outstanding milestones?",
contextualColorName: "danger", contextualColorName: "danger",
okButton: { okButton: {
text: "Yes, Close Work Order", text: "Yes, Close Work Order",
callbackFunction: doClose callbackFunction: doClose
} }
}); });
*/ */
} }
else { else {
bulmaJS.confirm({ bulmaJS.confirm({
title: 'Close Work Order', title: 'Close Work Order',
message: 'Are you sure you want to close this work order?', message: los.hasUnsavedChanges()
contextualColorName: 'info', ? '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: { okButton: {
text: 'Yes, Close Work Order', text: 'Yes, Close Work Order',
callbackFunction: doClose callbackFunction: doClose
@ -902,8 +921,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
/* /*
* Milestones * Milestones
*/ */
function processMilestoneResponse(responseJSON) { function processMilestoneResponse(rawResponseJSON) {
var _a; var _a;
const responseJSON = rawResponseJSON;
if (responseJSON.success) { if (responseJSON.success) {
workOrderMilestones = responseJSON.workOrderMilestones; workOrderMilestones = responseJSON.workOrderMilestones;
renderMilestones(); renderMilestones();

View File

@ -11,14 +11,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
.querySelector('#workOrderEdit--workOrderOpenDateString') .querySelector('#workOrderEdit--workOrderOpenDateString')
.closest('.field')); .closest('.field'));
los.initializeUnlockFieldButtons(workOrderFormElement); 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) => { workOrderFormElement.addEventListener('submit', (submitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(los.urlPrefix + cityssm.postJSON(los.urlPrefix +
'/workOrders/' + '/workOrders/' +
(isCreate ? 'doCreateWorkOrder' : 'doUpdateWorkOrder'), submitEvent.currentTarget, (responseJSON) => { (isCreate ? 'doCreateWorkOrder' : 'doUpdateWorkOrder'), submitEvent.currentTarget, (rawResponseJSON) => {
var _a; var _a;
const responseJSON = rawResponseJSON;
if (responseJSON.success) { if (responseJSON.success) {
cityssm.disableNavBlocker(); clearUnsavedChanges();
if (isCreate) { if (isCreate) {
window.location.href = los.getWorkOrderURL(responseJSON.workOrderId, true); 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) { for (const inputElement of inputElements) {
inputElement.addEventListener('change', cityssm.enableNavBlocker); inputElement.addEventListener('change', setUnsavedChanges);
} }
/* /*
* Work Order Options * Work Order Options
@ -48,9 +61,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
function doClose() { function doClose() {
cityssm.postJSON(los.urlPrefix + '/workOrders/doCloseWorkOrder', { cityssm.postJSON(los.urlPrefix + '/workOrders/doCloseWorkOrder', {
workOrderId workOrderId
}, (responseJSON) => { }, (rawResponseJSON) => {
var _a; var _a;
const responseJSON = rawResponseJSON;
if (responseJSON.success) { if (responseJSON.success) {
clearUnsavedChanges();
window.location.href = los.getWorkOrderURL(workOrderId); window.location.href = los.getWorkOrderURL(workOrderId);
} }
else { else {
@ -65,9 +80,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
function doDelete() { function doDelete() {
cityssm.postJSON(los.urlPrefix + '/workOrders/doDeleteWorkOrder', { cityssm.postJSON(los.urlPrefix + '/workOrders/doDeleteWorkOrder', {
workOrderId workOrderId
}, (responseJSON) => { }, (rawResponseJSON) => {
var _a; var _a;
const responseJSON = rawResponseJSON;
if (responseJSON.success) { if (responseJSON.success) {
clearUnsavedChanges();
window.location.href = los.urlPrefix + '/workOrders'; window.location.href = los.urlPrefix + '/workOrders';
} }
else { else {
@ -89,28 +106,30 @@ Object.defineProperty(exports, "__esModule", { value: true });
bulmaJS.alert({ bulmaJS.alert({
title: 'Outstanding Milestones', title: 'Outstanding Milestones',
message: `You cannot close a work order with 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' contextualColorName: 'warning'
}); });
/* /*
// Disable closing work orders with open milestones // Disable closing work orders with open milestones
bulmaJS.confirm({ bulmaJS.confirm({
title: "Close Work Order with Outstanding Milestones", title: "Close Work Order with Outstanding Milestones",
message: message:
"Are you sure you want to close this work order with outstanding milestones?", "Are you sure you want to close this work order with outstanding milestones?",
contextualColorName: "danger", contextualColorName: "danger",
okButton: { okButton: {
text: "Yes, Close Work Order", text: "Yes, Close Work Order",
callbackFunction: doClose callbackFunction: doClose
} }
}); });
*/ */
} }
else { else {
bulmaJS.confirm({ bulmaJS.confirm({
title: 'Close Work Order', title: 'Close Work Order',
message: 'Are you sure you want to close this work order?', message: los.hasUnsavedChanges()
contextualColorName: 'info', ? '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: { okButton: {
text: 'Yes, Close Work Order', text: 'Yes, Close Work Order',
callbackFunction: doClose callbackFunction: doClose
@ -144,8 +163,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
/* /*
* Milestones * Milestones
*/ */
function processMilestoneResponse(responseJSON) { function processMilestoneResponse(rawResponseJSON) {
var _a; var _a;
const responseJSON = rawResponseJSON;
if (responseJSON.success) { if (responseJSON.success) {
workOrderMilestones = responseJSON.workOrderMilestones; workOrderMilestones = responseJSON.workOrderMilestones;
renderMilestones(); renderMilestones();

View File

@ -28,6 +28,20 @@ declare const bulmaJS: BulmaJS
) )
los.initializeUnlockFieldButtons(workOrderFormElement) 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) => { workOrderFormElement.addEventListener('submit', (submitEvent) => {
submitEvent.preventDefault() submitEvent.preventDefault()
@ -36,13 +50,15 @@ declare const bulmaJS: BulmaJS
'/workOrders/' + '/workOrders/' +
(isCreate ? 'doCreateWorkOrder' : 'doUpdateWorkOrder'), (isCreate ? 'doCreateWorkOrder' : 'doUpdateWorkOrder'),
submitEvent.currentTarget, submitEvent.currentTarget,
(responseJSON: { (rawResponseJSON) => {
success: boolean const responseJSON = rawResponseJSON as {
workOrderId?: number success: boolean
errorMessage?: string workOrderId?: number
}) => { errorMessage?: string
}
if (responseJSON.success) { if (responseJSON.success) {
cityssm.disableNavBlocker() clearUnsavedChanges()
if (isCreate) { if (isCreate) {
window.location.href = los.getWorkOrderURL( window.location.href = los.getWorkOrderURL(
@ -66,11 +82,11 @@ declare const bulmaJS: BulmaJS
) )
}) })
const inputElements: NodeListOf<HTMLInputElement | HTMLSelectElement> = const inputElements: NodeListOf<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement> =
workOrderFormElement.querySelectorAll('input, select') workOrderFormElement.querySelectorAll('input, select, textarea')
for (const inputElement of inputElements) { for (const inputElement of inputElements) {
inputElement.addEventListener('change', cityssm.enableNavBlocker) inputElement.addEventListener('change', setUnsavedChanges)
} }
/* /*
@ -83,8 +99,14 @@ declare const bulmaJS: BulmaJS
{ {
workOrderId workOrderId
}, },
(responseJSON: { success: boolean; errorMessage?: string }) => { (rawResponseJSON) => {
const responseJSON = rawResponseJSON as {
success: boolean
errorMessage?: string
}
if (responseJSON.success) { if (responseJSON.success) {
clearUnsavedChanges()
window.location.href = los.getWorkOrderURL(workOrderId) window.location.href = los.getWorkOrderURL(workOrderId)
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
@ -103,8 +125,14 @@ declare const bulmaJS: BulmaJS
{ {
workOrderId workOrderId
}, },
(responseJSON: { success: boolean; errorMessage?: string }) => { (rawResponseJSON) => {
const responseJSON = rawResponseJSON as {
success: boolean
errorMessage?: string
}
if (responseJSON.success) { if (responseJSON.success) {
clearUnsavedChanges()
window.location.href = los.urlPrefix + '/workOrders' window.location.href = los.urlPrefix + '/workOrders'
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
@ -130,28 +158,30 @@ declare const bulmaJS: BulmaJS
bulmaJS.alert({ bulmaJS.alert({
title: 'Outstanding Milestones', title: 'Outstanding Milestones',
message: `You cannot close a work order with 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' contextualColorName: 'warning'
}) })
/* /*
// Disable closing work orders with open milestones // Disable closing work orders with open milestones
bulmaJS.confirm({ bulmaJS.confirm({
title: "Close Work Order with Outstanding Milestones", title: "Close Work Order with Outstanding Milestones",
message: message:
"Are you sure you want to close this work order with outstanding milestones?", "Are you sure you want to close this work order with outstanding milestones?",
contextualColorName: "danger", contextualColorName: "danger",
okButton: { okButton: {
text: "Yes, Close Work Order", text: "Yes, Close Work Order",
callbackFunction: doClose callbackFunction: doClose
} }
}); });
*/ */
} else { } else {
bulmaJS.confirm({ bulmaJS.confirm({
title: 'Close Work Order', title: 'Close Work Order',
message: 'Are you sure you want to close this work order?', message: los.hasUnsavedChanges()
contextualColorName: 'info', ? '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: { okButton: {
text: 'Yes, Close Work Order', text: 'Yes, Close Work Order',
callbackFunction: doClose callbackFunction: doClose
@ -194,11 +224,13 @@ declare const bulmaJS: BulmaJS
* Milestones * Milestones
*/ */
function processMilestoneResponse(responseJSON: { function processMilestoneResponse(rawResponseJSON: unknown): void {
success: boolean const responseJSON = rawResponseJSON as {
errorMessage?: string success: boolean
workOrderMilestones?: recordTypes.WorkOrderMilestone[] errorMessage?: string
}): void { workOrderMilestones?: recordTypes.WorkOrderMilestone[]
}
if (responseJSON.success) { if (responseJSON.success) {
workOrderMilestones = responseJSON.workOrderMilestones! workOrderMilestones = responseJSON.workOrderMilestones!
renderMilestones() 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>
<% } %> <% } %>
<div class="level-item"> <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 class="icon is-small"><i class="fas fa-save" aria-hidden="true"></i></span>
<span> <span>
<%= (isCreate ? "Create" : "Update") %> <%= (isCreate ? "Create" : "Update") %>
@ -80,7 +80,7 @@
</div> </div>
<form id="form--lot"> <form class="mb-5" id="form--lot">
<input id="lot--lotId" name="lotId" type="hidden" value="<%= isCreate ? "" : lot.lotId %>" /> <input id="lot--lotId" name="lotId" type="hidden" value="<%= isCreate ? "" : lot.lotId %>" />
<div class="panel"> <div class="panel">
@ -371,91 +371,91 @@
</div> </div>
<div class="panel"> <div class="panel">
<div class="panel-heading"> <div class="panel-heading">
<div class="level is-mobile"> <div class="level is-mobile">
<div class="level-left"> <div class="level-left">
<div class="level-item"> <div class="level-item">
<h2 class="has-text-weight-bold is-size-5"> <h2 class="has-text-weight-bold is-size-5">
<%= configFunctions.getProperty("aliases.occupancies") %> <%= configFunctions.getProperty("aliases.occupancies") %>
<span class="tag"><%= lot.lotOccupancies.length %></span> <span class="tag"><%= lot.lotOccupancies.length %></span>
</h2> </h2>
</div>
</div> </div>
<div class="level-right"> </div>
<div class="level-item"> <div class="level-right">
<a class="button is-success is-small has-text-weight-normal" href="<%= urlPrefix %>/lotOccupancies/new?lotId=<%= lot.lotId %>"> <div class="level-item">
<span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span> <a class="button is-success is-small has-text-weight-normal" href="<%= urlPrefix %>/lotOccupancies/new?lotId=<%= lot.lotId %>">
<span>Create New <%= configFunctions.getProperty("aliases.occupancy") %></span> <span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span>
</a> <span>Create New <%= configFunctions.getProperty("aliases.occupancy") %></span>
</div> </a>
</div> </div>
</div> </div>
</div> </div>
<div class="panel-block is-block"> </div>
<% if (lot.lotOccupancies.length === 0) { %> <div class="panel-block is-block">
<div class="message is-info"> <% if (lot.lotOccupancies.length === 0) { %>
<p class="message-body"> <div class="message is-info">
There are no <%= configFunctions.getProperty("aliases.occupancy").toLowerCase() %> records <p class="message-body">
asscociated with this <%= configFunctions.getProperty("aliases.lot") %>. There are no <%= configFunctions.getProperty("aliases.occupancy").toLowerCase() %> records
</p> asscociated with this <%= configFunctions.getProperty("aliases.lot") %>.
</div> </p>
<% } else { %> </div>
<table class="table is-fullwidth is-striped is-hoverable"> <% } else { %>
<thead> <table class="table is-fullwidth is-striped is-hoverable">
<tr> <thead>
<th class="has-width-10">&nbsp;</th> <tr>
<th><%= configFunctions.getProperty("aliases.occupancy") %> Type</th> <th class="has-width-10">&nbsp;</th>
<th><%= configFunctions.getProperty("aliases.occupancyStartDate") %></th> <th><%= configFunctions.getProperty("aliases.occupancy") %> Type</th>
<th>End Date</th> <th><%= configFunctions.getProperty("aliases.occupancyStartDate") %></th>
<th><%= configFunctions.getProperty("aliases.occupants") %></th> <th>End Date</th>
</tr> <th><%= configFunctions.getProperty("aliases.occupants") %></th>
</thead> </tr>
<tbody> </thead>
<% const currentDate = dateTimeFunctions.dateToInteger(new Date()); %> <tbody>
<% for (const lotOccupancy of lot.lotOccupancies) { %> <% const currentDate = dateTimeFunctions.dateToInteger(new Date()); %>
<% const isActive = !(lotOccupancy.occupancyEndDate && lotOccupancy.occupancyEndDate < currentDate); %> <% for (const lotOccupancy of lot.lotOccupancies) { %>
<tr> <% const isActive = !(lotOccupancy.occupancyEndDate && lotOccupancy.occupancyEndDate < currentDate); %>
<td class="has-text-centered"> <tr>
<% if (isActive) { %> <td class="has-text-centered">
<i class="fas fa-play" title="Current <%= configFunctions.getProperty("aliases.occupancy") %>"></i> <% if (isActive) { %>
<% } else { %> <i class="fas fa-play" title="Current <%= configFunctions.getProperty("aliases.occupancy") %>"></i>
<i class="fas fa-stop" title="Previous <%= configFunctions.getProperty("aliases.occupancy") %>"></i> <% } else { %>
<% } %> <i class="fas fa-stop" title="Previous <%= configFunctions.getProperty("aliases.occupancy") %>"></i>
</td> <% } %>
<td> </td>
<a class="has-text-weight-bold" href="<%= urlPrefix %>/lotOccupancies/<%= lotOccupancy.lotOccupancyId %>"> <td>
<%= lotOccupancy.occupancyType %> <a class="has-text-weight-bold" href="<%= urlPrefix %>/lotOccupancies/<%= lotOccupancy.lotOccupancyId %>">
</a><br /> <%= lotOccupancy.occupancyType %>
<span class="is-size-7"> </a><br />
#<%= lotOccupancy.lotOccupancyId %> <span class="is-size-7">
</span> #<%= lotOccupancy.lotOccupancyId %>
</td> </span>
<td><%= lotOccupancy.occupancyStartDateString %></td> </td>
<td> <td><%= lotOccupancy.occupancyStartDateString %></td>
<% if (lotOccupancy.occupancyEndDate) { %> <td>
<%= lotOccupancy.occupancyEndDateString %> <% if (lotOccupancy.occupancyEndDate) { %>
<% } else { %> <%= lotOccupancy.occupancyEndDateString %>
<span class="has-text-grey">(No End Date)</span> <% } else { %>
<% } %> <span class="has-text-grey">(No End Date)</span>
</td> <% } %>
<td> </td>
<% if (lotOccupancy.lotOccupancyOccupants.length === 0) { %> <td>
<span class="has-text-grey">(No <%= configFunctions.getProperty("aliases.occupants") %>)</span> <% if (lotOccupancy.lotOccupancyOccupants.length === 0) { %>
<% } else { %> <span class="has-text-grey">(No <%= configFunctions.getProperty("aliases.occupants") %>)</span>
<% for (const occupant of lotOccupancy.lotOccupancyOccupants) { %> <% } else { %>
<span class="has-tooltip-left" data-tooltip="<%= occupant.lotOccupantType %>"> <% for (const occupant of lotOccupancy.lotOccupancyOccupants) { %>
<i class="fas fa-fw fa-<%= occupant.fontAwesomeIconClass || 'user' %>" aria-hidden="true"></i> <span class="has-tooltip-left" data-tooltip="<%= occupant.lotOccupantType %>">
<%= occupant.occupantName + ' ' + occupant.occupantFamilyName %> <i class="fas fa-fw fa-<%= occupant.fontAwesomeIconClass || 'user' %>" aria-hidden="true"></i>
</span><br /> <%= occupant.occupantName + ' ' + occupant.occupantFamilyName %>
<% } %> </span><br />
<% } %> <% } %>
</td> <% } %>
</tr> </td>
<% } %> </tr>
</tbody> <% } %>
</table> </tbody>
<% } %> </table>
</div> <% } %>
</div>
</div> </div>
<% } %> <% } %>

View File

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

View File

@ -4,36 +4,36 @@
<ul> <ul>
<li><a href="<%= urlPrefix %>/dashboard">Home</a></li> <li><a href="<%= urlPrefix %>/dashboard">Home</a></li>
<li> <li>
<a href="<%= urlPrefix %>/maps"> <a href="<%= urlPrefix %>/maps">
<span class="icon is-small"><i class="far fa-map" aria-hidden="true"></i></span> <span class="icon is-small"><i class="far fa-map" aria-hidden="true"></i></span>
<span><%= configFunctions.getProperty("aliases.maps") %></span> <span><%= configFunctions.getProperty("aliases.maps") %></span>
</a> </a>
</li> </li>
<% if (!isCreate) { %> <% if (!isCreate) { %>
<li> <li>
<a href="<%= urlPrefix %>/maps/<%= map.mapId %>" accesskey="v"> <a href="<%= urlPrefix %>/maps/<%= map.mapId %>" accesskey="v">
<%= map.mapName || "(No Name)" %> <%= map.mapName || "(No Name)" %>
</a> </a>
</li> </li>
<% } %> <% } %>
<li class="is-active"> <li class="is-active">
<a href="#" aria-current="page"> <a href="#" aria-current="page">
<% if (isCreate) { %> <% if (isCreate) { %>
Create a New <%= configFunctions.getProperty("aliases.map") %> Create a New <%= configFunctions.getProperty("aliases.map") %>
<% } else { %> <% } else { %>
Update Update
<% } %> <% } %>
</a> </a>
</li> </li>
</ul> </ul>
</nav> </nav>
<h1 class="title is-1"> <h1 class="title is-1">
<% if (isCreate) { %> <% if (isCreate) { %>
Create a New <%= configFunctions.getProperty("aliases.map") %> Create a New <%= configFunctions.getProperty("aliases.map") %>
<% } else { %> <% } else { %>
Update <%= configFunctions.getProperty("aliases.map") %> Update <%= configFunctions.getProperty("aliases.map") %>
<% } %> <% } %>
</h1> </h1>
<div class="level is-fixed-bottom is-mobile has-background-white has-shadow is-hidden-print"> <div class="level is-fixed-bottom is-mobile has-background-white has-shadow is-hidden-print">
@ -48,27 +48,27 @@
<% if (!isCreate) { %> <% if (!isCreate) { %>
<div class="level-item"> <div class="level-item">
<div class="dropdown is-right is-up"> <div class="dropdown is-right is-up">
<div class="dropdown-trigger"> <div class="dropdown-trigger">
<button class="button" type="button"> <button class="button" type="button">
<span>More Options</span> <span>More Options</span>
<span class="icon is-small"> <span class="icon is-small">
<i class="fas fa-angle-up" aria-hidden="true"></i> <i class="fas fa-angle-up" aria-hidden="true"></i>
</span> </span>
</button> </button>
</div> </div>
<div class="dropdown-menu"> <div class="dropdown-menu">
<div class="dropdown-content"> <div class="dropdown-content">
<a class="dropdown-item" id="button--deleteMap" href="#"> <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 class="icon is-small"><i class="fas fa-trash has-text-danger" aria-hidden="true"></i></span>
<span>Delete <%= configFunctions.getProperty("aliases.map") %></span> <span>Delete <%= configFunctions.getProperty("aliases.map") %></span>
</a> </a>
</div>
</div> </div>
</div>
</div> </div>
</div> </div>
<% } %> <% } %>
<div class="level-item"> <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 class="icon is-small"><i class="fas fa-save" aria-hidden="true"></i></span>
<span> <span>
<%= (isCreate ? "Create": "Update") %> <%= (isCreate ? "Create": "Update") %>

View File

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