File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -14,7 +14,7 @@ sections:
1414 page_rows : 5
1515 search_category : posts
1616 browse :
17- randomize : true
17+ randomize : false
1818 search_category : blogs
1919blog_metadata : !import "data/blogs/metadata.yaml"
2020post_cache : !import-list "data/blogs/posts"
Original file line number Diff line number Diff line change @@ -92,6 +92,30 @@ function setBusy(element: HTMLElement, busy: boolean): void {
9292 } ) ;
9393}
9494
95+ function sortByScore ( ) : void {
96+ const grid = document . querySelector < HTMLElement > ( ".blog-grid" ) ;
97+ if ( ! grid ) return ;
98+
99+ const score = ( card : HTMLElement ) : number =>
100+ Number (
101+ card . querySelector < HTMLElement > ( "[data-blog-vote]" ) ?. dataset . score ?? 0 ,
102+ ) ;
103+
104+ const cards = Array . from (
105+ grid . querySelectorAll < HTMLElement > ( ":scope > .blog-card" ) ,
106+ ) ;
107+ cards . sort ( ( left , right ) => {
108+ const difference = score ( right ) - score ( left ) ;
109+ if ( difference ) return difference ;
110+ return ( left . dataset . searchTitle ?? "" ) . localeCompare (
111+ right . dataset . searchTitle ?? "" ,
112+ undefined ,
113+ { sensitivity : "base" } ,
114+ ) ;
115+ } ) ;
116+ grid . append ( ...cards ) ;
117+ }
118+
95119function redirectTarget ( ) : string {
96120 const url = new URL ( window . location . href ) ;
97121 url . hash = "" ;
@@ -121,6 +145,7 @@ export async function initBlogVoting(): Promise<void> {
121145 const element = byId . get ( row . blog_id ) ;
122146 if ( element ) setScore ( element , Number ( row . score ) || 0 ) ;
123147 }
148+ sortByScore ( ) ;
124149 }
125150
126151 async function loadUserVotes ( session : SupabaseSession | null ) : Promise < void > {
You can’t perform that action at this time.
0 commit comments