Stop using hardcoded default of 100 for search

Now using max of maxmatches preference and 100
This commit is contained in:
nathan 2024-03-20 16:50:52 -06:00
parent f4cb19bea6
commit 91f70e354d
4 changed files with 12 additions and 17 deletions

View File

@ -242,13 +242,6 @@ export const Et2WithSearchMixin = dedupeMixin(<T extends Constructor<LitElement>
*/
protected static MIN_CHARS = 2;
/**
* Limit server searches to 100 results, matches Link::DEFAULT_NUM_ROWS
* @type {number}
*/
static RESULT_LIMIT : number = 100;
// Hold the original option data from earlier search results, since we discard on subsequent search
private _selected_remote = <SelectOption[]>[];
@ -1223,6 +1216,7 @@ export const Et2WithSearchMixin = dedupeMixin(<T extends Constructor<LitElement>
const controller = new AbortController();
const signal = controller.signal;
let response_ok = false;
let resultLimit = Math.max(parseInt(this.egw().preference('maxmatchs', 'common')), 100);
return StaticOptions.cached_from_file(this, this.searchUrl)
.then(options =>
{
@ -1234,9 +1228,9 @@ export const Et2WithSearchMixin = dedupeMixin(<T extends Constructor<LitElement>
});
// Limit results
this._total_result_count += filtered.length;
if(filtered.length > Et2WidgetWithSearch.RESULT_LIMIT)
if(filtered.length > resultLimit)
{
filtered.splice(Et2WidgetWithSearch.RESULT_LIMIT);
filtered.splice(resultLimit);
}
// Add the matches
this._total_result_count -= this.processRemoteResults(filtered);
@ -1269,7 +1263,7 @@ export const Et2WithSearchMixin = dedupeMixin(<T extends Constructor<LitElement>
{
// Include a limit, even if options don't, to avoid massive lists breaking the UI
let sendOptions = {
num_rows: Et2WidgetWithSearch.RESULT_LIMIT,
num_rows: parseInt(this.egw().preference('maxmatchs', 'common')) ?? 100,
...options
}
return this.egw().request(this.egw().link(this.egw().ajaxUrl(this.egw().decodePath(this.searchUrl)),

View File

@ -41,11 +41,6 @@ export type TreeItemData = SelectOption & {
*/
export class Et2Tree extends Et2WidgetWithSelectMixin(LitElement)
{
/**
* Limit server searches to 100 results, matches Link::DEFAULT_NUM_ROWS
* @type {number}
*/
static RESULT_LIMIT: number = 100;
//does not work because it would need to be run on the shadow root
//@query("sl-tree-item[selected]") selected: SlTreeItem;

View File

@ -106,7 +106,10 @@ class Link extends Etemplate\Widget
public static function ajax_link_search($app, $type, $pattern, $options=array())
{
$options['type'] = $type ?: $options['type'];
if(!$options['num_rows']) $options['num_rows'] = 100;
if(!$options['num_rows'])
{
$options['num_rows'] = max((int)$GLOBALS['egw_info']['user']['preference']['common']['maxmatchs'], 100);
}
$links = Api\Link::query($app, $pattern, $options);

View File

@ -807,7 +807,10 @@ class Link extends Link\Storage
echo "Options: "; _debug_array($options);
}
// limit number of returned rows by default to 100, if no limit is set
if (!isset($options['num_rows'])) $options['num_rows'] = self::DEFAULT_NUM_ROWS;
if(!isset($options['num_rows']))
{
$options['num_rows'] = max((int)$GLOBALS['egw_info']['user']['preference']['common']['maxmatchs'], self::DEFAULT_NUM_ROWS);
}
$result = self::exec($method, array($pattern, &$options));