| <!DOCTYPE html> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| --> |
| |
| |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1" /> |
| <script src="lib/simpleRequire.js"></script> |
| <script src="lib/config.js"></script> |
| <script src="lib/jquery.min.js"></script> |
| <script src="lib/facePrint.js"></script> |
| <script src="lib/testHelper.js"></script> |
| <!-- <script src="ut/lib/canteen.js"></script> --> |
| <link rel="stylesheet" href="lib/reset.css" /> |
| </head> |
| <body> |
| <style> |
| </style> |
| |
| |
| |
| <div id="main0"></div> |
| |
| |
| |
| |
| |
| |
| <script> |
| require([ |
| 'echarts', |
| // 'map/js/china', |
| // './data/nutrients.json' |
| ], function (echarts) { |
| var option; |
| |
| const lastClose = 100; |
| const data = []; |
| let date = new Date('2024-07-11 9:30:00'); |
| const endDate = new Date('2024-07-11 15:00:00'); |
| let value = lastClose; |
| let max = -Number.MAX_VALUE; |
| let min = Number.MAX_VALUE; |
| for (; date <= endDate;) { |
| if (date < new Date('2024-07-11 11:30:00').getTime() |
| || date > new Date('2024-07-11 13:00:00').getTime() |
| ) { |
| value = Math.max(0, value + Math.round((Math.random() - 0.5) * 20)); |
| } |
| |
| if (value > max) { |
| max = value; |
| } |
| if (value < min) { |
| min = value; |
| } |
| data.push([ |
| date, |
| value |
| ]); |
| date = new Date(date.getTime() + 1000 * 60); |
| } |
| |
| option = { |
| xAxis: { |
| type: 'time', |
| axisLabel: { |
| showMinLabel: true, |
| showMaxLabel: true, |
| } |
| }, |
| yAxis: { |
| axisLabel: { |
| show: false, |
| }, |
| min: 'dataMin', |
| max: 'dataMax' |
| }, |
| series: { |
| type: 'line', |
| data, |
| showSymbol: false, |
| markPoint: { |
| silent: true, |
| symbol: 'circle', |
| symbolSize: 0, |
| label: { |
| position: 'top', |
| distance: 0, |
| padding: 5, |
| textBorderColor: '#fff', |
| textBorderWidth: 2 |
| }, |
| data: [{ |
| type: 'min', |
| x: 0, |
| y: 0, |
| relativeTo: 'coordinate', |
| label: { |
| align: 'left', |
| verticalAlign: 'top', |
| color: min > lastClose ? 'red' : 'green', |
| } |
| }, { |
| type: 'max', |
| x: 0, |
| y: '100%', |
| relativeTo: 'coordinate', |
| label: { |
| align: 'left', |
| verticalAlign: 'bottom', |
| color: max > lastClose ? 'red' : 'green', |
| } |
| }, { |
| type: 'middle', |
| x: 0, |
| y: '50%', |
| relativeTo: 'coordinate', |
| label: { |
| align: 'left', |
| verticalAlign: 'middle', |
| formatter: () => { |
| return (max + min) / 2; |
| }, |
| color: (max + min) / 2 > lastClose ? 'red' : 'green', |
| } |
| }, { |
| type: 'min', |
| x: '100%', |
| y: 0, |
| name: 'abcd', |
| relativeTo: 'coordinate', |
| label: { |
| align: 'right', |
| verticalAlign: 'top', |
| formatter: () => { |
| // Percentage of min |
| return ((min - lastClose) / lastClose * 100).toFixed(2) + '%'; |
| }, |
| color: min > lastClose ? 'red' : 'green', |
| } |
| }, { |
| type: 'max', |
| x: '100%', |
| y: '100%', |
| relativeTo: 'coordinate', |
| label: { |
| align: 'right', |
| verticalAlign: 'bottom', |
| formatter: () => { |
| // Percentage of max |
| return ((max - lastClose) / lastClose * 100).toFixed(2) + '%'; |
| }, |
| color: max > lastClose ? 'red' : 'green', |
| } |
| }, { |
| name: 'middlePercentage', |
| x: '100%', |
| y: '50%', |
| relativeTo: 'coordinate', |
| label: { |
| align: 'right', |
| verticalAlign: 'middle', |
| formatter: () => { |
| return (((max + min) / 2 - lastClose) / lastClose * 100).toFixed(2) + '%'; |
| }, |
| color: (max + min) / 2 > lastClose ? 'red' : 'green', |
| } |
| }], |
| } |
| } |
| }; |
| |
| var chart = testHelper.create(echarts, 'main0', { |
| title: [ |
| 'Test Case Description of main0', |
| '(Muliple lines and **emphasis** are supported in description)' |
| ], |
| option: option |
| // height: 300, |
| // buttons: [{text: 'btn-txt', onclick: function () {}}], |
| // recordCanvas: true, |
| }); |
| }); |
| </script> |
| |
| |
| </body> |
| </html> |
| |