// grab all selected thumbnails and return a
containing the thumbnails // with extra yr and date attached as attributes so we can set the default // dir name for a move directory - not used in del, but no harm to include them function GetSelnAsDiv() { seln='' $('.highlight').each(function( index ) { seln+='
' + $(this).children().parent().html() + '
' seln+='' } ) return '
'+seln+'
' } // return a list of eid= for each selected thumbnail function GetSelnAsData() { to_del='' $('.highlight').each(function( index ) { to_del+='&eid-'+index+'='+$(this).attr('id') } ) return to_del } // use an ajax POST to force an AI scan on the selected images function RunAIOnSeln(person) { post_data = GetSelnAsData() post_data += '&person='+person.replace('ai-','') $.ajax({ type: 'POST', data: post_data, url: '/run_ai_on', success: function(data){ window.location='/'; return false; } }) } // show the DBox for a move file, includes all thumbnails of selected files to move // and a pre-populated folder to move them into, with text field to add a suffix function MoveDBox(sps, db_url) { $('#dbox-title').html('Move Selected File(s) to new directory in Storage Path') div =`

Moving the following files?

` div+=GetSelnAsDiv() yr=$('.highlight').first().attr('yr') dt=$('.highlight').first().attr('date') div+=`
' if( sps.length > 1 ) { // NB: alert-primary here is a hack to get the bg the same color as the alert primary by div+= '' } else { div+= '/'+sps[0]+'/' div+= '' } div+=`
` $('#dbox-content').html(div) $('#dbox').modal('show') } // show the DBox for a delete/restore file, includes all thumbnails of selected files // with appropriate coloured button to Delete or Restore files` function DelDBox(del_or_undel) { to_del = GetSelnAsData() $('#dbox-title').html(del_or_undel+' Selected File(s)') div ='

' + del_or_undel + ' the following files?

' div+=GetSelnAsDiv() div+=`
` div+=`
` else div+=` '/restore_files', success: function(data){ window.location='/'; return false; } })" class="btn btn-outline-success col-2">Ok
` $('#dbox-content').html(div) $('#dbox').modal('show') } // show the DBox for a lame quick version of file details function DetailsDBox() { $('#dbox-title').html('Details of Selected File(s)') var div ='
' $('.highlight').each(function( index ) { div += "
Name:
" + $(this).attr('fname') + "
" div += "
Date:
" + $(this).attr('pretty_date') + "
" dir = $(this).attr('in_dir') if( dir.slice(-1) != "/" ) dir=dir.concat('/') div += "
Dir:
" + dir + "
" div += "
Size:
" + $(this).attr('size') + " MB
" div += "
Hash:
" + $(this).attr('hash') + "
" div += "
Path Type:
" + $(this).attr('path_type') + "
" } ) div += `

` $('#dbox-content').html(div) $('#dbox').modal('show') } // function to change the size of thumbnails (and resets button bar to newly // selected size) function ChangeSize(clicked_button,sz) { $('.sz-but.btn-info').removeClass('btn-info text-white').addClass('btn-outline-info') $(clicked_button).addClass('btn-info text-white').removeClass('btn-outline-info') $('.thumb').attr( {height: sz, style: 'font-size:'+sz+'px' } ) $('#size').val(sz) sz=sz-22 $('.svg').height(sz); $('.svg').width(sz); $('.svg_cap').width(sz); } // DoSel is called when a click event occurs, and sets the selection via adding // 'highlight' to the class of the appropriate thumbnails // e == event (can see if shift/ctrl held down while left-clicking // el == element the click is on // this allows single-click to select, ctrl-click to (de)select 1 item, and // shift-click to add all elements between highlighted area and clicked area, // whether you click after highlight or before function DoSel(e, el) { if( e.ctrlKey ) { $(el).toggleClass('highlight') return } if( e.shiftKey ) { st=Number($('.highlight').first().attr('ecnt')) end=Number($('.highlight').last().attr('ecnt')) clicked=Number($(el).attr('ecnt')) // if we shift-click first element, then st/end are NaN, so just highlightthe one clicked if( isNaN(st) ) { $('.entry').slice( clicked, clicked+1 ).addClass('highlight') return } if( clicked > end ) $('.entry').slice( end, clicked+1 ).addClass('highlight') else $('.entry').slice( clicked, st ).addClass('highlight') return } $('.highlight').removeClass('highlight') $(el).addClass('highlight') } // if a selection exists, enable move & del/restore buttons otherwise disable them function SetButtonState() { var sel=false $('.highlight').each(function( index ) { sel=true } ) if( sel ) { $('#move').attr('disabled', false ) $('#del').attr('disabled', false ) } else { $('#move').attr('disabled', true ) $('#del').attr('disabled', true ) } } // Check if the set of highlights are either only figures, dirs or both // used to work out what options are shown in the file context menu function FiguresOrDirsOrBoth() { var figure=false var dir=false $('.highlight').each(function( index ) { if( $(this).hasClass('figure') ) { figure=true } if( $(this).hasClass('dir') ) { dir=true } } ) if( figure & ! dir ) return "figure" if( ! figure & dir ) return "dir" return "both" } // Check if the set of highlights contain Bin and Not Bin... // if its both, then no del/restore is possible in context menu // otherwise can either set del or restore appropriately function SelContainsBinAndNotBin() { var bin=false var not_bin=false $('.highlight').each(function( index ) { if( $(this).attr('path_type') == "Bin" ) { bin=true } else { not_bin=true } } ) if( bin && not_bin ) return true else return false } // checks to see if there is no selection active function NoSel() { var sel=false $('.highlight').each(function( index ) { sel=true } ) // func looks for No Selection, so if sel is true and we have a sel, return false (i.e. NOT No Sel -> Sel ) if( sel ) return false else return true }