35 lines
912 B
JavaScript
35 lines
912 B
JavaScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: MPL-2.0
|
|
*/
|
|
|
|
import Component from '@ember/component';
|
|
import { computed } from '@ember/object';
|
|
|
|
export default Component.extend({
|
|
'data-test-radial-progress': true,
|
|
tagName: 'svg',
|
|
classNames: 'radial-progress',
|
|
attributeBindings: ['size:width', 'size:height', 'viewBox', 'data-test-radial-progress'],
|
|
progressDecimal: null,
|
|
size: 20,
|
|
strokeWidth: 1,
|
|
|
|
viewBox: computed('size', function () {
|
|
const s = this.size;
|
|
return `0 0 ${s} ${s}`;
|
|
}),
|
|
centerValue: computed('size', function () {
|
|
return this.size / 2;
|
|
}),
|
|
r: computed('size', 'strokeWidth', function () {
|
|
return (this.size - this.strokeWidth) / 2;
|
|
}),
|
|
c: computed('r', function () {
|
|
return 2 * Math.PI * this.r;
|
|
}),
|
|
dashArrayOffset: computed('c', 'progressDecimal', function () {
|
|
return this.c * (1 - this.progressDecimal);
|
|
}),
|
|
});
|