var _apiUrl = null; function compareFunction(a, b) { if (a.TimeCriticality == undefined || b.TimeCriticality == undefined) { var aPollValue = a.PollValue.split('-'); var bPollValue = b.PollValue.split('-'); return b.State[0] - a.State[0] || bPollValue[0] - aPollValue[0] || bPollValue[bPollValue.length - 1].trim()[0] - aPollValue[aPollValue.length - 1].trim()[0] || b.ParentId - a.ParentId || a.Id - b.Id; } else { return b.TimeCriticality - a.TimeCriticality || b.State[0] - a.State[0] || b.ParentId - a.ParentId || a.Id - b.Id; } } function showOne(rowData) { if (rowData == undefined) return; var data = []; data.push({ name: "Edit in ADO", value: 'Edit in ADO ' + rowData["Id"] + '' }); for (const property in rowData) { if (rowData[property] == undefined) continue; data.push({ name: property, value: rowData[property].toString() }); } $("#AllGrid").igGrid({ autoGenerateColumns: true, dataSource: data, width: "100%", showHeader: false, }); } function loadOne() { var selectedRow = $("#HeaderGrid").data("igGridSelection").selectedRow(); if (selectedRow == undefined) return; var rowData = $("#HeaderGrid").data("igGrid").dataSource.dataView()[selectedRow.index]; showOne(rowData); } function detailSelectionChangedRunInfo(evt, ui) { if (ui.row.index === 0) return; var rowData = ui.owner.grid.dataSource.dataView()[ui.row.index]; showOne(rowData); } function getState(state) { var result; if (state == undefined) result = "9-Null"; else if (state === "New") result = `1-${state}`; else if (state === "Active") result = `2-${state}`; else if (state === "Resolved") result = `3-${state}`; else if (state === "Closed") result = `4-${state}`; else if (state === "Removed") result = `5-${state}`; else result = `8-${state}`; return result; } function getPriority(workItemType, priority) { var result; if (workItemType === "Bug") result = "0-Bug"; else if (priority == undefined || priority === 0) result = "9-Null"; else if (priority === 1) result = `${priority}-High`; else if (priority === 2) result = `${priority}-Med`; else if (priority === 3) result = `${priority}-Low`; else if (priority === 4) result = `${priority}-TBD`; else result = "8-Not"; return result; } function getPollValue(description, pollValue) { var result; if (pollValue == undefined || pollValue.TimeCriticality == undefined || pollValue.TimeCriticality.InverseAverage == undefined) result = ""; else if (pollValue.TimeCriticality.InverseAverage >= 4) result = `${pollValue.TimeCriticality.InverseAverage} - 1-Highest (Most ${description}) - ${pollValue.Count} Vote(s)`; else if (pollValue.TimeCriticality.InverseAverage >= 3) result = `${pollValue.TimeCriticality.InverseAverage} - 2-High - ${pollValue.Count} Vote(s)`; else if (pollValue.TimeCriticality.InverseAverage >= 2) result = `${pollValue.TimeCriticality.InverseAverage} - 3-Medium - ${pollValue.Count} Vote(s)`; else if (pollValue.TimeCriticality.InverseAverage >= 1) result = `${pollValue.TimeCriticality.InverseAverage} - 4-Low - ${pollValue.Count} Vote(s)`; else if (pollValue.TimeCriticality.InverseAverage >= 0) result = `${pollValue.TimeCriticality.InverseAverage} - 5-Lowest - ${pollValue.Count} Vote(s)`; else result = ""; return result; } function updateRecordCoD(workItem) { if (workItem != undefined) { if (workItem.Effort == undefined) workItem.Effort = 10123; if (workItem.BusinessValue == undefined) workItem.BusinessValue = 99999; if (workItem.TimeCriticality == undefined) workItem.TimeCriticality = 99999; if (workItem.RiskReductionMinusOpportunityEnablement == undefined) workItem.RiskReductionMinusOpportunityEnablement = 99999; workItem.CoD = workItem.RiskReductionMinusOpportunityEnablement + workItem.TimeCriticality + workItem.BusinessValue; } } function updateRecordOther(workItem, dataB, description) { workItem["State"] = getState(workItem["State"]); var priority = getPriority(workItem["WorkItemType"], workItem["Priority"]); workItem["PollValue"] = getPollValue(description, dataB[workItem.Id]); workItem["Priority"] = priority; } function updateRecordParent(parent, workItem) { if (parent == undefined) { workItem["ParentId"] = 9999999; workItem["ParentTitle"] = null; workItem["ParentState"] = null; workItem["ParentCoD"] = 9999999; } else { workItem["ParentId"] = parent["Id"]; workItem["ParentCoD"] = parent["CoD"]; workItem["ParentTitle"] = parent["Title"]; workItem["ParentState"] = getState(parent["State"]); } } function getRecords(data, dataB, description) { var parent; var workItem; var records = []; for (var i = 0; i < data.length; i++) { parent = data[i].Parent; workItem = data[i].WorkItem; if (workItem.WorkItemType !== 'Feature') continue; if (workItem.State !== 'Active' && workItem.State !== 'New') continue; if (workItem.Tags != null && workItem.Tags.includes("Ignore")) continue; if ((window.location.href.indexOf('=LEO') > -1 && workItem.AreaPath !== 'ART SPS\\LEO') || (window.location.href.indexOf('=MES') > -1 && workItem.AreaPath !== 'ART SPS\\MES')) continue; updateRecordCoD(parent); updateRecordCoD(workItem); updateRecordParent(parent, workItem); updateRecordOther(workItem, dataB, description); records.push(workItem); } records.sort(compareFunction); return records; } function sendValue(element, page, id) { var body = { time: new Date().getTime(), id: id, page: page, value: element.value }; $.post(_apiUrl + "save", body) .done(function (msg) { console.log("Posted value of " + element.value + " for " + id + " on page " + page + " " + msg); }) .fail(function (xhr, textStatus, errorThrown) { alert(textStatus); }); } function getFibonacciValue(average) { var result; if (average >= 7) result = 34; else if (average >= 6) result = 21; else if (average >= 5) result = 13; else if (average >= 4) result = 8; else if (average >= 3) result = 5; else if (average >= 2) result = 3; else if (average >= 1) result = 2; else if (average >= 0) result = 1; else result = ""; return result; } function setRecords(workItems, page, description, th) { var record; var array = []; var count = ""; var select = ""; var average = ""; var fibonacciValue = ""; var html = "