| <!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> | |
| <link rel="stylesheet" href="lib/reset.css" /> | |
| </head> | |
| <body> | |
| <style> | |
| </style> | |
| <div id="main0"></div> | |
| <div id="main1"></div> | |
| <script> | |
| require([ | |
| 'echarts' | |
| ], function (echarts) { | |
| const data = [ | |
| ["2021-03-03T15:30:00.000Z", 48.1], | |
| ["2021-03-03T15:45:00.000Z", 47.9], | |
| ["2021-03-03T16:00:00.000Z", 47.7], | |
| ["2021-03-03T16:15:00.000Z", 47.6], | |
| ["2021-03-03T16:30:00.000Z", 47.8], | |
| ["2021-03-03T16:45:00.000Z", 48.2], | |
| ["2021-03-03T17:00:00.000Z", 48.3], | |
| ["2021-03-03T17:45:00.000Z", 48.3], | |
| ["2021-03-03T18:00:00.000Z", 48.3], | |
| ["2021-03-03T18:15:00.000Z", 48.6], | |
| ["2021-03-03T18:30:00.000Z", 48.3], | |
| ["2021-03-03T18:45:00.000Z", 48.3], | |
| ["2021-03-03T19:00:00.000Z", 48.8], | |
| ["2021-03-03T19:15:00.000Z", 48.3], | |
| ["2021-03-03T19:30:00.000Z", 48.3], | |
| ["2021-03-03T19:45:00.000Z", 48.3], | |
| ["2021-03-03T20:00:00.000Z", 48.3], | |
| ["2021-03-03T20:15:00.000Z", 48.3], | |
| ["2021-03-03T20:30:00.000Z", 48.3], | |
| ["2021-03-03T20:45:00.000Z", 48.7], | |
| ["2021-03-03T21:00:00.000Z", 46.3], | |
| ["2021-03-03T21:15:00.000Z", 42.3], | |
| ["2021-03-03T21:30:00.000Z", 44.3], | |
| ["2021-03-03T21:45:00.000Z", 48.9], | |
| ["2021-03-03T22:00:00.000Z", 48.1], | |
| ["2021-03-03T22:15:00.000Z", 48.3], | |
| ["2021-03-03T22:30:00.000Z", 49.7], | |
| ["2021-03-03T22:45:00.000Z", 49.1], | |
| ["2021-03-03T23:00:00.000Z", 48.3], | |
| ["2021-03-03T23:15:00.000Z", 46.8], | |
| ["2021-03-03T23:30:00.000Z", 48.3], | |
| ["2021-03-03T23:45:00.000Z", null], | |
| ["2021-03-04T00:00:00.000Z", 48.3], | |
| ["2021-03-04T00:15:00.000Z", 51], | |
| ["2021-03-04T00:30:00.000Z", 51.5], | |
| ["2021-03-04T00:45:00.000Z", 51.9], | |
| ["2021-03-04T01:00:00.000Z", 52.4], | |
| ["2021-03-04T01:15:00.000Z", 52.7], | |
| ["2021-03-04T01:30:00.000Z", 52.9], | |
| ["2021-03-04T01:45:00.000Z", 53], | |
| ["2021-03-04T02:00:00.000Z", 53.2], | |
| ["2021-03-04T02:15:00.000Z", 53.3], | |
| ["2021-03-04T05:15:00.000Z", null], | |
| ["2021-03-04T02:30:00.000Z", null], | |
| ["2021-03-04T02:45:00.000Z", null], | |
| ["2021-03-04T03:00:00.000Z", null], | |
| ["2021-03-04T03:15:00.000Z", null], | |
| ["2021-03-04T03:30:00.000Z", null], | |
| ["2021-03-04T03:45:00.000Z", null], | |
| ["2021-03-04T04:00:00.000Z", null], | |
| ["2021-03-04T04:15:00.000Z", null], | |
| ["2021-03-04T04:30:00.000Z", null], | |
| ["2021-03-04T04:45:00.000Z", null], | |
| ["2021-03-04T05:00:00.000Z", null], | |
| ["2021-03-04T05:15:00.000Z", null], | |
| ["2021-03-04T05:30:00.000Z", null], | |
| ["2021-03-04T05:45:00.000Z", 53.3], | |
| ["2021-03-04T06:00:00.000Z", 53.3], | |
| ["2021-03-04T06:15:00.000Z", 53.5], | |
| ["2021-03-04T06:30:00.000Z", 53.6], | |
| ["2021-03-04T06:45:00.000Z", 53.7], | |
| ["2021-03-04T07:00:00.000Z", 53.7], | |
| ["2021-03-04T07:15:00.000Z", 53.7], | |
| ["2021-03-04T07:30:00.000Z", 53.7], | |
| ["2021-03-04T07:45:00.000Z", 53.6], | |
| ["2021-03-04T08:00:00.000Z", 53.5], | |
| ["2021-03-04T08:15:00.000Z", 53.4], | |
| ["2021-03-04T08:30:00.000Z", 53.1], | |
| ["2021-03-04T08:45:00.000Z", 52.8], | |
| ["2021-03-04T09:00:00.000Z", 52.5] | |
| ]; | |
| const start = new Date('2021-03-04T09:15:00.000Z'); | |
| for (let i = 0; i < 1560; i++) { | |
| const date = new Date(start.getTime() + i * 15 * 60 * 1000); | |
| const value = 40 + Number((Math.random() * (3 + Math.ceil(i / 100))).toFixed(1)); | |
| data.push([date.toISOString(), value]); | |
| } | |
| const option = { | |
| title: { text: "Data" }, | |
| tooltip: { trigger: "axis", axisPointer: { animation: true } }, | |
| legend: { | |
| data: ["relative humidity"], | |
| }, | |
| dataZoom: [ | |
| { realtime: true, xAxisIndex: [0, 1], filterMode: "weakFilter", id: 'dz-s' }, | |
| { type: "inside", realtime: true, xAxisIndex: [0, 1] }, | |
| ], | |
| toolbox: { feature: { saveAsImage: {}, restore: {} } }, | |
| xAxis: { | |
| min: '2021-03-03T15:00:00.000Z', | |
| type: "time" | |
| }, | |
| yAxis: [ | |
| { | |
| type: "value", | |
| position: "left", | |
| name: "%", | |
| min: 0, | |
| max: 100, | |
| _medium: "relative humidity" | |
| }, | |
| ], | |
| series: [ | |
| { | |
| name: "relative humidity", | |
| type: "line", | |
| step: "start", | |
| showSymbol: false, | |
| yAxisIndex: 0, | |
| sampling: "lttb", | |
| connectNulls: false, | |
| data: data | |
| }, | |
| ], | |
| }; | |
| var chart = testHelper.create(echarts, 'main0', { | |
| title: [ | |
| 'Sampling with lttb, test **connectNulls**', | |
| 'NaN point should not be filtered, toggle connectNulls value, compare it.', | |
| ], | |
| option, | |
| width: 600, | |
| height: 300, | |
| buttons: [ | |
| { | |
| text: 'find null series', | |
| onclick: function () { | |
| chart.dispatchAction({ | |
| type: 'dataZoom', | |
| batch: [ | |
| {id: 'dz-s', start: 0, end: 10} | |
| ] | |
| }); | |
| } | |
| }, | |
| { | |
| text: 'toggle connectNulls value', | |
| onclick: function () { | |
| const flag = option.series[0].connectNulls; | |
| option.series[0].connectNulls = !flag; | |
| chart.setOption(option); | |
| } | |
| }, | |
| { | |
| text: 'switch sampling between lttb and none', | |
| onclick: function () { | |
| const sampling = option.series[0].sampling; | |
| option.series[0].sampling = sampling === 'lttb' ? 'none' : 'lttb'; | |
| console.log('current setting:', option.series[0].sampling); | |
| chart.setOption(option); | |
| } | |
| } | |
| ] | |
| }); | |
| }); | |
| </script> | |
| <script> | |
| require([ | |
| 'echarts' | |
| ], function (echarts) { | |
| const data = []; | |
| let operator = 1; | |
| let value = 50; | |
| const start = new Date('2021-03-03T15:30:00.000Z'); | |
| for (let i = 0; i < 1950; i++) { | |
| if (i % 100 === 0) { | |
| operator = Math.random() > 0.5 ? 1 : -1; | |
| } | |
| const date = new Date(start.getTime() + i * 15 * 60 * 1000); | |
| if (i < 639 || i > 943) { | |
| value += operator * Number((Math.random() * 2 - 1)); | |
| value = Math.max(Math.min(100, value), 0); | |
| data.push([date.toISOString(), value.toFixed(1)]); | |
| } | |
| else if (i === 934) { | |
| data.push([date.toISOString(), null]); | |
| } | |
| } | |
| const option = { | |
| title: { text: "Data" }, | |
| tooltip: { trigger: "axis", axisPointer: { animation: true } }, | |
| legend: { | |
| data: ["relative humidity"], | |
| }, | |
| dataZoom: [ | |
| { realtime: true, xAxisIndex: [0, 1], filterMode: "weakFilter" }, | |
| { type: "inside", realtime: true, xAxisIndex: [0, 1] }, | |
| ], | |
| toolbox: { feature: { saveAsImage: {}, restore: {} } }, | |
| xAxis: { type: "time" }, | |
| yAxis: [ | |
| { | |
| type: "value", | |
| position: "left", | |
| name: "%", | |
| min: 0, | |
| max: 100, | |
| _medium: "relative humidity" | |
| }, | |
| ], | |
| series: [ | |
| { | |
| name: "relative humidity", | |
| type: "line", | |
| step: "start", | |
| showSymbol: false, | |
| yAxisIndex: 0, | |
| sampling: "lttb", | |
| connectNulls: false, | |
| data | |
| }, | |
| ] | |
| }; | |
| var chart1 = testHelper.create(echarts, 'main1', { | |
| title: [ | |
| 'Sampling with lttb, test **connectNulls**', | |
| 'toggle connectNulls value or switch setting, check it.' | |
| ], | |
| option, | |
| width: 600, | |
| height: 400, | |
| buttons: [ | |
| { | |
| text: 'toggle connectNulls value', | |
| onclick: function () { | |
| const flag = option.series[0].connectNulls; | |
| option.series[0].connectNulls = !flag; | |
| chart1.setOption(option); | |
| } | |
| }, | |
| { | |
| text: 'switch sampling between lttb and none', | |
| onclick: function () { | |
| const sampling = option.series[0].sampling; | |
| option.series[0].sampling = sampling === 'lttb' ? 'none' : 'lttb'; | |
| console.log('current setting:', option.series[0].sampling); | |
| chart1.setOption(option); | |
| } | |
| } | |
| ] | |
| }); | |
| }); | |
| </script> | |
| </body> | |
| </html> |