Check that all elements of a series are convertable to floats before casting individual elements.

This commit is contained in:
David Miller
2013-08-01 13:06:28 +01:00
parent d1b04a4d10
commit c34d8c681c

View File

@@ -312,21 +312,28 @@ my.Flot = Backbone.View.extend({
_.each(this.state.attributes.series, function(field) { _.each(this.state.attributes.series, function(field) {
var points = []; var points = [];
var fieldLabel = self.model.fields.get(field).get('label'); var fieldLabel = self.model.fields.get(field).get('label');
_.each(self.model.records.models, function(doc, index) {
var x = doc.getFieldValueUnrendered(xfield);
if (isDateTime) { var raw = _.map(self.model.records.models, function(doc, index){ return doc.getFieldValueUnrendered(xfield) });
// cast to string as Date(1990) produces 1970 date but Date('1990') produces 1/1/1990
var _date = moment(String(x)); if (isDateTime){
if (_date.isValid()) { var cast = function(x){
x = _date.toDate().getTime(); var _date = moment(String(x));
} if (_date.isValid()) {
} else if (typeof x === 'string') { x = _date.toDate().getTime();
x = parseFloat(x); }
if (isNaN(x)) { // assume this is a string label return x
x = index; }
self.xvaluesAreIndex = true; } else if (_.all(raw, function(x){ return !isNaN(parseFloat(x)) })){
} var cast = function(x){ return parseFloat(x) }
} else {
self.xvaluesAreIndex = true
}
_.each(self.model.records.models, function(doc, index) {
if(self.xvaluesAreIndex){
var x = index;
}else{
var x = cast(doc.getFieldValueUnrendered(xfield));
} }
var yfield = self.model.fields.get(field); var yfield = self.model.fields.get(field);