11import { previewAfterRender } from './preview.js' ;
2+ import { baseAfterRender } from './base.js' ;
23
34document . addEventListener ( 'DOMContentLoaded' , function ( ) {
45 let deskList = JSON . parse ( localStorage . getItem ( 'desktop' ) ) ;
56 if ( deskList === null ) {
67 deskList = [ ] ;
78 localStorage . setItem ( 'desktop' , JSON . stringify ( deskList ) ) ;
89 }
10+ let csrfToken = document . querySelector ( 'meta[name="csrf-token"]' ) . content ;
911
1012 const socket = io . connect ( '/file_handler' ) ;
11-
1213 socket . emit ( 'get_files_details' , { 'files' : deskList } ) ;
1314
1415 let currentFile = 1 ;
16+ let desktop = document . getElementById ( 'desk-section' ) ;
1517
1618 socket . on ( 'files_details' , function ( data ) {
17- let desktop = document . getElementById ( 'desk-section' ) ;
1819 let modalFooter = document . querySelector ( '.nav-tabs' ) ;
1920 desktop . innerHTML = '' ;
2021
2122 let deskFileNumber = 1 ;
2223 data . forEach ( function ( file ) {
2324 let div = document . createElement ( 'div' ) ;
2425 div . className = 'col-2' ;
26+ div . id = "div-file-" + file . id_Fichier ;
27+ div . setAttribute ( 'data-number' , deskFileNumber ) ;
2528
2629 let card = document . createElement ( 'div' ) ;
2730 card . className = 'card' ;
@@ -43,6 +46,15 @@ document.addEventListener('DOMContentLoaded', function () {
4346 </div>
4447 <div>
4548 <p class="card-title h5" style="font-size: 1.5em; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical;">${ file . nom_Fichier } <p>
49+ </div>
50+ <div class="desktop-element">
51+ <a href="#" id="${ file . id_Fichier } " class="favori" is-fav="${ file . is_favorite } " onclick="event.stopPropagation();">
52+ <i class="fa-solid fa-star fa-lg me-2" style="color: #FFD43B;"
53+ id="fav-${ file . id_Fichier } "></i>
54+ </a>
55+ <a href="#" id="${ file . id_Fichier } " class="desktop-btn" onclick="event.stopPropagation();">
56+ <i class="fa-regular fa-square-minus fa-lg" id="desk-${ file . id_Fichier } "></i>
57+ </a>
4658 </div>` ;
4759
4860 fileDiv . addEventListener ( 'click' , function ( ) {
@@ -86,6 +98,78 @@ document.addEventListener('DOMContentLoaded', function () {
8698 deskFileNumber ++ ;
8799
88100 } ) ;
101+
102+ let favs = document . querySelectorAll ( '.favori' ) ;
103+ favs . forEach ( function ( fav ) {
104+ let id = fav . id ;
105+ let isFav = fav . getAttribute ( 'is-fav' ) ;
106+ let etoile = document . getElementById ( "fav-" + id ) ;
107+ if ( isFav === "true" ) {
108+ fav . className = "favori-true" ;
109+ }
110+ else {
111+ fav . className = "favori-false" ;
112+ etoile . className = "fa-regular fa-star fa-lg me-2" ;
113+ }
114+ fav . addEventListener ( 'click' , function ( event ) {
115+ event . preventDefault ( ) ;
116+ if ( fav . className === "favori-true" ) {
117+ fetch ( "/favori/" + id , {
118+ method : "DELETE" ,
119+ headers : {
120+ "Content-Type" : "application/json" ,
121+ 'X-CSRFToken' : csrfToken
122+ }
123+ } )
124+ . then ( response => response . json ( ) )
125+ . then ( data => {
126+ if ( data . status === "ok" ) {
127+ fav . className = "favori-false" ;
128+ etoile . className = "fa-regular fa-star fa-lg me-2" ;
129+ }
130+ else {
131+ alert ( "Erreur lors de la suppression du favori" ) ;
132+ }
133+ } ) ;
134+ }
135+ else {
136+ fetch ( "/recherche/favori/" + id , {
137+ method : "POST" ,
138+ headers : {
139+ "Content-Type" : "application/json" ,
140+ 'X-CSRFToken' : csrfToken
141+ }
142+ } )
143+ . then ( response => response . json ( ) )
144+ . then ( data => {
145+ if ( data . status === "ok" ) {
146+ fav . className = "favori-true" ;
147+ etoile . className = "fa-solid fa-star fa-lg me-2" ;
148+ }
149+ else {
150+ alert ( "Erreur lors de l'ajout du favori" ) ;
151+ }
152+ } ) ;
153+ }
154+ } ) ;
155+ } ) ;
156+
157+
158+ let deskBtns = document . querySelectorAll ( '.desktop-btn' ) ;
159+ deskBtns . forEach ( function ( btn ) {
160+ btn . addEventListener ( 'click' , function ( ) {
161+ let id = btn . id ;
162+ let deskList = JSON . parse ( localStorage . getItem ( 'desktop' ) ) ;
163+ let index = deskList . indexOf ( id ) ;
164+ if ( index !== - 1 ) {
165+ deskList . splice ( index , 1 ) ;
166+ }
167+ localStorage . setItem ( 'desktop' , JSON . stringify ( deskList ) ) ;
168+ window . location . reload ( ) ;
169+ } ) ;
170+ } ) ;
171+
172+
89173 previewAfterRender ( ) ;
90174
91175 } ) ;
@@ -119,4 +203,11 @@ document.addEventListener('DOMContentLoaded', function () {
119203 currentFile = 0 ;
120204 } ) ;
121205
206+ let btnClear = document . getElementById ( "clear" ) ;
207+ btnClear . addEventListener ( 'click' , function ( ) {
208+ localStorage . setItem ( 'desktop' , JSON . stringify ( [ ] ) ) ;
209+ desktop . innerHTML = '' ;
210+ baseAfterRender ( 0 ) ;
211+ } ) ;
212+
122213} ) ;
0 commit comments