GX-Bug #58167
geschlossenGutschein E-Mail Seite lädt sehr langsam wenn man viele Kunden hat.
100%
Auf der Gutschein-E-Mail-Seite werden die Kunden jetzt über eine Autovervollständigung und nicht mehr über ein Dropdown ausgewählt, damit es bei vielen Kunden nicht mehr zu Performanceproblemen der Seite kommt
Beschreibung
Gutschein E-Mail Seite lädt sehr langsam wenn man viele Kunden hat, da das DropDown-Menü mit allen Kunden ausgefüllt wird, die im Shop vorhanden sind.
Hier sollte man überlegen ob es Sinn macht, hier ein Autocomplete Feld zu verwenden, wo man nach Kunden suchen kann. Z.B. durch Eingabe des Namens oder der E-Mail Adresse.
Damit muss man nicht immer alle Kunden im DropDown-Menü anzeigen, was die Seite immer langsamer macht, je mehr Kunden man hat.
Checkliste 0/0
Von Jonatas Fischer vor etwa 6 Jahren aktualisiert
Steps to reproduce:¶
-
Activate Gift Voucher System
- Shop Settings >> Special Modules -> enable "Activate Gift Voucher System".
-
Ensure that Gift Vouchers module are installed
- Modules >> Order Total -> check if module "Gift Vouchers" are installed
-
Access the Mail Gift Voucher page
- Vouchers >> Mail Gift Voucher
Changes¶
Replace the customer select box (select element) with a autocomplete element with ajax callback request
- Today admin portal uses jQuery 1.12 and jQuery.ui version 1.11. jQuery UI autocomplete Documentation: http://api.jqueryui.com/1.11/autocomplete/ Example of how to implement the autocomplete:
// Single Select
$( "#autocomplete" ).autocomplete({
source: function( request, response ) {
// Fetch data
$.ajax({
url: "gv_mail.php",
type: 'post',
dataType: "json",
data: {
customer: request.term
},
success: function( data ) {
response( data );
}
});
},
select: function (event, ui) {
// Set selection
$('#autocomplete').val(ui.item.label); // display the selected text
$('#selectuser_id').val(ui.item.value); // save selected id to input
return false;
}
});
The back-end should check the customer array element on POST and if supplied realize the search on database answering with the following format:
$result[] = ['value' =>'id', 'label' =>'user name'];
Obs:Remember that the options "To all customer" and "To all newsletters subscribers" must always be visible.