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 |
A Pen by Alexius M Wronka I I | 2,375 Kb |
Transition button | 4,112 Kb |
React Calc | 6,046 Kb |
List React | 3,155 Kb |
Animated Drop Down | 3,066 Kb |
Angular Calc | 3,707 Kb |
React Test | 1,232 Kb |
D3 Dot Graph | 4,139 Kb |
Angular 2 forms | 1,244 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 |
Algorithm practice | Abensur | 5,620 Kb |
Confirm Close Of Foundation Reveal Modal | Winghouchan | 1,818 Kb |
Sketchy Box | Mnicpt | 3,033 Kb |
Importable Clearfix | Corysimmons | 1,411 Kb |
Resizable SASS Icons | Marianarlt | 7,611 Kb |
My Starter Kit For Codepen | Dkdesign | 2,012 Kb |
TestTube CSS | EZPK | 2,710 Kb |
Snow collision | Wojtek1150 | 3,542 Kb |
A Pen by Paul Sullivan | Pwsm50 | 2,349 Kb |
A Pen by utcwebdev | Utcwebdev | 2,856 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!