@@ -2089,3 +2089,95 @@ export function LineDraggable() {
20892089 </ LineChart >
20902090 ) ;
20912091}
2092+
2093+ export function IntradayBreaks1 ( ) {
2094+ var roundTime = echarts . time . roundTime ;
2095+ var formatTime = echarts . time . format ;
2096+ var BREAK_GAP = '1%' ;
2097+ var DATA_ZOOM_MIN_VALUE_SPAN = 3600 * 1000 ;
2098+ function generateData ( ) {
2099+ var seriesData = [ ] ;
2100+ var breaks = [ ] ;
2101+ var time = new Date ( '2024-04-09T00:00:00Z' ) ;
2102+ var endTime = new Date ( '2024-04-12T23:59:59Z' ) . getTime ( ) ;
2103+ var todayCloseTime = new Date ( ) ;
2104+ updateDayTime ( time , todayCloseTime ) ;
2105+ function updateDayTime ( time : Date , todayCloseTime : Date ) {
2106+ roundTime ( time , 'day' , true ) ;
2107+ todayCloseTime . setTime ( time . getTime ( ) ) ;
2108+ time . setUTCHours ( 9 , 30 ) ; // Open time
2109+ todayCloseTime . setUTCHours ( 16 , 0 ) ; // Close time
2110+ }
2111+ var valBreak = false ;
2112+ for ( var val = 1669 ; time . getTime ( ) <= endTime ; ) {
2113+ var delta ;
2114+ if ( valBreak ) {
2115+ delta = Math . floor ( ( Math . random ( ) - 0.5 * Math . sin ( val / 1000 ) ) * 20 * 100 ) / 10 ;
2116+ valBreak = false ;
2117+ } else {
2118+ delta = Math . floor ( ( Math . random ( ) - 0.5 * Math . sin ( val / 1000 ) ) * 20 * 100 ) / 100 ;
2119+ }
2120+ val = val + delta ;
2121+ val = + val . toFixed ( 2 ) ;
2122+ seriesData . push ( [ time . getTime ( ) , val ] ) ;
2123+ time . setMinutes ( time . getMinutes ( ) + 1 ) ;
2124+ if ( time . getTime ( ) > todayCloseTime . getTime ( ) ) {
2125+ // Use `NaN` to break the line.
2126+ seriesData . push ( [ time . getTime ( ) , NaN ] ) ;
2127+ var breakStart = todayCloseTime . getTime ( ) ;
2128+ time . setUTCDate ( time . getUTCDate ( ) + 1 ) ;
2129+ updateDayTime ( time , todayCloseTime ) ;
2130+ var breakEnd = time . getTime ( ) ;
2131+ valBreak = true ;
2132+ breaks . push ( { start : breakStart , end : breakEnd , gap : BREAK_GAP } ) ;
2133+ }
2134+ }
2135+ return { seriesData, breaks } ;
2136+ }
2137+ var _data = generateData ( ) ;
2138+
2139+ return (
2140+ < LineChart
2141+ style = { { width : 480 , height : 360 } }
2142+ useUTC
2143+ grid = { { top : '25%' , bottom : '40%' } }
2144+ xAxis = { [
2145+ {
2146+ type : 'time' ,
2147+ interval : 1000 * 60 * 30 ,
2148+ axisLabel : {
2149+ showMinLabel : true ,
2150+ showMaxLabel : true ,
2151+ formatter ( timestamp , _ , opt ) {
2152+ if ( opt . break ) {
2153+ // The third parameter is `useUTC: true`.
2154+ return formatTime ( timestamp , '{HH}:{mm}\n{weak|{dd}d}' , true ) ;
2155+ }
2156+ return formatTime ( timestamp , '{HH}:{mm}' , true ) ;
2157+ } ,
2158+ rich : { weak : { color : '#999' } } ,
2159+ } ,
2160+ breaks : _data . breaks ,
2161+ breakArea : {
2162+ expandOnClick : false ,
2163+ zigzagAmplitude : 0 ,
2164+ zigzagZ : 200 ,
2165+ itemStyle : { borderColor : 'none' , opacity : 0 } ,
2166+ } ,
2167+ } ,
2168+ ] }
2169+ yAxis = { { type : 'value' , min : 'dataMin' } }
2170+ series = { [ { type : 'line' , symbolSize : 0 , areaStyle : { } , data : _data . seriesData } ] }
2171+ >
2172+ < Title title = { { text : 'Intraday Chart with Breaks' , left : 'center' } } />
2173+ < Tooltip tooltip = { { show : true , trigger : 'axis' , axisPointer : { type : 'cross' } } } />
2174+ < DataZoom
2175+ dataZoom = { [
2176+ { type : 'inside' , minValueSpan : DATA_ZOOM_MIN_VALUE_SPAN } ,
2177+ { type : 'slider' , bottom : '30%' , minValueSpan : DATA_ZOOM_MIN_VALUE_SPAN } ,
2178+ ] }
2179+ />
2180+ < AxisBreak />
2181+ </ LineChart >
2182+ ) ;
2183+ }
0 commit comments