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 {
* clic sur le bouton ajouter
*/
private onAddClick() {
this.addFieldset.emit();
this.addFieldset.emit(this._fieldSet);
}
/**
......
......@@ -4,6 +4,6 @@
</div>
<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>
</div>
\ No newline at end of file
......@@ -34,24 +34,28 @@ export class FieldsetContainerComponent implements DoCheck, AfterViewInit {
return this._container.fieldsets;
}
private addStructure() {
this._container.addFromTemplate(0);
private addStructure(after?: FieldSet) {
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
const fs = val.last as FieldSetComponent;
fs.showButtons = true;
this._fieldsetComponents.forEach(fs => fs.showButtons = true);
// 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;
}
else
this._fieldsetComponents.forEach(fs => fs.enableRemoveButton = true);
}
public ngAfterViewInit() {
this._fieldsetComponents.changes.subscribe(value => this.onFielsetListChange(value));
this._fieldsetComponents.changes.subscribe(_ => this.onFielsetListChange());
this.addStructure();
}
......@@ -142,8 +146,8 @@ export class FieldsetContainerComponent implements DoCheck, AfterViewInit {
/**
* réception d'un événement de demande d'ajout d'un FieldSet
*/
private onAddFieldset() {
this.addStructure();
private onAddFieldset(fs: FieldSet) {
this.addStructure(fs);
}
/**
......
......@@ -52,8 +52,13 @@ export class FormulaireParallelStructure extends FormulaireDefinition {
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 {
......@@ -66,15 +71,23 @@ export class FormulaireParallelStructure extends FormulaireDefinition {
public createFieldset(parent: FormulaireNode, json: {}, data?: {}): FieldSet {
if (json["calcType"] === "Structure") {
// indice après lequel insérer le nouveau FieldSet
const after = data["after"];
const res: FieldSet = new FieldSet(parent);
const sn = this.createStructNub(data["template"]);
this.addStructureNub(sn.nub as Structure);
this.addStructureNub(sn.nub as Structure, after);
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;
}
else
return super.createFieldset(parent, json);
return super.createFieldset(parent, json, data);
}
protected initParse() {
......
......@@ -37,10 +37,15 @@ export class FieldsetContainer extends FormulaireElement {
this.kids.splice(i, 1);
}
public addFromTemplate(index: number) {
const templ: FieldsetTemplate = this._templates[index];
const inst: FieldSet = templ.instantiateTemplate(this);
/**
* crée un FieldSet à partir d'un template
* @param templateIndex indice du template dans la liste
* @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();
......
......@@ -38,9 +38,14 @@ export class FieldsetTemplate {
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 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 });
parentForm.afterParseFieldset(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