diff --git a/handlers/api-get/milestoneICS.js b/handlers/api-get/milestoneICS.js index 3b3ef407..71aab4bd 100644 --- a/handlers/api-get/milestoneICS.js +++ b/handlers/api-get/milestoneICS.js @@ -195,6 +195,7 @@ export async function handler(request, response) { }; if (request.query.workOrderId) { workOrderMilestoneFilters.workOrderId = request.query.workOrderId; + workOrderMilestoneFilters.workOrderMilestoneDateFilter = 'notBlank'; } else { workOrderMilestoneFilters.workOrderMilestoneDateFilter = 'recent'; diff --git a/handlers/api-get/milestoneICS.ts b/handlers/api-get/milestoneICS.ts index 108da080..8ef2ab47 100644 --- a/handlers/api-get/milestoneICS.ts +++ b/handlers/api-get/milestoneICS.ts @@ -294,6 +294,7 @@ export async function handler( if (request.query.workOrderId) { workOrderMilestoneFilters.workOrderId = request.query.workOrderId as string + workOrderMilestoneFilters.workOrderMilestoneDateFilter = 'notBlank' } else { workOrderMilestoneFilters.workOrderMilestoneDateFilter = 'recent' } diff --git a/helpers/initializer.database.js b/helpers/initializer.database.js index 60db551b..0a2ecd9d 100644 --- a/helpers/initializer.database.js +++ b/helpers/initializer.database.js @@ -53,7 +53,7 @@ const createStatements = [ `create table if not exists WorkOrderComments (workOrderCommentId integer not null primary key autoincrement, workOrderId integer not null, workOrderCommentDate integer not null check (workOrderCommentDate > 0), workOrderCommentTime integer not null check (workOrderCommentTime >= 0), workOrderComment text not null, ${recordColumns}, foreign key (workOrderId) references WorkOrders (workOrderId))`, 'create index if not exists idx_workordercomments_datetime on WorkOrderComments (workOrderId, workOrderCommentDate, workOrderCommentTime)', `create table if not exists WorkOrderMilestoneTypes (workOrderMilestoneTypeId integer not null primary key autoincrement, workOrderMilestoneType varchar(100) not null, orderNumber smallint not null default 0, ${recordColumns})`, - `create table if not exists WorkOrderMilestones (workOrderMilestoneId integer not null primary key autoincrement, workOrderId integer not null, workOrderMilestoneTypeId integer, workOrderMilestoneDate integer not null check (workOrderMilestoneDate > 0), workOrderMilestoneTime integer not null check (workOrderMilestoneTime >= 0), workOrderMilestoneDescription text not null, workOrderMilestoneCompletionDate integer check (workOrderMilestoneCompletionDate > 0), workOrderMilestoneCompletionTime integer check (workOrderMilestoneCompletionTime >= 0), ${recordColumns}, foreign key (workOrderId) references WorkOrders (workOrderId), foreign key (workOrderMilestoneTypeId) references WorkOrderMilestoneTypes (workOrderMilestoneTypeId))` + `create table if not exists WorkOrderMilestones (workOrderMilestoneId integer not null primary key autoincrement, workOrderId integer not null, workOrderMilestoneTypeId integer, workOrderMilestoneDate integer not null check (workOrderMilestoneDate >= 0), workOrderMilestoneTime integer not null check (workOrderMilestoneTime >= 0), workOrderMilestoneDescription text not null, workOrderMilestoneCompletionDate integer check (workOrderMilestoneCompletionDate > 0), workOrderMilestoneCompletionTime integer check (workOrderMilestoneCompletionTime >= 0), ${recordColumns}, foreign key (workOrderId) references WorkOrders (workOrderId), foreign key (workOrderMilestoneTypeId) references WorkOrderMilestoneTypes (workOrderMilestoneTypeId))` ]; export function initializeDatabase() { const lotOccupancyDB = sqlite(databasePath); diff --git a/helpers/initializer.database.ts b/helpers/initializer.database.ts index 25fa491d..cb514447 100644 --- a/helpers/initializer.database.ts +++ b/helpers/initializer.database.ts @@ -68,7 +68,7 @@ const createStatements = [ `create table if not exists WorkOrderComments (workOrderCommentId integer not null primary key autoincrement, workOrderId integer not null, workOrderCommentDate integer not null check (workOrderCommentDate > 0), workOrderCommentTime integer not null check (workOrderCommentTime >= 0), workOrderComment text not null, ${recordColumns}, foreign key (workOrderId) references WorkOrders (workOrderId))`, 'create index if not exists idx_workordercomments_datetime on WorkOrderComments (workOrderId, workOrderCommentDate, workOrderCommentTime)', `create table if not exists WorkOrderMilestoneTypes (workOrderMilestoneTypeId integer not null primary key autoincrement, workOrderMilestoneType varchar(100) not null, orderNumber smallint not null default 0, ${recordColumns})`, - `create table if not exists WorkOrderMilestones (workOrderMilestoneId integer not null primary key autoincrement, workOrderId integer not null, workOrderMilestoneTypeId integer, workOrderMilestoneDate integer not null check (workOrderMilestoneDate > 0), workOrderMilestoneTime integer not null check (workOrderMilestoneTime >= 0), workOrderMilestoneDescription text not null, workOrderMilestoneCompletionDate integer check (workOrderMilestoneCompletionDate > 0), workOrderMilestoneCompletionTime integer check (workOrderMilestoneCompletionTime >= 0), ${recordColumns}, foreign key (workOrderId) references WorkOrders (workOrderId), foreign key (workOrderMilestoneTypeId) references WorkOrderMilestoneTypes (workOrderMilestoneTypeId))` + `create table if not exists WorkOrderMilestones (workOrderMilestoneId integer not null primary key autoincrement, workOrderId integer not null, workOrderMilestoneTypeId integer, workOrderMilestoneDate integer not null check (workOrderMilestoneDate >= 0), workOrderMilestoneTime integer not null check (workOrderMilestoneTime >= 0), workOrderMilestoneDescription text not null, workOrderMilestoneCompletionDate integer check (workOrderMilestoneCompletionDate > 0), workOrderMilestoneCompletionTime integer check (workOrderMilestoneCompletionTime >= 0), ${recordColumns}, foreign key (workOrderId) references WorkOrders (workOrderId), foreign key (workOrderMilestoneTypeId) references WorkOrderMilestoneTypes (workOrderMilestoneTypeId))` ] export function initializeDatabase(): boolean { diff --git a/helpers/lotOccupancyDB/addWorkOrderMilestone.js b/helpers/lotOccupancyDB/addWorkOrderMilestone.js index 74ff3fb4..e32ed065 100644 --- a/helpers/lotOccupancyDB/addWorkOrderMilestone.js +++ b/helpers/lotOccupancyDB/addWorkOrderMilestone.js @@ -12,7 +12,9 @@ export async function addWorkOrderMilestone(milestoneForm, requestSession) { recordCreate_userName, recordCreate_timeMillis, recordUpdate_userName, recordUpdate_timeMillis) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`) - .run(milestoneForm.workOrderId, milestoneForm.workOrderMilestoneTypeId ?? undefined, dateStringToInteger(milestoneForm.workOrderMilestoneDateString), milestoneForm.workOrderMilestoneTimeString + .run(milestoneForm.workOrderId, milestoneForm.workOrderMilestoneTypeId ?? undefined, milestoneForm.workOrderMilestoneDateString === '' + ? 0 + : dateStringToInteger(milestoneForm.workOrderMilestoneDateString), milestoneForm.workOrderMilestoneTimeString ? timeStringToInteger(milestoneForm.workOrderMilestoneTimeString) : 0, milestoneForm.workOrderMilestoneDescription, milestoneForm.workOrderMilestoneCompletionDateString ? dateStringToInteger(milestoneForm.workOrderMilestoneCompletionDateString) diff --git a/helpers/lotOccupancyDB/addWorkOrderMilestone.ts b/helpers/lotOccupancyDB/addWorkOrderMilestone.ts index 92de0ab1..ba388889 100644 --- a/helpers/lotOccupancyDB/addWorkOrderMilestone.ts +++ b/helpers/lotOccupancyDB/addWorkOrderMilestone.ts @@ -41,7 +41,9 @@ export async function addWorkOrderMilestone( .run( milestoneForm.workOrderId, milestoneForm.workOrderMilestoneTypeId ?? undefined, - dateStringToInteger(milestoneForm.workOrderMilestoneDateString), + milestoneForm.workOrderMilestoneDateString === '' + ? 0 + : dateStringToInteger(milestoneForm.workOrderMilestoneDateString), milestoneForm.workOrderMilestoneTimeString ? timeStringToInteger(milestoneForm.workOrderMilestoneTimeString) : 0, diff --git a/helpers/lotOccupancyDB/getWorkOrderMilestones.d.ts b/helpers/lotOccupancyDB/getWorkOrderMilestones.d.ts index 4161b7a2..62eca364 100644 --- a/helpers/lotOccupancyDB/getWorkOrderMilestones.d.ts +++ b/helpers/lotOccupancyDB/getWorkOrderMilestones.d.ts @@ -2,7 +2,7 @@ import type { PoolConnection } from 'better-sqlite-pool'; import type * as recordTypes from '../../types/recordTypes'; export interface WorkOrderMilestoneFilters { workOrderId?: number | string; - workOrderMilestoneDateFilter?: 'upcomingMissed' | 'recent' | 'date'; + workOrderMilestoneDateFilter?: 'upcomingMissed' | 'recent' | 'date' | 'blank' | 'notBlank'; workOrderMilestoneDateString?: string; workOrderTypeIds?: string; workOrderMilestoneTypeIds?: string; diff --git a/helpers/lotOccupancyDB/getWorkOrderMilestones.js b/helpers/lotOccupancyDB/getWorkOrderMilestones.js index 0434c603..fa4eee76 100644 --- a/helpers/lotOccupancyDB/getWorkOrderMilestones.js +++ b/helpers/lotOccupancyDB/getWorkOrderMilestones.js @@ -33,6 +33,14 @@ function buildWhereClause(filters) { sqlParameters.push(recentBeforeDateNumber, recentAfterDateNumber); break; } + case 'blank': { + sqlWhereClause += ' and m.workOrderMilestoneDate = 0'; + break; + } + case 'notBlank': { + sqlWhereClause += ' and m.workOrderMilestoneDate > 0'; + break; + } } if ((filters.workOrderMilestoneDateString ?? '') !== '') { sqlWhereClause += ' and m.workOrderMilestoneDate = ?'; @@ -64,16 +72,16 @@ export async function getWorkOrderMilestones(filters, options, connectedDatabase switch (options.orderBy) { case 'completion': { orderByClause = ` order by - m.workOrderMilestoneCompletionDate, m.workOrderMilestoneCompletionTime, - m.workOrderMilestoneDate, - case when m.workOrderMilestoneTime = 0 then 9999 else m.workOrderMilestoneTime end, - t.orderNumber, m.workOrderMilestoneId`; + m.workOrderMilestoneCompletionDate, m.workOrderMilestoneCompletionTime, + m.workOrderMilestoneDate, + case when m.workOrderMilestoneTime = 0 then 9999 else m.workOrderMilestoneTime end, + t.orderNumber, m.workOrderMilestoneId`; break; } case 'date': { orderByClause = ` order by m.workOrderMilestoneDate, - case when m.workOrderMilestoneTime = 0 then 9999 else m.workOrderMilestoneTime end, - t.orderNumber, m.workOrderId, m.workOrderMilestoneId`; + case when m.workOrderMilestoneTime = 0 then 9999 else m.workOrderMilestoneTime end, + t.orderNumber, m.workOrderId, m.workOrderMilestoneId`; break; } } diff --git a/helpers/lotOccupancyDB/getWorkOrderMilestones.ts b/helpers/lotOccupancyDB/getWorkOrderMilestones.ts index 385eedc6..8a7fc205 100644 --- a/helpers/lotOccupancyDB/getWorkOrderMilestones.ts +++ b/helpers/lotOccupancyDB/getWorkOrderMilestones.ts @@ -17,7 +17,7 @@ import type * as recordTypes from '../../types/recordTypes' export interface WorkOrderMilestoneFilters { workOrderId?: number | string - workOrderMilestoneDateFilter?: 'upcomingMissed' | 'recent' | 'date' + workOrderMilestoneDateFilter?: 'upcomingMissed' | 'recent' | 'date' | 'blank' | 'notBlank' workOrderMilestoneDateString?: string workOrderTypeIds?: string workOrderMilestoneTypeIds?: string @@ -81,6 +81,16 @@ function buildWhereClause(filters: WorkOrderMilestoneFilters): { sqlParameters.push(recentBeforeDateNumber, recentAfterDateNumber) break } + + case 'blank': { + sqlWhereClause += ' and m.workOrderMilestoneDate = 0' + break + } + + case 'notBlank': { + sqlWhereClause += ' and m.workOrderMilestoneDate > 0' + break + } } if ((filters.workOrderMilestoneDateString ?? '') !== '') { @@ -133,17 +143,17 @@ export async function getWorkOrderMilestones( switch (options.orderBy) { case 'completion': { orderByClause = ` order by - m.workOrderMilestoneCompletionDate, m.workOrderMilestoneCompletionTime, - m.workOrderMilestoneDate, - case when m.workOrderMilestoneTime = 0 then 9999 else m.workOrderMilestoneTime end, - t.orderNumber, m.workOrderMilestoneId` + m.workOrderMilestoneCompletionDate, m.workOrderMilestoneCompletionTime, + m.workOrderMilestoneDate, + case when m.workOrderMilestoneTime = 0 then 9999 else m.workOrderMilestoneTime end, + t.orderNumber, m.workOrderMilestoneId` break } case 'date': { orderByClause = ` order by m.workOrderMilestoneDate, - case when m.workOrderMilestoneTime = 0 then 9999 else m.workOrderMilestoneTime end, - t.orderNumber, m.workOrderId, m.workOrderMilestoneId` + case when m.workOrderMilestoneTime = 0 then 9999 else m.workOrderMilestoneTime end, + t.orderNumber, m.workOrderId, m.workOrderMilestoneId` break } } diff --git a/helpers/lotOccupancyDB/updateWorkOrderMilestone.js b/helpers/lotOccupancyDB/updateWorkOrderMilestone.js index 1fc3e9ab..1faf079c 100644 --- a/helpers/lotOccupancyDB/updateWorkOrderMilestone.js +++ b/helpers/lotOccupancyDB/updateWorkOrderMilestone.js @@ -14,7 +14,9 @@ export async function updateWorkOrderMilestone(milestoneForm, requestSession) { where workOrderMilestoneId = ?`) .run(milestoneForm.workOrderMilestoneTypeId === '' ? undefined - : milestoneForm.workOrderMilestoneTypeId, dateStringToInteger(milestoneForm.workOrderMilestoneDateString), (milestoneForm.workOrderMilestoneTimeString ?? '') === '' + : milestoneForm.workOrderMilestoneTypeId, milestoneForm.workOrderMilestoneDateString === '' + ? 0 + : dateStringToInteger(milestoneForm.workOrderMilestoneDateString), (milestoneForm.workOrderMilestoneTimeString ?? '') === '' ? 0 : timeStringToInteger(milestoneForm.workOrderMilestoneTimeString), milestoneForm.workOrderMilestoneDescription, requestSession.user.userName, rightNow.getTime(), milestoneForm.workOrderMilestoneId); database.release(); diff --git a/helpers/lotOccupancyDB/updateWorkOrderMilestone.ts b/helpers/lotOccupancyDB/updateWorkOrderMilestone.ts index ad88fe6f..d265448e 100644 --- a/helpers/lotOccupancyDB/updateWorkOrderMilestone.ts +++ b/helpers/lotOccupancyDB/updateWorkOrderMilestone.ts @@ -38,7 +38,9 @@ export async function updateWorkOrderMilestone( milestoneForm.workOrderMilestoneTypeId === '' ? undefined : milestoneForm.workOrderMilestoneTypeId, - dateStringToInteger(milestoneForm.workOrderMilestoneDateString), + milestoneForm.workOrderMilestoneDateString === '' + ? 0 + : dateStringToInteger(milestoneForm.workOrderMilestoneDateString), (milestoneForm.workOrderMilestoneTimeString ?? '') === '' ? 0 : timeStringToInteger(milestoneForm.workOrderMilestoneTimeString!), diff --git a/public-typescript/workOrderEdit.js b/public-typescript/workOrderEdit.js index 2db20a7d..9995a610 100644 --- a/public-typescript/workOrderEdit.js +++ b/public-typescript/workOrderEdit.js @@ -929,7 +929,8 @@ Object.defineProperty(exports, "__esModule", { value: true }); bulmaJS.confirm({ title: 'Complete Milestone', message: 'Are you sure you want to complete this milestone?' + - (workOrderMilestone.workOrderMilestoneDateString > currentDateString + (workOrderMilestone.workOrderMilestoneDateString !== '' && + workOrderMilestone.workOrderMilestoneDateString > currentDateString ? '
Note that this milestone is expected to be completed in the future.' : ''), messageIsHtml: true, @@ -1077,7 +1078,9 @@ Object.defineProperty(exports, "__esModule", { value: true }); cityssm.escapeHTML((_a = milestone.workOrderMilestoneType) !== null && _a !== void 0 ? _a : '') + '
' : '') + - milestone.workOrderMilestoneDateString + + (milestone.workOrderMilestoneDate === 0 + ? '(No Set Date)' + : milestone.workOrderMilestoneDateString) + (milestone.workOrderMilestoneTime ? ' ' + milestone.workOrderMilestoneTimeString : '') + @@ -1150,7 +1153,9 @@ Object.defineProperty(exports, "__esModule", { value: true }); } }); } - if (addModalElement.querySelector('#milestoneAdd--workOrderMilestoneDateString').value < currentDateString) { + const milestoneDateString = addModalElement.querySelector('#milestoneAdd--workOrderMilestoneDateString').value; + if (milestoneDateString !== '' && + milestoneDateString < currentDateString) { bulmaJS.confirm({ title: 'Milestone Date in the Past', message: 'Are you sure you want to create a milestone with a date in the past?', diff --git a/public-typescript/workOrderEdit/workOrderEdit.js b/public-typescript/workOrderEdit/workOrderEdit.js index 86c4ef0e..6a4a378b 100644 --- a/public-typescript/workOrderEdit/workOrderEdit.js +++ b/public-typescript/workOrderEdit/workOrderEdit.js @@ -174,7 +174,8 @@ Object.defineProperty(exports, "__esModule", { value: true }); bulmaJS.confirm({ title: 'Complete Milestone', message: 'Are you sure you want to complete this milestone?' + - (workOrderMilestone.workOrderMilestoneDateString > currentDateString + (workOrderMilestone.workOrderMilestoneDateString !== '' && + workOrderMilestone.workOrderMilestoneDateString > currentDateString ? '
Note that this milestone is expected to be completed in the future.' : ''), messageIsHtml: true, @@ -322,7 +323,9 @@ Object.defineProperty(exports, "__esModule", { value: true }); cityssm.escapeHTML((_a = milestone.workOrderMilestoneType) !== null && _a !== void 0 ? _a : '') + '
' : '') + - milestone.workOrderMilestoneDateString + + (milestone.workOrderMilestoneDate === 0 + ? '(No Set Date)' + : milestone.workOrderMilestoneDateString) + (milestone.workOrderMilestoneTime ? ' ' + milestone.workOrderMilestoneTimeString : '') + @@ -395,7 +398,9 @@ Object.defineProperty(exports, "__esModule", { value: true }); } }); } - if (addModalElement.querySelector('#milestoneAdd--workOrderMilestoneDateString').value < currentDateString) { + const milestoneDateString = addModalElement.querySelector('#milestoneAdd--workOrderMilestoneDateString').value; + if (milestoneDateString !== '' && + milestoneDateString < currentDateString) { bulmaJS.confirm({ title: 'Milestone Date in the Past', message: 'Are you sure you want to create a milestone with a date in the past?', diff --git a/public-typescript/workOrderEdit/workOrderEdit.ts b/public-typescript/workOrderEdit/workOrderEdit.ts index 869d85d5..3b0e6094 100644 --- a/public-typescript/workOrderEdit/workOrderEdit.ts +++ b/public-typescript/workOrderEdit/workOrderEdit.ts @@ -244,7 +244,8 @@ declare const bulmaJS: BulmaJS title: 'Complete Milestone', message: 'Are you sure you want to complete this milestone?' + - (workOrderMilestone.workOrderMilestoneDateString! > currentDateString + (workOrderMilestone.workOrderMilestoneDateString !== '' && + workOrderMilestone.workOrderMilestoneDateString! > currentDateString ? '
Note that this milestone is expected to be completed in the future.' : ''), messageIsHtml: true, @@ -481,7 +482,9 @@ declare const bulmaJS: BulmaJS cityssm.escapeHTML(milestone.workOrderMilestoneType ?? '') + '
' : '') + - milestone.workOrderMilestoneDateString + + (milestone.workOrderMilestoneDate === 0 + ? '(No Set Date)' + : milestone.workOrderMilestoneDateString) + (milestone.workOrderMilestoneTime ? ' ' + milestone.workOrderMilestoneTimeString : '') + @@ -579,12 +582,15 @@ declare const bulmaJS: BulmaJS ) } + const milestoneDateString = ( + addModalElement.querySelector( + '#milestoneAdd--workOrderMilestoneDateString' + ) as HTMLInputElement + ).value + if ( - ( - addModalElement.querySelector( - '#milestoneAdd--workOrderMilestoneDateString' - ) as HTMLInputElement - ).value < currentDateString + milestoneDateString !== '' && + milestoneDateString < currentDateString ) { bulmaJS.confirm({ title: 'Milestone Date in the Past', diff --git a/public-typescript/workOrderMilestoneCalendar.js b/public-typescript/workOrderMilestoneCalendar.js index c99e8252..48e9ea63 100644 --- a/public-typescript/workOrderMilestoneCalendar.js +++ b/public-typescript/workOrderMilestoneCalendar.js @@ -18,7 +18,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); milestoneCalendarContainerElement.innerHTML = ''; const currentDate = cityssm.dateToString(new Date()); let currentPanelElement; - let currentPanelDateString = ''; + let currentPanelDateString = 'x'; for (const milestone of workOrderMilestones) { if (currentPanelDateString !== milestone.workOrderMilestoneDateString) { if (currentPanelElement) { @@ -26,12 +26,17 @@ Object.defineProperty(exports, "__esModule", { value: true }); } currentPanelElement = document.createElement('div'); currentPanelElement.className = 'panel'; - currentPanelElement.innerHTML = `

${milestone.workOrderMilestoneDateString}

`; + currentPanelElement.innerHTML = `

+ ${milestone.workOrderMilestoneDate === 0 + ? 'No Set Date' + : milestone.workOrderMilestoneDateString} +

`; currentPanelDateString = milestone.workOrderMilestoneDateString; } const panelBlockElement = document.createElement('div'); panelBlockElement.className = 'panel-block is-block'; if (!milestone.workOrderMilestoneCompletionDate && + milestone.workOrderMilestoneDateString !== '' && milestone.workOrderMilestoneDateString < currentDate) { panelBlockElement.classList.add('has-background-warning-light'); } diff --git a/public-typescript/workOrderMilestoneCalendar.ts b/public-typescript/workOrderMilestoneCalendar.ts index eacaf112..3dabe1be 100644 --- a/public-typescript/workOrderMilestoneCalendar.ts +++ b/public-typescript/workOrderMilestoneCalendar.ts @@ -41,7 +41,7 @@ declare const cityssm: cityssmGlobal const currentDate = cityssm.dateToString(new Date()) let currentPanelElement: HTMLElement | undefined - let currentPanelDateString = '' + let currentPanelDateString = 'x' for (const milestone of workOrderMilestones) { if (currentPanelDateString !== milestone.workOrderMilestoneDateString) { @@ -52,7 +52,13 @@ declare const cityssm: cityssmGlobal currentPanelElement = document.createElement('div') currentPanelElement.className = 'panel' - currentPanelElement.innerHTML = `

${milestone.workOrderMilestoneDateString!}

` + currentPanelElement.innerHTML = `

+ ${ + milestone.workOrderMilestoneDate === 0 + ? 'No Set Date' + : milestone.workOrderMilestoneDateString! + } +

` currentPanelDateString = milestone.workOrderMilestoneDateString! } @@ -63,6 +69,7 @@ declare const cityssm: cityssmGlobal if ( !milestone.workOrderMilestoneCompletionDate && + milestone.workOrderMilestoneDateString !== '' && milestone.workOrderMilestoneDateString! < currentDate ) { panelBlockElement.classList.add('has-background-warning-light') diff --git a/public/html/workOrder-addMilestone.html b/public/html/workOrder-addMilestone.html index 650ecb00..1c6807f3 100644 --- a/public/html/workOrder-addMilestone.html +++ b/public/html/workOrder-addMilestone.html @@ -47,7 +47,6 @@ id="milestoneAdd--workOrderMilestoneDateString" name="workOrderMilestoneDateString" type="date" - required /> diff --git a/public/html/workOrder-editMilestone.html b/public/html/workOrder-editMilestone.html index 40fa39cd..eda087c6 100644 --- a/public/html/workOrder-editMilestone.html +++ b/public/html/workOrder-editMilestone.html @@ -53,7 +53,6 @@ id="milestoneEdit--workOrderMilestoneDateString" name="workOrderMilestoneDateString" type="date" - required /> diff --git a/public/javascripts/workOrderEdit.min.js b/public/javascripts/workOrderEdit.min.js index 30b3a5e1..aa184ee9 100644 --- a/public/javascripts/workOrderEdit.min.js +++ b/public/javascripts/workOrderEdit.min.js @@ -1 +1 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{var e;const t=exports.los,o=document.querySelector("#workOrderEdit--workOrderId").value,r=""===o,s=document.querySelector("#form--workOrderEdit");t.initializeDatePickers(s.querySelector("#workOrderEdit--workOrderOpenDateString").closest(".field")),t.initializeUnlockFieldButtons(s),s.addEventListener("submit",e=>{e.preventDefault(),cityssm.postJSON(t.urlPrefix+"/workOrders/"+(r?"doCreateWorkOrder":"doUpdateWorkOrder"),e.currentTarget,e=>{var o;e.success?(cityssm.disableNavBlocker(),r?window.location.href=t.getWorkOrderURL(e.workOrderId,!0):bulmaJS.alert({message:"Work Order Updated Successfully",contextualColorName:"success"})):bulmaJS.alert({title:"Error Updating Work Order",message:null!==(o=e.errorMessage)&&void 0!==o?o:"",contextualColorName:"danger"})})});const n=s.querySelectorAll("input, select");for(const e of n)e.addEventListener("change",cityssm.enableNavBlocker);function a(){cityssm.postJSON(t.urlPrefix+"/workOrders/doCloseWorkOrder",{workOrderId:o},e=>{var r;e.success?window.location.href=t.urlPrefix+"/workOrders/"+o:bulmaJS.alert({title:"Error Closing Work Order",message:null!==(r=e.errorMessage)&&void 0!==r?r:"",contextualColorName:"danger"})})}function l(){cityssm.postJSON(t.urlPrefix+"/workOrders/doDeleteWorkOrder",{workOrderId:o},e=>{var o;e.success?window.location.href=t.urlPrefix+"/workOrders":bulmaJS.alert({title:"Error Deleting Work Order",message:null!==(o=e.errorMessage)&&void 0!==o?o:"",contextualColorName:"danger"})})}let i;if(null===(S=document.querySelector("#button--closeWorkOrder"))||void 0===S||S.addEventListener("click",()=>{i.some(e=>!e.workOrderMilestoneCompletionDate)?bulmaJS.alert({title:"Outstanding Milestones",message:"You cannot close a work order with outstanding milestones.\n Either complete the outstanding milestones, or remove them from the work order.",contextualColorName:"warning"}):bulmaJS.confirm({title:"Close Work Order",message:"Are you sure you want to close this work order?",contextualColorName:"info",okButton:{text:"Yes, Close Work Order",callbackFunction:a}})}),null===(c=document.querySelector("#button--deleteWorkOrder"))||void 0===c||c.addEventListener("click",e=>{e.preventDefault(),bulmaJS.confirm({title:"Delete Work Order",message:"Are you sure you want to delete this work order?",contextualColorName:"warning",okButton:{text:"Yes, Delete Work Order",callbackFunction:l}})}),!r){var c;Object.defineProperty(exports,"__esModule",{value:!0});let e=exports.workOrderLots;delete exports.workOrderLots;let r=exports.workOrderLotOccupancies;function d(e){const s=e.currentTarget.closest(".container--lotOccupancy").dataset.lotOccupancyId;bulmaJS.confirm({title:`Delete ${t.escapedAliases.Occupancy} Relationship`,message:`Are you sure you want to remove the relationship to this ${t.escapedAliases.occupancy} record from this work order? Note that the record will remain.`,contextualColorName:"warning",okButton:{text:"Yes, Delete Relationship",callbackFunction:function(){cityssm.postJSON(t.urlPrefix+"/workOrders/doDeleteWorkOrderLotOccupancy",{workOrderId:o,lotOccupancyId:s},e=>{var t;e.success?(r=e.workOrderLotOccupancies,O()):bulmaJS.alert({title:"Error Deleting Relationship",message:null!==(t=e.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})})}}})}function u(r,s){cityssm.postJSON(t.urlPrefix+"/workOrders/doAddWorkOrderLot",{workOrderId:o,lotId:r},o=>{var r;o.success?(e=o.workOrderLots,O()):bulmaJS.alert({title:`Error Adding ${t.escapedAliases.Lot}`,message:null!==(r=o.errorMessage)&&void 0!==r?r:"",contextualColorName:"danger"}),s&&s(o.success)})}function m(e){u(e.currentTarget.dataset.lotId)}function p(r){const s=Number.parseInt(r.currentTarget.closest(".container--lot").dataset.lotId,10),n=e.find(e=>e.lotId===s);let a;function l(o){o.preventDefault(),cityssm.postJSON(t.urlPrefix+"/workOrders/doUpdateLotStatus",o.currentTarget,t=>{var o;t.success?(e=t.workOrderLots,O(),a()):bulmaJS.alert({title:"Error Deleting Relationship",message:null!==(o=t.errorMessage)&&void 0!==o?o:"",contextualColorName:"danger"})})}cityssm.openHtmlModal("lot-editLotStatus",{onshow(e){t.populateAliases(e),e.querySelector("#lotStatusEdit--lotId").value=s.toString(),e.querySelector("#lotStatusEdit--lotName").value=n.lotName;const r=e.querySelector("#lotStatusEdit--lotStatusId");let a=!1;for(const e of exports.lotStatuses){const t=document.createElement("option");t.value=e.lotStatusId.toString(),t.textContent=e.lotStatus,e.lotStatusId===n.lotStatusId&&(a=!0),r.append(t)}if(!a&&n.lotStatusId){const e=document.createElement("option");e.value=n.lotStatusId.toString(),e.textContent=n.lotStatus,r.append(e)}n.lotStatusId&&(r.value=n.lotStatusId.toString()),e.querySelector("form").insertAdjacentHTML("beforeend",``)},onshown(e,t){a=t,bulmaJS.toggleHtmlClipped(),e.querySelector("form").addEventListener("submit",l)},onremoved(){bulmaJS.toggleHtmlClipped()}})}function y(r){const s=r.currentTarget.closest(".container--lot").dataset.lotId;bulmaJS.confirm({title:`Delete ${t.escapedAliases.Occupancy} Relationship`,message:`Are you sure you want to remove the relationship to this ${t.escapedAliases.occupancy} record from this work order? Note that the record will remain.`,contextualColorName:"warning",okButton:{text:"Yes, Delete Relationship",callbackFunction:function(){cityssm.postJSON(t.urlPrefix+"/workOrders/doDeleteWorkOrderLot",{workOrderId:o,lotId:s},t=>{var o;t.success?(e=t.workOrderLots,O()):bulmaJS.alert({title:"Error Deleting Relationship",message:null!==(o=t.errorMessage)&&void 0!==o?o:"",contextualColorName:"danger"})})}}})}function O(){!function(){var o,s,n,a;const l=document.querySelector("#container--lotOccupancies");if(document.querySelector(".tabs a[href='#relatedTab--lotOccupancies'] .tag").textContent=r.length.toString(),0===r.length)return void(l.innerHTML=`
\n

There are no ${t.escapedAliases.occupancies} associated with this work order.

\n
`);l.innerHTML=`\n \n \n \n \n \n \n \n \n \n \n
${t.escapedAliases.Occupancy} Type${t.escapedAliases.Lot}${t.escapedAliases.OccupancyStartDate}End Date${t.escapedAliases.Occupants}
`;const i=cityssm.dateToString(new Date);for(const c of r){const r=document.createElement("tr");r.className="container--lotOccupancy",r.dataset.lotOccupancyId=c.lotOccupancyId.toString();const u=!(c.occupancyEndDate&&c.occupancyEndDateStringc.lotId===e.lotId);r.innerHTML=''+(u?'':'')+''+cityssm.escapeHTML(null!==(o=c.occupancyType)&&void 0!==o?o:"")+"",c.lotId?r.insertAdjacentHTML("beforeend",""+cityssm.escapeHTML(null!==(s=c.lotName)&&void 0!==s?s:"")+(p?"":' ')+""):r.insertAdjacentHTML("beforeend",`(No ${t.escapedAliases.Lot})`),r.insertAdjacentHTML("beforeend",""+c.occupancyStartDateString+""+(c.occupancyEndDate?c.occupancyEndDateString:'(No End Date)')+""+(0===c.lotOccupancyOccupants.length?'(No '+t.escapedAliases.Occupants+")":null===(n=c.lotOccupancyOccupants)||void 0===n?void 0:n.reduce((e,o)=>{var r;return e+' '+cityssm.escapeHTML(o.occupantName)+" "+cityssm.escapeHTML(o.occupantFamilyName)+"
"},""))+''),null===(a=r.querySelector(".button--addLot"))||void 0===a||a.addEventListener("click",m),r.querySelector(".button--deleteLotOccupancy").addEventListener("click",d),l.querySelector("tbody").append(r)}}(),function(){var o,r,s,n;const a=document.querySelector("#container--lots");if(document.querySelector(".tabs a[href='#relatedTab--lots'] .tag").textContent=e.length.toString(),0!==e.length){a.innerHTML=`\n \n \n \n \n \n \n \n \n
${t.escapedAliases.Lot}${t.escapedAliases.Map}${t.escapedAliases.Lot} TypeStatus
`;for(const l of e){const e=document.createElement("tr");e.className="container--lot",e.dataset.lotId=l.lotId.toString(),e.innerHTML=''+cityssm.escapeHTML(null!==(o=l.lotName)&&void 0!==o?o:"")+""+cityssm.escapeHTML(null!==(r=l.mapName)&&void 0!==r?r:"")+""+cityssm.escapeHTML(null!==(s=l.lotType)&&void 0!==s?s:"")+""+(l.lotStatusId?cityssm.escapeHTML(null!==(n=l.lotStatus)&&void 0!==n?n:""):'(No Status)')+' ',e.querySelector(".button--editLotStatus").addEventListener("click",p),e.querySelector(".button--deleteLot").addEventListener("click",y),a.querySelector("tbody").append(e)}}else a.innerHTML=`
\n

There are no ${t.escapedAliases.lots} associated with this work order.

\n
`}()}function h(e){const s=e.currentTarget.closest("tr");!function(e,s){cityssm.postJSON(t.urlPrefix+"/workOrders/doAddWorkOrderLotOccupancy",{workOrderId:o,lotOccupancyId:e},e=>{var o;e.success?(r=e.workOrderLotOccupancies,O()):bulmaJS.alert({title:"Error Adding "+t.escapedAliases.Occupancy,message:null!==(o=e.errorMessage)&&void 0!==o?o:"",contextualColorName:"danger"}),s&&s(e.success)})}(s.dataset.lotOccupancyId,e=>{e&&s.remove()})}function w(e){const t=e.currentTarget.closest("tr");u(t.dataset.lotId,e=>{e&&t.remove()})}delete exports.workOrderLotOccupancies,O(),null===(S=document.querySelector("#button--addLotOccupancy"))||void 0===S||S.addEventListener("click",()=>{let e,r;function s(o){o&&o.preventDefault(),r.innerHTML=t.getLoadingParagraphHTML("Searching..."),cityssm.postJSON(t.urlPrefix+"/lotOccupancies/doSearchLotOccupancies",e,e=>{var o,s;if(0!==e.lotOccupancies.length){r.innerHTML=`\n \n \n \n \n \n \n \n \n \n
${t.escapedAliases.Occupancy} Type${t.escapedAliases.Lot}${t.escapedAliases.OccupancyStartDate}End Date${t.escapedAliases.Occupants}
`;for(const n of e.lotOccupancies){const e=document.createElement("tr");e.className="container--lotOccupancy",e.dataset.lotOccupancyId=n.lotOccupancyId.toString(),e.innerHTML=''+cityssm.escapeHTML(null!==(o=n.occupancyType)&&void 0!==o?o:"")+"",n.lotId?e.insertAdjacentHTML("beforeend",""+cityssm.escapeHTML(null!==(s=n.lotName)&&void 0!==s?s:"")+""):e.insertAdjacentHTML("beforeend",`(No ${t.escapedAliases.Lot})`),e.insertAdjacentHTML("beforeend",""+n.occupancyStartDateString+""+(n.occupancyEndDate?n.occupancyEndDateString:'(No End Date)')+""+(0===n.lotOccupancyOccupants.length?'(No '+cityssm.escapeHTML(t.escapedAliases.Occupants)+")":cityssm.escapeHTML(n.lotOccupancyOccupants[0].occupantName+" "+n.lotOccupancyOccupants[0].occupantFamilyName)+(n.lotOccupancyOccupants.length>1?" plus "+(n.lotOccupancyOccupants.length-1):""))+""),e.querySelector(".button--addLotOccupancy").addEventListener("click",h),r.querySelector("tbody").append(e)}}else r.innerHTML='
\n

There are no records that meet the search criteria.

\n
'})}cityssm.openHtmlModal("workOrder-addLotOccupancy",{onshow(n){t.populateAliases(n),e=n.querySelector("form"),r=n.querySelector("#resultsContainer--lotOccupancyAdd"),n.querySelector("#lotOccupancySearch--notWorkOrderId").value=o,n.querySelector("#lotOccupancySearch--occupancyEffectiveDateString").value=document.querySelector("#workOrderEdit--workOrderOpenDateString").value,s()},onshown(t){bulmaJS.toggleHtmlClipped();const o=t.querySelector("#lotOccupancySearch--occupantName");o.addEventListener("change",s),o.focus(),t.querySelector("#lotOccupancySearch--lotName").addEventListener("change",s),e.addEventListener("submit",s)},onremoved(){bulmaJS.toggleHtmlClipped(),document.querySelector("#button--addLotOccupancy").focus()}})}),null===(c=document.querySelector("#button--addLot"))||void 0===c||c.addEventListener("click",()=>{let e,r;function s(o){o&&o.preventDefault(),r.innerHTML=t.getLoadingParagraphHTML("Searching..."),cityssm.postJSON(t.urlPrefix+"/lots/doSearchLots",e,e=>{var o,s,n,a;if(0!==e.lots.length){r.innerHTML=`\n \n \n \n \n \n \n \n \n
${t.escapedAliases.Lot}${t.escapedAliases.Map}${t.escapedAliases.Lot} TypeStatus
`;for(const t of e.lots){const e=document.createElement("tr");e.className="container--lot",e.dataset.lotId=t.lotId.toString(),e.innerHTML=''+cityssm.escapeHTML(null!==(o=t.lotName)&&void 0!==o?o:"")+""+cityssm.escapeHTML(null!==(s=t.mapName)&&void 0!==s?s:"")+""+cityssm.escapeHTML(null!==(n=t.lotType)&&void 0!==n?n:"")+""+cityssm.escapeHTML(null!==(a=t.lotStatus)&&void 0!==a?a:"")+"",e.querySelector(".button--addLot").addEventListener("click",w),r.querySelector("tbody").append(e)}}else r.innerHTML='

There are no records that meet the search criteria.

'})}cityssm.openHtmlModal("workOrder-addLot",{onshow(n){t.populateAliases(n),e=n.querySelector("form"),r=n.querySelector("#resultsContainer--lotAdd"),n.querySelector("#lotSearch--notWorkOrderId").value=o;const a=n.querySelector("#lotSearch--lotStatusId");for(const e of exports.lotStatuses){const t=document.createElement("option");t.value=e.lotStatusId.toString(),t.textContent=e.lotStatus,a.append(t)}s()},onshown(t){bulmaJS.toggleHtmlClipped();const o=t.querySelector("#lotSearch--lotName");o.addEventListener("change",s),o.focus(),t.querySelector("#lotSearch--lotStatusId").addEventListener("change",s),e.addEventListener("submit",s)},onremoved(){bulmaJS.toggleHtmlClipped(),document.querySelector("#button--addLot").focus()}})})}var S;Object.defineProperty(exports,"__esModule",{value:!0});let k=exports.workOrderComments;function g(e){const r=Number.parseInt(e.currentTarget.closest("tr").dataset.workOrderCommentId,10),s=k.find(e=>e.workOrderCommentId===r);let n,a;function l(e){e.preventDefault(),cityssm.postJSON(t.urlPrefix+"/workOrders/doUpdateWorkOrderComment",n,e=>{var t;e.success?(k=e.workOrderComments,a(),b()):bulmaJS.alert({title:"Error Updating Comment",message:null!==(t=e.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})})}cityssm.openHtmlModal("workOrder-editComment",{onshow(e){e.querySelector("#workOrderCommentEdit--workOrderId").value=o,e.querySelector("#workOrderCommentEdit--workOrderCommentId").value=r.toString(),e.querySelector("#workOrderCommentEdit--workOrderComment").value=s.workOrderComment;const t=e.querySelector("#workOrderCommentEdit--workOrderCommentDateString");t.value=s.workOrderCommentDateString;const n=cityssm.dateToString(new Date);t.max=s.workOrderCommentDateString<=n?n:s.workOrderCommentDateString,e.querySelector("#workOrderCommentEdit--workOrderCommentTimeString").value=s.workOrderCommentTimeString},onshown(e,o){bulmaJS.toggleHtmlClipped(),t.initializeDatePickers(e),e.querySelector("#workOrderCommentEdit--workOrderComment").focus(),(n=e.querySelector("form")).addEventListener("submit",l),a=o},onremoved(){bulmaJS.toggleHtmlClipped()}})}function f(e){const r=Number.parseInt(e.currentTarget.closest("tr").dataset.workOrderCommentId,10);bulmaJS.confirm({title:"Remove Comment?",message:"Are you sure you want to remove this comment?",okButton:{text:"Yes, Remove Comment",callbackFunction:function(){cityssm.postJSON(t.urlPrefix+"/workOrders/doDeleteWorkOrderComment",{workOrderId:o,workOrderCommentId:r},e=>{var t;e.success?(k=e.workOrderComments,b()):bulmaJS.alert({title:"Error Removing Comment",message:null!==(t=e.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})})}},contextualColorName:"warning"})}function b(){var e,t;const o=document.querySelector("#container--workOrderComments");if(0===k.length)return void(o.innerHTML='
\n

There are no comments to display.

\n
');const r=document.createElement("table");r.className="table is-fullwidth is-striped is-hoverable",r.innerHTML='\n Commentor\n Comment Date\n Comment\n Options';for(const o of k){const s=document.createElement("tr");s.dataset.workOrderCommentId=o.workOrderCommentId.toString(),s.innerHTML=""+cityssm.escapeHTML(null!==(e=o.recordCreate_userName)&&void 0!==e?e:"")+""+o.workOrderCommentDateString+(0===o.workOrderCommentTime?"":" "+o.workOrderCommentTimeString)+""+cityssm.escapeHTML(null!==(t=o.workOrderComment)&&void 0!==t?t:"")+'
',s.querySelector(".button--edit").addEventListener("click",g),s.querySelector(".button--delete").addEventListener("click",f),r.querySelector("tbody").append(s)}o.innerHTML="",o.append(r)}function v(e){var t;e.success?(i=e.workOrderMilestones,I()):bulmaJS.alert({title:"Error Reopening Milestone",message:null!==(t=e.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})}function M(e){e.preventDefault();const r=cityssm.dateToString(new Date),s=Number.parseInt(e.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId,10),n=i.find(e=>e.workOrderMilestoneId===s);bulmaJS.confirm({title:"Complete Milestone",message:"Are you sure you want to complete this milestone?"+(n.workOrderMilestoneDateString>r?"
Note that this milestone is expected to be completed in the future.":""),messageIsHtml:!0,contextualColorName:"warning",okButton:{text:"Yes, Complete Milestone",callbackFunction:function(){cityssm.postJSON(t.urlPrefix+"/workOrders/doCompleteWorkOrderMilestone",{workOrderId:o,workOrderMilestoneId:s},v)}}})}function L(e){e.preventDefault();const r=e.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId;bulmaJS.confirm({title:"Reopen Milestone",message:"Are you sure you want to remove the completion status from this milestone, and reopen it?",contextualColorName:"warning",okButton:{text:"Yes, Reopen Milestone",callbackFunction:function(){cityssm.postJSON(t.urlPrefix+"/workOrders/doReopenWorkOrderMilestone",{workOrderId:o,workOrderMilestoneId:r},v)}}})}function C(e){e.preventDefault();const r=e.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId;bulmaJS.confirm({title:"Delete Milestone",message:"Are you sure you want to delete this milestone?",contextualColorName:"warning",okButton:{text:"Yes, Delete Milestone",callbackFunction:function(){cityssm.postJSON(t.urlPrefix+"/workOrders/doDeleteWorkOrderMilestone",{workOrderMilestoneId:r,workOrderId:o},v)}}})}function T(e){e.preventDefault();const r=Number.parseInt(e.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId,10),s=i.find(e=>e.workOrderMilestoneId===r);let n;function a(e){e.preventDefault(),cityssm.postJSON(t.urlPrefix+"/workOrders/doUpdateWorkOrderMilestone",e.currentTarget,e=>{v(e),e.success&&n()})}cityssm.openHtmlModal("workOrder-editMilestone",{onshow(e){e.querySelector("#milestoneEdit--workOrderId").value=o,e.querySelector("#milestoneEdit--workOrderMilestoneId").value=s.workOrderMilestoneId.toString();const t=e.querySelector("#milestoneEdit--workOrderMilestoneTypeId");let r=!1;for(const e of exports.workOrderMilestoneTypes){const o=document.createElement("option");o.value=e.workOrderMilestoneTypeId.toString(),o.textContent=e.workOrderMilestoneType,e.workOrderMilestoneTypeId===s.workOrderMilestoneTypeId&&(o.selected=!0,r=!0),t.append(o)}if(!r&&s.workOrderMilestoneTypeId){const e=document.createElement("option");e.value=s.workOrderMilestoneTypeId.toString(),e.textContent=s.workOrderMilestoneType,e.selected=!0,t.append(e)}e.querySelector("#milestoneEdit--workOrderMilestoneDateString").value=s.workOrderMilestoneDateString,s.workOrderMilestoneTime&&(e.querySelector("#milestoneEdit--workOrderMilestoneTimeString").value=s.workOrderMilestoneTimeString),e.querySelector("#milestoneEdit--workOrderMilestoneDescription").value=s.workOrderMilestoneDescription},onshown(e,o){n=o,bulmaJS.toggleHtmlClipped(),t.initializeDatePickers(e),e.querySelector("form").addEventListener("submit",a)},onremoved(){bulmaJS.toggleHtmlClipped()}})}function I(){var e,t,o,r,s;const n=document.querySelector("#panel--milestones"),a=n.querySelectorAll(".panel-block");for(const e of a)e.remove();for(const a of i){const l=document.createElement("div");l.className="panel-block is-block container--milestone",l.dataset.workOrderMilestoneId=a.workOrderMilestoneId.toString(),l.innerHTML='
'+(a.workOrderMilestoneCompletionDate?'':'')+'
'+(a.workOrderMilestoneTypeId?""+cityssm.escapeHTML(null!==(e=a.workOrderMilestoneType)&&void 0!==e?e:"")+"
":"")+a.workOrderMilestoneDateString+(a.workOrderMilestoneTime?" "+a.workOrderMilestoneTimeString:"")+'
'+cityssm.escapeHTML(null!==(t=a.workOrderMilestoneDescription)&&void 0!==t?t:"")+'
',null===(o=l.querySelector(".button--reopenMilestone"))||void 0===o||o.addEventListener("click",L),null===(r=l.querySelector(".button--editMilestone"))||void 0===r||r.addEventListener("click",T),null===(s=l.querySelector(".button--completeMilestone"))||void 0===s||s.addEventListener("click",M),l.querySelector(".button--deleteMilestone").addEventListener("click",C),n.append(l)}bulmaJS.init(n)}delete exports.workOrderComments,null===(S=document.querySelector("#workOrderComments--add"))||void 0===S||S.addEventListener("click",function(){let e;function r(o){o.preventDefault(),cityssm.postJSON(t.urlPrefix+"/workOrders/doAddWorkOrderComment",o.currentTarget,t=>{t.success&&(k=t.workOrderComments,b(),e())})}cityssm.openHtmlModal("workOrder-addComment",{onshow(e){t.populateAliases(e),e.querySelector("#workOrderCommentAdd--workOrderId").value=o,e.querySelector("form").addEventListener("submit",r)},onshown(t,o){bulmaJS.toggleHtmlClipped(),e=o,t.querySelector("#workOrderCommentAdd--workOrderComment").focus()},onremoved(){bulmaJS.toggleHtmlClipped(),document.querySelector("#workOrderComments--add").focus()}})}),r||b(),r||(i=exports.workOrderMilestones,delete exports.workOrderMilestones,I(),null===(e=document.querySelector("#button--addMilestone"))||void 0===e||e.addEventListener("click",()=>{let e,r,s;function n(o){o&&o.preventDefault();const n=cityssm.dateToString(new Date);function a(){cityssm.postJSON(t.urlPrefix+"/workOrders/doAddWorkOrderMilestone",r,e=>{v(e),e.success&&s()})}e.querySelector("#milestoneAdd--workOrderMilestoneDateString").value{var e;const t=exports.los,o=document.querySelector("#workOrderEdit--workOrderId").value,r=""===o,s=document.querySelector("#form--workOrderEdit");t.initializeDatePickers(s.querySelector("#workOrderEdit--workOrderOpenDateString").closest(".field")),t.initializeUnlockFieldButtons(s),s.addEventListener("submit",e=>{e.preventDefault(),cityssm.postJSON(t.urlPrefix+"/workOrders/"+(r?"doCreateWorkOrder":"doUpdateWorkOrder"),e.currentTarget,e=>{var o;e.success?(cityssm.disableNavBlocker(),r?window.location.href=t.getWorkOrderURL(e.workOrderId,!0):bulmaJS.alert({message:"Work Order Updated Successfully",contextualColorName:"success"})):bulmaJS.alert({title:"Error Updating Work Order",message:null!==(o=e.errorMessage)&&void 0!==o?o:"",contextualColorName:"danger"})})});const n=s.querySelectorAll("input, select");for(const e of n)e.addEventListener("change",cityssm.enableNavBlocker);function a(){cityssm.postJSON(t.urlPrefix+"/workOrders/doCloseWorkOrder",{workOrderId:o},e=>{var r;e.success?window.location.href=t.urlPrefix+"/workOrders/"+o:bulmaJS.alert({title:"Error Closing Work Order",message:null!==(r=e.errorMessage)&&void 0!==r?r:"",contextualColorName:"danger"})})}function l(){cityssm.postJSON(t.urlPrefix+"/workOrders/doDeleteWorkOrder",{workOrderId:o},e=>{var o;e.success?window.location.href=t.urlPrefix+"/workOrders":bulmaJS.alert({title:"Error Deleting Work Order",message:null!==(o=e.errorMessage)&&void 0!==o?o:"",contextualColorName:"danger"})})}let i;if(null===(S=document.querySelector("#button--closeWorkOrder"))||void 0===S||S.addEventListener("click",()=>{i.some(e=>!e.workOrderMilestoneCompletionDate)?bulmaJS.alert({title:"Outstanding Milestones",message:"You cannot close a work order with outstanding milestones.\n Either complete the outstanding milestones, or remove them from the work order.",contextualColorName:"warning"}):bulmaJS.confirm({title:"Close Work Order",message:"Are you sure you want to close this work order?",contextualColorName:"info",okButton:{text:"Yes, Close Work Order",callbackFunction:a}})}),null===(c=document.querySelector("#button--deleteWorkOrder"))||void 0===c||c.addEventListener("click",e=>{e.preventDefault(),bulmaJS.confirm({title:"Delete Work Order",message:"Are you sure you want to delete this work order?",contextualColorName:"warning",okButton:{text:"Yes, Delete Work Order",callbackFunction:l}})}),!r){var c;Object.defineProperty(exports,"__esModule",{value:!0});let e=exports.workOrderLots;delete exports.workOrderLots;let r=exports.workOrderLotOccupancies;function d(e){const s=e.currentTarget.closest(".container--lotOccupancy").dataset.lotOccupancyId;bulmaJS.confirm({title:`Delete ${t.escapedAliases.Occupancy} Relationship`,message:`Are you sure you want to remove the relationship to this ${t.escapedAliases.occupancy} record from this work order? Note that the record will remain.`,contextualColorName:"warning",okButton:{text:"Yes, Delete Relationship",callbackFunction:function(){cityssm.postJSON(t.urlPrefix+"/workOrders/doDeleteWorkOrderLotOccupancy",{workOrderId:o,lotOccupancyId:s},e=>{var t;e.success?(r=e.workOrderLotOccupancies,O()):bulmaJS.alert({title:"Error Deleting Relationship",message:null!==(t=e.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})})}}})}function u(r,s){cityssm.postJSON(t.urlPrefix+"/workOrders/doAddWorkOrderLot",{workOrderId:o,lotId:r},o=>{var r;o.success?(e=o.workOrderLots,O()):bulmaJS.alert({title:`Error Adding ${t.escapedAliases.Lot}`,message:null!==(r=o.errorMessage)&&void 0!==r?r:"",contextualColorName:"danger"}),s&&s(o.success)})}function m(e){u(e.currentTarget.dataset.lotId)}function p(r){const s=Number.parseInt(r.currentTarget.closest(".container--lot").dataset.lotId,10),n=e.find(e=>e.lotId===s);let a;function l(o){o.preventDefault(),cityssm.postJSON(t.urlPrefix+"/workOrders/doUpdateLotStatus",o.currentTarget,t=>{var o;t.success?(e=t.workOrderLots,O(),a()):bulmaJS.alert({title:"Error Deleting Relationship",message:null!==(o=t.errorMessage)&&void 0!==o?o:"",contextualColorName:"danger"})})}cityssm.openHtmlModal("lot-editLotStatus",{onshow(e){t.populateAliases(e),e.querySelector("#lotStatusEdit--lotId").value=s.toString(),e.querySelector("#lotStatusEdit--lotName").value=n.lotName;const r=e.querySelector("#lotStatusEdit--lotStatusId");let a=!1;for(const e of exports.lotStatuses){const t=document.createElement("option");t.value=e.lotStatusId.toString(),t.textContent=e.lotStatus,e.lotStatusId===n.lotStatusId&&(a=!0),r.append(t)}if(!a&&n.lotStatusId){const e=document.createElement("option");e.value=n.lotStatusId.toString(),e.textContent=n.lotStatus,r.append(e)}n.lotStatusId&&(r.value=n.lotStatusId.toString()),e.querySelector("form").insertAdjacentHTML("beforeend",``)},onshown(e,t){a=t,bulmaJS.toggleHtmlClipped(),e.querySelector("form").addEventListener("submit",l)},onremoved(){bulmaJS.toggleHtmlClipped()}})}function y(r){const s=r.currentTarget.closest(".container--lot").dataset.lotId;bulmaJS.confirm({title:`Delete ${t.escapedAliases.Occupancy} Relationship`,message:`Are you sure you want to remove the relationship to this ${t.escapedAliases.occupancy} record from this work order? Note that the record will remain.`,contextualColorName:"warning",okButton:{text:"Yes, Delete Relationship",callbackFunction:function(){cityssm.postJSON(t.urlPrefix+"/workOrders/doDeleteWorkOrderLot",{workOrderId:o,lotId:s},t=>{var o;t.success?(e=t.workOrderLots,O()):bulmaJS.alert({title:"Error Deleting Relationship",message:null!==(o=t.errorMessage)&&void 0!==o?o:"",contextualColorName:"danger"})})}}})}function O(){!function(){var o,s,n,a;const l=document.querySelector("#container--lotOccupancies");if(document.querySelector(".tabs a[href='#relatedTab--lotOccupancies'] .tag").textContent=r.length.toString(),0===r.length)return void(l.innerHTML=`
\n

There are no ${t.escapedAliases.occupancies} associated with this work order.

\n
`);l.innerHTML=`\n \n \n \n \n \n \n \n \n \n \n
${t.escapedAliases.Occupancy} Type${t.escapedAliases.Lot}${t.escapedAliases.OccupancyStartDate}End Date${t.escapedAliases.Occupants}
`;const i=cityssm.dateToString(new Date);for(const c of r){const r=document.createElement("tr");r.className="container--lotOccupancy",r.dataset.lotOccupancyId=c.lotOccupancyId.toString();const u=!(c.occupancyEndDate&&c.occupancyEndDateStringc.lotId===e.lotId);r.innerHTML=''+(u?'':'')+''+cityssm.escapeHTML(null!==(o=c.occupancyType)&&void 0!==o?o:"")+"",c.lotId?r.insertAdjacentHTML("beforeend",""+cityssm.escapeHTML(null!==(s=c.lotName)&&void 0!==s?s:"")+(p?"":' ')+""):r.insertAdjacentHTML("beforeend",`(No ${t.escapedAliases.Lot})`),r.insertAdjacentHTML("beforeend",""+c.occupancyStartDateString+""+(c.occupancyEndDate?c.occupancyEndDateString:'(No End Date)')+""+(0===c.lotOccupancyOccupants.length?'(No '+t.escapedAliases.Occupants+")":null===(n=c.lotOccupancyOccupants)||void 0===n?void 0:n.reduce((e,o)=>{var r;return e+' '+cityssm.escapeHTML(o.occupantName)+" "+cityssm.escapeHTML(o.occupantFamilyName)+"
"},""))+''),null===(a=r.querySelector(".button--addLot"))||void 0===a||a.addEventListener("click",m),r.querySelector(".button--deleteLotOccupancy").addEventListener("click",d),l.querySelector("tbody").append(r)}}(),function(){var o,r,s,n;const a=document.querySelector("#container--lots");if(document.querySelector(".tabs a[href='#relatedTab--lots'] .tag").textContent=e.length.toString(),0!==e.length){a.innerHTML=`\n \n \n \n \n \n \n \n \n
${t.escapedAliases.Lot}${t.escapedAliases.Map}${t.escapedAliases.Lot} TypeStatus
`;for(const l of e){const e=document.createElement("tr");e.className="container--lot",e.dataset.lotId=l.lotId.toString(),e.innerHTML=''+cityssm.escapeHTML(null!==(o=l.lotName)&&void 0!==o?o:"")+""+cityssm.escapeHTML(null!==(r=l.mapName)&&void 0!==r?r:"")+""+cityssm.escapeHTML(null!==(s=l.lotType)&&void 0!==s?s:"")+""+(l.lotStatusId?cityssm.escapeHTML(null!==(n=l.lotStatus)&&void 0!==n?n:""):'(No Status)')+' ',e.querySelector(".button--editLotStatus").addEventListener("click",p),e.querySelector(".button--deleteLot").addEventListener("click",y),a.querySelector("tbody").append(e)}}else a.innerHTML=`
\n

There are no ${t.escapedAliases.lots} associated with this work order.

\n
`}()}function h(e){const s=e.currentTarget.closest("tr");!function(e,s){cityssm.postJSON(t.urlPrefix+"/workOrders/doAddWorkOrderLotOccupancy",{workOrderId:o,lotOccupancyId:e},e=>{var o;e.success?(r=e.workOrderLotOccupancies,O()):bulmaJS.alert({title:"Error Adding "+t.escapedAliases.Occupancy,message:null!==(o=e.errorMessage)&&void 0!==o?o:"",contextualColorName:"danger"}),s&&s(e.success)})}(s.dataset.lotOccupancyId,e=>{e&&s.remove()})}function w(e){const t=e.currentTarget.closest("tr");u(t.dataset.lotId,e=>{e&&t.remove()})}delete exports.workOrderLotOccupancies,O(),null===(S=document.querySelector("#button--addLotOccupancy"))||void 0===S||S.addEventListener("click",()=>{let e,r;function s(o){o&&o.preventDefault(),r.innerHTML=t.getLoadingParagraphHTML("Searching..."),cityssm.postJSON(t.urlPrefix+"/lotOccupancies/doSearchLotOccupancies",e,e=>{var o,s;if(0!==e.lotOccupancies.length){r.innerHTML=`\n \n \n \n \n \n \n \n \n \n
${t.escapedAliases.Occupancy} Type${t.escapedAliases.Lot}${t.escapedAliases.OccupancyStartDate}End Date${t.escapedAliases.Occupants}
`;for(const n of e.lotOccupancies){const e=document.createElement("tr");e.className="container--lotOccupancy",e.dataset.lotOccupancyId=n.lotOccupancyId.toString(),e.innerHTML=''+cityssm.escapeHTML(null!==(o=n.occupancyType)&&void 0!==o?o:"")+"",n.lotId?e.insertAdjacentHTML("beforeend",""+cityssm.escapeHTML(null!==(s=n.lotName)&&void 0!==s?s:"")+""):e.insertAdjacentHTML("beforeend",`(No ${t.escapedAliases.Lot})`),e.insertAdjacentHTML("beforeend",""+n.occupancyStartDateString+""+(n.occupancyEndDate?n.occupancyEndDateString:'(No End Date)')+""+(0===n.lotOccupancyOccupants.length?'(No '+cityssm.escapeHTML(t.escapedAliases.Occupants)+")":cityssm.escapeHTML(n.lotOccupancyOccupants[0].occupantName+" "+n.lotOccupancyOccupants[0].occupantFamilyName)+(n.lotOccupancyOccupants.length>1?" plus "+(n.lotOccupancyOccupants.length-1):""))+""),e.querySelector(".button--addLotOccupancy").addEventListener("click",h),r.querySelector("tbody").append(e)}}else r.innerHTML='
\n

There are no records that meet the search criteria.

\n
'})}cityssm.openHtmlModal("workOrder-addLotOccupancy",{onshow(n){t.populateAliases(n),e=n.querySelector("form"),r=n.querySelector("#resultsContainer--lotOccupancyAdd"),n.querySelector("#lotOccupancySearch--notWorkOrderId").value=o,n.querySelector("#lotOccupancySearch--occupancyEffectiveDateString").value=document.querySelector("#workOrderEdit--workOrderOpenDateString").value,s()},onshown(t){bulmaJS.toggleHtmlClipped();const o=t.querySelector("#lotOccupancySearch--occupantName");o.addEventListener("change",s),o.focus(),t.querySelector("#lotOccupancySearch--lotName").addEventListener("change",s),e.addEventListener("submit",s)},onremoved(){bulmaJS.toggleHtmlClipped(),document.querySelector("#button--addLotOccupancy").focus()}})}),null===(c=document.querySelector("#button--addLot"))||void 0===c||c.addEventListener("click",()=>{let e,r;function s(o){o&&o.preventDefault(),r.innerHTML=t.getLoadingParagraphHTML("Searching..."),cityssm.postJSON(t.urlPrefix+"/lots/doSearchLots",e,e=>{var o,s,n,a;if(0!==e.lots.length){r.innerHTML=`\n \n \n \n \n \n \n \n \n
${t.escapedAliases.Lot}${t.escapedAliases.Map}${t.escapedAliases.Lot} TypeStatus
`;for(const t of e.lots){const e=document.createElement("tr");e.className="container--lot",e.dataset.lotId=t.lotId.toString(),e.innerHTML=''+cityssm.escapeHTML(null!==(o=t.lotName)&&void 0!==o?o:"")+""+cityssm.escapeHTML(null!==(s=t.mapName)&&void 0!==s?s:"")+""+cityssm.escapeHTML(null!==(n=t.lotType)&&void 0!==n?n:"")+""+cityssm.escapeHTML(null!==(a=t.lotStatus)&&void 0!==a?a:"")+"",e.querySelector(".button--addLot").addEventListener("click",w),r.querySelector("tbody").append(e)}}else r.innerHTML='

There are no records that meet the search criteria.

'})}cityssm.openHtmlModal("workOrder-addLot",{onshow(n){t.populateAliases(n),e=n.querySelector("form"),r=n.querySelector("#resultsContainer--lotAdd"),n.querySelector("#lotSearch--notWorkOrderId").value=o;const a=n.querySelector("#lotSearch--lotStatusId");for(const e of exports.lotStatuses){const t=document.createElement("option");t.value=e.lotStatusId.toString(),t.textContent=e.lotStatus,a.append(t)}s()},onshown(t){bulmaJS.toggleHtmlClipped();const o=t.querySelector("#lotSearch--lotName");o.addEventListener("change",s),o.focus(),t.querySelector("#lotSearch--lotStatusId").addEventListener("change",s),e.addEventListener("submit",s)},onremoved(){bulmaJS.toggleHtmlClipped(),document.querySelector("#button--addLot").focus()}})})}var S;Object.defineProperty(exports,"__esModule",{value:!0});let k=exports.workOrderComments;function g(e){const r=Number.parseInt(e.currentTarget.closest("tr").dataset.workOrderCommentId,10),s=k.find(e=>e.workOrderCommentId===r);let n,a;function l(e){e.preventDefault(),cityssm.postJSON(t.urlPrefix+"/workOrders/doUpdateWorkOrderComment",n,e=>{var t;e.success?(k=e.workOrderComments,a(),b()):bulmaJS.alert({title:"Error Updating Comment",message:null!==(t=e.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})})}cityssm.openHtmlModal("workOrder-editComment",{onshow(e){e.querySelector("#workOrderCommentEdit--workOrderId").value=o,e.querySelector("#workOrderCommentEdit--workOrderCommentId").value=r.toString(),e.querySelector("#workOrderCommentEdit--workOrderComment").value=s.workOrderComment;const t=e.querySelector("#workOrderCommentEdit--workOrderCommentDateString");t.value=s.workOrderCommentDateString;const n=cityssm.dateToString(new Date);t.max=s.workOrderCommentDateString<=n?n:s.workOrderCommentDateString,e.querySelector("#workOrderCommentEdit--workOrderCommentTimeString").value=s.workOrderCommentTimeString},onshown(e,o){bulmaJS.toggleHtmlClipped(),t.initializeDatePickers(e),e.querySelector("#workOrderCommentEdit--workOrderComment").focus(),(n=e.querySelector("form")).addEventListener("submit",l),a=o},onremoved(){bulmaJS.toggleHtmlClipped()}})}function f(e){const r=Number.parseInt(e.currentTarget.closest("tr").dataset.workOrderCommentId,10);bulmaJS.confirm({title:"Remove Comment?",message:"Are you sure you want to remove this comment?",okButton:{text:"Yes, Remove Comment",callbackFunction:function(){cityssm.postJSON(t.urlPrefix+"/workOrders/doDeleteWorkOrderComment",{workOrderId:o,workOrderCommentId:r},e=>{var t;e.success?(k=e.workOrderComments,b()):bulmaJS.alert({title:"Error Removing Comment",message:null!==(t=e.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})})}},contextualColorName:"warning"})}function b(){var e,t;const o=document.querySelector("#container--workOrderComments");if(0===k.length)return void(o.innerHTML='
\n

There are no comments to display.

\n
');const r=document.createElement("table");r.className="table is-fullwidth is-striped is-hoverable",r.innerHTML='\n Commentor\n Comment Date\n Comment\n Options';for(const o of k){const s=document.createElement("tr");s.dataset.workOrderCommentId=o.workOrderCommentId.toString(),s.innerHTML=""+cityssm.escapeHTML(null!==(e=o.recordCreate_userName)&&void 0!==e?e:"")+""+o.workOrderCommentDateString+(0===o.workOrderCommentTime?"":" "+o.workOrderCommentTimeString)+""+cityssm.escapeHTML(null!==(t=o.workOrderComment)&&void 0!==t?t:"")+'
',s.querySelector(".button--edit").addEventListener("click",g),s.querySelector(".button--delete").addEventListener("click",f),r.querySelector("tbody").append(s)}o.innerHTML="",o.append(r)}function v(e){var t;e.success?(i=e.workOrderMilestones,I()):bulmaJS.alert({title:"Error Reopening Milestone",message:null!==(t=e.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})}function M(e){e.preventDefault();const r=cityssm.dateToString(new Date),s=Number.parseInt(e.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId,10),n=i.find(e=>e.workOrderMilestoneId===s);bulmaJS.confirm({title:"Complete Milestone",message:"Are you sure you want to complete this milestone?"+(""!==n.workOrderMilestoneDateString&&n.workOrderMilestoneDateString>r?"
Note that this milestone is expected to be completed in the future.":""),messageIsHtml:!0,contextualColorName:"warning",okButton:{text:"Yes, Complete Milestone",callbackFunction:function(){cityssm.postJSON(t.urlPrefix+"/workOrders/doCompleteWorkOrderMilestone",{workOrderId:o,workOrderMilestoneId:s},v)}}})}function L(e){e.preventDefault();const r=e.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId;bulmaJS.confirm({title:"Reopen Milestone",message:"Are you sure you want to remove the completion status from this milestone, and reopen it?",contextualColorName:"warning",okButton:{text:"Yes, Reopen Milestone",callbackFunction:function(){cityssm.postJSON(t.urlPrefix+"/workOrders/doReopenWorkOrderMilestone",{workOrderId:o,workOrderMilestoneId:r},v)}}})}function C(e){e.preventDefault();const r=e.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId;bulmaJS.confirm({title:"Delete Milestone",message:"Are you sure you want to delete this milestone?",contextualColorName:"warning",okButton:{text:"Yes, Delete Milestone",callbackFunction:function(){cityssm.postJSON(t.urlPrefix+"/workOrders/doDeleteWorkOrderMilestone",{workOrderMilestoneId:r,workOrderId:o},v)}}})}function T(e){e.preventDefault();const r=Number.parseInt(e.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId,10),s=i.find(e=>e.workOrderMilestoneId===r);let n;function a(e){e.preventDefault(),cityssm.postJSON(t.urlPrefix+"/workOrders/doUpdateWorkOrderMilestone",e.currentTarget,e=>{v(e),e.success&&n()})}cityssm.openHtmlModal("workOrder-editMilestone",{onshow(e){e.querySelector("#milestoneEdit--workOrderId").value=o,e.querySelector("#milestoneEdit--workOrderMilestoneId").value=s.workOrderMilestoneId.toString();const t=e.querySelector("#milestoneEdit--workOrderMilestoneTypeId");let r=!1;for(const e of exports.workOrderMilestoneTypes){const o=document.createElement("option");o.value=e.workOrderMilestoneTypeId.toString(),o.textContent=e.workOrderMilestoneType,e.workOrderMilestoneTypeId===s.workOrderMilestoneTypeId&&(o.selected=!0,r=!0),t.append(o)}if(!r&&s.workOrderMilestoneTypeId){const e=document.createElement("option");e.value=s.workOrderMilestoneTypeId.toString(),e.textContent=s.workOrderMilestoneType,e.selected=!0,t.append(e)}e.querySelector("#milestoneEdit--workOrderMilestoneDateString").value=s.workOrderMilestoneDateString,s.workOrderMilestoneTime&&(e.querySelector("#milestoneEdit--workOrderMilestoneTimeString").value=s.workOrderMilestoneTimeString),e.querySelector("#milestoneEdit--workOrderMilestoneDescription").value=s.workOrderMilestoneDescription},onshown(e,o){n=o,bulmaJS.toggleHtmlClipped(),t.initializeDatePickers(e),e.querySelector("form").addEventListener("submit",a)},onremoved(){bulmaJS.toggleHtmlClipped()}})}function I(){var e,t,o,r,s;const n=document.querySelector("#panel--milestones"),a=n.querySelectorAll(".panel-block");for(const e of a)e.remove();for(const a of i){const l=document.createElement("div");l.className="panel-block is-block container--milestone",l.dataset.workOrderMilestoneId=a.workOrderMilestoneId.toString(),l.innerHTML='
'+(a.workOrderMilestoneCompletionDate?'':'')+'
'+(a.workOrderMilestoneTypeId?""+cityssm.escapeHTML(null!==(e=a.workOrderMilestoneType)&&void 0!==e?e:"")+"
":"")+(0===a.workOrderMilestoneDate?'(No Set Date)':a.workOrderMilestoneDateString)+(a.workOrderMilestoneTime?" "+a.workOrderMilestoneTimeString:"")+'
'+cityssm.escapeHTML(null!==(t=a.workOrderMilestoneDescription)&&void 0!==t?t:"")+'
',null===(o=l.querySelector(".button--reopenMilestone"))||void 0===o||o.addEventListener("click",L),null===(r=l.querySelector(".button--editMilestone"))||void 0===r||r.addEventListener("click",T),null===(s=l.querySelector(".button--completeMilestone"))||void 0===s||s.addEventListener("click",M),l.querySelector(".button--deleteMilestone").addEventListener("click",C),n.append(l)}bulmaJS.init(n)}delete exports.workOrderComments,null===(S=document.querySelector("#workOrderComments--add"))||void 0===S||S.addEventListener("click",function(){let e;function r(o){o.preventDefault(),cityssm.postJSON(t.urlPrefix+"/workOrders/doAddWorkOrderComment",o.currentTarget,t=>{t.success&&(k=t.workOrderComments,b(),e())})}cityssm.openHtmlModal("workOrder-addComment",{onshow(e){t.populateAliases(e),e.querySelector("#workOrderCommentAdd--workOrderId").value=o,e.querySelector("form").addEventListener("submit",r)},onshown(t,o){bulmaJS.toggleHtmlClipped(),e=o,t.querySelector("#workOrderCommentAdd--workOrderComment").focus()},onremoved(){bulmaJS.toggleHtmlClipped(),document.querySelector("#workOrderComments--add").focus()}})}),r||b(),r||(i=exports.workOrderMilestones,delete exports.workOrderMilestones,I(),null===(e=document.querySelector("#button--addMilestone"))||void 0===e||e.addEventListener("click",()=>{let e,r,s;function n(o){o&&o.preventDefault();const n=cityssm.dateToString(new Date);function a(){cityssm.postJSON(t.urlPrefix+"/workOrders/doAddWorkOrderMilestone",r,e=>{v(e),e.success&&s()})}const l=e.querySelector("#milestoneAdd--workOrderMilestoneDateString").value;""!==l&&l{const e=exports.los,s=document.querySelector("#form--searchFilters"),r=s.querySelector("#searchFilter--workOrderMilestoneDateFilter"),a=s.querySelector("#searchFilter--workOrderMilestoneDateString"),t=document.querySelector("#container--milestoneCalendar");function i(r){r&&r.preventDefault(),t.innerHTML=e.getLoadingParagraphHTML("Loading Milestones..."),cityssm.postJSON(e.urlPrefix+"/workOrders/doGetWorkOrderMilestones",s,s=>{!function(s){var r,a,i,o,n,l,c,d;if(0===s.length)return void(t.innerHTML='
\n

There are no milestones that meet the search criteria.

\n
');t.innerHTML="";const p=cityssm.dateToString(new Date);let m,u="";for(const M of s){u!==M.workOrderMilestoneDateString&&(m&&t.append(m),(m=document.createElement("div")).className="panel",m.innerHTML=`

${M.workOrderMilestoneDateString}

`,u=M.workOrderMilestoneDateString);const s=document.createElement("div");s.className="panel-block is-block",!M.workOrderMilestoneCompletionDate&&M.workOrderMilestoneDateString '+cityssm.escapeHTML(null!==(a=s.lotName)&&void 0!==a?a:"")+"

";for(const s of M.workOrderLotOccupancies)for(const r of s.lotOccupancyOccupants)v+=' '+cityssm.escapeHTML(null!==(o=r.occupantName)&&void 0!==o?o:"")+" "+cityssm.escapeHTML(null!==(n=r.occupantFamilyName)&&void 0!==n?n:"")+"
";s.innerHTML='
'+(M.workOrderMilestoneCompletionDate?'':'')+'
'+(0===M.workOrderMilestoneTime?"":M.workOrderMilestoneTimeString+"
")+(M.workOrderMilestoneTypeId?""+cityssm.escapeHTML(M.workOrderMilestoneType)+"
":"")+''+cityssm.escapeHTML(M.workOrderMilestoneDescription)+'
'+cityssm.escapeHTML(null!==(c=M.workOrderNumber)&&void 0!==c?c:"")+'
'+cityssm.escapeHTML(null!==(d=M.workOrderDescription)&&void 0!==d?d:"")+'
'+v+"
",m.append(s)}t.append(m)}(s.workOrderMilestones)})}r.addEventListener("change",()=>{a.closest("fieldset").disabled="date"!==r.value,i()}),e.initializeDatePickers(s),a.addEventListener("change",i),s.addEventListener("submit",i),i()})(); \ No newline at end of file +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,s=document.querySelector("#form--searchFilters"),r=s.querySelector("#searchFilter--workOrderMilestoneDateFilter"),a=s.querySelector("#searchFilter--workOrderMilestoneDateString"),t=document.querySelector("#container--milestoneCalendar");function i(r){r&&r.preventDefault(),t.innerHTML=e.getLoadingParagraphHTML("Loading Milestones..."),cityssm.postJSON(e.urlPrefix+"/workOrders/doGetWorkOrderMilestones",s,s=>{!function(s){var r,a,i,o,n,l,c,d;if(0===s.length)return void(t.innerHTML='
\n

There are no milestones that meet the search criteria.

\n
');t.innerHTML="";const p=cityssm.dateToString(new Date);let m,u="x";for(const M of s){u!==M.workOrderMilestoneDateString&&(m&&t.append(m),(m=document.createElement("div")).className="panel",m.innerHTML=`

\n ${0===M.workOrderMilestoneDate?"No Set Date":M.workOrderMilestoneDateString}\n

`,u=M.workOrderMilestoneDateString);const s=document.createElement("div");s.className="panel-block is-block",!M.workOrderMilestoneCompletionDate&&""!==M.workOrderMilestoneDateString&&M.workOrderMilestoneDateString '+cityssm.escapeHTML(null!==(a=s.lotName)&&void 0!==a?a:"")+"

";for(const s of M.workOrderLotOccupancies)for(const r of s.lotOccupancyOccupants)O+=' '+cityssm.escapeHTML(null!==(o=r.occupantName)&&void 0!==o?o:"")+" "+cityssm.escapeHTML(null!==(n=r.occupantFamilyName)&&void 0!==n?n:"")+"
";s.innerHTML='
'+(M.workOrderMilestoneCompletionDate?'':'')+'
'+(0===M.workOrderMilestoneTime?"":M.workOrderMilestoneTimeString+"
")+(M.workOrderMilestoneTypeId?""+cityssm.escapeHTML(M.workOrderMilestoneType)+"
":"")+''+cityssm.escapeHTML(M.workOrderMilestoneDescription)+'
'+cityssm.escapeHTML(null!==(c=M.workOrderNumber)&&void 0!==c?c:"")+'
'+cityssm.escapeHTML(null!==(d=M.workOrderDescription)&&void 0!==d?d:"")+'
'+O+"
",m.append(s)}t.append(m)}(s.workOrderMilestones)})}r.addEventListener("change",()=>{a.closest("fieldset").disabled="date"!==r.value,i()}),e.initializeDatePickers(s),a.addEventListener("change",i),s.addEventListener("submit",i),i()})(); \ No newline at end of file diff --git a/views/print/pdf/workOrder.ejs b/views/print/pdf/workOrder.ejs index 3c91b612..6385639d 100644 --- a/views/print/pdf/workOrder.ejs +++ b/views/print/pdf/workOrder.ejs @@ -11,24 +11,24 @@

<%= configFunctions.getProperty("aliases.lots") %>

- - - - - - - - - - <% for (const lot of workOrder.workOrderLots) { %> - - - - - - - <% } %> - + + + + + + + + + + <% for (const lot of workOrder.workOrderLots) { %> + + + + + + + <% } %> +
<%= configFunctions.getProperty("aliases.lot") %><%= configFunctions.getProperty("aliases.map") %><%= configFunctions.getProperty("aliases.lot") %> TypeStatus
<%= lot.lotName %><%= lot.mapName %><%= lot.lotType %><%= lot.lotStatus %>
<%= configFunctions.getProperty("aliases.lot") %><%= configFunctions.getProperty("aliases.map") %><%= configFunctions.getProperty("aliases.lot") %> TypeStatus
<%= lot.lotName %><%= lot.mapName %><%= lot.lotType %><%= lot.lotStatus %>
<% } %> @@ -37,13 +37,13 @@ - - - - - - - + + + + + + + <% for (const occupancy of workOrder.workOrderLotOccupancies) { %> @@ -94,7 +94,11 @@ <%= milestone.workOrderMilestoneDescription %>
<%= configFunctions.getProperty("aliases.occupancy") %> Type<%= configFunctions.getProperty("aliases.lot") %><%= configFunctions.getProperty("aliases.occupancyStartDate") %>End Date<%= configFunctions.getProperty("aliases.occupants") %>
<%= configFunctions.getProperty("aliases.occupancy") %> Type<%= configFunctions.getProperty("aliases.lot") %><%= configFunctions.getProperty("aliases.occupancyStartDate") %>End Date<%= configFunctions.getProperty("aliases.occupants") %>
- <%= milestone.workOrderMilestoneDateString %> + <% if (milestone.workOrderMilestoneDate === 0) { %> + (No Set Date) + <% } else { %> + <%= milestone.workOrderMilestoneDateString %> + <% } %> <% if (milestone.workOrderMilestoneTime) { %> <%= milestone.workOrderMilestoneTimeString %> <% } %> diff --git a/views/workOrder-view.ejs b/views/workOrder-view.ejs index 72692431..aabfc8b5 100644 --- a/views/workOrder-view.ejs +++ b/views/workOrder-view.ejs @@ -321,32 +321,36 @@ <% for (const milestone of workOrder.workOrderMilestones) { %> -
-
-
- <% if (milestone.workOrderMilestoneCompletionDate) { %> - - - - <% } else { %> - - - - <% } %> -
-
- <% if (milestone.workOrderMilestoneTypeId) { %> - <%= milestone.workOrderMilestoneType %>
- <% } %> - <%= milestone.workOrderMilestoneDateString %> - <% if (milestone.workOrderMilestoneTime !== 0) { %> - <%= milestone.workOrderMilestoneTimeString %> - <% } %> -
- <%= milestone.workOrderMilestoneDescription %> -
-
+
+
+
+ <% if (milestone.workOrderMilestoneCompletionDate) { %> + + + + <% } else { %> + + + + <% } %> +
+
+ <% if (milestone.workOrderMilestoneTypeId) { %> + <%= milestone.workOrderMilestoneType %>
+ <% } %> + <% if (milestone.workOrderMilestoneDate === 0) { %> + (No Set Date) + <% } else { %> + <%= milestone.workOrderMilestoneDateString %> + <% } %> + <% if (milestone.workOrderMilestoneTime !== 0) { %> + <%= milestone.workOrderMilestoneTimeString %> + <% } %> +
+ <%= milestone.workOrderMilestoneDescription %> +
+
<% } %>