- var jsonResponse = '{"businessConnections":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IBusinessConnections","businessConnection":[{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IBusinessConnection","vo-list-item":"1","sharesPercentage":{"vo-class":"com.deltavista.sdk.datamodel.IDVDecimal","integerPart":"100","precision":"2","fractionPart":"0"},"connectionType":"BENEFICIARY","detailIdentificationEntries":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntries","identificationEntry":[{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntry","vo-list-item":"1","ID":"C55RS116","identificationType":"SEGMENT_NAME"},{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntry","vo-list-item":"1","ID":"3056621","identificationType":"DE_BWI_ONR"},{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntry","vo-list-item":"1","ID":"1","identificationType":"SEQUENCE_NUMBER"}]},"detailEntity":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IEntity","addresses":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IAddresses","address":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IAddress","vo-list-item":"1","location":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.ILocation","zip":"14513","street":"Dorfstr.","houseNumber":"10","city":"Teltow","country":"DEU","houseNumberAdd":"Ruhlsdorf"},"contacts":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IContacts","POBoxes":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IPOBoxes","POBox":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IPOBox","vo-list-item":"1","boxLocation":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.ILocation","country":"DEU"}}},"phones":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IPhones","phone":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IPhone","vo-list-item":"1","type":"PHONE","number":"03328/474174"}}},"name":"Dimer","firstName":"Christoph","birthDate":{"vo-class":"com.deltavista.cos.vo.IDVDate","content":"19590420"},"type":"MAIN_ADDRESS"}}}},{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IBusinessConnection","vo-list-item":"1","sharesPercentage":{"vo-class":"com.deltavista.sdk.datamodel.IDVDecimal","integerPart":"0","precision":"2","fractionPart":"0"},"connectionType":"BENEFICIARY","detailIdentificationEntries":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntries","identificationEntry":[{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntry","vo-list-item":"1","ID":"C55RS116","identificationType":"SEGMENT_NAME"},{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntry","vo-list-item":"1","ID":"3056617","identificationType":"DE_BWI_ONR"},{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntry","vo-list-item":"1","ID":"2","identificationType":"SEQUENCE_NUMBER"}]},"detailEntity":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IEntity","addresses":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IAddresses","address":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IAddress","vo-list-item":"1","location":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.ILocation","zip":"09603","street":"Nordstr.","houseNumber":"4","city":"Großschirma","country":"DEU"},"contacts":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IContacts","POBoxes":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IPOBoxes","POBox":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IPOBox","vo-list-item":"1","boxLocation":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.ILocation","country":"DEU"}}},"phones":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IPhones","phone":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IPhone","vo-list-item":"1","type":"PHONE","number":"035242/4660"}}},"name":"Dimer Immobilien Verwaltungsgesellschaft mbH","type":"MAIN_ADDRESS"}}}},{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IBusinessConnection","vo-list-item":"1","sharesPercentage":{"vo-class":"com.deltavista.sdk.datamodel.IDVDecimal","integerPart":"74","precision":"2","fractionPart":"0"},"connectionType":"BENEFICIARY","detailIdentificationEntries":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntries","identificationEntry":[{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntry","vo-list-item":"1","ID":"C55RS116","identificationType":"SEGMENT_NAME"},{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntry","vo-list-item":"1","ID":"50473321","identificationType":"DE_BWI_ONR"},{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntry","vo-list-item":"1","ID":"3","identificationType":"SEQUENCE_NUMBER"}]},"detailEntity":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IEntity","addresses":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IAddresses","address":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IAddress","vo-list-item":"1","location":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.ILocation","zip":"09603","street":"Nordstr.","houseNumber":"4","city":"Großschirma","country":"DEU"},"name":"Dimer Immobilien GmbH & Co. KG","type":"MAIN_ADDRESS"}}}},{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IBusinessConnection","vo-list-item":"1","sharesPercentage":{"vo-class":"com.deltavista.sdk.datamodel.IDVDecimal","integerPart":"0","precision":"2","fractionPart":"0"},"connectionType":"BENEFICIARY","detailIdentificationEntries":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntries","identificationEntry":[{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntry","vo-list-item":"1","ID":"C55RS116","identificationType":"SEGMENT_NAME"},{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntry","vo-list-item":"1","ID":"3045173","identificationType":"DE_BWI_ONR"},{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntry","vo-list-item":"1","ID":"4","identificationType":"SEQUENCE_NUMBER"}]},"detailEntity":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IEntity","addresses":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IAddresses","address":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IAddress","vo-list-item":"1","identificationEntries":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntries","identificationEntry":[{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntry","vo-list-item":"1","ID":"DE136757339","identificationType":"EU_VAT_NUMBER"},{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntry","vo-list-item":"1","ID":"3220011402686","identificationType":"EU_TAX_ELSTER_NUMBER"},{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntry","vo-list-item":"1","ID":"220/114/02686","identificationType":"EU_TAX_NUMBER"}]},"location":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.ILocation","zip":"09603","street":"Nordstr.","geopoint":{"vo-class":"com.deltavista.sdk.datamodel.IDVGeopoint","latitude":{"vo-class":"com.deltavista.sdk.datamodel.IDVDecimal","integerPart":"51","precision":"6","fractionPart":"34535"},"longitude":{"vo-class":"com.deltavista.sdk.datamodel.IDVDecimal","integerPart":"13","precision":"6","fractionPart":"304565"}},"houseNumber":"4","city":"Großschirma","country":"DEU","houseNumberAdd":"ST Siebenlehn"},"contacts":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IContacts","POBoxes":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IPOBoxes","POBox":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IPOBox","vo-list-item":"1","boxLocation":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.ILocation","country":"DEU"}}},"WWWs":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IWWWs","WWW":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IContactData","vo-list-item":"1","type":"WWW","contactData":"www.montara.biz"}},"emails":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IEmails","email":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IContactData","vo-list-item":"1","type":"EMAIL","contactData":"[email protected]"}},"phones":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IPhones","phone":[{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IPhone","vo-list-item":"1","type":"PHONE","number":"035242/4660"},{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IPhone","vo-list-item":"1","type":"FAX","number":"035242/46642"}]}},"name":"Montara Verpacken mit System GmbH","type":"MAIN_ADDRESS"}}}},{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IBusinessConnection","vo-list-item":"1","sharesPercentage":{"vo-class":"com.deltavista.sdk.datamodel.IDVDecimal","integerPart":"100","precision":"2","fractionPart":"0"},"connectionType":"BENEFICIARY","detailIdentificationEntries":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntries","identificationEntry":[{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntry","vo-list-item":"1","ID":"C55RS116","identificationType":"SEGMENT_NAME"},{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntry","vo-list-item":"1","ID":"3056621","identificationType":"DE_BWI_ONR"},{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntry","vo-list-item":"1","ID":"1","identificationType":"SEQUENCE_NUMBER"}]},"detailEntity":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IEntity","addresses":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IAddresses","address":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IAddress","vo-list-item":"1","location":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.ILocation","zip":"14513","street":"Dorfstr.","houseNumber":"10","city":"Teltow","country":"DEU","houseNumberAdd":"Ruhlsdorf"},"contacts":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IContacts","POBoxes":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IPOBoxes","POBox":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IPOBox","vo-list-item":"1","boxLocation":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.ILocation","country":"DEU"}}},"phones":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IPhones","phone":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IPhone","vo-list-item":"1","type":"PHONE","number":"03328/474174"}}},"name":"Dimer","firstName":"Christoph","birthDate":{"vo-class":"com.deltavista.cos.vo.IDVDate","content":"19590420"},"type":"MAIN_ADDRESS"}}}},{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IBusinessConnection","vo-list-item":"1","sharesPercentage":{"vo-class":"com.deltavista.sdk.datamodel.IDVDecimal","integerPart":"74","precision":"2","fractionPart":"0"},"connectionType":"BENEFICIARY","detailIdentificationEntries":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntries","identificationEntry":[{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntry","vo-list-item":"1","ID":"C55RS116","identificationType":"SEGMENT_NAME"},{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntry","vo-list-item":"1","ID":"50473321","identificationType":"DE_BWI_ONR"},{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntry","vo-list-item":"1","ID":"2","identificationType":"SEQUENCE_NUMBER"}]},"detailEntity":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IEntity","addresses":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IAddresses","address":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IAddress","vo-list-item":"1","location":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.ILocation","zip":"09603","street":"Nordstr.","houseNumber":"4","city":"Großschirma","country":"DEU"},"name":"Dimer Immobilien GmbH & Co. KG","type":"MAIN_ADDRESS"}}}},{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IBusinessConnection","vo-list-item":"1","sharesPercentage":{"vo-class":"com.deltavista.sdk.datamodel.IDVDecimal","integerPart":"0","precision":"2","fractionPart":"0"},"connectionType":"BENEFICIARY","detailIdentificationEntries":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntries","identificationEntry":[{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntry","vo-list-item":"1","ID":"C55RS116","identificationType":"SEGMENT_NAME"},{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntry","vo-list-item":"1","ID":"3045173","identificationType":"DE_BWI_ONR"},{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntry","vo-list-item":"1","ID":"3","identificationType":"SEQUENCE_NUMBER"}]},"detailEntity":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IEntity","addresses":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IAddresses","address":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IAddress","vo-list-item":"1","identificationEntries":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntries","identificationEntry":[{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntry","vo-list-item":"1","ID":"DE136757339","identificationType":"EU_VAT_NUMBER"},{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntry","vo-list-item":"1","ID":"3220011402686","identificationType":"EU_TAX_ELSTER_NUMBER"},{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IIdentificationEntry","vo-list-item":"1","ID":"220/114/02686","identificationType":"EU_TAX_NUMBER"}]},"location":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.ILocation","zip":"09603","street":"Nordstr.","geopoint":{"vo-class":"com.deltavista.sdk.datamodel.IDVGeopoint","latitude":{"vo-class":"com.deltavista.sdk.datamodel.IDVDecimal","integerPart":"51","precision":"6","fractionPart":"34535"},"longitude":{"vo-class":"com.deltavista.sdk.datamodel.IDVDecimal","integerPart":"13","precision":"6","fractionPart":"304565"}},"houseNumber":"4","city":"Großschirma","country":"DEU","houseNumberAdd":"ST Siebenlehn"},"contacts":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IContacts","POBoxes":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IPOBoxes","POBox":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IPOBox","vo-list-item":"1","boxLocation":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.ILocation","country":"DEU"}}},"WWWs":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IWWWs","WWW":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IContactData","vo-list-item":"1","type":"WWW","contactData":"www.montara.biz"}},"emails":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IEmails","email":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IContactData","vo-list-item":"1","type":"EMAIL","contactData":"[email protected]"}},"phones":{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IPhones","phone":[{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IPhone","vo-list-item":"1","type":"PHONE","number":"035242/4660"},{"vo-class":"com.deltavista.dsp.entity.v2_0.datamodel.IPhone","vo-list-item":"1","type":"FAX","number":"035242/46642"}]}},"name":"Montara Verpacken mit System GmbH","type":"MAIN_ADDRESS"}}}}]}}';
- var obj = JSON.parse(jsonResponse);
- var businessConnection = obj.businessConnections.businessConnection;
- var data={
- nodes:[],
- links:[]
- };
- var name, children, type, position, address;
- for(var i = 0; i < 4; i++) {
- if(businessConnection[i].connectionType === "BENEFICIARY") {
- address = businessConnection[i].detailEntity.addresses.address;
- //name = address.firstName + " " + address.name;
- name = i;
- type = "\uf2bd";
- data.nodes.push({
- "id": i,
- "name": name,
- "lvl": (i+1).toString(),
- "children": "0",
- "type": type,
- "position": businessConnection[i].functionID
- });
- }
- }
- // console.log(data.nodes);
- //90px between 2 elements + 10px free per element
- var height = data.nodes.length * 100 + 100;
- var width = data.nodes.length * 100 + 100;
- addAdditionalNodes(data);
- setAll(data);
- prepareLinks(data);
- var svg = d3.select("body").append("svg")
- .attr("height", height);
- var force = d3.layout.force()
- .nodes(data.nodes)
- .links(data.links)
- .size([width, height])
- .on("tick", tick)
- .start();
- var link = svg.selectAll(".link")
- .data(data.links)
- .enter().append("line")
- .attr("class", "link");
- var g = svg.selectAll(".node")
- .data(data.nodes)
- .enter().append("g")
- .attr("class", function (d) {return "node-" + d.lvl});
- g.append("circle")
- .attr("r","30px" )
- .style("fill", function (d) {
- if(d.lvl[0] !== "0") {
- return "gray";
- }
- return "transparent";
- });
- var icon = g.append('text')
- .data(data.nodes)
- .attr("dy", "14px" )
- .attr("dx", function (d) {
- if(d.type === "\uf1ad") return "-16px";
- else return "-21px";
- } )
- .attr('font-family', 'FontAwesome')
- .attr("fill",function (d) { return "#fff";} )
- .attr('font-size', "300%" )
- .text(function(d) { return d.type})
- .style("cursor","default")
- .style("stroke-width","0px");
- var textName = g.append('text')
- .data(data.nodes)
- .attr("dy", "42px")
- .attr("dx", "35px")
- .attr('font-size', "100%" )
- .attr("text-anchor", "middle")
- .text(function(d) { return d.name.split("_")[0] })
- .style("cursor","default")
- .style("stroke-width","0px");
- var textPosition = g.append('text')
- .data(data.nodes)
- .attr("class", "position")
- .attr("lengthAdjust", "spacingAndGlyphs")
- .attr("textLength", "100")
- .attr("text-anchor", "middle")
- .attr("dy", function (d) {
- if(d.lvl !== "1") return "-5px";
- })
- .attr("dx", function (d) {
- if(d.lvl !== "1") return "-95px";
- })
- .style("cursor","default")
- .text(function(d) { return d.position})
- .style("font-size", "9px")
- .style("stroke-width","0px")
- .append('svg:tspan')
- .style("font-size", "9px")
- .attr("y", function (d) {
- if(d.lvl !== "1") return "15px";
- })
- .attr("x", function (d) {
- if(d.lvl !== "1") return "-95px";
- })
- .text(function(d) { return "XX%" });
- console.log(data.nodes);
- console.log(data.links);
- function tick() {
- link
- .attr("x1", function(d) { return d.source.x; })
- .attr("y1", function(d) { return d.source.y; })
- .attr("x2", function(d) { return d.target.x; })
- .attr("y2", function(d) { return d.target.y; });
- g
- .attr("transform", function transform(d) { return "translate(" + d.x + "," + d.y + ")"; });
- }
- function setAll(data) {
- var distanceX = 150,
- distanceY = 90,
- plusY = distanceY,
- nodes = data.nodes;
- //set main node
- nodes[0].fixed = "TRUE";
- nodes[0].x = distanceX - 70;
- nodes[0].y = distanceY;
- //set rest of nodes
- for(var i = 1; i < nodes.length; i++) {
- nodes[i].fixed = "TRUE";
- var level = nodes[i].lvl
- if (level.charAt(0) === "0") {
- nodes[i].x = distanceX * parseInt(level.charAt(1)) - 70;
- nodes[i].y = distanceY + plusY;
- } else {
- distanceY += 90
- nodes[i].x = distanceX * parseInt(level) - 70;
- nodes[i].y = distanceY;
- }
- }
- }
- function addAdditionalNodes(data) {
- var nodes = data.nodes,
- name,
- lvl;
- for(var i = 0; i < nodes.length - 1; i++) {
- lvl = "0" + nodes[i].lvl.toString() + nodes[i+1].lvl.toString()
- name = nodes[i].name + "1";
- nodes.splice(++i, 0, {"name":name, "lvl": lvl, "children": 0});
- }
- }
- function prepareLinks(data) {
- var nodes = data.nodes,
- links = data.links,
- src = "",
- trg = "";
- for(var i = 0; i < nodes.length - 1; i++) {
- src = nodes[i];
- trg = nodes[i+1];
- links.push({ "source": src, "target": trg });
- }
- }