1 line
25 KiB
JSON
1 line
25 KiB
JSON
{"ast":null,"code":"import \"core-js/modules/es.array.slice.js\";\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n\n/**\r\n * AUTO-GENERATED FILE. DO NOT MODIFY.\r\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { subPixelOptimize } from '../../util/graphic.js';\nimport createRenderPlanner from '../helper/createRenderPlanner.js';\nimport { parsePercent } from '../../util/number.js';\nimport { map, retrieve2 } from 'zrender/lib/core/util.js';\nimport { createFloat32Array } from '../../util/vendor.js';\nvar candlestickLayout = {\n seriesType: 'candlestick',\n plan: createRenderPlanner(),\n reset: function reset(seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n var data = seriesModel.getData();\n var candleWidth = calculateCandleWidth(seriesModel, data);\n var cDimIdx = 0;\n var vDimIdx = 1;\n var coordDims = ['x', 'y'];\n var cDimI = data.getDimensionIndex(data.mapDimension(coordDims[cDimIdx]));\n var vDimsI = map(data.mapDimensionsAll(coordDims[vDimIdx]), data.getDimensionIndex, data);\n var openDimI = vDimsI[0];\n var closeDimI = vDimsI[1];\n var lowestDimI = vDimsI[2];\n var highestDimI = vDimsI[3];\n data.setLayout({\n candleWidth: candleWidth,\n // The value is experimented visually.\n isSimpleBox: candleWidth <= 1.3\n });\n\n if (cDimI < 0 || vDimsI.length < 4) {\n return;\n }\n\n return {\n progress: seriesModel.pipelineContext.large ? largeProgress : normalProgress\n };\n\n function normalProgress(params, data) {\n var dataIndex;\n var store = data.getStore();\n\n while ((dataIndex = params.next()) != null) {\n var axisDimVal = store.get(cDimI, dataIndex);\n var openVal = store.get(openDimI, dataIndex);\n var closeVal = store.get(closeDimI, dataIndex);\n var lowestVal = store.get(lowestDimI, dataIndex);\n var highestVal = store.get(highestDimI, dataIndex);\n var ocLow = Math.min(openVal, closeVal);\n var ocHigh = Math.max(openVal, closeVal);\n var ocLowPoint = getPoint(ocLow, axisDimVal);\n var ocHighPoint = getPoint(ocHigh, axisDimVal);\n var lowestPoint = getPoint(lowestVal, axisDimVal);\n var highestPoint = getPoint(highestVal, axisDimVal);\n var ends = [];\n addBodyEnd(ends, ocHighPoint, 0);\n addBodyEnd(ends, ocLowPoint, 1);\n ends.push(subPixelOptimizePoint(highestPoint), subPixelOptimizePoint(ocHighPoint), subPixelOptimizePoint(lowestPoint), subPixelOptimizePoint(ocLowPoint));\n data.setItemLayout(dataIndex, {\n sign: getSign(store, dataIndex, openVal, closeVal, closeDimI),\n initBaseline: openVal > closeVal ? ocHighPoint[vDimIdx] : ocLowPoint[vDimIdx],\n ends: ends,\n brushRect: makeBrushRect(lowestVal, highestVal, axisDimVal)\n });\n }\n\n function getPoint(val, axisDimVal) {\n var p = [];\n p[cDimIdx] = axisDimVal;\n p[vDimIdx] = val;\n return isNaN(axisDimVal) || isNaN(val) ? [NaN, NaN] : coordSys.dataToPoint(p);\n }\n\n function addBodyEnd(ends, point, start) {\n var point1 = point.slice();\n var point2 = point.slice();\n point1[cDimIdx] = subPixelOptimize(point1[cDimIdx] + candleWidth / 2, 1, false);\n point2[cDimIdx] = subPixelOptimize(point2[cDimIdx] - candleWidth / 2, 1, true);\n start ? ends.push(point1, point2) : ends.push(point2, point1);\n }\n\n function makeBrushRect(lowestVal, highestVal, axisDimVal) {\n var pmin = getPoint(lowestVal, axisDimVal);\n var pmax = getPoint(highestVal, axisDimVal);\n pmin[cDimIdx] -= candleWidth / 2;\n pmax[cDimIdx] -= candleWidth / 2;\n return {\n x: pmin[0],\n y: pmin[1],\n width: vDimIdx ? candleWidth : pmax[0] - pmin[0],\n height: vDimIdx ? pmax[1] - pmin[1] : candleWidth\n };\n }\n\n function subPixelOptimizePoint(point) {\n point[cDimIdx] = subPixelOptimize(point[cDimIdx], 1);\n return point;\n }\n }\n\n function largeProgress(params, data) {\n // Structure: [sign, x, yhigh, ylow, sign, x, yhigh, ylow, ...]\n var points = createFloat32Array(params.count * 4);\n var offset = 0;\n var point;\n var tmpIn = [];\n var tmpOut = [];\n var dataIndex;\n var store = data.getStore();\n\n while ((dataIndex = params.next()) != null) {\n var axisDimVal = store.get(cDimI, dataIndex);\n var openVal = store.get(openDimI, dataIndex);\n var closeVal = store.get(closeDimI, dataIndex);\n var lowestVal = store.get(lowestDimI, dataIndex);\n var highestVal = store.get(highestDimI, dataIndex);\n\n if (isNaN(axisDimVal) || isNaN(lowestVal) || isNaN(highestVal)) {\n points[offset++] = NaN;\n offset += 3;\n continue;\n }\n\n points[offset++] = getSign(store, dataIndex, openVal, closeVal, closeDimI);\n tmpIn[cDimIdx] = axisDimVal;\n tmpIn[vDimIdx] = lowestVal;\n point = coordSys.dataToPoint(tmpIn, null, tmpOut);\n points[offset++] = point ? point[0] : NaN;\n points[offset++] = point ? point[1] : NaN;\n tmpIn[vDimIdx] = highestVal;\n point = coordSys.dataToPoint(tmpIn, null, tmpOut);\n points[offset++] = point ? point[1] : NaN;\n }\n\n data.setLayout('largePoints', points);\n }\n }\n};\n\nfunction getSign(store, dataIndex, openVal, closeVal, closeDimI) {\n var sign;\n\n if (openVal > closeVal) {\n sign = -1;\n } else if (openVal < closeVal) {\n sign = 1;\n } else {\n sign = dataIndex > 0 // If close === open, compare with close of last record\n ? store.get(closeDimI, dataIndex - 1) <= closeVal ? 1 : -1 : // No record of previous, set to be positive\n 1;\n }\n\n return sign;\n}\n\nfunction calculateCandleWidth(seriesModel, data) {\n var baseAxis = seriesModel.getBaseAxis();\n var extent;\n var bandWidth = baseAxis.type === 'category' ? baseAxis.getBandWidth() : (extent = baseAxis.getExtent(), Math.abs(extent[1] - extent[0]) / data.count());\n var barMaxWidth = parsePercent(retrieve2(seriesModel.get('barMaxWidth'), bandWidth), bandWidth);\n var barMinWidth = parsePercent(retrieve2(seriesModel.get('barMinWidth'), 1), bandWidth);\n var barWidth = seriesModel.get('barWidth');\n return barWidth != null ? parsePercent(barWidth, bandWidth) // Put max outer to ensure bar visible in spite of overlap.\n : Math.max(Math.min(bandWidth / 2, barMaxWidth), barMinWidth);\n}\n\nexport default candlestickLayout;","map":{"version":3,"sources":["D:/Work/WorkSpace/GitWorkSpace/TenShop/resource/ElectronicMall/src/qingge-Market/qingge-vue/node_modules/echarts/lib/chart/candlestick/candlestickLayout.js"],"names":["subPixelOptimize","createRenderPlanner","parsePercent","map","retrieve2","createFloat32Array","candlestickLayout","seriesType","plan","reset","seriesModel","coordSys","coordinateSystem","data","getData","candleWidth","calculateCandleWidth","cDimIdx","vDimIdx","coordDims","cDimI","getDimensionIndex","mapDimension","vDimsI","mapDimensionsAll","openDimI","closeDimI","lowestDimI","highestDimI","setLayout","isSimpleBox","length","progress","pipelineContext","large","largeProgress","normalProgress","params","dataIndex","store","getStore","next","axisDimVal","get","openVal","closeVal","lowestVal","highestVal","ocLow","Math","min","ocHigh","max","ocLowPoint","getPoint","ocHighPoint","lowestPoint","highestPoint","ends","addBodyEnd","push","subPixelOptimizePoint","setItemLayout","sign","getSign","initBaseline","brushRect","makeBrushRect","val","p","isNaN","NaN","dataToPoint","point","start","point1","slice","point2","pmin","pmax","x","y","width","height","points","count","offset","tmpIn","tmpOut","baseAxis","getBaseAxis","extent","bandWidth","type","getBandWidth","getExtent","abs","barMaxWidth","barMinWidth","barWidth"],"mappings":"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","sourcesContent":["\r\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\r\n\r\n\r\n/**\r\n * AUTO-GENERATED FILE. DO NOT MODIFY.\r\n */\r\n\r\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\r\nimport { subPixelOptimize } from '../../util/graphic.js';\r\nimport createRenderPlanner from '../helper/createRenderPlanner.js';\r\nimport { parsePercent } from '../../util/number.js';\r\nimport { map, retrieve2 } from 'zrender/lib/core/util.js';\r\nimport { createFloat32Array } from '../../util/vendor.js';\r\nvar candlestickLayout = {\r\n seriesType: 'candlestick',\r\n plan: createRenderPlanner(),\r\n reset: function (seriesModel) {\r\n var coordSys = seriesModel.coordinateSystem;\r\n var data = seriesModel.getData();\r\n var candleWidth = calculateCandleWidth(seriesModel, data);\r\n var cDimIdx = 0;\r\n var vDimIdx = 1;\r\n var coordDims = ['x', 'y'];\r\n var cDimI = data.getDimensionIndex(data.mapDimension(coordDims[cDimIdx]));\r\n var vDimsI = map(data.mapDimensionsAll(coordDims[vDimIdx]), data.getDimensionIndex, data);\r\n var openDimI = vDimsI[0];\r\n var closeDimI = vDimsI[1];\r\n var lowestDimI = vDimsI[2];\r\n var highestDimI = vDimsI[3];\r\n data.setLayout({\r\n candleWidth: candleWidth,\r\n // The value is experimented visually.\r\n isSimpleBox: candleWidth <= 1.3\r\n });\r\n\r\n if (cDimI < 0 || vDimsI.length < 4) {\r\n return;\r\n }\r\n\r\n return {\r\n progress: seriesModel.pipelineContext.large ? largeProgress : normalProgress\r\n };\r\n\r\n function normalProgress(params, data) {\r\n var dataIndex;\r\n var store = data.getStore();\r\n\r\n while ((dataIndex = params.next()) != null) {\r\n var axisDimVal = store.get(cDimI, dataIndex);\r\n var openVal = store.get(openDimI, dataIndex);\r\n var closeVal = store.get(closeDimI, dataIndex);\r\n var lowestVal = store.get(lowestDimI, dataIndex);\r\n var highestVal = store.get(highestDimI, dataIndex);\r\n var ocLow = Math.min(openVal, closeVal);\r\n var ocHigh = Math.max(openVal, closeVal);\r\n var ocLowPoint = getPoint(ocLow, axisDimVal);\r\n var ocHighPoint = getPoint(ocHigh, axisDimVal);\r\n var lowestPoint = getPoint(lowestVal, axisDimVal);\r\n var highestPoint = getPoint(highestVal, axisDimVal);\r\n var ends = [];\r\n addBodyEnd(ends, ocHighPoint, 0);\r\n addBodyEnd(ends, ocLowPoint, 1);\r\n ends.push(subPixelOptimizePoint(highestPoint), subPixelOptimizePoint(ocHighPoint), subPixelOptimizePoint(lowestPoint), subPixelOptimizePoint(ocLowPoint));\r\n data.setItemLayout(dataIndex, {\r\n sign: getSign(store, dataIndex, openVal, closeVal, closeDimI),\r\n initBaseline: openVal > closeVal ? ocHighPoint[vDimIdx] : ocLowPoint[vDimIdx],\r\n ends: ends,\r\n brushRect: makeBrushRect(lowestVal, highestVal, axisDimVal)\r\n });\r\n }\r\n\r\n function getPoint(val, axisDimVal) {\r\n var p = [];\r\n p[cDimIdx] = axisDimVal;\r\n p[vDimIdx] = val;\r\n return isNaN(axisDimVal) || isNaN(val) ? [NaN, NaN] : coordSys.dataToPoint(p);\r\n }\r\n\r\n function addBodyEnd(ends, point, start) {\r\n var point1 = point.slice();\r\n var point2 = point.slice();\r\n point1[cDimIdx] = subPixelOptimize(point1[cDimIdx] + candleWidth / 2, 1, false);\r\n point2[cDimIdx] = subPixelOptimize(point2[cDimIdx] - candleWidth / 2, 1, true);\r\n start ? ends.push(point1, point2) : ends.push(point2, point1);\r\n }\r\n\r\n function makeBrushRect(lowestVal, highestVal, axisDimVal) {\r\n var pmin = getPoint(lowestVal, axisDimVal);\r\n var pmax = getPoint(highestVal, axisDimVal);\r\n pmin[cDimIdx] -= candleWidth / 2;\r\n pmax[cDimIdx] -= candleWidth / 2;\r\n return {\r\n x: pmin[0],\r\n y: pmin[1],\r\n width: vDimIdx ? candleWidth : pmax[0] - pmin[0],\r\n height: vDimIdx ? pmax[1] - pmin[1] : candleWidth\r\n };\r\n }\r\n\r\n function subPixelOptimizePoint(point) {\r\n point[cDimIdx] = subPixelOptimize(point[cDimIdx], 1);\r\n return point;\r\n }\r\n }\r\n\r\n function largeProgress(params, data) {\r\n // Structure: [sign, x, yhigh, ylow, sign, x, yhigh, ylow, ...]\r\n var points = createFloat32Array(params.count * 4);\r\n var offset = 0;\r\n var point;\r\n var tmpIn = [];\r\n var tmpOut = [];\r\n var dataIndex;\r\n var store = data.getStore();\r\n\r\n while ((dataIndex = params.next()) != null) {\r\n var axisDimVal = store.get(cDimI, dataIndex);\r\n var openVal = store.get(openDimI, dataIndex);\r\n var closeVal = store.get(closeDimI, dataIndex);\r\n var lowestVal = store.get(lowestDimI, dataIndex);\r\n var highestVal = store.get(highestDimI, dataIndex);\r\n\r\n if (isNaN(axisDimVal) || isNaN(lowestVal) || isNaN(highestVal)) {\r\n points[offset++] = NaN;\r\n offset += 3;\r\n continue;\r\n }\r\n\r\n points[offset++] = getSign(store, dataIndex, openVal, closeVal, closeDimI);\r\n tmpIn[cDimIdx] = axisDimVal;\r\n tmpIn[vDimIdx] = lowestVal;\r\n point = coordSys.dataToPoint(tmpIn, null, tmpOut);\r\n points[offset++] = point ? point[0] : NaN;\r\n points[offset++] = point ? point[1] : NaN;\r\n tmpIn[vDimIdx] = highestVal;\r\n point = coordSys.dataToPoint(tmpIn, null, tmpOut);\r\n points[offset++] = point ? point[1] : NaN;\r\n }\r\n\r\n data.setLayout('largePoints', points);\r\n }\r\n }\r\n};\r\n\r\nfunction getSign(store, dataIndex, openVal, closeVal, closeDimI) {\r\n var sign;\r\n\r\n if (openVal > closeVal) {\r\n sign = -1;\r\n } else if (openVal < closeVal) {\r\n sign = 1;\r\n } else {\r\n sign = dataIndex > 0 // If close === open, compare with close of last record\r\n ? store.get(closeDimI, dataIndex - 1) <= closeVal ? 1 : -1 : // No record of previous, set to be positive\r\n 1;\r\n }\r\n\r\n return sign;\r\n}\r\n\r\nfunction calculateCandleWidth(seriesModel, data) {\r\n var baseAxis = seriesModel.getBaseAxis();\r\n var extent;\r\n var bandWidth = baseAxis.type === 'category' ? baseAxis.getBandWidth() : (extent = baseAxis.getExtent(), Math.abs(extent[1] - extent[0]) / data.count());\r\n var barMaxWidth = parsePercent(retrieve2(seriesModel.get('barMaxWidth'), bandWidth), bandWidth);\r\n var barMinWidth = parsePercent(retrieve2(seriesModel.get('barMinWidth'), 1), bandWidth);\r\n var barWidth = seriesModel.get('barWidth');\r\n return barWidth != null ? parsePercent(barWidth, bandWidth) // Put max outer to ensure bar visible in spite of overlap.\r\n : Math.max(Math.min(bandWidth / 2, barMaxWidth), barMinWidth);\r\n}\r\n\r\nexport default candlestickLayout;"]},"metadata":{},"sourceType":"module"} |