|
549 | 549 | if (json.data && json.data.signals) { |
550 | 550 | signals = signals.concat(json.data.signals); |
551 | 551 | } |
| 552 | + if (json.data && json.data.secondarySignals) { |
| 553 | + signals = signals.concat(json.data.secondarySignals); |
| 554 | + } |
552 | 555 |
|
553 | 556 | if (json.children) { |
554 | 557 | for (var i = 0; i < json.children.length; i++) { |
|
649 | 652 |
|
650 | 653 | if (edgeType === RST) { |
651 | 654 | drawBezierCurve(from, to, config); |
652 | | - plotRSTLabel(from, to, annotation, config, tokenCount); |
| 655 | + var labelElt = plotRSTLabel(from, to, annotation, config); |
| 656 | + plotSignalBadge(labelElt, from, to, config, tokenCount, false); |
653 | 657 | } |
654 | 658 |
|
655 | 659 | if (edgeType === MULTINUC) { |
|
672 | 676 | } |
673 | 677 | } |
674 | 678 |
|
| 679 | + /** |
| 680 | + * Plot secondary edges. |
| 681 | + */ |
| 682 | + function plotSecondaryEdges(config) { |
| 683 | + var nodes = config.nodes; |
| 684 | + var configCopy = Object.assign({}, config); |
| 685 | + configCopy.edgeLabelColor = "#34ebde"; |
| 686 | + configCopy.dim = config.dim * -1; |
| 687 | + var tokenCount = []; |
| 688 | + |
| 689 | + for (var nodeId in nodes) { |
| 690 | + var secondaryEdges = nodes[nodeId].data.secondaryEdges; |
| 691 | + for (var i = 0; i < secondaryEdges.length; i++) { |
| 692 | + var edge = secondaryEdges[i]; |
| 693 | + drawBezierCurve(nodes[edge.from], nodes[edge.to], configCopy); |
| 694 | + var label = plotRSTLabel(nodes[edge.from], nodes[edge.to], edge.annotation, configCopy, tokenCount); |
| 695 | + plotSignalBadge(label, nodes[edge.from], nodes[edge.to], config, tokenCount, true); |
| 696 | + } |
| 697 | + } |
| 698 | + } |
| 699 | + |
675 | 700 | /** |
676 | 701 | * Get the middle of a node. |
677 | 702 | */ |
|
701 | 726 | } |
702 | 727 |
|
703 | 728 | function drawBezierCurve(source, target, config) { |
704 | | - var from = source.pos, to = target.pos, context = config.context, fromX = getTopCenter(config, source), toX = getTopCenter(config, target), controllPoint = {}; |
| 729 | + var from = source.pos; |
| 730 | + var to = target.pos; |
| 731 | + var context = config.context; |
| 732 | + var fromX = getTopCenter(config, source); |
| 733 | + var toX = getTopCenter(config, target); |
| 734 | + var controllPoint = {}; |
705 | 735 |
|
706 | 736 | if (fromX != toX) { |
707 | 737 | controllPoint.x = (fromX + toX) / 2; |
|
782 | 812 | /** |
783 | 813 | * |
784 | 814 | */ |
785 | | - function plotRSTLabel(source, target, annotation, config, tokenCount) { |
| 815 | + function plotRSTLabel(source, target, annotation, config) { |
786 | 816 | var fromX = getTopCenter(config, source); |
787 | 817 | var toX = getTopCenter(config, target); |
788 | 818 | var from = source.pos; |
|
795 | 825 | controlPoint = {}; |
796 | 826 | controlPoint.x = (source.pos.x + target.pos.x) / 2; |
797 | 827 | controlPoint.y = from.y - 2 * config.dim; |
| 828 | + if (config.dim < 0) { |
| 829 | + controlPoint.y -= config.labelSize * 1.2; |
| 830 | + } |
798 | 831 |
|
799 | 832 | label.style.top = controlPoint.y + "px"; |
800 | 833 | label.style.left = controlPoint.x + "px"; |
801 | 834 | label.style.fontSize = config.labelSize + "px"; |
802 | 835 | label.style.width = label.clientWidth + "px"; |
803 | 836 | label.style.color = config.edgeLabelColor; |
| 837 | + return label; |
| 838 | + } |
804 | 839 |
|
805 | | - // add signal badge and list, if signals are present |
806 | | - var signals = source.data.signals; |
807 | | - if (signals && signals.length > 0) { |
808 | | - var signalBadge = createSignalBadge(signals); |
809 | | - var signalListElt = createSignalList(config, target, signals, signalBadge, tokenCount); |
810 | | - label.appendChild(signalListElt); |
811 | | - label.appendChild(signalBadge); |
| 840 | + function plotSignalBadge(label, source, target, config, tokenCount, secondary) { |
| 841 | + var signals = secondary ? source.data.secondarySignals : source.data.signals; |
| 842 | + if (!signals || signals.length === 0) { |
| 843 | + return; |
812 | 844 | } |
| 845 | + var signalBadge = createSignalBadge(signals); |
| 846 | + var signalListElt = createSignalList(config, target, signals, signalBadge, tokenCount); |
| 847 | + label.appendChild(signalListElt); |
| 848 | + label.appendChild(signalBadge); |
813 | 849 | } |
814 | 850 |
|
815 | 851 | var DOMINANCE = "edge"; |
|
855 | 891 | injectStyles(this.config); |
856 | 892 | plotNodes(this.config); |
857 | 893 | plotEdges(this.config); |
| 894 | + plotSecondaryEdges(this.config); |
858 | 895 | } |
859 | 896 | }; |
860 | 897 |
|
|
0 commit comments