From 6f2f84ec535c5ef72c20388e31823e5eee4314a7 Mon Sep 17 00:00:00 2001
From: Martin Mechtel <mechtelm@user.hu-berlin.de>
Date: Wed, 16 Jan 2019 21:27:57 +0100
Subject: [PATCH] questionnaire ok

---
 src/app/app.module.ts                         |  4 +-
 .../questionnaire/questionnaire.component.css |  6 +--
 .../questionnaire.component.html              | 44 ++++++++++++++-----
 .../questionnaire/questionnaire.component.ts  |  8 +++-
 src/app/sys-check/run.component.html          |  2 +-
 src/app/sys-check/run.component.ts            |  3 +-
 src/app/sys-check/sys-check.module.ts         |  5 ++-
 7 files changed, 51 insertions(+), 21 deletions(-)

diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index e197787f..de1ed07f 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -7,7 +7,7 @@ import { ReactiveFormsModule } from '@angular/forms';
 
 import { MatButtonModule, MatCheckboxModule, MatMenuModule, MatTooltipModule, MatCardModule,
   MatToolbarModule, MatIconModule, MatDialogModule, MatFormFieldModule, MatInputModule,
-  MatTabsModule, MatProgressSpinnerModule } from '@angular/material';
+  MatTabsModule, MatProgressSpinnerModule, MatRadioModule } from '@angular/material';
 import { AppRoutingModule } from './app-routing.module';
 import { AppComponent } from './app.component';
 
@@ -37,6 +37,8 @@ import { ErrormsgComponent } from './errormsg/errormsg.component';
     MatIconModule,
     MatInputModule,
     MatTooltipModule,
+    MatCheckboxModule,
+    MatRadioModule,
     MatDialogModule,
     MatTabsModule,
     MatProgressSpinnerModule,
diff --git a/src/app/sys-check/questionnaire/questionnaire.component.css b/src/app/sys-check/questionnaire/questionnaire.component.css
index 4300c565..cc67e2ac 100644
--- a/src/app/sys-check/questionnaire/questionnaire.component.css
+++ b/src/app/sys-check/questionnaire/questionnaire.component.css
@@ -11,6 +11,7 @@
   display: block;
   left: 15px;
   right: 15px;
+  overflow: auto;
 }
 
 .formList {
@@ -19,9 +20,6 @@
 }
 
 .formEntry {
-  margin: 10px 0 0 0;
+  margin: 5px 0 0 10px;
 }
 
-.field {
-  width: 200px;
-}
diff --git a/src/app/sys-check/questionnaire/questionnaire.component.html b/src/app/sys-check/questionnaire/questionnaire.component.html
index 4c14bff2..480de7f9 100644
--- a/src/app/sys-check/questionnaire/questionnaire.component.html
+++ b/src/app/sys-check/questionnaire/questionnaire.component.html
@@ -3,17 +3,39 @@
 </div>
 <div class="step-body" #questionnaireBody>
   <div [formGroup]="form" class="formList" fxLayout="column">
-    <div *ngFor="let q of questions" fxLayout="row" fxLayoutGap="5px" fxLayoutAlign="left top" class="formEntry">
-      <label>{{q.prompt}}</label>
-
-      <mat-form-field class="field" [ngSwitch]="q.type" *ngIf="q.type !== 'header'">
-        <input matInput *ngSwitchCase="'string'" [formControlName]="q.id">
-        <mat-select [id]="q.id" *ngSwitchCase="'select'" [formControlName]="q.id">
-          <mat-option *ngFor="let opt of q.options" [value]="opt">
-            {{opt}}
-          </mat-option>
-        </mat-select>
-      </mat-form-field>
+    <div *ngFor="let q of questions">
+      <div [ngSwitch]="q.type" class="formEntry" fxLayout="column" fxLayoutGap="5px">
+          <h2 *ngSwitchCase="'header'">{{ q.value }}</h2>
+          <mat-form-field *ngSwitchCase="'text'">
+              <p>{{q.prompt}}</p>
+              <textarea matInput [formControlName]="q.id" [id]="q.id" cdkTextareaAutosize cdkAutosizeMinRows="2" class="formEntry"></textarea>
+          </mat-form-field>
+          <mat-form-field *ngSwitchCase="'string'">
+              <p>{{q.prompt}}</p>
+              <input matInput [formControlName]="q.id" [id]="q.id" class="formEntry">
+          </mat-form-field>
+          <mat-form-field *ngSwitchCase="'select'">
+              <p>{{q.prompt}}</p>
+              <mat-select [id]="q.id" [formControlName]="q.id" class="formEntry">
+                <mat-option *ngFor="let opt of q.options" [value]="opt">
+                  {{opt}}
+                </mat-option>
+              </mat-select>
+          </mat-form-field>
+          <div *ngSwitchCase="'check'">
+              <p *ngIf="q.prompt.length > 0">{{q.prompt}}</p>
+              <mat-checkbox *ngSwitchCase="'check'" [formControlName]="q.id" [id]="q.id">{{q.value}}</mat-checkbox>
+          </div>
+          <div *ngSwitchCase="'radio'">
+              <p>{{q.prompt}}</p>
+              <mat-radio-group [id]="q.id"  [formControlName]="q.id" [name]="q.id">
+                  <mat-radio-button *ngFor="let opt of q.options" [value]="opt" class="formEntry">
+                    {{opt}}
+                  </mat-radio-button>
+              </mat-radio-group>
+          </div>
+          <p *ngSwitchDefault>Unbekannter Control-Typ: {{q.type}} für Element-ID {{q.id}}</p>
+      </div>
     </div>
   </div>
 </div>
diff --git a/src/app/sys-check/questionnaire/questionnaire.component.ts b/src/app/sys-check/questionnaire/questionnaire.component.ts
index 31ae979c..b94f110e 100644
--- a/src/app/sys-check/questionnaire/questionnaire.component.ts
+++ b/src/app/sys-check/questionnaire/questionnaire.component.ts
@@ -38,8 +38,12 @@ export class QuestionnaireComponent implements OnInit {
         this.form.valueChanges.subscribe(f => {
           const myReportEntries: ReportEntry[] = [];
           this.questions.forEach(element => {
-            const myValue = this.form.controls[element.id].value;
-            myReportEntries.push({'label': element.prompt, 'value': myValue});
+            if (element.type === 'header') {
+              myReportEntries.push({'label': element.value, 'value': ''});
+            } else {
+              const myValue = this.form.controls[element.id].value;
+              myReportEntries.push({'label': element.prompt, 'value': myValue});
+            }
           });
           this.ds.questionnaireData$.next(myReportEntries);
         });
diff --git a/src/app/sys-check/run.component.html b/src/app/sys-check/run.component.html
index 4a351564..63b0b7b7 100644
--- a/src/app/sys-check/run.component.html
+++ b/src/app/sys-check/run.component.html
@@ -56,7 +56,7 @@
           <button mat-mini-fab matStepperPrevious>
             <i class="material-icons">chevron_left</i>
           </button>
-          <button mat-raised-button (click)="saveReport()">Bericht senden</button>
+          <button *ngIf="saveEnabled" mat-raised-button (click)="saveReport()">Bericht senden</button>
         </div>
       </mat-step>
     </mat-horizontal-stepper>
diff --git a/src/app/sys-check/run.component.ts b/src/app/sys-check/run.component.ts
index 93bdf6c2..9a48e008 100644
--- a/src/app/sys-check/run.component.ts
+++ b/src/app/sys-check/run.component.ts
@@ -28,7 +28,7 @@ export class RunComponent implements OnInit {
   paramId: string;
   unitcheckAvailable = false;
   questionnaireAvailable = false;
-  emailEnabled = false;
+  saveEnabled = false;
 
 
   constructor(
@@ -79,6 +79,7 @@ export class RunComponent implements OnInit {
             this.ds.checkConfig$.next(scData);
             this.stepper.selectedIndex = 0;
             this.stepNetwork.completed = false;
+            this.saveEnabled = scData.cansave;
           }
         );
       }
diff --git a/src/app/sys-check/sys-check.module.ts b/src/app/sys-check/sys-check.module.ts
index 8ba43872..419f3ca6 100644
--- a/src/app/sys-check/sys-check.module.ts
+++ b/src/app/sys-check/sys-check.module.ts
@@ -1,3 +1,4 @@
+import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
 import { ResizeIFrameChildDirective } from './unit-check/resize-IFrameChild/resize-IFrameChild.directive';
 import { SyscheckDataService } from './syscheck-data.service';
 import { BackendService } from './backend.service';
@@ -10,7 +11,7 @@ import { RunComponent } from './run.component';
 import { FlexLayoutModule } from '@angular/flex-layout';
 import { MatButtonModule, MatCheckboxModule, MatMenuModule, MatTooltipModule, MatCardModule, MatStepperModule,
   MatToolbarModule, MatIconModule, MatDialogModule, MatFormFieldModule, MatInputModule, MatSelectModule,
-  MatTabsModule, MatProgressSpinnerModule, MatSnackBarModule } from '@angular/material';
+  MatTabsModule, MatProgressSpinnerModule, MatSnackBarModule, MatRadioModule } from '@angular/material';
 import {MatDividerModule} from '@angular/material/divider';
 import {MatListModule} from '@angular/material/list';
 import { ReactiveFormsModule } from '@angular/forms';
@@ -36,7 +37,9 @@ import { SaveReportComponent } from './report/save-report/save-report.component'
     MatButtonModule,
     MatDividerModule,
     MatListModule,
+    MatIconModule,
     MatSelectModule,
+    MatRadioModule,
     MatSnackBarModule,
     MatDialogModule,
     ReactiveFormsModule
-- 
GitLab