Skip to content

Commit 4c809f0

Browse files
Christopher StamperChristopher Stamper
authored andcommitted
Fixed initial webMetrics issue
1 parent 038b89a commit 4c809f0

File tree

2 files changed

+51
-31
lines changed

2 files changed

+51
-31
lines changed

src/app/components/StateRoute/StateRoute.tsx

Lines changed: 49 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -95,72 +95,91 @@ const StateRoute = (props: StateRouteProps) => {
9595
let INPColor: String;
9696

9797
// adjust the strings that represent colors of the webmetrics performance bar for 'Largest Contentful Paint (LCP)', 'First Input Delay (FID)', 'First Contentfuly Paint (FCP)', and 'Time to First Byte (TTFB)' based on webMetrics outputs.
98-
if (webMetrics.LCP <= 2000) LCPColor = '#0bce6b';
99-
if (webMetrics.LCP > 2000 && webMetrics.LCP < 4000) LCPColor = '#E56543';
100-
if (webMetrics.LCP > 4000) LCPColor = '#fc2000';
101-
if (webMetrics.FID <= 100) FIDColor = '#0bce6b';
102-
if (webMetrics.FID > 100 && webMetrics.FID <= 300) FIDColor = '#fc5a03';
103-
if (webMetrics.FID > 300) FIDColor = '#fc2000';
104-
if (webMetrics.FCP <= 900) FCPColor = '#0bce6b';
105-
if (webMetrics.FCP > 900 && webMetrics.FCP <= 1100) FCPColor = '#fc5a03';
106-
if (webMetrics.FCP > 1100) FCPColor = '#fc2000';
107-
if (webMetrics.TTFB <= 600) TTFBColor = '#0bce6b';
108-
if (webMetrics.TTFB > 600) TTFBColor = '#fc2000';
109-
if (webMetrics.CLS <= 0.1) CLSColor = '#0bce6b';
110-
if (webMetrics.CLS > 0.1 && webMetrics.CLS <= 0.25) CLSColor = '#E56543';
111-
if (webMetrics.CLS > 0.25) CLSColor = '#fc2000';
112-
if (webMetrics.INP <= 200) INPColor = '#0bce6b';
113-
if (webMetrics.INP <= 500) INPColor = '#E56543';
114-
if (webMetrics.INP > 500) INPColor = '#fc2000';
98+
if (webMetrics.LCP <= 2500) LCPColor = ['#0bce6b'];
99+
if (webMetrics.LCP > 2500 && webMetrics.LCP < 4000) LCPColor = ['#fc5a03'];
100+
if (webMetrics.LCP > 4000 && webMetrics.LCP <= 7000) LCPColor = ['#fc2000'];
101+
if (webMetrics.LCP > 7000) LCPColor = ['#fc2000', '#000000'];
102+
103+
if (webMetrics.FID <= 100) FIDColor = ['#0bce6b'];
104+
if (webMetrics.FID > 100 && webMetrics.FID <= 300) FIDColor = ['#fc5a03'];
105+
if (webMetrics.FID > 300 && webMetrics.FID <= 500) FIDColor = ['#fc2000'];
106+
if (webMetrics.FID > 500) FIDColor = ['#fc2000', '#000000'];
107+
108+
if (webMetrics.FCP <= 1800) FCPColor = ['#0bce6b'];
109+
if (webMetrics.FCP > 1800 && webMetrics.FCP <= 3000) FCPColor = ['#fc5a03'];
110+
if (webMetrics.FCP > 3000 && webMetrics.FCP <= 5000) FCPColor = ['#fc2000'];
111+
if (webMetrics.FCP > 5000) FCPColor = ['#fc2000', '#000000'];
112+
113+
if (webMetrics.TTFB <= 800) TTFBColor = ['#0bce6b'];
114+
if (webMetrics.TTFB > 800 && webMetrics.TTFB <= 1800) TTFBColor = ['#fc5a03'];
115+
if (webMetrics.TTFB > 1800 && webMetrics.TTFB <= 3000) TTFBColor = ['#fc2000'];
116+
if (webMetrics.TTFB > 3000) TTFBColor = ['#fc2000', '#000000'];
117+
118+
if (webMetrics.CLS <= 0.1) CLSColor = ['#0bce6b'];
119+
if (webMetrics.CLS > 0.1 && webMetrics.CLS <= 0.25) CLSColor = ['#fc5a03'];
120+
if (webMetrics.CLS > 0.25 && webMetrics.CLS <= 0.5) CLSColor = ['#fc2000'];
121+
if (webMetrics.CLS > 0.5) CLSColor = ['#fc2000', '#000000'];
122+
123+
if (webMetrics.INP <= 200) INPColor = ['#0bce6b'];
124+
if (webMetrics.INP > 200 && webMetrics.INP <= 500) INPColor = ['#fc5a03'];
125+
if (webMetrics.INP > 500 && webMetrics.INP <= 700) INPColor = ['#fc2000'];
126+
if (webMetrics.INP > 700) INPColor = ['#fc2000', '#000000'];
127+
128+
const fakeLCP = 7500;
129+
130+
if (fakeLCP <= 2500) LCPColor = ['#0bce6b'];
131+
if (fakeLCP > 2500 && fakeLCP < 4000) LCPColor = ['#fc5a03'];
132+
if (fakeLCP > 4000 && fakeLCP <= 7000) LCPColor = ['#fc2000'];
133+
if (fakeLCP > 7000) LCPColor = ['#fc2000', '#000000'];
115134

116135
return (
117136
<div className='web-metrics-container'>
118137
<WebMetrics
119138
color={LCPColor}
120-
series={(webMetrics.LCP / 2500) * 100}
121-
formatted={(val) =>
122-
Number.isNaN(val) ? '- ms' : `${((val / 100) * 2500).toFixed(2)} ms`
139+
series={webMetrics.LCP ? [webMetrics.LCP / 70 < 100 ? webMetrics.LCP / 70 : 100] : 0}
140+
formatted={(_) =>
141+
typeof webMetrics.LCP !== 'number' ? '- ms' : `${(webMetrics.LCP).toFixed(2)} ms`
123142
}
124143
label='Largest Contentful Paint'
125144
name='Largest Contentful Paint'
126145
description='Measures loading performance. The benchmark is less than 2500 ms.'
127146
/>
128147
<WebMetrics
129148
color={FIDColor}
130-
series={webMetrics.FID * 25}
131-
formatted={(val) => (Number.isNaN(val) ? '- ms' : `${(val / 25).toFixed(2)} ms`)}
149+
series={webMetrics.FID ? [webMetrics.FID / 5 < 100 ? webMetrics.FID / 5 : 100] : 0}
150+
formatted={(_) => typeof webMetrics.FID !== 'number' ? '- ms' : `${(webMetrics.FID).toFixed(2)} ms`}
132151
label='First Input Delay'
133152
name='First Input Delay'
134153
description='Measures interactivity. The benchmark is less than 100 ms.'
135154
/>
136155
<WebMetrics
137156
color={FCPColor}
138-
series={(webMetrics.FCP / 1000) * 100}
139-
formatted={(val) => `${((val / 100) * 1000).toFixed(2)} ms`}
157+
series={webMetrics.FCP ? [webMetrics.FCP / 50 < 100 ? webMetrics.FCP / 50 : 100] : 0}
158+
formatted={(_) => typeof webMetrics.FCP !== 'number' ? '- ms' : `${(webMetrics.FCP).toFixed(2)} ms`}
140159
label='First Contentful Paint'
141160
name='First Contentful Paint'
142161
description='Measures the time it takes the browser to render the first piece of DOM content. No benchmark.'
143162
/>
144163
<WebMetrics
145164
color={TTFBColor}
146-
series={(webMetrics.TTFB / 10) * 100}
147-
formatted={(val) => `${((val / 100) * 10).toFixed(2)} ms`}
165+
series={webMetrics.TTFB ? [webMetrics.TTFB / 30 < 100 ? webMetrics.TTFB / 30 : 100] : 0}
166+
formatted={(_) => typeof webMetrics.TTFB !== 'number' ? '- ms' : `${(webMetrics.TTFB).toFixed(2)} ms`}
148167
label='Time To First Byte'
149168
name='Time to First Byte'
150169
description='Measures the time it takes for a browser to receive the first byte of page content. The benchmark is 600 ms.'
151170
/>
152171
<WebMetrics
153172
color={CLSColor}
154-
series={webMetrics.CLS * 10}
155-
formatted={(val) => `CLS Score: ${(Number.isNaN(val) ? 'N/A' : `${val / 10 < 0.01 ? 0 : (val / 10).toFixed(2)}`)}`}
173+
series={webMetrics.CLS ? [webMetrics.CLS * 200 < 100 ? webMetrics.CLS * 200 : 100] : 0}
174+
formatted={(_) => `CLS Score: ${typeof webMetrics.CLS !== 'number' ? 'N/A' : `${webMetrics.CLS < .01 ? '~0' : (webMetrics.CLS).toFixed(2)}`}`}
156175
label='Cumulative Layout Shift'
157176
name='Cumulative Layout Shift'
158177
description={`Quantifies the visual stability of a web page by measuring layout shifts during the application's loading and interaction.`}
159178
/>
160179
<WebMetrics
161180
color={INPColor}
162-
series={(webMetrics.INP / 10) * 100}
163-
formatted={(val) => `INP Value: ${(Number.isNaN(val) ? 'N/A' : `${val / 10}`)}`}
181+
series={webMetrics.INP ? [webMetrics.INP / 7 < 100 ? webMetrics.INP / 7 : 100] : 0}
182+
formatted={(_) => typeof webMetrics.INP !== 'number' ? '- ms' : `${(webMetrics.INP).toFixed(2)} ms`}
164183
label='Interaction to Next Paint'
165184
name='Interaction to Next Paint'
166185
description={`Assesses a page's overall responsiveness to user interactions by observing the latency of all click, tap, and keyboard interactions that occur throughout the lifespan of a user's visit to a page`}

src/app/components/WebMetrics.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,8 @@ const radialGraph = (props) => {
7878
shade: 'dark',
7979
type: 'horizontal',
8080
shadeIntensity: 0.1,
81-
gradientToColors: [props.color],
81+
gradientToColors: props.color,
82+
// gradientToColors: ['#fc2000', '#000000'],
8283
inverseColors: false,
8384
opacityFrom: 1,
8485
opacityTo: 1,

0 commit comments

Comments
 (0)