$=jQuery; (function( $ ){ /* Add csrf token */ /* options: url: url to post, loading: dom id, success: func, pre_callback, separated_data:boolean */ $.fn.ajaxList = function (name_list, options) { if(!options.hasOwnProperty(loading)) { $(loading).show(); } table_base=' \
'; // \ // $(this).html(table_base); //Connect with ajax. if(!options.hasOwnProperty("url")) { list_tr=' \ No ajax url defined \ '; $(this).children('#'+name_list).append(list_tr); $(loading).hide(); return false; } exclude_list=[]; if(options.hasOwnProperty("exclude_list")) { exclude_list=options.exclude_list; } this.order_field=0; this.order=0; arr_icon=['', '']; var func=this; this.updateAjax=function (name_list, options, position) { // Get ajax, the ajax request need give a json request with name titles and fields value. $('#'+name_list).html(''); $('.pages').remove(); $('.link_pages').off(); $('.change_order').off(); extra_data={} if(options.hasOwnProperty("extra_data")) { extra_data=options.extra_data; } data={position: position, order_field: func.order_field, order: func.order}; for(i in extra_data) { data[i]=extra_data[i]; } var block_name=$('#'+name_list).parent(); $.ajax({ type: 'POST', url: options.url, data: data, success: function (data) { order_field=''; list_tr=''; for(i in data.fields) { if(data.fields[i][1]) { list_tr+=''+data.fields[i][0]+''; } else { list_tr+=''+data.fields[i][0]+''; } } list_tr+=''; $('#'+name_list).append(list_tr); list_tr=''; for(i in data.rows) { list_tr+=''; for(n in data.rows[i]) { if(exclude_list.indexOf(n)==-1) { list_tr+=''+data.rows[i][n]+''; } } list_tr+=''; } $('#'+name_list).append(list_tr); block_name.prepend('

'+data.html_pages+'

'); block_name.append('

'+data.html_pages+'

'); // Prepare defaults of fields orders $('#field_list_'+func.order_field).append(' '+arr_icon[func.order]); // Prepare button events $('.link_pages').click(function (e) { e.preventDefault(); position=parseInt($(this).attr('href').replace('#?begin_page=', '')); if(isNaN(position)) { position=0; } func.updateAjax(name_list, options, position); }); $('.change_order').click(function (e) { e.preventDefault(); func.order_field=$(this).attr('href').replace('#', ''); //alert($(this).children('i').attr('class')); if($(this).children('i').hasClass('asc_icon')) { func.order=1; } else { func.order=0; } func.updateAjax(name_list, options, position); }); if(options.hasOwnProperty("after_list")) { after_list=options.after_list; after_list(); } }, error: function (data) { console.log('Cannot connect to list source'); }, dataType: 'json' }); }; this.updateAjax(name_list, options, 0, ''); $(loading).hide(); return this; } })( jQuery ); (function( $ ){ /* Add csrf token */ /* options: url: url to get urls, loading: dom id, success: func, pre_callback, separated_data:boolean */ $.fn.ajaxListSimple = function (fields, options) { if(!options.hasOwnProperty("url")) { list_tr=' \ No ajax url defined \ '; $(this).append(list_tr); return false; } this.fields=fields; this.options=options; this.updateAjaxList=function () { options=this.options; if(options.hasOwnProperty("loading")) { $(options.loading).show(); } if(options.hasOwnProperty("pre_callback")) { pre_callback(this); } //In url you can send, begin_page, num_elements for pagination. $.ajax({ url: options.url, type: 'GET', data: {}, table: this, success: function (data) { $(options.loading).hide(); //console.log(table.options); if(!data.error) { var z=0; for (const row of data.items) { //console.log(element); tr=this.table.append(''); //for (const property in row) { for (const field of this.table.fields) { //console.log(`${property}: ${row[property]}`); $('#row_ajaxlist_'+z).append(''+row[field]+''); } z++; } if(data.hasOwnProperty('total_num_items')) { } if(options.hasOwnProperty("success")) { options.success(data); } } else { if(options.hasOwnProperty("error_data")) { options.error_data(data); } } }, error: function (data) { $(options.loading).hide(); alert('Error: '+data.status+' '+data.statusText); }, dataType: 'json' }); }; this.updateAjaxList(); return this; } })( jQuery ); function pagination( begin_page, total_elements, num_elements, link ,initial_num_pages=20, variable='begin_page', label='', func_jscript='') { css_class='link_pages'; pages=''; if(begin_page>total_elements) { begin_page=0; } // Calculamos el total de todas las páginas total_page=Math.ceil(total_elements/num_elements); // Calculamos en que página nos encontramos actual_page=Math.ceil(begin_page/num_elements); // Calculamos el total de intervalos total_interval=Math.ceil(total_page/initial_num_pages); // Calculamos el intervalo en el que estamos actual_interval=Math.floor(actual_page/initial_num_pages); //Calculamos el elemento de inicio del intervalo initial_page=Math.ceil(actual_interval*initial_num_pages*num_elements); last_page=Math.ceil(actual_interval*initial_num_pages*num_elements)+Math.ceil(initial_num_pages*num_elements); if (last_page>total_elements) { last_page=total_elements; } url_base=new URL(link); if(initial_page>0) { //initial_link=add_get_parameters(link, **{variable: '0'}); initial_url=url_base; initial_url.searchParams.append(variable, '0'); initial_link=initial_url.href; //middle_link=add_get_parameters(link, **{variable: str((initial_page-num_elements)) } ); middle_url=url_base; middle_url.searchParams.append(variable, (initial_page-num_elements)); middle_link=middle_url.href; pages += "1 << " } arr_pages={}; for(x=initial_page;x"+num_page+" "; arr_pages[begin_page]=''+num_page+' '; pages+=arr_pages[x]; } if (last_page>> Last"; } return pages; }