Skip to content

Commit

Permalink
Merge pull request #2448 from jeff1evesque/feature-2447
Browse files Browse the repository at this point in the history
#2447: Reduce redundant fetch 'if (this.mounted)', add spinner
  • Loading branch information
jeff1evesque committed Apr 10, 2016
2 parents 96b354e + 5ecebd9 commit 887bbf3
Show file tree
Hide file tree
Showing 4 changed files with 92 additions and 48 deletions.
22 changes: 10 additions & 12 deletions src/jsx/import/input-data/supply_predictors.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -94,19 +94,17 @@ var SupplyPredictors = React.createClass({
};

// asynchronous callback: ajax 'done' promise
ajaxCaller(function (asynchObject) {
// Append to DOM
if (this.mounted) {
if (this.mounted) {
ajaxCaller(function (asynchObject) {
// Append to DOM
if (asynchObject && asynchObject.error) {
this.setState({ajax_done_error: asynchObject.error});
} else if (asynchObject) {
this.setState({ajax_done_options: asynchObject});
}
}
}.bind(this),
// asynchronous callback: ajax 'fail' promise
function (asynchStatus, asynchError) {
if (this.mounted) {
}.bind(this),
// asynchronous callback: ajax 'fail' promise
function (asynchStatus, asynchError) {
if (asynchStatus) {
this.setState({ajax_fail_status: asynchStatus});
console.log('Error Status: ' + asynchStatus);
Expand All @@ -115,10 +113,10 @@ var SupplyPredictors = React.createClass({
this.setState({ajax_fail_error: asynchError});
console.log('Error Thrown: ' + asynchError);
}
}
}.bind(this),
// pass ajax arguments
ajaxArguments);
}.bind(this),
// pass ajax arguments
ajaxArguments);
}
},
componentWillUnmount() {
this.mounted = false;
Expand Down
39 changes: 27 additions & 12 deletions src/jsx/import/session-type/data_append.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import SupplyDatasetFile from '../input-data/supply_dataset_file.jsx';
import SupplyDatasetUrl from '../input-data/supply_dataset_url.jsx';
import checkValidString from './../validator/valid_string.js';
import checkValidInt from './../validator/valid_int.js';
import Spinner from './../general/spinner.jsx';

var DataAppend = React.createClass({
// initial 'state properties'
Expand Down Expand Up @@ -76,6 +77,13 @@ var DataAppend = React.createClass({
var Dataset = this.getSupplyDataset(inputDatasetType, inputSessionId);
var options = this.state.ajax_done_options;

if (this.state.display_spinner) {
var AjaxSpinner = Spinner;
}
else {
var AjaxSpinner = 'span';
}

return(
<fieldset className='fieldset-session-data-upload'>
<legend>Data Upload</legend>
Expand Down Expand Up @@ -115,6 +123,8 @@ var DataAppend = React.createClass({
</fieldset>

<Dataset onChange={this.displaySubmit}/>

<AjaxSpinner />
</fieldset>
);
},
Expand Down Expand Up @@ -142,20 +152,23 @@ var DataAppend = React.createClass({
'data': null
};

// boolean to show ajax spinner
this.setState({display_spinner: true});

// asynchronous callback: ajax 'done' promise
ajaxCaller(function (asynchObject) {
// Append to DOM
if (this.mounted) {
if (this.mounted) {
ajaxCaller(function (asynchObject) {
// Append to DOM
if (asynchObject && asynchObject.error) {
this.setState({ajax_done_error: asynchObject.error});
} else if (asynchObject) {
this.setState({ajax_done_options: asynchObject});
}
}
}.bind(this),
// asynchronous callback: ajax 'fail' promise
function (asynchStatus, asynchError) {
if (this.mounted) {
// boolean to hide ajax spinner
this.setState({display_spinner: false});
}.bind(this),
// asynchronous callback: ajax 'fail' promise
function (asynchStatus, asynchError) {
if (asynchStatus) {
this.setState({ajax_fail_status: asynchStatus});
console.log('Error Status: ' + asynchStatus);
Expand All @@ -164,10 +177,12 @@ var DataAppend = React.createClass({
this.setState({ajax_fail_error: asynchError});
console.log('Error Thrown: ' + asynchError);
}
}
}.bind(this),
// pass ajax arguments
ajaxArguments);
// boolean to hide ajax spinner
this.setState({display_spinner: false});
}.bind(this),
// pass ajax arguments
ajaxArguments);
}
},
componentWillUnmount() {
this.mounted = false;
Expand Down
40 changes: 28 additions & 12 deletions src/jsx/import/session-type/model_generate.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

import checkValidString from './../validator/valid_string.js';
import checkValidInt from './../validator/valid_int.js';
import Spinner from './../general/spinner.jsx';

var ModelGenerate = React.createClass({
// initial 'state properties'
Expand Down Expand Up @@ -69,6 +70,14 @@ var ModelGenerate = React.createClass({
// triggered when 'state properties' change
render: function(){
var options = this.state.ajax_done_options;

if (this.state.display_spinner) {
var AjaxSpinner = Spinner;
}
else {
var AjaxSpinner = 'span';
}

return(
<fieldset className='fieldset-session-generate'>
<legend>Generate Model</legend>
Expand Down Expand Up @@ -106,6 +115,8 @@ var ModelGenerate = React.createClass({

</select>
</fieldset>

<AjaxSpinner />
</fieldset>
);
},
Expand All @@ -121,20 +132,23 @@ var ModelGenerate = React.createClass({
'data': null
};

// boolean to show ajax spinner
this.setState({display_spinner: true});

// asynchronous callback: ajax 'done' promise
ajaxCaller(function (asynchObject) {
// Append to DOM
if (this.mounted) {
if (this.mounted) {
ajaxCaller(function (asynchObject) {
// Append to DOM
if (asynchObject && asynchObject.error) {
this.setState({ajax_done_error: asynchObject.error});
} else if (asynchObject) {
this.setState({ajax_done_options: asynchObject});
}
}
}.bind(this),
// asynchronous callback: ajax 'fail' promise
function (asynchStatus, asynchError) {
if (this.mounted) {
// boolean to hide ajax spinner
this.setState({display_spinner: false});
}.bind(this),
// asynchronous callback: ajax 'fail' promise
function (asynchStatus, asynchError) {
if (asynchStatus) {
this.setState({ajax_fail_status: asynchStatus});
console.log('Error Status: ' + asynchStatus);
Expand All @@ -143,10 +157,12 @@ var ModelGenerate = React.createClass({
this.setState({ajax_fail_error: asynchError});
console.log('Error Thrown: ' + asynchError);
}
}
}.bind(this),
// pass ajax arguments
ajaxArguments);
// boolean to hide ajax spinner
this.setState({display_spinner: false});
}.bind(this),
// pass ajax arguments
ajaxArguments);
}
},
componentWillUnmount() {
this.mounted = false;
Expand Down
39 changes: 27 additions & 12 deletions src/jsx/import/session-type/model_predict.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

import SupplyPredictors from '../input-data/supply_predictors.jsx';
import checkValidInt from './../validator/valid_int.js';
import Spinner from './../general/spinner.jsx';

var ModelPredict = React.createClass({
// initial 'state properties'
Expand Down Expand Up @@ -61,6 +62,13 @@ var ModelPredict = React.createClass({
var Predictors = this.getSupplyPredictors(inputModelId);
var options = this.state.ajax_done_options;

if (this.state.display_spinner) {
var AjaxSpinner = Spinner;
}
else {
var AjaxSpinner = 'span';
}

return(
<fieldset className='fieldset-session-predict'>
<legend>Analysis</legend>
Expand Down Expand Up @@ -93,6 +101,8 @@ var ModelPredict = React.createClass({
onChange={this.displaySubmit}
selectedModelId={this.state.value_model_id}
/>

<AjaxSpinner />
</fieldset>
);
},
Expand All @@ -117,20 +127,23 @@ var ModelPredict = React.createClass({
'data': null
};

// boolean to show ajax spinner
this.setState({display_spinner: true});

// asynchronous callback: ajax 'done' promise
ajaxCaller(function (asynchObject) {
// Append to DOM
if (this.mounted) {
if (this.mounted) {
ajaxCaller(function (asynchObject) {
// Append to DOM
if (asynchObject && asynchObject.error) {
this.setState({ajax_done_error: asynchObject.error});
} else if (asynchObject) {
this.setState({ajax_done_options: asynchObject});
}
}
}.bind(this),
// asynchronous callback: ajax 'fail' promise
function (asynchStatus, asynchError) {
if (this.mounted) {
// boolean to hide ajax spinner
this.setState({display_spinner: false});
}.bind(this),
// asynchronous callback: ajax 'fail' promise
function (asynchStatus, asynchError) {
if (asynchStatus) {
this.setState({ajax_fail_status: asynchStatus});
console.log('Error Status: ' + asynchStatus);
Expand All @@ -139,10 +152,12 @@ var ModelPredict = React.createClass({
this.setState({ajax_fail_error: asynchError});
console.log('Error Thrown: ' + asynchError);
}
}
}.bind(this),
// pass ajax arguments
ajaxArguments);
// boolean to hide ajax spinner
this.setState({display_spinner: false});
}.bind(this),
// pass ajax arguments
ajaxArguments);
}
},
componentWillUnmount() {
this.mounted = false;
Expand Down

0 comments on commit 887bbf3

Please sign in to comment.