1 line
30 KiB
JSON
1 line
30 KiB
JSON
{"ast":null,"code":"/*\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 zrUtil from 'zrender/lib/core/util.js';\nimport { parsePercent } from '../util/number.js';\nimport { isDimensionStacked } from '../data/helper/dataStackHelper.js';\n\nfunction getSeriesStackId(seriesModel) {\n return seriesModel.get('stack') || '__ec_stack_' + seriesModel.seriesIndex;\n}\n\nfunction getAxisKey(polar, axis) {\n return axis.dim + polar.model.componentIndex;\n}\n\nfunction barLayoutPolar(seriesType, ecModel, api) {\n var lastStackCoords = {};\n var barWidthAndOffset = calRadialBar(zrUtil.filter(ecModel.getSeriesByType(seriesType), function (seriesModel) {\n return !ecModel.isSeriesFiltered(seriesModel) && seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === 'polar';\n }));\n ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n // Check series coordinate, do layout for polar only\n if (seriesModel.coordinateSystem.type !== 'polar') {\n return;\n }\n\n var data = seriesModel.getData();\n var polar = seriesModel.coordinateSystem;\n var baseAxis = polar.getBaseAxis();\n var axisKey = getAxisKey(polar, baseAxis);\n var stackId = getSeriesStackId(seriesModel);\n var columnLayoutInfo = barWidthAndOffset[axisKey][stackId];\n var columnOffset = columnLayoutInfo.offset;\n var columnWidth = columnLayoutInfo.width;\n var valueAxis = polar.getOtherAxis(baseAxis);\n var cx = seriesModel.coordinateSystem.cx;\n var cy = seriesModel.coordinateSystem.cy;\n var barMinHeight = seriesModel.get('barMinHeight') || 0;\n var barMinAngle = seriesModel.get('barMinAngle') || 0;\n lastStackCoords[stackId] = lastStackCoords[stackId] || [];\n var valueDim = data.mapDimension(valueAxis.dim);\n var baseDim = data.mapDimension(baseAxis.dim);\n var stacked = isDimensionStacked(data, valueDim\n /* , baseDim */\n );\n var clampLayout = baseAxis.dim !== 'radius' || !seriesModel.get('roundCap', true);\n var valueAxisStart = valueAxis.dataToCoord(0);\n\n for (var idx = 0, len = data.count(); idx < len; idx++) {\n var value = data.get(valueDim, idx);\n var baseValue = data.get(baseDim, idx);\n var sign = value >= 0 ? 'p' : 'n';\n var baseCoord = valueAxisStart; // Because of the barMinHeight, we can not use the value in\n // stackResultDimension directly.\n // Only ordinal axis can be stacked.\n\n if (stacked) {\n if (!lastStackCoords[stackId][baseValue]) {\n lastStackCoords[stackId][baseValue] = {\n p: valueAxisStart,\n n: valueAxisStart // Negative stack\n\n };\n } // Should also consider #4243\n\n\n baseCoord = lastStackCoords[stackId][baseValue][sign];\n }\n\n var r0 = void 0;\n var r = void 0;\n var startAngle = void 0;\n var endAngle = void 0; // radial sector\n\n if (valueAxis.dim === 'radius') {\n var radiusSpan = valueAxis.dataToCoord(value) - valueAxisStart;\n var angle = baseAxis.dataToCoord(baseValue);\n\n if (Math.abs(radiusSpan) < barMinHeight) {\n radiusSpan = (radiusSpan < 0 ? -1 : 1) * barMinHeight;\n }\n\n r0 = baseCoord;\n r = baseCoord + radiusSpan;\n startAngle = angle - columnOffset;\n endAngle = startAngle - columnWidth;\n stacked && (lastStackCoords[stackId][baseValue][sign] = r);\n } // tangential sector\n else {\n var angleSpan = valueAxis.dataToCoord(value, clampLayout) - valueAxisStart;\n var radius = baseAxis.dataToCoord(baseValue);\n\n if (Math.abs(angleSpan) < barMinAngle) {\n angleSpan = (angleSpan < 0 ? -1 : 1) * barMinAngle;\n }\n\n r0 = radius + columnOffset;\n r = r0 + columnWidth;\n startAngle = baseCoord;\n endAngle = baseCoord + angleSpan; // if the previous stack is at the end of the ring,\n // add a round to differentiate it from origin\n // let extent = angleAxis.getExtent();\n // let stackCoord = angle;\n // if (stackCoord === extent[0] && value > 0) {\n // stackCoord = extent[1];\n // }\n // else if (stackCoord === extent[1] && value < 0) {\n // stackCoord = extent[0];\n // }\n\n stacked && (lastStackCoords[stackId][baseValue][sign] = endAngle);\n }\n\n data.setItemLayout(idx, {\n cx: cx,\n cy: cy,\n r0: r0,\n r: r,\n // Consider that positive angle is anti-clockwise,\n // while positive radian of sector is clockwise\n startAngle: -startAngle * Math.PI / 180,\n endAngle: -endAngle * Math.PI / 180,\n\n /**\n * Keep the same logic with bar in catesion: use end value to\n * control direction. Notice that if clockwise is true (by\n * default), the sector will always draw clockwisely, no matter\n * whether endAngle is greater or less than startAngle.\n */\n clockwise: startAngle >= endAngle\n });\n }\n });\n}\n/**\n * Calculate bar width and offset for radial bar charts\n */\n\n\nfunction calRadialBar(barSeries) {\n // Columns info on each category axis. Key is polar name\n var columnsMap = {};\n zrUtil.each(barSeries, function (seriesModel, idx) {\n var data = seriesModel.getData();\n var polar = seriesModel.coordinateSystem;\n var baseAxis = polar.getBaseAxis();\n var axisKey = getAxisKey(polar, baseAxis);\n var axisExtent = baseAxis.getExtent();\n var bandWidth = baseAxis.type === 'category' ? baseAxis.getBandWidth() : Math.abs(axisExtent[1] - axisExtent[0]) / data.count();\n var columnsOnAxis = columnsMap[axisKey] || {\n bandWidth: bandWidth,\n remainedWidth: bandWidth,\n autoWidthCount: 0,\n categoryGap: '20%',\n gap: '30%',\n stacks: {}\n };\n var stacks = columnsOnAxis.stacks;\n columnsMap[axisKey] = columnsOnAxis;\n var stackId = getSeriesStackId(seriesModel);\n\n if (!stacks[stackId]) {\n columnsOnAxis.autoWidthCount++;\n }\n\n stacks[stackId] = stacks[stackId] || {\n width: 0,\n maxWidth: 0\n };\n var barWidth = parsePercent(seriesModel.get('barWidth'), bandWidth);\n var barMaxWidth = parsePercent(seriesModel.get('barMaxWidth'), bandWidth);\n var barGap = seriesModel.get('barGap');\n var barCategoryGap = seriesModel.get('barCategoryGap');\n\n if (barWidth && !stacks[stackId].width) {\n barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth);\n stacks[stackId].width = barWidth;\n columnsOnAxis.remainedWidth -= barWidth;\n }\n\n barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth);\n barGap != null && (columnsOnAxis.gap = barGap);\n barCategoryGap != null && (columnsOnAxis.categoryGap = barCategoryGap);\n });\n var result = {};\n zrUtil.each(columnsMap, function (columnsOnAxis, coordSysName) {\n result[coordSysName] = {};\n var stacks = columnsOnAxis.stacks;\n var bandWidth = columnsOnAxis.bandWidth;\n var categoryGap = parsePercent(columnsOnAxis.categoryGap, bandWidth);\n var barGapPercent = parsePercent(columnsOnAxis.gap, 1);\n var remainedWidth = columnsOnAxis.remainedWidth;\n var autoWidthCount = columnsOnAxis.autoWidthCount;\n var autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n autoWidth = Math.max(autoWidth, 0); // Find if any auto calculated bar exceeded maxBarWidth\n\n zrUtil.each(stacks, function (column, stack) {\n var maxWidth = column.maxWidth;\n\n if (maxWidth && maxWidth < autoWidth) {\n maxWidth = Math.min(maxWidth, remainedWidth);\n\n if (column.width) {\n maxWidth = Math.min(maxWidth, column.width);\n }\n\n remainedWidth -= maxWidth;\n column.width = maxWidth;\n autoWidthCount--;\n }\n }); // Recalculate width again\n\n autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n autoWidth = Math.max(autoWidth, 0);\n var widthSum = 0;\n var lastColumn;\n zrUtil.each(stacks, function (column, idx) {\n if (!column.width) {\n column.width = autoWidth;\n }\n\n lastColumn = column;\n widthSum += column.width * (1 + barGapPercent);\n });\n\n if (lastColumn) {\n widthSum -= lastColumn.width * barGapPercent;\n }\n\n var offset = -widthSum / 2;\n zrUtil.each(stacks, function (column, stackId) {\n result[coordSysName][stackId] = result[coordSysName][stackId] || {\n offset: offset,\n width: column.width\n };\n offset += column.width * (1 + barGapPercent);\n });\n });\n return result;\n}\n\nexport default barLayoutPolar;","map":{"version":3,"sources":["D:/Work/WorkSpace/GitWorkSpace/TenShop/resource/ElectronicMall/src/ElectronicMallVue/node_modules/echarts/lib/layout/barPolar.js"],"names":["zrUtil","parsePercent","isDimensionStacked","getSeriesStackId","seriesModel","get","seriesIndex","getAxisKey","polar","axis","dim","model","componentIndex","barLayoutPolar","seriesType","ecModel","api","lastStackCoords","barWidthAndOffset","calRadialBar","filter","getSeriesByType","isSeriesFiltered","coordinateSystem","type","eachSeriesByType","data","getData","baseAxis","getBaseAxis","axisKey","stackId","columnLayoutInfo","columnOffset","offset","columnWidth","width","valueAxis","getOtherAxis","cx","cy","barMinHeight","barMinAngle","valueDim","mapDimension","baseDim","stacked","clampLayout","valueAxisStart","dataToCoord","idx","len","count","value","baseValue","sign","baseCoord","p","n","r0","r","startAngle","endAngle","radiusSpan","angle","Math","abs","angleSpan","radius","setItemLayout","PI","clockwise","barSeries","columnsMap","each","axisExtent","getExtent","bandWidth","getBandWidth","columnsOnAxis","remainedWidth","autoWidthCount","categoryGap","gap","stacks","maxWidth","barWidth","barMaxWidth","barGap","barCategoryGap","min","result","coordSysName","barGapPercent","autoWidth","max","column","stack","widthSum","lastColumn"],"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 zrUtil from 'zrender/lib/core/util.js';\nimport { parsePercent } from '../util/number.js';\nimport { isDimensionStacked } from '../data/helper/dataStackHelper.js';\n\nfunction getSeriesStackId(seriesModel) {\n return seriesModel.get('stack') || '__ec_stack_' + seriesModel.seriesIndex;\n}\n\nfunction getAxisKey(polar, axis) {\n return axis.dim + polar.model.componentIndex;\n}\n\nfunction barLayoutPolar(seriesType, ecModel, api) {\n var lastStackCoords = {};\n var barWidthAndOffset = calRadialBar(zrUtil.filter(ecModel.getSeriesByType(seriesType), function (seriesModel) {\n return !ecModel.isSeriesFiltered(seriesModel) && seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === 'polar';\n }));\n ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n // Check series coordinate, do layout for polar only\n if (seriesModel.coordinateSystem.type !== 'polar') {\n return;\n }\n\n var data = seriesModel.getData();\n var polar = seriesModel.coordinateSystem;\n var baseAxis = polar.getBaseAxis();\n var axisKey = getAxisKey(polar, baseAxis);\n var stackId = getSeriesStackId(seriesModel);\n var columnLayoutInfo = barWidthAndOffset[axisKey][stackId];\n var columnOffset = columnLayoutInfo.offset;\n var columnWidth = columnLayoutInfo.width;\n var valueAxis = polar.getOtherAxis(baseAxis);\n var cx = seriesModel.coordinateSystem.cx;\n var cy = seriesModel.coordinateSystem.cy;\n var barMinHeight = seriesModel.get('barMinHeight') || 0;\n var barMinAngle = seriesModel.get('barMinAngle') || 0;\n lastStackCoords[stackId] = lastStackCoords[stackId] || [];\n var valueDim = data.mapDimension(valueAxis.dim);\n var baseDim = data.mapDimension(baseAxis.dim);\n var stacked = isDimensionStacked(data, valueDim\n /* , baseDim */\n );\n var clampLayout = baseAxis.dim !== 'radius' || !seriesModel.get('roundCap', true);\n var valueAxisStart = valueAxis.dataToCoord(0);\n\n for (var idx = 0, len = data.count(); idx < len; idx++) {\n var value = data.get(valueDim, idx);\n var baseValue = data.get(baseDim, idx);\n var sign = value >= 0 ? 'p' : 'n';\n var baseCoord = valueAxisStart; // Because of the barMinHeight, we can not use the value in\n // stackResultDimension directly.\n // Only ordinal axis can be stacked.\n\n if (stacked) {\n if (!lastStackCoords[stackId][baseValue]) {\n lastStackCoords[stackId][baseValue] = {\n p: valueAxisStart,\n n: valueAxisStart // Negative stack\n\n };\n } // Should also consider #4243\n\n\n baseCoord = lastStackCoords[stackId][baseValue][sign];\n }\n\n var r0 = void 0;\n var r = void 0;\n var startAngle = void 0;\n var endAngle = void 0; // radial sector\n\n if (valueAxis.dim === 'radius') {\n var radiusSpan = valueAxis.dataToCoord(value) - valueAxisStart;\n var angle = baseAxis.dataToCoord(baseValue);\n\n if (Math.abs(radiusSpan) < barMinHeight) {\n radiusSpan = (radiusSpan < 0 ? -1 : 1) * barMinHeight;\n }\n\n r0 = baseCoord;\n r = baseCoord + radiusSpan;\n startAngle = angle - columnOffset;\n endAngle = startAngle - columnWidth;\n stacked && (lastStackCoords[stackId][baseValue][sign] = r);\n } // tangential sector\n else {\n var angleSpan = valueAxis.dataToCoord(value, clampLayout) - valueAxisStart;\n var radius = baseAxis.dataToCoord(baseValue);\n\n if (Math.abs(angleSpan) < barMinAngle) {\n angleSpan = (angleSpan < 0 ? -1 : 1) * barMinAngle;\n }\n\n r0 = radius + columnOffset;\n r = r0 + columnWidth;\n startAngle = baseCoord;\n endAngle = baseCoord + angleSpan; // if the previous stack is at the end of the ring,\n // add a round to differentiate it from origin\n // let extent = angleAxis.getExtent();\n // let stackCoord = angle;\n // if (stackCoord === extent[0] && value > 0) {\n // stackCoord = extent[1];\n // }\n // else if (stackCoord === extent[1] && value < 0) {\n // stackCoord = extent[0];\n // }\n\n stacked && (lastStackCoords[stackId][baseValue][sign] = endAngle);\n }\n\n data.setItemLayout(idx, {\n cx: cx,\n cy: cy,\n r0: r0,\n r: r,\n // Consider that positive angle is anti-clockwise,\n // while positive radian of sector is clockwise\n startAngle: -startAngle * Math.PI / 180,\n endAngle: -endAngle * Math.PI / 180,\n\n /**\n * Keep the same logic with bar in catesion: use end value to\n * control direction. Notice that if clockwise is true (by\n * default), the sector will always draw clockwisely, no matter\n * whether endAngle is greater or less than startAngle.\n */\n clockwise: startAngle >= endAngle\n });\n }\n });\n}\n/**\n * Calculate bar width and offset for radial bar charts\n */\n\n\nfunction calRadialBar(barSeries) {\n // Columns info on each category axis. Key is polar name\n var columnsMap = {};\n zrUtil.each(barSeries, function (seriesModel, idx) {\n var data = seriesModel.getData();\n var polar = seriesModel.coordinateSystem;\n var baseAxis = polar.getBaseAxis();\n var axisKey = getAxisKey(polar, baseAxis);\n var axisExtent = baseAxis.getExtent();\n var bandWidth = baseAxis.type === 'category' ? baseAxis.getBandWidth() : Math.abs(axisExtent[1] - axisExtent[0]) / data.count();\n var columnsOnAxis = columnsMap[axisKey] || {\n bandWidth: bandWidth,\n remainedWidth: bandWidth,\n autoWidthCount: 0,\n categoryGap: '20%',\n gap: '30%',\n stacks: {}\n };\n var stacks = columnsOnAxis.stacks;\n columnsMap[axisKey] = columnsOnAxis;\n var stackId = getSeriesStackId(seriesModel);\n\n if (!stacks[stackId]) {\n columnsOnAxis.autoWidthCount++;\n }\n\n stacks[stackId] = stacks[stackId] || {\n width: 0,\n maxWidth: 0\n };\n var barWidth = parsePercent(seriesModel.get('barWidth'), bandWidth);\n var barMaxWidth = parsePercent(seriesModel.get('barMaxWidth'), bandWidth);\n var barGap = seriesModel.get('barGap');\n var barCategoryGap = seriesModel.get('barCategoryGap');\n\n if (barWidth && !stacks[stackId].width) {\n barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth);\n stacks[stackId].width = barWidth;\n columnsOnAxis.remainedWidth -= barWidth;\n }\n\n barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth);\n barGap != null && (columnsOnAxis.gap = barGap);\n barCategoryGap != null && (columnsOnAxis.categoryGap = barCategoryGap);\n });\n var result = {};\n zrUtil.each(columnsMap, function (columnsOnAxis, coordSysName) {\n result[coordSysName] = {};\n var stacks = columnsOnAxis.stacks;\n var bandWidth = columnsOnAxis.bandWidth;\n var categoryGap = parsePercent(columnsOnAxis.categoryGap, bandWidth);\n var barGapPercent = parsePercent(columnsOnAxis.gap, 1);\n var remainedWidth = columnsOnAxis.remainedWidth;\n var autoWidthCount = columnsOnAxis.autoWidthCount;\n var autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n autoWidth = Math.max(autoWidth, 0); // Find if any auto calculated bar exceeded maxBarWidth\n\n zrUtil.each(stacks, function (column, stack) {\n var maxWidth = column.maxWidth;\n\n if (maxWidth && maxWidth < autoWidth) {\n maxWidth = Math.min(maxWidth, remainedWidth);\n\n if (column.width) {\n maxWidth = Math.min(maxWidth, column.width);\n }\n\n remainedWidth -= maxWidth;\n column.width = maxWidth;\n autoWidthCount--;\n }\n }); // Recalculate width again\n\n autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n autoWidth = Math.max(autoWidth, 0);\n var widthSum = 0;\n var lastColumn;\n zrUtil.each(stacks, function (column, idx) {\n if (!column.width) {\n column.width = autoWidth;\n }\n\n lastColumn = column;\n widthSum += column.width * (1 + barGapPercent);\n });\n\n if (lastColumn) {\n widthSum -= lastColumn.width * barGapPercent;\n }\n\n var offset = -widthSum / 2;\n zrUtil.each(stacks, function (column, stackId) {\n result[coordSysName][stackId] = result[coordSysName][stackId] || {\n offset: offset,\n width: column.width\n };\n offset += column.width * (1 + barGapPercent);\n });\n });\n return result;\n}\n\nexport default barLayoutPolar;"]},"metadata":{},"sourceType":"module"} |