업데이트 : 당신의 onclick
문제를 해결하기 위해 나는 당신이 바로 생각
가장 좋은 방법은 아래의 편집은 사람으로 (대신 중첩 된 그룹) 같은 그룹에있는 사람의 배우자를 유지하는 것입니다 . 그 외에도 onclick
을 잘못된 위치에 적용하고 있다고 생각합니다. 내 조언은 대신하면서, 모두 사람과 그/그녀의 배우자를 포함하는 그룹에 onclick
을 적용하고, 현재 다음
var node = g.append("svg:g").attr("class", "node")
.selectAll("g")
.data(function (d) { return d.nodes; })
.enter().append("svg:g");
node.append("svg:rect")
.on("click", clickedNode);
에
변경 라인 325-330이다 각 사람/배우자마다 onclick
을 별도로 사용하고 싶습니다. 이 변경을 한 후에는 각 노드의 rect
(노드 그룹 g
대신)이 선택되었는지 (노드 355-365) 테스트하도록 코드를 업데이트해야합니다. 또한 CSS 파일의 라인 25와 29에서 .node rect.normal
및 .node rect.selected
스타일로 CSS를 업데이트해야합니다.
두 번째 문제는 각 사람의 첫 배우자 만 그리는 것입니다. 현재 updateSpouses
함수는 각 사람을 반복하고 첫 번째 배우자에 대한 사각형이있는 그룹을 추가합니다. 당신이해야 할 일은 먼저 각자의 배우자를 가진 그룹을 추가 한 다음 각 배우자의 그룹을 추가하는 것입니다. 여기에 당신이 시작하는 데 updateSpouses
을 수정하는 방법의 초안입니다 :
var node = svgTree.selectAll(".node g")
.append("svg:g").attr("transform", function (d, i) {
if (i == d3.familyTree.rootGeneration)
return "translate(" + (d.spouseX) + "," + (d3.familyTree.gapBetweenSpouses) + ")";
else
return "translate(" + 0 + "," + (d3.familyTree.gapBetweenSpouses) + ")";
})
.filter(function (d, i) { return personSpouses" in d });
var spouses = node.selectAll(".spouse")
.data(function(d){ return d.personSpouses }).enter()
.append("rect")
.on("click", clickedNode);
편집 귀하의 코멘트에 대한 응답으로
, 내가 나서서 원래 코드 http://jsfiddle.net/mdml/xJBXm/를 수정했습니다. 여기에 내가 변경 한 내용의 간략한 요약이다 : 나는 당신이 사각형을 클릭하면되도록 한 후, 자신의 onclick
속성 (선 141-146)을 가진 그룹에서 각 사람을 넣어
- 가/텍스트
clickedNode
입니다 라는.
- 나는 (위에서 설명한 바와 같이) 각 그룹의 배우자를 개별적으로 클릭 할 수 있도록 배치했다 (라인 229-232).
resetNodePersonSelected
및 setNodePersonSelected
기능을 수정하여 배우자가 자녀 이외에 검색/업데이트되도록했습니다.
위의 고급 수준의 변경 사항을 설명했지만 구현에 대해 더 궁금한 점이 있으면 알려 주시기 바랍니다.
나는 배우자를 추가하는 방법에 문제가 있다고 생각합니다. 지금,'personSpouses'는 명단 일 수 있지만, 당신의 나무에 아무도 한 명 이상의 배우자가 없습니다. 나는 한 명 이상의 배우자를 당신의 바이올린에 넣으려고 애썼지 만 그녀는 그려지지 않았습니다. 사람들이 여러 배우자를 가질 수 있기를 원한다면 먼저 그 문제를 해결할 것입니다. 왜냐하면 그 후에 'onclick'문제를 해결하는 것이 간단 할 것이기 때문입니다. – mdml
@ mtitan8 빠른 응답을 보내 주셔서 감사합니다. 저의 원래 json 데이터에는 둘 이상의 배우자가 포함되어 있습니다. jsFiddle을 위해 단축했습니다. 여기에 여러 명의 배우자가있는 http://jsfiddle.net/mj58659094/StWcr/1/이 있습니다. json의 personId : personId : "1000101"Father-3 (SMJ), 두 번 결혼, 첫 번째 아내는 personId : "1000102"이고 두 번째 아내는 personId : "1000103", 두 번째 배우자는 표시되지 않지만 또 다른 문제입니다. – mj8591