Skip to content
Snippets Groups Projects
Commit 296c6113 authored by francois.grand's avatar francois.grand
Browse files

#78 ouvrages parallèles : le bouton ajouter insère un ouvrage juste après...

 #78 ouvrages parallèles : le bouton ajouter insère un ouvrage juste après celui dont le bouton ajouter a été cliqué, pas à la fin de la liste
parent 6c0fcea8
No related branches found
No related tags found
1 merge request!16Resolve "modifier les ouvrages parallèles pour pouvoir supprimer un ouvrage"
...@@ -231,7 +231,7 @@ export class FieldSetComponent implements DoCheck { ...@@ -231,7 +231,7 @@ export class FieldSetComponent implements DoCheck {
* clic sur le bouton ajouter * clic sur le bouton ajouter
*/ */
private onAddClick() { private onAddClick() {
this.addFieldset.emit(); this.addFieldset.emit(this._fieldSet);
} }
/** /**
......
...@@ -4,6 +4,6 @@ ...@@ -4,6 +4,6 @@
</div> </div>
<field-set *ngFor="let fs of fieldsets" [fieldSet]=fs (onRadio)=onRadioClick($event) (onValid)=onFieldsetValid() (inputChange)=onInputChange() <field-set *ngFor="let fs of fieldsets" [fieldSet]=fs (onRadio)=onRadioClick($event) (onValid)=onFieldsetValid() (inputChange)=onInputChange()
(addFieldset)=onAddFieldset() (removeFieldset)=onRemoveFieldset($event)> (addFieldset)=onAddFieldset($event) (removeFieldset)=onRemoveFieldset($event)>
</field-set> </field-set>
</div> </div>
\ No newline at end of file
...@@ -34,24 +34,28 @@ export class FieldsetContainerComponent implements DoCheck, AfterViewInit { ...@@ -34,24 +34,28 @@ export class FieldsetContainerComponent implements DoCheck, AfterViewInit {
return this._container.fieldsets; return this._container.fieldsets;
} }
private addStructure() { private addStructure(after?: FieldSet) {
this._container.addFromTemplate(0); if (after)
this._container.addFromTemplate(0, after.indexAsKid());
else
this._container.addFromTemplate(0);
} }
private onFielsetListChange(val: any) { private onFielsetListChange() {
// affichage des boutons ajouter, supprimer, monter, descendre // affichage des boutons ajouter, supprimer, monter, descendre
const fs = val.last as FieldSetComponent; this._fieldsetComponents.forEach(fs => fs.showButtons = true);
fs.showButtons = true;
// désactivation du bouton supprimer s'il n'en reste qu'un // désactivation du bouton supprimer s'il n'en reste qu'un
if (this._fieldsetComponents.length == 1) if (this._fieldsetComponents.length == 1) {
const fs = this._fieldsetComponents.last as FieldSetComponent;
fs.enableRemoveButton = false; fs.enableRemoveButton = false;
}
else else
this._fieldsetComponents.forEach(fs => fs.enableRemoveButton = true); this._fieldsetComponents.forEach(fs => fs.enableRemoveButton = true);
} }
public ngAfterViewInit() { public ngAfterViewInit() {
this._fieldsetComponents.changes.subscribe(value => this.onFielsetListChange(value)); this._fieldsetComponents.changes.subscribe(_ => this.onFielsetListChange());
this.addStructure(); this.addStructure();
} }
...@@ -142,8 +146,8 @@ export class FieldsetContainerComponent implements DoCheck, AfterViewInit { ...@@ -142,8 +146,8 @@ export class FieldsetContainerComponent implements DoCheck, AfterViewInit {
/** /**
* réception d'un événement de demande d'ajout d'un FieldSet * réception d'un événement de demande d'ajout d'un FieldSet
*/ */
private onAddFieldset() { private onAddFieldset(fs: FieldSet) {
this.addStructure(); this.addStructure(fs);
} }
/** /**
......
...@@ -52,8 +52,13 @@ export class FormulaireParallelStructure extends FormulaireDefinition { ...@@ -52,8 +52,13 @@ export class FormulaireParallelStructure extends FormulaireDefinition {
return paramService.createSessionNub(params); return paramService.createSessionNub(params);
} }
private addStructureNub(st: Structure) { /**
this.parallelStructureNub.addStructure(st); * ajoute un Nub Structure
* @param st structure à ajouter
* @param after position après laquelle insérer la structure, à la fin sinon
*/
private addStructureNub(st: Structure, after?: number) {
this.parallelStructureNub.addStructure(st, after);
} }
private get parallelStructureNub(): ParallelStructure { private get parallelStructureNub(): ParallelStructure {
...@@ -66,15 +71,23 @@ export class FormulaireParallelStructure extends FormulaireDefinition { ...@@ -66,15 +71,23 @@ export class FormulaireParallelStructure extends FormulaireDefinition {
public createFieldset(parent: FormulaireNode, json: {}, data?: {}): FieldSet { public createFieldset(parent: FormulaireNode, json: {}, data?: {}): FieldSet {
if (json["calcType"] === "Structure") { if (json["calcType"] === "Structure") {
// indice après lequel insérer le nouveau FieldSet
const after = data["after"];
const res: FieldSet = new FieldSet(parent); const res: FieldSet = new FieldSet(parent);
const sn = this.createStructNub(data["template"]); const sn = this.createStructNub(data["template"]);
this.addStructureNub(sn.nub as Structure); this.addStructureNub(sn.nub as Structure, after);
res.setSessionNub(sn, false); res.setSessionNub(sn, false);
parent.kids.push(res);
if (after !== undefined)
parent.kids.splice(after + 1, 0, res);
else
parent.kids.push(res);
return res; return res;
} }
else else
return super.createFieldset(parent, json); return super.createFieldset(parent, json, data);
} }
protected initParse() { protected initParse() {
......
...@@ -37,10 +37,15 @@ export class FieldsetContainer extends FormulaireElement { ...@@ -37,10 +37,15 @@ export class FieldsetContainer extends FormulaireElement {
this.kids.splice(i, 1); this.kids.splice(i, 1);
} }
public addFromTemplate(index: number) { /**
const templ: FieldsetTemplate = this._templates[index]; * crée un FieldSet à partir d'un template
* @param templateIndex indice du template dans la liste
const inst: FieldSet = templ.instantiateTemplate(this); * @param after insère le nouveau FieldSet après cette position, à la fin sinon
*/
public addFromTemplate(templateIndex: number, after?: number) {
const templ: FieldsetTemplate = this._templates[templateIndex];
const inst: FieldSet = templ.instantiateTemplate(this, after);
this.updateLocalisation(); this.updateLocalisation();
......
...@@ -38,9 +38,14 @@ export class FieldsetTemplate { ...@@ -38,9 +38,14 @@ export class FieldsetTemplate {
return nodeType; return nodeType;
} }
public instantiateTemplate(cont: FieldsetContainer): FieldSet { /**
* crée une instance de Fieldset et l'ajoute dans un conteneur
* @param cont conteneur
* @param at position à laquelle on ajoute le nouveau FieldSet
*/
public instantiateTemplate(cont: FieldsetContainer, after: number): FieldSet {
const parentForm = cont.parent as FormulaireDefinition; const parentForm = cont.parent as FormulaireDefinition;
const res = parentForm.createFieldset(cont, this._jsonConfig, { "template": this }); const res = parentForm.createFieldset(cont, this._jsonConfig, { "template": this, "after": after });
res.parseConfig(this._jsonConfig, { "parentForm": parentForm }); res.parseConfig(this._jsonConfig, { "parentForm": parentForm });
parentForm.afterParseFieldset(res); parentForm.afterParseFieldset(res);
return res; return res;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment