Commit d5ada9e3 authored by Grand Francois's avatar Grand Francois
Browse files

#47 ouvrages parallèles : déplacement d'un ouvrage d'un cran vers la fin de la liste

Showing with 58 additions and 11 deletions
+58 -11
...@@ -126,22 +126,27 @@ export class NubFactory { ...@@ -126,22 +126,27 @@ export class NubFactory {
} }
/** /**
* déplace un SessionNub associé à un nub Structure vers le début de la liste de structures * recherche du nub ouvrages parallèles possédant l'ouvrage donné
* @param sn SessionNub à remplacer
* @param params propriété du nouveau SessionNub
*/ */
public moveStructureNubUp(sn: SessionNub) { private findParallelStructureWithNub(n: Nub) {
// recherche du nub ouvrages parallèles possédant l'ouvrage
let psn;
for (const s of this._session) for (const s of this._session)
if (s.nub instanceof ParallelStructure) { if (s.nub instanceof ParallelStructure) {
psn = s.nub as ParallelStructure; const res = s.nub as ParallelStructure;
if (psn.hasStructure(sn.nub)) if (res.hasStructure(n))
break; return res;
else
psn = undefined;
} }
return undefined;
}
/**
* déplace un SessionNub associé à un nub Structure d'une position vers le début de la liste de structures
* @param sn SessionNub à remplacer
* @param params propriété du nouveau SessionNub
*/
public moveStructureNubUp(sn: SessionNub) {
const psn = this.findParallelStructureWithNub(sn.nub);
// déplacement // déplacement
if (psn) { if (psn) {
let i = 0; let i = 0;
...@@ -160,6 +165,32 @@ export class NubFactory { ...@@ -160,6 +165,32 @@ export class NubFactory {
throw new Error(`NubFactory.moveStructureNubUp() : la structure (uid ${sn.uid}) à déplacer n'a pas été trouvée`); throw new Error(`NubFactory.moveStructureNubUp() : la structure (uid ${sn.uid}) à déplacer n'a pas été trouvée`);
} }
/**
* déplace un SessionNub associé à un nub Structure d'une position vers la fin de la liste de structures
* @param sn SessionNub à remplacer
* @param params propriété du nouveau SessionNub
*/
public moveStructureNubDown(sn: SessionNub) {
const psn = this.findParallelStructureWithNub(sn.nub);
// déplacement
if (psn) {
let i = 0;
for (const n of this._session) {
if (n.uid == sn.uid && i < this._session.length - 1) {
const n = this._session[i];
this._session[i] = this._session[i + 1];
this._session[i + 1] = n;
psn.moveStructureDown(sn.nub as Structure);
return;
}
i++;
}
}
throw new Error(`NubFactory.moveStructureNubDown() : la structure (uid ${sn.uid}) à déplacer n'a pas été trouvée`);
}
/** /**
* créé un Nub * créé un Nub
* @param calcType type de Nub * @param calcType type de Nub
......
...@@ -106,6 +106,22 @@ export class ParallelStructure extends Nub { ...@@ -106,6 +106,22 @@ export class ParallelStructure extends Nub {
} }
} }
/**
* déplace une structure d'une position vers la fin de la liste
*/
public moveStructureDown(structure: Structure) {
let i = 0;
for (const s of this.structures) {
if (s.uid == structure.uid && i < this.structures.length - 1) {
const t = this.structures[i];
this.structures[i] = this.structures[i + 1];
this.structures[i + 1] = t;
return;
}
i++;
}
}
/** /**
* Supprime une structure hydraulique * Supprime une structure hydraulique
* @param index numéro de la structure dans le tableau * @param index numéro de la structure dans le tableau
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment