function updateWSJFOnGrid()

in src/wsjf.tsx [63:111]


function updateWSJFOnGrid(workItemId, storedFields:StoredFieldReferences):IPromise<any> {
    let wsjfFields = [
        storedFields.bvField,
        storedFields.tcField,
        storedFields.rvField,
        storedFields.effortField,
        storedFields.wsjfField
    ];

    var deferred = Q.defer();

    var client = TFS_Wit_Client.getClient();
    client.getWorkItem(workItemId, wsjfFields).then((workItem: TFS_Wit_Contracts.WorkItem) => {
        if (storedFields.wsjfField !== undefined && storedFields.rvField !== undefined) {     
            var businessValue = +workItem.fields[storedFields.bvField];
            var timeCriticality = +workItem.fields[storedFields.tcField];
            var rroevalue = +workItem.fields [storedFields.rvField];
            var effort = +workItem.fields[storedFields.effortField];

            var wsjf = 0;
            if (effort > 0) {
                wsjf = (businessValue + timeCriticality + rroevalue)/effort;
            }

            var document = [{
                from: null,
                op: "add",
                path: '/fields/' + storedFields.wsjfField,
                value: wsjf
            }];

            // Only update the work item if the WSJF has changed
            if (wsjf != workItem.fields[storedFields.wsjfField]) {
                client.updateWorkItem(document, workItemId).then((updatedWorkItem:TFS_Wit_Contracts.WorkItem) => {
                    deferred.resolve(updatedWorkItem);
                });
            }
            else {
                deferred.reject("No relevant change to work item");
            }
        }
        else
        {
            deferred.reject("Unable to calculate WSJF, please configure fields on the collection settings page.");
        }
    });

    return deferred.promise;
}