1 import { Component, OnInit, TemplateRef, ViewChild, AfterViewInit } from '@angular/core';
2 import { FormBuilder, FormGroup } from '@angular/forms';
3 import { ToolbarService } from './../toolbar/toolbar.service';
4 import { ToastService } from './toast.service';
6 import { uploadImageData } from './../datainterface'
7 import { EaltserviceService } from '../ealtservice.service'
9 import { PcbimagesComponent } from './../pcbimages/pcbimages.component'
12 import { DomSanitizer, SafeUrl } from "@angular/platform-browser";
14 export interface Edgesites {
19 export interface Defects {
24 export interface Cameras {
31 templateUrl: './pcb.component.html',
32 styleUrls: ['./pcb.component.scss']
34 export class PcbComponent implements OnInit {
36 imageDeployForm: FormGroup;
37 modelDeployForm: FormGroup;
44 detectPendingBool = false;
45 selectedEdgeSite: String;
46 selectedDefect: String;
47 selectedCamera: String;
52 uploadImageData = {} as uploadImageData;
53 isTemplate(toast) { return toast.textOrTpl instanceof TemplateRef; }
57 edgesites: Edgesites[] = [
58 {value: 'beijinglab', viewValue: 'beijinglab'},
59 {value: 'shenzhenlab', viewValue: 'shenzhenlab'},
60 {value: 'shanghailab', viewValue: 'shanghailab'}
63 defects: Defects[] = [
64 {value: 'all', viewValue: 'All Defects'},
65 {value: 'missing_hole', viewValue: 'Missing Hole'},
66 {value: 'mouse_bite', viewValue: 'Mouse Bite'},
67 {value: 'open_circuit', viewValue: 'Open Circuit'},
68 {value: 'short', viewValue: 'Short'},
69 {value: 'spur', viewValue: 'Spur'},
70 {value: 'spurious_copper', viewValue: 'Spurious Copper'}
73 cameras: Cameras[] = [
74 {value: 'camera1', viewValue: 'camera1'},
75 {value: 'camera2', viewValue: 'camera2'},
76 {value: 'camera3', viewValue: 'camera3'}
79 @ViewChild(PcbimagesComponent) pcbchild;
82 private formBuilder: FormBuilder,
83 public toolbarService: ToolbarService,
84 public toastService: ToastService,
85 private serviceobj: EaltserviceService,
86 private sanitizer: DomSanitizer
91 // let pcbimagesObj = new PcbimagesComponent();
93 this.imageDeployForm = this.formBuilder.group(
98 this.modelDeployForm = this.formBuilder.group(
100 deploymodelfile: ['']
104 this.selectedCamera = JSON.parse(localStorage.getItem('camera'));
105 this.selectedEdgeSite = JSON.parse(localStorage.getItem('edgesite'));
109 ngOnDestroy(): void {
110 // localStorage.removeItem('camera')
111 // localStorage.removeItem('edgesite')
114 fileProgress(event) {
115 console.log("Inside fileProgress...")
117 if(event.target.files.length > 0 ){
118 const deployfile = event.target.files[0];
119 let filee = event.target.files[0];
120 this.imageDeployForm.get('deployzipfile').setValue(deployfile);
122 let filecon: string = '';
123 let fileReader: FileReader = new FileReader();
124 // console.log(YAML.parse(deployfile));
128 var reader = new FileReader();
129 reader.readAsDataURL(event.target.files[0]);
131 reader.onload = (_event) => {
133 this.url = reader.result;
135 console.log("Ends fileProgress...")
138 modelFileProgress(event) {
139 console.log("Inside fileProgress...")
141 if(event.target.files.length > 0 ){
142 const deployfile = event.target.files[0];
143 let filee = event.target.files[0];
144 this.modelDeployForm.get('deploymodelfilefile').setValue(deployfile);
146 let filecon: string = '';
147 let fileReader: FileReader = new FileReader();
148 // console.log(YAML.parse(deployfile));
151 console.log("Ends modelFileProgress...")
155 console.log("Inside onSubmit() ....")
156 const formData = new FormData();
158 formData.append('deployfile',this.imageDeployForm.get('deployzipfile').value);
161 this.uploadImageData.uploadFile = this.imageDeployForm.value.deployzipfile;
163 console.log("uploadImagedata...");
164 console.log(this.uploadImageData);
165 console.log("formData....");
166 console.log(formData);
167 // formData.append('file', this.fileData);
168 // this.deployData.deployFile = formData.get('yamlfile')
169 console.log(this.imageDeployForm.value);
170 this.imageBool = true;
171 this.modelBool = false;
172 this.detectBool = false;
176 localStorage.setItem('camera',JSON.stringify(this.selectedCamera))
177 localStorage.setItem('edgesite',JSON.stringify(this.selectedEdgeSite))
181 // this.imageBool = false;
182 this.serviceobj.postDeploymentPackage(formData)
186 // console.log(data);
188 ,error => console.log(error)
193 console.log("Inside onSubmit() ....")
194 const formData = new FormData();
196 formData.append('deployfile',this.modelDeployForm.get('deploymodelfile').value);
198 this.uploadImageData.uploadFile = this.modelDeployForm.value.deploymodelfile;
200 console.log(this.uploadImageData);
201 // formData.append('file', this.fileData);
202 // this.deployData.deployFile = formData.get('yamlfile')
203 console.log(this.modelDeployForm.value);
204 this.modelBool = true;
205 this.imageBool = false;
206 this.detectBool = false;
208 // this.modelBool = false;
210 this.serviceobj.postDeploymentPackage(formData)
214 // console.log(data);
216 ,error => console.log(error)
222 this.detectBool = false;
223 this.modelBool = false;
224 this.imageBool = false;
226 this.toastService.show('Defect Detection in PCB images In progress', { classname: 'bg-warning text-dark', delay: 10000 });
228 this.detectData = this.selectedEdgeSite + '/' + this.selectedCamera;
231 this.serviceobj.pcbDetect(this.detectData)
234 if(data.responce == "success"){
235 this.detectBool = true;
236 this.detectPendingBool = false;
240 ,error => console.log(error)
243 this.detectData = '';
248 // Success message display
250 private async showSuccess() {
253 await this.delay(3000);
254 console.log("Inside showSuccess...")
256 if(this.imageBool == true){
257 this.toastService.show('PCB images from cameras uploaded successfully', { classname: 'bg-success text-light', delay: 9000 });
260 if(this.modelBool == true){
261 this.toastService.show('PCB Trained model uploaded Successfully', { classname: 'bg-success text-light', delay: 9000 });
264 if(this.detectBool == true){
265 // this.toastService.show('Defect Detection in PCB images In progress', { classname: 'bg-warning text-dark', delay: 3000 });
266 // await this.delay(3000);
267 this.toastService.show('Defect Detection in PCB images Completed', { classname: 'bg-success text-light', delay: 9000 });
270 if(this.detectPendingBool == true ){
271 this.toastService.show('Defect Detection in PCB images In progress', { classname: 'bg-warning text-dark', delay: 9000 });
272 // await this.delay(9000);
277 private delay(ms: number)
279 return new Promise(resolve => setTimeout(resolve, ms));
282 onEdgeSiteSelection() {
283 console.log("on Edge Site Selection triggered....");
284 console.log(this.selectedEdgeSite);
287 onDefectSelection() {
289 console.log("on Defect Selection triggered....");
290 console.log(this.selectedDefect);
293 onCameraSelection() {
295 console.log("on Camera Selection triggered....");
296 console.log(this.selectedCamera);
300 console.log("Inside onPreview.....")
302 this.parentData = this.selectedEdgeSite + '/' + this.selectedCamera;
304 let pcbInputObj = new PcbimagesComponent(this.serviceobj, this.sanitizer);