@@ -152,7 +152,10 @@ function transformAppVersion(inpVersion) {
152152 * @param {bool } isPercent - Flag to just format the metric's total values as percentages.
153153 */
154154 function populateMetric ( metric , isPercent ) {
155- if ( dashboard [ metric ] . total !== 0 && dashboard [ metric ] [ "prev-total" ] !== 0 ) {
155+ if ( dashboard [ metric ] . total === 'NA' || dashboard [ metric ] [ 'prev-total' ] === 'NA' ) {
156+ dashboard [ metric ] . change = 'NA' ;
157+ }
158+ else if ( dashboard [ metric ] . total !== 0 && dashboard [ metric ] [ "prev-total" ] !== 0 ) {
156159 if ( isPercent ) {
157160 dashboard [ metric ] . change = ( dashboard [ metric ] . total - dashboard [ metric ] [ "prev-total" ] ) . toFixed ( 1 ) + "%" ;
158161 }
@@ -182,7 +185,9 @@ function transformAppVersion(inpVersion) {
182185
183186 if ( isPercent && [ "crses" , "crnfses" , "crfses" , "crau" , "craunf" , "crauf" , 'crinv' , 'crfinv' , 'crnfinv' , 'crauinv' , 'craufinv' , 'craunfinv' ] . includes ( metric ) ) {
184187 [ "total" , "prev-total" ] . forEach ( function ( prop ) {
185- dashboard [ metric ] [ prop ] = dashboard [ metric ] [ prop ] . toFixed ( 2 ) + '%' ;
188+ if ( dashboard [ metric ] [ prop ] !== 'NA' ) {
189+ dashboard [ metric ] [ prop ] = dashboard [ metric ] [ prop ] . toFixed ( 2 ) + '%' ;
190+ }
186191 } ) ;
187192 }
188193 }
@@ -219,10 +224,13 @@ function transformAppVersion(inpVersion) {
219224 }
220225
221226 // derive user count from whole users
222- if ( dashboard . crau [ prop ] > dashboard . cr_u [ prop ] && 'users' in state . rawData ) {
227+ if ( dashboard . crau [ prop ] > dashboard . cr_u [ prop ] && 'users' in state . rawData && wholeUsers . total > 0 ) {
223228 dashboard . crauf [ prop ] = dashboard . cr_u [ prop ] * ( ( wholeUsers . fatal / wholeUsers . total ) - ( dashboard . crf [ prop ] / dashboard . cr_s [ prop ] ) ) ;
229+ dashboard . crauf . isEstimate = true ;
224230 dashboard . craunf [ prop ] = dashboard . cr_u [ prop ] * ( ( wholeUsers . nonfatal / wholeUsers . total ) - ( dashboard . crnf [ prop ] / dashboard . cr_s [ prop ] ) ) ;
231+ dashboard . craunf . isEstimate = true ;
225232 dashboard . crau [ prop ] = dashboard . crauf [ prop ] + dashboard . craunf [ prop ] ;
233+ dashboard . crau . isEstimate = true ;
226234 }
227235
228236 dashboard . crinv [ prop ] = Math . max ( 0 , dashboard . cr_s [ prop ] - dashboard . cr [ prop ] ) ;
@@ -234,9 +242,14 @@ function transformAppVersion(inpVersion) {
234242 populateMetric ( metric ) ;
235243 } ) ;
236244
237- [ "crau" , "craunf" , "crauf" ] . forEach ( function ( name ) {
238- [ "total" , "prev-total" ] . forEach ( function ( prop ) {
239- dashboard [ name ] [ prop ] = Math . min ( 100 , ( dashboard . cr_u [ prop ] === 0 || dashboard [ name ] [ prop ] === 0 ) ? 100 : ( Math . abs ( dashboard . cr_u [ prop ] - dashboard [ name ] [ prop ] ) / dashboard . cr_u [ prop ] * 100 ) ) ;
245+ [ 'crau' , 'craunf' , 'crauf' ] . forEach ( function ( name ) {
246+ [ 'total' , 'prev-total' ] . forEach ( function ( prop ) {
247+ if ( dashboard . cr_u [ prop ] === 0 || ! Number . isFinite ( dashboard [ name ] [ prop ] ) ) {
248+ dashboard [ name ] [ prop ] = 'NA' ;
249+ }
250+ else {
251+ dashboard [ name ] [ prop ] = Math . abs ( dashboard . cr_u [ prop ] - dashboard [ name ] [ prop ] ) / dashboard . cr_u [ prop ] * 100 ;
252+ }
240253 } ) ;
241254 populateMetric ( name , true ) ;
242255 } ) ;
@@ -264,17 +277,13 @@ function transformAppVersion(inpVersion) {
264277 } ) ;
265278
266279 [ 'crinv' , 'crfinv' , 'crnfinv' ] . forEach ( function ( name ) {
267- [ "total" , "prev-total" ] . forEach ( function ( prop ) {
268- var propValue = 0 ;
269-
280+ [ 'total' , 'prev-total' ] . forEach ( function ( prop ) {
270281 if ( dashboard . cr_s [ prop ] === 0 ) {
271- propValue = 100 ;
282+ dashboard [ name ] [ prop ] = 'NA' ;
272283 }
273284 else {
274- propValue = dashboard [ name ] [ prop ] / dashboard . cr_s [ prop ] * 100 ;
285+ dashboard [ name ] [ prop ] = dashboard [ name ] [ prop ] / dashboard . cr_s [ prop ] * 100 ;
275286 }
276-
277- dashboard [ name ] [ prop ] = Math . min ( 100 , propValue ) ;
278287 } ) ;
279288 populateMetric ( name , true ) ;
280289 } ) ;
0 commit comments