var _b = {};
var _c = {};
var _e = {};
var _r = {};
var _t = {};
var _w = {};
var _page = '';
var _site = '';
var _apiUrl = '';
var _toggle = true;
var _username = '';
var _machineId = '';
var _sessionId = '';
var _windowLocationHRef = '';
function compareFunctionSortOrder(a, b) {
    return a.SortOrder - b.SortOrder;
}
function compareFunctionParentId(a, b) {
    return a.ParentId - b.ParentId || a.Id - b.Id;
}
function compareFunctionWeightedShortestJobFirst(a, b) {
    if (b.WeightedShortestJobFirst === ' ') {
        return -1;
    }
    return b.WeightedShortestJobFirst - a.WeightedShortestJobFirst;
}
function getState(state) {
    let 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, sortPriorityGroup) {
    let result;
    if (workItemType === "Bug")
        result = "0-Bug {0}";
    else if (priority == undefined || priority === 0)
        result = "9-Null {0}";
    else if (priority === 1)
        result = `${priority}-High {${sortPriorityGroup}}`;
    else if (priority === 2)
        result = `${priority}-Med {${sortPriorityGroup}}`;
    else if (priority === 3)
        result = `${priority}-Low {${sortPriorityGroup}}`;
    else if (priority === 4)
        result = `${priority}-TBD {4}`;
    else
        result = "8-Not {0}";
    return result;
}
function getNotifications(x, aggregation) {
    let result;
    if (aggregation == undefined || aggregation.Notifications == undefined || aggregation.Notifications.length === 0)
        result = " ";
    else {
        result = '';
        aggregation.Notifications.forEach(element => {
            const username = element.username == null ? 'user' : element.username;
            if (element.value === "1") {
                result += 'Highest:' + username + ';|';
            }
            else if (element.value === "2") {
                result += 'High:' + username + ';|';
            }
            else if (element.value === "3") {
                result += 'Medium:' + username + ';|';
            }
            else if (element.value === "4") {
                result += 'Low:' + username + ';|';
            }
            else if (element.value === "5") {
                result += 'Lowest:' + username + ';|';
            }
            else {
                result += element.value + ':' + username + ';|';
            }
        });
        result = result.substring(0, result.length - 1);
        result = result.replaceAll('|', '
');
    }
    return result;
}
function round(value, factor) {
    return (Math.round((value + Number.EPSILON) * factor) / factor).toFixed(2);
}
function sum(collection) {
    let sum = 0;
    if (collection != undefined) {
        for (let i = 0; i < collection.length; i++) {
            sum += collection[i];
        }
    }
    return sum;
}
function updateRecordCoD(b, r, t, c, e, w, workItem, highestTotalStoryPoints, dataB, totalStoryPoints) {
    if (workItem != undefined) {
        let data = dataB == undefined ? undefined : dataB[workItem.Id];
        if (data == undefined) {
            workItem.CumulativeStoryPoints = " ";
            workItem.TotalStoryPoints = " ";
            workItem.AbsoluteDelta = " ";
            workItem.Effort = " ";
            workItem.BusinessValue = " ";
            workItem.TimeCriticality = " ";
            workItem.RiskReductionMinusOpportunityEnablement = " ";
            workItem.CoD = " ";
            workItem.WeightedShortestJobFirst = " ";
            workItem.Priority = getPriority(workItem.WorkItemType, 4, 0);
            workItem.EffortNotifications = " ";
            workItem.BusinessValueNotifications = " ";
            workItem.TimeCriticalityNotifications = " ";
            workItem.RiskReductionMinusOpportunityEnablementNotifications = " ";
            workItem.SortOrder = 0;
        }
        else {
            workItem.CumulativeStoryPoints = " ";
            workItem.TotalStoryPoints = totalStoryPoints + ' User Story Point(s)';
            workItem.AbsoluteDelta = data.Effort == undefined || data.Effort.FibonacciAverage == undefined || totalStoryPoints == undefined || totalStoryPoints === 0 ? " " : round(Math.abs(data.Effort.FibonacciAverage - ((totalStoryPoints / highestTotalStoryPoints) * 5)), 1);
            workItem.Effort = data.Effort == undefined || data.Effort.FibonacciAverage == undefined ? " " : round(data.Effort.FibonacciAverage, 100);
            workItem.BusinessValue = data.BusinessValue == undefined || data.BusinessValue.FibonacciAverage == undefined ? " " : round(data.BusinessValue.FibonacciAverage, 100);
            workItem.TimeCriticality = data.TimeCriticality == undefined || data.TimeCriticality.FibonacciAverage == undefined ? " " : round(data.TimeCriticality.FibonacciAverage, 100);
            workItem.RiskReductionMinusOpportunityEnablement = data.RiskReductionOpportunityEnablement == undefined || data.RiskReductionOpportunityEnablement.FibonacciAverage == undefined ? " " : round(data.RiskReductionOpportunityEnablement.FibonacciAverage, 100);
            workItem.CoD = data.CostOfDelay == undefined ? " " : round(data.CostOfDelay, 100);
            workItem.WeightedShortestJobFirst = data.WeightedShortestJobFirst == undefined ? " " : round(data.WeightedShortestJobFirst, 100);
            workItem.Priority = data.SortPriority == undefined ? getPriority(workItem.WorkItemType, 4, 0) : getPriority(workItem.WorkItemType, data.SortPriority, data.SortPriorityGroup);
            workItem.EffortNotifications = data.Effort == undefined ? " " : getNotifications(e, data.Effort);
            workItem.BusinessValueNotifications = data.BusinessValue == undefined ? " " : getNotifications(b, data.BusinessValue);
            workItem.TimeCriticalityNotifications = data.TimeCriticality == undefined ? " " : getNotifications(t, data.TimeCriticality);
            workItem.RiskReductionMinusOpportunityEnablementNotifications = data.RiskReductionOpportunityEnablement == undefined ? " " : getNotifications(r, data.RiskReductionOpportunityEnablement);
            workItem.SortOrder = data.SortOrder == undefined ? 0 : data.SortOrder;
        }
    }
}
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(b, r, t, c, e, w, data, dataB, workItems) {
    let parent;
    let workItem;
    let storyPoints;
    let records = [];
    let totalStoryPoints;
    let highestTotalStoryPoints = 0;
    for (let i = 0; i < data.length; i++) {
        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;
        storyPoints = data[i].Tag?.StoryPoints == undefined ? null : JSON.parse(data[i].Tag.StoryPoints);
        totalStoryPoints = sum(storyPoints);
        if (totalStoryPoints > highestTotalStoryPoints)
            highestTotalStoryPoints = totalStoryPoints;
    }
    for (let 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;
        storyPoints = data[i].Tag?.StoryPoints == undefined ? null : JSON.parse(data[i].Tag.StoryPoints);
        totalStoryPoints = sum(storyPoints);
        if ((_windowLocationHRef.indexOf('=LEO') > -1 && workItem.AreaPath !== 'ART SPS\\LEO') || (_windowLocationHRef.indexOf('=MES') > -1 && workItem.AreaPath !== 'ART SPS\\MES'))
            continue;
        updateRecordParent(parent, workItem);
        updateRecordCoD(b, r, t, c, e, w, parent, highestTotalStoryPoints, null, null);
        updateRecordCoD(b, r, t, c, e, w, workItem, highestTotalStoryPoints, dataB, totalStoryPoints);
        workItem.State = getState(workItem.State);
        records.push(workItem);
    }
    if (_windowLocationHRef.indexOf('=WSJF') > -1) {
        records.sort(compareFunctionWeightedShortestJobFirst);
    }
    else if (_windowLocationHRef.indexOf('=LIVE') > -1) {
        records.sort(compareFunctionSortOrder);
    }
    else {
        records.sort(compareFunctionParentId);
    }
    return records;
}
function warn(message) {
    if (typeof acquiredVsCodeApi === 'function')
        acquiredVsCodeApi.postMessage(message);
    console.warn(message);
}
function sendValue(fromHtml, element, page, id) {
    let notification = {
        id: id,
        machineId: _machineId,
        page: page,
        sessionId: _sessionId,
        site: _site,
        time: new Date().getTime(),
        username: _username,
        value: element.value,
    };
    if (fromHtml && notification.value !== "9") {
        $("#AllTextarea").hide();
        document.getElementById('AllTextarea').value = '';
        $.post(_apiUrl, notification)
            .done(function (msg) {
                console.log("Posted value of " + notification.value + " for " + id + " on page " + page + " " + msg);
            })
            .fail(function (_, textStatus, _) {
                warn(textStatus);
            });
    }
}
function setRecords(fromHtml, b, r, t, c, e, w, records) {
    let record;
    let lineA = "";
    let lineB = "";
    let lineC = "";
    let text = 'Id\tRisk Reduction and/or Opportunity Enablement\tTime Criticality\tBusiness Value\tCoD\tEffort\tWSJF\tFeature Total Story Points\tAbsolute Delta\tState\tRequester\tAssigned To\tIteration Path\tSystem\tTitle\r\n';
    let html = '