create new work orders
parent
8fbc1202aa
commit
d5b58cd985
|
|
@ -24,5 +24,8 @@ config.settings.lot = {
|
|||
};
|
||||
config.settings.lotOccupancy.occupantCityDefault = "Sault Ste. Marie";
|
||||
config.settings.map.mapCityDefault = "Sault Ste. Marie";
|
||||
config.settings.workOrders = {
|
||||
workOrderNumberLength: 6
|
||||
};
|
||||
config.aliases.externalReceiptNumber = "GP Receipt Number";
|
||||
export default config;
|
||||
|
|
|
|||
|
|
@ -38,6 +38,10 @@ config.settings.lot = {
|
|||
config.settings.lotOccupancy.occupantCityDefault = "Sault Ste. Marie";
|
||||
config.settings.map.mapCityDefault = "Sault Ste. Marie";
|
||||
|
||||
config.settings.workOrders = {
|
||||
workOrderNumberLength: 6
|
||||
};
|
||||
|
||||
config.aliases.externalReceiptNumber = "GP Receipt Number";
|
||||
|
||||
export default config;
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
import type { RequestHandler } from "express";
|
||||
export declare const handler: RequestHandler;
|
||||
export default handler;
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
import { dateToInteger, dateToString } from "@cityssm/expressjs-server-js/dateTimeFns.js";
|
||||
import { getWorkOrderTypes } from "../../helpers/functions.cache.js";
|
||||
export const handler = (request, response) => {
|
||||
const currentDate = new Date();
|
||||
const workOrder = {
|
||||
workOrderOpenDate: dateToInteger(currentDate),
|
||||
workOrderOpenDateString: dateToString(currentDate)
|
||||
};
|
||||
const workOrderTypes = getWorkOrderTypes();
|
||||
response.render("workOrder-edit", {
|
||||
headTitle: "New Work Order",
|
||||
workOrder,
|
||||
isCreate: true,
|
||||
workOrderTypes
|
||||
});
|
||||
};
|
||||
export default handler;
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
import { dateToInteger, dateToString } from "@cityssm/expressjs-server-js/dateTimeFns.js";
|
||||
import type { RequestHandler } from "express";
|
||||
|
||||
import {
|
||||
getWorkOrderTypes
|
||||
} from "../../helpers/functions.cache.js";
|
||||
|
||||
import * as recordTypes from "../../types/recordTypes";
|
||||
|
||||
export const handler: RequestHandler = (request, response) => {
|
||||
|
||||
const currentDate = new Date();
|
||||
|
||||
const workOrder: recordTypes.WorkOrder = {
|
||||
workOrderOpenDate: dateToInteger(currentDate),
|
||||
workOrderOpenDateString: dateToString(currentDate)
|
||||
};
|
||||
|
||||
const workOrderTypes = getWorkOrderTypes();
|
||||
|
||||
response.render("workOrder-edit", {
|
||||
headTitle: "New Work Order",
|
||||
workOrder,
|
||||
isCreate: true,
|
||||
workOrderTypes
|
||||
});
|
||||
};
|
||||
|
||||
export default handler;
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
import type { RequestHandler } from "express";
|
||||
export declare const handler: RequestHandler;
|
||||
export default handler;
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
import { addWorkOrder } from "../../helpers/lotOccupancyDB/addWorkOrder.js";
|
||||
export const handler = async (request, response) => {
|
||||
const workOrderId = addWorkOrder(request.body, request.session);
|
||||
response.json({
|
||||
success: true,
|
||||
workOrderId
|
||||
});
|
||||
};
|
||||
export default handler;
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
import type { RequestHandler } from "express";
|
||||
|
||||
import { addWorkOrder } from "../../helpers/lotOccupancyDB/addWorkOrder.js";
|
||||
|
||||
export const handler: RequestHandler = async (request, response) => {
|
||||
const workOrderId = addWorkOrder(request.body, request.session);
|
||||
|
||||
response.json({
|
||||
success: true,
|
||||
workOrderId
|
||||
});
|
||||
};
|
||||
|
||||
export default handler;
|
||||
|
|
@ -32,4 +32,5 @@ export declare function getProperty(propertyName: "settings.lotOccupancy.occupan
|
|||
export declare function getProperty(propertyName: "settings.lotOccupancy.occupantCityDefault"): string;
|
||||
export declare function getProperty(propertyName: "settings.lotOccupancy.occupantProvinceDefault"): string;
|
||||
export declare function getProperty(propertyName: "settings.fees.taxPercentageDefault"): number;
|
||||
export declare function getProperty(propertyName: "settings.workOrders.workOrderNumberLength"): number;
|
||||
export declare const keepAliveMillis: number;
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ configFallbackValues.set("settings.lotOccupancy.occupancyEndDateIsRequired", tru
|
|||
configFallbackValues.set("settings.lotOccupancy.occupantCityDefault", "");
|
||||
configFallbackValues.set("settings.lotOccupancy.occupantProvinceDefault", "");
|
||||
configFallbackValues.set("settings.fees.taxPercentageDefault", 0);
|
||||
configFallbackValues.set("settings.workOrders.workOrderNumberLength", 6);
|
||||
export function getProperty(propertyName) {
|
||||
const propertyNameSplit = propertyName.split(".");
|
||||
let currentObject = config;
|
||||
|
|
|
|||
|
|
@ -62,6 +62,8 @@ configFallbackValues.set("settings.lotOccupancy.occupantProvinceDefault", "");
|
|||
|
||||
configFallbackValues.set("settings.fees.taxPercentageDefault", 0);
|
||||
|
||||
configFallbackValues.set("settings.workOrders.workOrderNumberLength", 6);
|
||||
|
||||
/*
|
||||
* Set up function overloads
|
||||
*/
|
||||
|
|
@ -142,6 +144,10 @@ export function getProperty(
|
|||
propertyName: "settings.fees.taxPercentageDefault"
|
||||
): number;
|
||||
|
||||
export function getProperty(
|
||||
propertyName: "settings.workOrders.workOrderNumberLength"
|
||||
): number;
|
||||
|
||||
export function getProperty(propertyName: string): unknown {
|
||||
const propertyNameSplit = propertyName.split(".");
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import type * as recordTypes from "../../types/recordTypes";
|
||||
interface AddWorkOrderForm {
|
||||
workOrderTypeId: number | string;
|
||||
workOrderNumber: string;
|
||||
workOrderNumber?: string;
|
||||
workOrderDescription: string;
|
||||
workOrderOpenDateString?: string;
|
||||
workOrderCloseDateString?: string;
|
||||
|
|
|
|||
|
|
@ -1,9 +1,14 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { getNextWorkOrderNumber } from "./getNextWorkOrderNumber.js";
|
||||
import { dateStringToInteger, dateToInteger } from "@cityssm/expressjs-server-js/dateTimeFns.js";
|
||||
export const addWorkOrder = (workOrderForm, requestSession) => {
|
||||
const database = sqlite(databasePath);
|
||||
const rightNow = new Date();
|
||||
let workOrderNumber = workOrderForm.workOrderNumber;
|
||||
if (!workOrderNumber) {
|
||||
workOrderNumber = getNextWorkOrderNumber(database);
|
||||
}
|
||||
const result = database
|
||||
.prepare("insert into WorkOrders (" +
|
||||
"workOrderTypeId, workOrderNumber, workOrderDescription," +
|
||||
|
|
@ -11,7 +16,7 @@ export const addWorkOrder = (workOrderForm, requestSession) => {
|
|||
" recordCreate_userName, recordCreate_timeMillis," +
|
||||
" recordUpdate_userName, recordUpdate_timeMillis)" +
|
||||
" values (?, ?, ?, ?, ?, ?, ?, ?, ?)")
|
||||
.run(workOrderForm.workOrderTypeId, workOrderForm.workOrderNumber, workOrderForm.workOrderDescription, workOrderForm.workOrderOpenDateString
|
||||
.run(workOrderForm.workOrderTypeId, workOrderNumber, workOrderForm.workOrderDescription, workOrderForm.workOrderOpenDateString
|
||||
? dateStringToInteger(workOrderForm.workOrderOpenDateString)
|
||||
: dateToInteger(rightNow), workOrderForm.workOrderCloseDateString
|
||||
? dateStringToInteger(workOrderForm.workOrderCloseDateString)
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@ import sqlite from "better-sqlite3";
|
|||
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
|
||||
import { getNextWorkOrderNumber } from "./getNextWorkOrderNumber.js";
|
||||
|
||||
import {
|
||||
dateStringToInteger,
|
||||
dateToInteger
|
||||
|
|
@ -11,7 +13,7 @@ import type * as recordTypes from "../../types/recordTypes";
|
|||
|
||||
interface AddWorkOrderForm {
|
||||
workOrderTypeId: number | string;
|
||||
workOrderNumber: string;
|
||||
workOrderNumber?: string;
|
||||
workOrderDescription: string;
|
||||
workOrderOpenDateString?: string;
|
||||
workOrderCloseDateString?: string;
|
||||
|
|
@ -25,6 +27,12 @@ export const addWorkOrder = (
|
|||
|
||||
const rightNow = new Date();
|
||||
|
||||
let workOrderNumber = workOrderForm.workOrderNumber;
|
||||
|
||||
if (!workOrderNumber) {
|
||||
workOrderNumber = getNextWorkOrderNumber(database);
|
||||
}
|
||||
|
||||
const result = database
|
||||
.prepare(
|
||||
"insert into WorkOrders (" +
|
||||
|
|
@ -36,7 +44,7 @@ export const addWorkOrder = (
|
|||
)
|
||||
.run(
|
||||
workOrderForm.workOrderTypeId,
|
||||
workOrderForm.workOrderNumber,
|
||||
workOrderNumber,
|
||||
workOrderForm.workOrderDescription,
|
||||
workOrderForm.workOrderOpenDateString
|
||||
? dateStringToInteger(workOrderForm.workOrderOpenDateString)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
export declare const getNextWorkOrderNumber: (connectedDatabase?: sqlite.Database) => string;
|
||||
export default getNextWorkOrderNumber;
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import * as configFunctions from "../functions.config.js";
|
||||
export const getNextWorkOrderNumber = (connectedDatabase) => {
|
||||
const database = connectedDatabase ||
|
||||
sqlite(databasePath, {
|
||||
readonly: true
|
||||
});
|
||||
const paddingLength = configFunctions.getProperty("settings.workOrders.workOrderNumberLength");
|
||||
const currentYearString = new Date().getFullYear().toString();
|
||||
const regex = new RegExp("^" + currentYearString + "-\\d+$");
|
||||
database.function("userFn_matchesWorkOrderNumberSyntax", (workOrderNumber) => {
|
||||
return regex.test(workOrderNumber) ? 1 : 0;
|
||||
});
|
||||
const workOrderNumberRecord = database
|
||||
.prepare("select workOrderNumber from WorkOrders" +
|
||||
" where userFn_matchesWorkOrderNumberSyntax(workOrderNumber) = 1" +
|
||||
" order by cast(substr(workOrderNumber, instr(workOrderNumber, '-') + 1) as integer) desc")
|
||||
.get();
|
||||
if (!connectedDatabase) {
|
||||
database.close();
|
||||
}
|
||||
let workOrderNumberIndex = 0;
|
||||
if (workOrderNumberRecord) {
|
||||
workOrderNumberIndex = Number.parseInt(workOrderNumberRecord.workOrderNumber.split("-")[1], 10);
|
||||
}
|
||||
workOrderNumberIndex += 1;
|
||||
return currentYearString + "-" + workOrderNumberIndex.toString().padStart(paddingLength, "0");
|
||||
};
|
||||
export default getNextWorkOrderNumber;
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
|
||||
import * as configFunctions from "../functions.config.js";
|
||||
|
||||
export const getNextWorkOrderNumber = (
|
||||
connectedDatabase?: sqlite.Database
|
||||
): string => {
|
||||
const database =
|
||||
connectedDatabase ||
|
||||
sqlite(databasePath, {
|
||||
readonly: true
|
||||
});
|
||||
|
||||
const paddingLength = configFunctions.getProperty(
|
||||
"settings.workOrders.workOrderNumberLength"
|
||||
);
|
||||
const currentYearString = new Date().getFullYear().toString();
|
||||
|
||||
const regex = new RegExp("^" + currentYearString + "-\\d+$");
|
||||
|
||||
database.function(
|
||||
"userFn_matchesWorkOrderNumberSyntax",
|
||||
(workOrderNumber: string) => {
|
||||
return regex.test(workOrderNumber) ? 1 : 0;
|
||||
}
|
||||
);
|
||||
|
||||
const workOrderNumberRecord = database
|
||||
.prepare(
|
||||
"select workOrderNumber from WorkOrders" +
|
||||
" where userFn_matchesWorkOrderNumberSyntax(workOrderNumber) = 1" +
|
||||
" order by cast(substr(workOrderNumber, instr(workOrderNumber, '-') + 1) as integer) desc"
|
||||
)
|
||||
.get();
|
||||
|
||||
if (!connectedDatabase) {
|
||||
database.close();
|
||||
}
|
||||
|
||||
let workOrderNumberIndex = 0;
|
||||
|
||||
if (workOrderNumberRecord) {
|
||||
workOrderNumberIndex = Number.parseInt(
|
||||
workOrderNumberRecord.workOrderNumber.split("-")[1],
|
||||
10
|
||||
);
|
||||
}
|
||||
|
||||
workOrderNumberIndex += 1;
|
||||
|
||||
return currentYearString + "-" + workOrderNumberIndex.toString().padStart(paddingLength, "0");
|
||||
};
|
||||
|
||||
export default getNextWorkOrderNumber;
|
||||
|
|
@ -24,7 +24,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
const fieldElement = clickEvent.currentTarget.closest(".field");
|
||||
const inputOrSelectElement = fieldElement.querySelector("input, select");
|
||||
if (inputOrSelectElement.tagName === "INPUT") {
|
||||
inputOrSelectElement.disabled = false;
|
||||
inputOrSelectElement.readOnly = false;
|
||||
}
|
||||
else {
|
||||
const optionElements = inputOrSelectElement.querySelectorAll("option");
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ import type * as globalTypes from "../types/globalTypes";
|
|||
) as HTMLInputElement | HTMLSelectElement;
|
||||
|
||||
if (inputOrSelectElement.tagName === "INPUT") {
|
||||
inputOrSelectElement.disabled = false;
|
||||
(inputOrSelectElement as HTMLInputElement).readOnly = false;
|
||||
} else {
|
||||
const optionElements =
|
||||
inputOrSelectElement.querySelectorAll("option");
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
const urlPrefix = document.querySelector("main").dataset.urlPrefix;
|
||||
const workOrderId = document.querySelector("#workOrderEdit--workOrderId").value;
|
||||
const isCreate = workOrderId === "";
|
||||
los.initializeUnlockFieldButtons(document.querySelector("#form--workOrderEdit"));
|
||||
document
|
||||
.querySelector("#form--workOrderEdit")
|
||||
.addEventListener("submit", (submitEvent) => {
|
||||
|
|
|
|||
|
|
@ -5,8 +5,6 @@ import type { BulmaJS } from "@cityssm/bulma-js/types";
|
|||
|
||||
import type * as globalTypes from "../types/globalTypes";
|
||||
import type * as recordTypes from "../types/recordTypes";
|
||||
import { response } from "express";
|
||||
import { closeDelimiter } from "ejs";
|
||||
|
||||
declare const cityssm: cityssmGlobal;
|
||||
declare const bulmaJS: BulmaJS;
|
||||
|
|
@ -24,6 +22,10 @@ declare const bulmaJS: BulmaJS;
|
|||
|
||||
const isCreate = workOrderId === "";
|
||||
|
||||
los.initializeUnlockFieldButtons(
|
||||
document.querySelector("#form--workOrderEdit")
|
||||
);
|
||||
|
||||
document
|
||||
.querySelector("#form--workOrderEdit")
|
||||
.addEventListener("submit", (submitEvent) => {
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=e=>{const t=e.currentTarget.closest(".field").querySelector("input, select");if("INPUT"===t.tagName)t.disabled=!1;else{const e=t.querySelectorAll("option");for(const t of e)t.disabled=!1}t.focus()},t={highlightMap:(e,t,s)=>{let o,a=t;for(;!(o=e.querySelector("#"+a))&&a.includes("-");)a=a.slice(0,Math.max(0,a.lastIndexOf("-")));if(o){o.style.fill=null,o.classList.add("highlight","is-"+s);const e=o.querySelectorAll("path");for(const t of e)t.style.fill=null}},initializeUnlockFieldButtons:t=>{const s=t.querySelectorAll(".is-unlock-field-button");for(const t of s)t.addEventListener("click",e)},populateAliases:e=>{const t=e.querySelectorAll(".alias");for(const e of t)switch(e.dataset.alias){case"Lot":e.textContent=exports.aliases.lot;break;case"lot":e.textContent=exports.aliases.lot.toLowerCase();break;case"Occupancy":e.textContent=exports.aliases.occupancy;break;case"occupancy":e.textContent=exports.aliases.occupancy.toLowerCase();break;case"Occupant":e.textContent=exports.aliases.occupant;break;case"occupant":e.textContent=exports.aliases.occupant.toLowerCase();break;case"ExternalReceiptNumber":e.textContent=exports.aliases.externalReceiptNumber}}};exports.los=t})();
|
||||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=e=>{const t=e.currentTarget.closest(".field").querySelector("input, select");if("INPUT"===t.tagName)t.readOnly=!1;else{const e=t.querySelectorAll("option");for(const t of e)t.disabled=!1}t.focus()},t={highlightMap:(e,t,s)=>{let o,a=t;for(;!(o=e.querySelector("#"+a))&&a.includes("-");)a=a.slice(0,Math.max(0,a.lastIndexOf("-")));if(o){o.style.fill=null,o.classList.add("highlight","is-"+s);const e=o.querySelectorAll("path");for(const t of e)t.style.fill=null}},initializeUnlockFieldButtons:t=>{const s=t.querySelectorAll(".is-unlock-field-button");for(const t of s)t.addEventListener("click",e)},populateAliases:e=>{const t=e.querySelectorAll(".alias");for(const e of t)switch(e.dataset.alias){case"Lot":e.textContent=exports.aliases.lot;break;case"lot":e.textContent=exports.aliases.lot.toLowerCase();break;case"Occupancy":e.textContent=exports.aliases.occupancy;break;case"occupancy":e.textContent=exports.aliases.occupancy.toLowerCase();break;case"Occupant":e.textContent=exports.aliases.occupant;break;case"occupant":e.textContent=exports.aliases.occupant.toLowerCase();break;case"ExternalReceiptNumber":e.textContent=exports.aliases.externalReceiptNumber}}};exports.los=t})();
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -4,6 +4,8 @@ import handler_search from "../handlers/workOrders-get/search.js";
|
|||
import handler_doSearchWorkOrders from "../handlers/workOrders-post/doSearchWorkOrders.js";
|
||||
import handler_view from "../handlers/workOrders-get/view.js";
|
||||
import handler_doReopenWorkOrder from "../handlers/workOrders-post/doReopenWorkOrder.js";
|
||||
import handler_new from "../handlers/workOrders-get/new.js";
|
||||
import handler_doCreateWorkOrder from "../handlers/workOrders-post/doCreateWorkOrder.js";
|
||||
import handler_edit from "../handlers/workOrders-get/edit.js";
|
||||
import handler_doUpdateWorkOrder from "../handlers/workOrders-post/doUpdateWorkOrder.js";
|
||||
import handler_doAddWorkOrderLotOccupancy from "../handlers/workOrders-post/doAddWorkOrderLotOccupancy.js";
|
||||
|
|
@ -18,6 +20,8 @@ import handler_doDeleteWorkOrderMilestone from "../handlers/workOrders-post/doDe
|
|||
export const router = Router();
|
||||
router.get("/", handler_search);
|
||||
router.post("/doSearchWorkOrders", handler_doSearchWorkOrders);
|
||||
router.get("/new", permissionHandlers.adminGetHandler, handler_new);
|
||||
router.post("/doCreateWorkOrder", permissionHandlers.updatePostHandler, handler_doCreateWorkOrder);
|
||||
router.get("/:workOrderId", handler_view);
|
||||
router.post("/doReopenWorkOrder", permissionHandlers.updatePostHandler, handler_doReopenWorkOrder);
|
||||
router.get("/:workOrderId/edit", permissionHandlers.updateGetHandler, handler_edit);
|
||||
|
|
|
|||
|
|
@ -8,6 +8,9 @@ import handler_doSearchWorkOrders from "../handlers/workOrders-post/doSearchWork
|
|||
import handler_view from "../handlers/workOrders-get/view.js";
|
||||
import handler_doReopenWorkOrder from "../handlers/workOrders-post/doReopenWorkOrder.js";
|
||||
|
||||
import handler_new from "../handlers/workOrders-get/new.js";
|
||||
import handler_doCreateWorkOrder from "../handlers/workOrders-post/doCreateWorkOrder.js";
|
||||
|
||||
import handler_edit from "../handlers/workOrders-get/edit.js";
|
||||
import handler_doUpdateWorkOrder from "../handlers/workOrders-post/doUpdateWorkOrder.js";
|
||||
|
||||
|
|
@ -29,6 +32,14 @@ router.get("/", handler_search);
|
|||
|
||||
router.post("/doSearchWorkOrders", handler_doSearchWorkOrders);
|
||||
|
||||
router.get("/new", permissionHandlers.adminGetHandler, handler_new);
|
||||
|
||||
router.post(
|
||||
"/doCreateWorkOrder",
|
||||
permissionHandlers.updatePostHandler,
|
||||
handler_doCreateWorkOrder
|
||||
);
|
||||
|
||||
router.get("/:workOrderId", handler_view);
|
||||
|
||||
router.post(
|
||||
|
|
|
|||
|
|
@ -42,6 +42,9 @@ export interface Config {
|
|||
occupantCityDefault?: string;
|
||||
occupantProvinceDefault?: string;
|
||||
};
|
||||
workOrders?: {
|
||||
workOrderNumberLength?: number;
|
||||
};
|
||||
};
|
||||
}
|
||||
interface ConfigApplication {
|
||||
|
|
|
|||
|
|
@ -42,6 +42,9 @@ export interface Config {
|
|||
occupantCityDefault?: string;
|
||||
occupantProvinceDefault?: string;
|
||||
};
|
||||
workOrders?: {
|
||||
workOrderNumberLength?: number;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -46,12 +46,20 @@
|
|||
<div class="panel-block is-block">
|
||||
<div class="columns">
|
||||
<div class="column">
|
||||
<div class="field">
|
||||
<label class="label" for="workOrderEdit--workOrderNumber">Work Order Number</label>
|
||||
<div class="field has-addons">
|
||||
<div class="control is-expanded">
|
||||
<input class="input" id="workOrderEdit--workOrderNumber" name="workOrderNumber" type="text" value="<%= workOrder.workOrderNumber %>" maxlength="50" required readonly />
|
||||
</div>
|
||||
<div class="control">
|
||||
<input class="input" id="workOrderEdit--workOrderNumber" name="workOrderNumber" type="text" value="<%= workOrder.workOrderNumber %>" maxlength="50" required />
|
||||
<button class="button is-unlock-field-button" data-tooltip="Unlock Field" type="button" aria-label="Unlock Field">
|
||||
<i class="fas fa-unlock" aria-hidden="true"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<% if (isCreate) { %>
|
||||
<p class="help">Leave work order number blank to autopopulate.</p>
|
||||
<% } %>
|
||||
</div>
|
||||
<div class="column">
|
||||
<div class="field">
|
||||
|
|
@ -205,6 +213,7 @@
|
|||
|
||||
<%- include('_footerA'); -%>
|
||||
|
||||
<% if (!isCreate) { %>
|
||||
<script>
|
||||
exports.workOrderComments = <%- JSON.stringify(workOrder.workOrderComments) %>;
|
||||
exports.workOrderLots = <%- JSON.stringify(workOrder.workOrderLots) %>;
|
||||
|
|
@ -214,6 +223,7 @@
|
|||
exports.lotStatuses = <%- JSON.stringify(lotStatuses) %>;
|
||||
exports.workOrderMilestoneTypes = <%- JSON.stringify(workOrderMilestoneTypes) %>;
|
||||
</script>
|
||||
<% } %>
|
||||
<script src="<% urlPrefix %>/javascripts/workOrderEdit.min.js"></script>
|
||||
|
||||
<%- include('_footerB'); -%>
|
||||
Loading…
Reference in New Issue