Sample Events/Markers implementation on a study panel
This is the jsfiddle implementation of helloworld.html with markers on a study panel
by ChartIQ Library
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>
<div id="stxEventPrototype" class="myEvents">
</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";
// Activate the License Key
import getLicenseKey from "https://jsfiddle.chartiq.com/chart/key.js";
getLicenseKey(CIQ);
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));
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",
x: stxx.masterData[i].DT,
label: "events",
node: newNode,
panelName: "\u200cvolume\u200c"
});
}
stxx.draw();
}
stxx.loadChart("SPY", sampleData);
CIQ.Studies.addStudy(stxx, "volume");
showEvents();