diff --git a/src/app/camera.component.ts b/src/app/camera.component.ts index 975a293..a05b708 100644 --- a/src/app/camera.component.ts +++ b/src/app/camera.component.ts @@ -21,7 +21,7 @@ export class CameraComponent implements OnInit { video: HTMLVideoElement; - ngOnInit() { console.log("Smile!"); } + ngOnInit() { console.log("Camera", this.field.id); } ngAfterViewInit() { diff --git a/src/app/form.component.ts b/src/app/form.component.ts index 99422b7..16d1902 100644 --- a/src/app/form.component.ts +++ b/src/app/form.component.ts @@ -36,15 +36,25 @@ import { Router } from '@angular/router'; }) export class FormComponent implements OnInit { - constructor(private route: Router) { } + constructor(private router: Router) { } @Input() template: Form; form: Form; - ngOnInit() { this.set() } + ngOnInit() { this.set(); } - set() { this.form = Object.assign({}, this.template); } + set() { + + console.log("Form before:", this.form); + + /* Make a deep copy of the template */ + this.form = JSON.parse(JSON.stringify(this.template)); + + console.log("Template:", this.template); + console.log("Form after:", this.form); + + } next() { @@ -58,36 +68,33 @@ export class FormComponent implements OnInit { async submit() { - const results = {}; + const res = await fetch(this.form.submit, parseForm(this.form.steps)); - this.form.steps.forEach((s: Step) => { + res.ok ? + this.router.navigate(["/thanks"]) : + alert("Something went wrong"); - s.fields.forEach((f: Field) => { - - results[f.id] = f.value; - - }); - - }); - - try { - - const res = await fetch(this.form.submit, results); - - if (res.ok) { - - this.set(); - - this.route.navigate(["/thanks"]); - - } else { - - alert("Backend does't like you."); - - } - - } catch (e) { alert("Something went wrong."); } - } } + + + +/* Util to extract key, values from Form */ +const parseForm = (steps: Step[]) => { + + const results = {}; + + steps.forEach((s: Step) => { + + s.fields.forEach((f: Field) => { + + results[f.id] = f.value; + + }); + + }); + + return results; + +}; diff --git a/src/app/radio.component.ts b/src/app/radio.component.ts index 4c5e014..32833d9 100644 --- a/src/app/radio.component.ts +++ b/src/app/radio.component.ts @@ -25,7 +25,7 @@ export class RadioComponent implements OnInit { @Input() field: Field; @Output() update: EventEmitter = new EventEmitter(); - ngOnInit() { console.log("Text", this.field.id); } + ngOnInit() { console.log("Radio", this.field.id); } check() { diff --git a/src/app/report.component.ts b/src/app/report.component.ts index 86ac354..b6ec342 100644 --- a/src/app/report.component.ts +++ b/src/app/report.component.ts @@ -49,5 +49,5 @@ const data: Entry[] = [{ eid: "john.doe", asset: "monitor", complete: false, - photo: "data:image/jpeg;base64,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" -}] \ No newline at end of file + photo: "./assets/monitor.jfif" +}] diff --git a/src/app/sign.component.ts b/src/app/sign.component.ts index 2ae87c8..87d9a87 100644 --- a/src/app/sign.component.ts +++ b/src/app/sign.component.ts @@ -19,7 +19,7 @@ export class SignComponent implements OnInit { pad: HTMLCanvasElement; - ngOnInit() { console.log("Sign your name!"); } + ngOnInit() { console.log("Sign", this.field.id); } ngAfterViewInit() { diff --git a/src/app/step.component.ts b/src/app/step.component.ts index 8e16b4a..813709c 100644 --- a/src/app/step.component.ts +++ b/src/app/step.component.ts @@ -46,13 +46,10 @@ export class StepComponent implements OnInit { @Input() step: Step; - ngOnInit() { console.log("Step", this.step); } + ngOnInit() { console.log("Step", this.step.prompt); } update() { - console.log(this.step.fields); - - /* Check for completeness */ for (let field of this.step.fields) { if (!field.ok) { this.step.ok = false; diff --git a/src/assets/monitor.jfif b/src/assets/monitor.jfif new file mode 100644 index 0000000..2ed1cca Binary files /dev/null and b/src/assets/monitor.jfif differ