Спасибо, Болдевин.
Чтобы ответить на свой вопрос, я нашел следующее решение:
В шаблоне можно использовать следующий путь:
<path id="progress" fill="none" stroke="#ffffff" d="" stroke-width="10"/>
И используйте эту функцию из Raphael js-framework для обновления x и y. Если итоговое значение равно 100, значение представляет собой процент выполнения:
function updateState (value, total, R) {
var center;
var alpha = 360 / total * value,
a = (90 - alpha) * Math.PI / 180,
x = 300 + R * Math.cos(a),
y = 300 - R * Math.sin(a),
path;
if (total == value) {
path = "M"+ 300 +","+ (300 - R) +" A"+ R+","+ R+","+ 0+","+ 1+","+ 1+","+ 299.99+","+ 300 - R;
} else {
if(alpha > 180) {
center = 1;
} else {
center = 0;
}
path = "M"+ 300+","+ (300 - R) +" A"+ R+","+ R+","+ 0+"," + center +","+ 1+","+ x+","+ y;
}
return path;
}
Возвращаемая переменная пути - это значение атрибута d в элементе пути.
Это прекрасно работает, если ваш браузер поддерживает SVG Full с командой Elliptical Arc для элемента path. В моем случае у меня только SVG крошечный, так что это не будет работать для меня :(