Line.prototype.setSource = function (source, map) { map = this.map(map); var dataTable; if (DataV.detect(source) === 'Table_WITH_HEAD') { dataTable = DataV.collectionify(source); } else { dataTable = source; } var lines = _.groupBy(dataTable, map.line); var linesData = []; var maxList = [], minList = []; this.maxLength = Math.max.apply(null, _.map(lines, function (line) { return line.length; })); var titles; _.forEach(lines, function (points, name) { // initialize the nodes of line var line = {name: name, id: name, data: [], tags: []}; line.data = _.pluck(points, map.value); titles = _.pluck(points, map.x); linesData.push(line); maxList[name] = Math.max.apply(null, line.data); minList[name] = Math.min.apply(null, line.data); }); var conf = this.defaults; var margin = conf.margin; this.xWidth = conf.width - margin[1] - margin[3]; this.yHeight = conf.height - margin[0] - margin[2]; this.titles = titles; this.linesData = linesData; this.max = Math.max.apply(null, _.values(maxList)); this.min = Math.min.apply(null, _.values(minList)); this.maxList = maxList; this.minList = minList; this.chosen = false; this.chosenNum = -1; };
Bar.prototype.setSource = function (source, map) { var conf = this.defaults; map = this.map(map); var dataTable; if (DataV.detect(source) === 'Table_WITH_HEAD') { dataTable = DataV.collectionify(source); } else { dataTable = source; } this.bars = _.groupBy(dataTable, map.bar); this.barCount = _.keys(this.bars).length; conf.yAxisData = _.pluck(_.first(_.values(this.bars)), map.x); conf.yTickNumber = Math.min(conf.yAxisData.length, conf.yTickNumber); // 横坐标的范围 conf.xExtent = d3.extent(dataTable, function (item) { return item[map.value]; }); // 横坐标基线值 if (conf.xBase !== undefined) { conf.xExtent.push(conf.xBase); conf.xExtent = d3.extent(conf.xExtent); } };