1 line
38 KiB
JSON
1 line
38 KiB
JSON
{"ast":null,"code":"import \"core-js/modules/es.array.sort.js\";\nimport \"core-js/modules/es.array.concat.js\";\nimport \"core-js/modules/es.array.slice.js\";\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport * as layout from '../../util/layout.js';\nimport { parsePercent, linearMap } from '../../util/number.js';\nimport { isFunction } from 'zrender/lib/core/util.js';\n\nfunction getViewRect(seriesModel, api) {\n return layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n });\n}\n\nfunction getSortedIndices(data, sort) {\n var valueDim = data.mapDimension('value');\n var valueArr = data.mapArray(valueDim, function (val) {\n return val;\n });\n var indices = [];\n var isAscending = sort === 'ascending';\n\n for (var i = 0, len = data.count(); i < len; i++) {\n indices[i] = i;\n } // Add custom sortable function & none sortable opetion by \"options.sort\"\n\n\n if (isFunction(sort)) {\n indices.sort(sort);\n } else if (sort !== 'none') {\n indices.sort(function (a, b) {\n return isAscending ? valueArr[a] - valueArr[b] : valueArr[b] - valueArr[a];\n });\n }\n\n return indices;\n}\n\nfunction labelLayout(data) {\n var seriesModel = data.hostModel;\n var orient = seriesModel.get('orient');\n data.each(function (idx) {\n var itemModel = data.getItemModel(idx);\n var labelModel = itemModel.getModel('label');\n var labelPosition = labelModel.get('position');\n var labelLineModel = itemModel.getModel('labelLine');\n var layout = data.getItemLayout(idx);\n var points = layout.points;\n var isLabelInside = labelPosition === 'inner' || labelPosition === 'inside' || labelPosition === 'center' || labelPosition === 'insideLeft' || labelPosition === 'insideRight';\n var textAlign;\n var textX;\n var textY;\n var linePoints;\n\n if (isLabelInside) {\n if (labelPosition === 'insideLeft') {\n textX = (points[0][0] + points[3][0]) / 2 + 5;\n textY = (points[0][1] + points[3][1]) / 2;\n textAlign = 'left';\n } else if (labelPosition === 'insideRight') {\n textX = (points[1][0] + points[2][0]) / 2 - 5;\n textY = (points[1][1] + points[2][1]) / 2;\n textAlign = 'right';\n } else {\n textX = (points[0][0] + points[1][0] + points[2][0] + points[3][0]) / 4;\n textY = (points[0][1] + points[1][1] + points[2][1] + points[3][1]) / 4;\n textAlign = 'center';\n }\n\n linePoints = [[textX, textY], [textX, textY]];\n } else {\n var x1 = void 0;\n var y1 = void 0;\n var x2 = void 0;\n var y2 = void 0;\n var labelLineLen = labelLineModel.get('length');\n\n if (process.env.NODE_ENV !== 'production') {\n if (orient === 'vertical' && ['top', 'bottom'].indexOf(labelPosition) > -1) {\n labelPosition = 'left';\n console.warn('Position error: Funnel chart on vertical orient dose not support top and bottom.');\n }\n\n if (orient === 'horizontal' && ['left', 'right'].indexOf(labelPosition) > -1) {\n labelPosition = 'bottom';\n console.warn('Position error: Funnel chart on horizontal orient dose not support left and right.');\n }\n }\n\n if (labelPosition === 'left') {\n // Left side\n x1 = (points[3][0] + points[0][0]) / 2;\n y1 = (points[3][1] + points[0][1]) / 2;\n x2 = x1 - labelLineLen;\n textX = x2 - 5;\n textAlign = 'right';\n } else if (labelPosition === 'right') {\n // Right side\n x1 = (points[1][0] + points[2][0]) / 2;\n y1 = (points[1][1] + points[2][1]) / 2;\n x2 = x1 + labelLineLen;\n textX = x2 + 5;\n textAlign = 'left';\n } else if (labelPosition === 'top') {\n // Top side\n x1 = (points[3][0] + points[0][0]) / 2;\n y1 = (points[3][1] + points[0][1]) / 2;\n y2 = y1 - labelLineLen;\n textY = y2 - 5;\n textAlign = 'center';\n } else if (labelPosition === 'bottom') {\n // Bottom side\n x1 = (points[1][0] + points[2][0]) / 2;\n y1 = (points[1][1] + points[2][1]) / 2;\n y2 = y1 + labelLineLen;\n textY = y2 + 5;\n textAlign = 'center';\n } else if (labelPosition === 'rightTop') {\n // RightTop side\n x1 = orient === 'horizontal' ? points[3][0] : points[1][0];\n y1 = orient === 'horizontal' ? points[3][1] : points[1][1];\n\n if (orient === 'horizontal') {\n y2 = y1 - labelLineLen;\n textY = y2 - 5;\n textAlign = 'center';\n } else {\n x2 = x1 + labelLineLen;\n textX = x2 + 5;\n textAlign = 'top';\n }\n } else if (labelPosition === 'rightBottom') {\n // RightBottom side\n x1 = points[2][0];\n y1 = points[2][1];\n\n if (orient === 'horizontal') {\n y2 = y1 + labelLineLen;\n textY = y2 + 5;\n textAlign = 'center';\n } else {\n x2 = x1 + labelLineLen;\n textX = x2 + 5;\n textAlign = 'bottom';\n }\n } else if (labelPosition === 'leftTop') {\n // LeftTop side\n x1 = points[0][0];\n y1 = orient === 'horizontal' ? points[0][1] : points[1][1];\n\n if (orient === 'horizontal') {\n y2 = y1 - labelLineLen;\n textY = y2 - 5;\n textAlign = 'center';\n } else {\n x2 = x1 - labelLineLen;\n textX = x2 - 5;\n textAlign = 'right';\n }\n } else if (labelPosition === 'leftBottom') {\n // LeftBottom side\n x1 = orient === 'horizontal' ? points[1][0] : points[3][0];\n y1 = orient === 'horizontal' ? points[1][1] : points[2][1];\n\n if (orient === 'horizontal') {\n y2 = y1 + labelLineLen;\n textY = y2 + 5;\n textAlign = 'center';\n } else {\n x2 = x1 - labelLineLen;\n textX = x2 - 5;\n textAlign = 'right';\n }\n } else {\n // Right side or Bottom side\n x1 = (points[1][0] + points[2][0]) / 2;\n y1 = (points[1][1] + points[2][1]) / 2;\n\n if (orient === 'horizontal') {\n y2 = y1 + labelLineLen;\n textY = y2 + 5;\n textAlign = 'center';\n } else {\n x2 = x1 + labelLineLen;\n textX = x2 + 5;\n textAlign = 'left';\n }\n }\n\n if (orient === 'horizontal') {\n x2 = x1;\n textX = x2;\n } else {\n y2 = y1;\n textY = y2;\n }\n\n linePoints = [[x1, y1], [x2, y2]];\n }\n\n layout.label = {\n linePoints: linePoints,\n x: textX,\n y: textY,\n verticalAlign: 'middle',\n textAlign: textAlign,\n inside: isLabelInside\n };\n });\n}\n\nexport default function funnelLayout(ecModel, api) {\n ecModel.eachSeriesByType('funnel', function (seriesModel) {\n var data = seriesModel.getData();\n var valueDim = data.mapDimension('value');\n var sort = seriesModel.get('sort');\n var viewRect = getViewRect(seriesModel, api);\n var orient = seriesModel.get('orient');\n var viewWidth = viewRect.width;\n var viewHeight = viewRect.height;\n var indices = getSortedIndices(data, sort);\n var x = viewRect.x;\n var y = viewRect.y;\n var sizeExtent = orient === 'horizontal' ? [parsePercent(seriesModel.get('minSize'), viewHeight), parsePercent(seriesModel.get('maxSize'), viewHeight)] : [parsePercent(seriesModel.get('minSize'), viewWidth), parsePercent(seriesModel.get('maxSize'), viewWidth)];\n var dataExtent = data.getDataExtent(valueDim);\n var min = seriesModel.get('min');\n var max = seriesModel.get('max');\n\n if (min == null) {\n min = Math.min(dataExtent[0], 0);\n }\n\n if (max == null) {\n max = dataExtent[1];\n }\n\n var funnelAlign = seriesModel.get('funnelAlign');\n var gap = seriesModel.get('gap');\n var viewSize = orient === 'horizontal' ? viewWidth : viewHeight;\n var itemSize = (viewSize - gap * (data.count() - 1)) / data.count();\n\n var getLinePoints = function getLinePoints(idx, offset) {\n // End point index is data.count() and we assign it 0\n if (orient === 'horizontal') {\n var val_1 = data.get(valueDim, idx) || 0;\n var itemHeight = linearMap(val_1, [min, max], sizeExtent, true);\n var y0 = void 0;\n\n switch (funnelAlign) {\n case 'top':\n y0 = y;\n break;\n\n case 'center':\n y0 = y + (viewHeight - itemHeight) / 2;\n break;\n\n case 'bottom':\n y0 = y + (viewHeight - itemHeight);\n break;\n }\n\n return [[offset, y0], [offset, y0 + itemHeight]];\n }\n\n var val = data.get(valueDim, idx) || 0;\n var itemWidth = linearMap(val, [min, max], sizeExtent, true);\n var x0;\n\n switch (funnelAlign) {\n case 'left':\n x0 = x;\n break;\n\n case 'center':\n x0 = x + (viewWidth - itemWidth) / 2;\n break;\n\n case 'right':\n x0 = x + viewWidth - itemWidth;\n break;\n }\n\n return [[x0, offset], [x0 + itemWidth, offset]];\n };\n\n if (sort === 'ascending') {\n // From bottom to top\n itemSize = -itemSize;\n gap = -gap;\n\n if (orient === 'horizontal') {\n x += viewWidth;\n } else {\n y += viewHeight;\n }\n\n indices = indices.reverse();\n }\n\n for (var i = 0; i < indices.length; i++) {\n var idx = indices[i];\n var nextIdx = indices[i + 1];\n var itemModel = data.getItemModel(idx);\n\n if (orient === 'horizontal') {\n var width = itemModel.get(['itemStyle', 'width']);\n\n if (width == null) {\n width = itemSize;\n } else {\n width = parsePercent(width, viewWidth);\n\n if (sort === 'ascending') {\n width = -width;\n }\n }\n\n var start = getLinePoints(idx, x);\n var end = getLinePoints(nextIdx, x + width);\n x += width + gap;\n data.setItemLayout(idx, {\n points: start.concat(end.slice().reverse())\n });\n } else {\n var height = itemModel.get(['itemStyle', 'height']);\n\n if (height == null) {\n height = itemSize;\n } else {\n height = parsePercent(height, viewHeight);\n\n if (sort === 'ascending') {\n height = -height;\n }\n }\n\n var start = getLinePoints(idx, y);\n var end = getLinePoints(nextIdx, y + height);\n y += height + gap;\n data.setItemLayout(idx, {\n points: start.concat(end.slice().reverse())\n });\n }\n }\n\n labelLayout(data);\n });\n}","map":{"version":3,"sources":["D:/Work/WorkSpace/GitWorkSpace/TenShop/resource/ElectronicMall/src/ElectronicMallVue/node_modules/echarts/lib/chart/funnel/funnelLayout.js"],"names":["layout","parsePercent","linearMap","isFunction","getViewRect","seriesModel","api","getLayoutRect","getBoxLayoutParams","width","getWidth","height","getHeight","getSortedIndices","data","sort","valueDim","mapDimension","valueArr","mapArray","val","indices","isAscending","i","len","count","a","b","labelLayout","hostModel","orient","get","each","idx","itemModel","getItemModel","labelModel","getModel","labelPosition","labelLineModel","getItemLayout","points","isLabelInside","textAlign","textX","textY","linePoints","x1","y1","x2","y2","labelLineLen","process","env","NODE_ENV","indexOf","console","warn","label","x","y","verticalAlign","inside","funnelLayout","ecModel","eachSeriesByType","getData","viewRect","viewWidth","viewHeight","sizeExtent","dataExtent","getDataExtent","min","max","Math","funnelAlign","gap","viewSize","itemSize","getLinePoints","offset","val_1","itemHeight","y0","itemWidth","x0","reverse","length","nextIdx","start","end","setItemLayout","concat","slice"],"mappings":"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","sourcesContent":["\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nimport * as layout from '../../util/layout.js';\nimport { parsePercent, linearMap } from '../../util/number.js';\nimport { isFunction } from 'zrender/lib/core/util.js';\n\nfunction getViewRect(seriesModel, api) {\n return layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n });\n}\n\nfunction getSortedIndices(data, sort) {\n var valueDim = data.mapDimension('value');\n var valueArr = data.mapArray(valueDim, function (val) {\n return val;\n });\n var indices = [];\n var isAscending = sort === 'ascending';\n\n for (var i = 0, len = data.count(); i < len; i++) {\n indices[i] = i;\n } // Add custom sortable function & none sortable opetion by \"options.sort\"\n\n\n if (isFunction(sort)) {\n indices.sort(sort);\n } else if (sort !== 'none') {\n indices.sort(function (a, b) {\n return isAscending ? valueArr[a] - valueArr[b] : valueArr[b] - valueArr[a];\n });\n }\n\n return indices;\n}\n\nfunction labelLayout(data) {\n var seriesModel = data.hostModel;\n var orient = seriesModel.get('orient');\n data.each(function (idx) {\n var itemModel = data.getItemModel(idx);\n var labelModel = itemModel.getModel('label');\n var labelPosition = labelModel.get('position');\n var labelLineModel = itemModel.getModel('labelLine');\n var layout = data.getItemLayout(idx);\n var points = layout.points;\n var isLabelInside = labelPosition === 'inner' || labelPosition === 'inside' || labelPosition === 'center' || labelPosition === 'insideLeft' || labelPosition === 'insideRight';\n var textAlign;\n var textX;\n var textY;\n var linePoints;\n\n if (isLabelInside) {\n if (labelPosition === 'insideLeft') {\n textX = (points[0][0] + points[3][0]) / 2 + 5;\n textY = (points[0][1] + points[3][1]) / 2;\n textAlign = 'left';\n } else if (labelPosition === 'insideRight') {\n textX = (points[1][0] + points[2][0]) / 2 - 5;\n textY = (points[1][1] + points[2][1]) / 2;\n textAlign = 'right';\n } else {\n textX = (points[0][0] + points[1][0] + points[2][0] + points[3][0]) / 4;\n textY = (points[0][1] + points[1][1] + points[2][1] + points[3][1]) / 4;\n textAlign = 'center';\n }\n\n linePoints = [[textX, textY], [textX, textY]];\n } else {\n var x1 = void 0;\n var y1 = void 0;\n var x2 = void 0;\n var y2 = void 0;\n var labelLineLen = labelLineModel.get('length');\n\n if (process.env.NODE_ENV !== 'production') {\n if (orient === 'vertical' && ['top', 'bottom'].indexOf(labelPosition) > -1) {\n labelPosition = 'left';\n console.warn('Position error: Funnel chart on vertical orient dose not support top and bottom.');\n }\n\n if (orient === 'horizontal' && ['left', 'right'].indexOf(labelPosition) > -1) {\n labelPosition = 'bottom';\n console.warn('Position error: Funnel chart on horizontal orient dose not support left and right.');\n }\n }\n\n if (labelPosition === 'left') {\n // Left side\n x1 = (points[3][0] + points[0][0]) / 2;\n y1 = (points[3][1] + points[0][1]) / 2;\n x2 = x1 - labelLineLen;\n textX = x2 - 5;\n textAlign = 'right';\n } else if (labelPosition === 'right') {\n // Right side\n x1 = (points[1][0] + points[2][0]) / 2;\n y1 = (points[1][1] + points[2][1]) / 2;\n x2 = x1 + labelLineLen;\n textX = x2 + 5;\n textAlign = 'left';\n } else if (labelPosition === 'top') {\n // Top side\n x1 = (points[3][0] + points[0][0]) / 2;\n y1 = (points[3][1] + points[0][1]) / 2;\n y2 = y1 - labelLineLen;\n textY = y2 - 5;\n textAlign = 'center';\n } else if (labelPosition === 'bottom') {\n // Bottom side\n x1 = (points[1][0] + points[2][0]) / 2;\n y1 = (points[1][1] + points[2][1]) / 2;\n y2 = y1 + labelLineLen;\n textY = y2 + 5;\n textAlign = 'center';\n } else if (labelPosition === 'rightTop') {\n // RightTop side\n x1 = orient === 'horizontal' ? points[3][0] : points[1][0];\n y1 = orient === 'horizontal' ? points[3][1] : points[1][1];\n\n if (orient === 'horizontal') {\n y2 = y1 - labelLineLen;\n textY = y2 - 5;\n textAlign = 'center';\n } else {\n x2 = x1 + labelLineLen;\n textX = x2 + 5;\n textAlign = 'top';\n }\n } else if (labelPosition === 'rightBottom') {\n // RightBottom side\n x1 = points[2][0];\n y1 = points[2][1];\n\n if (orient === 'horizontal') {\n y2 = y1 + labelLineLen;\n textY = y2 + 5;\n textAlign = 'center';\n } else {\n x2 = x1 + labelLineLen;\n textX = x2 + 5;\n textAlign = 'bottom';\n }\n } else if (labelPosition === 'leftTop') {\n // LeftTop side\n x1 = points[0][0];\n y1 = orient === 'horizontal' ? points[0][1] : points[1][1];\n\n if (orient === 'horizontal') {\n y2 = y1 - labelLineLen;\n textY = y2 - 5;\n textAlign = 'center';\n } else {\n x2 = x1 - labelLineLen;\n textX = x2 - 5;\n textAlign = 'right';\n }\n } else if (labelPosition === 'leftBottom') {\n // LeftBottom side\n x1 = orient === 'horizontal' ? points[1][0] : points[3][0];\n y1 = orient === 'horizontal' ? points[1][1] : points[2][1];\n\n if (orient === 'horizontal') {\n y2 = y1 + labelLineLen;\n textY = y2 + 5;\n textAlign = 'center';\n } else {\n x2 = x1 - labelLineLen;\n textX = x2 - 5;\n textAlign = 'right';\n }\n } else {\n // Right side or Bottom side\n x1 = (points[1][0] + points[2][0]) / 2;\n y1 = (points[1][1] + points[2][1]) / 2;\n\n if (orient === 'horizontal') {\n y2 = y1 + labelLineLen;\n textY = y2 + 5;\n textAlign = 'center';\n } else {\n x2 = x1 + labelLineLen;\n textX = x2 + 5;\n textAlign = 'left';\n }\n }\n\n if (orient === 'horizontal') {\n x2 = x1;\n textX = x2;\n } else {\n y2 = y1;\n textY = y2;\n }\n\n linePoints = [[x1, y1], [x2, y2]];\n }\n\n layout.label = {\n linePoints: linePoints,\n x: textX,\n y: textY,\n verticalAlign: 'middle',\n textAlign: textAlign,\n inside: isLabelInside\n };\n });\n}\n\nexport default function funnelLayout(ecModel, api) {\n ecModel.eachSeriesByType('funnel', function (seriesModel) {\n var data = seriesModel.getData();\n var valueDim = data.mapDimension('value');\n var sort = seriesModel.get('sort');\n var viewRect = getViewRect(seriesModel, api);\n var orient = seriesModel.get('orient');\n var viewWidth = viewRect.width;\n var viewHeight = viewRect.height;\n var indices = getSortedIndices(data, sort);\n var x = viewRect.x;\n var y = viewRect.y;\n var sizeExtent = orient === 'horizontal' ? [parsePercent(seriesModel.get('minSize'), viewHeight), parsePercent(seriesModel.get('maxSize'), viewHeight)] : [parsePercent(seriesModel.get('minSize'), viewWidth), parsePercent(seriesModel.get('maxSize'), viewWidth)];\n var dataExtent = data.getDataExtent(valueDim);\n var min = seriesModel.get('min');\n var max = seriesModel.get('max');\n\n if (min == null) {\n min = Math.min(dataExtent[0], 0);\n }\n\n if (max == null) {\n max = dataExtent[1];\n }\n\n var funnelAlign = seriesModel.get('funnelAlign');\n var gap = seriesModel.get('gap');\n var viewSize = orient === 'horizontal' ? viewWidth : viewHeight;\n var itemSize = (viewSize - gap * (data.count() - 1)) / data.count();\n\n var getLinePoints = function (idx, offset) {\n // End point index is data.count() and we assign it 0\n if (orient === 'horizontal') {\n var val_1 = data.get(valueDim, idx) || 0;\n var itemHeight = linearMap(val_1, [min, max], sizeExtent, true);\n var y0 = void 0;\n\n switch (funnelAlign) {\n case 'top':\n y0 = y;\n break;\n\n case 'center':\n y0 = y + (viewHeight - itemHeight) / 2;\n break;\n\n case 'bottom':\n y0 = y + (viewHeight - itemHeight);\n break;\n }\n\n return [[offset, y0], [offset, y0 + itemHeight]];\n }\n\n var val = data.get(valueDim, idx) || 0;\n var itemWidth = linearMap(val, [min, max], sizeExtent, true);\n var x0;\n\n switch (funnelAlign) {\n case 'left':\n x0 = x;\n break;\n\n case 'center':\n x0 = x + (viewWidth - itemWidth) / 2;\n break;\n\n case 'right':\n x0 = x + viewWidth - itemWidth;\n break;\n }\n\n return [[x0, offset], [x0 + itemWidth, offset]];\n };\n\n if (sort === 'ascending') {\n // From bottom to top\n itemSize = -itemSize;\n gap = -gap;\n\n if (orient === 'horizontal') {\n x += viewWidth;\n } else {\n y += viewHeight;\n }\n\n indices = indices.reverse();\n }\n\n for (var i = 0; i < indices.length; i++) {\n var idx = indices[i];\n var nextIdx = indices[i + 1];\n var itemModel = data.getItemModel(idx);\n\n if (orient === 'horizontal') {\n var width = itemModel.get(['itemStyle', 'width']);\n\n if (width == null) {\n width = itemSize;\n } else {\n width = parsePercent(width, viewWidth);\n\n if (sort === 'ascending') {\n width = -width;\n }\n }\n\n var start = getLinePoints(idx, x);\n var end = getLinePoints(nextIdx, x + width);\n x += width + gap;\n data.setItemLayout(idx, {\n points: start.concat(end.slice().reverse())\n });\n } else {\n var height = itemModel.get(['itemStyle', 'height']);\n\n if (height == null) {\n height = itemSize;\n } else {\n height = parsePercent(height, viewHeight);\n\n if (sort === 'ascending') {\n height = -height;\n }\n }\n\n var start = getLinePoints(idx, y);\n var end = getLinePoints(nextIdx, y + height);\n y += height + gap;\n data.setItemLayout(idx, {\n points: start.concat(end.slice().reverse())\n });\n }\n }\n\n labelLayout(data);\n });\n}"]},"metadata":{},"sourceType":"module"} |