@@ -15,12 +15,21 @@ export default class MovieListing extends Morph {
1515 } )
1616 }
1717
18+ get moviesSrc ( ) {
19+ return this . getAttribute ( "movies" )
20+ }
21+
22+ get selectedMoviesSrc ( ) {
23+ return this . getAttribute ( "selected" ) || "selected_movies"
24+ }
25+
26+
1827 async createView ( container ) {
1928
2029 var dir = container . getDir ( )
2130 // "cached://" +
22- var listSource = await fetch ( dir + "/movies.jsonl" ) . then ( r => r . text ( ) )
23- var selectedMoviesURL = dir + "/selected_movies"
31+ var listSource = await fetch ( dir + "/" + this . moviesSrc ) . then ( r => r . text ( ) )
32+ var selectedMoviesURL = dir + "/" + this . selectedMoviesSrc
2433
2534 this . selectedMovies = new Set ( )
2635 var selectedMoviesResp = await fetch ( selectedMoviesURL )
@@ -196,7 +205,9 @@ export default class MovieListing extends Morph {
196205
197206 this . navbar = container . get ( "lively-container-navbar" )
198207 this . navbarDetails = this . navbar . get ( "#details" )
199-
208+
209+ this . navbarDetails . querySelector ( "ul" ) . innerHTML = "" // #TODO, be nicer to other content?
210+
200211 let createGenreFilter = ( genre ) => {
201212 var bag = genres . get ( genre )
202213
@@ -213,6 +224,7 @@ export default class MovieListing extends Morph {
213224
214225 this . createSelectedMoviesFilter ( )
215226 this . createConflictingYearMoviesFilter ( )
227+ this . createShowAllMoviesFilter ( )
216228
217229 for ( let genre of genres . keys ( ) ) {
218230 createGenreFilter ( genre )
@@ -256,7 +268,9 @@ export default class MovieListing extends Morph {
256268 this . setCurrentMovieItems ( this . movieItems
257269 . sortBy ( ea => ea . movie . year )
258270 . reverse ( )
259- . filter ( ea => this . selectedMovies . has ( ea . movie . filename ) ) )
271+ . filter ( ea => {
272+ return ea . movie . files . find ( file => this . selectedMovies . has ( file . filename ) )
273+ } ) )
260274 }
261275
262276 filterConflictingYear ( ) {
@@ -266,11 +280,27 @@ export default class MovieListing extends Morph {
266280 . filter ( ea => ea . movie . year != ea . movie . extract_year ) )
267281 }
268282
283+ showAllMovies ( ) {
284+ this . setCurrentMovieItems ( this . movieItems
285+ . sortBy ( ea => ea . movie . year )
286+ . reverse ( ) )
287+ }
288+
269289 createConflictingYearMoviesFilter ( ) {
270290 var detailsItem = this . navbar . createDetailsItem ( "_conflicting" )
271291 detailsItem . classList . add ( "subitem" )
272292 detailsItem . classList . add ( "level2" )
273293 this . navbarDetails . querySelector ( "ul" ) . appendChild ( detailsItem )
274294 detailsItem . addEventListener ( "click" , ( ) => this . filterConflictingYear ( ) )
275295 }
296+
297+ createShowAllMoviesFilter ( ) {
298+ var detailsItem = this . navbar . createDetailsItem ( "_all" )
299+ detailsItem . classList . add ( "subitem" )
300+ detailsItem . classList . add ( "level2" )
301+ this . navbarDetails . querySelector ( "ul" ) . appendChild ( detailsItem )
302+ detailsItem . addEventListener ( "click" , ( ) => this . showAllMovies ( ) )
303+ }
304+
305+
276306}
0 commit comments