We are using time based uset story estimating.
Is it possible to set Jira so that the sum of all sub task time estimates for a user story become the new user story time estimate?
Hello,
I have made a workaround
I did a little something its not perfect at all should any of you do better just put it here.
- It add a button left of PLAN mode
- It work only for certain user since it can create a load on the isntance (get the issues data in rest)
It add the sum of subtask instead of story point/time estimate when you click on it. Also add a custom field (we have another kind of priority system)
Add this code into the Announcement banner
<script type='text/javascript'>
AJS.$(document).ready(function () {
var username = AJS.$('#header-details-user-fullname').attr('data-username');
console.log(username);
if (username == 'name1' || username == 'name2(changeme)') {
var path = window.location.pathname;
console.log (path);
if (path.substring(path.lastIndexOf('/') + 1).indexOf('RapidBoard') > -1) {
AJS.$('#ghx-modes').before('<button class="aui-button" id="add-ubi">Show CF and Aggregate Time</center>');
AJS.$('.add-ubi').on('click', function () {
$('add-ubi').trigger("click");
});
AJS.$("#add-ubi").click(function () {
//AJS.$("#add-ubi").toggleClass("active");
//AJS.$("#add-ubi").remove();
AJS.$('.ghx-issues > div').each(function () {
try {
console.log('Found issue list in sprints');
var row = this;
var issueKey = AJS.$(this).attr("data-issue-key");
//console.log('Found issuekey' + issueKey);
if (issueKey)
{
AJS.$.getJSON(AJS.contextPath() + '/rest/api/latest/issue/' + issueKey, function (data) {
console.log('Got data for - ' + issueKey);
if (data.fields.customfield_10222 || data.fields.customfield_10222 != null)
{
var value = data.fields.customfield_10222.value;
if (value.lenght)
{
value = value.replace("'", "\'");
var actions = AJS.$(row).find('.ghx-end');
AJS.$(actions).before('<style type="text/css"> .ghx-issue-compact .ghx-end-ubi{position:absolute;right:-20px;top:5px;}</style><div class="ghx-end-ubi"><span title="Ubi Priority">' + value + '</span></div>');
}
}
if (data.fields.aggregatetimeoriginalestimate)
{
var value2 = data.fields.aggregatetimeoriginalestimate / 60 / 60 / 8;
var actions2 = AJS.$(row).find('.ghx-end .aui-badge');
AJS.$(actions2).html(value2.toFixed(2).replace(/[.,]00$/, "") + "d");
}
});
}
}
catch (ex)
{
console.log ("ERROR");
}
});
AJS.$('.js-issue-list > div').each(function () {
try {
console.log('Found issue list in backlog');
var row = this;
var issueKey = AJS.$(this).attr("data-issue-key");
if (issueKey)
{
console.log('Found issuekey' + issueKey);
AJS.$.getJSON(AJS.contextPath() + '/rest/api/latest/issue/' + issueKey, function (data) {
console.log('Got data for - ' + issueKey);
if (data.fields.customfield_10222 || data.fields.customfield_10222 != null)
{
var value = data.fields.customfield_10222.value;
console.log("we are inside of value" +issueKey)
value = value.replace("'", "\'");
var actions = AJS.$(row).find('.ghx-end');
AJS.$(actions).before('<style type="text/css"> .ghx-issue-compact .ghx-end-ubi{position:absolute;right:-20px;top:5px;}</style><div class="ghx-end-ubi"> <span title="Ubi Priority">' + value + '</span></div>');
}
if (data.fields.aggregatetimeoriginalestimate != null || data.fields.aggregatetimeoriginalestimate != 'undefined' || data.fields.aggregatetimeoriginalestimate != "" || data.fields.aggregatetimeoriginalestimate.lenght != 0)
{
var value2 = data.fields.aggregatetimeoriginalestimate / 60 / 60 / 8;
var actions2 = AJS.$(row).find('.ghx-end .aui-badge');
AJS.$(actions2).html(value2.toFixed(2).replace(/[.,]00$/, "") + "d");
}
});
}
}
catch (ex)
{
console.log ("ERROR");
}
});
});
}
}
});
</script>
So here is it I made it quick but ajust it to your need
Martin Poirier
Ubisoft
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.