@@ -87,6 +87,9 @@ $(document).ready(function () {
8787 . attr ( 'data-multiple' , action . multiple )
8888 . append ( $ ( '<i>' ) . addClass ( 'fas fa-fw fa-' + action . icon ) )
8989 . append ( $ ( '<span>' ) . text ( action . label ) )
90+ . click ( function ( ) {
91+ window [ $ ( this ) . data ( 'action' ) ] ( action . multiple ? getSelectedItems ( ) : getOneSelectedElement ( ) ) ;
92+ } )
9093 )
9194 ) ;
9295 } ) ;
@@ -96,6 +99,10 @@ $(document).ready(function () {
9699 $ ( '<a>' ) . addClass ( 'dropdown-item' ) . attr ( 'data-sortby' , sort . by )
97100 . append ( $ ( '<i>' ) . addClass ( 'fas fa-fw fa-' + sort . icon ) )
98101 . append ( $ ( '<span>' ) . text ( sort . label ) )
102+ . click ( function ( ) {
103+ sort_type = sort . by ;
104+ loadItems ( ) ;
105+ } )
99106 ) ;
100107 } ) ;
101108 loadFolders ( ) ;
@@ -171,33 +178,10 @@ $(document).on('click', '[data-display]', function() {
171178 loadItems ( ) ;
172179} ) ;
173180
174- $ ( document ) . on ( 'click' , '[data-sortby]' , function ( ) {
175- sort_type = $ ( this ) . data ( 'sortby' ) ;
176- loadItems ( ) ;
177- } ) ;
178-
179- $ ( document ) . on ( 'click' , '[data-action]' , function ( ) {
180- var dataToProcess = $ ( this ) . data ( 'multiple' ) ? getSelectedItems ( ) : getOneSelectedElement ( ) ;
181-
182- window [ $ ( this ) . data ( 'action' ) ] ( dataToProcess ) ;
183- } ) ;
184-
185181// ======================
186182// == Folder actions ==
187183// ======================
188184
189- $ ( document ) . on ( 'click' , '#content a' , toggleSelected ) ;
190-
191- $ ( document ) . on ( 'dblclick' , '#content a' , function ( e ) {
192- var clickedElement = getOneSelectedElement ( $ ( e . target ) . closest ( 'a' ) . data ( 'id' ) ) ;
193-
194- if ( clickedElement . is_file ) {
195- use ( getSelectedItems ( ) ) ;
196- } else {
197- goTo ( clickedElement . url ) ;
198- }
199- } ) ;
200-
201185function getOneSelectedElement ( orderOfItem ) {
202186 var index = orderOfItem !== undefined ? orderOfItem : selected [ 0 ] ;
203187 return items [ index ] ;
@@ -306,7 +290,7 @@ var refreshFoldersAndItems = function (data) {
306290var hideNavAndShowEditor = function ( data ) {
307291 $ ( '#nav-buttons > ul' ) . addClass ( 'd-none' ) ;
308292 $ ( '#content' ) . html ( data ) . removeClass ( 'preserve_actions_space' ) ;
309- $ ( '#actions' ) . addClass ( 'd-none' ) ;
293+ clearSelected ( ) ;
310294}
311295
312296function loadFolders ( ) {
@@ -323,6 +307,7 @@ function loadItems() {
323307 . done ( function ( data ) {
324308 selected = [ ] ;
325309 var response = JSON . parse ( data ) ;
310+ var working_dir = response . working_dir ;
326311 items = response . items ;
327312 var hasItems = items . length !== 0 ;
328313 $ ( '#empty' ) . toggleClass ( 'd-none' , hasItems ) ;
@@ -332,11 +317,17 @@ function loadItems() {
332317 $ ( '#content' ) . addClass ( response . display ) . addClass ( 'preserve_actions_space' ) ;
333318
334319 items . forEach ( function ( item , index ) {
335- items [ ( new Date ( ) ) . getTime ( ) ] = item ;
336-
337320 var template = $ ( '#item-template' ) . clone ( )
338321 . removeAttr ( 'id class' )
339- . attr ( 'data-id' , index ) ;
322+ . attr ( 'data-id' , index )
323+ . click ( toggleSelected )
324+ . dblclick ( function ( e ) {
325+ if ( item . is_file ) {
326+ use ( getSelectedItems ( ) ) ;
327+ } else {
328+ goTo ( item . url ) ;
329+ }
330+ } ) ;
340331
341332 if ( item . thumb_url ) {
342333 var image = $ ( '<div>' ) . css ( 'background-image' , 'url("' + item . thumb_url + '?timestamp=' + item . time + '")' ) ;
@@ -351,9 +342,38 @@ function loadItems() {
351342 $ ( '#content' ) . append ( template ) ;
352343 } ) ;
353344 }
345+
354346 $ ( '#nav-buttons > ul' ) . removeClass ( 'd-none' ) ;
355- $ ( '#working_dir' ) . val ( response . working_dir ) ;
356- console . log ( 'Current working_dir : ' + $ ( '#working_dir' ) . val ( ) ) ;
347+
348+ $ ( '#working_dir' ) . val ( working_dir ) ;
349+ console . log ( 'Current working_dir : ' + working_dir ) ;
350+ var breadcrumbs = [ ] ;
351+ var validSegments = working_dir . split ( '/' ) . filter ( function ( e ) { return e ; } ) ;
352+ validSegments . forEach ( function ( segment , index ) {
353+ if ( index === 0 ) {
354+ // set root folder name as the first breadcrumb
355+ breadcrumbs . push ( $ ( "[data-path='/" + segment + "']" ) . text ( ) ) ;
356+ } else {
357+ breadcrumbs . push ( segment ) ;
358+ }
359+ } ) ;
360+
361+ $ ( '#breadcrumbs > ol' ) . html ( '' ) ;
362+ breadcrumbs . forEach ( function ( breadcrumb , index ) {
363+ var li = $ ( '<li>' ) . addClass ( 'breadcrumb-item' ) . text ( breadcrumb ) ;
364+
365+ if ( index === breadcrumbs . length - 1 ) {
366+ li . addClass ( 'active' ) . attr ( 'aria-current' , 'page' ) ;
367+ } else {
368+ li . click ( function ( ) {
369+ // go to corresponding path
370+ goTo ( '/' + validSegments . slice ( 0 , 1 + index ) . join ( '/' ) ) ;
371+ } ) ;
372+ }
373+
374+ $ ( '#breadcrumbs > ol' ) . append ( li ) ;
375+ } ) ;
376+
357377 var atRootFolder = getPreviousDir ( ) == '' ;
358378 $ ( '#to-previous' ) . toggleClass ( 'd-none invisible-lg' , atRootFolder ) ;
359379 $ ( '#show_tree' ) . toggleClass ( 'd-none' , ! atRootFolder ) . toggleClass ( 'd-block' , atRootFolder ) ;
0 commit comments