|
12 | 12 | timeMillisecond, |
13 | 13 | } from 'd3-time'; |
14 | 14 | import { RangeField } from 'svelte-ux'; |
| 15 | + import { startOfInterval } from '@layerstack/utils'; |
15 | 16 |
|
16 | 17 | import Preview from '$lib/docs/Preview.svelte'; |
17 | 18 |
|
|
21 | 22 |
|
22 | 23 | const largeData = createDateSeries({ count: 100, min: 50, max: 100, value: 'integer' }); |
23 | 24 |
|
24 | | - const now = new Date(); |
| 25 | + const today = startOfInterval('day', new Date()); |
25 | 26 |
|
26 | | - let initialXDomain = [timeYear.offset(now, -4), now]; |
27 | | - let xDomain = $state([timeYear.offset(now, -4), now]); |
| 27 | + let initialXDomain = [timeYear.offset(today, -4), today]; |
| 28 | + let xDomain = $state([timeYear.offset(today, -4), today]); |
28 | 29 |
|
29 | 30 | const timeScaleExamples = [ |
30 | | - { label: '5 years', domain: [timeYear.offset(now, -5), now], interval: timeYear.every(1) }, |
31 | | - { label: '1 year', domain: [timeYear.offset(now, -1), now], interval: timeMonth.every(1) }, |
32 | | - { label: '6 months', domain: [timeMonth.offset(now, -6), now], interval: timeMonth.every(1) }, |
33 | | - { label: '90 days', domain: [timeDay.offset(now, -90), now], interval: timeDay.every(7) }, |
34 | | - { label: '30 days', domain: [timeDay.offset(now, -30), now], interval: timeDay.every(1) }, |
35 | | - { label: '10 days', domain: [timeDay.offset(now, -10), now], interval: timeDay.every(1) }, |
36 | | - { label: '7 days', domain: [timeDay.offset(now, -7), now], interval: timeDay.every(1) }, |
37 | | - { label: '3 days', domain: [timeDay.offset(now, -3), now], interval: timeHour.every(4) }, |
38 | | - { label: '24 hours', domain: [timeHour.offset(now, -24), now], interval: timeHour.every(1) }, |
39 | | - { label: '12 hours', domain: [timeHour.offset(now, -12), now], interval: timeHour.every(1) }, |
40 | | - { label: '1 hour', domain: [timeHour.offset(now, -1), now], interval: timeMinute.every(5) }, |
| 31 | + { label: '5 years', domain: [timeYear.offset(today, -5), today], interval: timeYear.every(1) }, |
| 32 | + { label: '1 year', domain: [timeYear.offset(today, -1), today], interval: timeMonth.every(1) }, |
| 33 | + { |
| 34 | + label: '6 months', |
| 35 | + domain: [timeMonth.offset(today, -6), today], |
| 36 | + interval: timeMonth.every(1), |
| 37 | + }, |
| 38 | + { label: '90 days', domain: [timeDay.offset(today, -90), today], interval: timeDay.every(7) }, |
| 39 | + { label: '30 days', domain: [timeDay.offset(today, -30), today], interval: timeDay.every(1) }, |
| 40 | + { label: '10 days', domain: [timeDay.offset(today, -10), today], interval: timeDay.every(1) }, |
| 41 | + { label: '7 days', domain: [timeDay.offset(today, -7), today], interval: timeDay.every(1) }, |
| 42 | + { label: '3 days', domain: [timeDay.offset(today, -3), today], interval: timeHour.every(4) }, |
| 43 | + { |
| 44 | + label: '24 hours', |
| 45 | + domain: [timeHour.offset(today, -24), today], |
| 46 | + interval: timeHour.every(1), |
| 47 | + }, |
| 48 | + { |
| 49 | + label: '12 hours', |
| 50 | + domain: [timeHour.offset(today, -12), today], |
| 51 | + interval: timeHour.every(1), |
| 52 | + }, |
| 53 | + { label: '1 hour', domain: [timeHour.offset(today, -1), today], interval: timeMinute.every(5) }, |
41 | 54 | { |
42 | 55 | label: '1 minute', |
43 | | - domain: [timeMinute.offset(now, -1), now], |
| 56 | + domain: [timeMinute.offset(today, -1), today], |
44 | 57 | interval: timeSecond.every(10), |
45 | 58 | }, |
46 | 59 | { |
47 | 60 | label: '1 second', |
48 | | - domain: [timeSecond.offset(now, -1), now], |
| 61 | + domain: [timeSecond.offset(today, -1), today], |
49 | 62 | interval: timeMillisecond.every(100), |
50 | 63 | }, |
51 | 64 | ]; |
|
63 | 76 | <div class="h-[300px] p-4 border rounded-sm"> |
64 | 77 | <Chart |
65 | 78 | xScale={scaleTime()} |
66 | | - xDomain={[timeDay.offset(now, -10), now]} |
| 79 | + xDomain={[timeDay.offset(today, -10), today]} |
67 | 80 | yDomain={[0, 100]} |
68 | 81 | yNice |
69 | 82 | padding={{ top: 20, bottom: 20, left: 20, right: 20 }} |
|
82 | 95 | <div class="h-[300px] p-4 border rounded-sm"> |
83 | 96 | <Chart |
84 | 97 | xScale={scaleTime()} |
85 | | - xDomain={[timeDay.offset(now, -10), now]} |
| 98 | + xDomain={[timeDay.offset(today, -10), today]} |
86 | 99 | yDomain={[0, 100]} |
87 | 100 | yNice |
88 | 101 | padding={{ top: 20, bottom: 20, left: 20, right: 20 }} |
|
101 | 114 | <div class="h-[300px] p-4 border rounded-sm"> |
102 | 115 | <Chart |
103 | 116 | xScale={scaleTime()} |
104 | | - xDomain={[timeDay.offset(now, -10), now]} |
| 117 | + xDomain={[timeDay.offset(today, -10), today]} |
105 | 118 | yDomain={[0, 100]} |
106 | 119 | yNice |
107 | 120 | padding={{ top: 20, bottom: 20, left: 20, right: 20 }} |
|
120 | 133 | <div class="h-[300px] p-4 border rounded-sm"> |
121 | 134 | <Chart |
122 | 135 | xScale={scaleTime()} |
123 | | - xDomain={[timeDay.offset(now, -10), now]} |
| 136 | + xDomain={[timeDay.offset(today, -10), today]} |
124 | 137 | yDomain={[0, 100]} |
125 | 138 | yNice |
126 | 139 | padding={{ top: 20, bottom: 20, left: 20, right: 20 }} |
|
139 | 152 | <div class="h-[300px] p-4 border rounded-sm"> |
140 | 153 | <Chart |
141 | 154 | xScale={scaleTime()} |
142 | | - xDomain={[timeDay.offset(now, -10), now]} |
| 155 | + xDomain={[timeDay.offset(today, -10), today]} |
143 | 156 | yDomain={[0, 100]} |
144 | 157 | yNice |
145 | 158 | padding={{ top: 20, bottom: 20, left: 20, right: 20 }} |
|
158 | 171 | <div class="h-[300px] p-4 border rounded-sm"> |
159 | 172 | <Chart |
160 | 173 | xScale={scaleTime()} |
161 | | - xDomain={[timeDay.offset(now, -10), now]} |
| 174 | + xDomain={[timeDay.offset(today, -10), today]} |
162 | 175 | yDomain={[0, 100]} |
163 | 176 | yNice |
164 | 177 | padding={{ top: 20, bottom: 20, left: 20, right: 20 }} |
|
177 | 190 | <div class="h-[300px] p-4 border rounded-sm"> |
178 | 191 | <Chart |
179 | 192 | xScale={scaleTime()} |
180 | | - xDomain={[timeDay.offset(now, -10), now]} |
| 193 | + xDomain={[timeDay.offset(today, -10), today]} |
181 | 194 | yDomain={[0, 100]} |
182 | 195 | yNice |
183 | 196 | padding={{ top: 20, bottom: 20, left: 20, right: 20 }} |
|
198 | 211 | <div class="h-[300px] p-4 border rounded-sm"> |
199 | 212 | <Chart |
200 | 213 | xScale={scaleTime()} |
201 | | - xDomain={[timeDay.offset(now, -10), now]} |
| 214 | + xDomain={[timeDay.offset(today, -10), today]} |
202 | 215 | yDomain={[0, 100]} |
203 | 216 | yNice |
204 | 217 | padding={{ top: 20, bottom: 20, left: 20, right: 20 }} |
|
220 | 233 | <div class="h-[300px] p-4 border rounded-sm"> |
221 | 234 | <Chart |
222 | 235 | xScale={scaleTime()} |
223 | | - xDomain={[timeDay.offset(now, -10), now]} |
| 236 | + xDomain={[timeDay.offset(today, -10), today]} |
224 | 237 | yDomain={[0, 100]} |
225 | 238 | yNice |
226 | 239 | padding={{ top: 20, bottom: 20, left: 20, right: 20 }} |
|
240 | 253 | <div class="h-[300px] p-4 border rounded-sm"> |
241 | 254 | <Chart |
242 | 255 | xScale={scaleTime()} |
243 | | - xDomain={[timeDay.offset(now, -10), now]} |
| 256 | + xDomain={[timeDay.offset(today, -10), today]} |
244 | 257 | yDomain={[0, 100]} |
245 | 258 | yNice |
246 | 259 | padding={{ top: 20, bottom: 20, left: 20, right: 20 }} |
|
257 | 270 |
|
258 | 271 | <Preview> |
259 | 272 | <div class="h-[80px] p-4 border rounded-sm"> |
260 | | - <Chart xScale={scaleTime()} xDomain={[timeDay.offset(now, -10), now]} padding={{ bottom: 24 }}> |
| 273 | + <Chart |
| 274 | + xScale={scaleTime()} |
| 275 | + xDomain={[timeDay.offset(today, -10), today]} |
| 276 | + padding={{ bottom: 24 }} |
| 277 | + > |
261 | 278 | <Layer type={shared.renderContext}> |
262 | 279 | <Axis |
263 | 280 | placement="bottom" |
|
277 | 294 |
|
278 | 295 | <Preview> |
279 | 296 | <div class="h-[80px] p-4 border rounded-sm"> |
280 | | - <Chart xScale={scaleTime()} xDomain={[timeDay.offset(now, -10), now]} padding={{ bottom: 24 }}> |
| 297 | + <Chart |
| 298 | + xScale={scaleTime()} |
| 299 | + xDomain={[timeDay.offset(today, -10), today]} |
| 300 | + padding={{ bottom: 24 }} |
| 301 | + > |
281 | 302 | <Layer type={shared.renderContext}> |
282 | 303 | <Axis |
283 | 304 | placement="bottom" |
|
296 | 317 |
|
297 | 318 | <Preview> |
298 | 319 | <div class="h-[80px] p-4 border rounded-sm"> |
299 | | - <Chart xScale={scaleTime()} xDomain={[timeDay.offset(now, -10), now]} padding={{ bottom: 24 }}> |
| 320 | + <Chart |
| 321 | + xScale={scaleTime()} |
| 322 | + xDomain={[timeDay.offset(today, -10), today]} |
| 323 | + padding={{ bottom: 24 }} |
| 324 | + > |
300 | 325 | <Layer type={shared.renderContext}> |
301 | 326 | <Axis placement="bottom" rule tickMarks={false} /> |
302 | 327 | </Layer> |
|
310 | 335 | <div class="h-[200px] p-4 border rounded-sm"> |
311 | 336 | <Chart |
312 | 337 | xScale={scaleTime()} |
313 | | - xDomain={[timeDay.offset(now, -10), now]} |
| 338 | + xDomain={[timeDay.offset(today, -10), today]} |
314 | 339 | yDomain={[0, 100]} |
315 | 340 | padding={{ top: 20, bottom: 20, left: 20, right: 20 }} |
316 | 341 | > |
|
400 | 425 |
|
401 | 426 | <Preview> |
402 | 427 | <div class="h-[80px] p-4 border rounded-sm"> |
403 | | - <Chart xScale={scaleTime()} xDomain={[timeDay.offset(now, -10), now]} padding={{ bottom: 24 }}> |
| 428 | + <Chart |
| 429 | + xScale={scaleTime()} |
| 430 | + xDomain={[timeDay.offset(today, -10), today]} |
| 431 | + padding={{ bottom: 24 }} |
| 432 | + > |
404 | 433 | <Layer type={shared.renderContext}> |
405 | 434 | <Axis |
406 | 435 | placement="bottom" |
|
460 | 489 | <div class="h-[300px] p-4 border rounded-sm"> |
461 | 490 | <Chart |
462 | 491 | xScale={scaleTime()} |
463 | | - xDomain={[timeDay.offset(now, -10), now]} |
464 | | - padding={{ top: 32, bottom: 32, left: 20, right: 20 }} |
| 492 | + xDomain={[timeDay.offset(today, -10), today]} |
| 493 | + padding={{ top: 40, bottom: 40, left: 20, right: 20 }} |
465 | 494 | > |
466 | 495 | <Layer type={shared.renderContext}> |
467 | 496 | {#if debug} |
|
485 | 514 |
|
486 | 515 | <Preview> |
487 | 516 | <div class="h-[300px] p-4 border rounded-sm"> |
488 | | - <Chart yDomain={[0, 100]} padding={{ top: 20, bottom: 20, left: 32, right: 32 }}> |
| 517 | + <Chart yDomain={[0, 100]} padding={{ top: 24, bottom: 24, left: 40, right: 40 }}> |
489 | 518 | <Layer type={shared.renderContext}> |
490 | 519 | {#if debug} |
491 | 520 | <Frame class="fill-danger/5" /> |
|
508 | 537 |
|
509 | 538 | <Preview> |
510 | 539 | <div class="h-[80px] p-4 border rounded-sm"> |
511 | | - <Chart xScale={scaleTime()} xDomain={[timeYear.offset(now, -2), now]} padding={{ bottom: 30 }}> |
| 540 | + <Chart |
| 541 | + xScale={scaleTime()} |
| 542 | + xDomain={[timeYear.offset(today, -2), today]} |
| 543 | + padding={{ bottom: 30 }} |
| 544 | + > |
512 | 545 | <Layer type={shared.renderContext}> |
513 | 546 | {#if debug} |
514 | 547 | <Frame class="fill-danger/5" /> |
|
536 | 569 |
|
537 | 570 | <Preview> |
538 | 571 | <div class="h-[80px] p-4 border rounded-sm"> |
539 | | - <Chart xScale={scaleTime()} xDomain={[timeYear.offset(now, -2), now]} padding={{ bottom: 30 }}> |
| 572 | + <Chart |
| 573 | + xScale={scaleTime()} |
| 574 | + xDomain={[timeYear.offset(today, -2), today]} |
| 575 | + padding={{ bottom: 30 }} |
| 576 | + > |
540 | 577 | <Layer type={shared.renderContext}> |
541 | 578 | {#if debug} |
542 | 579 | <Frame class="fill-danger/5" /> |
|
593 | 630 |
|
594 | 631 | <Preview> |
595 | 632 | <div class="h-[300px] p-4 border rounded-sm"> |
596 | | - <Chart xScale={scaleTime()} xDomain={[timeDay.offset(now, -10), now]} yDomain={[0, 100]} radial> |
| 633 | + <Chart |
| 634 | + xScale={scaleTime()} |
| 635 | + xDomain={[timeDay.offset(today, -10), today]} |
| 636 | + yDomain={[0, 100]} |
| 637 | + radial |
| 638 | + > |
597 | 639 | <Layer type={shared.renderContext} center> |
598 | 640 | <Axis placement="radius" rule /> |
599 | 641 | <Axis placement="angle" rule /> |
|
606 | 648 |
|
607 | 649 | <Preview> |
608 | 650 | <div class="h-[300px] p-4 border rounded-sm"> |
609 | | - <Chart xScale={scaleTime()} xDomain={[timeDay.offset(now, -10), now]} yDomain={[0, 100]} radial> |
| 651 | + <Chart |
| 652 | + xScale={scaleTime()} |
| 653 | + xDomain={[timeDay.offset(today, -10), today]} |
| 654 | + yDomain={[0, 100]} |
| 655 | + radial |
| 656 | + > |
610 | 657 | <Layer type={shared.renderContext} center> |
611 | 658 | <Axis placement="radius" grid /> |
612 | 659 | <Axis placement="angle" grid /> |
|
0 commit comments