Sample Events/Markers implementation
This is the jsfiddle implementation of helloworld.html with markers
by sonylnagale
HTML
<link rel="stylesheet" type="text/css" href="https://jsfiddle.chartiq.com/chart/css/stx-chart.css" media="screen" />
<div class="chartContainer" style="width:100%;height:400px;position:relative;"></div>
<!--[if IE 8]><script>alert("This template is not compatible with IE8");</script><![endif]-->
<div id="stxEventPrototype" class="myEvents">
</div>
<div id="stxRhombusPrototype" class="myEvents">
<span class="shape"></span>
<span class="label"></span>
</div>
<div id="stxEventHover" class="myEvents">
<span class="content"></span>
<span class="tooltip"></span>
</div>
CSS
.myEvents {
position: absolute;
text-align: center;
width: 20px;
height: 20px;
line-height: 20px;
color: white;
}
/*style dividents to be a blue circle*/
.myEvents.dividend {
background-color: blue;
-webkit-border-radius: 50%;
-moz-border-radius: 50%;
-ms-border-radius: 50%;
border-radius: 50%;
}
/*style news to be a small red square*/
.myEvents.news {
background-color: red;
width: 15px;
height: 15px;
line-height: 15px;
}
.myEvents.earnings {
background-color: purple;
border: 5px solid yellow;
}
/*style to be a brown Rhombus*/
.myEvents.rhombus .shape {
position: absolute;
width: 20px;
height: 20px;
left: 0px;
background-color: yellow;
border: 2px solid black;
color: black;
-webkit-transform: rotate(45deg);
/* Saf3.1+, Chrome */
-moz-transform: rotate(45deg);
/* FF3.5+ */
-ms-transform: rotate(45deg);
/* IE9 */
-o-transform: rotate(45deg);
/* Opera 10.5 */
transform: rotate(45deg);
}
.myEvents.rhombus .label {
position: absolute;
width: 20px;
height: 20px;
left: 2px;
/* offset to center the label */
}
.myEvents.hoverMarker {
background-color: pink;
border: 2px solid black;
}
/* create some rudimentary styling for our tooltip class */
.tooltip {
display: inline;
position: relative;
}
.hoverMarker:hover .tooltip:after {
background: #333;
background: rgba(0, 0, 0, .8);
border-radius: 5px;
bottom: 26px;
color: #fff;
content: attr(title);
left: 20%;
padding: 5px 15px;
position: absolute;
z-index: 98;
width: 30px;
content: attr(title);
}
.hoverMarker:hover .tooltip:before {
border: solid;
border-color: #333 transparent;
border-width: 11px 6px 0 6px;
bottom: 20px;
content: "";
left: 50%;
position: absolute;
z-index: 99;
}
JavaScript
import { CIQ } from "https://jsfiddle.chartiq.com/chart/js/advanced.js";
import sampleData from "https://jsfiddle.chartiq.com/chart/examples/data/STX_SAMPLE_DAILY.js";
const stxx = new CIQ.ChartEngine({
container: document.querySelector(".chartContainer")
});
function showEvents() {
const markerTypes = ["dividend", "news", "earnings"];
let newNode;
for (let i = 0; i < stxx.masterData.length - 10; i += 5) {
let r = Math.floor(Math.random() * (markerTypes.length + 1));
if (r == markerTypes.length) continue; // randomize
newNode = document.querySelector("#stxEventPrototype").cloneNode(true);
newNode.id = null;
newNode.innerHTML = markerTypes[r].toUpperCase().charAt(0);
newNode.classList.add(markerTypes[r]);
new CIQ.Marker({
stx: stxx,
xPositioner: "date",
yPositioner:markerTypes[r] == "dividend"?"above_candle":null,
x: stxx.masterData[i].DT,
label: "events",
node: newNode
});
}
// future marker with ckickable link
newNode = document.querySelector("#stxRhombusPrototype").cloneNode(true);
newNode.id = null;
newNode.innerHTML = '<a href="http://www.chartiq.com" target="_blank">Y</a>';
newNode.classList.add("rhombus");
let someDate = new Date(stxx.masterData[stxx.masterData.length - 1].DT);
someDate = stxx.getNextInterval(someDate, 5); // 5 bars in the future
alert(someDate)
new CIQ.Marker({
stx: stxx,
xPositioner: "date",
x: someDate,
label: "events",
node: newNode
});
//hover marker
newNode = document.querySelector("#stxEventHover").cloneNode(true);
newNode.id = null;
newNode.querySelector(".content", newNode).innerHTML = 'H';
newNode.querySelector(".tooltip", newNode).title = 'Hover';
newNode.classList.add("hoverMarker");
someDate = new Date(stxx.masterData[stxx.masterData.length - 5].DT);
someDate = stxx.getNextInterval(someDate, 1); // 1 bar in the future
new CIQ.Marker({
stx: stxx,
xPositioner: "date",
x:...