159 lines
6.2 KiB
JavaScript
159 lines
6.2 KiB
JavaScript
function compareFunction(a, b) {
|
|
return a.Priority[0] - b.Priority[0] || a.TimeCriticality[0] - b.TimeCriticality[0] || b.State[0] - a.State[0] || a.Id - b.Id;
|
|
}
|
|
|
|
function showOne(rowData) {
|
|
if (rowData == null)
|
|
return;
|
|
var data = [];
|
|
data.push({ name: "Edit in ADO", value: '<a target="_blank" href="https://tfs.intra.infineon.com/tfs/FactoryIntegration/ART%20SPS/_workitems/edit/' + rowData["Id"] + '">Edit in ADO ' + rowData["Id"] + '</a>' });
|
|
for (const property in rowData) {
|
|
if (rowData[property] == null)
|
|
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 == null)
|
|
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 == null)
|
|
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 == null || 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 getTimeCriticality(workItemType, timeCriticality) {
|
|
var result;
|
|
if (workItemType === "Bug")
|
|
result = "0-Bug";
|
|
else if (timeCriticality == null || timeCriticality === 0)
|
|
result = "9-Null";
|
|
else if (timeCriticality === 1)
|
|
result = `${timeCriticality}-QSM`;
|
|
else if (timeCriticality === 2)
|
|
result = `${timeCriticality}-Qual`;
|
|
else if (timeCriticality === 3)
|
|
result = `${timeCriticality}-Eff`;
|
|
else
|
|
result = "8-Not";
|
|
return result;
|
|
}
|
|
|
|
function getWorkItems(data) {
|
|
var workItems = [];
|
|
var workItem;
|
|
for (var i = data.length - 1; i > -1; i--) {
|
|
workItem = data[i];
|
|
if (workItem.AreaPath !== 'ART SPS\\MES')
|
|
continue;
|
|
if (workItem.WorkItemType !== 'Feature' && workItem.WorkItemType !== 'Bug')
|
|
continue;
|
|
workItem["State"] = getState(workItem["State"])
|
|
workItem["Priority"] = getPriority(workItem["WorkItemType"], workItem["Priority"])
|
|
workItem["TimeCriticality"] = getTimeCriticality(workItem["WorkItemType"], workItem["TimeCriticality"])
|
|
workItems.push(workItem);
|
|
}
|
|
workItems.sort(compareFunction);
|
|
return workItems;
|
|
}
|
|
|
|
function initIndex(url) {
|
|
$.getJSON(url, { _: new Date().getTime() }, function (data) {
|
|
var workItems = getWorkItems(data);
|
|
console.log(data.length);
|
|
if (data.length > 0)
|
|
console.log(data[0]);
|
|
$("#HeaderGrid").igGrid({
|
|
autoGenerateColumns: false,
|
|
dataSource: workItems,
|
|
height: "100%",
|
|
primaryKey: "Id",
|
|
width: "100%",
|
|
columns: [
|
|
{ key: "Id", dataType: "number" },
|
|
{ key: "Requester", dataType: "string" },
|
|
{ headerText: "Assigned To", key: "AssignedTo", dataType: "string" },
|
|
{ key: "Title", dataType: "string", width: "20%" },
|
|
{ headerText: "System(s)", key: "Tags", dataType: "string" },
|
|
{ key: "Priority", dataType: "string" },
|
|
{ headerText: "Qual/Eff", key: "TimeCriticality", dataType: "string" },
|
|
{ key: "State", dataType: "string" },
|
|
{ headerText: "Effort in Days", key: "Effort", dataType: "number" },
|
|
{ headerText: "UAT as of", key: "ResolvedDate", dataType: "date", format: "date" },
|
|
{ headerText: "CMP Date", key: "ClosedDate", dataType: "date", format: "date" },
|
|
{ headerText: "Target", key: "TargetDate", dataType: "date", format: "date" },
|
|
{ key: "AreaPath", dataType: "string", hidden: true },
|
|
{ key: "AssignedTo", dataType: "string", hidden: true },
|
|
{ key: "BusinessValue", dataType: "number", hidden: true },
|
|
{ key: "ChangedDate", dataType: "string", hidden: true },
|
|
{ key: "CommentCount", dataType: "number", hidden: true },
|
|
{ key: "CreatedDate", dataType: "string", hidden: true },
|
|
{ key: "Description", dataType: "string", hidden: true },
|
|
{ key: "IterationPath", dataType: "string", hidden: true },
|
|
{ key: "Revision", dataType: "number", hidden: true },
|
|
{ key: "RiskReductionMinusOpportunityEnablement", dataType: "string", hidden: true },
|
|
{ key: "StartDate", dataType: "string", hidden: true },
|
|
{ key: "WorkItemType", dataType: "string", hidden: true },
|
|
{ key: "WeightedShortestJobFirst", dataType: "number", hidden: true },
|
|
],
|
|
features: [
|
|
{ name: "Sorting", type: "local" },
|
|
{ name: "Filtering", type: "local" },
|
|
{ name: "Selection", mode: "row", multipleSelection: false, rowSelectionChanging: detailSelectionChangedRunInfo },
|
|
{ name: "Paging", type: "local", recordCountKey: "TotalRows", pageSize: 10, pageSizeUrlKey: "pageSize", "pageIndexUrlKey": "page", showPageSizeDropDown: false },
|
|
],
|
|
});
|
|
});
|
|
$("#HeaderGrid").on("dblclick", "tr", loadOne);
|
|
} |