Skip to content

Commit fa8c352

Browse files
committed
Enable visualization of secondary edges in RST JavaScript code
1 parent 6a03f09 commit fa8c352

1 file changed

Lines changed: 47 additions & 10 deletions

File tree

  • src/main/resources/org/corpus_tools/annis/gui/widgets

src/main/resources/org/corpus_tools/annis/gui/widgets/rst_vis.js

Lines changed: 47 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -549,6 +549,9 @@
549549
if (json.data && json.data.signals) {
550550
signals = signals.concat(json.data.signals);
551551
}
552+
if (json.data && json.data.secondarySignals) {
553+
signals = signals.concat(json.data.secondarySignals);
554+
}
552555

553556
if (json.children) {
554557
for (var i = 0; i < json.children.length; i++) {
@@ -649,7 +652,8 @@
649652

650653
if (edgeType === RST) {
651654
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);
653657
}
654658

655659
if (edgeType === MULTINUC) {
@@ -672,6 +676,27 @@
672676
}
673677
}
674678

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+
675700
/**
676701
* Get the middle of a node.
677702
*/
@@ -701,7 +726,12 @@
701726
}
702727

703728
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 = {};
705735

706736
if (fromX != toX) {
707737
controllPoint.x = (fromX + toX) / 2;
@@ -782,7 +812,7 @@
782812
/**
783813
*
784814
*/
785-
function plotRSTLabel(source, target, annotation, config, tokenCount) {
815+
function plotRSTLabel(source, target, annotation, config) {
786816
var fromX = getTopCenter(config, source);
787817
var toX = getTopCenter(config, target);
788818
var from = source.pos;
@@ -795,21 +825,27 @@
795825
controlPoint = {};
796826
controlPoint.x = (source.pos.x + target.pos.x) / 2;
797827
controlPoint.y = from.y - 2 * config.dim;
828+
if (config.dim < 0) {
829+
controlPoint.y -= config.labelSize * 1.2;
830+
}
798831

799832
label.style.top = controlPoint.y + "px";
800833
label.style.left = controlPoint.x + "px";
801834
label.style.fontSize = config.labelSize + "px";
802835
label.style.width = label.clientWidth + "px";
803836
label.style.color = config.edgeLabelColor;
837+
return label;
838+
}
804839

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;
812844
}
845+
var signalBadge = createSignalBadge(signals);
846+
var signalListElt = createSignalList(config, target, signals, signalBadge, tokenCount);
847+
label.appendChild(signalListElt);
848+
label.appendChild(signalBadge);
813849
}
814850

815851
var DOMINANCE = "edge";
@@ -855,6 +891,7 @@
855891
injectStyles(this.config);
856892
plotNodes(this.config);
857893
plotEdges(this.config);
894+
plotSecondaryEdges(this.config);
858895
}
859896
};
860897

0 commit comments

Comments
 (0)