Debug pagination

This commit is contained in:
Fabrice PENHOËT 2022-07-15 13:27:28 +02:00
parent 96db98ae4a
commit 19809182d8
12 changed files with 27 additions and 22 deletions

View File

@ -1,6 +1,6 @@
{
"name": "freedatas2html",
"version": "1.5.0",
"version": "1.5.1",
"description": "Conversion and display of data in different formats (CSV, JSON, HTML) with the possibility of filtering, classifying and paginating the results.",
"main": "index.js",
"scripts": {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -228,7 +228,7 @@ export class FreeDatas2HTML
else
this.datasRender.fields=this.realFields2Rend();
this._datas2Rend=this.datas2HTML();
this._datas2Rend=this.datas2HTML(paginationSelected);
this.datasRender.datas=this._datas2Rend;
this._datasViewElt.eltDOM!.innerHTML=this.datasRender.rend2HTML(); // "!", car l'existence de "eltDOM" est testée par le setter.
@ -236,12 +236,12 @@ export class FreeDatas2HTML
// car l'élément HTML du compteur peut être dans le template du Render.
this.datasCounter2HTML();
// (ré)activation des éventuels liens de classement, si ils sont affichés en même temps que le reste des données :
// (ré)activation des éventuels liens de classement, s'ils sont affichés en même temps que le reste des données :
for(let field of this.datasSortingFields)
field.field2HTML();
// Tout réaffichage peut entraîner une modification du nombre de pages (évolution filtres, etc.)
// Mais ne pas recharger si l'appel vient du choix de la page à afficher
// Sauf si la demande de réaffichage vient du choix de la page à afficher
if(this.pagination !== undefined && !paginationSelected)
this.pagination.pages2HTML();
}
@ -260,7 +260,7 @@ export class FreeDatas2HTML
}
// Fonction sélectionnant les données à afficher en prenant en compte les éventuels filtres, la pagination, etc.
public datas2HTML() : {[index: string]:string}[]
public datas2HTML(paginationSelected : boolean) : {[index: string]:string}[]
{
// Dois-je classer les données par rapport à un champ ?
if(this.datasSortedField !== undefined)
@ -282,6 +282,11 @@ export class FreeDatas2HTML
if (this.pagination !== undefined && this.pagination.selectedValue !== undefined && this.pagination.pages !== undefined && this.pagination.pages.selectedValue !== undefined)
firstData=this.pagination.selectedValue*(this.pagination.pages.selectedValue-1);
let maxData=(this.pagination !== undefined && this.pagination.selectedValue !== undefined) ? this.pagination.selectedValue : this._datas.length;
// Sauf si l'utilisateur vient de choisir la page à afficher, on revient à la première page
// Car dans les autres cas le nombre d'enregistrements peut avoir évolué et donc le nombre de pages proposées :
if(this.pagination !== undefined && this.pagination.pages !== undefined && this.pagination.pages.selectedValue !== undefined && !paginationSelected)
this.pagination.pages.selectedValue=1; // ajouter un test unitaire ?
// Création du tableau des données à afficher :
let datas2Display=[];

View File

@ -132,9 +132,6 @@ 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 lancé ailleurs, les données et leur nombre peuvent avoir changé.
this.pages.selectedValue=1;
let pagination=this;
selectElement.addEventListener("change", function(e)

View File

@ -219,7 +219,8 @@ var FreeDatas2HTML = (function () {
enumerable: true,
configurable: true
});
FreeDatas2HTML.prototype.refreshView = function () {
FreeDatas2HTML.prototype.refreshView = function (paginationSelected) {
if (paginationSelected === void 0) { paginationSelected = false; }
if (this._fields.length === 0 || this._datasViewElt === undefined)
throw new Error(errors.converterRefreshFail);
else {
@ -227,7 +228,7 @@ var FreeDatas2HTML = (function () {
this.datasRender.fields = this._fields;
else
this.datasRender.fields = this.realFields2Rend();
this._datas2Rend = this.datas2HTML();
this._datas2Rend = this.datas2HTML(paginationSelected);
this.datasRender.datas = this._datas2Rend;
this._datasViewElt.eltDOM.innerHTML = this.datasRender.rend2HTML();
this.datasCounter2HTML();
@ -235,7 +236,7 @@ var FreeDatas2HTML = (function () {
var field = _a[_i];
field.field2HTML();
}
if (this.pagination !== undefined)
if (this.pagination !== undefined && !paginationSelected)
this.pagination.pages2HTML();
}
};
@ -245,7 +246,7 @@ var FreeDatas2HTML = (function () {
this.datasCounterElt.eltDOM.textContent = "" + this._nbDatasValid;
}
};
FreeDatas2HTML.prototype.datas2HTML = function () {
FreeDatas2HTML.prototype.datas2HTML = function (paginationSelected) {
if (this.datasSortedField !== undefined) {
var field_1 = this._fields[this.datasSortedField.datasFieldNb];
var fieldOrder_1 = this.datasSortedField.order;
@ -260,6 +261,8 @@ var FreeDatas2HTML = (function () {
if (this.pagination !== undefined && this.pagination.selectedValue !== undefined && this.pagination.pages !== undefined && this.pagination.pages.selectedValue !== undefined)
firstData = this.pagination.selectedValue * (this.pagination.pages.selectedValue - 1);
var maxData = (this.pagination !== undefined && this.pagination.selectedValue !== undefined) ? this.pagination.selectedValue : this._datas.length;
if (this.pagination !== undefined && this.pagination.pages !== undefined && this.pagination.pages.selectedValue !== undefined && !paginationSelected)
this.pagination.pages.selectedValue = 1;
var datas2Display = [];
var nbVisible = 0, nbTotal = 0;
for (var row in this._datas) {

View File

@ -101,11 +101,11 @@ var Pagination = (function () {
selectorsHTML += "</select>";
this.pages.displayElement.eltDOM.innerHTML = selectorsHTML;
var selectElement_2 = document.getElementById("freeDatas2HTMLPagesSelector");
this.pages.selectedValue = 1;
var pagination_2 = this;
selectElement_2.addEventListener("change", function (e) {
pagination_2.pages.selectedValue = Number(selectElement_2.value);
pagination_2._converter.refreshView();
pagination_2._converter.refreshView(true);
selectElement_2.value = "" + pagination_2.pages.selectedValue;
});
}
};

View File

@ -169,7 +169,7 @@ describe("Test de la pagination.", () =>
expect(selectElement).toEqual(fixtures.selectorForManyPages);
});
it("Après chaque actualisation de la liste de pages, la valeur sélectionnée est remise à 0.", () =>
/*it("Après chaque actualisation de la liste de pages, la valeur sélectionnée est remise à 0.", () =>
{
pagination.pages2HTML();
let selectElement=document.getElementById("freeDatas2HTMLPagesSelector") as HTMLInputElement;
@ -178,7 +178,7 @@ describe("Test de la pagination.", () =>
pagination.pages2HTML();
selectElement=document.getElementById("freeDatas2HTMLPagesSelector") as HTMLInputElement;
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, tout en gardant la page choisie présélectionnée.", () =>
{