@ -768,6 +768,8 @@ export class accountsList {
private _activeSortColumn : string ;
private _sortingByButton = document . getElementById ( "accounts-sort-by-field" ) as HTMLButtonElement ;
private _filterArea = document . getElementById ( "accounts-filter-area" ) ;
private _searchOptionsHeader = document . getElementById ( "accounts-search-options-header" ) ;
// Whether the "Extend expiry" is extending or setting an expiry.
private _settingExpiry = false ;
@ -790,6 +792,17 @@ export class accountsList {
}
}
showHideSearchOptionsHeader = ( ) = > {
const sortingBy = ! ( this . _sortingByButton . parentElement . classList . contains ( "hidden" ) ) ;
const hasFilters = this . _filterArea . textContent != "" ;
console . log ( "sortingBy" , sortingBy , "hasFilters" , hasFilters ) ;
if ( sortingBy || hasFilters ) {
this . _searchOptionsHeader . classList . remove ( "hidden" ) ;
} else {
this . _searchOptionsHeader . classList . add ( "hidden" ) ;
}
}
private _queries : { [ field : string ] : { name : string , getter : string , bool : boolean , string : boolean , date : boolean , dependsOnTableHeader? : string , show? : boolean } } = {
"id" : {
name : "Jellyfin ID" ,
@ -892,8 +905,7 @@ export class accountsList {
}
search = ( query : String ) : string [ ] = > {
const filterArea = document . getElementById ( "accounts-filter-area" ) ;
filterArea . textContent = "" ;
this . _filterArea . textContent = "" ;
query = query . toLowerCase ( ) ;
let result : string [ ] = [ . . . this . _ordering ] ;
@ -970,7 +982,7 @@ export class accountsList {
// FIXME: Generate filter card for each filter class
const filterCard = document . createElement ( "span" ) ;
filterCard . ariaLabel = window . lang . strings ( "clickToRemoveFilter" ) ;
filterCard . classList . add ( "button" , "~" + ( boolState ? "positive" : "critical" ) , "@high" , "center" , "m l-2", "mr-2" , "mt -2") ;
filterCard . classList . add ( "button" , "~" + ( boolState ? "positive" : "critical" ) , "@high" , "center" , "m -2") ;
filterCard . innerHTML = `
< span class = "font-bold mr-2" > $ { queryFormat . name } < / span >
< i class = "text-2xl ri-${boolState? " checkbox " : " close " } - circle - fill " > < / i >
@ -983,7 +995,7 @@ export class accountsList {
this . _search . oninput ( ( null as Event ) ) ;
} )
filterArea. appendChild ( filterCard ) ;
this . _ filterArea. appendChild ( filterCard ) ;
// console.log("is bool, state", boolState);
// So removing elements doesn't affect us
@ -1004,7 +1016,7 @@ export class accountsList {
if ( queryFormat . string ) {
const filterCard = document . createElement ( "span" ) ;
filterCard . ariaLabel = window . lang . strings ( "clickToRemoveFilter" ) ;
filterCard . classList . add ( "button" , "~neutral" , "@low" , "center" , "m l-2", "mr-2" , "mt -2", "h-full" ) ;
filterCard . classList . add ( "button" , "~neutral" , "@low" , "center" , "m -2", "h-full" ) ;
filterCard . innerHTML = `
< span class = "font-bold mr-2" > $ { queryFormat . name } : < / span > "${split[1]}"
` ;
@ -1017,7 +1029,7 @@ export class accountsList {
this . _search . oninput ( ( null as Event ) ) ;
} )
filterArea. appendChild ( filterCard ) ;
this . _ filterArea. appendChild ( filterCard ) ;
let cachedResult = [ . . . result ] ;
for ( let id of cachedResult ) {
@ -1048,7 +1060,7 @@ export class accountsList {
const filterCard = document . createElement ( "span" ) ;
filterCard . ariaLabel = window . lang . strings ( "clickToRemoveFilter" ) ;
filterCard . classList . add ( "button" , "~neutral" , "@low" , "center" , "m l-2", "mr-2" , "mt -2", "h-full" ) ;
filterCard . classList . add ( "button" , "~neutral" , "@low" , "center" , "m -2", "h-full" ) ;
filterCard . innerHTML = `
< span class = "font-bold mr-2" > $ { queryFormat . name } : < / span > $ { ( compareType == 1 ) ? window . lang . strings ( "after" ) + " " : ( ( compareType == - 1 ) ? window . lang . strings ( "before" ) + " " : "" ) } $ { split [ 1 ] }
` ;
@ -1062,7 +1074,7 @@ export class accountsList {
this . _search . oninput ( ( null as Event ) ) ;
} )
filterArea. appendChild ( filterCard ) ;
this . _ filterArea. appendChild ( filterCard ) ;
let cachedResult = [ . . . result ] ;
for ( let id of cachedResult ) {
@ -1807,6 +1819,7 @@ export class accountsList {
}
this . setVisibility ( this . search ( query ) , true ) ;
this . _checkCheckCount ( ) ;
this . showHideSearchOptionsHeader ( ) ;
} ;
this . _search . oninput = onchange ;
@ -1869,9 +1882,11 @@ export class accountsList {
} else {
this . setVisibility ( this . search ( this . _search . value ) , true ) ;
}
this . showHideSearchOptionsHeader ( ) ;
} ) ;
defaultSort ( ) ;
this . showHideSearchOptionsHeader ( ) ;
const filterList = document . getElementById ( "accounts-filter-list" ) ;