Improving popups
This commit is contained in:
parent
c8c18966a2
commit
035bb0858f
@ -1,13 +1,14 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>Dynamic Vector Circle</title>
|
<meta charset="utf-8">
|
||||||
|
<title>Timeline.js example</title>
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
body {
|
body {
|
||||||
background-color: #333;
|
background-color: #333;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body onload="SVG.init('holder', '100%', '100%', 'both', true, true); SVG.addPoints([{'x':200, 'y':50, 'label':'test'},{'x':100, 'y':100, 'label':'test2'},{'x':150,'y':25, 'label':'test3'},{'x':175, 'y':-200, 'label':'test4'}]); SVG.draw();">
|
<body onload="SVG.init('holder', '100%', '100%', 'both', true, true); SVG.addPoints([{'x':200, 'y':50, 'label':'test'},{'x':100, 'y':100, 'label':'test2'},{'x':150,'y':25, 'label':'test3'},{'x':175, 'y':-200, 'label':'test4'},{'x':125, 'y':75, 'label':'µg/m<sup>3</sup>'}]); SVG.draw();">
|
||||||
<div id="holder"></div>
|
<div id="holder"></div>
|
||||||
<script type="text/javascript" src="../timeline.js"></script>
|
<script type="text/javascript" src="../timeline.js"></script>
|
||||||
</body>
|
</body>
|
||||||
|
51
timeline.js
51
timeline.js
@ -3,7 +3,7 @@ SVG.ns = "http://www.w3.org/2000/svg";
|
|||||||
SVG.xlinkns = "http://www.w3.org/1999/xlink";
|
SVG.xlinkns = "http://www.w3.org/1999/xlink";
|
||||||
|
|
||||||
SVG.marginBottom = 10;
|
SVG.marginBottom = 10;
|
||||||
SVG.marginTop = 10;
|
SVG.marginTop = 15;
|
||||||
SVG.marginLeft = 10;
|
SVG.marginLeft = 10;
|
||||||
SVG.marginRight = 10;
|
SVG.marginRight = 10;
|
||||||
SVG.rounded = false;
|
SVG.rounded = false;
|
||||||
@ -296,25 +296,48 @@ SVG.draw = function() {
|
|||||||
SVG.g.appendChild(element);
|
SVG.g.appendChild(element);
|
||||||
|
|
||||||
if(SVG.labels[point] !== '') {
|
if(SVG.labels[point] !== '') {
|
||||||
|
var g = document.createElementNS(SVG.ns, 'g');
|
||||||
|
g.setAttribute('class', 'label');
|
||||||
|
g.setAttribute('id', 'label_'+point);
|
||||||
|
g.setAttribute('transform', 'translate(0, ' + SVG.holder.parentElement.offsetHeight + ') scale(1, -1)');
|
||||||
|
SVG.g.appendChild(g);
|
||||||
|
|
||||||
element = document.createElementNS(SVG.ns, 'text');
|
element = document.createElementNS(SVG.ns, 'text');
|
||||||
element.setAttribute('class', 'label');
|
element.innerHTML = SVG.labels[point].replace(/(<([^>]+)>)/ig, '');
|
||||||
element.setAttribute('id', 'label_'+point);
|
|
||||||
element.innerHTML = SVG.labels[point];
|
var path = document.createElementNS(SVG.ns, 'path');
|
||||||
element.setAttribute('transform', 'translate(0, ' + SVG.holder.parentElement.offsetHeight + ') scale(1, -1)');
|
path.setAttribute('stroke', 'black');
|
||||||
SVG.g.appendChild(element);
|
path.setAttribute('stroke-width', 2);
|
||||||
if(x[point] + element.getBoundingClientRect().width / 2 > SVG.holder.parentElement.offsetWidth) {
|
path.setAttribute('fill', 'white');
|
||||||
element.setAttribute('x', x[point] - element.getBoundingClientRect().width - 10);
|
path.setAttribute('opacity', 0.5);
|
||||||
element.setAttribute('y', SVG.holder.parentElement.offsetHeight - y[point] + 5);
|
|
||||||
|
// Append here to have them with the good z-index, update their attributes later
|
||||||
|
g.appendChild(path);
|
||||||
|
g.appendChild(element);
|
||||||
|
|
||||||
|
var x_text = x[point] - element.getBoundingClientRect().width / 2;
|
||||||
|
var y_text = SVG.holder.parentElement.offsetHeight - y[point] - 20;
|
||||||
|
var element_width = element.getBoundingClientRect().width;
|
||||||
|
var element_height = element.getBoundingClientRect().height;
|
||||||
|
|
||||||
|
if(x[point] + element_width / 2 > SVG.holder.parentElement.offsetWidth) {
|
||||||
|
x_text = x[point] - element_width - 20;
|
||||||
|
y_text = SVG.holder.parentElement.offsetHeight - y[point] + 5;
|
||||||
|
path.setAttribute('d', 'M '+(x_text - 5)+' '+(y_text + 5)+' L '+(x_text - 5)+' '+(y_text - element_height + 5)+' L '+(x_text + element_width + 5)+' '+(y_text - element_height + 5)+' L '+(x_text + element_width + 5)+' '+(y_text - element_height/2 + 2.5)+' L '+(x_text + element_width + 10)+' '+(y_text - element_height/2 + 5)+' L '+(x_text + element_width + 5)+' '+(y_text - element_height/2 + 7.5)+' L '+(x_text + element_width + 5)+' '+(y_text + 5)+' Z');
|
||||||
}
|
}
|
||||||
else if(x[point] - element.getBoundingClientRect().width / 2 < 0) {
|
else if(x[point] - element.getBoundingClientRect().width / 2 < 0) {
|
||||||
element.setAttribute('x', x[point] + 10);
|
x_text = x[point] + 20;
|
||||||
element.setAttribute('y', SVG.holder.parentElement.offsetHeight - y[point] + 5);
|
y_text = SVG.holder.parentElement.offsetHeight - y[point] + 5;
|
||||||
|
path.setAttribute('d', 'M '+(x_text - 5)+' '+(y_text + 5)+' L '+(x_text - 5)+' '+(y_text - element_height/2 + 7.5)+' L '+(x_text - 10)+' '+(y_text - element_height/2 + 5)+' L '+(x_text - 5)+' '+(y_text - element_height/2 + 2.5)+' L '+(x_text - 5)+' '+(y_text - element_height + 5)+' L '+(x_text + element_width + 5)+' '+(y_text - element_height + 5)+' L '+(x_text + element_width + 5)+' '+(y_text + 5)+' Z');
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
element.setAttribute('x', x[point] - element.getBoundingClientRect().width / 2);
|
path.setAttribute('d', 'M '+(x_text - 5)+' '+(y_text + 5)+' L '+(x_text - 5)+' '+(y_text - element_height + 5)+' L '+(x_text + element_width + 5)+' '+(y_text - element_height + 5)+' L '+(x_text + element_width + 5)+' '+(y_text + 5)+' L '+(x_text + element_width/2 + 2.5)+' '+(y_text + 5)+' L '+(x_text + element_width/2)+' '+(y_text + 10)+' L '+(x_text + element_width/2 - 2.5)+' '+(y_text + 5)+' Z');
|
||||||
element.setAttribute('y', SVG.holder.parentElement.offsetHeight - y[point] - 10);
|
|
||||||
}
|
}
|
||||||
element.setAttribute('display', 'none');
|
element.setAttribute('x', x_text);
|
||||||
|
element.setAttribute('y', y_text);
|
||||||
|
|
||||||
|
|
||||||
|
g.setAttribute('display', 'none');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user