Guage

Size
3,480 Kb
Views
20,240

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 Previews

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);
})();
Guage - Script Codes
Guage - Script Codes
Home Page Home
Developer Alexius M Wronka I I
Username awronka
Uploaded September 19, 2022
Rating 3
Size 3,480 Kb
Views 20,240
Do you need developer help for Guage?

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!

Alexius M Wronka I I (awronka) Script Codes
Create amazing Facebook ads with AI!

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!