data_on_characters = {
let data_on_characters = []
sources.slice(194,195).forEach(id_source=>{
let this_data = data.filter(d=>d['ID opera']===id_source);
let intervals_subject = this_data.map(d=>[+d.soggetto_starts_at,+d.soggetto_ends_at])
let intervals_doubts = this_data.map(d=>[+d.starts_at,+d.ends_at])
let length = this_data[0].length;
console.log("calculating:",id_source, length)
let characters = []
for (var c=0; c<length; c++){
let subjects = intervals_subject.filter(d=>{
return c>=d[0] && c<d[1]
})
let doubts = intervals_doubts.filter(d=>{
return c>=d[0] && c<d[1]
})
let category;
if (subjects.length>0 && doubts.length>0){
category = 'misto';
} else if (subjects.length>0&&doubts.length==0) {
category = 'soggetto'
} else if (subjects.length==0&&doubts.length>0) {
category = 'dubbio'
} else if (subjects.length==0&&doubts.length==0) {
category = 'definitivo'
} else {
console.warn('Check', id_source, c, subjects, doubts)
}
let out = {
'position': c,
'category': category,
'soggetto_part_of': subjects,
'dubbio_part_of': doubts
}
characters.push(out)
}
data_on_characters.push({
'id': id_source,
'characters': characters
});
})
return data_on_characters;
}