Fixes in ajax_list

This commit is contained in:
Antonio de la Rosa 2024-01-19 01:50:30 +01:00
parent 1dcbd599d9
commit b51eb6faf6

View file

@ -229,6 +229,13 @@ $=jQuery;
$.fn.ajaxListSimple = function (fields, options) {
//console.log($(this).find('tr.row_list').attr('class'));
begin_page=0;
order_field='';
if(!options.hasOwnProperty("url")) {
@ -242,10 +249,51 @@ $=jQuery;
}
if(!options.hasOwnProperty("num_elements")) {
options.num_elements=1;
}
if(!options.hasOwnProperty("initial_num_pages")) {
options.initial_num_pages=20;
}
if(!options.hasOwnProperty("order_fields")) {
options.order_fields=[];
}
this.fields=fields;
this.options=options;
this.css_class='link_pages';
//Prepare search
for(i in options.order_fields) {
field=options.order_fields[i];
field_pos=this.fields.indexOf(field);
if(field_pos!=-1) {
html_ele='<a href="#" class="change_order" data-field="'+field+'">'+$(this).find('tr:first-child').children().eq(field_pos).html()+'</a>';
$(this).find('tr:first-child').children().eq(field_pos).html(html_ele);
}
}
this.updateAjaxList=function () {
options=this.options;
@ -267,7 +315,7 @@ $=jQuery;
$.ajax({
url: options.url,
type: 'GET',
data: {},
data: {num_elements: options.num_elements, begin_page: begin_page},
table: this,
success: function (data) {
@ -279,6 +327,8 @@ $=jQuery;
var z=0;
$(this.table).find('tr.row_list').remove();
for (const row of data.items) {
//console.log(element);
@ -289,7 +339,9 @@ $=jQuery;
//console.log(`${property}: ${row[property]}`);
$('#row_ajaxlist_'+z).append('<td>'+row[field]+'</td>');
var field_name=row[field];
$('#row_ajaxlist_'+z).append('<td>'+field_name+'</td>');
}
@ -300,7 +352,25 @@ $=jQuery;
if(data.hasOwnProperty('total_num_items')) {
var total_elements=data.total_num_items;
var num_elements=options.num_elements;
var link=options.url;
var initial_num_pages=options.initial_num_pages;
var variable='begin_page';
var label='';
var func_jscript='';
var pages=pagination( begin_page, total_elements, num_elements, link ,initial_num_pages, variable, label, func_jscript, this.table.css_class);
$('#table_pages').remove();
this.table.after('<div id="table_pages"><p>Pages: '+pages+'</p></div>');
}
@ -333,8 +403,47 @@ $=jQuery;
});
};
//Pages click method for change page
$(document).on('click', '.'+this.css_class, {table: this}, function (e) {
console.log('Changing page...');
begin_page=$(this).attr('data-begin');
//Update list getting begin_page variable
e.data.table.updateAjaxList();
return false;
});
//Method for change order in page
$(document).on('click', '.change_order', {table: this}, function (e) {
console.log('Changing order list...');
order_field=$(this).attr('data-field');
console.log(order_field);
begin_page=0;
//Update list getting order_field variable
//e.data.table.updateAjaxList();
return false;
});
//First loading of list
this.updateAjaxList();
return this;
@ -345,9 +454,11 @@ $=jQuery;
})( jQuery );
function pagination( begin_page, total_elements, num_elements, link ,initial_num_pages=20, variable='begin_page', label='', func_jscript='') {
//begin_page, int: number of first element showed in table
function pagination( begin_page, total_elements, num_elements, link ,initial_num_pages, variable, label, func_jscript, css_class) {
css_class='link_pages';
pages='';
@ -383,56 +494,60 @@ function pagination( begin_page, total_elements, num_elements, link ,initial_num
last_page=total_elements;
}
url_base=new URL(link);
//url_base=new URL(link);
if(initial_page>0) {
//initial_link=add_get_parameters(link, **{variable: '0'});
initial_url=url_base;
initial_url=new URL(link);
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_url=new URL(link);
begin_page=(initial_page-num_elements);
middle_url.searchParams.append(variable, begin_page);
middle_link=middle_url.href;
pages += "<a class=\""+css_class+"\" href=\""+initial_link+"\" onclick=\"${func_jscript}\">1</a> <a class=\""+css_class+"\" href=\""+middle_link+"\">&lt;&lt;</a> "
pages += "<a class=\""+css_class+"\" href=\""+initial_link+"\" onclick=\"${func_jscript}\" data-begin=\"0\">1</a> <a class=\""+css_class+"\" href=\""+middle_link+"\" data-begin=\""+begin_page+"\">&lt;&lt;</a> "
}
arr_pages={};
for(x=initial_page;x<last_page;x+=num_elements) {
//for x in range(initial_page, last_page, num_elements):
//middle_link=add_get_parameters(link, **{variable: str(x)} )
middle_url=url_base;
var middle_url=new URL(link);
middle_url.searchParams.append(variable, x);
middle_link=middle_url.href;
num_page=Math.ceil(x/num_elements)+1;
arr_pages[x]="<a class=\""+css_class+"\" href=\""+middle_link+"\">"+num_page+"</a> ";
arr_pages[x]="<a class=\""+css_class+"\" href=\""+middle_link+"\" data-begin=\""+x+"\">"+num_page+"</a> ";
arr_pages[begin_page]='<span class="selected_page">'+num_page+'</span> ';
pages+=arr_pages[x];
}
if (last_page<total_elements) {
middle_url=url_base;
middle_url=new URL(link);
middle_url.searchParams.append(variable, (initial_page-num_elements));
middle_link=middle_url.href;
//last_link=add_get_parameters(link, **{variable: str( ( ( total_page*num_elements ) - num_elements) ) } )
last_url=url_base;
last_url=new URL(link);
last_url.searchParams.append(variable, ( ( total_page*num_elements ) - num_elements) );
last_link=last_url.href;
@ -441,6 +556,7 @@ function pagination( begin_page, total_elements, num_elements, link ,initial_num
}
return pages;
}