View | Details | Raw Unified | Return to bug 34092
Collapse All | Expand All

(-)a/koha-tmpl/intranet-tmpl/prog/js/staff-global.js (-27 / +36 lines)
Lines 403-409 function patron_autocomplete(node, options) { Link Here
403
    let link_to;
403
    let link_to;
404
    let url_params;
404
    let url_params;
405
    let on_select_callback;
405
    let on_select_callback;
406
    let leading_wildcard = defaultPatronSearchMethod === 'contains' ? '%' : '';
406
407
    if (options) {
407
    if (options) {
408
        if (options['link-to']) {
408
        if (options['link-to']) {
409
            link_to = options['link-to'];
409
            link_to = options['link-to'];
Lines 417-447 function patron_autocomplete(node, options) { Link Here
417
    }
417
    }
418
    return node.autocomplete({
418
    return node.autocomplete({
419
        source: function (request, response) {
419
        source: function (request, response) {
420
            let q = []
420
            let q = buildPatronSearchQuery(request.term);
421
422
            // Add each pattern in search term for each search field
423
            let pattern_subquery_and = [];
424
            request.term.split(/[\s,]+/)
425
                .filter(function (s) { return s.length })
426
                .forEach(function (pattern, i) {
427
                    let pattern_subquery_or = [];
428
                    defaultPatronSearchFields.split(',').forEach(function (field, i) {
429
                        pattern_subquery_or.push(
430
                            { ["me." + field]: { 'like': leading_wildcard + pattern + '%' } }
431
                        );
432
                    });
433
                    pattern_subquery_and.push(pattern_subquery_or);
434
                });
435
            q.push({ "-and": pattern_subquery_and });
436
437
            // Add full search term for each search field
438
            let term_subquery_or = [];
439
            defaultPatronSearchFields.split(',').forEach(function (field, i) {
440
                term_subquery_or.push(
441
                    { ["me." + field]: { 'like': leading_wildcard + request.term + '%' } }
442
                );
443
            });
444
            q.push({ "-or": term_subquery_or });
445
421
446
            let params = {
422
            let params = {
447
                '_page': 1,
423
                '_page': 1,
Lines 533-535 function patron_autocomplete(node, options) { Link Here
533
                .appendTo(ul);
509
                .appendTo(ul);
534
        };
510
        };
535
}
511
}
536
- 
512
513
514
function buildPatronSearchQuery(term) {
515
516
    let q = [];
517
    let leading_wildcard = defaultPatronSearchMethod === 'contains' ? '%' : '';
518
519
    // Add each pattern for each search field
520
    let pattern_subquery_and = [];
521
    term.split(/[\s,]+/)
522
        .filter(function (s) { return s.length })
523
        .forEach(function (pattern, i) {
524
            let pattern_subquery_or = [];
525
            defaultPatronSearchFields.split(',').forEach(function (field, i) {
526
                pattern_subquery_or.push(
527
                    { ["me." + field]: { 'like': leading_wildcard + pattern + '%' } }
528
                );
529
            });
530
            pattern_subquery_and.push(pattern_subquery_or);
531
        });
532
    q.push({ "-and": pattern_subquery_and });
533
534
    // Add full search term for each search field
535
    let term_subquery_or = [];
536
    defaultPatronSearchFields.split(',').forEach(function (field, i) {
537
        term_subquery_or.push(
538
            { ["me." + field]: { 'like': leading_wildcard + term + '%' } }
539
        );
540
    });
541
    q.push({ "-or": term_subquery_or });
542
543
544
    return q;
545
}

Return to bug 34092