dataset = {
const data = {
nodes:[],
links:[]
};
data.removeAcento = function removeAcento (text){
text = text.toLowerCase();
text = text.replace(new RegExp('[ÁÀÂÃ]','gi'), 'a');
text = text.replace(new RegExp('[ÉÈÊ]','gi'), 'e');
text = text.replace(new RegExp('[ÍÌÎ]','gi'), 'i');
text = text.replace(new RegExp('[ÓÒÔÕ]','gi'), 'o');
text = text.replace(new RegExp('[ÚÙÛ]','gi'), 'u');
text = text.replace(new RegExp('[Ç]','gi'), 'c');
return text.toUpperCase();
}
let map = d3.map();
data.getNode = function getNode(id){
if(id ==null)return null;
id = data.removeAcento(id);
let node = map.get(id);
if(node == null){
let research_line = null;
for (let i in research_lines){
if(research_lines[i].id == id){
research_line = research_lines[i].research_line;
break;
}
}
node = {
id:id,
isAdvisor:false,
isCoorAdvisor:false,
degree:null,
enable: true,
research_line:research_line
}
//console.log("novo " + id);
map.set(id,node);
data.nodes.push(node);
}else{
// console.log("colide " + id);
}
return node;
}
function assert(test,value){
if(test==true){
console.log("error: " + JSON.stringify(value));
return false;
}
return true;
}
function makeGraph(works){
let count = 0;
for(let d in works){
count++;
let student = data.getNode(works[d].name)
if(!assert(student==null,works[d]))continue;
student.degree = works[d].degree
let advisor = data.getNode(works[d].advisor);
if(!assert(advisor==null,works[d]))continue;
advisor.isAdvisor = true;
let linkA = {
source: advisor.id,
target: student.id,
degree: works[d].degree,
title: works[d].title,
date: works[d].date,
isAdvisor: true,
isCoorAvisor:false,
direction: true,
enable: true
}
data.links.push(linkA);
formartDate(linkA);
linkA.advisorName = advisor.id;
let cooradvisor = data.getNode(works[d].coor_advisor);
if(cooradvisor != null){
cooradvisor.isCoorAdvisor = true;
let linkC = {
source: cooradvisor.id,
target: student.id,
degree: works[d].degree,
title: works[d].title,
date: works[d].date,
isAdvisor: false,
isCoorAvisor:true,
direction: true,
enable: true
}
data.links.push(linkC);
formartDate(linkC);
linkC.advisorName = advisor.id;
linkC.coorAdvisorName = cooradvisor.id;
linkA.coorAdvisorName = cooradvisor.id;
}
}
}
makeGraph(masters.works);
makeGraph(doctors.works);
for (let i in data.nodes){
if(data.nodes[i].research_line == null ){
let id = getOrientador(data.links, data.nodes[i]) ;
// let node = data.getNode(id);
for (let j in research_lines){
if(research_lines[j].id == id){
data.nodes[i].research_line = research_lines[j].research_line;
break;
}
}
if(data.nodes[i].research_line == null ){
console.log("error RL null", data.nodes[i])
}
}
}
return data;
}