btw, i have checked the source code, looks like PredecessorLink is alway overrided by last predecessor value
f.ProjectTask.prototype.updatePredIndicesString = function (a) {
var c = this.Element.PredecessorLink;
null != c && void 0 != c && delete this.Element.PredecessorLink;
if (null != a && "" != a) {
var c = [],
d = [],
e = [],
h = this._project.Tasks;
b.Model.DataBoundGanttModel.ProcessPredecessorString(a, 1, c, d,
e, void 0);
for (a = 0; a < c.length; a++) {
var m = c[a];
h.ContainsTask(m) && (m = h.GetTaskByID(c[a]).ID);
var k = {};
k.PredecessorUID = m;
k.Type = f.Utils.toString(d[a]);
k.LinkLag = f.Utils.toLagString(e[a]);
this.Element.PredecessorLink = k
}
}
};