diff --git a/src/FreeDatas2HTML.ts b/src/FreeDatas2HTML.ts
index 1cc2647..ef16138 100644
--- a/src/FreeDatas2HTML.ts
+++ b/src/FreeDatas2HTML.ts
@@ -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();
}
}
diff --git a/src/Pagination.ts b/src/Pagination.ts
index 721c6be..ddeb68f 100644
--- a/src/Pagination.ts
+++ b/src/Pagination.ts
@@ -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;
});
}
}
diff --git a/tests/paginationSpec.ts b/tests/paginationSpec.ts
index 37af67a..dbcf393 100644
--- a/tests/paginationSpec.ts
+++ b/tests/paginationSpec.ts
@@ -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");
+ });
+
});
});
\ No newline at end of file