Skip to content

Commit eea7d06

Browse files
committed
start re-implementing graph (currently broken)
1 parent a5776d4 commit eea7d06

File tree

7 files changed

+448
-8
lines changed

7 files changed

+448
-8
lines changed

css/style.css

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ header > button:hover {
6161

6262
.modal {
6363
color:#222;
64-
background:rgba(0,0,0,0.5);
64+
background:rgba(0,0,0,0.3);
6565
width:100%;
6666
height:100%;
6767
top:0;
@@ -112,6 +112,7 @@ header > button:hover {
112112
}
113113

114114
.modal .page {
115+
position:relative;
115116
padding: 2em;
116117
padding-top: 0.5em;
117118
display:none;
@@ -121,6 +122,14 @@ header > button:hover {
121122
.modal .page.active {
122123
display:block;
123124
}
125+
.modal svg {
126+
background:blue;
127+
width:100%;
128+
height:100%;
129+
position:absolute;
130+
top:0;
131+
left:0;
132+
}
124133

125134
#taxonomy > ul {
126135
list-style-type: none;

index.html

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,14 @@
2929
<div>
3030
<header>
3131
<span class="tab active" data-id="taxonomy">Taxonomy</span>
32-
<span class="tab" data-id="tree">Syntax Tree</span>
32+
<span class="tab" data-id="tree">Tree View</span>
3333
<span class="tab" data-id="graph">Graph</span>
3434
<span class="tab" data-id="options">Options</span>
3535
</header>
3636
<div class="page active" id="taxonomy"></div>
37-
<div class="page" id="tree"></div>
37+
<div class="page" id="tree">
38+
<svg>
39+
</div>
3840
<div class="page" id="graph"></div>
3941
<div class="page" id="options">
4042
<p><input type="checkbox" checked> Syntax tree visible</p>
@@ -46,9 +48,11 @@
4648
<script src="libs/svg.js"></script>
4749
<script src="libs/svg.draggable.js"></script>
4850
<script src="libs/jscolor.min.js"></script>
51+
<script src="libs/d3.min.js"></script>
4952

5053
<script src="js/ymljson.js"></script>
5154
<script src="js/parser.js"></script>
55+
<script src="js/treelayout.js"></script>
5256
<script src="js/main.js"></script>
5357
<script src="js/managers/tooltip.js"></script>
5458
<script src="js/managers/labelmanager.js"></script>

js/components/link.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,11 @@ class Link {
7373
// apply click events to text
7474
this.svgTexts.forEach(text => {
7575
text.node.oncontextmenu = (e) => {
76+
this.selectedLabel = text;
7677
e.preventDefault();
7778
svg.fire('link-label-right-click', { object: this, type: 'text', event: e });
7879
};
80+
text.click((e) => svg.fire('link-label-edit', { object: this, text, event: e }));
7981
});
8082

8183
this.line = this.svg.path()
@@ -447,6 +449,16 @@ class Link {
447449
return slots;
448450
}
449451

452+
listenForEdit() {
453+
console.log('listening');
454+
this.isEditing = true;
455+
456+
}
457+
stopEditing() {
458+
console.log('done');
459+
this.isEditing = false;
460+
}
461+
450462
getEndpoints() {
451463
let minWord = null;
452464
let maxWord = null;

js/main.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
const Main = (function() {
22
// classes
3-
let parser;
3+
let parser, lm, rm;
44

55
// main svg element
66
let svg;
@@ -12,6 +12,7 @@ const Main = (function() {
1212

1313
// other html elements
1414
let tooltip = {};
15+
let tl = {};
1516

1617
//--------------------------------
1718
// public functions
@@ -29,6 +30,7 @@ const Main = (function() {
2930
parser = new Parser();
3031
rm = new RowManager(svg);
3132
lm = new LabelManager(svg);
33+
tl = new TreeLayout(document.querySelector('#tree > svg'));
3234

3335
// load and render initial dataset by default
3436
changeDataset(2);
@@ -55,6 +57,11 @@ const Main = (function() {
5557
});
5658
});
5759

60+
svg.on('build-tree', function(e) {
61+
setActiveTab('tree');
62+
tl.graph(e.detail.object);
63+
});
64+
5865
// window event listeners
5966
// resize function
6067
window.onresize = function() {

js/managers/labelmanager.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ const LabelManager = (function() {
2121
constructor(svg) {
2222
// listeners for label handling
2323
svg.on('tag-edit', listenForEdit);
24+
svg.on('link-label-edit', listenForEdit);
2425
this.stopEditing = stopEditing;
2526
}
2627
}

js/managers/tooltip.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,12 @@ const Tooltip = (function() {
2727
let html = '';
2828
if (activeObject instanceof Word) {
2929
if (activeObject.tag) {
30-
html += '<p id="menu--edit-tag">Edit tag</p><p id="menu--remove-tag">Remove tag</p><hr>';
30+
html += '<p id="menu--edit-tag">Edit tag</p><p id="menu--remove-tag">Remove tag</p>';
3131
}
3232
else {
33-
html += '<p id="menu--add-tag">Add tag</p><hr>';
33+
html += '<p id="menu--add-tag">Add tag</p>';
3434
}
35-
html += '<p id="menu--graph">Tree visualization</p>';
35+
html += '<p id="menu--add-link">Add link</p><hr><p id="menu--tree">Tree visualization</p>';
3636
}
3737
else if (activeObject instanceof WordTag || activeObject instanceof WordCluster) {
3838
html += '<p id="menu--remove-tag">Remove</p>';
@@ -44,6 +44,7 @@ const Tooltip = (function() {
4444
else {
4545
html += '<p id="menu--remove-link">Remove link</p>';
4646
}
47+
html += '<hr><p id="menu--tree">Tree visualization</p>';
4748
}
4849
if (html) {
4950
div.innerHTML = html;
@@ -91,10 +92,15 @@ const Tooltip = (function() {
9192
_svg.fire('tag-edit', { object: activeObject.tag });
9293
break;
9394
case 'menu--edit-link-label':
95+
_svg.fire('link-label-edit', { object: activeObject, text: activeObject.selectedLabel });
96+
activeObject.selectedLabel = null;
9497
break;
9598
case 'menu--remove-link':
9699
activeObject.remove();
97-
_svg.fire('row-recalculate-slots', { object: activeObject, r1: activeObject.endpoints[0].row, r2: activeObject.endpoints[1].row });
100+
_svg.fire('row-recalculate-slots', { object: activeObject });
101+
break;
102+
case 'menu--tree':
103+
_svg.fire('build-tree', { object: activeObject });
98104
break;
99105
default: ;
100106
}

0 commit comments

Comments
 (0)