|
- (function (root, factory) {
- if (typeof define === 'function' && define.amd) {
- define(factory);// AMD
- } else if (typeof exports === 'object' && typeof module !== 'undefined') {
- module.exports = factory(); // CommonJS
- } else {
- window.Progressbar = factory(); // Browser globals
- }
- }(this, function () {
- function Progressbar(options){
- this.id = options.id;
- this.value = options.value || 0;
- this.width = options.width || 200;
- this.height = options.height || 200;
- this.bgColor = options.bgColor || '#F0ECEC';
- this.barColor = options.barColor || '#F9A825';
- this.fontColor = options.fontColor || '#606266';
- this.text = options.text || '%'
- this.radius = options.radius || 50
- if(options.init){
- this.init();
- }
- }
- Progressbar.prototype.init = function(){
- console.log(this.id, '创建的id')
- var canvas = document.getElementById(this.id);
- console.log(canvas, '找没找到', document.getElementById(this.id))
- if(!canvas.getContext) {
- throw new Error('your browser does not support canvas')
- }
-
- if(!this.id){
- throw new Error('your need pass id ')
- }
-
- var width = parseInt(this.width);
- var height = parseInt(this.height);
- canvas.setAttribute('width',width);
- canvas.setAttribute('height',height);
-
- var ctx = canvas.getContext("2d");
-
- var startAngle = 3 / 2 * Math.PI;
- var percentage = 0;
- var diffAngle = 0;
- var cx = width / 2;
- var cy = height / 2;
- var timer = setInterval(draw, 50);
- var value = this.value;
- var bgColor = this.bgColor;
- var barColor = this.barColor;
- var fontColor = this.fontColor;
- var text = this.text;
- var radius = this.radius
-
- function draw(){
- diffAngle = (percentage / 100) * Math.PI * 2;
-
- //清除矩形区域
- ctx.clearRect(0, 0, width, height);
-
- ctx.beginPath();
-
- //设置线段宽度
- ctx.lineWidth = 15;
-
- //绘制圆
- ctx.arc(cx, cy, radius, 0, 2 * Math.PI, false);
-
- //设置填充色
- ctx.fillStyle = '#FFF';
- ctx.fill();
-
- //绘制图形轮廓
- ctx.strokeStyle = bgColor;
- ctx.stroke();
-
- //绘制百分比进度
- ctx.beginPath();
- ctx.arc(cx, cy, radius, startAngle, diffAngle + startAngle, false);
- ctx.strokeStyle = barColor;
- ctx.stroke();
-
- //绘制百分比文字
- ctx.fillStyle = fontColor;
- ctx.textAlign = 'center';
- ctx.font = '16px serif';
- ctx.fillText(percentage + text, cx, cy + 6);
-
- if (percentage >= value) {
- clearTimeout(timer);
- }
-
- percentage++;
- }
- }
- return Progressbar;
- }));
|