/*global Raphael, d3 */ /*! * Parallel的兼容性定义 */ ;(function (name, definition) { if (typeof define === 'function') { // Module define(definition); } else { // Assign to common namespaces or simply the global object (window) this[name] = definition(function (id) { return this[id];}); } })('Parallel', function (require) { var DataV = require('DataV'); var Axis = require('Axis'); var Brush = require('Brush'); /** * 构造函数 * @param {Node|String|jQuery} node 容器节点,文档节点、ID或者通过jQuery查询出来的对象 */ var Parallel = DataV.extend(DataV.Chart, { initialize: function (node, options) { this.type = "Parallel"; this.node = this.checkContainer(node); this.defaults = {}; // Properties this.allDimensions = []; this.dimensions = []; this.dimensionType = {}; this.dimensionDomain = {}; this.dimensionExtent = {}; // Canvas this.defaults.width = 750; this.defaults.height = 500; this.defaults.marginWidth = [20, 20, 20, 20]; this.defaults.backgroundAttr = {"fill": "none", "stroke": "#ccc", "stroke-opacity": 0.4}; this.defaults.foregroundAttr = {"fill": "none", "stroke": "steelblue", "stroke-opacity": 0.7}; this.defaults.domainAttr = {"stroke": "#000"}; this.defaults.tickAttr = {"stroke": "#000"}; this.defaults.tickTextAttr = {}; this.defaults.titleAttr = {}; this.customEvent = { "brushstart": function () {}, "brushend": function () {}, "brush": function () {} }; this.setOptions(options); this.createCanvas(); } }); /** * choose dimension * @param {array} dimen Array of column names */ Parallel.prototype.chooseDimensions = function (dimen) { var conf = this.defaults; this.dimensions = []; for (var i = 0, l = dimen.length; i end) { temp = start; start = end; end = temp; } start = Math.max(0, start + 0.5 - 0.5); end = Math.min(this.dimensionDomain[dimen].length, end + 0.5 + 0.5); return [start, end]; }; /*! * create canvas */ Parallel.prototype.createCanvas = function () { var conf = this.defaults; this.node.style.position = "relative"; this.canvas = Raphael(this.node, conf.width, conf.height); //console.log(this.canvas); }; /*! * get color */ Parallel.prototype.getColor = function (colorJson) { var colorM = DataV.getColor(); var color; var colorStyle = colorJson ? colorJson : {}; var colorMode = colorStyle.mode ? colorStyle.mode : 'default'; switch (colorMode){ case "gradient": var index = colorJson.index ? colorJson.index : 0; index = index <0 ? 0 : (index>colorM.length-1 ? colorM.length-1 : index); color = d3.interpolateRgb.apply(null, [colorM[index][0],colorM[index][1]]); break; case "random": case "default": var ratio = colorStyle.ratio ? colorStyle.ratio : 0; if(ratio <0 ){ratio=0;} if(ratio > 1) { ratio =1;} var colorArray =[]; for (var i=0, l=colorM.length; i