Bebug problème pagination perdue suite au réaffichage.
This commit is contained in:
parent
488c357e21
commit
96db98ae4a
@ -217,7 +217,7 @@ export class FreeDatas2HTML
|
||||
|
||||
// Actualise l'affichage des données.
|
||||
// Méthode également appelée par les autres classes.
|
||||
public refreshView() : void
|
||||
public refreshView(paginationSelected=false) : void
|
||||
{
|
||||
if(this._fields.length === 0 || this._datasViewElt === undefined)
|
||||
throw new Error(errors.converterRefreshFail);
|
||||
@ -241,7 +241,8 @@ export class FreeDatas2HTML
|
||||
field.field2HTML();
|
||||
|
||||
// Tout réaffichage peut entraîner une modification du nombre de pages (évolution filtres, etc.)
|
||||
if(this.pagination !== undefined)
|
||||
// Mais ne pas recharger si l'appel vient du choix de la page à afficher
|
||||
if(this.pagination !== undefined && !paginationSelected)
|
||||
this.pagination.pages2HTML();
|
||||
}
|
||||
}
|
||||
|
@ -132,14 +132,17 @@ export class Pagination implements Paginations
|
||||
this.pages.displayElement.eltDOM!.innerHTML=selectorsHTML;
|
||||
|
||||
let selectElement=document.getElementById("freeDatas2HTMLPagesSelector") as HTMLInputElement;
|
||||
// Réinitialisé, car dans le cas d'un réaffichage, les données et leur nombre peuvent changer.
|
||||
|
||||
// Réinitialisé, car dans le cas d'un réaffichage lancé ailleurs, les données et leur nombre peuvent avoir changé.
|
||||
this.pages.selectedValue=1;
|
||||
|
||||
let pagination=this;
|
||||
selectElement.addEventListener("change", function(e)
|
||||
{
|
||||
pagination.pages.selectedValue=Number(selectElement.value);
|
||||
pagination._converter.refreshView();
|
||||
pagination._converter.refreshView(true);
|
||||
// Présélection de la page dont on vient de demander l'affichage :
|
||||
selectElement.value=""+pagination.pages.selectedValue;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -180,7 +180,7 @@ describe("Test de la pagination.", () =>
|
||||
expect(pagination.pages.selectedValue).toEqual(1);
|
||||
});
|
||||
|
||||
it("La manipulation du sélecteur de pages doit enregistrer la valeur sélectionnée et appeler la fonction actualisant l'affichage.", () =>
|
||||
it("La manipulation du sélecteur de pages doit enregistrer la valeur sélectionnée et appeler la fonction actualisant l'affichage, tout en gardant la page choisie présélectionnée.", () =>
|
||||
{
|
||||
pagination.pages2HTML();
|
||||
spyOn(converter, "refreshView");
|
||||
@ -189,10 +189,26 @@ describe("Test de la pagination.", () =>
|
||||
selectElement.dispatchEvent(new Event('change'));
|
||||
expect(pagination.pages.selectedValue).toEqual(4);
|
||||
expect(converter.refreshView).toHaveBeenCalledTimes(1);
|
||||
let selectElementAfter=document.getElementById("freeDatas2HTMLPagesSelector") as HTMLInputElement;
|
||||
expect(selectElementAfter.value).toEqual("4");
|
||||
selectElement.value="1";
|
||||
selectElement.dispatchEvent(new Event('change'));
|
||||
expect(pagination.pages.selectedValue).toEqual(1);
|
||||
expect(converter.refreshView).toHaveBeenCalledTimes(2);
|
||||
selectElementAfter=document.getElementById("freeDatas2HTMLPagesSelector") as HTMLInputElement;
|
||||
expect(selectElementAfter.value).toEqual("1");
|
||||
});
|
||||
|
||||
it("Tout actualisation de l'affichage non généré par le choix d'une page, doit supprimer ce choix.", () =>
|
||||
{
|
||||
pagination.pages2HTML();
|
||||
const selectElement=document.getElementById("freeDatas2HTMLPagesSelector") as HTMLInputElement;
|
||||
selectElement.value="4";
|
||||
selectElement.dispatchEvent(new Event('change'));
|
||||
converter.refreshView();
|
||||
const selectElementAfter=document.getElementById("freeDatas2HTMLPagesSelector") as HTMLInputElement;
|
||||
expect(selectElementAfter.value).toEqual("1");
|
||||
});
|
||||
|
||||
});
|
||||
});
|
Loading…
Reference in New Issue
Block a user