show milestone progress in search results
parent
101fcbfa40
commit
bc398d03c2
|
|
@ -32,9 +32,17 @@ export const getWorkOrders = (filters, options) => {
|
||||||
" w.workOrderTypeId, t.workOrderType," +
|
" w.workOrderTypeId, t.workOrderType," +
|
||||||
" w.workOrderNumber, w.workOrderDescription," +
|
" w.workOrderNumber, w.workOrderDescription," +
|
||||||
" w.workOrderOpenDate, userFn_dateIntegerToString(w.workOrderOpenDate) as workOrderOpenDateString," +
|
" 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" +
|
" from WorkOrders w" +
|
||||||
" left join WorkOrderTypes t on w.workOrderTypeId = t.workOrderTypeId" +
|
" 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 +
|
sqlWhereClause +
|
||||||
" order by w.workOrderOpenDate desc, w.workOrderNumber" +
|
" order by w.workOrderOpenDate desc, w.workOrderNumber" +
|
||||||
(options
|
(options
|
||||||
|
|
|
||||||
|
|
@ -62,9 +62,17 @@ export const getWorkOrders = (
|
||||||
" w.workOrderTypeId, t.workOrderType," +
|
" w.workOrderTypeId, t.workOrderType," +
|
||||||
" w.workOrderNumber, w.workOrderDescription," +
|
" w.workOrderNumber, w.workOrderDescription," +
|
||||||
" w.workOrderOpenDate, userFn_dateIntegerToString(w.workOrderOpenDate) as workOrderOpenDateString," +
|
" 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" +
|
" from WorkOrders w" +
|
||||||
" left join WorkOrderTypes t on w.workOrderTypeId = t.workOrderTypeId" +
|
" 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 +
|
sqlWhereClause +
|
||||||
" order by w.workOrderOpenDate desc, w.workOrderNumber" +
|
" order by w.workOrderOpenDate desc, w.workOrderNumber" +
|
||||||
(options
|
(options
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
? workOrder.workOrderCloseDateString
|
? workOrder.workOrderCloseDateString
|
||||||
: '<span class="has-text-grey">(No Close Date)</span>') +
|
: '<span class="has-text-grey">(No Close Date)</span>') +
|
||||||
"</td>") +
|
"</td>") +
|
||||||
|
("<td>" +
|
||||||
|
(workOrder.workOrderMilestoneCount === 0
|
||||||
|
? "-"
|
||||||
|
: workOrder.workOrderMilestoneCompletionCount +
|
||||||
|
" / " +
|
||||||
|
workOrder.workOrderMilestoneCount) +
|
||||||
|
"</td>") +
|
||||||
"</tr>");
|
"</tr>");
|
||||||
}
|
}
|
||||||
searchResultsContainerElement.innerHTML =
|
searchResultsContainerElement.innerHTML =
|
||||||
|
|
@ -58,6 +65,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
"<th>Work Order Description</th>" +
|
"<th>Work Order Description</th>" +
|
||||||
"<th>Open Date</th>" +
|
"<th>Open Date</th>" +
|
||||||
"<th>Close Date</th>" +
|
"<th>Close Date</th>" +
|
||||||
|
"<th>Progress</th>" +
|
||||||
"</tr></thead>" +
|
"</tr></thead>" +
|
||||||
"<table>" +
|
"<table>" +
|
||||||
'<div class="level">' +
|
'<div class="level">' +
|
||||||
|
|
|
||||||
|
|
@ -79,6 +79,13 @@ declare const cityssm: cityssmGlobal;
|
||||||
? workOrder.workOrderCloseDateString
|
? workOrder.workOrderCloseDateString
|
||||||
: '<span class="has-text-grey">(No Close Date)</span>') +
|
: '<span class="has-text-grey">(No Close Date)</span>') +
|
||||||
"</td>") +
|
"</td>") +
|
||||||
|
("<td>" +
|
||||||
|
(workOrder.workOrderMilestoneCount === 0
|
||||||
|
? "-"
|
||||||
|
: workOrder.workOrderMilestoneCompletionCount +
|
||||||
|
" / " +
|
||||||
|
workOrder.workOrderMilestoneCount) +
|
||||||
|
"</td>") +
|
||||||
"</tr>"
|
"</tr>"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -91,6 +98,7 @@ declare const cityssm: cityssmGlobal;
|
||||||
"<th>Work Order Description</th>" +
|
"<th>Work Order Description</th>" +
|
||||||
"<th>Open Date</th>" +
|
"<th>Open Date</th>" +
|
||||||
"<th>Close Date</th>" +
|
"<th>Close Date</th>" +
|
||||||
|
"<th>Progress</th>" +
|
||||||
"</tr></thead>" +
|
"</tr></thead>" +
|
||||||
"<table>" +
|
"<table>" +
|
||||||
'<div class="level">' +
|
'<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;
|
workOrderCloseDate?: number;
|
||||||
workOrderCloseDateString?: string;
|
workOrderCloseDateString?: string;
|
||||||
workOrderMilestones?: WorkOrderMilestone[];
|
workOrderMilestones?: WorkOrderMilestone[];
|
||||||
|
workOrderMilestoneCount?: number;
|
||||||
|
workOrderMilestoneCompletionCount?: number;
|
||||||
workOrderComments?: WorkOrderComment[];
|
workOrderComments?: WorkOrderComment[];
|
||||||
workOrderLots?: Lot[];
|
workOrderLots?: Lot[];
|
||||||
workOrderLotOccupancies?: LotOccupancy[];
|
workOrderLotOccupancies?: LotOccupancy[];
|
||||||
|
|
|
||||||
|
|
@ -315,6 +315,9 @@ export interface WorkOrder extends Record {
|
||||||
workOrderCloseDateString?: string;
|
workOrderCloseDateString?: string;
|
||||||
|
|
||||||
workOrderMilestones?: WorkOrderMilestone[];
|
workOrderMilestones?: WorkOrderMilestone[];
|
||||||
|
workOrderMilestoneCount?: number;
|
||||||
|
workOrderMilestoneCompletionCount?: number;
|
||||||
|
|
||||||
workOrderComments?: WorkOrderComment[];
|
workOrderComments?: WorkOrderComment[];
|
||||||
workOrderLots?: Lot[];
|
workOrderLots?: Lot[];
|
||||||
workOrderLotOccupancies?: LotOccupancy[];
|
workOrderLotOccupancies?: LotOccupancy[];
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue