Milestone Slip chart

Hello !

Thank you for your great app!

I would like to trace a sort of “Milestone slip chart” : a two-dimensional graph with time in abscissa and in ordinate. In x-axis, you would have the “Time” and in y-axis, you will have the “Due Date” at this current time. And you will have as many curves as selected tasks.

I am a newbie here so maybe this was answered somewhere and I couldn’t find it… Or maybe it is not possible to do something like that… I didn’t found how to get a two-dimensional graph with time in abscissa and in ordinate, so I am stucked quite early I must admit :sweat_smile:.

So thank you in advance for your help on this !

eazyBI does not support this by default. However, there might be some workarounds you can check.

  1. If you are using the custom date field, here is a community topic that will allow importing the changes with the calculated JavaScript custom field:
    How can i show the change history of date custom field?

  2. Unfortunately, we do not support value changes import for a default field Due date . Therefore, you would like to consider using some scripted fields in Jira. Here are some examples for inspiration:
    Jira calculated and scripted custom fields - eazyBI for Jira

However, you might need a bit different output there. You would like to get the data in this format for the field due date change :
Date when due date1 is set,duedate1timestamp
Date when due date2 is set,-duedate1timestamp
Date when due date2 is set,duedate2timestamp

This pattern of data is the result of the javascript is community. You would like to use a specific definition (similar to one used in the javaScript example) for Jira scripted field imported field:

[jira.customfield_NNNNN] 
data_type = "integer"
measure = true 
multiple_dates = true

You would like to use the scripted field ID instead of NNNNN in the formula.

Then you would like to use a similar MDX formula from the community example to get the due date history .

For any of the above solutions, the report should use individual issues for each line.
here is a report example for changes in the custom field Program end for one issue. The report shows that the program end date was set to Jun 12 2020 on Oct 2019, then
it was updated to Jan 2021 on May 2020:

Daina / support@eazybi.com

Hello,

Thanks for your answer !

Unfortunately, I still have some troubles trying to apply : Jira calculated and scripted custom fields - eazyBI for Jira :sob:

I created a pre calculated field “free_field_date_01 timestamp changes” based from updates of “free_field_date_01”, then I imported as measures then I created the MDX calculated measure…
And it works, in a sense, because I have values at the correct time for each updates I made… But the values are not coherent at all ! With so many “01 01 1970” !

I guess I have a format problem, because changing the JIRA date base format seemed to help (from 29/09/2021 to 29/sep/21), but I can’t afford it in the long run, as it is a shared one.

I don’t think so, but could it be because I didn’t change the scripted field ID instead of NNNNN in the formula ? If it is, where can I find the “free_field_date_01” ID ?

Thank you in advance for you answer,

Hello again,

I didn’t figure out the source of the 01 01 1970 (which are 0 apparently), but I decided to filter them and that, plus changing once more JIRA date base format seems to fix my problem :).
So thank you for helping !

1 Like

Hello,

On this subject, I need extra support .

I started a try with a custom field : free_field_date_01.
I use this code on the base :

[jira.customfield_eetch]
name = “free_field_date_01 timestamp changes”
data_type = “decimal”
measure = true
multiple_dates = true
javascript_code = ‘’’
dateChangeStrings = [];
whenDateChanged = issue.fields.created;//.toString().substr(0,10);
newDateChange = null;
duedateAsTimeChangeStamp = null;
issue.changelog.histories.forEach(function(history)
{ history.items.forEach(function(historyItem)
{ if (historyItem.field == “free_field_date_01” )
{ newDateChange = historyItem.from;
if(newDateChange)

{ duedateAsTimeChangeStamp = Date.parse(newDateChange);
dateChangeStrings.push(whenDateChanged.toString().substr(0,10) + “,” + duedateAsTimeChangeStamp/1000);
dateChangeStrings.push(history.created.toString().substr(0,10) + “,” + -duedateAsTimeChangeStamp/1000);
//dateChangeStrings.push(newDateChange + “" + duedateAsTimeChangeStamp + "” + whenDateChanged.toString() + “_” + history.created.toString());
}
whenDateChanged = history.created; }
});
});

if (issue.fields.customfield_NNNNN)
{
dateChangeStrings.push(whenDateChanged.toString().substr(0,10) + “,” + Date.parse(issue.fields.customfield_NNNNN)/1000) ;
//dateChangeStrings.push(“Test2”);
//dateChangeStrings.push(“999”);
}
issue.fields.customfield_eetch = dateChangeStrings.join("\n");
‘’’
It worked quite well, so we decided to add another timestamp changes base on duedate this time.
As it didn’t works we go back at this previous state and it still works.
Then we remove the previous code and we replace it by the following one :

[jira.customfield_eetch]
name = “duedate timestamp changes”
data_type = “decimal”
measure = true
multiple_dates = true
javascript_code = ‘’’
dateChangeStrings = [];
whenDateChanged = issue.fields.created;//.toString().substr(0,10);
newDateChange = null;
duedateAsTimeChangeStamp = null;
issue.changelog.histories.forEach(function(history)
{ history.items.forEach(function(historyItem)
{ if (historyItem.field == “duedate” )
{ newDateChange = historyItem.from;
if(newDateChange)

{ duedateAsTimeChangeStamp = Date.parse(newDateChange);
dateChangeStrings.push(whenDateChanged.toString().substr(0,10) + “,” + duedateAsTimeChangeStamp/1000);
dateChangeStrings.push(history.created.toString().substr(0,10) + “,” + -duedateAsTimeChangeStamp/1000);
//dateChangeStrings.push(newDateChange + “" + duedateAsTimeChangeStamp + "” + whenDateChanged.toString() + “_” + history.created.toString());
}
whenDateChanged = history.created; }
});
});

if (issue.fields.customfield_NNNNN)
{
dateChangeStrings.push(whenDateChanged.toString().substr(0,10) + “,” + Date.parse(issue.fields.customfield_NNNNN)/1000) ;
//dateChangeStrings.push(“Test2”);
//dateChangeStrings.push(“999”);
}
issue.fields.customfield_eetch = dateChangeStrings.join("\n");
‘’’
This one do not work at all ! The duedate timestamp changes is never updated in the base when I change duedate in JIRA.
What could be wrong in what we’ve done ? It works once and since, impossible to make it works !

Hope I explain myself clearly, thank you in advance for your help,