2024-12-10 22:00:53 +00:00
var $ = a => document . querySelector ( a ) ;
var seasons = { } ;
fetch ( "rankings.json" ) . then ( r => r . json ( ) )
. then ( res => {
seasons = res ;
Object . keys ( seasons ) . forEach ( v => {
var option = document . createElement ( "option" ) ;
option . value = v ;
option . innerHTML = v + "-" + ( parseInt ( v ) + 1 ) . toString ( ) . substring ( 2 ) ;
$ ( "#season" ) . appendChild ( option ) ;
} ) ;
$ ( "#season" ) . onchange = load ;
2024-12-11 17:52:47 +00:00
$ ( "#season" ) . value = location . hash == '' ? 2024 : location . hash . substring ( 1 ) ;
2024-12-10 22:00:53 +00:00
load ( ) ;
} ) ;
var API = "/api/summary" ;
function query ( d , q )
{
var url = new URLSearchParams ( {
"isAggregate" : true ,
"isGame" : true ,
"start" : 0 ,
"limit" : - 1 ,
"sort" : '[{"property":"pointPct","direction":"DESC"},{"property":"wins","direction":"DESC"},{"property":"losses","direction":"ASC"},{"property":"otLosses","direction":"DESC"},{"property":"ties","direction":"DESC"},{"property":"goalsFor","direction":"DESC"},{"property":"goalsAgainst","direction":"ASC"},{"property":"franchiseId","direction":"ASC"}]' ,
"cayenneExp" : q ,
} ) ;
return fetch ( API + "?" + url , {
method : 'GET' ,
} )
. then ( res => res . json ( ) )
. then ( res => {
res . div = d ;
return res ;
} )
}
function getClass ( v , i ) {
var year = parseInt ( $ ( "#season" ) . value ) ;
var year1 = year + 1 ;
if ( year1 == 2004 ) year1 ++ ;
var id = v . franchiseId ;
if ( seasons [ year1 ] )
{
var a = seasons [ year ] [ 0 ] . indexOf ( id ) >= 0 ;
var b = seasons [ year ] [ 1 ] . indexOf ( id ) >= 0 ;
var c = seasons [ year1 ] [ 0 ] . indexOf ( id ) >= 0 ;
var d = seasons [ year1 ] [ 1 ] . indexOf ( id ) >= 0 ;
if ( a == true && d == true ) return "down" ;
if ( b == true && c == true ) return "up" ;
}
else
{
if ( seasons [ year ] [ 0 ] . indexOf ( id ) >= 0 && i > seasons [ year ] [ 0 ] . length - 3 ) return "down" ;
if ( seasons [ year ] [ 1 ] . indexOf ( id ) >= 0 && i < 2 ) return "up" ;
}
return "" ;
}
function load ( )
{
var transform = { "tag" : "tr" , "id" : "${franchiseId}" , "class" : getClass , "children" : [
{ "tag" : "td" , "html" : ( f , i ) => i + 1 } ,
{ "tag" : "td" , "class" : "left" , "html" : "${franchiseName}" } ,
{ "tag" : "td" , "html" : "${gamesPlayed}" } ,
{ "tag" : "td" , "html" : "${wins}" } ,
{ "tag" : "td" , "html" : "${losses}" } ,
{ "tag" : "td" , "html" : "${ties}" } ,
{ "tag" : "td" , "html" : "${otLosses}" } ,
{ "tag" : "td" , "html" : "${goalsFor}" } ,
{ "tag" : "td" , "html" : "${goalsAgainst}" } ,
{ "tag" : "td" , "html" : "${points}" } ,
{ "tag" : "td" , "html" : f => Math . round ( f . pointPct * 1000 ) / 10 + "%" } ,
] } ;
var year = parseInt ( $ ( "#season" ) . value ) ;
var yy = year + "" + ( year + 1 ) ;
2024-12-11 17:52:47 +00:00
location . hash = year ;
2024-12-10 22:00:53 +00:00
for ( var d = 0 ; d < 2 ; d ++ )
query ( d , "gameTypeId=2 and franchiseId in (" + seasons [ year ] [ d ] . join ( "," ) + ") and opponentFranchiseId in (" + seasons [ year ] [ d ] . join ( "," ) + ") and seasonId=" + yy )
. then ( res => {
$ ( "#div" + res . div ) . innerHTML = json2html . transform ( res . data , transform ) ;
} ) ;
}