diff options
| author | Pliable Pixels <pliablepixels@gmail.com> | 2017-09-21 12:49:18 -0400 |
|---|---|---|
| committer | Pliable Pixels <pliablepixels@gmail.com> | 2017-09-21 12:49:18 -0400 |
| commit | b28028ac4082842143b0f528d6bc539da6ccb419 (patch) | |
| tree | 1e26ea969a781ed8e323fca4e3c76345113fc694 /www/lib/vis/examples/graph2d/09_external_legend.html | |
| parent | 676270d21beed31d767a06c89522198c77d5d865 (diff) | |
mega changes, including updates and X
Diffstat (limited to 'www/lib/vis/examples/graph2d/09_external_legend.html')
| -rw-r--r-- | www/lib/vis/examples/graph2d/09_external_legend.html | 363 |
1 files changed, 363 insertions, 0 deletions
diff --git a/www/lib/vis/examples/graph2d/09_external_legend.html b/www/lib/vis/examples/graph2d/09_external_legend.html new file mode 100644 index 00000000..8ec82fa8 --- /dev/null +++ b/www/lib/vis/examples/graph2d/09_external_legend.html @@ -0,0 +1,363 @@ +<!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> + + <script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-61231638-1', 'auto');ga('send', 'pageview');</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> |
