11import { fetchAllData , fetchNotifs } from './dataLoader.js' ;
2- import { setupHero , renderHorizontalRow , renderGrid , renderNotifs , openDetails , closeDetails , playCurrentMedia } from './display.js' ;
3- import { playVideo , closeVideo , toggleNotifs , toggleMobileMenu , toggleMobileSearch , showLoader , hideLoader , hardenPlayerControls , initPlayerPersistence } from './utils.js' ;
2+ import { setupHero , renderHorizontalRow , renderGrid , renderNotifs , openDetails , closeDetails , playCurrentMedia , renderCollections } from './display.js' ;
3+ import { playVideo , closeVideo , toggleNotifs , toggleMobileMenu , toggleMobileSearch , showLoader , hideLoader } from './utils.js' ;
44
5- let appData = { films : { } , series : { } } ;
5+ let appData = { films : { } , series : { } , collections : { } } ;
66let currentView = 'home' ;
77
88window . router = router ;
@@ -17,9 +17,6 @@ window.toggleMobileMenu = toggleMobileMenu;
1717document . addEventListener ( 'DOMContentLoaded' , async ( ) => {
1818 showLoader ( ) ;
1919
20- hardenPlayerControls ( ) ;
21- initPlayerPersistence ( ) ;
22-
2320 document . getElementById ( 'mobileMenuBtn' ) . addEventListener ( 'click' , toggleMobileMenu ) ;
2421 document . getElementById ( 'mobileSearchBtn' ) . addEventListener ( 'click' , toggleMobileSearch ) ;
2522
@@ -45,26 +42,32 @@ function router(view) {
4542 const hero = document . getElementById ( 'heroSection' ) ;
4643 const filters = document . getElementById ( 'filterSection' ) ;
4744 const homeContent = document . getElementById ( 'homePageContent' ) ;
45+ const collectionsContent = document . getElementById ( 'collectionsContent' ) ;
4846 const genericGrid = document . getElementById ( 'genericGridContainer' ) ;
4947 const title = document . getElementById ( 'titleText' ) ;
5048 const navHome = document . getElementById ( 'nav-home' ) ;
5149 const navSeries = document . getElementById ( 'nav-series' ) ;
5250 const navFilms = document . getElementById ( 'nav-films' ) ;
51+ const navCollections = document . getElementById ( 'nav-collections' ) ;
52+
53+ [ navHome , navSeries , navFilms , navCollections ] . forEach ( el => {
54+ if ( el ) el . classList . remove ( 'text-white' , 'text-red-500' ) ;
55+ } ) ;
5356
54- [ navHome , navSeries , navFilms ] . forEach ( el => el . classList . remove ( 'text-white' , 'text-red-500' ) ) ;
5557 window . scrollTo ( { top : 0 , behavior : 'smooth' } ) ;
5658
5759 hero . classList . add ( 'hidden' ) ;
5860 filters . classList . add ( 'hidden' ) ;
5961 homeContent . classList . add ( 'hidden' ) ;
62+ collectionsContent . classList . add ( 'hidden' ) ;
6063 genericGrid . classList . add ( 'hidden' ) ;
6164 document . getElementById ( 'contentGrid' ) . innerHTML = '' ;
6265
6366 const allFilms = Object . values ( appData . films ) ;
6467 const allSeries = Object . values ( appData . series ) ;
6568
6669 if ( view === 'home' ) {
67- navHome . classList . add ( 'text-white' ) ;
70+ if ( navHome ) navHome . classList . add ( 'text-white' ) ;
6871 hero . classList . remove ( 'hidden' ) ;
6972 homeContent . classList . remove ( 'hidden' ) ;
7073
@@ -75,23 +78,29 @@ function router(view) {
7578 renderHorizontalRow ( 'homeSeriesRow' , latestSeries ) ;
7679 }
7780 else if ( view === 'series' ) {
78- navSeries . classList . add ( 'text-white' ) ;
81+ if ( navSeries ) navSeries . classList . add ( 'text-white' ) ;
7982 filters . classList . remove ( 'hidden' ) ;
8083 genericGrid . classList . remove ( 'hidden' ) ;
8184 title . innerText = "Toutes les Séries TV" ;
8285 populateFilters ( ) ;
8386 applyFilters ( ) ;
8487 }
8588 else if ( view === 'films' ) {
86- navFilms . classList . add ( 'text-white' ) ;
89+ if ( navFilms ) navFilms . classList . add ( 'text-white' ) ;
8790 filters . classList . remove ( 'hidden' ) ;
8891 genericGrid . classList . remove ( 'hidden' ) ;
8992 title . innerText = "Tous les Films" ;
9093 populateFilters ( ) ;
9194 applyFilters ( ) ;
9295 }
96+ else if ( view === 'collections' ) {
97+ if ( navCollections ) navCollections . classList . add ( 'text-white' ) ;
98+ collectionsContent . classList . remove ( 'hidden' ) ;
99+ renderCollections ( appData . collections , appData ) ;
100+ }
93101}
94102
103+
95104function initHero ( ) {
96105 const all = [ ...Object . values ( appData . films ) , ...Object . values ( appData . series ) ] ;
97106 if ( all . length === 0 ) return ;
@@ -182,11 +191,14 @@ function handleSearch(e) {
182191 const hero = document . getElementById ( 'heroSection' ) ;
183192 const filters = document . getElementById ( 'filterSection' ) ;
184193 const homeContent = document . getElementById ( 'homePageContent' ) ;
194+ const collectionsContent = document . getElementById ( 'collectionsContent' ) ;
185195 const genericGrid = document . getElementById ( 'genericGridContainer' ) ;
186196
187197 if ( ! q ) {
188198 if ( currentView === 'home' ) {
189199 hero . classList . remove ( 'hidden' ) ; homeContent . classList . remove ( 'hidden' ) ; genericGrid . classList . add ( 'hidden' ) ;
200+ } else if ( currentView === 'collections' ) {
201+ collectionsContent . classList . remove ( 'hidden' ) ; genericGrid . classList . add ( 'hidden' ) ;
190202 } else {
191203 filters . classList . remove ( 'hidden' ) ; applyFilters ( ) ;
192204 }
@@ -196,17 +208,13 @@ function handleSearch(e) {
196208 hero . classList . add ( 'hidden' ) ;
197209 filters . classList . add ( 'hidden' ) ;
198210 homeContent . classList . add ( 'hidden' ) ;
211+ collectionsContent . classList . add ( 'hidden' ) ;
199212 genericGrid . classList . remove ( 'hidden' ) ;
200213
201214 const all = [ ...Object . values ( appData . films ) , ...Object . values ( appData . series ) ] ;
202215 const res = all . filter ( i => i . title . toLowerCase ( ) . includes ( q ) ) ;
203216
204- const sectionTitleEl = document . getElementById ( 'sectionTitle' ) ;
205- sectionTitleEl . textContent = `Résultats pour "${ q } " ` ;
206- const countSpan = document . createElement ( 'span' ) ;
207- countSpan . className = 'text-gray-500 text-sm ml-2' ;
208- countSpan . textContent = `(${ res . length } )` ;
209- sectionTitleEl . appendChild ( countSpan ) ;
217+ document . getElementById ( 'sectionTitle' ) . innerHTML = `Résultats pour "${ q } " <span class="text-gray-500 text-sm ml-2">(${ res . length } )</span>` ;
210218 renderGrid ( res ) ;
211219}
212220
0 commit comments