121 lines
3.8 KiB
TypeScript
121 lines
3.8 KiB
TypeScript
import type { BulmaJS } from '@cityssm/bulma-js/types.js'
|
|
import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types.js'
|
|
|
|
import type { WorkOrderType } from '../../types/recordTypes.js'
|
|
|
|
import type { Sunrise } from './types.js'
|
|
|
|
declare const cityssm: cityssmGlobal
|
|
declare const bulmaJS: BulmaJS
|
|
declare const exports: Record<string, unknown>
|
|
;(() => {
|
|
const sunrise = exports.sunrise as Sunrise
|
|
|
|
const contractId = (
|
|
document.querySelector('#contract--contractId') as HTMLInputElement
|
|
).value
|
|
|
|
document
|
|
.querySelector('#button--createWorkOrder')
|
|
?.addEventListener('click', (clickEvent) => {
|
|
clickEvent.preventDefault()
|
|
|
|
let createCloseModalFunction: () => void
|
|
|
|
function doCreate(formEvent: SubmitEvent): void {
|
|
formEvent.preventDefault()
|
|
|
|
cityssm.postJSON(
|
|
`${sunrise.urlPrefix}/workOrders/doCreateWorkOrder`,
|
|
formEvent.currentTarget,
|
|
(rawResponseJSON) => {
|
|
const responseJSON = rawResponseJSON as {
|
|
success: boolean
|
|
errorMessage?: string
|
|
workOrderId?: number
|
|
}
|
|
|
|
if (responseJSON.success) {
|
|
createCloseModalFunction()
|
|
|
|
bulmaJS.confirm({
|
|
title: 'Work Order Created Successfully',
|
|
message: 'Would you like to open the work order now?',
|
|
contextualColorName: 'success',
|
|
okButton: {
|
|
text: 'Yes, Open the Work Order',
|
|
callbackFunction() {
|
|
globalThis.location.href = sunrise.getWorkOrderURL(
|
|
responseJSON.workOrderId,
|
|
true
|
|
)
|
|
}
|
|
}
|
|
})
|
|
} else {
|
|
bulmaJS.alert({
|
|
title: 'Error Creating Work Order',
|
|
message: responseJSON.errorMessage as string,
|
|
contextualColorName: 'danger'
|
|
})
|
|
}
|
|
}
|
|
)
|
|
}
|
|
|
|
cityssm.openHtmlModal('contract-createWorkOrder', {
|
|
onshow(modalElement) {
|
|
;(
|
|
modalElement.querySelector(
|
|
'#workOrderCreate--contractId'
|
|
) as HTMLInputElement
|
|
).value = contractId
|
|
;(
|
|
modalElement.querySelector(
|
|
'#workOrderCreate--workOrderOpenDateString'
|
|
) as HTMLInputElement
|
|
).value = cityssm.dateToString(new Date())
|
|
|
|
const workOrderTypeSelectElement = modalElement.querySelector(
|
|
'#workOrderCreate--workOrderTypeId'
|
|
) as HTMLSelectElement
|
|
|
|
const workOrderTypes = (exports as Record<string, unknown>)
|
|
.workOrderTypes as WorkOrderType[]
|
|
|
|
if (workOrderTypes.length === 1) {
|
|
workOrderTypeSelectElement.innerHTML = ''
|
|
}
|
|
|
|
for (const workOrderType of workOrderTypes) {
|
|
const optionElement = document.createElement('option')
|
|
optionElement.value = workOrderType.workOrderTypeId.toString()
|
|
optionElement.textContent = workOrderType.workOrderType ?? ''
|
|
workOrderTypeSelectElement.append(optionElement)
|
|
}
|
|
},
|
|
onshown(modalElement, closeModalFunction) {
|
|
createCloseModalFunction = closeModalFunction
|
|
bulmaJS.toggleHtmlClipped()
|
|
;(
|
|
modalElement.querySelector(
|
|
'#workOrderCreate--workOrderTypeId'
|
|
) as HTMLSelectElement
|
|
).focus()
|
|
|
|
modalElement
|
|
.querySelector('form')
|
|
?.addEventListener('submit', doCreate)
|
|
},
|
|
onremoved() {
|
|
bulmaJS.toggleHtmlClipped()
|
|
;(
|
|
document.querySelector(
|
|
'#button--createWorkOrder'
|
|
) as HTMLButtonElement
|
|
).focus()
|
|
}
|
|
})
|
|
})
|
|
})()
|