Merge pull request #367 from davidmiller/casting
Cast elements in a series consistently
This commit is contained in:
@@ -313,21 +313,33 @@ 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){
|
if (isDateTime){
|
||||||
// cast to string as Date(1990) produces 1970 date but Date('1990') produces 1/1/1990
|
var cast = function(x){
|
||||||
var _date = moment(String(x));
|
var _date = moment(String(x));
|
||||||
if (_date.isValid()) {
|
if (_date.isValid()) {
|
||||||
x = _date.toDate().getTime();
|
x = _date.toDate().getTime();
|
||||||
}
|
}
|
||||||
} else if (typeof x === 'string') {
|
return x
|
||||||
x = parseFloat(x);
|
|
||||||
if (isNaN(x)) { // assume this is a string label
|
|
||||||
x = index;
|
|
||||||
self.xvaluesAreIndex = true;
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
var raw = _.map(self.model.records.models,
|
||||||
|
function(doc, index){
|
||||||
|
return doc.getFieldValueUnrendered(xfield)
|
||||||
|
});
|
||||||
|
|
||||||
|
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);
|
||||||
|
|||||||
Reference in New Issue
Block a user