@@ -30,6 +30,31 @@ const AnimatedLine = styled.line`
30
30
stroke-dasharray: 5;
31
31
animation: ${ animateLines } 4s linear infinite;
32
32
` ;
33
+ function getRanks ( array : number [ ] ) : number [ ] {
34
+ // Create array of objects with original index and value
35
+ const indexed = array . map ( ( value , index ) => ( { value, index } ) ) ;
36
+
37
+ // Sort by value in descending order
38
+ indexed . sort ( ( a , b ) => b . value - a . value ) ;
39
+
40
+ // Initialize ranks array
41
+ const ranks : number [ ] = new Array ( array . length ) ;
42
+
43
+ // Assign ranks
44
+ let currentRank = 1 ;
45
+
46
+ for ( let i = 0 ; i < indexed . length ; i += 1 ) {
47
+ // If this is first element or value is different from previous
48
+ if ( i === 0 || indexed [ i ] . value !== indexed [ i - 1 ] . value ) {
49
+ currentRank = i + 1 ;
50
+ }
51
+
52
+ // Assign rank to original position
53
+ ranks [ indexed [ i ] . index ] = currentRank ;
54
+ }
55
+
56
+ return ranks ;
57
+ }
33
58
34
59
export function HDIViz ( props : Props ) {
35
60
const {
@@ -76,7 +101,9 @@ export function HDIViz(props: Props) {
76
101
77
102
const dataArray = sortBy (
78
103
hdiData . countryData
79
- . filter ( d => d . data . findIndex ( el => el . year === year ) !== - 1 )
104
+ . filter (
105
+ ( d , i ) => d . data . findIndex ( el => el . year === year ) !== - 1 && i < 249 ,
106
+ )
80
107
. map ( d => d . data [ d . data . findIndex ( el => el . year === year ) ] ) ,
81
108
d => d . value ,
82
109
) . reverse ( ) ;
@@ -235,8 +262,12 @@ export function HDIViz(props: Props) {
235
262
</ span > { ' ' }
236
263
human development category — positioning it at{ ' ' }
237
264
< span className = 'bold' >
238
- { dataArray . findIndex ( el => el . value === value ) + 1 } out of{ ' ' }
239
- { dataArray . length }
265
+ {
266
+ getRanks ( dataArray . map ( el => el . value ) ) [
267
+ dataArray . findIndex ( el => el . value === value )
268
+ ]
269
+ } { ' ' }
270
+ out of { dataArray . length }
240
271
</ span > { ' ' }
241
272
countries and territories.
242
273
</ p >
0 commit comments