mirror of
https://github.com/status-im/fathom.git
synced 2025-03-01 19:40:27 +00:00
clean-up state & props delegation. destroy pikaday on unmount.
This commit is contained in:
parent
b414f10348
commit
e7e693a71c
10
assets/js/components/Chart.js
vendored
10
assets/js/components/Chart.js
vendored
@ -82,15 +82,14 @@ class Chart extends Component {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
componentWillReceiveProps(newProps, prevState) {
|
componentWillReceiveProps(newProps) {
|
||||||
if(newProps.before == prevState.before && newProps.after == prevState.after) {
|
if(newProps.before == this.props.before && newProps.after == this.props.after) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.fetchData(newProps.before, newProps.after);
|
this.fetchData(newProps.before, newProps.after);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@bind
|
@bind
|
||||||
redrawChart() {
|
redrawChart() {
|
||||||
var data = this.state.data;
|
var data = this.state.data;
|
||||||
@ -202,9 +201,8 @@ class Chart extends Component {
|
|||||||
this.setState({
|
this.setState({
|
||||||
loading: false,
|
loading: false,
|
||||||
data: prepareData(after, before, d),
|
data: prepareData(after, before, d),
|
||||||
});
|
})
|
||||||
|
this.redrawChart()
|
||||||
this.redrawChart();
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,8 +16,8 @@ class CountWidget extends Component {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
componentWillReceiveProps(newProps, prevState) {
|
componentWillReceiveProps(newProps, newState) {
|
||||||
if(newProps.before == prevState.before && newProps.after == prevState.after) {
|
if(newProps.before == this.props.before && newProps.after == this.props.after) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,6 +33,8 @@ class DatePicker extends Component {
|
|||||||
period: props.value,
|
period: props.value,
|
||||||
before: 0,
|
before: 0,
|
||||||
after: 0,
|
after: 0,
|
||||||
|
startDate: null,
|
||||||
|
endDate: null,
|
||||||
}
|
}
|
||||||
|
|
||||||
this.updateDatesFromPeriod(this.state.period)
|
this.updateDatesFromPeriod(this.state.period)
|
||||||
@ -89,17 +91,21 @@ class DatePicker extends Component {
|
|||||||
endDate: endDate,
|
endDate: endDate,
|
||||||
before: before,
|
before: before,
|
||||||
after: after,
|
after: after,
|
||||||
picking: '',
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if(!this.timeout) {
|
||||||
|
this.timeout = window.setTimeout(() => {
|
||||||
this.props.onChange(this.state);
|
this.props.onChange(this.state);
|
||||||
|
this.timeout = null;
|
||||||
|
}, 5)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@bind
|
@bind
|
||||||
setPeriod(e) {
|
setPeriod(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
let newPeriod = e.target.dataset.value;
|
let newPeriod = e.target.getAttribute('data-value');
|
||||||
if( newPeriod === this.state.period) {
|
if( newPeriod === this.state.period) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@ class Notification extends Component {
|
|||||||
this.timeout = 0
|
this.timeout = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
componentWillReceiveProps(newProps, prevState) {
|
componentWillReceiveProps(newProps) {
|
||||||
if(newProps.message === this.state.message) {
|
if(newProps.message === this.state.message) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -14,14 +14,17 @@ class Pikadayer extends Component {
|
|||||||
|
|
||||||
componentWillReceiveProps(newProps) {
|
componentWillReceiveProps(newProps) {
|
||||||
// make sure pikaday updates if we set a date using one of our presets
|
// make sure pikaday updates if we set a date using one of our presets
|
||||||
if(newProps.value !== this.state.value) {
|
if(this.pikaday && newProps.value !== this.props.value) {
|
||||||
this.state.value = newProps.value;
|
this.pikaday.setDate(newProps.value, true)
|
||||||
this.pikaday.setDate(newProps.value, false);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
componentWillUnmount() {
|
||||||
|
this.pikaday.destroy()
|
||||||
|
}
|
||||||
|
|
||||||
render(props) {
|
render(props) {
|
||||||
return <input {...props} />
|
return <input />
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,34 +16,26 @@ class Table extends Component {
|
|||||||
records: [],
|
records: [],
|
||||||
limit: 15,
|
limit: 15,
|
||||||
loading: true,
|
loading: true,
|
||||||
before: props.before,
|
|
||||||
after: props.after,
|
|
||||||
total: 0,
|
total: 0,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
componentWillReceiveProps(newProps, prevState) {
|
componentWillReceiveProps(newProps) {
|
||||||
if(newProps.before == prevState.before && newProps.after == prevState.after) {
|
if(newProps.before == this.props.before && newProps.after == this.props.after) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.setState({
|
this.fetchRecords(newProps.before, newProps.after);
|
||||||
before: newProps.before,
|
|
||||||
after: newProps.after,
|
|
||||||
});
|
|
||||||
this.fetchRecords();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@bind
|
@bind
|
||||||
fetchRecords() {
|
fetchRecords(before, after) {
|
||||||
this.setState({ loading: true });
|
this.setState({ loading: true });
|
||||||
let before = this.state.before;
|
|
||||||
let after = this.state.after;
|
|
||||||
|
|
||||||
Client.request(`${this.props.endpoint}?before=${this.state.before}&after=${this.state.after}&limit=${this.state.limit}`)
|
Client.request(`${this.props.endpoint}?before=${before}&after=${after}&limit=${this.state.limit}`)
|
||||||
.then((d) => {
|
.then((d) => {
|
||||||
// request finished; check if timestamp range is still the one user wants to see
|
// request finished; check if timestamp range is still the one user wants to see
|
||||||
if( this.state.before != before || this.state.after != after ) {
|
if( this.props.before != before || this.props.after != after ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -54,7 +46,7 @@ class Table extends Component {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// fetch totals too
|
// fetch totals too
|
||||||
Client.request(`${this.props.endpoint}/pageviews?before=${this.state.before}&after=${this.state.after}`)
|
Client.request(`${this.props.endpoint}/pageviews?before=${before}&after=${after}`)
|
||||||
.then((d) => {
|
.then((d) => {
|
||||||
this.setState({
|
this.setState({
|
||||||
total: d
|
total: d
|
||||||
|
@ -21,9 +21,9 @@ class App extends Component {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render(props, state) {
|
||||||
// logged-in
|
// logged-in
|
||||||
if( this.state.authenticated ) {
|
if( state.authenticated ) {
|
||||||
return <Dashboard onLogout={this.toggleAuth} />
|
return <Dashboard onLogout={this.toggleAuth} />
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user