Guage
How do I make an guage?
What is a guage? How do you make a guage? This script and codes were developed by Alexius M Wronka I I on 19 September 2022, Monday.
Guage - Script Codes HTML Codes
<!DOCTYPE html>
<html >
<head> <meta charset="UTF-8"> <title>Guage</title> <link rel="stylesheet" href="css/style.css">
</head>
<body> <div class="guage-title"><span>Vendors 22/33</span></div>
<div class="chart-gauge"></div>
<script type="text/javascript"> needle.moveTo(22/33);
</script> <script src='https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.17/d3.min.js'></script> <script src="js/index.js"></script>
</body>
</html>
Guage - Script Codes CSS Codes
.guage-title { width: 400px; margin: 0px auto 0px auto; font-family: "Futura";
}
.guage-title span { text-align: center; display: block; font-size: 22px; font-weight: 100; padding-right: 40px;
}
.chart-gauge { width: 400px; margin: 20px auto;
}
.chart-filled { fill: steelblue;
}
.chart-empty { fill: #dedede;
}
.needle, .needle-center { fill: #464A4F;
}
svg { font: 10px sans-serif;
}
Guage - Script Codes JS Codes
var needle;
(function(){
var barWidth, chart, chartInset, degToRad, repaintGauge, height, margin, numSections, padRad, percToDeg, percToRad, percent, radius, sectionIndx, svg, totalPercent, width; percent = .65; numSections = 1; sectionPerc = 1 / numSections / 2; padRad = 0.025; chartInset = 10; // Orientation of gauge: totalPercent = .75; el = d3.select('.chart-gauge'); margin = { top: 20, right: 20, bottom: 30, left: 20 }; width = el[0][0].offsetWidth - margin.left - margin.right; height = width; radius = 200; barWidth = 40 * width / 300; /* Utility methods */ percToDeg = function(perc) { return perc * 360; }; percToRad = function(perc) { return degToRad(percToDeg(perc)); }; degToRad = function(deg) { return deg * Math.PI / 180; }; // Create SVG element svg = el.append('svg').attr('width', width + margin.left + margin.right).attr('height', height + margin.top + margin.bottom); // Add layer for the panel chart = svg.append('g').attr('transform', "translate(" + ((width + margin.left) / 2) + ", " + ((height + margin.top) / 2) + ")"); chart.append('path').attr('class', "arc chart-filled"); chart.append('path').attr('class', "arc chart-empty"); arc2 = d3.svg.arc().outerRadius(radius - chartInset).innerRadius(radius - chartInset - barWidth) arc1 = d3.svg.arc().outerRadius(radius - chartInset).innerRadius(radius - chartInset - barWidth) repaintGauge = function (perc) { var next_start = totalPercent; arcStartRad = percToRad(next_start); arcEndRad = arcStartRad + percToRad(perc / 2); next_start += perc / 2; arc1.startAngle(arcStartRad).endAngle(arcEndRad); arcStartRad = percToRad(next_start); arcEndRad = arcStartRad + percToRad((1 - perc) / 2); arc2.startAngle(arcStartRad + padRad).endAngle(arcEndRad); chart.select(".chart-filled").attr('d', arc1); chart.select(".chart-empty").attr('d', arc2); } var Needle = (function() { /** * Helper function that returns the `d` value * for moving the needle **/ var recalcPointerPos = function(perc) { var centerX, centerY, leftX, leftY, rightX, rightY, thetaRad, topX, topY; thetaRad = percToRad(perc / 2); centerX = 0; centerY = 0; topX = centerX - this.len * Math.cos(thetaRad); topY = centerY - this.len * Math.sin(thetaRad); leftX = centerX - this.radius * Math.cos(thetaRad - Math.PI / 2); leftY = centerY - this.radius * Math.sin(thetaRad - Math.PI / 2); rightX = centerX - this.radius * Math.cos(thetaRad + Math.PI / 2); rightY = centerY - this.radius * Math.sin(thetaRad + Math.PI / 2); return "M " + leftX + " " + leftY + " L " + topX + " " + topY + " L " + rightX + " " + rightY; }; function Needle(el) { this.el = el; this.len = width / 3; this.radius = this.len / 6; } Needle.prototype.render = function() { this.el.append('circle').attr('class', 'needle-center').attr('cx', 0).attr('cy', 0).attr('r', this.radius); return this.el.append('path').attr('class', 'needle').attr('d', recalcPointerPos.call(this, 0)); }; Needle.prototype.moveTo = function(perc) { var self, oldValue = this.perc || 0; this.perc = perc; self = this; // Reset pointer position this.el.transition().delay(100).ease('quad').duration(200).select('.needle').tween('reset-progress', function() { return function(percentOfPercent) { var progress = (1 - percentOfPercent) * oldValue; repaintGauge(progress); return d3.select(this).attr('d', recalcPointerPos.call(self, progress)); }; }); this.el.transition().delay(300).ease('bounce').duration(1500).select('.needle').tween('progress', function() { return function(percentOfPercent) { var progress = percentOfPercent * perc; repaintGauge(progress); return d3.select(this).attr('d', recalcPointerPos.call(self, progress)); }; }); }; return Needle; })(); needle = new Needle(chart); needle.render(); needle.moveTo(percent);
})();
Developer | Alexius M Wronka I I |
Username | awronka |
Uploaded | September 19, 2022 |
Rating | 3 |
Size | 3,480 Kb |
Views | 20,240 |
Find the perfect freelance services for your business! Fiverr's mission is to change how the world works together. Fiverr connects businesses with freelancers offering digital services in 500+ categories. Find Developer!
Name | Size |
Animated Drop Down | 3,066 Kb |
Angular Calc | 3,707 Kb |
List React | 3,155 Kb |
React Test | 1,232 Kb |
Transition button | 4,112 Kb |
A Pen by Alexius M Wronka I I | 2,375 Kb |
Angular 2 forms | 1,244 Kb |
Guage | 3,480 Kb |
D3 Dot Graph | 4,139 Kb |
React Calc | 6,046 Kb |
Jasper is the AI Content Generator that helps you and your team break through creative blocks to create amazing, original content 10X faster. Discover all the ways the Jasper AI Content Platform can help streamline your creative workflows. Start For Free!
Name | Username | Size |
TigerWoods Freecodecamp Page | Baileytj | 2,869 Kb |
Fun animations with CSS3 | Minimalmonkey | 2,360 Kb |
Display properties | Hamzaerbay | 1,886 Kb |
Importable Clearfix | Corysimmons | 1,411 Kb |
SVG Text Masking | JMChristensen | 2,141 Kb |
Bootstrap example | Ssaakkaa | 2,716 Kb |
Popover | Teles | 2,248 Kb |
Simple Accordion | Wearebold | 3,683 Kb |
Pure CSS Menu | Bronsrobin | 3,321 Kb |
Heatmap Color Scales | Stevepepple | 2,331 Kb |
Surf anonymously, prevent hackers from acquiring your IP address, send anonymous email, and encrypt your Internet connection. High speed, ultra secure, and easy to use. Instant setup. Hide Your IP Now!