show milestone progress in search results
parent
101fcbfa40
commit
bc398d03c2
|
|
@ -32,9 +32,17 @@ export const getWorkOrders = (filters, options) => {
|
|||
" w.workOrderTypeId, t.workOrderType," +
|
||||
" w.workOrderNumber, w.workOrderDescription," +
|
||||
" w.workOrderOpenDate, userFn_dateIntegerToString(w.workOrderOpenDate) as workOrderOpenDateString," +
|
||||
" w.workOrderCloseDate, userFn_dateIntegerToString(w.workOrderCloseDate) as workOrderCloseDateString" +
|
||||
" w.workOrderCloseDate, userFn_dateIntegerToString(w.workOrderCloseDate) as workOrderCloseDateString," +
|
||||
" ifnull(m.workOrderMilestoneCount, 0) as workOrderMilestoneCount," +
|
||||
" ifnull(m.workOrderMilestoneCompletionCount, 0) as workOrderMilestoneCompletionCount" +
|
||||
" from WorkOrders w" +
|
||||
" left join WorkOrderTypes t on w.workOrderTypeId = t.workOrderTypeId" +
|
||||
(" left join (select workOrderId," +
|
||||
" count(workOrderMilestoneId) as workOrderMilestoneCount," +
|
||||
" sum(case when workOrderMilestoneCompletionDate is null then 0 else 1 end) as workOrderMilestoneCompletionCount" +
|
||||
" from WorkOrderMilestones" +
|
||||
" where recordDelete_timeMillis is null" +
|
||||
" group by workOrderId) m on w.workOrderId = m.workOrderId") +
|
||||
sqlWhereClause +
|
||||
" order by w.workOrderOpenDate desc, w.workOrderNumber" +
|
||||
(options
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ export const getWorkOrders = (
|
|||
sqlWhereClause += " and w.workOrderTypeId = ?";
|
||||
sqlParameters.push(filters.workOrderTypeId);
|
||||
}
|
||||
|
||||
|
||||
if (filters.workOrderOpenStatus) {
|
||||
if (filters.workOrderOpenStatus === "open") {
|
||||
sqlWhereClause += " and w.workOrderCloseDate is null";
|
||||
|
|
@ -62,9 +62,17 @@ export const getWorkOrders = (
|
|||
" w.workOrderTypeId, t.workOrderType," +
|
||||
" w.workOrderNumber, w.workOrderDescription," +
|
||||
" w.workOrderOpenDate, userFn_dateIntegerToString(w.workOrderOpenDate) as workOrderOpenDateString," +
|
||||
" w.workOrderCloseDate, userFn_dateIntegerToString(w.workOrderCloseDate) as workOrderCloseDateString" +
|
||||
" w.workOrderCloseDate, userFn_dateIntegerToString(w.workOrderCloseDate) as workOrderCloseDateString," +
|
||||
" ifnull(m.workOrderMilestoneCount, 0) as workOrderMilestoneCount," +
|
||||
" ifnull(m.workOrderMilestoneCompletionCount, 0) as workOrderMilestoneCompletionCount" +
|
||||
" from WorkOrders w" +
|
||||
" left join WorkOrderTypes t on w.workOrderTypeId = t.workOrderTypeId" +
|
||||
(" left join (select workOrderId," +
|
||||
" count(workOrderMilestoneId) as workOrderMilestoneCount," +
|
||||
" sum(case when workOrderMilestoneCompletionDate is null then 0 else 1 end) as workOrderMilestoneCompletionCount" +
|
||||
" from WorkOrderMilestones" +
|
||||
" where recordDelete_timeMillis is null" +
|
||||
" group by workOrderId) m on w.workOrderId = m.workOrderId") +
|
||||
sqlWhereClause +
|
||||
" order by w.workOrderOpenDate desc, w.workOrderNumber" +
|
||||
(options
|
||||
|
|
|
|||
|
|
@ -48,6 +48,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
? workOrder.workOrderCloseDateString
|
||||
: '<span class="has-text-grey">(No Close Date)</span>') +
|
||||
"</td>") +
|
||||
("<td>" +
|
||||
(workOrder.workOrderMilestoneCount === 0
|
||||
? "-"
|
||||
: workOrder.workOrderMilestoneCompletionCount +
|
||||
" / " +
|
||||
workOrder.workOrderMilestoneCount) +
|
||||
"</td>") +
|
||||
"</tr>");
|
||||
}
|
||||
searchResultsContainerElement.innerHTML =
|
||||
|
|
@ -58,6 +65,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
"<th>Work Order Description</th>" +
|
||||
"<th>Open Date</th>" +
|
||||
"<th>Close Date</th>" +
|
||||
"<th>Progress</th>" +
|
||||
"</tr></thead>" +
|
||||
"<table>" +
|
||||
'<div class="level">' +
|
||||
|
|
|
|||
|
|
@ -79,6 +79,13 @@ declare const cityssm: cityssmGlobal;
|
|||
? workOrder.workOrderCloseDateString
|
||||
: '<span class="has-text-grey">(No Close Date)</span>') +
|
||||
"</td>") +
|
||||
("<td>" +
|
||||
(workOrder.workOrderMilestoneCount === 0
|
||||
? "-"
|
||||
: workOrder.workOrderMilestoneCompletionCount +
|
||||
" / " +
|
||||
workOrder.workOrderMilestoneCount) +
|
||||
"</td>") +
|
||||
"</tr>"
|
||||
);
|
||||
}
|
||||
|
|
@ -91,6 +98,7 @@ declare const cityssm: cityssmGlobal;
|
|||
"<th>Work Order Description</th>" +
|
||||
"<th>Open Date</th>" +
|
||||
"<th>Close Date</th>" +
|
||||
"<th>Progress</th>" +
|
||||
"</tr></thead>" +
|
||||
"<table>" +
|
||||
'<div class="level">' +
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=document.querySelector("main").dataset.urlPrefix,t=document.querySelector("#form--searchFilters"),r=document.querySelector("#container--searchResults"),s=Number.parseInt(document.querySelector("#searchFilter--limit").value,10),a=document.querySelector("#searchFilter--offset"),i=()=>{const i=Number.parseInt(a.value,10);r.innerHTML='<div class="has-text-grey has-text-centered"><i class="fas fa-5x fa-circle-notch fa-spin" aria-hidden="true"></i><br />Loading Work Orders...</div>',cityssm.postJSON(e+"/workOrders/doSearchWorkOrders",t,t=>{if(0===t.workOrders.length)return void(r.innerHTML='<div class="message is-info"><p class="message-body">There are no work orders that meet the search criteria.</p></div>');const a=document.createElement("tbody");for(const r of t.workOrders)a.insertAdjacentHTML("beforeend",'<tr><td><a class="has-text-weight-bold" href="'+e+"/workOrders/"+r.workOrderId+'">'+cityssm.escapeHTML(r.workOrderNumber)+"</a></td><td>"+cityssm.escapeHTML(r.workOrderType)+"</td><td>"+cityssm.escapeHTML(r.workOrderDescription)+"</td><td>"+r.workOrderOpenDateString+"</td><td>"+(r.workOrderCloseDate?r.workOrderCloseDateString:'<span class="has-text-grey">(No Close Date)</span>')+"</td></tr>");r.innerHTML='<table class="table is-fullwidth is-striped is-hoverable"><thead><tr><th>Work Order Number</th><th>Work Order Type</th><th>Work Order Description</th><th>Open Date</th><th>Close Date</th></tr></thead><table><div class="level"><div class="level-left"><div class="level-item has-text-weight-bold">Displaying '+(i+1).toString()+" to "+Math.min(t.count,s+i)+" of "+t.count+'</div></div><div class="level-right">'+(i>0?'<div class="level-item"><button class="button is-rounded is-link is-outlined" data-page="previous" type="button" title="Previous"><i class="fas fa-arrow-left" aria-hidden="true"></i></button></div>':"")+(s+i<t.count?'<div class="level-item"><button class="button is-rounded is-link" data-page="next" type="button" title="Next"><span>Next</span><span class="icon"><i class="fas fa-arrow-right" aria-hidden="true"></i></span></button></div>':"")+"</div></div>",r.querySelector("table").append(a),i>0&&r.querySelector("button[data-page='previous']").addEventListener("click",d),s+i<t.count&&r.querySelector("button[data-page='next']").addEventListener("click",n)})},o=()=>{a.value="0",i()},d=()=>{a.value=Math.max(Number.parseInt(a.value,10)-s,0).toString(),i()},n=()=>{a.value=(Number.parseInt(a.value,10)+s).toString(),i()},l=t.querySelectorAll("input, select");for(const e of l)e.addEventListener("change",o);t.addEventListener("submit",e=>{e.preventDefault(),o()}),i()})();
|
||||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=document.querySelector("main").dataset.urlPrefix,t=document.querySelector("#form--searchFilters"),r=document.querySelector("#container--searchResults"),s=Number.parseInt(document.querySelector("#searchFilter--limit").value,10),a=document.querySelector("#searchFilter--offset"),o=()=>{const o=Number.parseInt(a.value,10);r.innerHTML='<div class="has-text-grey has-text-centered"><i class="fas fa-5x fa-circle-notch fa-spin" aria-hidden="true"></i><br />Loading Work Orders...</div>',cityssm.postJSON(e+"/workOrders/doSearchWorkOrders",t,t=>{if(0===t.workOrders.length)return void(r.innerHTML='<div class="message is-info"><p class="message-body">There are no work orders that meet the search criteria.</p></div>');const a=document.createElement("tbody");for(const r of t.workOrders)a.insertAdjacentHTML("beforeend",'<tr><td><a class="has-text-weight-bold" href="'+e+"/workOrders/"+r.workOrderId+'">'+cityssm.escapeHTML(r.workOrderNumber)+"</a></td><td>"+cityssm.escapeHTML(r.workOrderType)+"</td><td>"+cityssm.escapeHTML(r.workOrderDescription)+"</td><td>"+r.workOrderOpenDateString+"</td><td>"+(r.workOrderCloseDate?r.workOrderCloseDateString:'<span class="has-text-grey">(No Close Date)</span>')+"</td><td>"+(0===r.workOrderMilestoneCount?"-":r.workOrderMilestoneCompletionCount+" / "+r.workOrderMilestoneCount)+"</td></tr>");r.innerHTML='<table class="table is-fullwidth is-striped is-hoverable"><thead><tr><th>Work Order Number</th><th>Work Order Type</th><th>Work Order Description</th><th>Open Date</th><th>Close Date</th><th>Progress</th></tr></thead><table><div class="level"><div class="level-left"><div class="level-item has-text-weight-bold">Displaying '+(o+1).toString()+" to "+Math.min(t.count,s+o)+" of "+t.count+'</div></div><div class="level-right">'+(o>0?'<div class="level-item"><button class="button is-rounded is-link is-outlined" data-page="previous" type="button" title="Previous"><i class="fas fa-arrow-left" aria-hidden="true"></i></button></div>':"")+(s+o<t.count?'<div class="level-item"><button class="button is-rounded is-link" data-page="next" type="button" title="Next"><span>Next</span><span class="icon"><i class="fas fa-arrow-right" aria-hidden="true"></i></span></button></div>':"")+"</div></div>",r.querySelector("table").append(a),o>0&&r.querySelector("button[data-page='previous']").addEventListener("click",n),s+o<t.count&&r.querySelector("button[data-page='next']").addEventListener("click",d)})},i=()=>{a.value="0",o()},n=()=>{a.value=Math.max(Number.parseInt(a.value,10)-s,0).toString(),o()},d=()=>{a.value=(Number.parseInt(a.value,10)+s).toString(),o()},l=t.querySelectorAll("input, select");for(const e of l)e.addEventListener("change",i);t.addEventListener("submit",e=>{e.preventDefault(),i()}),o()})();
|
||||
|
|
@ -232,6 +232,8 @@ export interface WorkOrder extends Record {
|
|||
workOrderCloseDate?: number;
|
||||
workOrderCloseDateString?: string;
|
||||
workOrderMilestones?: WorkOrderMilestone[];
|
||||
workOrderMilestoneCount?: number;
|
||||
workOrderMilestoneCompletionCount?: number;
|
||||
workOrderComments?: WorkOrderComment[];
|
||||
workOrderLots?: Lot[];
|
||||
workOrderLotOccupancies?: LotOccupancy[];
|
||||
|
|
|
|||
|
|
@ -315,6 +315,9 @@ export interface WorkOrder extends Record {
|
|||
workOrderCloseDateString?: string;
|
||||
|
||||
workOrderMilestones?: WorkOrderMilestone[];
|
||||
workOrderMilestoneCount?: number;
|
||||
workOrderMilestoneCompletionCount?: number;
|
||||
|
||||
workOrderComments?: WorkOrderComment[];
|
||||
workOrderLots?: Lot[];
|
||||
workOrderLotOccupancies?: LotOccupancy[];
|
||||
|
|
|
|||
Loading…
Reference in New Issue