UNPKG

38.5 kBSource Map (JSON)View Raw
1{"version":3,"file":"adjust.js","sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 3d42199d1722e219cc93","webpack:///./node_modules/@antv/util/lib/each.js","webpack:///./node_modules/@antv/util/lib/type/isArray.js","webpack:///./src/base.js","webpack:///./node_modules/@antv/util/lib/array/values.js","webpack:///./node_modules/@antv/util/lib/mix.js","webpack:///./node_modules/@antv/util/lib/array/merge.js","webpack:///./node_modules/@antv/util/lib/type/isType.js","webpack:///./node_modules/@antv/util/lib/type/isNil.js","webpack:///./src/mixin/adjust.js","webpack:///./node_modules/@antv/util/lib/type/isFunction.js","webpack:///./src/index.js","webpack:///./src/dodge.js","webpack:///./node_modules/@antv/util/lib/type/isObject.js","webpack:///./src/stack.js","webpack:///./src/mixin/dodge.js","webpack:///./node_modules/@antv/util/lib/group.js","webpack:///./node_modules/@antv/util/lib/groupToMap.js","webpack:///./node_modules/@antv/util/lib/groupBy.js","webpack:///./src/mixin/stack.js","webpack:///./src/jitter.js","webpack:///./src/symmetric.js","webpack:///./node_modules/@antv/util/lib/math/maxBy.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"adjust\"] = factory();\n\telse\n\t\troot[\"adjust\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 10);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 3d42199d1722e219cc93","var isObject = require('./type/isObject');\nvar isArray = require('./type/isArray');\n\nvar each = function each(elements, func) {\n if (!elements) {\n return;\n }\n var rst = void 0;\n if (isArray(elements)) {\n for (var i = 0, len = elements.length; i < len; i++) {\n rst = func(elements[i], i);\n if (rst === false) {\n break;\n }\n }\n } else if (isObject(elements)) {\n for (var k in elements) {\n if (elements.hasOwnProperty(k)) {\n rst = func(elements[k], k);\n if (rst === false) {\n break;\n }\n }\n }\n }\n};\n\nmodule.exports = each;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@antv/util/lib/each.js\n// module id = 0\n// module chunks = 0","var isType = require('./isType');\n\nvar isArray = Array.isArray ? Array.isArray : function (value) {\n return isType(value, 'Array');\n};\n\nmodule.exports = isArray;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@antv/util/lib/type/isArray.js\n// module id = 1\n// module chunks = 0","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar mix = require('@antv/util/lib/mix');\n\nvar Adjust = function () {\n Adjust.prototype._initDefaultCfg = function _initDefaultCfg() {\n this.adjustNames = ['x', 'y']; // 调整的维度,默认,x,y都做调整\n };\n\n function Adjust(cfg) {\n _classCallCheck(this, Adjust);\n\n this._initDefaultCfg();\n mix(this, cfg);\n }\n\n /**\n * @override\n */\n\n\n Adjust.prototype.processAdjust = function processAdjust() /* dataArray */{};\n\n return Adjust;\n}();\n\nmodule.exports = Adjust;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/base.js\n// module id = 2\n// module chunks = 0","var each = require('../each');\nvar isNil = require('../type/isNil');\nvar isArray = require('../type/isArray');\n\nvar values = function values(data, name) {\n var rst = [];\n var tmpMap = {};\n for (var i = 0; i < data.length; i++) {\n var obj = data[i];\n var value = obj[name];\n if (!isNil(value)) {\n if (!isArray(value)) {\n value = [value];\n }\n each(value, function (val) {\n if (!tmpMap[val]) {\n rst.push(val);\n tmpMap[val] = true;\n }\n });\n }\n }\n return rst;\n};\n\nmodule.exports = values;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@antv/util/lib/array/values.js\n// module id = 3\n// module chunks = 0","function _mix(dist, obj) {\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && key !== 'constructor' && obj[key] !== undefined) {\n dist[key] = obj[key];\n }\n }\n}\n\nvar mix = function mix(dist, src1, src2, src3) {\n if (src1) _mix(dist, src1);\n if (src2) _mix(dist, src2);\n if (src3) _mix(dist, src3);\n return dist;\n};\n\nmodule.exports = mix;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@antv/util/lib/mix.js\n// module id = 4\n// module chunks = 0","var merge = function merge(dataArray) {\n var rst = [];\n for (var i = 0; i < dataArray.length; i++) {\n rst = rst.concat(dataArray[i]);\n }\n return rst;\n};\n\nmodule.exports = merge;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@antv/util/lib/array/merge.js\n// module id = 5\n// module chunks = 0","var toString = {}.toString;\nvar isType = function isType(value, type) {\n return toString.call(value) === '[object ' + type + ']';\n};\n\nmodule.exports = isType;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@antv/util/lib/type/isType.js\n// module id = 6\n// module chunks = 0","// isFinite,\nvar isNil = function isNil(value) {\n /**\n * isNil(null) => true\n * isNil() => true\n */\n return value === null || value === undefined;\n};\n\nmodule.exports = isNil;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@antv/util/lib/type/isNil.js\n// module id = 7\n// module chunks = 0","var DEFAULT_Y = 0; // 默认的y的值\nvar each = require('@antv/util/lib/each');\nvar ArrayUtil = {\n values: require('@antv/util/lib/array/values')\n};\nmodule.exports = {\n /**\n * 对应的维度是否可以调整\n * @protected\n * @param {String} dimName 可以调整的维度 x,y\n * @return {Boolean} 是否可以调整\n */\n isAdjust: function isAdjust(dimName) {\n return this.adjustNames.indexOf(dimName) >= 0;\n },\n\n /**\n * @protected\n * 获取可调整度量对应的值\n * @param {Frame} mergeData 数据\n * @return {Object} 值的映射\n */\n _getDimValues: function _getDimValues(mergeData) {\n var self = this;\n var valuesMap = {};\n var dims = [];\n if (self.xField && self.isAdjust('x')) {\n dims.push(self.xField);\n }\n if (self.yField && self.isAdjust('y')) {\n dims.push(self.yField);\n }\n each(dims, function (dim) {\n var values = ArrayUtil.values(mergeData, dim);\n values.sort(function (v1, v2) {\n return v1 - v2;\n });\n valuesMap[dim] = values;\n });\n if (!self.yField && self.isAdjust('y')) {\n // 只有一维的情况下,同时调整y\n var dim = 'y';\n var values = [DEFAULT_Y, 1]; // 默认分布在y轴的 0.1 与 0.2 之间\n valuesMap[dim] = values;\n }\n return valuesMap;\n },\n adjustData: function adjustData(dataArray, mergeData) {\n var self = this;\n var valuesMap = self._getDimValues(mergeData);\n each(dataArray, function (data, index) {\n // 遍历所有数据集合\n each(valuesMap, function (values, dim) {\n // 根据不同的度量分别调整位置\n self.adjustDim(dim, values, data, dataArray.length, index);\n });\n });\n },\n getAdjustRange: function getAdjustRange(dim, key, values) {\n var self = this;\n var index = values.indexOf(key);\n var length = values.length;\n var pre = void 0;\n var next = void 0;\n if (!self.yField && self.isAdjust('y')) {\n pre = 0;\n next = 1;\n } else if (length > 1) {\n pre = index === 0 ? values[0] : values[index - 1];\n next = index === length - 1 ? values[length - 1] : values[index + 1];\n\n if (index !== 0) {\n pre += (key - pre) / 2;\n } else {\n pre -= (next - key) / 2;\n }\n if (index !== length - 1) {\n next -= (next - key) / 2;\n } else {\n next += (key - values[length - 2]) / 2;\n }\n } else {\n pre = key === 0 ? 0 : key - 0.5;\n next = key === 0 ? 1 : key + 0.5;\n }\n\n return {\n pre: pre,\n next: next\n };\n },\n\n /**\n * 对数据进行分组\n * @param {Array} data 数据\n * @param {String} dim 分组的字段\n * @return {Object} 分组的键值对映射\n */\n groupData: function groupData(data, dim) {\n var groups = {};\n\n each(data, function (record) {\n var value = record[dim];\n if (value === undefined) {\n value = record[dim] = DEFAULT_Y;\n }\n if (!groups[value]) {\n groups[value] = [];\n }\n groups[value].push(record);\n });\n\n return groups;\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/mixin/adjust.js\n// module id = 8\n// module chunks = 0","/**\n * 是否为函数\n * @param {*} fn 对象\n * @return {Boolean} 是否函数\n */\nvar isType = require('./isType');\n\nvar isFunction = function isFunction(value) {\n return isType(value, 'Function');\n};\n\nmodule.exports = isFunction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@antv/util/lib/type/isFunction.js\n// module id = 9\n// module chunks = 0","// 完整版下使用支持按照某个字段进行分组的 dodge\nvar mix = require('@antv/util/lib/mix');\nvar Adjust = require('./base');\nvar Dodge = require('./dodge');\nvar Stack = require('./stack');\nvar AdjustMixin = require('./mixin/adjust');\nvar DodgeMixin = require('./mixin/dodge');\nvar StackMixin = require('./mixin/stack');\nmix(Adjust.prototype, AdjustMixin);\nmix(Dodge.prototype, AdjustMixin, DodgeMixin);\nmix(Stack.prototype, StackMixin);\n\nAdjust.Jitter = require('./jitter');\nAdjust.Symmetric = require('./symmetric');\nAdjust.Dodge = Dodge;\nAdjust.Stack = Stack;\n\nmodule.exports = Adjust;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/index.js\n// module id = 10\n// module chunks = 0","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Adjust = require('./base');\nvar each = require('@antv/util/lib/each');\n\nvar MARGIN_RATIO = 1 / 2;\nvar DODGE_RATIO = 1 / 2;\n\nvar Dodge = function (_Adjust) {\n _inherits(Dodge, _Adjust);\n\n function Dodge() {\n _classCallCheck(this, Dodge);\n\n return _possibleConstructorReturn(this, _Adjust.apply(this, arguments));\n }\n\n Dodge.prototype._initDefaultCfg = function _initDefaultCfg() {\n /**\n * 调整过程中,2个数据的间距\n * @type {Number}\n */\n this.marginRatio = MARGIN_RATIO;\n /**\n * 调整占单位宽度的比例,例如:占2个分类间距的 1/2\n * @type {Number}\n */\n this.dodgeRatio = DODGE_RATIO;\n this.adjustNames = ['x', 'y']; // 调整的维度,默认,x,y都做调整\n };\n\n Dodge.prototype.getDodgeOffset = function getDodgeOffset(range, index, count) {\n var self = this;\n var pre = range.pre;\n var next = range.next;\n var tickLength = next - pre;\n var width = tickLength * self.dodgeRatio / count;\n var margin = self.marginRatio * width;\n var offset = 1 / 2 * (tickLength - count * width - (count - 1) * margin) + ((index + 1) * width + index * margin) - 1 / 2 * width - 1 / 2 * tickLength;\n return (pre + next) / 2 + offset;\n };\n\n Dodge.prototype.processAdjust = function processAdjust(dataArray) {\n var self = this;\n var count = dataArray.length;\n var xField = self.xField;\n each(dataArray, function (data, index) {\n for (var i = 0, len = data.length; i < len; i++) {\n var obj = data[i];\n var value = obj[xField];\n var range = {\n pre: value - 0.5,\n next: value + 0.5\n };\n var dodgeValue = self.getDodgeOffset(range, index, count);\n obj[xField] = dodgeValue;\n }\n });\n };\n\n return Dodge;\n}(Adjust);\n\nAdjust.Dodge = Dodge;\nmodule.exports = Dodge;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/dodge.js\n// module id = 11\n// module chunks = 0","var _typeof2 = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _typeof = typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof2(obj);\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof2(obj);\n};\n\nvar isObject = function isObject(value) {\n /**\n * isObject({}) => true\n * isObject([1, 2, 3]) => true\n * isObject(Function) => true\n * isObject(null) => false\n */\n var type = typeof value === 'undefined' ? 'undefined' : _typeof(value);\n return value !== null && type === 'object' || type === 'function';\n};\n\nmodule.exports = isObject;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@antv/util/lib/type/isObject.js\n// module id = 12\n// module chunks = 0","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar isArray = require('@antv/util/lib/type/isArray');\nvar isNil = require('@antv/util/lib/type/isNil');\nvar Adjust = require('./base');\n\nvar Stack = function (_Adjust) {\n _inherits(Stack, _Adjust);\n\n function Stack() {\n _classCallCheck(this, Stack);\n\n return _possibleConstructorReturn(this, _Adjust.apply(this, arguments));\n }\n\n Stack.prototype._initDefaultCfg = function _initDefaultCfg() {\n this.xField = null; // 调整对应的 x 方向对应的字段名称\n this.yField = null; // 调整对应的 y 方向对应的字段名称\n };\n\n Stack.prototype.processAdjust = function processAdjust(dataArray) {\n this.processStack(dataArray);\n };\n\n Stack.prototype.processStack = function processStack(dataArray) {\n var self = this;\n var xField = self.xField;\n var yField = self.yField;\n var count = dataArray.length;\n var stackCache = {\n positive: {},\n negative: {}\n };\n // 层叠顺序翻转\n if (self.reverseOrder) {\n dataArray = dataArray.slice(0).reverse();\n }\n for (var i = 0; i < count; i++) {\n var data = dataArray[i];\n for (var j = 0, len = data.length; j < len; j++) {\n var item = data[j];\n var x = item[xField] || 0;\n var y = item[yField];\n var xkey = x.toString();\n y = isArray(y) ? y[1] : y;\n if (!isNil(y)) {\n var direction = y >= 0 ? 'positive' : 'negative';\n if (!stackCache[direction][xkey]) {\n stackCache[direction][xkey] = 0;\n }\n item[yField] = [stackCache[direction][xkey], y + stackCache[direction][xkey]];\n stackCache[direction][xkey] += y;\n }\n }\n }\n };\n\n return Stack;\n}(Adjust);\n\nAdjust.Stack = Stack;\nmodule.exports = Stack;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/stack.js\n// module id = 13\n// module chunks = 0","var ArrayUtil = {\n merge: require('@antv/util/lib/array/merge'),\n values: require('@antv/util/lib/array/values')\n};\n\nvar group = require('@antv/util/lib/group');\nvar each = require('@antv/util/lib/each');\n\nmodule.exports = {\n /**\n * @protected\n * @override\n */\n processAdjust: function processAdjust(dataArray) {\n var self = this;\n var mergeData = ArrayUtil.merge(dataArray);\n var dodgeDim = self.dodgeBy;\n var adjDataArray = dataArray;\n if (dodgeDim) {\n // 如果指定了分组dim的字段\n adjDataArray = group(mergeData, dodgeDim);\n }\n self.cacheMap = {};\n self.adjDataArray = adjDataArray;\n self.mergeData = mergeData;\n self.adjustData(adjDataArray, mergeData);\n\n self.adjDataArray = null;\n self.mergeData = null;\n },\n getDistribution: function getDistribution(dim) {\n var self = this;\n var dataArray = self.adjDataArray;\n var cacheMap = self.cacheMap;\n var map = cacheMap[dim];\n if (!map) {\n map = {};\n each(dataArray, function (data, index) {\n var values = ArrayUtil.values(data, dim);\n if (!values.length) {\n values.push(0);\n }\n each(values, function (val) {\n if (!map[val]) {\n map[val] = [];\n }\n map[val].push(index);\n });\n });\n cacheMap[dim] = map;\n }\n\n return map;\n },\n adjustDim: function adjustDim(dim, values, data, frameCount, frameIndex) {\n var self = this;\n var map = self.getDistribution(dim);\n var groupData = self.groupData(data, dim); // 根据值分组\n\n each(groupData, function (group, key) {\n key = parseFloat(key);\n var range = void 0;\n if (values.length === 1) {\n range = {\n pre: values[0] - 1,\n next: values[0] + 1\n };\n } else {\n range = self.getAdjustRange(dim, key, values);\n }\n each(group, function (record) {\n var value = record[dim];\n var valueArr = map[value];\n var valIndex = valueArr.indexOf(frameIndex);\n record[dim] = self.getDodgeOffset(range, valIndex, valueArr.length);\n });\n });\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/mixin/dodge.js\n// module id = 14\n// module chunks = 0","var groupToMap = require('./groupToMap');\n\nvar group = function group(data, condition) {\n if (!condition) {\n return [data];\n }\n var groups = groupToMap(data, condition);\n var array = [];\n for (var i in groups) {\n array.push(groups[i]);\n }\n return array;\n};\n\nmodule.exports = group;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@antv/util/lib/group.js\n// module id = 15\n// module chunks = 0","var isFunction = require('./type/isFunction');\nvar isArray = require('./type/isArray');\nvar groupBy = require('./groupBy');\n\nvar groupToMap = function groupToMap(data, condition) {\n if (!condition) {\n return {\n 0: data\n };\n }\n if (!isFunction(condition)) {\n var paramsCondition = isArray(condition) ? condition : condition.replace(/\\s+/g, '').split('*');\n condition = function condition(row) {\n var unique = '_'; // 避免出现数字作为Key的情况,会进行按照数字的排序\n for (var i = 0, l = paramsCondition.length; i < l; i++) {\n unique += row[paramsCondition[i]] && row[paramsCondition[i]].toString();\n }\n return unique;\n };\n }\n var groups = groupBy(data, condition);\n return groups;\n};\n\nmodule.exports = groupToMap;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@antv/util/lib/groupToMap.js\n// module id = 16\n// module chunks = 0","var each = require('./each');\nvar isArray = require('./type/isArray');\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar groupBy = function groupBy(data, condition) {\n if (!condition || !isArray(data)) {\n return data;\n }\n var result = {};\n var key = null;\n each(data, function (item) {\n key = condition(item);\n if (hasOwnProperty.call(result, key)) {\n result[key].push(item);\n } else {\n result[key] = [item];\n }\n });\n return result;\n};\n\nmodule.exports = groupBy;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@antv/util/lib/groupBy.js\n// module id = 17\n// module chunks = 0","module.exports = {\n _initDefaultCfg: function _initDefaultCfg() {\n this.xField = null; // 调整对应的 x 方向对应的字段名称\n this.yField = null; // 调整对应的 y 方向对应的字段名称\n this.height = null; // 仅有一个维度调整时,总的高度\n this.size = 10; // 单个点的大小\n this.reverseOrder = false; // 是否反序进行层叠\n this.adjustNames = ['y']; // Only support stack y\n },\n processOneDimStack: function processOneDimStack(dataArray) {\n var self = this;\n var xField = self.xField;\n var yField = self.yField || 'y';\n var height = self.height;\n\n var stackY = {};\n // 如果层叠的顺序翻转\n if (self.reverseOrder) {\n dataArray = dataArray.slice(0).reverse();\n }\n for (var i = 0, len = dataArray.length; i < len; i++) {\n var data = dataArray[i];\n // cates\n for (var j = 0, dataLen = data.length; j < dataLen; j++) {\n var item = data[j];\n var size = item.size || self.size;\n var stackHeight = size * 2 / height;\n var x = item[xField];\n if (!stackY[x]) {\n stackY[x] = stackHeight / 2;\n }\n item[yField] = stackY[x];\n stackY[x] += stackHeight;\n }\n }\n },\n processAdjust: function processAdjust(dataArray) {\n if (this.yField) {\n this.processStack(dataArray);\n } else {\n this.processOneDimStack(dataArray);\n }\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/mixin/stack.js\n// module id = 18\n// module chunks = 0","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar each = require('@antv/util/lib/each');\nvar mix = require('@antv/util/lib/mix');\nvar ArrayUtil = {\n merge: require('@antv/util/lib/array/merge'),\n values: require('@antv/util/lib/array/values')\n};\n\nvar Adjust = require('./base');\nvar AdjustMixin = require('./mixin/adjust');\n\nvar Jitter = function (_Adjust) {\n _inherits(Jitter, _Adjust);\n\n function Jitter() {\n _classCallCheck(this, Jitter);\n\n return _possibleConstructorReturn(this, _Adjust.apply(this, arguments));\n }\n\n Jitter.prototype._initDefaultCfg = function _initDefaultCfg() {\n this.xField = null; // 调整对应的 x 方向对应的字段名称\n this.yField = null; // 调整对应的 y 方向对应的字段名称\n this.adjustNames = ['x', 'y']; // 指x,y\n this.groupFields = null; // 参与分组的数据维度\n };\n\n Jitter.prototype.processAdjust = function processAdjust(dataArray) {\n var self = this;\n var mergeData = ArrayUtil.merge(dataArray);\n\n self.adjDataArray = dataArray;\n self.mergeData = mergeData;\n self.adjustData(dataArray, mergeData);\n self.adjFrames = null;\n self.mergeData = null;\n };\n\n Jitter.prototype.getAdjustOffset = function getAdjustOffset(pre, next) {\n var r = Math.random(); // 随机位置,均匀分布\n var avg = next - pre; // * length\n var append = avg * 0.05;\n return pre + append + avg * 0.9 * r;\n };\n\n // adjust group data\n\n\n Jitter.prototype._adjustGroup = function _adjustGroup(group, dim, key, values) {\n var self = this;\n var range = self.getAdjustRange(dim, key, values);\n\n each(group, function (record) {\n record[dim] = self.getAdjustOffset(range.pre, range.next); // 获取调整的位置\n });\n };\n\n Jitter.prototype.adjustDim = function adjustDim(dim, values, data) {\n var self = this;\n var groupData = self.groupData(data, dim);\n each(groupData, function (group, key) {\n key = parseFloat(key);\n self._adjustGroup(group, dim, key, values);\n });\n };\n\n return Jitter;\n}(Adjust);\n\nmix(Jitter.prototype, AdjustMixin);\n\nAdjust.Jitter = Jitter;\nmodule.exports = Jitter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/jitter.js\n// module id = 19\n// module chunks = 0","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar each = require('@antv/util/lib/each');\nvar maxBy = require('@antv/util/lib/math/maxBy');\nvar isArray = require('@antv/util/lib/type/isArray');\nvar ArrayUtil = {\n merge: require('@antv/util/lib/array/merge'),\n values: require('@antv/util/lib/array/values')\n};\nvar Adjust = require('./base');\n\nvar Symmetric = function (_Adjust) {\n _inherits(Symmetric, _Adjust);\n\n function Symmetric() {\n _classCallCheck(this, Symmetric);\n\n return _possibleConstructorReturn(this, _Adjust.apply(this, arguments));\n }\n\n Symmetric.prototype._initDefaultCfg = function _initDefaultCfg() {\n this.xField = null; // 调整对应的 x 方向对应的字段名称\n this.yField = null; // 调整对应的 y 方向对应的字段名称\n this.cacheMax = null; // 缓存的最大值\n this.adjustNames = ['y']; // Only support stack y\n this.groupFields = null; // 参与分组的数据维度\n };\n\n // 获取最大的y值\n\n\n Symmetric.prototype._getMax = function _getMax(dim) {\n var self = this;\n var mergeData = self.mergeData;\n var maxRecord = maxBy(mergeData, function (obj) {\n var value = obj[dim];\n if (isArray(value)) {\n return Math.max.apply(null, value);\n }\n return value;\n });\n var maxValue = maxRecord[dim];\n var max = isArray(maxValue) ? Math.max.apply(null, maxValue) : maxValue;\n return max;\n };\n\n // 获取每个字段最大的值\n\n\n Symmetric.prototype._getXValuesMax = function _getXValuesMax() {\n var self = this;\n var yField = self.yField;\n var xField = self.xField;\n var cache = {};\n var mergeData = self.mergeData;\n each(mergeData, function (obj) {\n var xValue = obj[xField];\n var yValue = obj[yField];\n var max = isArray(yValue) ? Math.max.apply(null, yValue) : yValue;\n cache[xValue] = cache[xValue] || 0;\n if (cache[xValue] < max) {\n cache[xValue] = max;\n }\n });\n return cache;\n };\n\n // 入口函数\n\n\n Symmetric.prototype.processAdjust = function processAdjust(dataArray) {\n var self = this;\n var mergeData = ArrayUtil.merge(dataArray);\n self.mergeData = mergeData;\n self._processSymmetric(dataArray);\n self.mergeData = null;\n };\n\n // 处理对称\n\n\n Symmetric.prototype._processSymmetric = function _processSymmetric(dataArray) {\n var self = this;\n var xField = self.xField;\n var yField = self.yField;\n var max = self._getMax(yField);\n var first = dataArray[0][0];\n\n var cache = void 0;\n if (first && isArray(first[yField])) {\n cache = self._getXValuesMax();\n }\n each(dataArray, function (data) {\n each(data, function (obj) {\n var value = obj[yField];\n var offset = void 0;\n if (isArray(value)) {\n var xValue = obj[xField];\n var valueMax = cache[xValue];\n offset = (max - valueMax) / 2;\n var tmp = [];\n /* eslint-disable no-loop-func */\n each(value, function (subVal) {\n // 多个字段\n tmp.push(offset + subVal);\n });\n /* eslint-enable no-loop-func */\n obj[yField] = tmp;\n } else {\n offset = (max - value) / 2;\n obj[yField] = [offset, value + offset];\n }\n });\n });\n };\n\n return Symmetric;\n}(Adjust);\n\nAdjust.Symmetric = Symmetric;\nmodule.exports = Symmetric;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/symmetric.js\n// module id = 20\n// module chunks = 0","var isArray = require('../type/isArray');\nvar isFunction = require('../type/isFunction');\nvar each = require('../each');\n/**\n * @param {Array} arr The array to iterate over.\n * @param {Function} [fn] The iteratee invoked per element.\n * @return {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\nvar maxBy = function maxBy(arr, fn) {\n if (!isArray(arr)) {\n return undefined;\n }\n var max = arr[0];\n var maxData = void 0;\n if (isFunction(fn)) {\n maxData = fn(arr[0]);\n } else {\n maxData = arr[0][fn];\n }\n var data = void 0;\n each(arr, function (val) {\n if (isFunction(fn)) {\n data = fn(val);\n } else {\n data = val[fn];\n }\n if (data > maxData) {\n max = val;\n maxData = data;\n }\n });\n return max;\n};\n\nmodule.exports = maxBy;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@antv/util/lib/math/maxBy.js\n// module id = 21\n// module chunks = 0"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AClHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC5HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;A","sourceRoot":""}
\No newline at end of file