@@ -3,51 +3,252 @@ import { ChartGraph } from 'gestalt-charts';
33
44export default function Example ( ) {
55 const data = [
6- { name : new Date ( 2023 , 0 , 1 ) . getTime ( ) , 'Clicks' : 0.01 , 'Conversions' : 0.02 } ,
7- { name : new Date ( 2023 , 1 , 2 ) . getTime ( ) , 'Clicks' : 0.02 , 'Conversions' : 0.023 } ,
8- { name : new Date ( 2023 , 2 , 3 ) . getTime ( ) , 'Clicks' : 0.03 , 'Conversions' : 0.05 } ,
9- { name : new Date ( 2023 , 3 , 4 ) . getTime ( ) , 'Clicks' : 0.025 , 'Conversions' : 0.03 } ,
10- { name : new Date ( 2023 , 4 , 5 ) . getTime ( ) , 'Clicks' : 0.04 , 'Conversions' : 0.04 } ,
11- { name : new Date ( 2023 , 5 , 6 ) . getTime ( ) , 'Clicks' : 0.045 , 'Conversions' : 0.07 } ,
12- { name : new Date ( 2023 , 6 , 7 ) . getTime ( ) , 'Clicks' : 0.05 , 'Conversions' : 0.06 } ,
13- { name : new Date ( 2023 , 7 , 8 ) . getTime ( ) , 'Clicks' : 0.06 , 'Conversions' : 0.02 } ,
14- { name : new Date ( 2023 , 8 , 8 ) . getTime ( ) , 'Clicks' : 0.04 , 'Conversions' : 0.04 } ,
15- { name : new Date ( 2023 , 9 , 8 ) . getTime ( ) , 'Clicks' : 0.075 , 'Conversions' : 0.05 } ,
16- { name : new Date ( 2023 , 10 , 8 ) . getTime ( ) , 'Clicks' : 0.04 , 'Conversions' : 0.055 } ,
17- { name : new Date ( 2023 , 11 , 8 ) . getTime ( ) , 'Clicks' : 0.03 , 'Conversions' : 0.07 } ,
6+ {
7+ 'name' : 0 ,
8+ 'totalSpend' : 483.031257 ,
9+ 'formattedDate' : 'Mar 4' ,
10+ 'formattedDateShort' : 'Mar 4, 12:00 AM (UTC)' ,
11+ 'date' : '2025-03-04T00:00:00.000Z' ,
12+ 'showIntervalOnXAxis' : true ,
13+ 'totalSpendFormatted' : '$483' ,
14+ } ,
15+ {
16+ 'name' : 1 ,
17+ 'totalSpend' : 512.685398 ,
18+ 'formattedDate' : '1:00 AM' ,
19+ 'formattedDateShort' : 'Mar 4, 1:00 AM (UTC)' ,
20+ 'date' : '2025-03-04T01:00:00.000Z' ,
21+ 'showIntervalOnXAxis' : false ,
22+ 'totalSpendFormatted' : '$513' ,
23+ } ,
24+ {
25+ 'name' : 2 ,
26+ 'totalSpend' : 600.981313 ,
27+ 'formattedDate' : '2:00 AM' ,
28+ 'formattedDateShort' : 'Mar 4, 2:00 AM (UTC)' ,
29+ 'date' : '2025-03-04T02:00:00.000Z' ,
30+ 'showIntervalOnXAxis' : false ,
31+ 'totalSpendFormatted' : '$601' ,
32+ } ,
33+ {
34+ 'name' : 3 ,
35+ 'totalSpend' : 547.214005 ,
36+ 'formattedDate' : '3:00 AM' ,
37+ 'formattedDateShort' : 'Mar 4, 3:00 AM (UTC)' ,
38+ 'date' : '2025-03-04T03:00:00.000Z' ,
39+ 'showIntervalOnXAxis' : false ,
40+ 'totalSpendFormatted' : '$547' ,
41+ } ,
42+ {
43+ 'name' : 4 ,
44+ 'totalSpend' : 489.703595 ,
45+ 'formattedDate' : '4:00 AM' ,
46+ 'formattedDateShort' : 'Mar 4, 4:00 AM (UTC)' ,
47+ 'date' : '2025-03-04T04:00:00.000Z' ,
48+ 'showIntervalOnXAxis' : true ,
49+ 'totalSpendFormatted' : '$490' ,
50+ } ,
51+ {
52+ 'name' : 5 ,
53+ 'totalSpend' : 420.505765 ,
54+ 'formattedDate' : '5:00 AM' ,
55+ 'formattedDateShort' : 'Mar 4, 5:00 AM (UTC)' ,
56+ 'date' : '2025-03-04T05:00:00.000Z' ,
57+ 'showIntervalOnXAxis' : false ,
58+ 'totalSpendFormatted' : '$421' ,
59+ } ,
60+ {
61+ 'name' : 6 ,
62+ 'totalSpend' : 288.634428 ,
63+ 'formattedDate' : '6:00 AM' ,
64+ 'formattedDateShort' : 'Mar 4, 6:00 AM (UTC)' ,
65+ 'date' : '2025-03-04T06:00:00.000Z' ,
66+ 'showIntervalOnXAxis' : false ,
67+ 'totalSpendFormatted' : '$289' ,
68+ } ,
69+ {
70+ 'name' : 7 ,
71+ 'totalSpend' : 189.011683 ,
72+ 'formattedDate' : '7:00 AM' ,
73+ 'formattedDateShort' : 'Mar 4, 7:00 AM (UTC)' ,
74+ 'date' : '2025-03-04T07:00:00.000Z' ,
75+ 'showIntervalOnXAxis' : false ,
76+ 'totalSpendFormatted' : '$189' ,
77+ } ,
78+ {
79+ 'name' : 8 ,
80+ 'totalSpend' : 121.201872 ,
81+ 'formattedDate' : '8:00 AM' ,
82+ 'formattedDateShort' : 'Mar 4, 8:00 AM (UTC)' ,
83+ 'date' : '2025-03-04T08:00:00.000Z' ,
84+ 'showIntervalOnXAxis' : true ,
85+ 'totalSpendFormatted' : '$121' ,
86+ } ,
87+ {
88+ 'name' : 9 ,
89+ 'totalSpend' : 103.858721 ,
90+ 'formattedDate' : '9:00 AM' ,
91+ 'formattedDateShort' : 'Mar 4, 9:00 AM (UTC)' ,
92+ 'date' : '2025-03-04T09:00:00.000Z' ,
93+ 'showIntervalOnXAxis' : false ,
94+ 'totalSpendFormatted' : '$104' ,
95+ } ,
96+ {
97+ 'name' : 10 ,
98+ 'totalSpend' : 115.262585 ,
99+ 'formattedDate' : '10:00 AM' ,
100+ 'formattedDateShort' : 'Mar 4, 10:00 AM (UTC)' ,
101+ 'date' : '2025-03-04T10:00:00.000Z' ,
102+ 'showIntervalOnXAxis' : false ,
103+ 'totalSpendFormatted' : '$115' ,
104+ } ,
105+ {
106+ 'name' : 11 ,
107+ 'totalSpend' : 182.740537 ,
108+ 'formattedDate' : '11:00 AM' ,
109+ 'formattedDateShort' : 'Mar 4, 11:00 AM (UTC)' ,
110+ 'date' : '2025-03-04T11:00:00.000Z' ,
111+ 'showIntervalOnXAxis' : false ,
112+ 'totalSpendFormatted' : '$183' ,
113+ } ,
114+ {
115+ 'name' : 12 ,
116+ 'totalSpend' : 284.727574 ,
117+ 'formattedDate' : '12:00 PM' ,
118+ 'formattedDateShort' : 'Mar 4, 12:00 PM (UTC)' ,
119+ 'date' : '2025-03-04T12:00:00.000Z' ,
120+ 'showIntervalOnXAxis' : true ,
121+ 'totalSpendFormatted' : '$285' ,
122+ } ,
123+ {
124+ 'name' : 13 ,
125+ 'totalSpend' : 336.484758 ,
126+ 'formattedDate' : '1:00 PM' ,
127+ 'formattedDateShort' : 'Mar 4, 1:00 PM (UTC)' ,
128+ 'date' : '2025-03-04T13:00:00.000Z' ,
129+ 'showIntervalOnXAxis' : false ,
130+ 'totalSpendFormatted' : '$336' ,
131+ } ,
132+ {
133+ 'name' : 14 ,
134+ 'totalSpend' : 394.073601 ,
135+ 'formattedDate' : '2:00 PM' ,
136+ 'formattedDateShort' : 'Mar 4, 2:00 PM (UTC)' ,
137+ 'date' : '2025-03-04T14:00:00.000Z' ,
138+ 'showIntervalOnXAxis' : false ,
139+ 'totalSpendFormatted' : '$394' ,
140+ } ,
141+ {
142+ 'name' : 15 ,
143+ 'totalSpend' : 453.56102 ,
144+ 'formattedDate' : '3:00 PM' ,
145+ 'formattedDateShort' : 'Mar 4, 3:00 PM (UTC)' ,
146+ 'date' : '2025-03-04T15:00:00.000Z' ,
147+ 'showIntervalOnXAxis' : false ,
148+ 'totalSpendFormatted' : '$454' ,
149+ } ,
150+ {
151+ 'name' : 16 ,
152+ 'totalSpend' : 418.084545 ,
153+ 'formattedDate' : '4:00 PM' ,
154+ 'formattedDateShort' : 'Mar 4, 4:00 PM (UTC)' ,
155+ 'date' : '2025-03-04T16:00:00.000Z' ,
156+ 'showIntervalOnXAxis' : true ,
157+ 'totalSpendFormatted' : '$418' ,
158+ } ,
159+ {
160+ 'name' : 17 ,
161+ 'totalSpend' : 454.60126 ,
162+ 'formattedDate' : '5:00 PM' ,
163+ 'formattedDateShort' : 'Mar 4, 5:00 PM (UTC)' ,
164+ 'date' : '2025-03-04T17:00:00.000Z' ,
165+ 'showIntervalOnXAxis' : false ,
166+ 'totalSpendFormatted' : '$455' ,
167+ } ,
168+ {
169+ 'name' : 18 ,
170+ 'totalSpend' : 460.926791 ,
171+ 'formattedDate' : '6:00 PM' ,
172+ 'formattedDateShort' : 'Mar 4, 6:00 PM (UTC)' ,
173+ 'date' : '2025-03-04T18:00:00.000Z' ,
174+ 'showIntervalOnXAxis' : false ,
175+ 'totalSpendFormatted' : '$461' ,
176+ } ,
177+ {
178+ 'name' : 19 ,
179+ 'totalSpend' : 504.717764 ,
180+ 'formattedDate' : '7:00 PM' ,
181+ 'formattedDateShort' : 'Mar 4, 7:00 PM (UTC)' ,
182+ 'date' : '2025-03-04T19:00:00.000Z' ,
183+ 'showIntervalOnXAxis' : false ,
184+ 'totalSpendFormatted' : '$505' ,
185+ } ,
186+ {
187+ 'name' : 20 ,
188+ 'totalSpend' : 704.432954 ,
189+ 'formattedDate' : '8:00 PM' ,
190+ 'formattedDateShort' : 'Mar 4, 8:00 PM (UTC)' ,
191+ 'date' : '2025-03-04T20:00:00.000Z' ,
192+ 'showIntervalOnXAxis' : true ,
193+ 'totalSpendFormatted' : '$704' ,
194+ } ,
195+ {
196+ 'name' : 21 ,
197+ 'totalSpend' : 811.798855 ,
198+ 'formattedDate' : '9:00 PM' ,
199+ 'formattedDateShort' : 'Mar 4, 9:00 PM (UTC)' ,
200+ 'date' : '2025-03-04T21:00:00.000Z' ,
201+ 'showIntervalOnXAxis' : false ,
202+ 'totalSpendFormatted' : '$812' ,
203+ } ,
204+ {
205+ 'name' : 22 ,
206+ 'totalSpend' : 846.303174 ,
207+ 'formattedDate' : '10:00 PM' ,
208+ 'formattedDateShort' : 'Mar 4, 10:00 PM (UTC)' ,
209+ 'date' : '2025-03-04T22:00:00.000Z' ,
210+ 'showIntervalOnXAxis' : false ,
211+ 'totalSpendFormatted' : '$846' ,
212+ } ,
213+ {
214+ 'name' : 23 ,
215+ 'totalSpend' : 826.89691 ,
216+ 'formattedDate' : '11:00 PM' ,
217+ 'formattedDateShort' : 'Mar 4, 11:00 PM (UTC)' ,
218+ 'date' : '2025-03-04T23:00:00.000Z' ,
219+ 'showIntervalOnXAxis' : false ,
220+ 'totalSpendFormatted' : '$827' ,
221+ } ,
18222 ] ;
19223
224+ const chartData = data . map ( ( { name, totalSpend } ) => ( { name, totalSpend } ) ) ;
225+
226+ const axisData = { } ;
227+
228+ data . forEach ( ( { name, totalSpend, formattedDate, showIntervalOnXAxis } ) => {
229+ // @ts -expect-error - TS7053
230+ axisData [ name ] = { totalSpend, formattedDate, showIntervalOnXAxis } ;
231+ } ) ;
232+
20233 return (
21234 < ChartGraph
22235 accessibilityLabel = "Clicks compared to conversions (example)"
23- data = { data }
24- elements = { [
25- { type : 'bar' , id : 'Clicks' , axis : 'left' } ,
26- { type : 'line' , id : 'Conversions' , axis : 'right' } ,
27- ] }
28- layout = "verticalBiaxial"
236+ data = { chartData }
237+ elements = { [ { type : 'line' , id : 'totalSpend' , axis : 'left' } ] }
238+ layout = "vertical"
29239 modalZIndex = { new FixedZIndex ( 11 ) }
30240 onVisualPatternChange = { ( ) => { } }
31241 range = { {
32242 xAxisBottom : [ 'auto' , 'auto' ] ,
33243 } }
34244 tickFormatter = { {
35- timeseries : ( date ) =>
36- `${ new Intl . DateTimeFormat ( 'en-US' , { month : 'short' } ) . format (
37- date ,
38- ) } -${ new Intl . DateTimeFormat ( 'en-US' , { day : '2-digit' } ) . format ( date ) } `,
39- yAxisLeft : ( value ) => `${ value } %` ,
40- yAxisRight : ( value ) => `${ value } %` ,
41- xAxisBottom : ( date , index ) => {
42- if ( index === 0 ) return 'Quarter 1' ;
43- if ( index === 3 ) return 'Quarter 2' ;
44- if ( index === 6 ) return 'Quarter 3' ;
45- if ( index === 9 ) return 'Quarter 4' ;
46- return '' ;
47- } ,
245+ timeseries : ( idx ) => idx ,
246+ xAxisBottom : ( idx ) =>
247+ // @ts -expect-error - TS7053
248+ axisData [ idx ] . showIntervalOnXAxis ? axisData [ idx ] . formattedDate : '' ,
48249 } }
49250 title = "Clicks compared to conversions"
50- type = "combo "
251+ type = "line "
51252 visualPatternSelected = "disabled"
52253 />
53254 ) ;
0 commit comments