From 999f0b2937b4df3accadb82c3cfce508af7b9c69 Mon Sep 17 00:00:00 2001 From: "Engelbart Kai Sven (PEA4-Fe)" Date: Fri, 22 Jan 2021 14:09:07 +0100 Subject: [PATCH] Add most relevant content to PDF export --- src/app/prediction/prediction.component.ts | 102 ++++++++++++++++++++- 1 file changed, 100 insertions(+), 2 deletions(-) diff --git a/src/app/prediction/prediction.component.ts b/src/app/prediction/prediction.component.ts index d300031..bccecec 100644 --- a/src/app/prediction/prediction.component.ts +++ b/src/app/prediction/prediction.component.ts @@ -5,6 +5,7 @@ import { animate, style, transition, trigger } from '@angular/animations'; import cloneDeep from 'lodash/cloneDeep'; import omit from 'lodash/omit'; import { DataService } from '../services/data.service'; +import { LoginService } from '../services/login.service'; import { ModelItemModel } from '../models/model-item.model'; import * as FileSaver from 'file-saver'; import * as pdfMake from "pdfmake/build/pdfmake"; @@ -67,7 +68,8 @@ export class PredictionComponent implements OnInit { constructor( private api: ApiService, - public d: DataService + public d: DataService, + public login: LoginService ) { this.chart[0] = cloneDeep(this.chartInit); } @@ -145,6 +147,102 @@ export class PredictionComponent implements OnInit { // Converts the prediction results to a PDF file exportPDF() { - // TODO: Generate PDF export + const dd = { + content: [ + { + text: 'DeFinMa - Decoding the Fingerprint of Materials by AI', + style: 'header' + }, + { + table: { + body: [ + [new Date().toLocaleDateString(), 'Security class', 'Person in charge', 'Phone'], + [this.activeGroup.group, 'Intern', + { + stack: [ + 'CR/APS1-Lotter', + 'CR/APS1-Lingenfelser' + ] + }, + { + stack: [ + '0711/811-49017', + '0711/811-6897' + ] + } + ] + ] + } + }, + { + bold: true, + text: 'Customer' + }, + this.login.username, + { + text: 'Prediction of ' + this.activeGroup.group + ' (' + this.activeGroup.models[this.activeModelIndex].name + ')*', + style: 'subheader' + }, + { + text: this.result.mean.map(e => e.category + ' ' + e.value + ' ' + e.label + ' ' + (e.std !== '' ? (' (standard deviation: ' + e.std + ')') : '')) + }, + { + table: { + widths: ['*', 'auto'], + body: [ + ['Input Data / Sample Name', 'Prediction*'] + ].concat(this.prepareExport()) + } + }, + { + text: 'Reference Data', + style: 'subheader' + }, + { + image: document.getElementsByTagName('canvas')[0].toDataURL('image/png'), + width: 500 + }, + { + text: '*Disclaimer: This tool is still under development and Testing', + style: 'subsubheader' + }, + { + text: [ + 'The prediction and classification of material parameters are validated only for certain conditions.', + 'These results may therefore under no circumstances be used to evaluate quality-relevant issues.', + 'For more details please contact ', + { + text: 'CR/APS1-Lingenfelder', + link: 'mailto:dominic.lingenfelser@bosch.com' + }, + '.' + ] + }, + { + table: { + body: [ + ['Pr\u00fcfung', 'Freigabe', 'Datum'], + ['CR/APS1-Lotter', 'CR/APS1-Lingenfelser', new Date().toLocaleDateString()] + ] + } + }, + '\u00a9 Alle Rechte bei Robert Bosch GmbH, auch f\u00fcr den Fall von Schutzreichtsanmeldungen. Jede Verf\u00fcgungsbefugnis, wie Kopier- und Weitergaberecht, bei uns.' + ], + styles: { + header: { + fontSize: 18, + bold: true + }, + subheader: { + fontSize: 15, + bold: true + }, + subsubheader: { + bold: true + } + } + }; + + pdfMake.createPdf(dd).download(); } }