diff --git a/src/app/app.component.ts b/src/app/app.component.ts index ed45462d1e5e2a167ee7f222582dbb7a2ef7597d..95e2860536191fdf34dd7513b0b79781c52a92aa 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -228,11 +228,19 @@ export class AppComponent implements OnInit, OnDestroy, Observer { // passage de la liste, récupération d'une Promise pour traiter le résultat const prom: Promise<any[]> = compRef.instance.run(list); prom.then(list => { - this.saveSession(list) + let name = compRef.instance.filename; + + // ajout extension ".json" + const re = /.+\.json/; + const match = re.exec(name.toLowerCase()); + if (match === null) + name = name + ".json"; + + this.saveSession(list, name) }); } - private saveSession(calcList: any[]) { + private saveSession(calcList: any[], filename) { let elems = []; for (const c of calcList) if (c.selected) { @@ -241,7 +249,7 @@ export class AppComponent implements OnInit, OnDestroy, Observer { elems.push(form.JSONserialise()); } let session = { "session": { "elements": elems } }; - this.formulaireService.saveSession(session); + this.formulaireService.saveSession(session, filename); } private closeCalculator(form: FormulaireDefinition) { diff --git a/src/app/components/save-calculator/save-calculator.component.html b/src/app/components/save-calculator/save-calculator.component.html index 3ead22063df14db918b1825da7a79d7fc0713dee..cab54103edd0c849cfc77b83bb377ec6a90d3bbd 100644 --- a/src/app/components/save-calculator/save-calculator.component.html +++ b/src/app/components/save-calculator/save-calculator.component.html @@ -5,11 +5,23 @@ <h4 class="modal-title w-100" id="myModalLabel">{{uitextDialogTitle}}</h4> </div> <div class="modal-body"> + <!-- liste de calculettes avec check --> <div *ngFor="let c of _calculators"> <input type="checkbox" value={{c.uid}} checked={{isSelected(c)}} (change)="onCheckCalc($event)">{{c.title}} </div> + + <!-- bouton "tout sélectionnner" --> <button type="button" class="btn btn-mdb-color waves-light" (click)="selectAll()" mdbRippleRadius>{{uitextSelectAll}}</button> - <button type="button" class="btn btn-mdb-color waves-light" (click)="deselectAll()" mdbRippleRadius>{{uitextDeselectAll}}</button> + + <!-- bouton "tout désélectionnner" --> + <button type="button" class="btn btn-mdb-color waves-light py-10" (click)="deselectAll()" mdbRippleRadius>{{uitextDeselectAll}}</button> + + <!-- nom du fichier --> + <div class="md-form form-sm mt-4"> + <input mdbActive type="text" id="form1" class="form-control" [(ngModel)]="_filename"> + <!-- on utilise [innerHTML] pour que les codes HTML comme soient interprétés correctement --> + <label for="form1" [innerHTML]="_filenameTitle"></label> + </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-danger relative waves-light" (click)="saveDialog.hide();cancelSave()" mdbRippleRadius>{{uitextCloseDialogNo}}</button> diff --git a/src/app/components/save-calculator/save-calculator.component.ts b/src/app/components/save-calculator/save-calculator.component.ts index f00fd173eae723d0b3c322d70ecdabd1b6ef5e2c..6e30cd2db078144cdd70ca127f3b5c29fc5861b4 100644 --- a/src/app/components/save-calculator/save-calculator.component.ts +++ b/src/app/components/save-calculator/save-calculator.component.ts @@ -15,6 +15,13 @@ export class SaveCalculatorComponent { */ private _calculators: any[]; + /** + * nom du fichier + */ + private _filename: string = "session"; + + private _filenameTitle = "Nom de fichier"; + /** * événement émis lors du clic sur "annuler"/"enregister" * utilisé par la promise de gestion de la confirmation/annulation de la sauvegarde @@ -50,6 +57,10 @@ export class SaveCalculatorComponent { return "Aucune"; } + public get filename(): string { + return this._filename; + } + public run(calcList: any[]): Promise<any[]> { this._calculators = calcList; diff --git a/src/app/services/formulaire/formulaire.service.ts b/src/app/services/formulaire/formulaire.service.ts index ccf34e3281fd803f8d71732be5ec9b66802a10dd..5984c3f9d0e22f1188115f91d312d87721ae8e9b 100644 --- a/src/app/services/formulaire/formulaire.service.ts +++ b/src/app/services/formulaire/formulaire.service.ts @@ -389,9 +389,9 @@ export class FormulaireService extends Observable { }); } - public saveSession(session: {}) { + public saveSession(session: {}, filename?: string) { const blob = new Blob([JSON.stringify(session)], { type: "text/plain;charset=utf-8" }); - saveAs(blob); + saveAs(blob, filename); } /**