168 lines
		
	
	
	
		
			4.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			168 lines
		
	
	
	
		
			4.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| const SetupProgressBar = () =>{
 | |
|    //var bar = new ProgressBar.Path('#path-2', {
 | |
|    //    easing: 'easeInOut',
 | |
|    //    duration: 1400
 | |
|    //});
 | |
|    //
 | |
|    //bar.set(0);
 | |
|    //bar.animate(0.33)
 | |
| 
 | |
|   //  var bar4 = new ProgressBar.Path('#healthText', {
 | |
|   //      easing: 'easeInOut',
 | |
|   //      duration: 1400
 | |
|   //  });
 | |
|   //  bar4.set(0)
 | |
|   //  bar4.animate(0.7)
 | |
| //
 | |
|   //  var bar5 = new ProgressBar.Path('#waterText', {
 | |
|   //      easing: 'easeInOut',
 | |
|   //      duration: 1400
 | |
|   //  });
 | |
|   //  bar5.set(0)
 | |
|   //  bar5.animate(0.7)
 | |
| //
 | |
|   //  var bar6 = new ProgressBar.Path('#armorText', {
 | |
|   //      easing: 'easeInOut',
 | |
|   //      duration: 1400
 | |
|   //  });
 | |
|   //  bar6.set(0)
 | |
|   //  bar6.animate(0.7)
 | |
|   //  var bar7 = new ProgressBar.Path('#hungerText', {
 | |
|   //      easing: 'easeInOut',
 | |
|   //      duration: 1400
 | |
|   //  });
 | |
|   //  bar7.set(0)
 | |
|   //  bar7.animate(0.7)
 | |
|   //  var bar8 = new ProgressBar.Path('#staminaText', {
 | |
|   //    easing: 'easeInOut',
 | |
|   //    duration: 1400
 | |
|   //});
 | |
|   //bar8.set(0)
 | |
|   //bar8.animate(0.7)
 | |
| //  var bar9 = new ProgressBar.Path('#stressText', {
 | |
| //    easing: 'easeInOut',
 | |
| //    duration: 1400
 | |
| //});
 | |
| //bar9.set(0)
 | |
| //bar9.animate(0.7)
 | |
| }
 | |
| 
 | |
| /*! SVG Pie Progress Indicator | Ryan Detert | MIT License */
 | |
| /*! based on SVG Pie Timer 0.9.1 | Anders Grimsrud, grint.no | github.com/agrimsrud/svgPieTimer.js */
 | |
| 
 | |
| // Date.now fix by Ari Fuchs, afuchs.tumblr.com/post/23550124774/date-now-in-ie8
 | |
| Date.now = Date.now || function() { return +new Date };
 | |
| 
 | |
| function svgPieProgress(props){
 | |
| 
 | |
|   'use strict';
 | |
| 
 | |
|   var element = props.element,
 | |
|     duration = props.duration || 1000,
 | |
|     endTime = 0, 
 | |
|     totalDuration = 0, 
 | |
|     lastTotalProgress, totalProgress, endProgress,
 | |
|     currentAngle = 0;
 | |
| 
 | |
|   if(!element) throw "SVG Pie Progress: Error - element required"
 | |
|   
 | |
|   this.progress =  (props.progress) ? props.progress : 0.0;
 | |
|   
 | |
|   this.updateProgress = function(progress){
 | |
|     
 | |
|     // We need to keep track of the current angle in case the progress gets updated
 | |
|     // before the previous progress animation finishes
 | |
|     lastTotalProgress = currentAngle / 360;
 | |
|     var delta = progress - lastTotalProgress; 
 | |
|     
 | |
|     // this is how much extra we have to go for this progress update
 | |
|     // progress will contain the new value
 | |
|     // this.progress will contain the saved value from last time
 | |
|     var segmentDuration = Math.floor(duration * (progress - this.progress));
 | |
|     
 | |
|     // this is how much we still have left from the previous time (if necessary)
 | |
|     var timeLeft = Math.floor(duration * ( this.progress - lastTotalProgress )); 
 | |
|     totalDuration = segmentDuration + timeLeft;    
 | |
|     
 | |
|     endTime = Date.now() + totalDuration;
 | |
|     
 | |
|     this.progress = endProgress = progress;
 | |
|     frame(); 
 | |
|   }
 | |
|   
 | |
|   function draw(element, angle) {
 | |
|     var count = element.length;
 | |
|       
 | |
|     var rad = (angle * Math.PI / 180),
 | |
|         x = Math.sin(rad) *  125, 
 | |
|         y = Math.cos(rad) * -125, 
 | |
|         mid = (angle > 180) ? 1 : 0, 
 | |
|         shape = 'M 0 0 v -125 A 125 125 1 ' 
 | |
|                + mid + ' 1 ' 
 | |
|                +  x  + ' ' 
 | |
|                +  y  + ' z';
 | |
| 
 | |
|     // If array of elements, draw each one
 | |
| 
 | |
|     if(element instanceof Array)
 | |
|         while(count--)
 | |
|             element[count].setAttribute('d', shape)
 | |
|     else
 | |
|         element.setAttribute('d', shape)
 | |
|   }
 | |
| 
 | |
|       
 | |
|   function frame() {
 | |
|     
 | |
|     var currentTime = Date.now(),
 | |
|         remaining = endTime - currentTime;
 | |
| 
 | |
|     var currentSegmentProgress = ( 1 - remaining / totalDuration );
 | |
|     var totalProgress = lastTotalProgress + currentSegmentProgress;
 | |
|     var newAngle = 360 * totalProgress; 
 | |
|     
 | |
|     // make sure no small jump backwards due to rounding, etc
 | |
|     if ( newAngle > currentAngle )
 | |
|       currentAngle = newAngle; 
 | |
|      
 | |
| 
 | |
|     if ( totalProgress >= endProgress ) {
 | |
|             
 | |
|       currentAngle = 360 * endProgress;
 | |
|       lastTotalProgress = endProgress;
 | |
|       
 | |
|       // 360 degrees is the same as 0 degress so it won't look finished if we don't
 | |
|       // set it back a little
 | |
|       currentAngle = (endProgress >= 0.999) ? 359.999 : currentAngle;
 | |
|       
 | |
|       draw(element, currentAngle);
 | |
|     
 | |
|       return; 
 | |
|     
 | |
|     }
 | |
| 
 | |
|     draw(element, currentAngle);
 | |
| 
 | |
|     requestAnimationFrame(frame);
 | |
|   };
 | |
| 
 | |
| 
 | |
| };
 | |
| 
 | |
| 
 | |
| 
 | |
| var progress = {}
 | |
| 
 | |
| function init(loaderEl, border, val){
 | |
|     var loader = document.getElementById(loaderEl),
 | |
|     border = document.getElementById(border);
 | |
|     if(progress[loaderEl] == undefined){
 | |
|       progress[loaderEl]  = new svgPieProgress({
 | |
|         element: [loader, border],
 | |
|         duration: 400  // total time it would take without stopping from 0-100% 
 | |
|       });
 | |
|     }
 | |
| 
 | |
|   progress[loaderEl].updateProgress(val+.0)
 | |
| }
 | |
| 
 | 
