const html = require('choo/html');
const percent = require('../../utils').percent;

const radius = 73;
const oRadius = radius + 10;
const oDiameter = oRadius * 2;
const circumference = 2 * Math.PI * radius;

module.exports = function(progressRatio, indefinite = false) {
  // HACK - never indefinite for MS Edge
  if (/edge/i.test(navigator.userAgent)) {
    indefinite = false;
  }
  const p = indefinite ? 0.2 : progressRatio;
  const dashOffset = (1 - p) * circumference;
  const progressPercent = html`
    <text class="progress__percent" text-anchor="middle" x="50%" y="98">
      ${percent(progressRatio)}
    </text>`;

  return html`
  <div class="progress">
    <svg
      width="${oDiameter}"
      height="${oDiameter}"
      viewPort="0 0 ${oDiameter} ${oDiameter}"
      version="1.1">
      <circle
        class="progress__bg"
        r="${radius}"
        cx="${oRadius}"
        cy="${oRadius}"
        fill="transparent"/>
      <circle
        class="progress__indefinite ${indefinite ? '' : 'progress--invisible'}"
        r="${radius}"
        cx="${oRadius}"
        cy="${oRadius}"
        fill="transparent"
        transform="rotate(-90 ${oRadius} ${oRadius})"
        stroke-dasharray="${circumference}"
        stroke-dashoffset="${dashOffset}"/>
      <circle
        class="progress__bar ${indefinite ? 'progress--invisible' : ''}"
        r="${radius}"
        cx="${oRadius}"
        cy="${oRadius}"
        fill="transparent"
        transform="rotate(-90 ${oRadius} ${oRadius})"
        stroke-dasharray="${circumference}"
        stroke-dashoffset="${dashOffset}"/>
        ${indefinite ? '' : progressPercent}
    </svg>
  </div>
  `;
};