Skip to content

Commit 39a86b2

Browse files
author
Eric Frick
committed
Added animations to gauge
1 parent ffc5c65 commit 39a86b2

File tree

2 files changed

+37
-20
lines changed

2 files changed

+37
-20
lines changed

src/components/CircularGauge/CircularGauge.js

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,13 @@ class CircularGauge extends React.Component {
1818
svg.append("g")
1919
.attr("transform", "translate(" + this.props.width / 2 + "," + this.props.height / 2 + ")");
2020

21+
d3.select(this._node).select("g").append("path")
22+
.attr("class", "arc chart-empty");
23+
24+
d3.select(this._node).select("g").append("path")
25+
.attr("class", "arc chart-filled");
26+
27+
2128
this._redraw(radians);
2229
}
2330

@@ -49,7 +56,7 @@ class CircularGauge extends React.Component {
4956
_redraw(radians) {
5057
console.log("CircularGauge._redraw()", radians);
5158

52-
d3.select(this._node).select("g").selectAll("path").remove();
59+
// d3.select(this._node).select("g").selectAll("path").remove();
5360
d3.select(this._node).select("g").selectAll("text").remove();
5461

5562
var arc1 = d3.arc()
@@ -63,17 +70,21 @@ class CircularGauge extends React.Component {
6370
.innerRadius( (this.props.width / 2) * 0.7)
6471
.outerRadius(this.props.width / 2)
6572
.padAngle(0.02)
66-
.startAngle(radians)
73+
.startAngle(- (Math.PI / 2))
6774
.endAngle(Math.PI / 2);
6875

69-
d3.select(this._node).select("g").append("path")
70-
.attr("class", "arc chart-filled")
71-
.attr("d", arc1);
76+
var foreground = d3.select(this._node).select("g").select(".chart-filled");
77+
var background = d3.select(this._node).select("g").select(".chart-empty");
7278

73-
d3.select(this._node).select("g").append("path")
74-
.attr("class", "arc chart-empty")
75-
.attr("d", arc2);
79+
foreground.transition()
80+
.duration(1200)
81+
.attrTween("d", () => {
82+
return (d) => {
83+
return arc1.endAngle(d3.interpolate(- (Math.PI / 2), radians)(d))();
84+
}
85+
});
7686

87+
d3.select(this._node).select("g").select(".chart-empty").attr("d", arc2);
7788
d3.select(this._node).select("g").append("text")
7889
.attr("transform", "translate(-30, -5)")
7990
.text(this.props.value + "%");

src/index.js

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import TextField from './components/TextField';
44
import Button from './components/Button';
55
import CircularGauge from './components/CircularGauge';
66
import Notification from './components/Notification';
7+
import Dropdown from './components/Dropdown';
78
import './styles/base.scss';
89

910
let app = document.getElementById('app');
@@ -15,14 +16,20 @@ class Test extends React.Component {
1516

1617
this.state = {
1718
gauge: {
18-
value: 10
19+
value1: 40,
20+
value2: 20,
21+
value3: 60,
22+
value4: 90
1923
}
2024
}
2125

2226
setInterval(() => {
2327
this.setState({
2428
gauge: {
25-
value: (Math.ceil(Math.random() * 100))
29+
value1: (Math.ceil(Math.random() * 100)),
30+
value2: (Math.ceil(Math.random() * 100)),
31+
value3: (Math.ceil(Math.random() * 100)),
32+
value4: (Math.ceil(Math.random() * 100))
2633
}
2734
});
2835

@@ -32,9 +39,12 @@ class Test extends React.Component {
3239

3340
render() {
3441
return (
35-
<div>
36-
<CircularGauge width={200} height={200} value={this.state.gauge.value} />
37-
</div>
42+
<span>
43+
<CircularGauge width={200} height={200} value={this.state.gauge.value1} />
44+
<CircularGauge width={200} height={200} value={this.state.gauge.value2} />
45+
<CircularGauge width={200} height={200} value={this.state.gauge.value3} />
46+
<CircularGauge width={200} height={200} value={this.state.gauge.value4} />
47+
</span>
3848
)
3949
}
4050
}
@@ -58,14 +68,10 @@ ReactDOM.render(
5868
<Test />
5969
<br />
6070
<p>
61-
Here's just a boring plain old paragraph with some text in it
6271
Veniam magna consequat pariatur ullamco quis duis tempor ex anim in pariatur est. Labore sint elit elit et dolore proident proident dolore aliqua incididunt enim. Magna aliquip Lorem sit cupidatat anim velit velit esse. Qui velit amet ex ut labore adipisicing eiusmod non aliqua consequat quis cillum nisi. Consectetur sint in irure voluptate dolore dolor nisi ut ea aute. Amet anim pariatur consectetur anim do aute sit nisi cillum esse minim ipsum est velit.
63-
64-
Deserunt incididunt labore et dolor fugiat mollit dolore officia ea excepteur. Qui ut irure consectetur proident occaecat tempor sunt anim ex proident nisi. Ut veniam anim eu non anim reprehenderit ea deserunt. Nulla nostrud aute dolor incididunt aute dolore consequat ex sint voluptate. Officia irure pariatur velit consectetur velit deserunt voluptate consectetur labore laborum non culpa minim. Sint qui aliqua consectetur aute labore Lorem excepteur esse incididunt sit esse eiusmod ipsum do reprehenderit eiusmod.
65-
66-
Quis est laboris enim fugiat amet duis velit pariatur dolor. Exercitation occaecat ea id est enim anim enim nostrud. Fugiat dolore sit incididunt eiusmod fugiat ex minim est. Laborum aute culpa anim nostrud enim laborum consectetur labore sit cupidatat esse Lorem. Non sit nostrud consectetur ut adipisicing laborum quis irure veniam quis irure proident consequat.
67-
68-
Est incididunt nulla elit eiusmod do dolore cupidatat eiusmod mollit labore ex do aliqua nulla dolor. Consequat ullamco voluptate amet occaecat cillum duis deserunt ex nostrud ad. Culpa irure ea mollit tempor non sint eiusmod dolor ex adipisicing sint. Consequat veniam cupidatat culpa do deserunt et nisi consequat occaecat nostrud elit occaecat. Ea voluptate consectetur fugiat occaecat aliqua in minim ipsum aliquip duis fugiat do velit culpa est. Qui tempor ad officia cupidatat Lorem adipisicing sint duis irure amet commodo est amet aliquip est aute.
72+
Deserunt incididunt labore et dolor fugiat mollit dolore officia ea excepteur. Qui ut irure consectetur proident occaecat tempor sunt anim ex proident nisi. Ut veniam anim eu non anim reprehenderit ea deserunt. Nulla nostrud aute dolor incididunt aute dolore consequat ex sint voluptate. Officia irure pariatur velit consectetur velit deserunt voluptate consectetur labore laborum non culpa minim. Sint qui aliqua consectetur aute labore Lorem excepteur esse incididunt sit esse eiusmod ipsum do reprehenderit eiusmod.
73+
Quis est laboris enim fugiat amet duis velit pariatur dolor. Exercitation occaecat ea id est enim anim enim nostrud. Fugiat dolore sit incididunt eiusmod fugiat ex minim est. Laborum aute culpa anim nostrud enim laborum consectetur labore sit cupidatat esse Lorem. Non sit nostrud consectetur ut adipisicing laborum quis irure veniam quis irure proident consequat.
74+
Est incididunt nulla elit eiusmod do dolore cupidatat eiusmod mollit labore ex do aliqua nulla dolor. Consequat ullamco voluptate amet occaecat cillum duis deserunt ex nostrud ad. Culpa irure ea mollit tempor non sint eiusmod dolor ex adipisicing sint. Consequat veniam cupidatat culpa do deserunt et nisi consequat occaecat nostrud elit occaecat. Ea voluptate consectetur fugiat occaecat aliqua in minim ipsum aliquip duis fugiat do velit culpa est. Qui tempor ad officia cupidatat Lorem adipisicing sint duis irure amet commodo est amet aliquip est aute.
6975
</p>
7076
<Notification message="A longer notification you received some email" open={true} duration={2} />
7177
</div>,

0 commit comments

Comments
 (0)