Relecture code des Selector, avant évolutions.
This commit is contained in:
parent
b2507594db
commit
6532c04ca1
@ -13,8 +13,8 @@ export class Selector implements Selectors
|
||||
private _values: string[]=[];
|
||||
private _name: string="";
|
||||
|
||||
// Injection de la classe principale, mais uniquement si des données ont été importées
|
||||
// Le champ duquel le sélecteur tire ses données doit exister ?
|
||||
// Injection de la classe principale, mais uniquement si des données ont été importées.
|
||||
// Le champ duquel le sélecteur tire ses données doit exister.
|
||||
constructor(converter: FreeDatas2HTML, datasFieldNb: number, elt: DOMElement, separator?: string)
|
||||
{
|
||||
if(converter.fields.length === 0 || converter.datas.length === 0)
|
||||
@ -70,13 +70,13 @@ export class Selector implements Selectors
|
||||
// Création du <select> dans le DOM correspondant au filtre
|
||||
public filter2HTML(label:string="") : void
|
||||
{
|
||||
this._name=this._converter.fields![this._datasFieldNb]; // "!" car l'existence du champ est testé par le constructeur
|
||||
this._name=this._converter.fields![this._datasFieldNb]; // "!", car l'existence du champ est testé par le constructeur.
|
||||
for (let row of this._converter.datas)
|
||||
{
|
||||
let checkedValue;
|
||||
if(this._separator === undefined)
|
||||
{
|
||||
checkedValue=row[this._name].trim(); // trim() évite des problèmes de classement des éléments du SELECT
|
||||
checkedValue=row[this._name].trim(); // trim() évite des problèmes de classement des éléments du SELECT.
|
||||
if(checkedValue !== "" && this._values.indexOf(checkedValue) === -1)
|
||||
this._values.push(checkedValue);
|
||||
}
|
||||
@ -92,7 +92,7 @@ export class Selector implements Selectors
|
||||
}
|
||||
}
|
||||
|
||||
if(this._values.length === 0) // possible si uniquement des valeurs vides pour ce champ
|
||||
if(this._values.length === 0) // possible, si uniquement des valeurs vides pour ce champ.
|
||||
throw new Error(errors.selectorFieldIsEmpty);
|
||||
else
|
||||
{
|
||||
@ -102,14 +102,15 @@ export class Selector implements Selectors
|
||||
else
|
||||
this._values.sort(compare());
|
||||
|
||||
// Création et injection du SELECT dans le DOM
|
||||
// Création et injection du SELECT dans le DOM :
|
||||
label=(label === "") ? this._name : label;
|
||||
let selectorsHTML="<label for='freeDatas2HTML_"+this._datasViewElt.id+"'>"+label+" :</label><select name='freeDatas2HTML_"+this._datasViewElt.id+"' id='freeDatas2HTML_"+this._datasViewElt.id+"'><option value='0'>----</option>"; // l'option zéro permet d'actualiser l'affichage en ignorant ce filtre
|
||||
let selectorsHTML="<label for='freeDatas2HTML_"+this._datasViewElt.id+"'>"+label+" :</label><select name='freeDatas2HTML_"+this._datasViewElt.id+"' id='freeDatas2HTML_"+this._datasViewElt.id+"'><option value='0'>----</option>"; // l'option zéro permet d'actualiser l'affichage en ignorant ce filtre.
|
||||
for(let i=0; i< this._values.length; i++)
|
||||
selectorsHTML+="<option value='"+(i+1)+"'>"+this._values[i]+"</option>";
|
||||
selectorsHTML+="</select>";
|
||||
this. _datasViewElt.eltDOM!.innerHTML=selectorsHTML;// "!" car l'existence de "eltDOM" est testé par le constructeur
|
||||
this. _datasViewElt.eltDOM!.innerHTML=selectorsHTML;// "!", car l'existence de "eltDOM" est testé par le constructeur.
|
||||
|
||||
// Actualisation de l'affichage lorsqu'une valeur est sélectionnée :
|
||||
const selectElement=document.getElementById("freeDatas2HTML_"+this._datasViewElt.id) as HTMLInputElement, mySelector=this;
|
||||
selectElement.addEventListener("change", function(e)
|
||||
{
|
||||
|
@ -29,7 +29,7 @@ describe("Test des sélecteurs de données", () =>
|
||||
// Convertisseur non lancé :
|
||||
converter=new FreeDatas2HTML("CSV");
|
||||
expect(() => { return new Selector(converter, 0, { id:"selector1" }); }).toThrowError(errors.filterNeedDatas);
|
||||
// Note : les parseurs vont générer une erreur en amont s'ils ne trouvent pas de noms de champs.
|
||||
// Note : les parseurs vont générer une erreur en amont s'ils ne trouvent pas de noms de champs
|
||||
// Par contre, ils acceptent de ne pas trouver de données :
|
||||
converter.parser.datas2Parse="Z (numéro atomique),Élément,Symbole,Famille,Abondance des éléments dans la croûte terrestre (μg/k)";
|
||||
await converter.run();
|
||||
@ -49,7 +49,7 @@ describe("Test des sélecteurs de données", () =>
|
||||
expect(selector.separator).toBeUndefined();
|
||||
});
|
||||
|
||||
it("Si toutes les paramètres sont correctes, ils doivent être acceptés.", () =>
|
||||
it("Si toutes les paramètres sont valides, ils doivent être acceptés.", () =>
|
||||
{
|
||||
expect(() => { selector=new Selector(converter, 2, { id:"selector1" }, ","); return true; }).not.toThrowError();
|
||||
expect(selector.datasFieldNb).toEqual(2);
|
||||
@ -198,7 +198,7 @@ describe("Test des sélecteurs de données", () =>
|
||||
expect(selector.dataIsOk({ "Famille": "Hallo Eugène !" })).toBeFalse();
|
||||
});
|
||||
|
||||
it("Doit retourner true, si une donnée testée correspond pas à la valeur sélectionnée pour ce filtre.", () =>
|
||||
it("Doit retourner true, si une donnée testée correspond à la valeur sélectionnée pour ce filtre.", () =>
|
||||
{
|
||||
selectElement.value="4";
|
||||
selectElement.dispatchEvent(new Event('change'));
|
||||
@ -238,11 +238,11 @@ describe("Test des sélecteurs de données", () =>
|
||||
selectElement.value="4";
|
||||
selectElement.dispatchEvent(new Event('change'));
|
||||
expect(selector.dataIsOk({ "Étiquettes": "Exemple3" })).toBeTrue();
|
||||
// Même pas seule :
|
||||
// Même quand elle n'est pas seule :
|
||||
expect(selector.dataIsOk({ "Étiquettes": "Exemple3|Exemple1|Exemple9" })).toBeTrue();
|
||||
expect(selector.dataIsOk({ "Étiquettes": "Exemple0|Exemple3|Exemple2" })).toBeTrue();
|
||||
expect(selector.dataIsOk({ "Étiquettes": "Exemple0|Exemple4|Exemple3" })).toBeTrue();
|
||||
// Y compris si entourée d'espaces :
|
||||
// Ou entourée d'espaces :
|
||||
expect(selector.dataIsOk({ "Étiquettes": "Exemple0|Exemple4| Exemple3 " })).toBeTrue();
|
||||
expect(selector.dataIsOk({ "Étiquettes": " Exemple3 " })).toBeTrue();
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user