Added simple list function and jsutils

This commit is contained in:
Antonio de la Rosa 2025-12-13 01:40:41 +01:00
parent 3a4aa06c1c
commit 314683661f
3 changed files with 129 additions and 2 deletions

2
.gitmodules vendored
View file

@ -1,3 +1,3 @@
[submodule "cuchulu/modules/admin/media/js/jsutils"] [submodule "cuchulu/modules/admin/media/js/jsutils"]
path = cuchulu/modules/admin/media/js/jsutils path = cuchulu/modules/admin/media/js/jsutils
url = https://git.cuchulu.com/paramecio/jsutils.git url = ssh://git@git.cuchulu.com/paramecio/jsutils.git

View file

@ -445,7 +445,133 @@ class AjaxList(SimpleList):
return {'fields': self.fields, 'rows': rows, 'html_pages': html_pages} return {'fields': self.fields, 'rows': rows, 'html_pages': html_pages}
class SimpleAjaxList(): def simple_ajax_list(model, fields_searched, fields_selected, func_options=None):
error=1
message=''
items=[]
total_num_items=model.select_count(model.name_field_id)
try:
begin_page=int(request.query.get('begin_page')) if int(request.query.get('begin_page')>=0) else 0
except:
begin_page=0
try:
num_elements=int(request.query.get('num_elements')) if int(request.query.get('num_elements')>0) else 0
except:
num_elements=20
arr_order=['ASC', 'DESC']
try:
order=int(request.query.get('order', '0'))
except:
order=0
if order<0 or order>1:
order=0
get_order_field=str(request.query.get('order_field', ''))
if get_order_field in model.fields and get_order_field!='':
order_field=get_order_field
else:
order_field=fields_selected[0]
search_values=[]
sql_search_text='WHERE 1=1'
search_all_text=str(request.query.get('search_all_text', ''))
if search_all_text!='':
arr_fields=[]
arr_values=[]
for field in fields_searched:
arr_fields.append(f'`{field}` LIKE %s')
arr_values.append(search_all_text+'%')
search_values=arr_values+search_values
sql_search_text+=f' AND ({' OR '.join(arr_fields)})'
#print(order_field)
#print(search_values)
#print(sql_search_text)
#print({order_field: order})
with model.set_conditions(sql_search_text, search_values).set_order({order_field: order}).select(fields_selected, raw_query=True) as cursor:
for v in cursor:
items.append(v)
if func_options:
items[len(items)-1]['options']=func_options(v)
pass
if len(items)>0:
error=0
return {'items': items, 'total_num_items': total_num_items, 'error': error, 'message': message}
"""
settype($_GET['search_all_text'], 'string');
$search_all_text=trim($_GET['search_all_text']);
if($search_all_text!='') {
$arr_fields=[];
$arr_values=[];
//$arr_values_sql=array_fill(0, count($this->fields_list), '?');
foreach(array_keys($this->fields_list) as $field) {
$arr_fields[]='`'.$field.'` LIKE ?';
$arr_values[]=$search_all_text.'%';
}
$search_values=array_merge($arr_values, $search_values);
$sql_search_text=$sql_search_text.' AND ('.implode(' OR ', $arr_fields).')';
//$search_all_text='WHERE ';
}
$this->db->select($this->table, array_keys($this->fields_list), $sql_search_text.' order by ? ? limit '.$begin_page.','.$num_elements, $search_values);
foreach($this->db->get_result() as $v) {
$items[]=$v;
$items[count($items)-1]['options']='<a href="">'._('Edit').'</a><br /><a href="">'._('Delete').'</a>';
}
if($items) {
$error=0;
}
return ['items' =>$items, 'total_num_items' => $total_num_items, 'error' => $error, 'message' => $message];
"""
pass pass

@ -0,0 +1 @@
Subproject commit ff69d57ca5224ddf528ab283f4e628b296ea4886