import { pushDStree, span, RefItem } from '../actions'; // PNOTE - should the data be taken from redux or only through props? - Directly as arguments export const spanToTreeUtil = (spanlist :span[]) :pushDStree => { // Initializing tree. What should be returned is trace is empty? We should have better error handling let tree :pushDStree ={id:'empty', name:'default', value:0, time: 0, startTime:0, tags:[], children:[]}; // let spans :spanItem[]= trace.spans; if(spanlist){ // Create a dict with spanIDs as keys // PNOTE // Can we now assign different strings as id - Yes // https://stackoverflow.com/questions/15877362/declare-and-initialize-a-dictionary-in-typescript let mapped_array : {[id: string] : span;} = {}; for(let i=0; i0 && child_span[8].length>0) { for(let j=0;j { element = element.replaceAll("{", "").replaceAll("}", "").replaceAll(" ", "") let arr = element.split(",") let refItem = {"traceID": "", "spanID": "", "refType": ""}; arr.forEach(obj => { let arr2 = obj.split("=") if(arr2[0]==="TraceId"){ refItem["traceID"] = arr2[1]; }else if(arr2[0]==="SpanId"){ refItem["spanID"] = arr2[1]; }else if(arr2[0]==="RefType"){ refItem["refType"] = arr2[1]; } }); references.push(refItem); }); if(references.length !== 0 && references[0].spanID.length !== 0){ if(references[0].refType === "CHILD_OF"){ let parentID = references[0].spanID; mapped_array[parentID][10].push(push_object); } } else{ tree = push_object; } }// end of for loop }// end of if(spans) return(tree) }