var graph,paper; var zoomIndex = 1; var recentCallFlow; var recentCallFlowStep; var hash_map = new Object(); var hashVertexDomainXMap = new Object(); var globalCollapseDomanString = ""; var changeIcon = false; var colorSet = ["#0000FF","#8A2BE2","#DEB887", "#5F9EA0","#7FFF00","#D2691E","#6495ED","#DC143C", "#000000","#A9A9A9","#BDB76B", "#FF1493","#48D1CC","#A52A2A","#FF7F50","#DAA520","#32CD32"]; var colorIndex = 0; String.prototype.startsWith = function (str) { return this.indexOf(str) == 0; } String.prototype.replaceAt=function(index, character) { return this.substr(0, index) + character + this.substr(index+character.length); } function getColor(id1,id2) { var color = colorSet[colorIndex]; colorIndex++; return color; } ///////////////////////////////////////////////////////////////////////////////////// $('.legend-toggle').click(function (a) { $('.legend-toggle .toggle').hasClass("on")?($('.legend-toggle .toggle').removeClass("on"),$("#legend").fadeOut(350)):($('.legend-toggle .toggle').addClass("on"),$("#legend").fadeIn(350)); }); $('.symbols-toggle').click(function (a) { $('.symbols-toggle .toggle').hasClass("on")?($('.symbols-toggle .toggle').removeClass("on"),$("#symbols").fadeOut(350)):($('.symbols-toggle .toggle').addClass("on"),$("#symbols").fadeIn(350)); }); plotNodes = function(domain) { if(domain.containerList) { var containerList = domain.containerList; for(var i=0; i' + ''); } plotContainer = function(container, cssType) { attributes = container; //console.log(attributes); if(cssType === 'domain'){ $('#networkModelContainer').append('

' + attributes.name + '

'); $('#networkModelContainer').append('
' + '
'); }else if(attributes.visibilityType==='invisible'){ $('#networkModelContainer').append('

' + attributes.name + '

'); }else{ if(!recentCallFlow){ $('#networkModelContainer').append('
' + '
'); //$('#networkModelContainer').append('

'+ attributes.name + '

'); plotHeader(attributes,cssType); }else{ $('#networkModelContainer').append('
' + '
'); //$('#networkModelContainer').append('

'+ attributes.name + '

'); plotHeader(attributes,cssType); } } plotNodes(container); } plotContainerIcon = function(container, cssType) { attributes = container; //console.log(attributes); if(cssType === 'domain'){ $('#networkModelContainer').append('

' + attributes.name + '

'); $('#networkModelContainer').append('
' + '
'); }else if(attributes.visibilityType==='invisible'){ $('#networkModelContainer').append('

' + attributes.name + '

'); } else{ if(!recentCallFlow){ $('#networkModelContainer').append('
' + '
'); //$('#networkModelContainer').append('

'+ attributes.name + '

'); plotHeader(attributes,cssType); }else{ $('#networkModelContainer').append('
' + '
'); //$('#networkModelContainer').append('

'+ attributes.name + '

'); plotHeader(attributes,cssType); } } plotNodesIcon(container); } joint.shapes.basic.newRect = joint.shapes.basic.Generic.extend({ markup: '', defaults: joint.util.deepSupplement({ type: 'basic.newRect', attrs: { 'rect': { fill: 'white', stroke: 'black', 'follow-scale': true, width: 80, height: 40}, 'text': { 'font-size': 14, 'ref-x': .5, 'ref-y': .5, ref: 'rect', 'y-alignment': 'middle', 'x-alignment': 'middle'} }, shortname: 'Transcoder', description: 'Reconciles mismatched CODECs', longname: 'ACME SBC device providing dedicated Transcoder function', vendor: 'ORACLE ACME', primary_function: 'Allows endpoints utilizing different CODECs to communicate', key_interface: 'SBC, MSC', network_domain: 'Universal Services Platform - Access Module Group - ISA Core Office', }, joint.shapes.basic.Generic.prototype.defaults)}); plotHeader = function(attributes,cssType){ var nameLength = attributes.name.length; var headName; if (nameLength>22){ headName = attributes.name.substring(0,12) + "-\n" + attributes.name.substring(12); }else{ headName = attributes.name; } var thisElement = new joint.shapes.basic.newRect({ position: { x: attributes.left+10, y: attributes.top + 4 }, size: { width: attributes.width-20, height: 15 }, attrs: { rect: { fill: "gray" ,stroke: "gray",opacity:"0.8"}, text: { text: headName, fill: 'black' ,'font-size':10, 'font-weight':'700','text-transform': 'capitalize'} } }); if(cssType==="outContainer"){ thisElement.attr({ rect:{fill:"#e7e7e7", stroke: "#e7e7e7",opacity:"0.8"} }); }else{ thisElement.attr({ rect:{fill:"ghostwhite", stroke: "ghostwhite",opacity:"0.8"} }); } graph.addCells([thisElement]); } plotElement = function(element) { if(element.left){ if(!element.id.startsWith("com.att.trinity.ue")){ left = element.left ; var thisColor = element.bgColor; var thisElement = new joint.shapes.basic.newRect({ id:element.id, position: { x: element.left, y: element.top }, size: { width: element.width, height: element.height*2 }, attrs: { rect: { fill: "lightgray" ,stroke: "gray"}, text: { text: element.name.replace(" ","\n"), fill: 'black' ,'font-size': 9, 'font-weight': 'bold','font-variant': 'small-caps', 'text-transform': 'capitalize'} } }); if(!recentCallFlow){ thisElement.attr({ rect:{fill:element.bgColor, stroke: thisColor} }); } //thisElement.attr({rect:{style:{"pointer-events":"none"}}}); thisElement.set('bg-color', (element.bgColor!= null?element.bgColor:"blue")); thisElement.set('icon_path', (element.imgFileName != null? element.imgFileName: "static/img/map/icons/sgw-icon.png")); thisElement.set('shortname', element.name); thisElement.set('description', element.details.description); thisElement.set('longname', element.details.display_longname); thisElement.set('vendor', element.details.vendor); thisElement.set('primary_function', element.details.primary_function); thisElement.set('key_interface', element.details.key_interfaces); thisElement.set('location', element.details.location); thisElement.set('network_function', (element.details.network_function=="V")? "Virtual" : "Physical" ); if(element.borderType == 'dashed'){ thisElement.attr({ rect: {stroke: 'black','stroke-width':"2",'stroke-dasharray': "5,2" }, }); } hash_map[element.name+'']=thisElement.name; graph.addCells([thisElement]); }else{ plotElementIcon(element); } } } joint.shapes.basic.DecoratedRect = joint.shapes.basic.Generic.extend({ markup: '', defaults: joint.util.deepSupplement({ type: 'basic.DecoratedRect', size: { width: 100, height: 60 }, attrs: { 'rect': { fill: 'lightgray', width: 100, height: 60 }, 'text': { 'font-size': 14, text: '', 'ref-x': .5, 'ref-y': .5, ref: 'rect', 'y-alignment': 'middle', 'x-alignment': 'middle', fill: 'black'}, 'image': { ref: 'rect', width: 35, height: 25} }, shortname: 'Transcoder', description: 'Reconciles mismatched CODECs', longname: 'ACME SBC device providing dedicated Transcoder function', vendor: 'ORACLE ACME', primary_function: 'Allows endpoints utilizing different CODECs to communicate', key_interface: 'SBC, MSC', network_domain: 'Universal Services Platform - Access Module Group - ISA Core Office', }, joint.shapes.basic.Generic.prototype.defaults) }); plotElementIcon = function(element) { if(element.left){ left = element.left ; uetop = element.top; if(element.id.startsWith("com.att.trinity.ue")) { uetop = element.top - 30; } else { uetop = element.top ; } var thisElement = new joint.shapes.basic.DecoratedRect({ id:element.id, position: { x: element.left, y: uetop }, size: { width:element.width, height: element.height*2 }, // style:{'pointer-events':'none'}, attrs: { //image: { 'xlink:href': 'static/img/map/icons/sgw-icon.png' image: { 'xlink:href': element.imgFileName} //rect:{style:{"pointer-events":"none"}} // style:{'pointer-events':'none'} // 'pointer-events':'none' } }); // thisElement.attr({rect:{style:{"pointer-events":"none"}}}); thisElement.set('bg-color', element.bgColor); thisElement.set('icon_path', element.imgFileName); thisElement.set('shortname', element.name); thisElement.set('description', element.details.description); thisElement.set('longname', element.details.display_longname); thisElement.set('vendor', element.details.vendor); thisElement.set('primary_function', element.details.primary_function); thisElement.set('key_interface', element.details.key_interfaces); thisElement.set('location', element.details.location); thisElement.set('network_function', (element.details.network_function=="V")? "Virtual" : "Physical"); if(!recentCallFlow ){ thisElement.attr({ rect:{fill:element.bgColor } }); } if(element.borderType == 'dashed'){ thisElement.attr({ rect: {stroke: 'lightskyblue','stroke-width':"2",'stroke-dasharray': "5,2" }, }); } if(element.id.startsWith("com.att.trinity.ue")){ thisElement.attr({ rect: {fill: 'white', style:{'pointer-events':'none'}}, image: { style:{'pointer-events':'none'}} }); //thisElement.css('pointer-events', 'none'); // paper.thisElement.css('pointer-events', 'none'); } hash_map[element.name+'']=thisElement.name; graph.addCells([thisElement]); } } plotNetMapCallFlow = function(callFlow, callFlowStep, collapsedDomainString, expandedDomainString, icon) { init(); recentCallFlow = callFlow; //callFlow != null ? callFlow : recentCallFlow; recentCallFlowStep = callFlowStep; //callFlowStep != null ? callFlowStep : recentCallFlowStep; // $.get( "static/trisim_files/network_map.yml", function( data ) { if(callFlow != null &&callFlow.title != null) { $(".map-title").html(callFlow.title); }else{ $(".map-title").html("Network Map"); } $.post('network_model.htm?action=layout', { collapsedDomains : collapsedDomainString, expandedDomains : expandedDomainString }, function(data) { var yamlObject = jsyaml.load(data); var layout = yamlObject.domainList; for(var i=0; i -1)|| (globalCollapseDomanString.indexOf("RAN") > -1)|| (globalCollapseDomanString.indexOf("EPC") > -1)) { hashVertexDomainXMap["USP"] = -999; hashVertexDomainXMap["RAN"] = -999; hashVertexDomainXMap["EPC"] = -999; } } addCollapseEvents(); //onclick="alert(\'hello\')" //console.log(yamlObject); //addLink('EATF','SDG'); if(icon == false) $('.icons-toggle .toggle').removeClass("on"); if(callFlow != null && callFlow.id != null) { // var callFlowLinkFile = callFlow + "_" + callFlowStep + ".yml"; $.post('network_model.htm?action=callflow', { callFlowName : callFlow.id, callFlowStep : callFlowStep }, function( data ) { try{ var yamlObject = jsyaml.load(data); //addLink("EATF","MRF"); var layout = yamlObject.linkList; var hashLinkElements = new Object(); for(var i=0; i