parent
d5b58cd985
commit
754cf80a36
|
|
@ -0,0 +1,3 @@
|
||||||
|
import type { RequestHandler } from "express";
|
||||||
|
export declare const handler: RequestHandler;
|
||||||
|
export default handler;
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
export const handler = (request, response) => {
|
||||||
|
response.render("workOrder-milestoneCalendar", {
|
||||||
|
headTitle: "Work Order Milestone Calendar"
|
||||||
|
});
|
||||||
|
};
|
||||||
|
export default handler;
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
import type { RequestHandler } from "express";
|
||||||
|
|
||||||
|
export const handler: RequestHandler = (request, response) => {
|
||||||
|
response.render("workOrder-milestoneCalendar", {
|
||||||
|
headTitle: "Work Order Milestone Calendar"
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
export default handler;
|
||||||
|
|
@ -2,7 +2,9 @@ import { addWorkOrderMilestone } from "../../helpers/lotOccupancyDB/addWorkOrder
|
||||||
import { getWorkOrderMilestones } from "../../helpers/lotOccupancyDB/getWorkOrderMilestones.js";
|
import { getWorkOrderMilestones } from "../../helpers/lotOccupancyDB/getWorkOrderMilestones.js";
|
||||||
export const handler = async (request, response) => {
|
export const handler = async (request, response) => {
|
||||||
const success = addWorkOrderMilestone(request.body, request.session);
|
const success = addWorkOrderMilestone(request.body, request.session);
|
||||||
const workOrderMilestones = getWorkOrderMilestones(request.body.workOrderId);
|
const workOrderMilestones = getWorkOrderMilestones({
|
||||||
|
workOrderId: request.body.workOrderId
|
||||||
|
});
|
||||||
response.json({
|
response.json({
|
||||||
success,
|
success,
|
||||||
workOrderMilestones
|
workOrderMilestones
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,9 @@ import { getWorkOrderMilestones } from "../../helpers/lotOccupancyDB/getWorkOrde
|
||||||
export const handler: RequestHandler = async (request, response) => {
|
export const handler: RequestHandler = async (request, response) => {
|
||||||
const success = addWorkOrderMilestone(request.body, request.session);
|
const success = addWorkOrderMilestone(request.body, request.session);
|
||||||
|
|
||||||
const workOrderMilestones = getWorkOrderMilestones(
|
const workOrderMilestones = getWorkOrderMilestones({
|
||||||
request.body.workOrderId
|
workOrderId: request.body.workOrderId
|
||||||
);
|
});
|
||||||
|
|
||||||
response.json({
|
response.json({
|
||||||
success,
|
success,
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,9 @@ export const handler = async (request, response) => {
|
||||||
const success = completeWorkOrderMilestone({
|
const success = completeWorkOrderMilestone({
|
||||||
workOrderMilestoneId: request.body.workOrderMilestoneId
|
workOrderMilestoneId: request.body.workOrderMilestoneId
|
||||||
}, request.session);
|
}, request.session);
|
||||||
const workOrderMilestones = getWorkOrderMilestones(request.body.workOrderId);
|
const workOrderMilestones = getWorkOrderMilestones({
|
||||||
|
workOrderId: request.body.workOrderId
|
||||||
|
});
|
||||||
response.json({
|
response.json({
|
||||||
success,
|
success,
|
||||||
workOrderMilestones
|
workOrderMilestones
|
||||||
|
|
|
||||||
|
|
@ -12,9 +12,9 @@ export const handler: RequestHandler = async (request, response) => {
|
||||||
request.session
|
request.session
|
||||||
);
|
);
|
||||||
|
|
||||||
const workOrderMilestones = getWorkOrderMilestones(
|
const workOrderMilestones = getWorkOrderMilestones({
|
||||||
request.body.workOrderId
|
workOrderId: request.body.workOrderId
|
||||||
);
|
});
|
||||||
|
|
||||||
response.json({
|
response.json({
|
||||||
success,
|
success,
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,9 @@ import { deleteWorkOrderMilestone } from "../../helpers/lotOccupancyDB/deleteWor
|
||||||
import { getWorkOrderMilestones } from "../../helpers/lotOccupancyDB/getWorkOrderMilestones.js";
|
import { getWorkOrderMilestones } from "../../helpers/lotOccupancyDB/getWorkOrderMilestones.js";
|
||||||
export const handler = async (request, response) => {
|
export const handler = async (request, response) => {
|
||||||
const success = deleteWorkOrderMilestone(request.body.workOrderMilestoneId, request.session);
|
const success = deleteWorkOrderMilestone(request.body.workOrderMilestoneId, request.session);
|
||||||
const workOrderMilestones = getWorkOrderMilestones(request.body.workOrderId);
|
const workOrderMilestones = getWorkOrderMilestones({
|
||||||
|
workOrderId: request.body.workOrderId
|
||||||
|
});
|
||||||
response.json({
|
response.json({
|
||||||
success,
|
success,
|
||||||
workOrderMilestones
|
workOrderMilestones
|
||||||
|
|
|
||||||
|
|
@ -10,9 +10,9 @@ export const handler: RequestHandler = async (request, response) => {
|
||||||
request.session
|
request.session
|
||||||
);
|
);
|
||||||
|
|
||||||
const workOrderMilestones = getWorkOrderMilestones(
|
const workOrderMilestones = getWorkOrderMilestones({
|
||||||
request.body.workOrderId
|
workOrderId: request.body.workOrderId
|
||||||
);
|
});
|
||||||
|
|
||||||
response.json({
|
response.json({
|
||||||
success,
|
success,
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,9 @@ import { reopenWorkOrderMilestone } from "../../helpers/lotOccupancyDB/reopenWor
|
||||||
import { getWorkOrderMilestones } from "../../helpers/lotOccupancyDB/getWorkOrderMilestones.js";
|
import { getWorkOrderMilestones } from "../../helpers/lotOccupancyDB/getWorkOrderMilestones.js";
|
||||||
export const handler = async (request, response) => {
|
export const handler = async (request, response) => {
|
||||||
const success = reopenWorkOrderMilestone(request.body.workOrderMilestoneId, request.session);
|
const success = reopenWorkOrderMilestone(request.body.workOrderMilestoneId, request.session);
|
||||||
const workOrderMilestones = getWorkOrderMilestones(request.body.workOrderId);
|
const workOrderMilestones = getWorkOrderMilestones({
|
||||||
|
workOrderId: request.body.workOrderId
|
||||||
|
});
|
||||||
response.json({
|
response.json({
|
||||||
success,
|
success,
|
||||||
workOrderMilestones
|
workOrderMilestones
|
||||||
|
|
|
||||||
|
|
@ -10,9 +10,9 @@ export const handler: RequestHandler = async (request, response) => {
|
||||||
request.session
|
request.session
|
||||||
);
|
);
|
||||||
|
|
||||||
const workOrderMilestones = getWorkOrderMilestones(
|
const workOrderMilestones = getWorkOrderMilestones({
|
||||||
request.body.workOrderId
|
workOrderId: request.body.workOrderId
|
||||||
);
|
});
|
||||||
|
|
||||||
response.json({
|
response.json({
|
||||||
success,
|
success,
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,9 @@ import { updateWorkOrderMilestone } from "../../helpers/lotOccupancyDB/updateWor
|
||||||
import { getWorkOrderMilestones } from "../../helpers/lotOccupancyDB/getWorkOrderMilestones.js";
|
import { getWorkOrderMilestones } from "../../helpers/lotOccupancyDB/getWorkOrderMilestones.js";
|
||||||
export const handler = async (request, response) => {
|
export const handler = async (request, response) => {
|
||||||
const success = updateWorkOrderMilestone(request.body, request.session);
|
const success = updateWorkOrderMilestone(request.body, request.session);
|
||||||
const workOrderMilestones = getWorkOrderMilestones(request.body.workOrderId);
|
const workOrderMilestones = getWorkOrderMilestones({
|
||||||
|
workOrderId: request.body.workOrderId
|
||||||
|
});
|
||||||
response.json({
|
response.json({
|
||||||
success,
|
success,
|
||||||
workOrderMilestones
|
workOrderMilestones
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,9 @@ import { getWorkOrderMilestones } from "../../helpers/lotOccupancyDB/getWorkOrde
|
||||||
export const handler: RequestHandler = async (request, response) => {
|
export const handler: RequestHandler = async (request, response) => {
|
||||||
const success = updateWorkOrderMilestone(request.body, request.session);
|
const success = updateWorkOrderMilestone(request.body, request.session);
|
||||||
|
|
||||||
const workOrderMilestones = getWorkOrderMilestones(
|
const workOrderMilestones = getWorkOrderMilestones({
|
||||||
request.body.workOrderId
|
workOrderId: request.body.workOrderId
|
||||||
);
|
});
|
||||||
|
|
||||||
response.json({
|
response.json({
|
||||||
success,
|
success,
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,9 @@ const _getWorkOrder = (sql, workOrderId_or_workOrderNumber) => {
|
||||||
includeOccupants: true
|
includeOccupants: true
|
||||||
}, database).lotOccupancies;
|
}, database).lotOccupancies;
|
||||||
workOrder.workOrderComments = getWorkOrderComments(workOrder.workOrderId, database);
|
workOrder.workOrderComments = getWorkOrderComments(workOrder.workOrderId, database);
|
||||||
workOrder.workOrderMilestones = getWorkOrderMilestones(workOrder.workOrderId, database);
|
workOrder.workOrderMilestones = getWorkOrderMilestones({
|
||||||
|
workOrderId: workOrder.workOrderId
|
||||||
|
}, database);
|
||||||
}
|
}
|
||||||
database.close();
|
database.close();
|
||||||
return workOrder;
|
return workOrder;
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,9 @@ const _getWorkOrder = (
|
||||||
);
|
);
|
||||||
|
|
||||||
workOrder.workOrderMilestones = getWorkOrderMilestones(
|
workOrder.workOrderMilestones = getWorkOrderMilestones(
|
||||||
workOrder.workOrderId,
|
{
|
||||||
|
workOrderId: workOrder.workOrderId
|
||||||
|
},
|
||||||
database
|
database
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,7 @@
|
||||||
import sqlite from "better-sqlite3";
|
import sqlite from "better-sqlite3";
|
||||||
import type * as recordTypes from "../../types/recordTypes";
|
import type * as recordTypes from "../../types/recordTypes";
|
||||||
export declare const getWorkOrderMilestones: (workOrderId: number | string, connectedDatabase?: sqlite.Database) => recordTypes.WorkOrderMilestone[];
|
interface WorkOrderMilestoneFilters {
|
||||||
|
workOrderId?: number | string;
|
||||||
|
}
|
||||||
|
export declare const getWorkOrderMilestones: (filters: WorkOrderMilestoneFilters, connectedDatabase?: sqlite.Database) => recordTypes.WorkOrderMilestone[];
|
||||||
export default getWorkOrderMilestones;
|
export default getWorkOrderMilestones;
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,19 @@
|
||||||
import sqlite from "better-sqlite3";
|
import sqlite from "better-sqlite3";
|
||||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||||
import { dateIntegerToString, timeIntegerToString } from "@cityssm/expressjs-server-js/dateTimeFns.js";
|
import { dateIntegerToString, timeIntegerToString } from "@cityssm/expressjs-server-js/dateTimeFns.js";
|
||||||
export const getWorkOrderMilestones = (workOrderId, connectedDatabase) => {
|
export const getWorkOrderMilestones = (filters, connectedDatabase) => {
|
||||||
const database = connectedDatabase ||
|
const database = connectedDatabase ||
|
||||||
sqlite(databasePath, {
|
sqlite(databasePath, {
|
||||||
readonly: true
|
readonly: true
|
||||||
});
|
});
|
||||||
database.function("userFn_dateIntegerToString", dateIntegerToString);
|
database.function("userFn_dateIntegerToString", dateIntegerToString);
|
||||||
database.function("userFn_timeIntegerToString", timeIntegerToString);
|
database.function("userFn_timeIntegerToString", timeIntegerToString);
|
||||||
|
let sqlWhereClause = " where m.recordDelete_timeMillis is null";
|
||||||
|
const sqlParameters = [];
|
||||||
|
if (filters.workOrderId) {
|
||||||
|
sqlWhereClause += " and m.workOrderId = ?";
|
||||||
|
sqlParameters.push(filters.workOrderId);
|
||||||
|
}
|
||||||
const workOrderMilestones = database
|
const workOrderMilestones = database
|
||||||
.prepare("select m.workOrderMilestoneId," +
|
.prepare("select m.workOrderMilestoneId," +
|
||||||
" m.workOrderMilestoneTypeId, t.workORderMilestoneType," +
|
" m.workOrderMilestoneTypeId, t.workORderMilestoneType," +
|
||||||
|
|
@ -19,13 +25,12 @@ export const getWorkOrderMilestones = (workOrderId, connectedDatabase) => {
|
||||||
" m.recordCreate_userName, m.recordUpdate_userName" +
|
" m.recordCreate_userName, m.recordUpdate_userName" +
|
||||||
" from WorkOrderMilestones m" +
|
" from WorkOrderMilestones m" +
|
||||||
" left join WorkOrderMilestoneTypes t on m.workOrderMilestoneTypeId = t.workOrderMilestoneTypeId" +
|
" left join WorkOrderMilestoneTypes t on m.workOrderMilestoneTypeId = t.workOrderMilestoneTypeId" +
|
||||||
" where m.recordDelete_timeMillis is null" +
|
sqlWhereClause +
|
||||||
" and m.workOrderId = ?" +
|
|
||||||
" order by" +
|
" order by" +
|
||||||
" m.workOrderMilestoneCompletionDate, m.workOrderMilestoneCompletionTime," +
|
" m.workOrderMilestoneCompletionDate, m.workOrderMilestoneCompletionTime," +
|
||||||
" m.workOrderMilestoneDate, case when m.workOrderMilestoneTime = 0 then 9999 else m.workOrderMilestoneTime end," +
|
" m.workOrderMilestoneDate, case when m.workOrderMilestoneTime = 0 then 9999 else m.workOrderMilestoneTime end," +
|
||||||
" t.orderNumber, m.workOrderMilestoneId")
|
" t.orderNumber, m.workOrderMilestoneId")
|
||||||
.all(workOrderId);
|
.all(sqlParameters);
|
||||||
if (!connectedDatabase) {
|
if (!connectedDatabase) {
|
||||||
database.close();
|
database.close();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,12 @@ import {
|
||||||
|
|
||||||
import type * as recordTypes from "../../types/recordTypes";
|
import type * as recordTypes from "../../types/recordTypes";
|
||||||
|
|
||||||
|
interface WorkOrderMilestoneFilters {
|
||||||
|
workOrderId?: number | string;
|
||||||
|
}
|
||||||
|
|
||||||
export const getWorkOrderMilestones = (
|
export const getWorkOrderMilestones = (
|
||||||
workOrderId: number | string,
|
filters: WorkOrderMilestoneFilters,
|
||||||
connectedDatabase?: sqlite.Database
|
connectedDatabase?: sqlite.Database
|
||||||
): recordTypes.WorkOrderMilestone[] => {
|
): recordTypes.WorkOrderMilestone[] => {
|
||||||
const database =
|
const database =
|
||||||
|
|
@ -22,6 +26,14 @@ export const getWorkOrderMilestones = (
|
||||||
database.function("userFn_dateIntegerToString", dateIntegerToString);
|
database.function("userFn_dateIntegerToString", dateIntegerToString);
|
||||||
database.function("userFn_timeIntegerToString", timeIntegerToString);
|
database.function("userFn_timeIntegerToString", timeIntegerToString);
|
||||||
|
|
||||||
|
let sqlWhereClause = " where m.recordDelete_timeMillis is null";
|
||||||
|
const sqlParameters = [];
|
||||||
|
|
||||||
|
if (filters.workOrderId) {
|
||||||
|
sqlWhereClause += " and m.workOrderId = ?";
|
||||||
|
sqlParameters.push(filters.workOrderId);
|
||||||
|
}
|
||||||
|
|
||||||
const workOrderMilestones = database
|
const workOrderMilestones = database
|
||||||
.prepare(
|
.prepare(
|
||||||
"select m.workOrderMilestoneId," +
|
"select m.workOrderMilestoneId," +
|
||||||
|
|
@ -34,14 +46,13 @@ export const getWorkOrderMilestones = (
|
||||||
" m.recordCreate_userName, m.recordUpdate_userName" +
|
" m.recordCreate_userName, m.recordUpdate_userName" +
|
||||||
" from WorkOrderMilestones m" +
|
" from WorkOrderMilestones m" +
|
||||||
" left join WorkOrderMilestoneTypes t on m.workOrderMilestoneTypeId = t.workOrderMilestoneTypeId" +
|
" left join WorkOrderMilestoneTypes t on m.workOrderMilestoneTypeId = t.workOrderMilestoneTypeId" +
|
||||||
" where m.recordDelete_timeMillis is null" +
|
sqlWhereClause +
|
||||||
" and m.workOrderId = ?" +
|
|
||||||
" order by" +
|
" order by" +
|
||||||
" m.workOrderMilestoneCompletionDate, m.workOrderMilestoneCompletionTime," +
|
" m.workOrderMilestoneCompletionDate, m.workOrderMilestoneCompletionTime," +
|
||||||
" m.workOrderMilestoneDate, case when m.workOrderMilestoneTime = 0 then 9999 else m.workOrderMilestoneTime end," +
|
" m.workOrderMilestoneDate, case when m.workOrderMilestoneTime = 0 then 9999 else m.workOrderMilestoneTime end," +
|
||||||
" t.orderNumber, m.workOrderMilestoneId"
|
" t.orderNumber, m.workOrderMilestoneId"
|
||||||
)
|
)
|
||||||
.all(workOrderId);
|
.all(sqlParameters);
|
||||||
|
|
||||||
if (!connectedDatabase) {
|
if (!connectedDatabase) {
|
||||||
database.close();
|
database.close();
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
export {};
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
(() => {
|
||||||
|
const urlPrefix = document.querySelector("main").dataset.urlPrefix;
|
||||||
|
const workOrderSearchFiltersFormElement = document.querySelector("#form--searchFilters");
|
||||||
|
const workOrderMilestoneDateFilterElement = workOrderSearchFiltersFormElement.querySelector("#searchFilter--workOrderMilestoneDateFilter");
|
||||||
|
const workOrderMilestoneDateStringElement = workOrderSearchFiltersFormElement.querySelector("#searchFilter--workOrderMilestoneDateString");
|
||||||
|
const renderMilestones = (workOrderMilestones) => {
|
||||||
|
};
|
||||||
|
const getMilestones = (event) => {
|
||||||
|
if (event) {
|
||||||
|
event.preventDefault();
|
||||||
|
}
|
||||||
|
cityssm.postJSON(urlPrefix + "/workOrders/doGetWorkOrderMilestones", workOrderSearchFiltersFormElement, (responseJSON) => {
|
||||||
|
renderMilestones(responseJSON.workOrderMilestones);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
workOrderMilestoneDateFilterElement.addEventListener("change", () => {
|
||||||
|
workOrderMilestoneDateStringElement.disabled = (workOrderMilestoneDateFilterElement.value !== "date");
|
||||||
|
getMilestones();
|
||||||
|
});
|
||||||
|
workOrderMilestoneDateStringElement.addEventListener("change", getMilestones);
|
||||||
|
workOrderSearchFiltersFormElement.addEventListener("submit", getMilestones);
|
||||||
|
getMilestones();
|
||||||
|
})();
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
/* eslint-disable unicorn/prefer-module */
|
||||||
|
|
||||||
|
import type * as recordTypes from "../types/recordTypes";
|
||||||
|
|
||||||
|
import type { cityssmGlobal } from "@cityssm/bulma-webapp-js/src/types";
|
||||||
|
|
||||||
|
declare const cityssm: cityssmGlobal;
|
||||||
|
|
||||||
|
(() => {
|
||||||
|
const urlPrefix = document.querySelector("main").dataset.urlPrefix;
|
||||||
|
|
||||||
|
const workOrderSearchFiltersFormElement = document.querySelector("#form--searchFilters") as HTMLFormElement;
|
||||||
|
|
||||||
|
const workOrderMilestoneDateFilterElement = workOrderSearchFiltersFormElement.querySelector("#searchFilter--workOrderMilestoneDateFilter") as HTMLSelectElement;
|
||||||
|
const workOrderMilestoneDateStringElement = workOrderSearchFiltersFormElement.querySelector("#searchFilter--workOrderMilestoneDateString") as HTMLInputElement;
|
||||||
|
|
||||||
|
const renderMilestones = (workOrderMilestones: recordTypes.WorkOrderMilestone[]) => {
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
const getMilestones = (event?: Event) => {
|
||||||
|
if (event) {
|
||||||
|
event.preventDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
cityssm.postJSON(urlPrefix + "/workOrders/doGetWorkOrderMilestones",
|
||||||
|
workOrderSearchFiltersFormElement,
|
||||||
|
(responseJSON: {workOrderMilestones: recordTypes.WorkOrderMilestone[]}) => {
|
||||||
|
renderMilestones(responseJSON.workOrderMilestones);
|
||||||
|
})
|
||||||
|
} ;
|
||||||
|
|
||||||
|
workOrderMilestoneDateFilterElement.addEventListener("change", () => {
|
||||||
|
workOrderMilestoneDateStringElement.disabled = (workOrderMilestoneDateFilterElement.value !== "date");
|
||||||
|
getMilestones();
|
||||||
|
});
|
||||||
|
|
||||||
|
workOrderMilestoneDateStringElement.addEventListener("change", getMilestones);
|
||||||
|
workOrderSearchFiltersFormElement.addEventListener("submit", getMilestones);
|
||||||
|
|
||||||
|
getMilestones();
|
||||||
|
})();
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=document.querySelector("main").dataset.urlPrefix,r=document.querySelector("#form--searchFilters"),t=r.querySelector("#searchFilter--workOrderMilestoneDateFilter"),s=r.querySelector("#searchFilter--workOrderMilestoneDateString"),o=t=>{t&&t.preventDefault(),cityssm.postJSON(e+"/workOrders/doGetWorkOrderMilestones",r,e=>{e.workOrderMilestones})};t.addEventListener("change",()=>{s.disabled="date"!==t.value,o()}),s.addEventListener("change",o),r.addEventListener("submit",o),o()})();
|
||||||
|
|
@ -2,6 +2,7 @@ import { Router } from "express";
|
||||||
import * as permissionHandlers from "../handlers/permissions.js";
|
import * as permissionHandlers from "../handlers/permissions.js";
|
||||||
import handler_search from "../handlers/workOrders-get/search.js";
|
import handler_search from "../handlers/workOrders-get/search.js";
|
||||||
import handler_doSearchWorkOrders from "../handlers/workOrders-post/doSearchWorkOrders.js";
|
import handler_doSearchWorkOrders from "../handlers/workOrders-post/doSearchWorkOrders.js";
|
||||||
|
import handler_milestoneCalendar from "../handlers/workOrders-get/milestoneCalendar.js";
|
||||||
import handler_view from "../handlers/workOrders-get/view.js";
|
import handler_view from "../handlers/workOrders-get/view.js";
|
||||||
import handler_doReopenWorkOrder from "../handlers/workOrders-post/doReopenWorkOrder.js";
|
import handler_doReopenWorkOrder from "../handlers/workOrders-post/doReopenWorkOrder.js";
|
||||||
import handler_new from "../handlers/workOrders-get/new.js";
|
import handler_new from "../handlers/workOrders-get/new.js";
|
||||||
|
|
@ -20,6 +21,7 @@ import handler_doDeleteWorkOrderMilestone from "../handlers/workOrders-post/doDe
|
||||||
export const router = Router();
|
export const router = Router();
|
||||||
router.get("/", handler_search);
|
router.get("/", handler_search);
|
||||||
router.post("/doSearchWorkOrders", handler_doSearchWorkOrders);
|
router.post("/doSearchWorkOrders", handler_doSearchWorkOrders);
|
||||||
|
router.get("/milestoneCalendar", handler_milestoneCalendar);
|
||||||
router.get("/new", permissionHandlers.adminGetHandler, handler_new);
|
router.get("/new", permissionHandlers.adminGetHandler, handler_new);
|
||||||
router.post("/doCreateWorkOrder", permissionHandlers.updatePostHandler, handler_doCreateWorkOrder);
|
router.post("/doCreateWorkOrder", permissionHandlers.updatePostHandler, handler_doCreateWorkOrder);
|
||||||
router.get("/:workOrderId", handler_view);
|
router.get("/:workOrderId", handler_view);
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,8 @@ import * as permissionHandlers from "../handlers/permissions.js";
|
||||||
import handler_search from "../handlers/workOrders-get/search.js";
|
import handler_search from "../handlers/workOrders-get/search.js";
|
||||||
import handler_doSearchWorkOrders from "../handlers/workOrders-post/doSearchWorkOrders.js";
|
import handler_doSearchWorkOrders from "../handlers/workOrders-post/doSearchWorkOrders.js";
|
||||||
|
|
||||||
|
import handler_milestoneCalendar from "../handlers/workOrders-get/milestoneCalendar.js";
|
||||||
|
|
||||||
import handler_view from "../handlers/workOrders-get/view.js";
|
import handler_view from "../handlers/workOrders-get/view.js";
|
||||||
import handler_doReopenWorkOrder from "../handlers/workOrders-post/doReopenWorkOrder.js";
|
import handler_doReopenWorkOrder from "../handlers/workOrders-post/doReopenWorkOrder.js";
|
||||||
|
|
||||||
|
|
@ -28,10 +30,18 @@ import handler_doDeleteWorkOrderMilestone from "../handlers/workOrders-post/doDe
|
||||||
|
|
||||||
export const router = Router();
|
export const router = Router();
|
||||||
|
|
||||||
|
// Search
|
||||||
|
|
||||||
router.get("/", handler_search);
|
router.get("/", handler_search);
|
||||||
|
|
||||||
router.post("/doSearchWorkOrders", handler_doSearchWorkOrders);
|
router.post("/doSearchWorkOrders", handler_doSearchWorkOrders);
|
||||||
|
|
||||||
|
// Milestone Calendar
|
||||||
|
|
||||||
|
router.get("/milestoneCalendar", handler_milestoneCalendar);
|
||||||
|
|
||||||
|
// New
|
||||||
|
|
||||||
router.get("/new", permissionHandlers.adminGetHandler, handler_new);
|
router.get("/new", permissionHandlers.adminGetHandler, handler_new);
|
||||||
|
|
||||||
router.post(
|
router.post(
|
||||||
|
|
@ -40,6 +50,8 @@ router.post(
|
||||||
handler_doCreateWorkOrder
|
handler_doCreateWorkOrder
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// View
|
||||||
|
|
||||||
router.get("/:workOrderId", handler_view);
|
router.get("/:workOrderId", handler_view);
|
||||||
|
|
||||||
router.post(
|
router.post(
|
||||||
|
|
@ -48,6 +60,8 @@ router.post(
|
||||||
handler_doReopenWorkOrder
|
handler_doReopenWorkOrder
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Edit
|
||||||
|
|
||||||
router.get(
|
router.get(
|
||||||
"/:workOrderId/edit",
|
"/:workOrderId/edit",
|
||||||
permissionHandlers.updateGetHandler,
|
permissionHandlers.updateGetHandler,
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
<aside class="menu">
|
||||||
|
<h2 class="menu-label">
|
||||||
|
Work Orders
|
||||||
|
</h2>
|
||||||
|
<ul class="menu-list">
|
||||||
|
<li>
|
||||||
|
<a class="<%= (headTitle === "Work Order Search" ? "is-active" : "") %>" href="<%= urlPrefix %>/workOrders">
|
||||||
|
<span class="icon is-small"><i class="fas fa-fw fa-hard-hat" aria-hidden="true"></i></span>
|
||||||
|
<span>Work Order Search</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="<%= (headTitle.endsWith("Milestone Calendar") ? "is-active" : "") %>" href="<%= urlPrefix %>/workOrders/milestoneCalendar">
|
||||||
|
<span class="icon is-small"><i class="fas fa-fw fa-calendar" aria-hidden="true"></i></span>
|
||||||
|
<span>Milestone Calendar</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</aside>
|
||||||
|
|
@ -0,0 +1,66 @@
|
||||||
|
<%- include('_header'); -%>
|
||||||
|
|
||||||
|
<%- include('_header'); -%>
|
||||||
|
|
||||||
|
<div class="columns">
|
||||||
|
<div class="column is-3 is-hidden-mobile">
|
||||||
|
<%- include('_menu-workOrders'); -%>
|
||||||
|
</div>
|
||||||
|
<div class="column">
|
||||||
|
<nav class="breadcrumb">
|
||||||
|
<ul>
|
||||||
|
<li><a href="<%= urlPrefix %>/dashboard">Home</a></li>
|
||||||
|
<li>
|
||||||
|
<a href="<%= urlPrefix %>/workOrders">
|
||||||
|
<span class="icon is-small"><i class="fas fa-hard-hat" aria-hidden="true"></i></span>
|
||||||
|
<span>Work Orders</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li class="is-active">
|
||||||
|
<a href="#" aria-current="page">
|
||||||
|
Milestone Calendar
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<h1 class="title is-1">
|
||||||
|
Milestone Calendar
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<div class="box">
|
||||||
|
<form id="form--searchFilters">
|
||||||
|
<div class="columns">
|
||||||
|
<div class="column">
|
||||||
|
<div class="field">
|
||||||
|
<label class="label" for="searchFilter--workOrderMilestoneDateFilter">Miestone Date Filter Type</label>
|
||||||
|
<div class="control">
|
||||||
|
<div class="select is-fullwidth">
|
||||||
|
<select id="searchFilter--workOrderMilestoneDateFilter">
|
||||||
|
<option value="upcomingMissed" selected>Upcoming and Missed</option>
|
||||||
|
<option value="recent">Recent</option>
|
||||||
|
<option value="date">Specific Date</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="column">
|
||||||
|
<div class="field">
|
||||||
|
<label class="label" for="searchFilter--workOrderMilestoneDateString">Milestone Date</label>
|
||||||
|
<div class="control">
|
||||||
|
<input class="input" id="searchFilter--workOrderMilestoneDateString" name="workOrderMilestoneDateString" type="date" value="<%= dateTimeFunctions.dateToString(new Date()) %>" disabled required />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<%- include('_footerA'); -%>
|
||||||
|
|
||||||
|
<script src="<%= urlPrefix %>/javascripts/workOrderMilestoneCalendar.min.js"></script>
|
||||||
|
|
||||||
|
<%- include('_footerB'); -%>
|
||||||
|
|
@ -1,5 +1,12 @@
|
||||||
<%- include('_header'); -%>
|
<%- include('_header'); -%>
|
||||||
|
|
||||||
|
<%- include('_header'); -%>
|
||||||
|
|
||||||
|
<div class="columns">
|
||||||
|
<div class="column is-3 is-hidden-mobile">
|
||||||
|
<%- include('_menu-workOrders'); -%>
|
||||||
|
</div>
|
||||||
|
<div class="column">
|
||||||
<nav class="breadcrumb">
|
<nav class="breadcrumb">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="<%= urlPrefix %>/dashboard">Home</a></li>
|
<li><a href="<%= urlPrefix %>/dashboard">Home</a></li>
|
||||||
|
|
@ -71,6 +78,8 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="container--searchResults"></div>
|
<div id="container--searchResults"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<%- include('_footerA'); -%>
|
<%- include('_footerA'); -%>
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue