From 3d15d605f4d8910a623212371bedf23a58f5c94b Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Fri, 29 Nov 2019 15:19:20 +0100 Subject: [PATCH] Fix jalhyd#170 : export PAB geometry as XLSX --- src/app/app.component.ts | 2 +- .../pab-table/pab-table.component.html | 8 +++++- .../pab-table/pab-table.component.ts | 25 +++++++++++++++++++ 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 5e170d3bf..1c668cb82 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -165,7 +165,7 @@ export class AppComponent implements OnInit, OnDestroy, Observer { AppComponent.download( new Blob([wbout], {type: "application/octet-stream"}), "cassiopee-results.xlsx", - "application/vnd.ms-excel" // @TODO try "application/vnd.ms-excel" + "application/vnd.ms-excel" ); } diff --git a/src/app/components/pab-table/pab-table.component.html b/src/app/components/pab-table/pab-table.component.html index d6d6d956b..ea43a0fb5 100644 --- a/src/app/components/pab-table/pab-table.component.html +++ b/src/app/components/pab-table/pab-table.component.html @@ -44,10 +44,16 @@ <mat-icon *ngIf="! selectionIsOneDevice">arrow_downward</mat-icon> <mat-icon *ngIf="selectionIsOneDevice">arrow_forward</mat-icon> </button> + | + <button type="button" mat-icon-button color="primary" (click)="exportAsSpreadsheet()" + [title]="uitextExportAsSpreadsheet"> + <mat-icon color="primary">file_download</mat-icon> + </button> </div> </div> - <p-table [columns]="cols" [value]="rows" class="pab-data-table"> + + <p-table id="geometry" [columns]="cols" [value]="rows" class="pab-data-table"> <ng-template pTemplate="header" let-columns> <tr> diff --git a/src/app/components/pab-table/pab-table.component.ts b/src/app/components/pab-table/pab-table.component.ts index f867c9c20..3c965c103 100644 --- a/src/app/components/pab-table/pab-table.component.ts +++ b/src/app/components/pab-table/pab-table.component.ts @@ -24,6 +24,7 @@ import { ApplicationSetupService } from "../../services/app-setup.service"; import { NotificationsService } from "../../services/notifications.service"; import { PabTable } from "../../formulaire/pab-table"; import { DialogEditPabComponent } from "../dialog-edit-pab/dialog-edit-pab.component"; +import { AppComponent } from "../../app.component"; /** * The big editable data grid for calculator type "Pab" (component) @@ -1410,4 +1411,28 @@ export class PabTableComponent implements AfterViewInit, OnInit { public get uitextEditPabTable() { return this.i18nService.localizeText("INFO_PAB_EDIT_VALUES"); } + + public exportAsSpreadsheet() { + const elem: any = document.getElementById("geometry"); + const elemCopy = (elem as HTMLElement).cloneNode(true) as HTMLElement; + // enrich element copy: replace inputs by their values, so that it appears in the exported spreadsheet + const tables: any = elemCopy.getElementsByTagName("table"); + for (const table of tables) { + const tds: any = table.getElementsByTagName("td"); + for (const td of tds) { + // if it contains an input, replace it with the input value + const inputs = td.getElementsByTagName("input"); + if (inputs.length > 0) { + const input = inputs[0]; + td.innerHTML = input.value; + } + } + } + // export the enriched element copy + AppComponent.exportAsSpreadsheet(elemCopy as any); + } + + public get uitextExportAsSpreadsheet() { + return this.i18nService.localizeText("INFO_RESULTS_EXPORT_AS_SPREADSHEET"); + } } -- GitLab