|
|
- <!DOCTYPE HTML>
- <html>
- <head>
- <title>Graph2d | External legend Example</title>
- <link href="../../dist/vis-timeline-graph2d.min.css" rel="stylesheet" type="text/css" />
- <style type="text/css">
- body, html {
- font-family: sans-serif;
- }
-
- .custom-style1 {
- fill: #f2ea00;
- fill-opacity:0;
- stroke-width:2px;
- stroke: #b3ab00;
- }
-
- .custom-style2 {
- fill: #00a0f2;
- fill-opacity:0;
- stroke-width:2px;
- stroke: #050092;
- }
-
- .custom-style3 {
- fill: #00f201;
- fill-opacity:0;
- stroke-width:2px;
- stroke: #029200;
- }
-
- path.custom-style3.fill {
- fill-opacity:0.5 !important;
- stroke: none;
- }
-
- .vis-graph-group0 {
- fill:#4f81bd;
- fill-opacity:0;
- stroke-width:2px;
- stroke: #4f81bd;
- }
-
- .vis-graph-group1 {
- fill:#f79646;
- fill-opacity:0;
- stroke-width:2px;
- stroke: #f79646;
- }
-
- .vis-graph-group2 {
- fill: #8c51cf;
- fill-opacity:0;
- stroke-width:2px;
- stroke: #8c51cf;
- }
-
- .vis-graph-group3 {
- fill: #75c841;
- fill-opacity:0;
- stroke-width:2px;
- stroke: #75c841;
- }
-
- .vis-graph-group4 {
- fill: #ff0100;
- fill-opacity:0;
- stroke-width:2px;
- stroke: #ff0100;
- }
-
- .vis-graph-group5 {
- fill: #37d8e6;
- fill-opacity:0;
- stroke-width:2px;
- stroke: #37d8e6;
- }
-
- .vis-graph-group6 {
- fill: #042662;
- fill-opacity:0;
- stroke-width:2px;
- stroke: #042662;
- }
-
- .vis-graph-group7 {
- fill:#00ff26;
- fill-opacity:0;
- stroke-width:2px;
- stroke: #00ff26;
- }
-
- .vis-graph-group8 {
- fill:#ff00ff;
- fill-opacity:0;
- stroke-width:2px;
- stroke: #ff00ff;
- }
-
- .vis-graph-group9 {
- fill: #8f3938;
- fill-opacity:0;
- stroke-width:2px;
- stroke: #8f3938;
- }
-
- .vis-fill {
- fill-opacity:0.1;
- stroke: none;
- }
-
-
- .vis-bar {
- fill-opacity:0.5;
- stroke-width:1px;
- }
-
- .vis-point {
- stroke-width:2px;
- fill-opacity:1.0;
- }
-
-
- .vis-legend-background {
- stroke-width:1px;
- fill-opacity:0.9;
- fill: #ffffff;
- stroke: #c2c2c2;
- }
-
-
- .vis-outline {
- stroke-width:1px;
- fill-opacity:1;
- fill: #ffffff;
- stroke: #e5e5e5;
- }
-
- .vis-icon-fill {
- fill-opacity:0.3;
- stroke: none;
- }
-
- div.description-container {
- float:left;
- height:30px;
- width:160px;
- padding-left:5px;
- padding-right:5px;
- line-height: 30px;
- }
-
- div.icon-container {
- float:left;
- }
-
- div.legend-element-container {
- display:inline-block;
- width:200px;
- height:30px;
- border-style:solid;
- border-width:1px;
- border-color: #e0e0e0;
- background-color: #ffffff;
- margin:4px;
- padding:4px;
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- cursor:pointer;
- }
- div.legend-element-container.hidden {
- background-color: #d3e6ff;
- }
-
- svg.legend-icon {
- width:30px;
- height:30px;
- }
-
- div.external-legend {
- position:relative;
- margin-left: -5px;
- width: 900px;
- }
- </style>
-
- <script src="../../dist/vis.js"></script>
-
- </head>
- <body>
- <h2>Graph2d | External custom legend</h2>
- <div style="width:800px; font-size:14px; text-align: justify;">
- This example shows how to create an external custom legend using the getLegend function. We use normal JavaScript to show and hide the
- groups by updating the dataset.
-
- </div>
- <br />
- <div id="Legend" class="external-legend"></div>
- <div id="visualization"></div>
-
-
- <script type="text/javascript">
- // create a dataSet with groups
- var names = ['SquareShaded', 'Bargraph', 'Blank', 'CircleShaded'];
- var groups = new vis.DataSet();
- groups.add({
- id: 0,
- content: names[0],
- className: 'custom-style1',
- options: {
- drawPoints: {
- style: 'square' // square, circle
- },
- shaded: {
- orientation: 'bottom' // top, bottom
- }
- }});
-
- groups.add({
- id: 1,
- content: names[1],
- className: 'custom-style2',
- options: {
- style:'bar',
- drawPoints: {style: 'circle',
- size: 10
- }
- }});
-
- groups.add({
- id: 2,
- content: names[2],
- options: {
- yAxisOrientation: 'right', // right, left
- drawPoints: false
- }
- });
-
- groups.add({
- id: 3,
- content: names[3],
- className: 'custom-style3',
- options: {
- yAxisOrientation: 'right', // right, left
- drawPoints: {
- style: 'circle' // square, circle
- },
- shaded: {
- orientation: 'top' // top, bottom
- }
- }});
-
- var container = document.getElementById('visualization');
- var items = [
- {x: '2014-06-12', y: 0 , group: 0},
- {x: '2014-06-13', y: 30, group: 0},
- {x: '2014-06-14', y: 10, group: 0},
- {x: '2014-06-15', y: 15, group: 1},
- {x: '2014-06-16', y: 30, group: 1},
- {x: '2014-06-17', y: 10, group: 1},
- {x: '2014-06-18', y: 15, group: 1},
- {x: '2014-06-19', y: 52, group: 1},
- {x: '2014-06-20', y: 10, group: 1},
- {x: '2014-06-21', y: 20, group: 2},
- {x: '2014-06-22', y: 600, group: 2},
- {x: '2014-06-23', y: 100, group: 2},
- {x: '2014-06-24', y: 250, group: 2},
- {x: '2014-06-25', y: 300, group: 2},
- {x: '2014-06-26', y: 200, group: 3},
- {x: '2014-06-27', y: 600, group: 3},
- {x: '2014-06-28', y: 1000, group: 3},
- {x: '2014-06-29', y: 250, group: 3},
- {x: '2014-06-30', y: 300, group: 3}
- ];
-
- var dataset = new vis.DataSet(items);
- var options = {
- dataAxis: {showMinorLabels: false},
- start: '2014-06-09',
- end: '2014-07-03'
- };
- var graph2d = new vis.Graph2d(container, items, groups, options);
-
-
- /**
- * this function fills the external legend with content using the getLegend() function.
- */
- function populateExternalLegend() {
- var groupsData = groups.get();
- var legendDiv = document.getElementById("Legend");
- legendDiv.innerHTML = "";
-
- // get for all groups:
- for (var i = 0; i < groupsData.length; i++) {
- // create divs
- var containerDiv = document.createElement("div");
- var iconDiv = document.createElement("div");
- var descriptionDiv = document.createElement("div");
-
- // give divs classes and Ids where necessary
- containerDiv.className = 'legend-element-container';
- containerDiv.id = groupsData[i].id + "_legendContainer"
- iconDiv.className = "icon-container";
- descriptionDiv.className = "description-container";
-
- // get the legend for this group.
- var legend = graph2d.getLegend(groupsData[i].id,30,30);
-
- // append class to icon. All styling classes from the vis.css/vis-timeline-graph2d.min.css have been copied over into the head here to be able to style the
- // icons with the same classes if they are using the default ones.
- legend.icon.setAttributeNS(null, "class", "legend-icon");
-
- // append the legend to the corresponding divs
- iconDiv.appendChild(legend.icon);
- descriptionDiv.innerHTML = legend.label;
-
- // determine the order for left and right orientation
- if (legend.orientation == 'left') {
- descriptionDiv.style.textAlign = "left";
- containerDiv.appendChild(iconDiv);
- containerDiv.appendChild(descriptionDiv);
- }
- else {
- descriptionDiv.style.textAlign = "right";
- containerDiv.appendChild(descriptionDiv);
- containerDiv.appendChild(iconDiv);
- }
-
- // append to the legend container div
- legendDiv.appendChild(containerDiv);
-
- // bind click event to this legend element.
- containerDiv.onclick = toggleGraph.bind(this,groupsData[i].id);
- }
- }
-
- /**
- * This function switchs the visible option of the selected group on an off.
- * @param groupId
- */
- function toggleGraph(groupId) {
- // get the container that was clicked on.
- var container = document.getElementById(groupId + "_legendContainer")
- // if visible, hide
- if (graph2d.isGroupVisible(groupId) == true) {
- groups.update({id:groupId, visible:false});
- container.className = container.className + " hidden";
- }
- else { // if invisible, show
- groups.update({id:groupId, visible:true});
- container.className = container.className.replace("hidden","");
- }
- }
-
- populateExternalLegend()
-
- </script>
- </body>
- </html>
|