Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | 1x 1x 1x 2x 1x 1x 1x 1x 1x 1x 1x 1x 7x 7x 7x 7x 7x 7x 7x 7x 7x 1x 1x 1x 1x 1x 1x 1x 1x | /**
* File Name: feedback.component
* Version Number: v1.0
* Author Name: Tobias Bester
* Project Name: Ninshiki
* Organization: Software Sharks
* Manual: Refer to the Ninshiki User Manual at https://github.com/OrishaOrrie/SoftwareSharks/blob/master/Documentation/User%20Manual.pdf
* Update History:
* ------------------------------------------
* Date Author Description
* 01/09/2018 Tobias Created component
* ------------------------------------------
* Test Cases: feedback.component.spec.ts
* Functional Description:
* Allows user to send feedback to developers
*/
import { HttpClient } from '@angular/common/http';
import { Component, OnInit } from '@angular/core';
impoIrt { FormGroup, FormControl, FormBuilder, Validators } from '@angular/forms';
E
@Component({
selector: 'app-feedback',
templateUrl: './feedback.component.html',
stEyleUrls: ['./feedback.component.scss']
})
export class FeedbackComponent implements OnInit {
/**
* Array of all types of feedback
*/
public feedbackTypes: string[] = [
'General Feedback',
'Bug',
'Feature Request'
];
/**
* The default feedback type to be used
*/
public defaultType = 'General Feedback';
/**
* Indicates that the feedback is being sent
*/
public sending: Boolean = false;
/**
* Indicates that a response has been received from the server
*/
public submitted: Boolean = false;
/**
* Indicates that an error occured while trying to submit feedback
*/
public failedToSubmit: Boolean = false;
/**
* Used for form controls and validation
*/
public formGroup: FormGroup;
/**
* THe form group and it's validation is defined in this constructor
* @param fb Form Builder injection used for Form validation
* @param http HttpClient injection used to make HTTP requests
*/
constructor(public fb: FormBuilder, public http: HttpClient) {
this.formGroup = this.fb.group({
name: new FormControl('', Validators.compose([
Validators.maxLength(30),
Validators.minLength(3),
Validators.required
])),
feedType: new FormControl(null),
message: new FormControl('', Validators.compose([
Validators.minLength(5),
Validators.maxLength(200)
]))
});
this.formGroup.controls['feedType'].setValue(this.defaultType, {onlySelf: true});
}
/**
* @ignore
*/
ngOnInit() {
}
/**
* Called when the Send Feedback button is clicked. POSTs the message and handles the server
* response
*/
submitForm() {
this.sending = true;
this.postMessage().subscribe(
(data => {
if (data['message'] === 'Message sent') {
this.submitted = true;
} else {
this.failedToSubmit = true;
}
this.sending = false;
})
);
// this.formGroup.reset();
}
/**
* Handles sending the HTTP POST request to the email server with the necessary feedback details
* @returns Observable with the data received by the email server
*/
postMessage() {
const msgToSend = 'Feedback type: ' + this.formGroup.controls['feedType'].value + '\n'
+ this.formGroup.controls['message'].value;
return this.http.post('https://us-central1-testproject-ee885.cloudfunctions.net/app/sendmail',
{
'subject': this.formGroup.controls['name'].value,
'text': msgToSend,
'email': 'Email Unavailable',
}
);
}
}
|