{"version":3,"sources":["llms-admin-tables.js"],"names":["$","window","llms","admin_tables","this","$tables","init","self","length","bind","each","fn","delay","timer","$table","on","e","preventDefault","change_page","export","change_order","parent","find","change_filter","keyCode","search","context","args","arguments","clearTimeout","setTimeout","apply","$anchor","reload","order","attr","orderby","page","$select","filter","val","filterby","$btn","get_args","filename","$msg","$progress","activate_button","LLMS","Spinner","stop","removeAttr","Ajax","call","data","extend","action","handler","JSON","parse","beforeSend","start","error","jqXHR","status","msg","l10n","translate","hide","html","console","success","res","message","progress","is","css","text","id","remove","href","url","style","download","appendTo","click","item","closest","r","replaceWith","thead","tbody","tfoot","$input","len","jQuery"],"mappings":"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","file":"../../js/llms-admin-tables.min.js","sourcesContent":["/**\n * LifterLMS Admin Tables\n * @since    3.2.0\n * @version  3.28.1\n */\n;( function( $, undefined ) {\n\n\twindow.llms = window.llms || {};\n\n\tvar AdminTables = function() {\n\n\t\tthis.$tables = null;\n\n\t\t/**\n\t\t * Initialize\n\t\t * @return void\n\t\t * @since  3.2.0\n\t\t */\n\t\tthis.init = function() {\n\n\t\t\tvar self = this;\n\n\t\t\tself.$tables = $( '.llms-gb-table' );\n\n\t\t\tif ( self.$tables.length ) {\n\t\t\t\tself.bind();\n\t\t\t}\n\n\t\t};\n\n\t\t/**\n\t\t * Bind DOM events\n\t\t * @return   void\n\t\t * @since    2.3.0\n\t\t * @version  3.28.0\n\t\t */\n\t\tthis.bind = function() {\n\n\t\t\tvar self = this;\n\n\t\t\tthis.$tables.each( function() {\n\n\t\t\t\tvar $table = $( this );\n\n\t\t\t\t$table.on( 'click', 'button[name=\"llms-table-paging\"]', function( e ) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tself.change_page( $table, $( this ) );\n\t\t\t\t} );\n\n\t\t\t\t$table.on( 'click', 'button[name=\"llms-table-export\"]', function( e ) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tself.export( $table, $( this ) );\n\t\t\t\t} );\n\n\t\t\t\t$table.on( 'click', 'a.llms-sortable', function( e ) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tself.change_order( $table, $( this ) );\n\t\t\t\t} );\n\n\t\t\t\t$table.parent().find( '.llms-table-filters' ).on( 'change', 'select.llms-table-filter', function( e ) {\n\t\t\t\t\tself.change_filter( $table, $( this ) );\n\t\t\t\t} );\n\n\t\t\t\t$table.parent().find( '.llms-table-search' ).on( 'keyup', 'input', debounce( function( e ) {\n\n\t\t\t\t\tswitch ( e.keyCode ) {\n\n\t\t\t\t\t\tcase 37:\n\t\t\t\t\t\tcase 38:\n\t\t\t\t\t\tcase 39:\n\t\t\t\t\t\tcase 40:\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tself.search( $table, $( this ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}, 250 ) );\n\n\t\t\t} );\n\n\t\t};\n\n\t\t/**\n\t\t * Handle clicks on sortable column headers\n\t\t * @param    obj   $table   jQuery selector for the current table\n\t\t * @param    obj   $anchor  jQuery selector for the clicked column head anchor\n\t\t * @return   void\n\t\t * @since    3.2.0\n\t\t * @version  3.2.0\n\t\t */\n\t\tthis.change_order = function( $table, $anchor ) {\n\n\t\t\tthis.reload( $table, {\n\t\t\t\torder: $anchor.attr( 'data-order' ),\n\t\t\t\torderby: $anchor.attr( 'data-orderby' ),\n\t\t\t\tpage: 1,\n\t\t\t} );\n\n\t\t};\n\n\t\tthis.change_filter = function( $table, $select ) {\n\n\t\t\tthis.reload( $table, {\n\t\t\t\tfilter: $select.val(),\n\t\t\t\tfilterby: $select.attr( 'name' ),\n\t\t\t\tpage: 1,\n\t\t\t} );\n\n\t\t};\n\n\t\t/**\n\t\t * Change the current page of the table on a next/back click\n\t\t * @param    obj   $table  jQuery selector for the current table\n\t\t * @param    obj   $btn    jQuery selector for the clicked button\n\t\t * @return   void\n\t\t * @since    3.2.0\n\t\t * @version  3.4.0\n\t\t */\n\t\tthis.change_page = function( $table, $btn ) {\n\n\t\t\tthis.reload( $table, {\n\t\t\t\torder: this.get_args( $table, 'order' ),\n\t\t\t\torderby: this.get_args( $table, 'orderby' ),\n\t\t\t\tpage: $btn.attr( 'data-page' ),\n\t\t\t} );\n\n\t\t};\n\n\t\t/**\n\t\t * Handle\n\t\t * @param    obj    $table    jQuery object for the table\n\t\t * @param    obj    $btn      jQuery object for the clicked button\n\t\t * @param    string filename  filename of the export in progress.\n\t\t * @return   void\n\t\t * @since    3.15.0\n\t\t * @version  3.28.1\n\t\t */\n\t\tthis.export = function( $table, $btn, filename ) {\n\n\t\t\tvar self = this,\n\t\t\t\t$msg = $table.find( '.llms-table-export .llms-table-export-msg' ),\n\t\t\t\t$progress = $table.find( '.llms-table-export .llms-table-progress' );\n\n\t\t\tfunction activate_button() {\n\t\t\t\tLLMS.Spinner.stop( $btn, 'small' );\n\t\t\t\t$btn.removeAttr( 'disabled' );\n\t\t\t}\n\n\t\t\tLLMS.Ajax.call( {\n\t\t\t\tdata: $.extend( {\n\t\t\t\t\taction: 'export_admin_table',\n\t\t\t\t\thandler: $table.attr( 'data-handler' ),\n\t\t\t\t\tfilename: filename,\n\t\t\t\t}, JSON.parse( $table.attr( 'data-args' ) ) ),\n\t\t\t\tbeforeSend: function() {\n\n\t\t\t\t\tif ( ! $btn.attr( 'disabled' ) ) {\n\t\t\t\t\t\t$btn.attr( 'disabled', 'disabled' );\n\t\t\t\t\t\tLLMS.Spinner.start( $btn, 'small' );\n\t\t\t\t\t}\n\n\t\t\t\t},\n\t\t\t\terror: function( jqXHR, status, error ) {\n\n\t\t\t\t\tvar msg = LLMS.l10n.translate( 'An error was encountered generating the export' );\n\t\t\t\t\tactivate_button();\n\t\t\t\t\t$progress.hide();\n\t\t\t\t\t$msg.html( '<span class=\"llms-error\">' + msg + ': ' + error + '</span>' );\n\t\t\t\t\tconsole.error( jqXHR );\n\n\t\t\t\t},\n\t\t\t\tsuccess: function( res ) {\n\n\t\t\t\t\tif ( ! res.success && res.message ) {\n\n\t\t\t\t\t\tactivate_button();\n\t\t\t\t\t\t$progress.hide();\n\t\t\t\t\t\t$msg.html( '<span class=\"llms-error\">' + res.message + '</span>' );\n\n\t\t\t\t\t} else if ( res.success && res.data && res.data.progress ) {\n\n\t\t\t\t\t\t$msg.html( '' );\n\n\t\t\t\t\t\t// only show a progress bar if it's going to take more than one request.\n\t\t\t\t\t\tif ( ! $progress.is( 'visible' ) && res.data.progress !== 100 ) {\n\t\t\t\t\t\t\t$progress.css( 'display', 'inline-block' );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t$progress.find( '.llms-table-progress-text' ).text( res.data.progress + '%' );\n\t\t\t\t\t\t$progress.find( '.llms-table-progress-inner' ).css( 'width', res.data.progress + '%' );\n\n\t\t\t\t\t\t// if we're not finished, make another request.\n\t\t\t\t\t\tif ( 100 !== res.data.progress ) {\n\t\t\t\t\t\t\tself.export( $table, $btn, res.data.filename );\n\n\t\t\t\t\t\t// finished, download the file and cleanup the interface.\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsetTimeout( function() {\n\t\t\t\t\t\t\t\tvar id = 'llms-dl-export';\n\t\t\t\t\t\t\t\t$( '#' + id ).remove();\n\t\t\t\t\t\t\t\t$( '<a />', {\n\t\t\t\t\t\t\t\t\tid: id,\n\t\t\t\t\t\t\t\t\thref: res.data.url,\n\t\t\t\t\t\t\t\t\tstyle: 'display: hidden;',\n\t\t\t\t\t\t\t\t\tdownload: '',\n\t\t\t\t\t\t\t\t} ).appendTo( 'body' );\n\t\t\t\t\t\t\t\t$( '#' + id )[0].click();\n\t\t\t\t\t\t\t\tactivate_button();\n\t\t\t\t\t\t\t\t$progress.hide();\n\t\t\t\t\t\t\t}, 1000 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t} );\n\n\t\t}\n\n\t\t/**\n\t\t * Retrieve arguments stored in the table and parse into a readable object\n\t\t * @param    obj     $table  jQuery selector for the current table\n\t\t * @param    string  item    key to grab a specific value from the args object\n\t\t * @return   mixed\n\t\t * @since    3.2.0\n\t\t * @version  3.2.0\n\t\t */\n\t\tthis.get_args = function( $table, item ) {\n\n\t\t\tvar args = JSON.parse( $table.attr( 'data-args' ) );\n\n\t\t\tif ( item ) {\n\t\t\t\treturn ( args[ item ] ) ? args[ item ] : false;\n\t\t\t} else {\n\t\t\t\treturn args;\n\t\t\t}\n\n\t\t};\n\n\t\t/**\n\t\t * Reload a table\n\t\t * @param    obj   $table  jQuery selector for the current table\n\t\t * @param    obj   args    arguments to pass with the ajax query\n\t\t * @return   void\n\t\t * @since    3.2.0\n\t\t * @version  3.2.0\n\t\t */\n\t\tthis.reload = function( $table, args ) {\n\n\t\t\targs = $.extend( {\n\t\t\t\taction: 'get_admin_table_data',\n\t\t\t\thandler: $table.attr( 'data-handler' ),\n\t\t\t}, JSON.parse( $table.attr( 'data-args' ) ), args );\n\n\t\t\tLLMS.Ajax.call( {\n\t\t\t\tdata: args,\n\t\t\t\tbeforeSend: function() {\n\n\t\t\t\t\tLLMS.Spinner.start( $table.closest( '.llms-table-wrap' ) );\n\n\t\t\t\t},\n\t\t\t\tsuccess: function( r ) {\n\n\t\t\t\t\tLLMS.Spinner.stop( $table.closest( '.llms-table-wrap' ) )\n\n\t\t\t\t\tif ( r.success ) {\n\n\t\t\t\t\t\t$table.attr( 'data-args', r.data.args );\n\n\t\t\t\t\t\t$table.find( 'thead' ).replaceWith( r.data.thead );\n\t\t\t\t\t\t$table.find( 'tbody' ).replaceWith( r.data.tbody );\n\t\t\t\t\t\t$table.find( 'tfoot' ).replaceWith( r.data.tfoot );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t} );\n\n\t\t};\n\n\t\t/**\n\t\t * Executes an AJAX search query\n\t\t * @param    obj   $table  jQuery selector for the current table\n\t\t * @param    obj   $input  jQuery selector for the search input\n\t\t * @return   void\n\t\t * @since    3.2.0\n\t\t * @version  3.2.0\n\t\t */\n\t\tthis.search = function( $table, $input ) {\n\n\t\t\tvar val = $input.val()\n\t\t\t\tlen = val.length;\n\n\t\t\tif ( 0 === len || len >= 3 ) {\n\t\t\t\tthis.reload( $table, {\n\t\t\t\t\tpage: 1,\n\t\t\t\t\tsearch: $input.val(),\n\t\t\t\t} );\n\t\t\t}\n\n\t\t};\n\n\t\t/**\n\t\t * Throttle function by a delay in ms\n\t\t * @param    Function  fn     callback function\n\t\t * @param    int       delay  delay in millisecond\n\t\t * @return   function\n\t\t * @since    3.2.0\n\t\t * @version  3.2.0\n\t\t */\n\t\tfunction debounce( fn, delay ) {\n\t\t\tvar timer = null;\n\t\t\treturn function () {\n\t\t\t\tvar context = this,\n\t\t\t\t\targs = arguments;\n\t\t\t\twindow.clearTimeout( timer );\n\t\t\t\ttimer = window.setTimeout( function () {\n\t\t\t\t\tfn.apply( context, args );\n\t\t\t\t}, delay );\n\t\t\t};\n\t\t}\n\n\t\t// go\n\t\tthis.init();\n\n\t};\n\n\t// initialize the object\n\twindow.llms.admin_tables = new AdminTables();\n\n} )( jQuery );\n"],"sourceRoot":"../../js"}