@@ -8,7 +8,7 @@ function roundDown(number, decimals) {
88 return number . toFixed ( decimals ) ;
99} ;
1010
11- function printTable ( table , data , mergeParties , mergeDistricts , mergedDistrictLabel , showFraction , showColumnTotals , showRowTotals , decimals ) {
11+ function printTable ( table , data , parties , mergeParties , mergeDistricts , mergedDistrictLabel , showFraction , showColumnTotals , showRowTotals , decimals ) {
1212 if ( mergeParties . length > 0 ) {
1313 var newData = { } ;
1414 for ( var district in data ) {
@@ -21,7 +21,13 @@ function printTable(table, data, mergeParties, mergeDistricts, mergedDistrictLab
2121 }
2222 }
2323 }
24- return printTable ( table , newData , [ ] , mergeDistricts , mergedDistrictLabel , showFraction , showColumnTotals , showRowTotals , decimals ) ;
24+ for ( var party of mergeParties ) {
25+ if ( parties . includes ( party ) ) {
26+ parties . splice ( parties . indexOf ( party ) , 1 ) ; // remove from list of sorted parties
27+ }
28+ }
29+ parties . push ( "ANDRE" ) ; // always last
30+ return printTable ( table , newData , parties , [ ] , mergeDistricts , mergedDistrictLabel , showFraction , showColumnTotals , showRowTotals , decimals ) ;
2531 } else if ( mergeDistricts . length > 0 ) {
2632 var newData = { } ;
2733 newData [ mergedDistrictLabel ] = { } ;
@@ -37,20 +43,11 @@ function printTable(table, data, mergeParties, mergeDistricts, mergedDistrictLab
3743 newData [ district ] = data [ district ] ;
3844 }
3945 }
40- return printTable ( table , newData , mergeParties , [ ] , mergedDistrictLabel , showFraction , showColumnTotals , showRowTotals , decimals ) ;
46+ return printTable ( table , newData , parties , mergeParties , [ ] , mergedDistrictLabel , showFraction , showColumnTotals , showRowTotals , decimals ) ;
4147 }
4248
43- // Build ordered list of unique parties
44- var parties = [ ] ;
45- for ( var district in data ) {
46- for ( var party in data [ district ] ) {
47- if ( ! parties . includes ( party ) ) {
48- parties . push ( party ) ;
49- }
50- }
51- }
49+ // Make ANDRE always appear last
5250 if ( parties . includes ( "ANDRE" ) ) {
53- // Make ANDRE always appear last
5451 parties . splice ( parties . indexOf ( "ANDRE" ) , 1 ) ;
5552 parties . push ( "ANDRE" ) ;
5653 }
@@ -323,8 +320,29 @@ function update() {
323320 var showFraction = document . getElementById ( "showfraction" ) . checked ;
324321 var decimals = parseInt ( document . getElementById ( "decimals" ) . value ) ;
325322
326- printTable ( voteTable , votes , mergeParties , mergeDistricts , "Distriktsstemmer" , showFraction , true , true , decimals ) ;
327- printTable ( seatTable , seats , mergeParties , mergeDistricts , "Distriktsmandater" , showFraction , true , true , decimals ) ;
323+ // Build sorted list of unique parties
324+ var sortParties = document . getElementById ( "sortparties" ) . value ;
325+ var parties = [ ] ;
326+ for ( var district in votes ) {
327+ for ( var party in votes [ district ] ) {
328+ if ( ! parties . includes ( party ) ) {
329+ parties . push ( party ) ;
330+ }
331+ }
332+ }
333+ var compare = ( party1 , party2 , data ) => data [ party2 ] == data [ party1 ] ? ( party1 < party2 ? - 1 : + 1 ) : ( data [ party2 ] - data [ party1 ] ) ; // sort by value in "data", but by name if values are equal
334+ if ( sortParties == "Navn" ) {
335+ parties . sort ( ) ;
336+ } else if ( sortParties == "Stemmer" ) {
337+ var globalVotes = sumLocal ( votes ) ;
338+ parties . sort ( ( party1 , party2 ) => compare ( party1 , party2 , globalVotes ) ) ;
339+ } else if ( sortParties == "Mandater" ) {
340+ var globalSeats = sumLocal ( seats ) ;
341+ parties . sort ( ( party1 , party2 ) => compare ( party1 , party2 , globalSeats ) ) ;
342+ }
343+
344+ printTable ( voteTable , votes , parties , mergeParties , mergeDistricts , "Distriktsstemmer" , showFraction , true , true , decimals ) ;
345+ printTable ( seatTable , seats , parties , mergeParties , mergeDistricts , "Distriktsmandater" , showFraction , true , true , decimals ) ;
328346} ;
329347
330348function showTables ( showVotes , showSeats ) {
0 commit comments