Jump to content
jonasgarreto

Alterando o data-percentage attribute

Recommended Posts

Estou tentando implementar o sistema de mostrar % em circulo, o botão de porcentagem funciona perfeitamente, mas apenas alterando os números de data-percent = "50", em outro modelo de botão diferente, eu uso isso style = "width: @ {@ ViewBag.PercentOnline}% "para calcular%, como posso implementar isso em vez da data percentual?

muito obrigado

 

(function(a) {
  a.fn.circliful = function(b, d) {
    var c = a.extend({
      fgcolor: "#556b2f",
      bgcolor: "#eee",
      fill: false,
      width: 15,
      dimension: 200,
      fontsize: 15,
      percent: 50,
      animationstep: 1,
      iconsize: "20px",
      iconcolor: "#999",
      border: "default",
      complete: null
    }, b);
    return this.each(function() {
      var w = ["fgcolor", "bgcolor", "fill", "width", "dimension", "fontsize", "animationstep", "endPercent", "icon", "iconcolor", "iconsize", "border"];
      var f = {};
      var F = "";
      var n = 0;
      var t = a(this);
      var A = false;
      var v, G;
      t.addClass("circliful");
      e(t);
      if (t.data("text") != undefined) {
        v = t.data("text");
        if (t.data("icon") != undefined) {
          F = a("<i></i>").addClass("fa " + a(this).data("icon")).css({
            color: f.iconcolor,
            "font-size": f.iconsize
          })
        }
        if (t.data("type") != undefined) {
          j = a(this).data("type");
          if (j == "half") {
            s(t, "circle-text-half", (f.dimension / 1.45))
          } else {
            s(t, "circle-text", f.dimension)
          }
        } else {
          s(t, "circle-text", f.dimension)
        }
      }
      if (a(this).data("total") != undefined && a(this).data("part") != undefined) {
        var I = a(this).data("total") / 100;
        percent = ((a(this).data("part") / I) / 100).toFixed(3);
        n = (a(this).data("part") / I).toFixed(3)
      } else {
        if (a(this).data("percent") != undefined) {
          percent = a(this).data("percent") / 100;
          n = a(this).data("percent")
        } else {
          percent = c.percent / 100
        }
      }
      if (a(this).data("info") != undefined) {
        G = a(this).data("info");
        if (a(this).data("type") != undefined) {
          j = a(this).data("type");
          if (j == "half") {
            D(t, 0.9)
          } else {
            D(t, 1.25)
          }
        } else {
          D(t, 1.25)
        }
      }
      a(this).width(f.dimension + "px");
      var i = a("<canvas></canvas>").attr({
        width: f.dimension,
        height: f.dimension
      }).appendTo(a(this)).get(0);
      var g = i.getContext("2d");
      var r = i.width / 2;
      var q = i.height / 2;
      var C = f.percent * 360;
      var H = C * (Math.PI / 180);
      var l = i.width / 2.5;
      var B = 2.3 * Math.PI;
      var z = 0;
      var E = false;
      var o = f.animationstep === 0 ? n : 0;
      var p = Math.max(f.animationstep, 0);
      var u = Math.PI * 2;
      var h = Math.PI / 2;
      var j = "";
      var k = true;
      if (a(this).data("type") != undefined) {
        j = a(this).data("type");
        if (j == "half") {
          B = 2 * Math.PI;
          z = 3.13;
          u = Math.PI * 1;
          h = Math.PI / 0.996
        }
      }

      function s(J, x, y) {
        a("<span></span>").appendTo(J).addClass(x).text(v).prepend(F).css({
          "line-height": y + "px",
          "font-size": f.fontsize + "px"
        })
      }

      function D(y, x) {
        a("<span></span>").appendTo(y).addClass("circle-info-half").css("line-height", (f.dimension * x) + "px")
      }

      function e(x) {
        a.each(w, function(y, J) {
          if (x.data(J) != undefined) {
            f[J] = x.data(J)
          } else {
            f[J] = a(c).attr(J)
          }
          if (J == "fill" && x.data("fill") != undefined) {
            A = true
          }
        })
      }

      function m(x) {
        g.clearRect(0, 0, i.width, i.height);
        g.beginPath();
        g.arc(r, q, l, z, B, false);
        g.lineWidth = f.width + 1;
        g.strokeStyle = f.bgcolor;
        g.stroke();
        if (A) {
          g.fillStyle = f.fill;
          g.fill()
        }
        g.beginPath();
        g.arc(r, q, l, -(h), ((u) * x) - h, false);
        if (f.border == "outline") {
          g.lineWidth = f.width + 13
        } else {
          if (f.border == "inline") {
            g.lineWidth = f.width - 13
          }
        }
        g.strokeStyle = f.fgcolor;
        g.stroke();
        if (o < n) {
          o += p;
          requestAnimationFrame(function() {
            m(Math.min(o, n) / 100)
          }, t)
        }
        if (o == n && k && typeof(b) != "undefined") {
          if (a.isFunction(b.complete)) {
            b.complete();
            k = false
          }
        }
      }
      m(o / 100)
    })
  }
}(jQuery));

 

 

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="circlestat circliful" data-dimension="190" data-width="6" data-fontsize="12" data-percent="50" data-fgcolor="#fff" data-bgcolor="rgba(51, 51, 51, 0)" style="width: 190px;">
  <canvas style="width: 190px; height:190px;"></canvas>
</div>

<script type="text/javascript">
  $(function() {
    $('.circlestat').circliful();
  });
</script>

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.