Skip to content

Circle Loader ​

A circular ring meter that displays a percentage in the center.

a-sxr-circle-loader Component ​

Properties ​

PropertyDescriptionDefault Value
active-colorColor of ring that indicates loading progress#2563EB
background-colorBackground color of item#202127
loadedInitial percentage progress value0.5
font-colorText color for progress percentage text#F1F5F9
font-familyFont family for progress percentage textOutfit-Regular.ttf
font-sizeFont size for progress percentage text0.2
heightHeight of item1
widthWidth of item1
marginMargin around item0 0 0 0
html
<a-sxr-circle-loader
	height="0.75"
	font-family="Outfit-Regular.woff2"
	font-size="0.2"
	loaded="0.3456"
	margin="0 0 0.1 0"
	background-color="#999"
>
</a-sxr-circle-loader>

Loading an asset ​

Drive loaded while an asset downloads:

js
const loader = document.querySelector('a-sxr-circle-loader')

fetch('/model.glb')
  .then(response => response.body.getReader())
  .then(({ readableStream }) => {
    const total = +response.headers.get('content-length')
    const reader = readableStream.getReader()
    let received = 0

    const pump = () => readableStream && read()
    function read() {
      reader.read().then(({ done, value }) => {
        if (done) { loader.setAttribute('loaded', '1'); return }
        received += value.length
        loader.setAttribute('loaded', String(received / total))
        pump()
      })
    }
    pump()
  })

Property name

The progress value is loaded on this widget, not percent — percent is used by Progress Bar and the sliders.