/*----------------------------- pager -----------------------------*/ (($) => { const defaults = { offset:0, limitPager:2, limitRecords:0, totalRecords:0, textTrigger:[ '', '' ], textTriggerDisplay:true, textSkip:'..', textBetween:'-', funcCallbackExecuteStart:( offset, limitRecords, totalRecords ) => {}, funcCallbackExecuteEnd:( offset, limitRecords, totalRecords ) => {}, funcCallbackClick:(offset) => {} }; $.fn.pager = function(options){ let el = this, lenEl = el.length; if(lenEl === 0) return this; if(lenEl > 1){ el.each(function(){ $(this).pager(options); }); return this; } let configs = {}, funcDestructor = () => { lenEl = funcInit = funcPutHtml = funcCustomEvents = funcDestructor = void 0; }, funcInit = () => { configs = $.extend( {}, defaults, options ); funcPutHtml(); funcCustomEvents(); funcExecute(configs.offset); funcDestructor(); }, funcPutHtml = () => { el.html(`
`); }, funcCustomEvents = () => { el.on({ 'pager.execute':( event, args ) => { configs = $.extend( {}, configs, args ); funcExecute(configs.offset); } }); }, funcNumberFormat = (number) => { return number.toString().replace(/([0-9]+?)(?=(?:[0-9]{3})+$)/g , '$1,'); }, funcExecute = (offset) => { configs.offset = parseInt(offset); configs.limitPager = parseInt(configs.limitPager); configs.limitRecords = parseInt(configs.limitRecords); configs.totalRecords = parseInt(configs.totalRecords); if(configs.funcCallbackExecuteStart( configs.offset, configs.limitRecords, configs.totalRecords ) === false) return false; let elePagerList = el.find('.pager_list'), elePagerTriggerPrev = el.find('.pager_trigger_parent_prev'), elePagerTriggerNext = el.find('.pager_trigger_parent_next'), cntPager = Math.ceil(configs.totalRecords / configs.limitRecords), cntFocusStart = configs.offset * configs.limitRecords + 1, cntFocusEnd = (configs.offset + 1) * configs.limitRecords; if(cntFocusEnd > configs.totalRecords) cntFocusEnd = configs.totalRecords; elePagerList.empty(); elePagerTriggerPrev.empty().hide(); elePagerTriggerNext.empty().hide(); for(var i = 0;i < cntPager;i++){ if( i === 1 && configs.offset - configs.limitPager - 1 > 0 ) elePagerList.append(`
  • ` + configs.textSkip + `
  • `); if( i === cntPager - 1 && configs.offset + configs.limitPager + 2 < cntPager ) elePagerList.append(`
  • ` + configs.textSkip + `
  • `); if( i !== 0 && i !== cntPager - 1 && ( configs.offset - configs.limitPager > i || configs.offset + configs.limitPager < i ) ) continue; elePagerList.append(configs.offset === i?`
  • ` + funcNumberFormat(i + 1) + `
  • `:`
  • `); } if( configs.textTriggerDisplay && configs.offset > 0 ) elePagerTriggerPrev .html(``) .show(); if( configs.textTriggerDisplay && configs.offset < cntPager - 1 ) elePagerTriggerNext .html(``) .show(); el.find('.pager_count_records_total').html(funcNumberFormat(configs.totalRecords)); if(0 < configs.totalRecords) el.find('.pager_count_records_active').html(funcNumberFormat(cntFocusStart) + configs.textBetween + funcNumberFormat(cntFocusEnd)); el.find('.pager_trigger').on({ 'click':function(){ const dataOffset = $(this).data('offset'); if(configs.funcCallbackClick(dataOffset) === false) return false; funcExecute(dataOffset); } }); configs.funcCallbackExecuteEnd( configs.offset, configs.limitRecords, configs.totalRecords ); }; funcInit(); return this; }; })(jQuery); /*----------------------------- /pager -----------------------------*/