build_app
This commit is contained in:
		
							parent
							
								
									8790378bca
								
							
						
					
					
						commit
						e0c8a0976f
					
				@ -69,6 +69,12 @@ public class BuilderService {
 | 
				
			|||||||
		executeDump(true);
 | 
							executeDump(true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// ADD OTHER SERVICE
 | 
							// ADD OTHER SERVICE
 | 
				
			||||||
 | 
					addCustomMenu( "Steps","Stepper_workflow",  "Transcations"); 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					addCustomMenu( "Testa","Testa",  "Transcations"); 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		System.out.println("dashboard and menu inserted...");
 | 
							System.out.println("dashboard and menu inserted...");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,123 @@
 | 
				
			|||||||
 | 
					package com.realnet.basicp1.Controllers;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
 | 
					 import org.springframework.web.bind.annotation.*;
 | 
				
			||||||
 | 
					import org.springframework.web.multipart.MultipartFile;
 | 
				
			||||||
 | 
					import com.fasterxml.jackson.core.JsonProcessingException;
 | 
				
			||||||
 | 
					import org.springframework.web.bind.annotation.CrossOrigin;
 | 
				
			||||||
 | 
					import com.fasterxml.jackson.databind.JsonMappingException;
 | 
				
			||||||
 | 
					import com.realnet.config.EmailService;
 | 
				
			||||||
 | 
					import com.realnet.users.entity1.AppUser;
 | 
				
			||||||
 | 
					import com.realnet.users.service1.AppUserServiceImpl;
 | 
				
			||||||
 | 
					import com.fasterxml.jackson.databind.ObjectMapper;
 | 
				
			||||||
 | 
					import org.springframework.data.domain.*;
 | 
				
			||||||
 | 
					import com.realnet.fnd.response.EntityResponse;
 | 
				
			||||||
 | 
					import org.springframework.http.*;
 | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.*;
 | 
				
			||||||
 | 
					import com.realnet.basicp1.Entity.Testa;
 | 
				
			||||||
 | 
					import com.realnet.basicp1.Services.TestaService ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@RequestMapping(value = "/Testa")
 | 
				
			||||||
 | 
					 @CrossOrigin("*") 
 | 
				
			||||||
 | 
					@RestController
 | 
				
			||||||
 | 
					public class TestaController {
 | 
				
			||||||
 | 
						@Autowired
 | 
				
			||||||
 | 
						private TestaService Service;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Value("${projectPath}")
 | 
				
			||||||
 | 
						private String projectPath;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@PostMapping("/Testa")
 | 
				
			||||||
 | 
							  public Testa Savedata(@RequestBody Testa data) {
 | 
				
			||||||
 | 
							Testa save = Service.Savedata(data)	;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							System.out.println("data saved..." + save);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 return save;
 | 
				
			||||||
 | 
						  }
 | 
				
			||||||
 | 
					@PutMapping("/Testa/{id}")
 | 
				
			||||||
 | 
						public  Testa update(@RequestBody Testa data,@PathVariable Integer id ) {
 | 
				
			||||||
 | 
							Testa update = Service.update(data,id);
 | 
				
			||||||
 | 
							System.out.println("data update..." + update);
 | 
				
			||||||
 | 
							return update;
 | 
				
			||||||
 | 
						}	 
 | 
				
			||||||
 | 
					//	get all with pagination
 | 
				
			||||||
 | 
						@GetMapping("/Testa/getall/page")
 | 
				
			||||||
 | 
						public Page<Testa> getall(@RequestParam(value = "page", required = false) Integer page,
 | 
				
			||||||
 | 
								@RequestParam(value = "size", required = false) Integer size) {
 | 
				
			||||||
 | 
							Pageable paging = PageRequest.of(page, size);
 | 
				
			||||||
 | 
							Page<Testa> get = Service.getAllWithPagination(paging);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}	
 | 
				
			||||||
 | 
						@GetMapping("/Testa")
 | 
				
			||||||
 | 
						public List<Testa> getdetails() {
 | 
				
			||||||
 | 
							 List<Testa> get = Service.getdetails();		
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					// get all without authentication 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@GetMapping("/token/Testa")
 | 
				
			||||||
 | 
						public List<Testa> getallwioutsec() {
 | 
				
			||||||
 | 
							 List<Testa> get = Service.getdetails();		
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					@GetMapping("/Testa/{id}")
 | 
				
			||||||
 | 
						public  Testa  getdetailsbyId(@PathVariable Integer id ) {
 | 
				
			||||||
 | 
							Testa  get = Service.getdetailsbyId(id);
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					@DeleteMapping("/Testa/{id}")
 | 
				
			||||||
 | 
						public  ResponseEntity<?> delete_by_id(@PathVariable Integer id ) {
 | 
				
			||||||
 | 
						Service.delete_by_id(id);
 | 
				
			||||||
 | 
								return new ResponseEntity<>(new EntityResponse("Deleted"), HttpStatus.OK);
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,123 @@
 | 
				
			|||||||
 | 
					package com.realnet.basicp1.Controllers;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
 | 
					 import org.springframework.web.bind.annotation.*;
 | 
				
			||||||
 | 
					import org.springframework.web.multipart.MultipartFile;
 | 
				
			||||||
 | 
					import com.fasterxml.jackson.core.JsonProcessingException;
 | 
				
			||||||
 | 
					import org.springframework.web.bind.annotation.CrossOrigin;
 | 
				
			||||||
 | 
					import com.fasterxml.jackson.databind.JsonMappingException;
 | 
				
			||||||
 | 
					import com.realnet.config.EmailService;
 | 
				
			||||||
 | 
					import com.realnet.users.entity1.AppUser;
 | 
				
			||||||
 | 
					import com.realnet.users.service1.AppUserServiceImpl;
 | 
				
			||||||
 | 
					import com.fasterxml.jackson.databind.ObjectMapper;
 | 
				
			||||||
 | 
					import org.springframework.data.domain.*;
 | 
				
			||||||
 | 
					import com.realnet.fnd.response.EntityResponse;
 | 
				
			||||||
 | 
					import org.springframework.http.*;
 | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.*;
 | 
				
			||||||
 | 
					import com.realnet.basicp1.Entity.Testa;
 | 
				
			||||||
 | 
					import com.realnet.basicp1.Services.TestaService ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@RequestMapping(value = "/token/Testa")
 | 
				
			||||||
 | 
					 @CrossOrigin("*") 
 | 
				
			||||||
 | 
					@RestController
 | 
				
			||||||
 | 
					public class tokenFree_TestaController {
 | 
				
			||||||
 | 
						@Autowired
 | 
				
			||||||
 | 
						private TestaService Service;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Value("${projectPath}")
 | 
				
			||||||
 | 
						private String projectPath;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@PostMapping("/Testa")
 | 
				
			||||||
 | 
							  public Testa Savedata(@RequestBody Testa data) {
 | 
				
			||||||
 | 
							Testa save = Service.Savedata(data)	;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							System.out.println("data saved..." + save);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 return save;
 | 
				
			||||||
 | 
						  }
 | 
				
			||||||
 | 
					@PutMapping("/Testa/{id}")
 | 
				
			||||||
 | 
						public  Testa update(@RequestBody Testa data,@PathVariable Integer id ) {
 | 
				
			||||||
 | 
							Testa update = Service.update(data,id);
 | 
				
			||||||
 | 
							System.out.println("data update..." + update);
 | 
				
			||||||
 | 
							return update;
 | 
				
			||||||
 | 
						}	 
 | 
				
			||||||
 | 
					//	get all with pagination
 | 
				
			||||||
 | 
						@GetMapping("/Testa/getall/page")
 | 
				
			||||||
 | 
						public Page<Testa> getall(@RequestParam(value = "page", required = false) Integer page,
 | 
				
			||||||
 | 
								@RequestParam(value = "size", required = false) Integer size) {
 | 
				
			||||||
 | 
							Pageable paging = PageRequest.of(page, size);
 | 
				
			||||||
 | 
							Page<Testa> get = Service.getAllWithPagination(paging);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}	
 | 
				
			||||||
 | 
						@GetMapping("/Testa")
 | 
				
			||||||
 | 
						public List<Testa> getdetails() {
 | 
				
			||||||
 | 
							 List<Testa> get = Service.getdetails();		
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					// get all without authentication 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@GetMapping("/token/Testa")
 | 
				
			||||||
 | 
						public List<Testa> getallwioutsec() {
 | 
				
			||||||
 | 
							 List<Testa> get = Service.getdetails();		
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					@GetMapping("/Testa/{id}")
 | 
				
			||||||
 | 
						public  Testa  getdetailsbyId(@PathVariable Integer id ) {
 | 
				
			||||||
 | 
							Testa  get = Service.getdetailsbyId(id);
 | 
				
			||||||
 | 
							return get;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					@DeleteMapping("/Testa/{id}")
 | 
				
			||||||
 | 
						public  ResponseEntity<?> delete_by_id(@PathVariable Integer id ) {
 | 
				
			||||||
 | 
						Service.delete_by_id(id);
 | 
				
			||||||
 | 
								return new ResponseEntity<>(new EntityResponse("Deleted"), HttpStatus.OK);
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,61 @@
 | 
				
			|||||||
 | 
					package com.realnet.basicp1.Entity;
 | 
				
			||||||
 | 
					 import lombok.*;
 | 
				
			||||||
 | 
					import com.realnet.WhoColumn.Entity.Extension; 
 | 
				
			||||||
 | 
					 import javax.persistence.*;
 | 
				
			||||||
 | 
					 import java.time.LocalDateTime;
 | 
				
			||||||
 | 
					 import java.util.*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 @Entity 
 | 
				
			||||||
 | 
					 @Data
 | 
				
			||||||
 | 
					 public class    Testa extends Extension { 
 | 
				
			||||||
 | 
					 /**
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						private static final long serialVersionUID = 1L;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 @Id
 | 
				
			||||||
 | 
					 @GeneratedValue(strategy = GenerationType.IDENTITY)
 | 
				
			||||||
 | 
					 private Integer id;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private String  name;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					private boolean a;
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					private boolean b;
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					private boolean c;
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private String  fileupload_fieldname;
 | 
				
			||||||
 | 
					private String  fileupload_fieldpath ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private String  imageupload_fieldname;
 | 
				
			||||||
 | 
					private String  imageupload_fieldpath ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private String  audio_fieldname;
 | 
				
			||||||
 | 
					private String  audio_fieldpath ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private String  video_fieldname;
 | 
				
			||||||
 | 
					private String  video_fieldpath ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,36 @@
 | 
				
			|||||||
 | 
					package com.realnet.basicp1.Repository;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.springframework.data.domain.Page;
 | 
				
			||||||
 | 
					import org.springframework.data.domain.Pageable;
 | 
				
			||||||
 | 
					import org.springframework.data.jpa.repository.JpaRepository;
 | 
				
			||||||
 | 
					import org.springframework.data.jpa.repository.Query;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.springframework.stereotype.Repository; 
 | 
				
			||||||
 | 
					import java.util.*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.realnet.basicp1.Entity.Testa;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Repository
 | 
				
			||||||
 | 
					public interface  TestaRepository  extends  JpaRepository<Testa, Integer>  { 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Query(value = "select * from testa where  created_by=?1", nativeQuery = true)
 | 
				
			||||||
 | 
						List<Testa> findAll(Long creayedBy);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Query(value = "select * from testa where  created_by=?1", nativeQuery = true)
 | 
				
			||||||
 | 
						Page<Testa> findAll(Pageable page, Long creayedBy);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,137 @@
 | 
				
			|||||||
 | 
					package com.realnet.basicp1.Services;
 | 
				
			||||||
 | 
					import com.realnet.basicp1.Repository.TestaRepository;
 | 
				
			||||||
 | 
					import com.realnet.basicp1.Entity.Testa
 | 
				
			||||||
 | 
					;import java.util.*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
 | 
					import com.realnet.SequenceGenerator.Service.SequenceService;
 | 
				
			||||||
 | 
					import org.springframework.data.domain.Page;
 | 
				
			||||||
 | 
					import com.realnet.realm.Entity.Realm;
 | 
				
			||||||
 | 
					import com.realnet.realm.Services.RealmService;
 | 
				
			||||||
 | 
					import org.springframework.data.domain.Pageable;
 | 
				
			||||||
 | 
					import org.springframework.http.*;
 | 
				
			||||||
 | 
					import com.realnet.users.service1.AppUserServiceImpl;
 | 
				
			||||||
 | 
					import com.realnet.users.entity1.AppUser;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						import org.springframework.stereotype.Service;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Service
 | 
				
			||||||
 | 
					 public class TestaService {
 | 
				
			||||||
 | 
					@Autowired
 | 
				
			||||||
 | 
					private TestaRepository Repository;
 | 
				
			||||||
 | 
						@Autowired
 | 
				
			||||||
 | 
						private AppUserServiceImpl userService; 
 | 
				
			||||||
 | 
					@Autowired
 | 
				
			||||||
 | 
						private RealmService realmService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public Testa Savedata(Testa data) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						data.setUpdatedBy(getUser().getUserId());
 | 
				
			||||||
 | 
							data.setCreatedBy(getUser().getUserId());
 | 
				
			||||||
 | 
							data.setAccountId(getUser().getAccount().getAccount_id());
 | 
				
			||||||
 | 
					Testa save = Repository.save(data);
 | 
				
			||||||
 | 
									return save;	
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//	get all with pagination
 | 
				
			||||||
 | 
						public Page<Testa> getAllWithPagination(Pageable page) {
 | 
				
			||||||
 | 
							return Repository.findAll(page, getUser().getUserId());
 | 
				
			||||||
 | 
						}			
 | 
				
			||||||
 | 
					public List<Testa> getdetails() {  
 | 
				
			||||||
 | 
							List<Realm> realm = realmService.findByUserId(getUser().getUserId());
 | 
				
			||||||
 | 
					List<Testa> all = Repository.findAll(getUser().getUserId());
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							return all ;		}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public Testa getdetailsbyId(Integer id) {
 | 
				
			||||||
 | 
						return Repository.findById(id).get();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public void delete_by_id(Integer id) {
 | 
				
			||||||
 | 
					 Repository.deleteById(id);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public Testa update(Testa data,Integer id) {
 | 
				
			||||||
 | 
						Testa old = Repository.findById(id).get();
 | 
				
			||||||
 | 
					old.setName(data.getName());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					old.setA(data.isA());
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					old.setB(data.isB());
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					old.setC(data.isC());
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					final Testa test = Repository.save(old);
 | 
				
			||||||
 | 
							data.setUpdatedBy(getUser().getUserId());
 | 
				
			||||||
 | 
					  return test;} 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 public AppUser getUser() {
 | 
				
			||||||
 | 
							AppUser user = userService.getLoggedInUser();
 | 
				
			||||||
 | 
							return user;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}}
 | 
				
			||||||
							
								
								
									
										2
									
								
								testreview-db-d/authsec_mysql/mysql/wf_table/wf_table.sql
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										2
									
								
								testreview-db-d/authsec_mysql/mysql/wf_table/wf_table.sql
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,2 @@
 | 
				
			|||||||
 | 
					CREATE TABLE db.Testa(id BIGINT NOT NULL AUTO_INCREMENT, a bit(1), video_field VARCHAR(400), b bit(1), c bit(1), fileupload_field VARCHAR(400), imageupload_field VARCHAR(400), audio_field VARCHAR(400), name VARCHAR(400),  PRIMARY KEY (id));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -2,14 +2,14 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
export const LoginEnvironment = {
 | 
					export const LoginEnvironment = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        "templateNo": "<templateNo>",
 | 
					        "templateNo": "Template 1",
 | 
				
			||||||
        "loginHeading": "<loginHeading>",
 | 
					        "loginHeading": "Welcome to",
 | 
				
			||||||
        "loginHeading2": "<loginHeading2>",
 | 
					        "loginHeading2": "io8.dev",
 | 
				
			||||||
        "isSignup": "<isSignup>",
 | 
					        "isSignup": "true",
 | 
				
			||||||
        "loginSignup": "<loginSignup> ",
 | 
					        "loginSignup": "Use your ID to sign in OR  ",
 | 
				
			||||||
        "loginSignup2": "<loginSignup2>",
 | 
					        "loginSignup2": "create one now",
 | 
				
			||||||
        "loginForgotpass": "<loginForgotpass>",
 | 
					        "loginForgotpass": "FORGOT PASSWORD?",
 | 
				
			||||||
        "loginImage": "<loginImage>",
 | 
					        "loginImage": "[]",
 | 
				
			||||||
        "loginImageURL": "<loginImageURL>"
 | 
					        "loginImageURL": "null"
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,795 @@
 | 
				
			|||||||
 | 
					<ol class="breadcrumb breadcrumb-arrow font-trirong">
 | 
				
			||||||
 | 
					  <li><a href="javascript://"> Testa</a></li>
 | 
				
			||||||
 | 
					</ol>
 | 
				
			||||||
 | 
					<div class="dg-wrapper">
 | 
				
			||||||
 | 
					  <div class="clr-row">
 | 
				
			||||||
 | 
					    <div class="clr-col-8">
 | 
				
			||||||
 | 
					      <h3>Testa </h3>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					    <div class="clr-col-4" style="text-align: right;">
 | 
				
			||||||
 | 
					 <button *ngIf="cardButton" id="add" class="btn btn-primary btn-icon" (click)="changeView()" >
 | 
				
			||||||
 | 
					        <clr-icon *ngIf="!isCardview" shape="grid-view"></clr-icon>    <clr-icon *ngIf="isCardview" shape="bars"></clr-icon>
 | 
				
			||||||
 | 
					      </button>
 | 
				
			||||||
 | 
					        <!-- button -->
 | 
				
			||||||
 | 
					     <button id="add" class="btn btn-primary" (click)="goToAdd(product)" >
 | 
				
			||||||
 | 
					        <clr-icon shape="plus"></clr-icon>ADD
 | 
				
			||||||
 | 
					      </button>
 | 
				
			||||||
 | 
					    </div></div>
 | 
				
			||||||
 | 
					  <ng-container *ngIf="!isCardview">   <!-- GET ALL -->     <clr-datagrid [clrDgLoading]="loading" [(clrDgSelected)]="selected">
 | 
				
			||||||
 | 
					    <clr-dg-placeholder>
 | 
				
			||||||
 | 
					        <ng-template #loadingSpinner>
 | 
				
			||||||
 | 
					            <clr-spinner>Loading ... </clr-spinner>
 | 
				
			||||||
 | 
					        </ng-template>
 | 
				
			||||||
 | 
					        <div *ngIf="error;else loadingSpinner">{{error}}</div>
 | 
				
			||||||
 | 
					    </clr-dg-placeholder>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<clr-dg-column [clrDgField]="'name'"> <ng-container *clrDgHideableColumn="{hidden: false}"> Name
 | 
				
			||||||
 | 
											    </ng-container></clr-dg-column>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					<clr-dg-column [clrDgField]="' a'"> <ng-container *clrDgHideableColumn="{hidden: false}"> a
 | 
				
			||||||
 | 
											    </ng-container></clr-dg-column>
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					<clr-dg-column [clrDgField]="' b'"> <ng-container *clrDgHideableColumn="{hidden: false}"> b
 | 
				
			||||||
 | 
											    </ng-container></clr-dg-column>
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					<clr-dg-column [clrDgField]="' c'"> <ng-container *clrDgHideableColumn="{hidden: false}"> c
 | 
				
			||||||
 | 
											    </ng-container></clr-dg-column>
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 <!-- who column -->
 | 
				
			||||||
 | 
					      <clr-dg-column> <ng-container *clrDgHideableColumn="{hidden: false}">
 | 
				
			||||||
 | 
					        <clr-icon shape="bars"></clr-icon> Action
 | 
				
			||||||
 | 
					      </ng-container></clr-dg-column>
 | 
				
			||||||
 | 
					      <!-- end --> 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 <clr-dg-row *clrDgItems="let user of product" [clrDgItem]="user">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<clr-dg-cell>{{user.name }}</clr-dg-cell>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					<clr-dg-cell>{{user.a}}</clr-dg-cell>
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					<clr-dg-cell>{{user.b}}</clr-dg-cell>
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					<clr-dg-cell>{{user.c}}</clr-dg-cell>
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					  <!-- who column -->
 | 
				
			||||||
 | 
					<clr-dg-cell>
 | 
				
			||||||
 | 
					  <clr-signpost>
 | 
				
			||||||
 | 
					   <span style="cursor: pointer;" clrSignpostTrigger><clr-icon shape="help" class="success" style="color: rgb(0, 130, 236);"></clr-icon></span>
 | 
				
			||||||
 | 
					   <clr-signpost-content [clrPosition]="'left-middle'" *clrIfOpen>
 | 
				
			||||||
 | 
					     <h5 style="margin-top: 0">Who Column</h5>
 | 
				
			||||||
 | 
					           <div>Account ID: <code class="clr-code">{{user.accountId}}</code></div>
 | 
				
			||||||
 | 
					           <div>Created At: <code class="clr-code">{{user.createdAt| date}}</code></div>
 | 
				
			||||||
 | 
					           <div>Created By: <code class="clr-code">{{user.createdBy}}</code></div>
 | 
				
			||||||
 | 
					           <div>Updated At: <code class="clr-code">{{user.updatedAt | date}}</code></div>
 | 
				
			||||||
 | 
					           <div>Updated By: <code class="clr-code">{{user.updatedBy}}</code></div>
 | 
				
			||||||
 | 
					   </clr-signpost-content>
 | 
				
			||||||
 | 
					 </clr-signpost>
 | 
				
			||||||
 | 
					 </clr-dg-cell>
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 <!-- who colmn --> 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 <clr-dg-action-overflow>
 | 
				
			||||||
 | 
					        <button class="action-item" (click)="onEdit(user)">Edit</button>
 | 
				
			||||||
 | 
					        <button class="action-item" (click)="onDelete(user)">Delete</button>
 | 
				
			||||||
 | 
					      </clr-dg-action-overflow>
 | 
				
			||||||
 | 
					         </clr-dg-row>
 | 
				
			||||||
 | 
					    <clr-dg-footer>
 | 
				
			||||||
 | 
					      <clr-dg-pagination #pagination [clrDgPageSize]="10">
 | 
				
			||||||
 | 
					        <clr-dg-page-size [clrPageSizeOptions]="[10,20,50,100]">Users per page</clr-dg-page-size>
 | 
				
			||||||
 | 
					        {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}}
 | 
				
			||||||
 | 
					        of {{pagination.totalItems}} users
 | 
				
			||||||
 | 
					      </clr-dg-pagination>
 | 
				
			||||||
 | 
					    </clr-dg-footer>
 | 
				
			||||||
 | 
					  </clr-datagrid> </ng-container>
 | 
				
			||||||
 | 
					<ng-template #showInfo>
 | 
				
			||||||
 | 
					  <div class="alert alert-info" role="alert">
 | 
				
			||||||
 | 
					      <div class="alert-items">
 | 
				
			||||||
 | 
					          <div class="alert-item static">
 | 
				
			||||||
 | 
					              <span class="alert-text">
 | 
				
			||||||
 | 
					                <clr-icon class="alert-icon" shape="info-circle"></clr-icon>
 | 
				
			||||||
 | 
					                    Data could be found. Loading..
 | 
				
			||||||
 | 
					                  <clr-spinner [clrMedium]="true">Loading ...</clr-spinner>
 | 
				
			||||||
 | 
					              </span>
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</ng-template><ng-container *ngIf="isCardview">
 | 
				
			||||||
 | 
					  <div *ngIf="product; else showInfo" class="clr-row clr-align-items-start clr-justify-content-start">
 | 
				
			||||||
 | 
					    <div *ngFor="let app of product| filter:search; let index = i" class="clr-col-auto" >
 | 
				
			||||||
 | 
					      <div class="clr-row">
 | 
				
			||||||
 | 
					        <div class="clr-col-lg-12 clr-col-md-4 clr-col-sm-4 clr-col-12" style="width: 410px;">
 | 
				
			||||||
 | 
					  <div class="card" style="padding: 10px; "[style.background-color]="cardmodal.cardColor !== '' ? cardmodal.cardColor : 'white'">
 | 
				
			||||||
 | 
					    <div class="card-body" style="display: grid; grid-template-columns: repeat(13, 1fr); grid-template-rows: repeat(7, 1fr); gap: 5px;">
 | 
				
			||||||
 | 
					      <ng-container *ngFor="let item of dashboardArray">
 | 
				
			||||||
 | 
					        <div [style.gridColumn]="item.x + 1" [style.gridRow]="item.y + 1" [style.gridColumnEnd]="item.x + item.cols + 1"
 | 
				
			||||||
 | 
					          [style.gridRowEnd]="item.y + item.rows + 1">
 | 
				
			||||||
 | 
					          <div *ngIf="item.name === 'textField'" class="title-card card-title"
 | 
				
			||||||
 | 
					          [style.text-align]="item.alignment !== '' ? item.alignment : 'left'"
 | 
				
			||||||
 | 
					          [style.line-height]="item.textlineheight !== '' ? item.textlineheight : '1'"
 | 
				
			||||||
 | 
					          [style.font-family]="item.fontName !== '' ? item.fontName : 'Metropolis'"
 | 
				
			||||||
 | 
					          [style.font-size]="item.fontSize !== '' ? item.fontSize : '100%'"
 | 
				
			||||||
 | 
					          [style.font-style]="item.italic == true ? 'Italic' : 'normal'"
 | 
				
			||||||
 | 
					          [style.font-weight]="item.bold == true ? 'bold' : 'normal'" [style.text-decoration]="(item.underline && item.strikethough) ? 'underline line-through' : 
 | 
				
			||||||
 | 
					          (item.underline ? 'underline' : (item.strikethough ? 'line-through' : 'none'))"
 | 
				
			||||||
 | 
					          [style.background-color]="item.backgroundcolor !== '' ? item.backgroundcolor : 'white'"
 | 
				
			||||||
 | 
					          [style.color]="item.textcolor !== '' ? item.textcolor : 'black'"     	 [style.background-color]="item.conditionValue ==  app[transform(item.fieldtext) ] ? item.conditionbackgroundcolor : item.backgroundcolor"
 | 
				
			||||||
 | 
					          [style.color]="item.conditionValue ==  app[transform(item.fieldtext) ] ? item.conditiontextcolor : item.textcolor">
 | 
				
			||||||
 | 
					           {{beforeText(item.fieldtext)}}
 | 
				
			||||||
 | 
					          {{ app[transform(item.fieldtext) ] }}
 | 
				
			||||||
 | 
					          {{afterText(item.fieldtext)}}
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          <div *ngIf="item.name === 'dateField'" class="title-card card-title"
 | 
				
			||||||
 | 
					          [style.text-align]="item.alignment !== '' ? item.alignment : 'left'"
 | 
				
			||||||
 | 
					          [style.line-height]="item.textlineheight !== '' ? item.textlineheight : '1'"
 | 
				
			||||||
 | 
					          [style.font-family]="item.fontName !== '' ? item.fontName : 'Metropolis'"
 | 
				
			||||||
 | 
					          [style.font-size]="item.fontSize !== '' ? item.fontSize : '100%'"
 | 
				
			||||||
 | 
					          [style.font-style]="item.italic == true ? 'Italic' : 'normal'"
 | 
				
			||||||
 | 
					          [style.font-weight]="item.bold == true ? 'bold' : 'normal'" [style.text-decoration]="(item.underline && item.strikethough) ? 'underline line-through' : 
 | 
				
			||||||
 | 
					          (item.underline ? 'underline' : (item.strikethough ? 'line-through' : 'none'))"
 | 
				
			||||||
 | 
					          [style.background-color]="item.backgroundcolor !== '' ? item.backgroundcolor : 'white'"
 | 
				
			||||||
 | 
					          [style.color]="item.textcolor !== '' ? item.textcolor : 'black'"			 [style.background-color]="item.conditionValue ==  app[transform(item.fieldtext) ] ? item.conditionbackgroundcolor : item.backgroundcolor"
 | 
				
			||||||
 | 
					          [style.color]="item.conditionValue ==  app[transform(item.fieldtext) ] ? item.conditiontextcolor : item.textcolor">
 | 
				
			||||||
 | 
					          {{beforeText(item.fieldtext)}}
 | 
				
			||||||
 | 
					          {{ app[transform(item.fieldtext) ] | date}}
 | 
				
			||||||
 | 
					          {{afterText(item.fieldtext)}}
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					          <div *ngIf="item.name === 'numberField'" class="title-card card-title"
 | 
				
			||||||
 | 
					          [style.text-align]="item.alignment !== '' ? item.alignment : 'left'"
 | 
				
			||||||
 | 
					          [style.line-height]="item.textlineheight !== '' ? item.textlineheight : '1'"
 | 
				
			||||||
 | 
					          [style.font-family]="item.fontName !== '' ? item.fontName : 'Metropolis'"
 | 
				
			||||||
 | 
					          [style.font-size]="item.fontSize !== '' ? item.fontSize : '100%'"
 | 
				
			||||||
 | 
					          [style.font-style]="item.italic == true ? 'Italic' : 'normal'"
 | 
				
			||||||
 | 
					          [style.font-weight]="item.bold == true ? 'bold' : 'normal'" [style.text-decoration]="(item.underline && item.strikethough) ? 'underline line-through' : 
 | 
				
			||||||
 | 
					          (item.underline ? 'underline' : (item.strikethough ? 'line-through' : 'none'))"
 | 
				
			||||||
 | 
					          [style.background-color]="item.backgroundcolor !== '' ? item.backgroundcolor : 'white'"
 | 
				
			||||||
 | 
					          [style.color]="item.textcolor !== '' ? item.textcolor : 'black'"			 [style.background-color]="item.conditionValue ==  app[transform(item.fieldtext) ] ? item.conditionbackgroundcolor : item.backgroundcolor"
 | 
				
			||||||
 | 
					          [style.color]="item.conditionValue ==  app[transform(item.fieldtext) ] ? item.conditiontextcolor : item.textcolor">
 | 
				
			||||||
 | 
					          {{beforeText(item.fieldtext)}}
 | 
				
			||||||
 | 
					          {{ app[transform(item.fieldtext) ]}}
 | 
				
			||||||
 | 
					          {{afterText(item.fieldtext)}}
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          <div *ngIf="item.name === 'Line'" class="title-card card-title"
 | 
				
			||||||
 | 
					          [style.text-align]="item.alignment !== '' ? item.alignment : 'left'"
 | 
				
			||||||
 | 
					          [style.line-height]="item.textlineheight !== '' ? item.textlineheight : '1'"
 | 
				
			||||||
 | 
					          [style.font-family]="item.fontName !== '' ? item.fontName : 'Metropolis'"
 | 
				
			||||||
 | 
					          [style.font-size]="item.fontSize !== '' ? item.fontSize : '100%'"
 | 
				
			||||||
 | 
					          [style.font-style]="item.italic == true ? 'Italic' : 'normal'"
 | 
				
			||||||
 | 
					          [style.font-weight]="item.bold == true ? 'bold' : 'normal'" [style.text-decoration]="(item.underline && item.strikethough) ? 'underline line-through' : 
 | 
				
			||||||
 | 
					          (item.underline ? 'underline' : (item.strikethough ? 'line-through' : 'none'))"
 | 
				
			||||||
 | 
					          [style.background-color]="item.backgroundcolor !== '' ? item.backgroundcolor : 'white'"
 | 
				
			||||||
 | 
					          [style.color]="item.textcolor !== '' ? item.textcolor : 'black'">
 | 
				
			||||||
 | 
					          <hr>
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          
 | 
				
			||||||
 | 
					          <div *ngIf="item.name === 'Icon'" class="icon-card"
 | 
				
			||||||
 | 
					          [style.text-align]="item.alignment !== '' ? item.alignment : 'left'"
 | 
				
			||||||
 | 
					          [style.line-height]="item.textlineheight !== '' ? item.textlineheight : '1'"
 | 
				
			||||||
 | 
					          [style.font-family]="item.fontName !== '' ? item.fontName : 'Metropolis'"
 | 
				
			||||||
 | 
					          [style.font-size]="item.fontSize !== '' ? item.fontSize : '100%'"
 | 
				
			||||||
 | 
					          [style.font-style]="item.italic == true ? 'Italic' : 'normal'"
 | 
				
			||||||
 | 
					          [style.font-weight]="item.bold == true ? 'bold' : 'normal'" [style.text-decoration]="(item.underline && item.strikethough) ? 'underline line-through' : 
 | 
				
			||||||
 | 
					          (item.underline ? 'underline' : (item.strikethough ? 'line-through' : 'none'))"
 | 
				
			||||||
 | 
					          [style.background-color]="item.backgroundcolor !== '' ? item.backgroundcolor : 'white'"
 | 
				
			||||||
 | 
					          [style.color]="item.textcolor !== '' ? item.textcolor : 'black'"
 | 
				
			||||||
 | 
					          >
 | 
				
			||||||
 | 
					            <clr-icon [attr.shape]="item.iconName"></clr-icon>
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          <div *ngIf="item.name == 'Image'"
 | 
				
			||||||
 | 
					          [style.text-align]="item.alignment !== '' ? item.alignment : 'left'"
 | 
				
			||||||
 | 
					          [style.line-height]="item.textlineheight !== '' ? item.textlineheight : '1'"
 | 
				
			||||||
 | 
					          [style.font-family]="item.fontName !== '' ? item.fontName : 'Metropolis'"
 | 
				
			||||||
 | 
					          [style.font-size]="item.fontSize !== '' ? item.fontSize : '100%'"
 | 
				
			||||||
 | 
					          [style.font-style]="item.italic == true ? 'Italic' : 'normal'"
 | 
				
			||||||
 | 
					          [style.font-weight]="item.bold == true ? 'bold' : 'normal'" [style.text-decoration]="(item.underline && item.strikethough) ? 'underline line-through' : 
 | 
				
			||||||
 | 
					          (item.underline ? 'underline' : (item.strikethough ? 'line-through' : 'none'))"
 | 
				
			||||||
 | 
					          [style.background-color]="item.backgroundcolor !== '' ? item.backgroundcolor : 'white'"
 | 
				
			||||||
 | 
					          [style.color]="item.textcolor !== '' ? item.textcolor : 'black'"
 | 
				
			||||||
 | 
					          [style.background-color]="item.conditionValue ==  app[transform(item.fieldtext) ] ? item.conditionbackgroundcolor : item.backgroundcolor"
 | 
				
			||||||
 | 
					          [style.color]="item.conditionValue ==  app[transform(item.fieldtext) ] ? item.conditiontextcolor : item.textcolor">			 <img id="filePreview" [src]="item.imageURL" alt="File Preview"
 | 
				
			||||||
 | 
					            [style.width]="item.imagewidth !== '' ? item.imagewidth + 'px' : '100px'"
 | 
				
			||||||
 | 
					            [style.height]="item.imagewidth !== '' ? item.imagewidth + 'px' : '100px'"></div>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					      </ng-container>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					  </ng-container>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<!-- //		EDIT DATA......... -->
 | 
				
			||||||
 | 
					<clr-modal [(clrModalOpen)]="modalEdit" [clrModalSize]="'lg'" [clrModalStaticBackdrop]="true">
 | 
				
			||||||
 | 
					  <h3 class="modal-title">Update Testa
 | 
				
			||||||
 | 
					 <!--update button -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</h3>
 | 
				
			||||||
 | 
					  <div class="modal-body" *ngIf="rowSelected.id">
 | 
				
			||||||
 | 
					    <h2 class="heading">{{rowSelected.id}}</h2>
 | 
				
			||||||
 | 
					<!-- button -->
 | 
				
			||||||
 | 
					    <form >
 | 
				
			||||||
 | 
					<div class="clr-row"> 
 | 
				
			||||||
 | 
					<div class="clr-col-sm-12">       
 | 
				
			||||||
 | 
					<label>Name</label>
 | 
				
			||||||
 | 
						        <input class="clr-input"  type="text" [(ngModel)]="rowSelected.name" name="name" />
 | 
				
			||||||
 | 
						      </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<!-- multiselect checkbox field start -->
 | 
				
			||||||
 | 
					<div class="clr-col-sm-12">
 | 
				
			||||||
 | 
					 <label> checkbosxs</label>
 | 
				
			||||||
 | 
					  <div class="clr-form-control" style="margin-top: 5px;margin-bottom: 10px;">
 | 
				
			||||||
 | 
					    <div class="clr-control-container">
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      <div class="clr-checkbox-wrapper"> <input type="checkbox" id="a" name="a" [(ngModel)]="rowSelected.a" class="clr-checkbox" /> 
 | 
				
			||||||
 | 
					<label for="a" class="clr-control-label"> a</label> </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      <div class="clr-checkbox-wrapper"> <input type="checkbox" id="b" name="b" [(ngModel)]="rowSelected.b" class="clr-checkbox" /> 
 | 
				
			||||||
 | 
					<label for="b" class="clr-control-label"> b</label> </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      <div class="clr-checkbox-wrapper"> <input type="checkbox" id="c" name="c" [(ngModel)]="rowSelected.c" class="clr-checkbox" /> 
 | 
				
			||||||
 | 
					<label for="c" class="clr-control-label"> c</label> </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					<!-- multiselect checkbox field end -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  </div> 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<h6> List of fileupload_field</h6>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <div  class="clr-row" style="margin-top: 10px;">
 | 
				
			||||||
 | 
					    <table class="table">
 | 
				
			||||||
 | 
					        <thead>
 | 
				
			||||||
 | 
					         <tr>
 | 
				
			||||||
 | 
					         <th>No</th>
 | 
				
			||||||
 | 
					          <th> File</th>
 | 
				
			||||||
 | 
					         <th>File Name</th>
 | 
				
			||||||
 | 
					           <th>Preview</th>
 | 
				
			||||||
 | 
					           <th>Cancel</th>
 | 
				
			||||||
 | 
					            </tr>
 | 
				
			||||||
 | 
					          </thead>
 | 
				
			||||||
 | 
					          <tbody >
 | 
				
			||||||
 | 
					            <tr *ngFor="let attach of FileDatafileupload_field; let i=index">
 | 
				
			||||||
 | 
					              <td style="width: 70px;"><input type="text" class="clr-input"  value={{i+1}} [readonly]="true">  </td>
 | 
				
			||||||
 | 
					              <td><input type="file" (change)="onFileChangedfileupload_field($event, i)"  accept = "application/pdf,.csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel"/>
 | 
				
			||||||
 | 
					               </td>
 | 
				
			||||||
 | 
					             <td>{{attach.uploadedfile_name}}</td>
 | 
				
			||||||
 | 
					              <td >  <img [src]="attach.filePreview" alt="File Preview"  [ngModelOptions]="{standalone: true}" name="filePreview" width="100px" height="100px"></td>
 | 
				
			||||||
 | 
					              <td>
 | 
				
			||||||
 | 
					                  <clr-signpost style="padding-right: 10px;">
 | 
				
			||||||
 | 
					                      <clr-icon shape="trash" class="is-error" aria-label="Icon Button Trigger" clrSignpostTrigger></clr-icon>
 | 
				
			||||||
 | 
					                 
 | 
				
			||||||
 | 
					                    <clr-signpost-content [clrPosition]="'bottom-middle'" *clrIfOpen>
 | 
				
			||||||
 | 
					  <div style="text-align: center;"><b >Are you sure?</b></div>
 | 
				
			||||||
 | 
					                      <button class="btn btn-outline" [clrSignpostTrigger]="false">cancel</button> 
 | 
				
			||||||
 | 
					                      <button class="btn btn-primary"  (click)="deleteRowfileupload_field(i,attach.id)" >Delete</button>
 | 
				
			||||||
 | 
					                    </clr-signpost-content>
 | 
				
			||||||
 | 
					                  </clr-signpost>
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					              </td>
 | 
				
			||||||
 | 
					            </tr>
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					        </tbody>
 | 
				
			||||||
 | 
					          <button type="button" class="btn btn-primary button1" style="margin-left: 20px;" (click)="onAddLinesfileupload_field()">
 | 
				
			||||||
 | 
					            <clr-icon shape="plus"></clr-icon>
 | 
				
			||||||
 | 
					          </button>
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					        </table> </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<h6> List of imageupload_field</h6>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <div  class="clr-row" style="margin-top: 10px;">
 | 
				
			||||||
 | 
					    <table class="table">
 | 
				
			||||||
 | 
					        <thead>
 | 
				
			||||||
 | 
					         <tr>
 | 
				
			||||||
 | 
					         <th>No</th>
 | 
				
			||||||
 | 
					          <th> File</th>
 | 
				
			||||||
 | 
					         <th>File Name</th>
 | 
				
			||||||
 | 
					           <th>Preview</th>
 | 
				
			||||||
 | 
					           <th>Cancel</th>
 | 
				
			||||||
 | 
					            </tr>
 | 
				
			||||||
 | 
					          </thead>
 | 
				
			||||||
 | 
					          <tbody >
 | 
				
			||||||
 | 
					            <tr *ngFor="let attach of FileDataimageupload_field; let i=index">
 | 
				
			||||||
 | 
					              <td style="width: 70px;"><input type="text" class="clr-input"  value={{i+1}} [readonly]="true">  </td>
 | 
				
			||||||
 | 
					              <td><input type="file" (change)="onFileChangedimageupload_field($event, i)"  accept="image/*" />
 | 
				
			||||||
 | 
					               </td>
 | 
				
			||||||
 | 
					             <td>{{attach.uploadedfile_name}}</td>
 | 
				
			||||||
 | 
					              <td >  <img [src]="attach.filePreview" alt="File Preview"  [ngModelOptions]="{standalone: true}" name="filePreview" width="100px" height="100px"></td>
 | 
				
			||||||
 | 
					              <td>
 | 
				
			||||||
 | 
					                  <clr-signpost style="padding-right: 10px;">
 | 
				
			||||||
 | 
					                      <clr-icon shape="trash" class="is-error" aria-label="Icon Button Trigger" clrSignpostTrigger></clr-icon>
 | 
				
			||||||
 | 
					                 
 | 
				
			||||||
 | 
					                    <clr-signpost-content [clrPosition]="'bottom-middle'" *clrIfOpen>
 | 
				
			||||||
 | 
					                  <div style="text-align: center;"><b >Are you sure?</b></div>
 | 
				
			||||||
 | 
					                      <button class="btn btn-outline" [clrSignpostTrigger]="false">cancel</button> 
 | 
				
			||||||
 | 
					                      <button class="btn btn-primary"  (click)="deleteRowimageupload_field(i,attach.id)" >Delete</button>
 | 
				
			||||||
 | 
					                    </clr-signpost-content>
 | 
				
			||||||
 | 
					                  </clr-signpost>
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					              </td>
 | 
				
			||||||
 | 
					            </tr>
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					        </tbody>
 | 
				
			||||||
 | 
					          <button type="button" class="btn btn-primary button1" style="margin-left: 20px;" (click)="onAddLinesimageupload_field()">
 | 
				
			||||||
 | 
					            <clr-icon shape="plus"></clr-icon>
 | 
				
			||||||
 | 
					          </button>
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					        </table> </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<h6> List of audio_field</h6>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <div  class="clr-row" style="margin-top: 10px;">
 | 
				
			||||||
 | 
					    <table class="table">
 | 
				
			||||||
 | 
					        <thead>
 | 
				
			||||||
 | 
					         <tr>
 | 
				
			||||||
 | 
					         <th>No</th>
 | 
				
			||||||
 | 
					          <th> File</th>
 | 
				
			||||||
 | 
					         <th>File Name</th>
 | 
				
			||||||
 | 
					           <th>Preview</th>
 | 
				
			||||||
 | 
					           <th>Cancel</th>
 | 
				
			||||||
 | 
					            </tr>
 | 
				
			||||||
 | 
					          </thead>
 | 
				
			||||||
 | 
					          <tbody >
 | 
				
			||||||
 | 
					            <tr *ngFor="let attach of FileDataaudio_field; let i=index">
 | 
				
			||||||
 | 
					              <td style="width: 70px;"><input type="text" class="clr-input"  value={{i+1}} [readonly]="true">  </td>
 | 
				
			||||||
 | 
					              <td><input type="file" (change)="onFileChangedaudio_field($event, i)"  accept="audio/*" />
 | 
				
			||||||
 | 
					               </td>
 | 
				
			||||||
 | 
					             <td>{{attach.uploadedfile_name}}</td>
 | 
				
			||||||
 | 
					              <td >  <audio *ngIf="attach.filePreview" [src]="attach.filePreview" controls></audio></td>
 | 
				
			||||||
 | 
					              <td>
 | 
				
			||||||
 | 
					                  <clr-signpost style="padding-right: 10px;">
 | 
				
			||||||
 | 
					                      <clr-icon shape="trash" class="is-error" aria-label="Icon Button Trigger" clrSignpostTrigger></clr-icon>
 | 
				
			||||||
 | 
					                 
 | 
				
			||||||
 | 
					                    <clr-signpost-content [clrPosition]="'bottom-middle'" *clrIfOpen>
 | 
				
			||||||
 | 
					                  <div style="text-align: center;"><b >Are you sure?</b></div>
 | 
				
			||||||
 | 
					                      <button class="btn btn-outline" [clrSignpostTrigger]="false">cancel</button> 
 | 
				
			||||||
 | 
					                      <button class="btn btn-primary"  (click)="deleteRowaudio_field(i,attach.id)" >Delete</button>
 | 
				
			||||||
 | 
					                    </clr-signpost-content>
 | 
				
			||||||
 | 
					                  </clr-signpost>
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					              </td>
 | 
				
			||||||
 | 
					            </tr>
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					        </tbody>
 | 
				
			||||||
 | 
					          <button type="button" class="btn btn-primary button1" style="margin-left: 20px;" (click)="onAddLinesaudio_field()">
 | 
				
			||||||
 | 
					            <clr-icon shape="plus"></clr-icon>
 | 
				
			||||||
 | 
					          </button>
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					        </table> </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<h6> List of video_field</h6>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <div  class="clr-row" style="margin-top: 10px;">
 | 
				
			||||||
 | 
					    <table class="table">
 | 
				
			||||||
 | 
					        <thead>
 | 
				
			||||||
 | 
					         <tr>
 | 
				
			||||||
 | 
					         <th>No</th>
 | 
				
			||||||
 | 
					          <th> File</th>
 | 
				
			||||||
 | 
					         <th>File Name</th>
 | 
				
			||||||
 | 
					           <th>Preview</th>
 | 
				
			||||||
 | 
					           <th>Cancel</th>
 | 
				
			||||||
 | 
					            </tr>
 | 
				
			||||||
 | 
					          </thead>
 | 
				
			||||||
 | 
					          <tbody >
 | 
				
			||||||
 | 
					            <tr *ngFor="let attach of FileDatavideo_field; let i=index">
 | 
				
			||||||
 | 
					              <td style="width: 70px;"><input type="text" class="clr-input"  value={{i+1}} [readonly]="true">  </td>
 | 
				
			||||||
 | 
					              <td><input type="file" (change)="onFileChangedvideo_field($event, i)"  accept="video/*" />
 | 
				
			||||||
 | 
					               </td>
 | 
				
			||||||
 | 
					             <td>{{attach.uploadedfile_name}}</td>
 | 
				
			||||||
 | 
					              <td >            <video *ngIf="attach.filePreview" [src]="attach.filePreview" width="100px" height="100px" controls></video></td>
 | 
				
			||||||
 | 
					              <td>
 | 
				
			||||||
 | 
					                  <clr-signpost style="padding-right: 10px;">
 | 
				
			||||||
 | 
					                      <clr-icon shape="trash" class="is-error" aria-label="Icon Button Trigger" clrSignpostTrigger></clr-icon>
 | 
				
			||||||
 | 
					                 
 | 
				
			||||||
 | 
					                    <clr-signpost-content [clrPosition]="'bottom-middle'" *clrIfOpen>
 | 
				
			||||||
 | 
					                  <div style="text-align: center;"><b >Are you sure?</b></div>
 | 
				
			||||||
 | 
					                      <button class="btn btn-outline" [clrSignpostTrigger]="false">cancel</button> 
 | 
				
			||||||
 | 
					                      <button class="btn btn-primary"  (click)="deleteRowvideo_field(i,attach.id)" >Delete</button>
 | 
				
			||||||
 | 
					                    </clr-signpost-content>
 | 
				
			||||||
 | 
					                  </clr-signpost>
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					              </td>
 | 
				
			||||||
 | 
					            </tr>
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					        </tbody>
 | 
				
			||||||
 | 
					          <button type="button" class="btn btn-primary button1" style="margin-left: 20px;" (click)="onAddLinesvideo_field()">
 | 
				
			||||||
 | 
					            <clr-icon shape="plus"></clr-icon>
 | 
				
			||||||
 | 
					          </button>
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					        </table> </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<!-- form code start -->
 | 
				
			||||||
 | 
					  <div *ngIf="checkFormCode">
 | 
				
			||||||
 | 
					    <h4 style="font-weight: 300;display: inline;">Extension</h4>
 | 
				
			||||||
 | 
					    <br>
 | 
				
			||||||
 | 
					    <hr>
 | 
				
			||||||
 | 
					    <div class="clr-row">
 | 
				
			||||||
 | 
					      <div class="clr-col-4" *ngFor="let field of additionalFieldsFromBackend">
 | 
				
			||||||
 | 
					        <ng-container *ngIf="field.formCode === formcode" [ngSwitch]="field.fieldType">
 | 
				
			||||||
 | 
					          <!-- Text Input -->    <label  *ngSwitchCase="'text'">{{ field.fieldName }}</label>
 | 
				
			||||||
 | 
					          <input *ngSwitchCase="'text'" [type]="field.fieldType"  name="{{ field.extValue }}" [(ngModel)]="rowSelected[field.extValue]" class="clr-input" />
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					          <!-- Date Input -->    <label  *ngSwitchCase="'date'">{{ field.fieldName }}</label>
 | 
				
			||||||
 | 
					          <input *ngSwitchCase="'date'" [type]="field.fieldType"  name="{{ field.extValue }}" [(ngModel)]="rowSelected[field.extValue]"  class="clr-input" />
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					          <!-- Textarea -->    <label  *ngSwitchCase="'textarea'">{{ field.fieldName }}</label>
 | 
				
			||||||
 | 
					          <textarea *ngSwitchCase="'textarea'"  name="{{ field.extValue }}" [(ngModel)]="rowSelected[field.extValue]"  col="10" row="2"></textarea>
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					          <!-- Checkbox -->    <label  *ngSwitchCase="'checkbox'">{{ field.fieldName }}</label><br>
 | 
				
			||||||
 | 
					          <input *ngSwitchCase="'checkbox'" [type]="field.fieldType" name="{{ field.extValue }}" [(ngModel)]="rowSelected[field.extValue]"  class="clr-checkbox" />
 | 
				
			||||||
 | 
					        </ng-container>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <!-- form code end -->  <div class="modal-footer">
 | 
				
			||||||
 | 
					      <button type="button" class="btn btn-outline" (click)="modalEdit = false">Cancel</button>
 | 
				
			||||||
 | 
					      <button type="submit" class="btn btn-primary"  (click)="onUpdate(rowSelected.id)">Update</button>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					    </form>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</clr-modal>
 | 
				
			||||||
 | 
					<clr-modal [(clrModalOpen)]="modaldelete" [clrModalSize]="'lg'" [clrModalStaticBackdrop]="true">
 | 
				
			||||||
 | 
					  <div class="modal-body" *ngIf="rowSelected.id">
 | 
				
			||||||
 | 
					    <h1 class="delete">Are You Sure Want to delete?</h1>
 | 
				
			||||||
 | 
					    <h2 class="heading">{{rowSelected.id}}</h2>
 | 
				
			||||||
 | 
					    <div class="modal-footer">
 | 
				
			||||||
 | 
					      <button type="button" class="btn btn-outline" (click)="modaldelete = false">Cancel</button>
 | 
				
			||||||
 | 
					    <button type="button" (click)="delete(rowSelected.id)" class="btn btn-primary" >Delete</button>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</clr-modal>
 | 
				
			||||||
 | 
					<!-- ADD FORM ..... -->
 | 
				
			||||||
 | 
					<clr-modal [(clrModalOpen)]="modalAdd" [clrModalSize]="'lg'" [clrModalStaticBackdrop]="true">
 | 
				
			||||||
 | 
					  <h3 class="modal-title">Add Testa 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <!-- aeroplane icon -->
 | 
				
			||||||
 | 
					           
 | 
				
			||||||
 | 
					    <a *ngIf="userrole?.includes('ADMIN')" style="float: right;" href="javascript:void(0)" role="tooltip" aria-haspopup="true"
 | 
				
			||||||
 | 
					      class="tooltip tooltip-sm tooltip-bottom-left">
 | 
				
			||||||
 | 
					      <a id="build_extension" [routerLink]="['../extension/all']" [queryParams]="{ formCode: 'Testa_formCode' }">
 | 
				
			||||||
 | 
					        <clr-icon shape="airplane" size="32"></clr-icon>
 | 
				
			||||||
 | 
					      </a>
 | 
				
			||||||
 | 
					      <span class="tooltip-content">Form Extension</span>
 | 
				
			||||||
 | 
					    </a> </h3>
 | 
				
			||||||
 | 
					  <div class="modal-body">
 | 
				
			||||||
 | 
					     <form [formGroup]="entryForm" >
 | 
				
			||||||
 | 
					   <div class="clr-row" style="height: fit-content;">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<div class="clr-col-sm-12">
 | 
				
			||||||
 | 
					 <label>  Name</label>
 | 
				
			||||||
 | 
					 <input class="clr-input"  type="text"  formControlName="name" />       
 | 
				
			||||||
 | 
					 </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<!-- multiselect checkbox field start -->
 | 
				
			||||||
 | 
					     <div class="clr-col-sm-12">       
 | 
				
			||||||
 | 
							<label> checkbosxs</label>
 | 
				
			||||||
 | 
						    <div class="clr-form-control" style="margin-top: 5px;margin-bottom: 10px;">
 | 
				
			||||||
 | 
						      <div class="clr-control-container">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                       
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
								<div class="clr-checkbox-wrapper">           
 | 
				
			||||||
 | 
									<input type="checkbox" id="a" formControlName="a"  class="clr-checkbox" />       
 | 
				
			||||||
 | 
									    <label for="a" class="clr-control-label">a</label>  </div>
 | 
				
			||||||
 | 
						                            
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
								<div class="clr-checkbox-wrapper">           
 | 
				
			||||||
 | 
									<input type="checkbox" id="b" formControlName="b"  class="clr-checkbox" />       
 | 
				
			||||||
 | 
									    <label for="b" class="clr-control-label">b</label>  </div>
 | 
				
			||||||
 | 
						                            
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
								<div class="clr-checkbox-wrapper">           
 | 
				
			||||||
 | 
									<input type="checkbox" id="c" formControlName="c"  class="clr-checkbox" />       
 | 
				
			||||||
 | 
									    <label for="c" class="clr-control-label">c</label>  </div>
 | 
				
			||||||
 | 
						                            
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 </div>       </div>     </div>
 | 
				
			||||||
 | 
						              <!-- multiselect checkbox field end -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 </div> 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<h6> List of fileupload_field</h6>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 <div  class="clr-row" style="margin-top: 10px;">
 | 
				
			||||||
 | 
					   <table class="table">
 | 
				
			||||||
 | 
					       <thead>
 | 
				
			||||||
 | 
					        <tr>
 | 
				
			||||||
 | 
					        <th>No</th>
 | 
				
			||||||
 | 
					         <th> File</th>
 | 
				
			||||||
 | 
					         <th>File Name</th>
 | 
				
			||||||
 | 
					          <th>Preview</th>
 | 
				
			||||||
 | 
					          <th>Cancel</th>
 | 
				
			||||||
 | 
					           </tr>
 | 
				
			||||||
 | 
					         </thead>
 | 
				
			||||||
 | 
					         <tbody >
 | 
				
			||||||
 | 
					           <tr *ngFor="let attach of FileDatafileupload_field; let i=index">
 | 
				
			||||||
 | 
					             <td style="width: 70px;"><input type="text" class="clr-input"  value={{i+1}} [readonly]="true">  </td>
 | 
				
			||||||
 | 
					             <td><input type="file" (change)="onFileChangedfileupload_field($event, i)"  accept = "application/pdf,.csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" /><!--accept=".pdf,.doc,.docx,.jpg,.msg"-->
 | 
				
			||||||
 | 
					              </td>
 | 
				
			||||||
 | 
					         <td>{{attach.uploadedfile_name}}</td>
 | 
				
			||||||
 | 
					             <td >  <img [src]="attach.filePreview" alt="File Preview"  [ngModelOptions]="{standalone: true}" name="filePreview" width="100px" height="100px"></td>
 | 
				
			||||||
 | 
					             <td>
 | 
				
			||||||
 | 
					               <a  (click)="deleteRowfileupload_field(i)">
 | 
				
			||||||
 | 
					                 <clr-icon shape="trash" class="is-error"></clr-icon>
 | 
				
			||||||
 | 
					               </a>
 | 
				
			||||||
 | 
					             </td>
 | 
				
			||||||
 | 
					           </tr>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       </tbody>
 | 
				
			||||||
 | 
					         <button type="button" class="btn btn-primary button1" style="margin-left: 20px;" (click)="onAddLinesfileupload_field()">
 | 
				
			||||||
 | 
					           <clr-icon shape="plus"></clr-icon>
 | 
				
			||||||
 | 
					         </button>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       </table> </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<h6> List of imageupload_field</h6>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 <div  class="clr-row" style="margin-top: 10px;">
 | 
				
			||||||
 | 
					   <table class="table">
 | 
				
			||||||
 | 
					       <thead>
 | 
				
			||||||
 | 
					        <tr>
 | 
				
			||||||
 | 
					        <th>No</th>
 | 
				
			||||||
 | 
					         <th> File</th>
 | 
				
			||||||
 | 
					         <th>File Name</th>
 | 
				
			||||||
 | 
					          <th>Preview</th>
 | 
				
			||||||
 | 
					          <th>Cancel</th>
 | 
				
			||||||
 | 
					           </tr>
 | 
				
			||||||
 | 
					         </thead>
 | 
				
			||||||
 | 
					         <tbody >
 | 
				
			||||||
 | 
					           <tr *ngFor="let attach of FileDataimageupload_field; let i=index">
 | 
				
			||||||
 | 
					             <td style="width: 70px;"><input type="text" class="clr-input"  value={{i+1}} [readonly]="true">  </td>
 | 
				
			||||||
 | 
					             <td><input type="file" (change)="onFileChangedimageupload_field($event, i)"  accept="image/*" /><!--accept=".pdf,.doc,.docx,.jpg,.msg"-->
 | 
				
			||||||
 | 
					              </td>
 | 
				
			||||||
 | 
					         <td>{{attach.uploadedfile_name}}</td>
 | 
				
			||||||
 | 
					             <td >  <img [src]="attach.filePreview" alt="File Preview"  [ngModelOptions]="{standalone: true}" name="filePreview" width="100px" height="100px"></td>
 | 
				
			||||||
 | 
					             <td>
 | 
				
			||||||
 | 
					               <a  (click)="deleteRowimageupload_field(i)">
 | 
				
			||||||
 | 
					                 <clr-icon shape="trash" class="is-error"></clr-icon>
 | 
				
			||||||
 | 
					               </a>
 | 
				
			||||||
 | 
					             </td>
 | 
				
			||||||
 | 
					           </tr>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       </tbody>
 | 
				
			||||||
 | 
					         <button type="button" class="btn btn-primary button1" style="margin-left: 20px;" (click)="onAddLinesimageupload_field()">
 | 
				
			||||||
 | 
					           <clr-icon shape="plus"></clr-icon>
 | 
				
			||||||
 | 
					         </button>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       </table> </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<h6> List of audio_field</h6>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 <div  class="clr-row" style="margin-top: 10px;">
 | 
				
			||||||
 | 
					   <table class="table">
 | 
				
			||||||
 | 
					       <thead>
 | 
				
			||||||
 | 
					        <tr>
 | 
				
			||||||
 | 
					        <th>No</th>
 | 
				
			||||||
 | 
					         <th> File</th>
 | 
				
			||||||
 | 
					         <th>File Name</th>
 | 
				
			||||||
 | 
					          <th>Preview</th>
 | 
				
			||||||
 | 
					          <th>Cancel</th>
 | 
				
			||||||
 | 
					           </tr>
 | 
				
			||||||
 | 
					         </thead>
 | 
				
			||||||
 | 
					         <tbody >
 | 
				
			||||||
 | 
					           <tr *ngFor="let attach of FileDataaudio_field; let i=index">
 | 
				
			||||||
 | 
					             <td style="width: 70px;"><input type="text" class="clr-input"  value={{i+1}} [readonly]="true">  </td>
 | 
				
			||||||
 | 
					             <td><input type="file" (change)="onFileChangedaudio_field($event, i)"  accept="audio/*" /><!--accept=".pdf,.doc,.docx,.jpg,.msg"-->
 | 
				
			||||||
 | 
					              </td>
 | 
				
			||||||
 | 
					         <td>{{attach.uploadedfile_name}}</td>
 | 
				
			||||||
 | 
					             <td >  <audio *ngIf="attach.filePreview" [src]="attach.filePreview" controls></audio></td>
 | 
				
			||||||
 | 
					             <td>
 | 
				
			||||||
 | 
					               <a  (click)="deleteRowaudio_field(i)">
 | 
				
			||||||
 | 
					                 <clr-icon shape="trash" class="is-error"></clr-icon>
 | 
				
			||||||
 | 
					               </a>
 | 
				
			||||||
 | 
					             </td>
 | 
				
			||||||
 | 
					           </tr>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       </tbody>
 | 
				
			||||||
 | 
					         <button type="button" class="btn btn-primary button1" style="margin-left: 20px;" (click)="onAddLinesaudio_field()">
 | 
				
			||||||
 | 
					           <clr-icon shape="plus"></clr-icon>
 | 
				
			||||||
 | 
					         </button>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       </table> </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<h6> List of video_field</h6>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 <div  class="clr-row" style="margin-top: 10px;">
 | 
				
			||||||
 | 
					   <table class="table">
 | 
				
			||||||
 | 
					       <thead>
 | 
				
			||||||
 | 
					        <tr>
 | 
				
			||||||
 | 
					        <th>No</th>
 | 
				
			||||||
 | 
					         <th> File</th>
 | 
				
			||||||
 | 
					         <th>File Name</th>
 | 
				
			||||||
 | 
					          <th>Preview</th>
 | 
				
			||||||
 | 
					          <th>Cancel</th>
 | 
				
			||||||
 | 
					           </tr>
 | 
				
			||||||
 | 
					         </thead>
 | 
				
			||||||
 | 
					         <tbody >
 | 
				
			||||||
 | 
					           <tr *ngFor="let attach of FileDatavideo_field; let i=index">
 | 
				
			||||||
 | 
					             <td style="width: 70px;"><input type="text" class="clr-input"  value={{i+1}} [readonly]="true">  </td>
 | 
				
			||||||
 | 
					             <td><input type="file" (change)="onFileChangedvideo_field($event, i)"  accept="video/*" /><!--accept=".mp4,.mpeg4"-->
 | 
				
			||||||
 | 
					              </td>
 | 
				
			||||||
 | 
					         <td>{{attach.uploadedfile_name}}</td>
 | 
				
			||||||
 | 
					             <td >            <video *ngIf="attach.filePreview" [src]="attach.filePreview" width="100px" height="100px" controls></video></td>
 | 
				
			||||||
 | 
					             <td>
 | 
				
			||||||
 | 
					               <a  (click)="deleteRowvideo_field(i)">
 | 
				
			||||||
 | 
					                 <clr-icon shape="trash" class="is-error"></clr-icon>
 | 
				
			||||||
 | 
					               </a>
 | 
				
			||||||
 | 
					             </td>
 | 
				
			||||||
 | 
					           </tr>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       </tbody>
 | 
				
			||||||
 | 
					         <button type="button" class="btn btn-primary button1" style="margin-left: 20px;" (click)="onAddLinesvideo_field()">
 | 
				
			||||||
 | 
					           <clr-icon shape="plus"></clr-icon>
 | 
				
			||||||
 | 
					         </button>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       </table> </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      <!-- form code start -->
 | 
				
			||||||
 | 
					      <div *ngIf="checkFormCode">
 | 
				
			||||||
 | 
					        <h4 style="font-weight: 300;display: inline;">Extension</h4>
 | 
				
			||||||
 | 
					        <br>
 | 
				
			||||||
 | 
					        <hr>
 | 
				
			||||||
 | 
					        <div class="clr-row">
 | 
				
			||||||
 | 
					          <div class="clr-col-4" *ngFor="let field of additionalFieldsFromBackend">
 | 
				
			||||||
 | 
					            <ng-container *ngIf="field.formCode === formcode" [ngSwitch]="field.fieldType">
 | 
				
			||||||
 | 
					              <!-- Text Input --> <label *ngSwitchCase="'text'">{{ field.fieldName }}</label>
 | 
				
			||||||
 | 
					              <input *ngSwitchCase="'text'" [type]="field.fieldType" [formControlName]="field.extValue"
 | 
				
			||||||
 | 
					                class="clr-input" />
 | 
				
			||||||
 | 
					              <!-- Date Input --> <label *ngSwitchCase="'date'">{{ field.fieldName }}</label>
 | 
				
			||||||
 | 
					              <input *ngSwitchCase="'date'" [type]="field.fieldType" [formControlName]="field.extValue"
 | 
				
			||||||
 | 
					                class="clr-input" />
 | 
				
			||||||
 | 
					              <!-- Textarea --> <label *ngSwitchCase="'textarea'">{{ field.fieldName }}</label>
 | 
				
			||||||
 | 
					              <textarea *ngSwitchCase="'textarea'" [formControlName]="field.extValue" col="10" row="2"></textarea>
 | 
				
			||||||
 | 
					              <!-- Checkbox --> <label *ngSwitchCase="'checkbox'">{{ field.fieldName }}</label><br>
 | 
				
			||||||
 | 
					              <input *ngSwitchCase="'checkbox'" [type]="field.fieldType" [formControlName]="field.extValue"
 | 
				
			||||||
 | 
					                class="clr-checkbox" />
 | 
				
			||||||
 | 
					            </ng-container>
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					      <!-- form code end --> <div class="modal-footer">
 | 
				
			||||||
 | 
					<button type="button" class="btn btn-outline" (click)="modalAdd = false">Cancel</button>
 | 
				
			||||||
 | 
					        <button type="submit" class="btn btn-primary" (click)="onSubmit()">ADD</button>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					</form>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</clr-modal>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <!-- htmlpopup -->
 | 
				
			||||||
@ -0,0 +1,78 @@
 | 
				
			|||||||
 | 
					//@import "../../../../assets/scss/var";
 | 
				
			||||||
 | 
					.s-info-bar {
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  flex-direction: row;
 | 
				
			||||||
 | 
					  justify-content: space-between;
 | 
				
			||||||
 | 
					  button {
 | 
				
			||||||
 | 
					    outline: none;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.delete,.heading{
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					  color: red;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.entry-pg {
 | 
				
			||||||
 | 
					  width: 750px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.button1::after {
 | 
				
			||||||
 | 
					  content: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.button1:hover::after {
 | 
				
			||||||
 | 
					  content: "ADD ROWS";
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.section {
 | 
				
			||||||
 | 
					  background-color: #dddddd;
 | 
				
			||||||
 | 
					  height: 40px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.section p {
 | 
				
			||||||
 | 
					  //color: white;
 | 
				
			||||||
 | 
					  padding: 10px;
 | 
				
			||||||
 | 
					  font-size: 18px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.clr-input {
 | 
				
			||||||
 | 
					  color: #212529;
 | 
				
			||||||
 | 
					  border: 1px solid #ced4da;
 | 
				
			||||||
 | 
					  border-radius: 0.25rem;
 | 
				
			||||||
 | 
					  padding: 0.75rem 0.75rem;
 | 
				
			||||||
 | 
					  margin-top: 3px;
 | 
				
			||||||
 | 
					  width: 100%;
 | 
				
			||||||
 | 
					  margin-bottom: 10px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.clr-file {
 | 
				
			||||||
 | 
					  color: #212529;
 | 
				
			||||||
 | 
					  border: 1px solid #ced4da;
 | 
				
			||||||
 | 
					  border-radius: 0.25rem;
 | 
				
			||||||
 | 
					  //padding: 0.6rem 0.75rem;
 | 
				
			||||||
 | 
					  margin-top: 3px;
 | 
				
			||||||
 | 
					  width: 100%;
 | 
				
			||||||
 | 
					  margin-bottom: 10px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.center {
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					select{
 | 
				
			||||||
 | 
					  width: 100%;
 | 
				
			||||||
 | 
					  margin-top: 3px;
 | 
				
			||||||
 | 
					  padding: 5px 5px;
 | 
				
			||||||
 | 
					  border: 1px solid #ccc;
 | 
				
			||||||
 | 
					  border-radius: 4px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					input[type=text],[type=date],[type=number],textarea {
 | 
				
			||||||
 | 
					  width: 100%;
 | 
				
			||||||
 | 
					  padding: 15px 15px;
 | 
				
			||||||
 | 
					  background-color:rgb(255, 255, 255);
 | 
				
			||||||
 | 
					 // margin: 8px 0;
 | 
				
			||||||
 | 
					  display: inline-block;
 | 
				
			||||||
 | 
					  border: 1px solid #ccc;
 | 
				
			||||||
 | 
					  border-radius: 4px;
 | 
				
			||||||
 | 
					  box-sizing: border-box;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.error_mess {
 | 
				
			||||||
 | 
					  color: red;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,572 @@
 | 
				
			|||||||
 | 
					import { Component, OnInit } from '@angular/core';
 | 
				
			||||||
 | 
					import { ToastrService } from 'ngx-toastr';
 | 
				
			||||||
 | 
					import { AlertService } from 'src/app/services/alert.service';
 | 
				
			||||||
 | 
					import { Testaservice} from './Testa.service';
 | 
				
			||||||
 | 
					import { AbstractControl, FormArray, FormBuilder, FormGroup, Validators, ValidationErrors } from '@angular/forms';
 | 
				
			||||||
 | 
					import { ExtensionService } from 'src/app/services/fnd/extension.service';
 | 
				
			||||||
 | 
					import { DashboardContentModel2 } from 'src/app/models/builder/dashboard'; 
 | 
				
			||||||
 | 
					import { Testacardvariable } from './Testa_cardvariable';
 | 
				
			||||||
 | 
					import { UserInfoService } from 'src/app/services/user-info.service';
 | 
				
			||||||
 | 
					declare var JsBarcode: any; 
 | 
				
			||||||
 | 
					@Component({
 | 
				
			||||||
 | 
					  selector: 'app-Testa',
 | 
				
			||||||
 | 
					  templateUrl: './Testa.component.html',
 | 
				
			||||||
 | 
					  styleUrls: ['./Testa.component.scss']
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					export class TestaComponent implements OnInit {
 | 
				
			||||||
 | 
					  cardButton = Testacardvariable.cardButton;
 | 
				
			||||||
 | 
					  cardmodeldata = Testacardvariable.cardmodeldata;
 | 
				
			||||||
 | 
					  public dashboardArray: DashboardContentModel2[];
 | 
				
			||||||
 | 
					  isCardview = Testacardvariable.cardButton;
 | 
				
			||||||
 | 
					  cardmodal;  changeView(){
 | 
				
			||||||
 | 
					  this.isCardview = !this.isCardview;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					    beforeText(fieldtext: string): string { // Extract the text before the first '<'
 | 
				
			||||||
 | 
					    const index = fieldtext.indexOf('<');
 | 
				
			||||||
 | 
					    return index !== -1 ? fieldtext.substring(0, index) : fieldtext;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  afterText(fieldtext: string): string { // Extract the text after the last '>'
 | 
				
			||||||
 | 
					    const index = fieldtext.lastIndexOf('>');
 | 
				
			||||||
 | 
					    return index !== -1 ? fieldtext.substring(index + 1) : '';
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  transform(fieldtext: string): string {
 | 
				
			||||||
 | 
					    const match = fieldtext.match(/<([^>]*)>/);
 | 
				
			||||||
 | 
					    return match ? match[1] : ''; // Extract the text between '<' and '>'
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					 userrole;
 | 
				
			||||||
 | 
					  rowSelected :any= {};
 | 
				
			||||||
 | 
					  modaldelete=false;
 | 
				
			||||||
 | 
					  modalEdit=false;
 | 
				
			||||||
 | 
					  modalAdd= false;
 | 
				
			||||||
 | 
					  public entryForm: FormGroup;
 | 
				
			||||||
 | 
					  loading = false;
 | 
				
			||||||
 | 
					  product;
 | 
				
			||||||
 | 
					  modalOpenedforNewLine = false;
 | 
				
			||||||
 | 
					  newLine:any;
 | 
				
			||||||
 | 
					 additionalFieldsFromBackend: any[] = [];
 | 
				
			||||||
 | 
					  formcode = 'Testa_formCode'
 | 
				
			||||||
 | 
					tableName = 'Testa';  checkFormCode; selected: any[] = []; constructor(
 | 
				
			||||||
 | 
					    private extensionService: ExtensionService,
 | 
				
			||||||
 | 
					private userInfoService:UserInfoService,
 | 
				
			||||||
 | 
					    private mainService:Testaservice,
 | 
				
			||||||
 | 
					    private alertService: AlertService,
 | 
				
			||||||
 | 
					    private toastr: ToastrService,
 | 
				
			||||||
 | 
					    private _fb: FormBuilder,
 | 
				
			||||||
 | 
					  ) { }
 | 
				
			||||||
 | 
					// component button 
 | 
				
			||||||
 | 
					  ngOnInit(): void {
 | 
				
			||||||
 | 
					    if(this.cardmodeldata !== ''){
 | 
				
			||||||
 | 
					     this.cardmodal = JSON.parse(this.cardmodeldata);
 | 
				
			||||||
 | 
					    this.dashboardArray = this.cardmodal.dashboard.slice();
 | 
				
			||||||
 | 
					    console.log(this.dashboardArray)
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    this.userrole=this.userInfoService.getRoles();
 | 
				
			||||||
 | 
					    this.getData();
 | 
				
			||||||
 | 
					    this.entryForm = this._fb.group({
 | 
				
			||||||
 | 
					name : [null],
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					a:[false],
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					b:[false],
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					c:[false],
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  }); // component_button200
 | 
				
			||||||
 | 
					 // form code start
 | 
				
			||||||
 | 
					    this.extensionService.getJsonObjectsByFormCodeList(this.formcode).subscribe(data => {
 | 
				
			||||||
 | 
					      console.log(data);
 | 
				
			||||||
 | 
					      const jsonArray = data.map((str) => JSON.parse(str));
 | 
				
			||||||
 | 
					      this.additionalFieldsFromBackend = jsonArray;
 | 
				
			||||||
 | 
					      this.checkFormCode = this.additionalFieldsFromBackend.some(field => field.formCode === "Testa_formCode");
 | 
				
			||||||
 | 
					      console.log(this.checkFormCode);
 | 
				
			||||||
 | 
					      console.log(this.additionalFieldsFromBackend);
 | 
				
			||||||
 | 
					      if (this.additionalFieldsFromBackend && this.additionalFieldsFromBackend.length > 0) {
 | 
				
			||||||
 | 
					        this.additionalFieldsFromBackend.forEach(field => {
 | 
				
			||||||
 | 
					          if (field.formCode === this.formcode) {
 | 
				
			||||||
 | 
					            if (!this.entryForm.contains(field.extValue)) {
 | 
				
			||||||
 | 
					              // Add the control only if it doesn't exist in the form
 | 
				
			||||||
 | 
					              this.entryForm.addControl(field.extValue, this._fb.control(field.fieldValue));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					    console.log(this.entryForm.value);
 | 
				
			||||||
 | 
					    // form code end 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FileDataImageupload_field: any[];
 | 
				
			||||||
 | 
					  selectedImageupload_field: any[];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FileDataAudio_field: any[];
 | 
				
			||||||
 | 
					  selectedAudio_field: any[];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FileDataVideo_field: any[];
 | 
				
			||||||
 | 
					  selectedVideo_field: any[];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 error; 
 | 
				
			||||||
 | 
					  getData() {
 | 
				
			||||||
 | 
					    this.mainService.getAll().subscribe((data) => {
 | 
				
			||||||
 | 
					      console.log(data);
 | 
				
			||||||
 | 
					      this.product = data;
 | 
				
			||||||
 | 
					 if(this.product.length==0){
 | 
				
			||||||
 | 
					        this.error="No Data Available"
 | 
				
			||||||
 | 
					     }   
 | 
				
			||||||
 | 
					    },(error) => {
 | 
				
			||||||
 | 
					      console.log(error);
 | 
				
			||||||
 | 
					      if(error){
 | 
				
			||||||
 | 
					       this.error="Server Error";
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  onEdit(row) {
 | 
				
			||||||
 | 
					    this.rowSelected = row;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    this.selectedfileupload_field = [];
 | 
				
			||||||
 | 
					    this.mainService.uploadfilegetByIdfileupload_field(row.id,this.tableName).subscribe(uploaddata =>{
 | 
				
			||||||
 | 
					      console.log(uploaddata);
 | 
				
			||||||
 | 
					      this.FileDatafileupload_field = uploaddata;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    this.selectedimageupload_field = [];
 | 
				
			||||||
 | 
					    this.mainService.uploadImageupload_fieldgetById(row.id,this.tableName).subscribe(uploaddata =>{
 | 
				
			||||||
 | 
					      console.log(uploaddata);
 | 
				
			||||||
 | 
					      this.FileDataimageupload_field = uploaddata;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    this.selectedaudio_field = [];
 | 
				
			||||||
 | 
					    this.mainService.uploadAudio_fieldgetById(row.id,this.tableName).subscribe(uploaddata =>{
 | 
				
			||||||
 | 
					      console.log(uploaddata);
 | 
				
			||||||
 | 
					      this.FileDataaudio_field = uploaddata;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    this.selectedvideo_field = [];
 | 
				
			||||||
 | 
					    this.mainService.uploadVideo_fieldgetById(row.id,this.tableName).subscribe(uploaddata =>{
 | 
				
			||||||
 | 
					      console.log(uploaddata);
 | 
				
			||||||
 | 
					      this.FileDatavideo_field = uploaddata;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    this.modalEdit = true;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					   onDelete(row) {
 | 
				
			||||||
 | 
					    this.rowSelected = row;
 | 
				
			||||||
 | 
					     this.modaldelete=true;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  delete(id)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    this.modaldelete = false;
 | 
				
			||||||
 | 
					    console.log("in delete  "+id);
 | 
				
			||||||
 | 
					    this.mainService.delete(id).subscribe(
 | 
				
			||||||
 | 
					      (data) => {
 | 
				
			||||||
 | 
					        console.log(data);
 | 
				
			||||||
 | 
					        this.ngOnInit();
 | 
				
			||||||
 | 
					  if (data) {				      this.toastr.success('Deleted successfully');      }
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					    onUpdate(id) {
 | 
				
			||||||
 | 
					    this.modalEdit = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //console.log("in update");
 | 
				
			||||||
 | 
					    console.log("id  " + id);
 | 
				
			||||||
 | 
					    console.log(this.rowSelected);
 | 
				
			||||||
 | 
					    //console.log("out update");
 | 
				
			||||||
 | 
					    this.mainService.update(id, this.rowSelected).subscribe(
 | 
				
			||||||
 | 
					      (data) => {
 | 
				
			||||||
 | 
					        console.log(data);
 | 
				
			||||||
 | 
					        if (data || data.status >= 200 && data.status <= 299) {
 | 
				
			||||||
 | 
					          this.toastr.success("Update Successfully");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					setTimeout(() => {
 | 
				
			||||||
 | 
					      this.ngOnInit();
 | 
				
			||||||
 | 
					    }, 500);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for (let i = 0; i < this.selectedfileupload_field.length; i++){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  this.mainService.uploadfilefileupload_field(data.id,this.tableName,this.selectedfileupload_field[i]).subscribe(uploaddata =>{
 | 
				
			||||||
 | 
					    console.log(uploaddata);
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for (let i = 0; i < this.selectedimageupload_field.length; i++){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  this.mainService.uploadImageupload_field(data.id,this.tableName,this.selectedimageupload_field[i]).subscribe(uploaddata =>{
 | 
				
			||||||
 | 
					    console.log(uploaddata);
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for (let i = 0; i < this.selectedaudio_field.length; i++){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  this.mainService.uploadAudio_field(data.id,this.tableName,this.selectedaudio_field[i]).subscribe(uploaddata =>{
 | 
				
			||||||
 | 
					    console.log(uploaddata);
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for (let i = 0; i < this.selectedvideo_field.length; i++){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  this.mainService.uploadVideo_field(data.id,this.tableName,this.selectedvideo_field[i]).subscribe(uploaddata =>{
 | 
				
			||||||
 | 
					    console.log(uploaddata);
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      }, (error) => {
 | 
				
			||||||
 | 
					        console.log(error);
 | 
				
			||||||
 | 
					        if (error.status >= 200 && error.status <= 299) {
 | 
				
			||||||
 | 
					          // this.toastr.success("update Succesfully");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (error.status >= 400 && error.status <= 499) {
 | 
				
			||||||
 | 
					          this.toastr.error("Not Updated");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (error.status >= 500 && error.status <= 599) {
 | 
				
			||||||
 | 
					          this.toastr.error("Not Updated");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    setTimeout(() => {
 | 
				
			||||||
 | 
					      this.ngOnInit();
 | 
				
			||||||
 | 
					    }, 500);
 | 
				
			||||||
 | 
					  } 
 | 
				
			||||||
 | 
					onCreate() {
 | 
				
			||||||
 | 
					     this.modalAdd=false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  this.mainService.create(this.entryForm.value).subscribe(
 | 
				
			||||||
 | 
					    (data) => {
 | 
				
			||||||
 | 
					      console.log(data);
 | 
				
			||||||
 | 
					  if (data || data.status >= 200 && data.status <= 299) {
 | 
				
			||||||
 | 
					          this.toastr.success("Added Successfully");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					setTimeout(() => {
 | 
				
			||||||
 | 
					      this.ngOnInit();
 | 
				
			||||||
 | 
					    }, 500);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for (let i = 0; i < this.selectedfileupload_field.length; i++){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  this.mainService.uploadfilefileupload_field(data.id,this.tableName,this.selectedfileupload_field[i]).subscribe(uploaddata =>{
 | 
				
			||||||
 | 
					    console.log(uploaddata);
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for (let i = 0; i < this.selectedimageupload_field.length; i++){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  this.mainService.uploadImageupload_field(data.id,this.tableName,this.selectedimageupload_field[i]).subscribe(uploaddata =>{
 | 
				
			||||||
 | 
					    console.log(uploaddata);
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for (let i = 0; i < this.selectedaudio_field.length; i++){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  this.mainService.uploadAudio_field(data.id,this.tableName,this.selectedaudio_field[i]).subscribe(uploaddata =>{
 | 
				
			||||||
 | 
					    console.log(uploaddata);
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for (let i = 0; i < this.selectedvideo_field.length; i++){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  this.mainService.uploadVideo_field(data.id,this.tableName,this.selectedvideo_field[i]).subscribe(uploaddata =>{
 | 
				
			||||||
 | 
					    console.log(uploaddata);
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      }, (error) => {
 | 
				
			||||||
 | 
					        console.log(error);
 | 
				
			||||||
 | 
					        if (error.status >= 200 && error.status <= 299) {
 | 
				
			||||||
 | 
					          // this.toastr.success("Added Succesfully");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (error.status >= 400 && error.status <= 499) {
 | 
				
			||||||
 | 
					          this.toastr.error("Not Added");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (error.status >= 500 && error.status <= 599) {
 | 
				
			||||||
 | 
					          this.toastr.error("Not Added");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    setTimeout(() => {
 | 
				
			||||||
 | 
					      this.ngOnInit();
 | 
				
			||||||
 | 
					    }, 500);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  goToAdd(row) {
 | 
				
			||||||
 | 
					this.modalAdd = true; this.submitted = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					this.FileDatafileupload_field = [];
 | 
				
			||||||
 | 
					this.selectedfileupload_field =[];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					this.FileDataImageupload_field = [];
 | 
				
			||||||
 | 
					this.selectedImageupload_field =[];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					this.FileDataAudio_field = [];
 | 
				
			||||||
 | 
					this.selectedAudio_field =[];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					this.FileDataVideo_field = [];
 | 
				
			||||||
 | 
					this.selectedVideo_field =[];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					 submitted = false;
 | 
				
			||||||
 | 
					onSubmit() {
 | 
				
			||||||
 | 
					  console.log(this.entryForm.value);
 | 
				
			||||||
 | 
					 this.submitted = true;
 | 
				
			||||||
 | 
					  if (this.entryForm.invalid) {
 | 
				
			||||||
 | 
					    return;
 | 
				
			||||||
 | 
					  }this.onCreate();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					filePreviewfileupload_field: string | ArrayBuffer | null = null;
 | 
				
			||||||
 | 
					FileDatafileupload_field: {uploadedfile_name?:any, filePreview: string | ArrayBuffer | null }[] = []; // Initialize the array
 | 
				
			||||||
 | 
					selectedfileupload_field: File[]=[]; 
 | 
				
			||||||
 | 
					public onFileChangedfileupload_field(event, index) {
 | 
				
			||||||
 | 
					  const files = event.target.files;
 | 
				
			||||||
 | 
					  for (let i = 0; i < files.length; i++) {
 | 
				
			||||||
 | 
					    const file = files[i];
 | 
				
			||||||
 | 
					    this.FileDatafileupload_field[index].uploadedfile_name = files[i].name;
 | 
				
			||||||
 | 
					    this.selectedfileupload_field.push(files[i]);
 | 
				
			||||||
 | 
					    if (file.type.startsWith('file/')) {
 | 
				
			||||||
 | 
					      const reader = new FileReader();
 | 
				
			||||||
 | 
					      reader.onload = (e) => {
 | 
				
			||||||
 | 
					        // Set the file preview source
 | 
				
			||||||
 | 
					        const filePreview = e.target?.result as string;
 | 
				
			||||||
 | 
					        this.FileDatafileupload_field[index] = {
 | 
				
			||||||
 | 
					          ...this.FileDatafileupload_field[index], // Preserve existing properties
 | 
				
			||||||
 | 
					          filePreview: filePreview // Update only the filePreview property
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
 | 
					      reader.readAsDataURL(file);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					    onAddLinesfileupload_field(){
 | 
				
			||||||
 | 
					      this.FileDatafileupload_field.push({
 | 
				
			||||||
 | 
					        uploadedfile_name: "",
 | 
				
			||||||
 | 
					        filePreview: "",
 | 
				
			||||||
 | 
					        // f3: "",
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    deleteRowfileupload_field(index,id) {
 | 
				
			||||||
 | 
					      this.FileDatafileupload_field.splice(index, 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if(id){
 | 
				
			||||||
 | 
					      this.mainService.uploadfiledeletefileupload_field(id).subscribe(data =>{
 | 
				
			||||||
 | 
					        console.log(data);
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					filePreviewimageupload_field: string | ArrayBuffer | null = null;
 | 
				
			||||||
 | 
					FileDataimageupload_field: {uploadedfile_name?:any, filePreview: string | ArrayBuffer | null }[] = []; // Initialize the array
 | 
				
			||||||
 | 
					selectedimageupload_field: File[]=[]; 
 | 
				
			||||||
 | 
					public onFileChangedimageupload_field(event, index) {
 | 
				
			||||||
 | 
					  const files = event.target.files;
 | 
				
			||||||
 | 
					  for (let i = 0; i < files.length; i++) {
 | 
				
			||||||
 | 
					    const file = files[i];
 | 
				
			||||||
 | 
					    this.FileDataimageupload_field[index].uploadedfile_name = files[i].name;
 | 
				
			||||||
 | 
					    this.selectedimageupload_field.push(files[i]);
 | 
				
			||||||
 | 
					    if (file.type.startsWith('image/')) {
 | 
				
			||||||
 | 
					      const reader = new FileReader();
 | 
				
			||||||
 | 
					      reader.onload = (e) => {
 | 
				
			||||||
 | 
					        // Set the file preview source
 | 
				
			||||||
 | 
					        const filePreview = e.target?.result as string;
 | 
				
			||||||
 | 
					        this.FileDataimageupload_field[index] = {
 | 
				
			||||||
 | 
					          ...this.FileDataimageupload_field[index], // Preserve existing properties
 | 
				
			||||||
 | 
					          filePreview: filePreview // Update only the filePreview property
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
 | 
					      reader.readAsDataURL(file);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					    onAddLinesimageupload_field(){
 | 
				
			||||||
 | 
					      this.FileDataimageupload_field.push({
 | 
				
			||||||
 | 
					        uploadedfile_name: "",
 | 
				
			||||||
 | 
					        filePreview: "",
 | 
				
			||||||
 | 
					        // f3: "",
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    deleteRowimageupload_field(index,id) {
 | 
				
			||||||
 | 
					      this.FileDataimageupload_field.splice(index, 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if(id){
 | 
				
			||||||
 | 
					      this.mainService.uploadImageupload_fielddelete(id).subscribe(data =>{
 | 
				
			||||||
 | 
					        console.log(data);
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					filePreviewaudio_field: string | ArrayBuffer | null = null;
 | 
				
			||||||
 | 
					FileDataaudio_field: {uploadedfile_name?:any, filePreview: string | ArrayBuffer | null }[] = []; // Initialize the array
 | 
				
			||||||
 | 
					selectedaudio_field: File[]=[]; 
 | 
				
			||||||
 | 
					public onFileChangedaudio_field(event, index) {
 | 
				
			||||||
 | 
					  const files = event.target.files;
 | 
				
			||||||
 | 
					  for (let i = 0; i < files.length; i++) {
 | 
				
			||||||
 | 
					    const file = files[i];
 | 
				
			||||||
 | 
					    this.FileDataaudio_field[index].uploadedfile_name = files[i].name;
 | 
				
			||||||
 | 
					    this.selectedaudio_field.push(files[i]);
 | 
				
			||||||
 | 
					    if (file.type.startsWith('audio/')) {
 | 
				
			||||||
 | 
					      const reader = new FileReader();
 | 
				
			||||||
 | 
					      reader.onload = (e) => {
 | 
				
			||||||
 | 
					        // Set the file preview source
 | 
				
			||||||
 | 
					        const filePreview = e.target?.result as string;
 | 
				
			||||||
 | 
					        this.FileDataaudio_field[index] = {
 | 
				
			||||||
 | 
					          ...this.FileDataaudio_field[index], // Preserve existing properties
 | 
				
			||||||
 | 
					          filePreview: filePreview // Update only the filePreview property
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
 | 
					      reader.readAsDataURL(file);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					    onAddLinesaudio_field(){
 | 
				
			||||||
 | 
					      this.FileDataaudio_field.push({
 | 
				
			||||||
 | 
					        uploadedfile_name: "",
 | 
				
			||||||
 | 
					        filePreview: "",
 | 
				
			||||||
 | 
					        // f3: "",
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    deleteRowaudio_field(index,id) {
 | 
				
			||||||
 | 
					      this.FileDataaudio_field.splice(index, 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if(id){
 | 
				
			||||||
 | 
					      this.mainService.uploadAudio_fielddelete(id).subscribe(data =>{
 | 
				
			||||||
 | 
					        console.log(data);
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					filePreviewvideo_field: string | ArrayBuffer | null = null;
 | 
				
			||||||
 | 
					FileDatavideo_field: {uploadedfile_name?:any, filePreview: string | ArrayBuffer | null }[] = []; // Initialize the array
 | 
				
			||||||
 | 
					selectedvideo_field: File[]=[]; 
 | 
				
			||||||
 | 
					public onFileChangedvideo_field(event, index) {
 | 
				
			||||||
 | 
					  const files = event.target.files;
 | 
				
			||||||
 | 
					  for (let i = 0; i < files.length; i++) {
 | 
				
			||||||
 | 
					    const file = files[i];
 | 
				
			||||||
 | 
					    this.FileDatavideo_field[index].uploadedfile_name = files[i].name;
 | 
				
			||||||
 | 
					    this.selectedvideo_field.push(files[i]);
 | 
				
			||||||
 | 
					    if (file.type.startsWith('video/')) {
 | 
				
			||||||
 | 
					      const reader = new FileReader();
 | 
				
			||||||
 | 
					      reader.onload = (e) => {
 | 
				
			||||||
 | 
					        // Set the file preview source
 | 
				
			||||||
 | 
					        const filePreview = e.target?.result as string;
 | 
				
			||||||
 | 
					        this.FileDatavideo_field[index] = {
 | 
				
			||||||
 | 
					          ...this.FileDatavideo_field[index], // Preserve existing properties
 | 
				
			||||||
 | 
					          filePreview: filePreview // Update only the filePreview property
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
 | 
					      reader.readAsDataURL(file);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					    onAddLinesvideo_field(){
 | 
				
			||||||
 | 
					      this.FileDatavideo_field.push({
 | 
				
			||||||
 | 
					        uploadedfile_name: "",
 | 
				
			||||||
 | 
					        filePreview: "",
 | 
				
			||||||
 | 
					        // f3: "",
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    deleteRowvideo_field(index,id) {
 | 
				
			||||||
 | 
					      this.FileDatavideo_field.splice(index, 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if(id){
 | 
				
			||||||
 | 
					      this.mainService.uploadVideo_fielddelete(id).subscribe(data =>{
 | 
				
			||||||
 | 
					        console.log(data);
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// updateaction
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -0,0 +1,97 @@
 | 
				
			|||||||
 | 
					import { Injectable } from '@angular/core';
 | 
				
			||||||
 | 
					import { Observable } from "rxjs";
 | 
				
			||||||
 | 
					import { HttpClient, HttpHeaders, HttpParams, } from "@angular/common/http";
 | 
				
			||||||
 | 
					import { ApiRequestService } from "src/app/services/api/api-request.service";
 | 
				
			||||||
 | 
					import { environment } from 'src/environments/environment';
 | 
				
			||||||
 | 
					@Injectable({
 | 
				
			||||||
 | 
					  providedIn: 'root'
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					export class Testaservice{
 | 
				
			||||||
 | 
					  private baseURL = "Testa/Testa" ;  constructor(
 | 
				
			||||||
 | 
					    private http: HttpClient,
 | 
				
			||||||
 | 
					    private apiRequest: ApiRequestService,
 | 
				
			||||||
 | 
					  ) { }
 | 
				
			||||||
 | 
					  getAll(page?: number, size?: number): Observable<any> {
 | 
				
			||||||
 | 
					    return this.apiRequest.get(this.baseURL);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  getById(id: number): Observable<any> {
 | 
				
			||||||
 | 
					    const _http = this.baseURL + "/" + id;
 | 
				
			||||||
 | 
					    return this.apiRequest.get(_http);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  create(data: any): Observable<any> {
 | 
				
			||||||
 | 
					    return this.apiRequest.post(this.baseURL, data);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  update(id: number, data: any): Observable<any> {
 | 
				
			||||||
 | 
					    const _http = this.baseURL + "/" + id;
 | 
				
			||||||
 | 
					    return this.apiRequest.put(_http, data);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  delete(id: number): Observable<any> {
 | 
				
			||||||
 | 
					    const _http = this.baseURL + "/" + id;
 | 
				
			||||||
 | 
					    return this.apiRequest.delete(_http);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uploadfilefileupload_field(ref:any, Testa:any, file:any): Observable<any>{
 | 
				
			||||||
 | 
					    const formData = new FormData();
 | 
				
			||||||
 | 
					    formData.append('file', file);
 | 
				
			||||||
 | 
					    return this.apiRequest.postFormData(`FileUpload/Uploadeddocs/${ref}/${Testa}`, formData);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uploadfilegetByIdfileupload_field(ref:any, Testa:any,): Observable<any> {
 | 
				
			||||||
 | 
					    return this.apiRequest.get(`FileUpload/Uploadeddocs/${ref}/${Testa}`);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uploadfiledeletefileupload_field(id: number): Observable<any> {
 | 
				
			||||||
 | 
					    return this.apiRequest.delete(`FileUpload/Uploadeddocs/${id}`);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uploadImageupload_field(ref:any, Testa:any, file:any): Observable<any>{
 | 
				
			||||||
 | 
					    const formData = new FormData();
 | 
				
			||||||
 | 
					    formData.append('file', file);
 | 
				
			||||||
 | 
					    return this.apiRequest.postFormData(`FileUpload/Uploadeddocs/${ref}/${Testa}`, formData);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uploadImageupload_fieldgetById(ref:any, Testa:any,): Observable<any> {
 | 
				
			||||||
 | 
					    return this.apiRequest.get(`FileUpload/Uploadeddocs/${ref}/${Testa}`);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uploadImageupload_fielddelete(id: number): Observable<any> {
 | 
				
			||||||
 | 
					    return this.apiRequest.delete(`FileUpload/Uploadeddocs/${id}`);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uploadAudio_field(ref:any, Testa:any, file:any): Observable<any>{
 | 
				
			||||||
 | 
					    const formData = new FormData();
 | 
				
			||||||
 | 
					    formData.append('file', file);
 | 
				
			||||||
 | 
					    return this.apiRequest.postFormData(`FileUpload/Uploadeddocs/${ref}/${Testa}`, formData);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uploadAudio_fieldgetById(ref:any, Testa:any,): Observable<any> {
 | 
				
			||||||
 | 
					    return this.apiRequest.get(`FileUpload/Uploadeddocs/${ref}/${Testa}`);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uploadAudio_fielddelete(id: number): Observable<any> {
 | 
				
			||||||
 | 
					    return this.apiRequest.delete(`FileUpload/Uploadeddocs/${id}`);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uploadVideo_field(ref:any, Testa:any, file:any): Observable<any>{
 | 
				
			||||||
 | 
					    const formData = new FormData();
 | 
				
			||||||
 | 
					    formData.append('file', file);
 | 
				
			||||||
 | 
					    return this.apiRequest.postFormData(`FileUpload/Uploadeddocs/${ref}/${Testa}`, formData);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uploadVideo_fieldgetById(ref:any, Testa:any,): Observable<any> {
 | 
				
			||||||
 | 
					    return this.apiRequest.get(`FileUpload/Uploadeddocs/${ref}/${Testa}`);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uploadVideo_fielddelete(id: number): Observable<any> {
 | 
				
			||||||
 | 
					    return this.apiRequest.delete(`FileUpload/Uploadeddocs/${id}`);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// updateaction
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					export const Testacardvariable = {
 | 
				
			||||||
 | 
					    "cardButton": false,
 | 
				
			||||||
 | 
					    "cardmodeldata": ``
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -19,6 +19,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { Component, OnInit } from '@angular/core';
 | 
					import { Component, OnInit } from '@angular/core';
 | 
				
			||||||
@ -249,6 +250,8 @@ export class Stepper_workflowComponent implements OnInit {
 | 
				
			|||||||
    console.log('id is ', id)
 | 
					    console.log('id is ', id)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // stepper route
 | 
					    // stepper route
 | 
				
			||||||
 | 
					 this.router.navigate(["../steps/", id], { relativeTo: this.route });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					{"version":3,"sources":["steps.component.scss","steps.component.css"],"names":[],"mappings":"AAAA;EACE,UAAA;EACA,YAAA;ACCF;;ADCA;EACE,UAAA;EACA,aAAA;ACEF;;ADAA;EACE,UAAA;EACA,aAAA;ACGF;;ADDA;EACE,UAAA;EACA,aAAA;ACIF;;ADDA;EACE,WAAA;EACA,aAAA;ACIF;;ADDA;EACE,WAAA;EACA,kBAAA;EACA,aAAA;EACA,qBAAA;EACA,sBAAA;EACA,kBAAA;EACA,sBAAA;ACIF;;ADFA;EACE,UAAA;ACKF;;ADHA;EACE,kBAAA;ACMF;;ADHA;EACE,WAAA;ACMF;;ADJA;EACA;IACA,WAAA;ECOE;AACF","file":"steps.component.css"}
 | 
				
			||||||
@ -0,0 +1,356 @@
 | 
				
			|||||||
 | 
					<ol class="breadcrumb breadcrumb-arrow font-trirong">
 | 
				
			||||||
 | 
					  <li><a href="javascript://" [routerLink]="['/']">Home</a></li>
 | 
				
			||||||
 | 
					  <li><a href="javascript://">stepper</a></li>
 | 
				
			||||||
 | 
					</ol>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<div class="button-bar">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <span class="spacer"></span>
 | 
				
			||||||
 | 
					  <button class="btn btn-sm btn-primary" (click)="reset()">Reset</button>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <button class="btn btn-sm btn-primary" (click)="changeToHorizonTal()"
 | 
				
			||||||
 | 
					    *ngIf="layout.direction === 'vertical'">HorizonTal Layout</button>
 | 
				
			||||||
 | 
					  <button class="btn btn-sm btn-primary" (click)="changeToVertical()" *ngIf="layout.direction === 'horizontal'">Vertical
 | 
				
			||||||
 | 
					    Layout</button>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<div class="clr-row">
 | 
				
			||||||
 | 
					  <div [class]="layout.block1">
 | 
				
			||||||
 | 
					    <div class="card">
 | 
				
			||||||
 | 
					      <div class="card-header">
 | 
				
			||||||
 | 
					        <h3 style="text-align: center;"> Workflow</h3>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      <div class=" card-block container">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <clr-timeline [clrLayout]="layout.direction">
 | 
				
			||||||
 | 
					   <clr-timeline-step [clrState]="timelineStyle.step0.state">
 | 
				
			||||||
 | 
					            <clr-timeline-step-header>step 0</clr-timeline-step-header>
 | 
				
			||||||
 | 
					            <clr-timeline-step-title> <span *ngIf="!appToUpdate">Application</span><span *ngIf="appToUpdate"> Update
 | 
				
			||||||
 | 
					                Datagrid</span> </clr-timeline-step-title>
 | 
				
			||||||
 | 
					            <clr-timeline-step-description> <span>Create/review<br> Information Of
 | 
				
			||||||
 | 
					                Customer</span></clr-timeline-step-description>
 | 
				
			||||||
 | 
					          </clr-timeline-step>  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 <clr-timeline-step [clrState]="timelineStyle.step1.state">
 | 
				
			||||||
 | 
					            <clr-timeline-step-header>Step 2</clr-timeline-step-header>
 | 
				
			||||||
 | 
					            <clr-timeline-step-title>Review And <br>Confirmation</clr-timeline-step-title>
 | 
				
			||||||
 | 
					            <clr-timeline-step-description>
 | 
				
			||||||
 | 
					              Finish .
 | 
				
			||||||
 | 
					            </clr-timeline-step-description>
 | 
				
			||||||
 | 
					          </clr-timeline-step></clr-timeline>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					  <div [class]="layout.block2">
 | 
				
			||||||
 | 
					    <!--STEP 0-->
 | 
				
			||||||
 | 
					    <div class="card" *ngIf="timelineStyle.step0.open">
 | 
				
			||||||
 | 
					      <div class="card-header">
 | 
				
			||||||
 | 
					        <h3 style="text-align: center;" *ngIf="!appToUpdate">review</h3>
 | 
				
			||||||
 | 
					        <h3 style="text-align: center;" *ngIf="appToUpdate"> Update {{TestaentryForm.name}}</h3>
 | 
				
			||||||
 | 
					        <div class="container">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          <br />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					          <form [formGroup]="TestaentryForm">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <div class="container">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					              <div class="clr-row"><div class="clr-col-sm-12">
 | 
				
			||||||
 | 
					 <label>  Name</label>
 | 
				
			||||||
 | 
					 <input class="clr-input"  type="text"  formControlName="name" />       
 | 
				
			||||||
 | 
					 </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<!-- multiselect checkbox field start -->
 | 
				
			||||||
 | 
					     <div class="clr-col-sm-12">       
 | 
				
			||||||
 | 
							<label> checkbosxs</label>
 | 
				
			||||||
 | 
						    <div class="clr-form-control" style="margin-top: 5px;margin-bottom: 10px;">
 | 
				
			||||||
 | 
						      <div class="clr-control-container">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                       
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
								<div class="clr-checkbox-wrapper">           
 | 
				
			||||||
 | 
									<input type="checkbox" id="a" formControlName="a"  class="clr-checkbox" />       
 | 
				
			||||||
 | 
									    <label for="a" class="clr-control-label">a</label>  </div>
 | 
				
			||||||
 | 
						                            
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
								<div class="clr-checkbox-wrapper">           
 | 
				
			||||||
 | 
									<input type="checkbox" id="b" formControlName="b"  class="clr-checkbox" />       
 | 
				
			||||||
 | 
									    <label for="b" class="clr-control-label">b</label>  </div>
 | 
				
			||||||
 | 
						                            
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
								<div class="clr-checkbox-wrapper">           
 | 
				
			||||||
 | 
									<input type="checkbox" id="c" formControlName="c"  class="clr-checkbox" />       
 | 
				
			||||||
 | 
									    <label for="c" class="clr-control-label">c</label>  </div>
 | 
				
			||||||
 | 
						                            
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 </div>       </div>     </div>
 | 
				
			||||||
 | 
						              <!-- multiselect checkbox field end -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					              </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<h6> List of fileupload_field</h6>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 <div  class="clr-row" style="margin-top: 10px;">
 | 
				
			||||||
 | 
					   <table class="table">
 | 
				
			||||||
 | 
					       <thead>
 | 
				
			||||||
 | 
					        <tr>
 | 
				
			||||||
 | 
					        <th>No</th>
 | 
				
			||||||
 | 
					         <th> File</th>
 | 
				
			||||||
 | 
					         <th>File Name</th>
 | 
				
			||||||
 | 
					          <th>Preview</th>
 | 
				
			||||||
 | 
					          <th>Cancel</th>
 | 
				
			||||||
 | 
					           </tr>
 | 
				
			||||||
 | 
					         </thead>
 | 
				
			||||||
 | 
					         <tbody >
 | 
				
			||||||
 | 
					           <tr *ngFor="let attach of FileDatafileupload_field; let i=index">
 | 
				
			||||||
 | 
					             <td style="width: 70px;"><input type="text" class="clr-input"  value={{i+1}} [readonly]="true">  </td>
 | 
				
			||||||
 | 
					             <td><input type="file" (change)="onFileChangedfileupload_field($event, i)"  accept = "application/pdf,.csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" /><!--accept=".pdf,.doc,.docx,.jpg,.msg"-->
 | 
				
			||||||
 | 
					              </td>
 | 
				
			||||||
 | 
					         <td>{{attach.uploadedfile_name}}</td>
 | 
				
			||||||
 | 
					             <td >  <img [src]="attach.filePreview" alt="File Preview"  [ngModelOptions]="{standalone: true}" name="filePreview" width="100px" height="100px"></td>
 | 
				
			||||||
 | 
					             <td>
 | 
				
			||||||
 | 
					               <a  (click)="deleteRowfileupload_field(i)">
 | 
				
			||||||
 | 
					                 <clr-icon shape="trash" class="is-error"></clr-icon>
 | 
				
			||||||
 | 
					               </a>
 | 
				
			||||||
 | 
					             </td>
 | 
				
			||||||
 | 
					           </tr>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       </tbody>
 | 
				
			||||||
 | 
					         <button type="button" class="btn btn-primary button1" style="margin-left: 20px;" (click)="onAddLinesfileupload_field()">
 | 
				
			||||||
 | 
					           <clr-icon shape="plus"></clr-icon>
 | 
				
			||||||
 | 
					         </button>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       </table> </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<h6> List of imageupload_field</h6>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 <div  class="clr-row" style="margin-top: 10px;">
 | 
				
			||||||
 | 
					   <table class="table">
 | 
				
			||||||
 | 
					       <thead>
 | 
				
			||||||
 | 
					        <tr>
 | 
				
			||||||
 | 
					        <th>No</th>
 | 
				
			||||||
 | 
					         <th> File</th>
 | 
				
			||||||
 | 
					         <th>File Name</th>
 | 
				
			||||||
 | 
					          <th>Preview</th>
 | 
				
			||||||
 | 
					          <th>Cancel</th>
 | 
				
			||||||
 | 
					           </tr>
 | 
				
			||||||
 | 
					         </thead>
 | 
				
			||||||
 | 
					         <tbody >
 | 
				
			||||||
 | 
					           <tr *ngFor="let attach of FileDataimageupload_field; let i=index">
 | 
				
			||||||
 | 
					             <td style="width: 70px;"><input type="text" class="clr-input"  value={{i+1}} [readonly]="true">  </td>
 | 
				
			||||||
 | 
					             <td><input type="file" (change)="onFileChangedimageupload_field($event, i)"  accept="image/*" /><!--accept=".pdf,.doc,.docx,.jpg,.msg"-->
 | 
				
			||||||
 | 
					              </td>
 | 
				
			||||||
 | 
					         <td>{{attach.uploadedfile_name}}</td>
 | 
				
			||||||
 | 
					             <td >  <img [src]="attach.filePreview" alt="File Preview"  [ngModelOptions]="{standalone: true}" name="filePreview" width="100px" height="100px"></td>
 | 
				
			||||||
 | 
					             <td>
 | 
				
			||||||
 | 
					               <a  (click)="deleteRowimageupload_field(i)">
 | 
				
			||||||
 | 
					                 <clr-icon shape="trash" class="is-error"></clr-icon>
 | 
				
			||||||
 | 
					               </a>
 | 
				
			||||||
 | 
					             </td>
 | 
				
			||||||
 | 
					           </tr>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       </tbody>
 | 
				
			||||||
 | 
					         <button type="button" class="btn btn-primary button1" style="margin-left: 20px;" (click)="onAddLinesimageupload_field()">
 | 
				
			||||||
 | 
					           <clr-icon shape="plus"></clr-icon>
 | 
				
			||||||
 | 
					         </button>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       </table> </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<h6> List of audio_field</h6>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 <div  class="clr-row" style="margin-top: 10px;">
 | 
				
			||||||
 | 
					   <table class="table">
 | 
				
			||||||
 | 
					       <thead>
 | 
				
			||||||
 | 
					        <tr>
 | 
				
			||||||
 | 
					        <th>No</th>
 | 
				
			||||||
 | 
					         <th> File</th>
 | 
				
			||||||
 | 
					         <th>File Name</th>
 | 
				
			||||||
 | 
					          <th>Preview</th>
 | 
				
			||||||
 | 
					          <th>Cancel</th>
 | 
				
			||||||
 | 
					           </tr>
 | 
				
			||||||
 | 
					         </thead>
 | 
				
			||||||
 | 
					         <tbody >
 | 
				
			||||||
 | 
					           <tr *ngFor="let attach of FileDataaudio_field; let i=index">
 | 
				
			||||||
 | 
					             <td style="width: 70px;"><input type="text" class="clr-input"  value={{i+1}} [readonly]="true">  </td>
 | 
				
			||||||
 | 
					             <td><input type="file" (change)="onFileChangedaudio_field($event, i)"  accept="audio/*" /><!--accept="audio file"-->
 | 
				
			||||||
 | 
					              </td>
 | 
				
			||||||
 | 
					         <td>{{attach.uploadedfile_name}}</td>
 | 
				
			||||||
 | 
					             <td >  <audio *ngIf="attach.filePreview" [src]="attach.filePreview" controls></audio></td>
 | 
				
			||||||
 | 
					             <td>
 | 
				
			||||||
 | 
					               <a  (click)="deleteRowaudio_field(i)">
 | 
				
			||||||
 | 
					                 <clr-icon shape="trash" class="is-error"></clr-icon>
 | 
				
			||||||
 | 
					               </a>
 | 
				
			||||||
 | 
					             </td>
 | 
				
			||||||
 | 
					           </tr>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       </tbody>
 | 
				
			||||||
 | 
					         <button type="button" class="btn btn-primary button1" style="margin-left: 20px;" (click)="onAddLinesaudio_field()">
 | 
				
			||||||
 | 
					           <clr-icon shape="plus"></clr-icon>
 | 
				
			||||||
 | 
					         </button>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       </table> </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<h6> List of video_field</h6>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 <div  class="clr-row" style="margin-top: 10px;">
 | 
				
			||||||
 | 
					   <table class="table">
 | 
				
			||||||
 | 
					       <thead>
 | 
				
			||||||
 | 
					        <tr>
 | 
				
			||||||
 | 
					        <th>No</th>
 | 
				
			||||||
 | 
					         <th> File</th>
 | 
				
			||||||
 | 
					         <th>File Name</th>
 | 
				
			||||||
 | 
					          <th>Preview</th>
 | 
				
			||||||
 | 
					          <th>Cancel</th>
 | 
				
			||||||
 | 
					           </tr>
 | 
				
			||||||
 | 
					         </thead>
 | 
				
			||||||
 | 
					         <tbody >
 | 
				
			||||||
 | 
					           <tr *ngFor="let attach of FileDatavideo_field; let i=index">
 | 
				
			||||||
 | 
					             <td style="width: 70px;"><input type="text" class="clr-input"  value={{i+1}} [readonly]="true">  </td>
 | 
				
			||||||
 | 
					             <td><input type="file" (change)="onFileChangedvideo_field($event, i)"  accept="video/*" /><!--accept=".mp4,.mpeg4"-->
 | 
				
			||||||
 | 
					              </td>
 | 
				
			||||||
 | 
					         <td>{{attach.uploadedfile_name}}</td>
 | 
				
			||||||
 | 
					             <td >            <video *ngIf="attach.filePreview" [src]="attach.filePreview" width="100px" height="100px" controls></video></td>
 | 
				
			||||||
 | 
					             <td>
 | 
				
			||||||
 | 
					               <a  (click)="deleteRowvideo_field(i)">
 | 
				
			||||||
 | 
					                 <clr-icon shape="trash" class="is-error"></clr-icon>
 | 
				
			||||||
 | 
					               </a>
 | 
				
			||||||
 | 
					             </td>
 | 
				
			||||||
 | 
					           </tr>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       </tbody>
 | 
				
			||||||
 | 
					         <button type="button" class="btn btn-primary button1" style="margin-left: 20px;" (click)="onAddLinesvideo_field()">
 | 
				
			||||||
 | 
					           <clr-icon shape="plus"></clr-icon>
 | 
				
			||||||
 | 
					         </button>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       </table> </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					              <div class="clr-row">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					              </div>
 | 
				
			||||||
 | 
					              <!-- end row -->
 | 
				
			||||||
 | 
					              <br>
 | 
				
			||||||
 | 
					<div class="button">
 | 
				
			||||||
 | 
					  <button type="submit" class="btn btn-primary" (click)="onreviewSave()">Submit</button>
 | 
				
			||||||
 | 
					  <button type="button" class="btn btn-primary"
 | 
				
			||||||
 | 
					    (click)="this.timelineStyle.step0 = { state: 'success', open: false };
 | 
				
			||||||
 | 
					             this.timelineStyle.step1 = { state: 'current', open: true }; this.current()">Complete</button>
 | 
				
			||||||
 | 
					  <button type="button" class="btn btn-primary"
 | 
				
			||||||
 | 
					    (click)="this.timelineStyle.step0 = { state: 'current', open: false };
 | 
				
			||||||
 | 
					             this.timelineStyle.step1 = { state: 'not-started', open: true }">Next</button>
 | 
				
			||||||
 | 
					</div>  </div>
 | 
				
			||||||
 | 
					          </form>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					    </div> 
 | 
				
			||||||
 | 
					 <!--STEP 1-->  <div class="card" *ngIf="timelineStyle.step1.open">
 | 
				
			||||||
 | 
					      <div class="card-header">
 | 
				
			||||||
 | 
					        <h3 style="text-align: center;" *ngIf="!appToUpdate"> Review And Confirmation</h3>
 | 
				
			||||||
 | 
					        <div class="container">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          <!--  Info -->
 | 
				
			||||||
 | 
					   <div class="clr-row mb-3">
 | 
				
			||||||
 | 
					            <div class="clr-col-12">
 | 
				
			||||||
 | 
					              <h5>Review Summary:</h5><p><strong>Name : </strong> {{ TestaentryForm.get('name')?.value | json}}</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					<p><strong>a : </strong> {{ TestaentryForm.get('a')?.value | json}}</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					<p><strong>b : </strong> {{ TestaentryForm.get('b')?.value | json}}</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					<p><strong>c : </strong> {{ TestaentryForm.get('c')?.value | json}}</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<div>
 | 
				
			||||||
 | 
					  <p><strong>Uploaded Files Preview:</strong></p>
 | 
				
			||||||
 | 
					  <div class="clr-row" *ngIf="FileDatafileupload_field.length > 0">
 | 
				
			||||||
 | 
					    <div class="clr-col" *ngFor="let file of FileDatafileupload_field">
 | 
				
			||||||
 | 
					      <a *ngIf="file.filePreview" [href]="file.filePreview" target="_blank">
 | 
				
			||||||
 | 
					        <img src="assets/icons/file-icon.png" width="40" height="40" style="margin: 10px;" />
 | 
				
			||||||
 | 
					      </a>
 | 
				
			||||||
 | 
					      <p style="font-size: 12px;">{{ file.uploadedfile_name }}</p>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 <div>
 | 
				
			||||||
 | 
					                <p><strong>Uploaded Images Preview:</strong></p>
 | 
				
			||||||
 | 
					                <div class="clr-row" *ngIf="FileDataimageupload_field.length > 0">
 | 
				
			||||||
 | 
					                  <div class="clr-col" *ngFor="let img of FileDataimageupload_field">
 | 
				
			||||||
 | 
					                    <img [src]="img.filePreview" width="100" height="100" style="margin: 10px; border: 1px solid #ccc;"
 | 
				
			||||||
 | 
					                      *ngIf="img.filePreview" />
 | 
				
			||||||
 | 
					                    <p style="font-size: 12px;">{{ img.uploadedfile_name }}</p>
 | 
				
			||||||
 | 
					                  </div>
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					              </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<div>
 | 
				
			||||||
 | 
					  <p><strong>Uploaded Audios Preview:</strong></p>
 | 
				
			||||||
 | 
					  <div class="clr-row" *ngIf="FileDataaudio_field.length > 0">
 | 
				
			||||||
 | 
					    <div class="clr-col" *ngFor="let audio of FileDataaudio_field">
 | 
				
			||||||
 | 
					      <audio *ngIf="audio.filePreview" [src]="audio.filePreview" controls style="margin: 10px;"></audio>
 | 
				
			||||||
 | 
					      <p style="font-size: 12px;">{{ audio.uploadedfile_name }}</p>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<div>
 | 
				
			||||||
 | 
					  <p><strong>Uploaded Videos Preview:</strong></p>
 | 
				
			||||||
 | 
					  <div class="clr-row" *ngIf="FileDatavideo_field.length > 0">
 | 
				
			||||||
 | 
					    <div class="clr-col" *ngFor="let video of FileDatavideo_field">
 | 
				
			||||||
 | 
					      <video *ngIf="video.filePreview" [src]="video.filePreview" width="120" height="90" controls style="margin: 10px;"></video>
 | 
				
			||||||
 | 
					      <p style="font-size: 12px;">{{ video.uploadedfile_name }}</p>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					          </div><div class="button">
 | 
				
			||||||
 | 
					  <button class="btn btn-primary-outline"
 | 
				
			||||||
 | 
					    (click)="this.timelineStyle.step0 = { state: 'current', open: true };
 | 
				
			||||||
 | 
					             this.timelineStyle.step1 = { state: 'not-started', open: false }">Back</button>
 | 
				
			||||||
 | 
					  <button class="btn btn-primary"
 | 
				
			||||||
 | 
					    (click)="timelineStyle.step1 = { state: 'success', open: false }; current();
 | 
				
			||||||
 | 
					             alert('Process Finished Successfully!')">Finish</button>
 | 
				
			||||||
 | 
					</div></div>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
@ -0,0 +1,46 @@
 | 
				
			|||||||
 | 
					.horizontal{
 | 
				
			||||||
 | 
					  width: 25%;
 | 
				
			||||||
 | 
					  padding: 5px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.horizontal1{
 | 
				
			||||||
 | 
					  width: 50%;
 | 
				
			||||||
 | 
					  padding: 10px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.middle{
 | 
				
			||||||
 | 
					  width: 33%;
 | 
				
			||||||
 | 
					  padding: 10px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.middle1{
 | 
				
			||||||
 | 
					  width: 75%;
 | 
				
			||||||
 | 
					  padding: 10px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.full{
 | 
				
			||||||
 | 
					  width: 100%;
 | 
				
			||||||
 | 
					  padding: 10px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					input[type=text],[type=date], select {
 | 
				
			||||||
 | 
					  width: 100%;
 | 
				
			||||||
 | 
					  padding: 12px 20px;
 | 
				
			||||||
 | 
					  margin: 8px 0;
 | 
				
			||||||
 | 
					  display: inline-block;
 | 
				
			||||||
 | 
					  border: 1px solid #ccc;
 | 
				
			||||||
 | 
					  border-radius: 4px;
 | 
				
			||||||
 | 
					  box-sizing: border-box;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.required-field{
 | 
				
			||||||
 | 
					  color: red;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.center {
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.center{
 | 
				
			||||||
 | 
					  color: blue;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					@media (max-width: 600px){
 | 
				
			||||||
 | 
					.horizontal,.middle,.horizontal1,.middle1 {
 | 
				
			||||||
 | 
					width: 100%;
 | 
				
			||||||
 | 
					}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					import { ComponentFixture, TestBed } from '@angular/core/testing';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import { stepsComponent } from './steps.component';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					describe('stepsComponent', () => {
 | 
				
			||||||
 | 
					  let component: stepsComponent;
 | 
				
			||||||
 | 
					  let fixture: ComponentFixture<stepsComponent>;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  beforeEach(async () => {
 | 
				
			||||||
 | 
					    await TestBed.configureTestingModule({
 | 
				
			||||||
 | 
					      declarations: [ stepsComponent ]
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					    .compileComponents();
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  beforeEach(() => {
 | 
				
			||||||
 | 
					    fixture = TestBed.createComponent(stepsComponent);
 | 
				
			||||||
 | 
					    component = fixture.componentInstance;
 | 
				
			||||||
 | 
					    fixture.detectChanges();
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('should create', () => {
 | 
				
			||||||
 | 
					    expect(component).toBeTruthy();
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
@ -0,0 +1,568 @@
 | 
				
			|||||||
 | 
					import { Component, OnInit } from '@angular/core';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import { ToastrService } from 'ngx-toastr';
 | 
				
			||||||
 | 
					import { ActivatedRoute, Router } from '@angular/router';
 | 
				
			||||||
 | 
					import { College } from 'src/app/models/fnd/play';
 | 
				
			||||||
 | 
					import { student } from 'src/app/models/fnd/Studentadd';
 | 
				
			||||||
 | 
					import { AbstractControl,FormArray, FormBuilder, FormGroup, ValidationErrors, Validators } from '@angular/forms';
 | 
				
			||||||
 | 
					import { Observable } from 'rxjs';
 | 
				
			||||||
 | 
					import { ValidationError } from 'src/app/models/fnd/ValidationError';
 | 
				
			||||||
 | 
					import { stepsservice } from './steps.service';
 | 
				
			||||||
 | 
					declare var JsBarcode: any;
 | 
				
			||||||
 | 
					  @Component({
 | 
				
			||||||
 | 
					  selector: 'app-editstepper',
 | 
				
			||||||
 | 
					  templateUrl: './steps.component.html',
 | 
				
			||||||
 | 
					  styleUrls: ['./steps.component.scss']
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					export class stepsComponent implements OnInit {
 | 
				
			||||||
 | 
					  updated = false;
 | 
				
			||||||
 | 
					  stringJson: any;
 | 
				
			||||||
 | 
					  customerId: string = '';
 | 
				
			||||||
 | 
					  selectedFile!: File;
 | 
				
			||||||
 | 
					  fileName = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  id: number;
 | 
				
			||||||
 | 
					  errorFields: ValidationError[] = [];
 | 
				
			||||||
 | 
					  appToUpdate: College = null;
 | 
				
			||||||
 | 
					  trained = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  json: string = "";
 | 
				
			||||||
 | 
					  luisApp =
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      name: '',
 | 
				
			||||||
 | 
					      created: 1,
 | 
				
			||||||
 | 
					      trained: 1,
 | 
				
			||||||
 | 
					      tested: 1,
 | 
				
			||||||
 | 
					      updated: 1,
 | 
				
			||||||
 | 
					      published: 1,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					  // Layout direction changing
 | 
				
			||||||
 | 
					  layout = {
 | 
				
			||||||
 | 
					    direction: "vertical",
 | 
				
			||||||
 | 
					    block1: "clr-col-lg-3 clr-col-12 ",
 | 
				
			||||||
 | 
					    block2: "clr-col-lg-9 clr-col-12 ",
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  timelineStyle = { 
 | 
				
			||||||
 | 
					 step0: { state: "current", open: true, failed: false }, 
 | 
				
			||||||
 | 
					    step1: { state: "not-started", open: false, failed: false },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					public TestaentryForm: FormGroup;
 | 
				
			||||||
 | 
					  submitted = false;
 | 
				
			||||||
 | 
					  rowSelected: any = {};
 | 
				
			||||||
 | 
					  modalcomplete = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  constructor( 
 | 
				
			||||||
 | 
					private mainService: stepsservice,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private Testa_fb: FormBuilder, 
 | 
				
			||||||
 | 
					private router: Router,
 | 
				
			||||||
 | 
					 private route: ActivatedRoute,
 | 
				
			||||||
 | 
					    private toastr: ToastrService,
 | 
				
			||||||
 | 
					  ) { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ngOnInit(): void {
 | 
				
			||||||
 | 
					    this.id = this.route.snapshot.params["id"];
 | 
				
			||||||
 | 
					    console.log("update with id = ", this.id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 this.TestaentryForm = this.Testa_fb.group({ 
 | 
				
			||||||
 | 
					name : [null],
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					a:[false],
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					b:[false],
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					c:[false],
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 const stepId = this.id; // or from route/query/etc
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					    this.getResolvedDataFromStepper(stepId).subscribe(res => {
 | 
				
			||||||
 | 
					      console.log('response get ', res);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (res === null) {
 | 
				
			||||||
 | 
					        this.showEmptyForm();
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					 if (res['Testa']) {
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 this.prefillreviewForm(res['Testa']);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					showEmptyForm(): void {
 | 
				
			||||||
 | 
					    console.log('No config found. Showing empty form.');
 | 
				
			||||||
 | 
					    // You can choose to show one or both based on some logic
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 this.TestaentryForm.reset();
 | 
				
			||||||
 | 
					  }  prefillreviewForm(data: any): void {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    console.log(' review data ', data)
 | 
				
			||||||
 | 
					    this.TestaentryForm.patchValue({
 | 
				
			||||||
 | 
					      id: data.id || '',
 | 
				
			||||||
 | 
					name: data.name || '',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					a: data.a || '',
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					b: data.b || '',
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					c: data.c || '',
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fileupload_field: data.fileupload_field || '',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					imageupload_field: data.imageupload_field || '',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					audio_field: data.audio_field || '',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					video_field: data.video_field || '',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					 getResolvedDataFromStepper(id: number): Observable<any> {
 | 
				
			||||||
 | 
					    console.log('get step config');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return new Observable(observer => {
 | 
				
			||||||
 | 
					      this.mainService.gettabledata(id).subscribe(configList => {
 | 
				
			||||||
 | 
					        if (!configList || configList.length === 0) {
 | 
				
			||||||
 | 
					          console.log('empty config');
 | 
				
			||||||
 | 
					          observer.next(null);
 | 
				
			||||||
 | 
					          observer.complete();
 | 
				
			||||||
 | 
					          return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        const results: { [key: string]: any } = {};
 | 
				
			||||||
 | 
					        let processed = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        configList.forEach(config => {
 | 
				
			||||||
 | 
					          const { table_name, table_id } = config;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          this.getByTableNameAndId(table_name, table_id).subscribe(data => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            console.log('data is ', data);
 | 
				
			||||||
 | 
					            results[table_name] = data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            processed++;
 | 
				
			||||||
 | 
					            if (processed === configList.length) {
 | 
				
			||||||
 | 
					              observer.next(results);  // emit combined data
 | 
				
			||||||
 | 
					              observer.complete();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          }, error => {
 | 
				
			||||||
 | 
					            console.error(`Error loading data for table ${table_name}`, error);
 | 
				
			||||||
 | 
					            processed++;
 | 
				
			||||||
 | 
					            if (processed === configList.length) {
 | 
				
			||||||
 | 
					              observer.next(results);  // continue with what we have
 | 
				
			||||||
 | 
					              observer.complete();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          });
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      }, error => {
 | 
				
			||||||
 | 
					        console.error("Error loading stepper config", error);
 | 
				
			||||||
 | 
					        observer.error(error);
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  getByTableNameAndId(tableName: string, id: number): Observable<any> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    switch (tableName) {
 | 
				
			||||||
 | 
					   case 'Testa':
 | 
				
			||||||
 | 
					        return this.mainService.getTestaById(id);// aur bhi cases agar naye table add ho to
 | 
				
			||||||
 | 
					      default:
 | 
				
			||||||
 | 
					        throw new Error(`Unknown table name: ${tableName}`);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  // Change to Horizontal Layout
 | 
				
			||||||
 | 
					  changeToHorizonTal() {
 | 
				
			||||||
 | 
					    this.layout = {
 | 
				
			||||||
 | 
					      direction: "horizontal",
 | 
				
			||||||
 | 
					      block1: "clr-col-lg-12 clr-col-12 height container",
 | 
				
			||||||
 | 
					      block2: "clr-col-lg-12 clr-col-12 container",
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  // Change to Vertical Layout
 | 
				
			||||||
 | 
					  changeToVertical() {
 | 
				
			||||||
 | 
					    this.layout = {
 | 
				
			||||||
 | 
					      direction: "vertical",
 | 
				
			||||||
 | 
					      block1: "clr-col-lg-3 clr-col-12 ",
 | 
				
			||||||
 | 
					      block2: "clr-col-lg-9 clr-col-12 ",
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  onreviewSave() {
 | 
				
			||||||
 | 
					    console.log('Form Submitted:', this.TestaentryForm.value);
 | 
				
			||||||
 | 
					    this.submitted = true;
 | 
				
			||||||
 | 
					    if (this.TestaentryForm.invalid) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      console.log('invalid form ..');
 | 
				
			||||||
 | 
					      // Log all form errors
 | 
				
			||||||
 | 
					      Object.keys(this.TestaentryForm.controls).forEach(field => {
 | 
				
			||||||
 | 
					        const control = this.TestaentryForm.get(field);
 | 
				
			||||||
 | 
					        if (control && control.invalid) {
 | 
				
			||||||
 | 
					          console.log(`Error in field: ${field}`, control.errors);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    this.onreviewCreate();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  onreviewCreate() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    this.mainService.createTesta(this.TestaentryForm.value).subscribe(
 | 
				
			||||||
 | 
					      (data) => {
 | 
				
			||||||
 | 
					        console.log('adding data ', data);
 | 
				
			||||||
 | 
					        this.customerId = data.id;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        console.log('id is  ', this.customerId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 const tableId = data.id;
 | 
				
			||||||
 | 
					        const tableName = 'Testa';
 | 
				
			||||||
 | 
					        const stepperId = this.id;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Save stepper config
 | 
				
			||||||
 | 
					        this.mainService.saveStepperConfig(stepperId, tableId, tableName).subscribe(() => {
 | 
				
			||||||
 | 
					          this.toastr.success("Stepper Config Saved");
 | 
				
			||||||
 | 
					        });        if (data || data.status >= 200 && data.status <= 299) {
 | 
				
			||||||
 | 
					          this.toastr.success("Added Successfully");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        setTimeout(() => {
 | 
				
			||||||
 | 
					          this.ngOnInit();
 | 
				
			||||||
 | 
					        }, 500);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for (let i = 0; i < this.selectedfileupload_field.length; i++){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  this.mainService.uploadfilefileupload_field(data.id,tableName,this.selectedfileupload_field[i]).subscribe(uploaddata =>{
 | 
				
			||||||
 | 
					    console.log(uploaddata);
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for (let i = 0; i < this.selectedimageupload_field.length; i++){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  this.mainService.uploadImageupload_field(data.id,tableName,this.selectedimageupload_field[i]).subscribe(uploaddata =>{
 | 
				
			||||||
 | 
					    console.log(uploaddata);
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for (let i = 0; i < this.selectedaudio_field.length; i++){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  this.mainService.uploadAudio_field(data.id,tableName,this.selectedaudio_field[i]).subscribe(uploaddata =>{
 | 
				
			||||||
 | 
					    console.log(uploaddata);
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for (let i = 0; i < this.selectedvideo_field.length; i++){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  this.mainService.uploadVideo_field(data.id,tableName,this.selectedvideo_field[i]).subscribe(uploaddata =>{
 | 
				
			||||||
 | 
					    console.log(uploaddata);
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      }, (error) => {
 | 
				
			||||||
 | 
					        console.log(error);
 | 
				
			||||||
 | 
					        if (error.status >= 200 && error.status <= 299) {
 | 
				
			||||||
 | 
					          // this.toastr.success("Added Succesfully");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (error.status >= 400 && error.status <= 499) {
 | 
				
			||||||
 | 
					          this.toastr.error("Not Added");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (error.status >= 500 && error.status <= 599) {
 | 
				
			||||||
 | 
					          this.toastr.error("Not Added");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    this.rowSelected = this.TestaentryForm.value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    setTimeout(() => {
 | 
				
			||||||
 | 
					      this.ngOnInit();
 | 
				
			||||||
 | 
					    }, 500);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  onnext() {
 | 
				
			||||||
 | 
					    this.router.navigate(["../../main/workflow"], { relativeTo: this.route });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  reset() {
 | 
				
			||||||
 | 
					    this.json = "";
 | 
				
			||||||
 | 
					    this.luisApp =
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      name: '',
 | 
				
			||||||
 | 
					      trained: 1,
 | 
				
			||||||
 | 
					      tested: 1,
 | 
				
			||||||
 | 
					      updated: 1,
 | 
				
			||||||
 | 
					      published: 1,
 | 
				
			||||||
 | 
					      created: 1,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    this.timelineStyle = {
 | 
				
			||||||
 | 
					      step0: { state: "current", open: true, failed: false },
 | 
				
			||||||
 | 
					      step1: { state: "not-started", open: false, failed: false },
 | 
				
			||||||
 | 
					 };
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  current() {
 | 
				
			||||||
 | 
					    console.log(this.timelineStyle)
 | 
				
			||||||
 | 
					    this.stringJson = JSON.stringify(this.timelineStyle);
 | 
				
			||||||
 | 
					    console.log("String json object :", this.stringJson);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					filePreviewfileupload_field: string | ArrayBuffer | null = null;
 | 
				
			||||||
 | 
					FileDatafileupload_field: {uploadedfile_name?:any, filePreview: string | ArrayBuffer | null }[] = []; // Initialize the array
 | 
				
			||||||
 | 
					selectedfileupload_field: File[]=[]; 
 | 
				
			||||||
 | 
					public onFileChangedfileupload_field(event, index) {
 | 
				
			||||||
 | 
					  const files = event.target.files;
 | 
				
			||||||
 | 
					  for (let i = 0; i < files.length; i++) {
 | 
				
			||||||
 | 
					    const file = files[i];
 | 
				
			||||||
 | 
					    this.FileDatafileupload_field[index].uploadedfile_name = files[i].name;
 | 
				
			||||||
 | 
					    this.selectedfileupload_field.push(files[i]);
 | 
				
			||||||
 | 
					    if (file.type.startsWith('file/')) {
 | 
				
			||||||
 | 
					      const reader = new FileReader();
 | 
				
			||||||
 | 
					      reader.onload = (e) => {
 | 
				
			||||||
 | 
					        // Set the file preview source
 | 
				
			||||||
 | 
					        const filePreview = e.target?.result as string;
 | 
				
			||||||
 | 
					        this.FileDatafileupload_field[index] = {
 | 
				
			||||||
 | 
					          ...this.FileDatafileupload_field[index], // Preserve existing properties
 | 
				
			||||||
 | 
					          filePreview: filePreview // Update only the filePreview property
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
 | 
					      reader.readAsDataURL(file);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					    onAddLinesfileupload_field(){
 | 
				
			||||||
 | 
					      this.FileDatafileupload_field.push({
 | 
				
			||||||
 | 
					        uploadedfile_name: "",
 | 
				
			||||||
 | 
					        filePreview: "",
 | 
				
			||||||
 | 
					        // f3: "",
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    deleteRowfileupload_field(index,id) {
 | 
				
			||||||
 | 
					      this.FileDatafileupload_field.splice(index, 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if(id){
 | 
				
			||||||
 | 
					      this.mainService.uploadfiledeletefileupload_field(id).subscribe(data =>{
 | 
				
			||||||
 | 
					        console.log(data);
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					filePreviewimageupload_field: string | ArrayBuffer | null = null;
 | 
				
			||||||
 | 
					FileDataimageupload_field: {uploadedfile_name?:any, filePreview: string | ArrayBuffer | null }[] = []; // Initialize the array
 | 
				
			||||||
 | 
					selectedimageupload_field: File[]=[]; 
 | 
				
			||||||
 | 
					public onFileChangedimageupload_field(event, index) {
 | 
				
			||||||
 | 
					  const files = event.target.files;
 | 
				
			||||||
 | 
					  for (let i = 0; i < files.length; i++) {
 | 
				
			||||||
 | 
					    const file = files[i];
 | 
				
			||||||
 | 
					    this.FileDataimageupload_field[index].uploadedfile_name = files[i].name;
 | 
				
			||||||
 | 
					    this.selectedimageupload_field.push(files[i]);
 | 
				
			||||||
 | 
					    if (file.type.startsWith('image/')) {
 | 
				
			||||||
 | 
					      const reader = new FileReader();
 | 
				
			||||||
 | 
					      reader.onload = (e) => {
 | 
				
			||||||
 | 
					        // Set the file preview source
 | 
				
			||||||
 | 
					        const filePreview = e.target?.result as string;
 | 
				
			||||||
 | 
					        this.FileDataimageupload_field[index] = {
 | 
				
			||||||
 | 
					          ...this.FileDataimageupload_field[index], // Preserve existing properties
 | 
				
			||||||
 | 
					          filePreview: filePreview // Update only the filePreview property
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
 | 
					      reader.readAsDataURL(file);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					    onAddLinesimageupload_field(){
 | 
				
			||||||
 | 
					      this.FileDataimageupload_field.push({
 | 
				
			||||||
 | 
					        uploadedfile_name: "",
 | 
				
			||||||
 | 
					        filePreview: "",
 | 
				
			||||||
 | 
					        // f3: "",
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    deleteRowimageupload_field(index,id) {
 | 
				
			||||||
 | 
					      this.FileDataimageupload_field.splice(index, 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if(id){
 | 
				
			||||||
 | 
					      this.mainService.uploadImageupload_fielddelete(id).subscribe(data =>{
 | 
				
			||||||
 | 
					        console.log(data);
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					filePreviewaudio_field: string | ArrayBuffer | null = null;
 | 
				
			||||||
 | 
					FileDataaudio_field: {uploadedfile_name?:any, filePreview: string | ArrayBuffer | null }[] = []; // Initialize the array
 | 
				
			||||||
 | 
					selectedaudio_field: File[]=[]; 
 | 
				
			||||||
 | 
					public onFileChangedaudio_field(event, index) {
 | 
				
			||||||
 | 
					  const files = event.target.files;
 | 
				
			||||||
 | 
					  for (let i = 0; i < files.length; i++) {
 | 
				
			||||||
 | 
					    const file = files[i];
 | 
				
			||||||
 | 
					    this.FileDataaudio_field[index].uploadedfile_name = files[i].name;
 | 
				
			||||||
 | 
					    this.selectedaudio_field.push(files[i]);
 | 
				
			||||||
 | 
					    if (file.type.startsWith('audio/')) {
 | 
				
			||||||
 | 
					      const reader = new FileReader();
 | 
				
			||||||
 | 
					      reader.onload = (e) => {
 | 
				
			||||||
 | 
					        // Set the file preview source
 | 
				
			||||||
 | 
					        const filePreview = e.target?.result as string;
 | 
				
			||||||
 | 
					        this.FileDataaudio_field[index] = {
 | 
				
			||||||
 | 
					          ...this.FileDataaudio_field[index], // Preserve existing properties
 | 
				
			||||||
 | 
					          filePreview: filePreview // Update only the filePreview property
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
 | 
					      reader.readAsDataURL(file);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					    onAddLinesaudio_field(){
 | 
				
			||||||
 | 
					      this.FileDataaudio_field.push({
 | 
				
			||||||
 | 
					        uploadedfile_name: "",
 | 
				
			||||||
 | 
					        filePreview: "",
 | 
				
			||||||
 | 
					        // f3: "",
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    deleteRowaudio_field(index,id) {
 | 
				
			||||||
 | 
					      this.FileDataaudio_field.splice(index, 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if(id){
 | 
				
			||||||
 | 
					      this.mainService.uploadAudio_fielddelete(id).subscribe(data =>{
 | 
				
			||||||
 | 
					        console.log(data);
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					filePreviewvideo_field: string | ArrayBuffer | null = null;
 | 
				
			||||||
 | 
					FileDatavideo_field: {uploadedfile_name?:any, filePreview: string | ArrayBuffer | null }[] = []; // Initialize the array
 | 
				
			||||||
 | 
					selectedvideo_field: File[]=[]; 
 | 
				
			||||||
 | 
					public onFileChangedvideo_field(event, index) {
 | 
				
			||||||
 | 
					  const files = event.target.files;
 | 
				
			||||||
 | 
					  for (let i = 0; i < files.length; i++) {
 | 
				
			||||||
 | 
					    const file = files[i];
 | 
				
			||||||
 | 
					    this.FileDatavideo_field[index].uploadedfile_name = files[i].name;
 | 
				
			||||||
 | 
					    this.selectedvideo_field.push(files[i]);
 | 
				
			||||||
 | 
					    if (file.type.startsWith('video/')) {
 | 
				
			||||||
 | 
					      const reader = new FileReader();
 | 
				
			||||||
 | 
					      reader.onload = (e) => {
 | 
				
			||||||
 | 
					        // Set the file preview source
 | 
				
			||||||
 | 
					        const filePreview = e.target?.result as string;
 | 
				
			||||||
 | 
					        this.FileDatavideo_field[index] = {
 | 
				
			||||||
 | 
					          ...this.FileDatavideo_field[index], // Preserve existing properties
 | 
				
			||||||
 | 
					          filePreview: filePreview // Update only the filePreview property
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
 | 
					      reader.readAsDataURL(file);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					    onAddLinesvideo_field(){
 | 
				
			||||||
 | 
					      this.FileDatavideo_field.push({
 | 
				
			||||||
 | 
					        uploadedfile_name: "",
 | 
				
			||||||
 | 
					        filePreview: "",
 | 
				
			||||||
 | 
					        // f3: "",
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    deleteRowvideo_field(index,id) {
 | 
				
			||||||
 | 
					      this.FileDatavideo_field.splice(index, 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if(id){
 | 
				
			||||||
 | 
					      this.mainService.uploadVideo_fielddelete(id).subscribe(data =>{
 | 
				
			||||||
 | 
					        console.log(data);
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FileDataImageupload_field: any[];
 | 
				
			||||||
 | 
					  selectedImageupload_field: any[];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FileDataAudio_field: any[];
 | 
				
			||||||
 | 
					  selectedAudio_field: any[];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FileDataVideo_field: any[];
 | 
				
			||||||
 | 
					  selectedVideo_field: any[];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// updateaction
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -0,0 +1,110 @@
 | 
				
			|||||||
 | 
					import { Injectable } from '@angular/core';
 | 
				
			||||||
 | 
					import { Observable } from "rxjs";
 | 
				
			||||||
 | 
					import { HttpClient, HttpHeaders, HttpParams, } from "@angular/common/http";
 | 
				
			||||||
 | 
					import { ApiRequestService } from "src/app/services/api/api-request.service";
 | 
				
			||||||
 | 
					import { environment } from 'src/environments/environment';
 | 
				
			||||||
 | 
					@Injectable({
 | 
				
			||||||
 | 
					  providedIn: 'root'
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					export class stepsservice{
 | 
				
			||||||
 | 
					  private StepperURL = "Stepper_table_config/Stepper_table_config";
 | 
				
			||||||
 | 
					  private TestaURL = "Testa/Testa" ;  constructor(
 | 
				
			||||||
 | 
					    private http: HttpClient,
 | 
				
			||||||
 | 
					    private apiRequest: ApiRequestService,
 | 
				
			||||||
 | 
					  ) { }
 | 
				
			||||||
 | 
					gettabledata(id: number): Observable<any> {
 | 
				
			||||||
 | 
					    const _http = this.StepperURL + "/stepId/" + id;
 | 
				
			||||||
 | 
					    return this.apiRequest.get(_http);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  saveStepperConfig(stepperId: number, tableId: number, tableName: string): Observable<any> {
 | 
				
			||||||
 | 
					    const params = new HttpParams()
 | 
				
			||||||
 | 
					      .set('stepperId', stepperId.toString())
 | 
				
			||||||
 | 
					      .set('tableId', tableId.toString())
 | 
				
			||||||
 | 
					      .set('tableName', tableName);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return this.apiRequest.post(this.StepperURL, null, params); // null body, params used
 | 
				
			||||||
 | 
					  }  getAllTesta(page?: number, size?: number): Observable<any> {
 | 
				
			||||||
 | 
					    return this.apiRequest.get(this.TestaURL);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  getTestaById(id: number): Observable<any> {
 | 
				
			||||||
 | 
					    const _http = this.TestaURL + "/" + id;
 | 
				
			||||||
 | 
					    return this.apiRequest.get(_http);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  createTesta(data: any): Observable<any> {
 | 
				
			||||||
 | 
					    return this.apiRequest.post(this.TestaURL, data);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  updateTesta(id: number, data: any): Observable<any> {
 | 
				
			||||||
 | 
					    const _http = this.TestaURL + "/" + id;
 | 
				
			||||||
 | 
					    return this.apiRequest.put(_http, data);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  deleteTesta(id: number): Observable<any> {
 | 
				
			||||||
 | 
					    const _http = this.TestaURL + "/" + id;
 | 
				
			||||||
 | 
					    return this.apiRequest.delete(_http);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uploadfilefileupload_field(ref:any, Testa:any, file:any): Observable<any>{
 | 
				
			||||||
 | 
					    const formData = new FormData();
 | 
				
			||||||
 | 
					    formData.append('file', file);
 | 
				
			||||||
 | 
					    return this.apiRequest.postFormData(`FileUpload/Uploadeddocs/${ref}/${Testa}`, formData);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uploadfilegetByIdfileupload_field(ref:any, Testa:any,): Observable<any> {
 | 
				
			||||||
 | 
					    return this.apiRequest.get(`FileUpload/Uploadeddocs/${ref}/${Testa}`);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uploadfiledeletefileupload_field(id: number): Observable<any> {
 | 
				
			||||||
 | 
					    return this.apiRequest.delete(`FileUpload/Uploadeddocs/${id}`);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uploadImageupload_field(ref:any, Testa:any, file:any): Observable<any>{
 | 
				
			||||||
 | 
					    const formData = new FormData();
 | 
				
			||||||
 | 
					    formData.append('file', file);
 | 
				
			||||||
 | 
					    return this.apiRequest.postFormData(`FileUpload/Uploadeddocs/${ref}/${Testa}`, formData);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uploadImageupload_fieldgetById(ref:any, Testa:any,): Observable<any> {
 | 
				
			||||||
 | 
					    return this.apiRequest.get(`FileUpload/Uploadeddocs/${ref}/${Testa}`);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uploadImageupload_fielddelete(id: number): Observable<any> {
 | 
				
			||||||
 | 
					    return this.apiRequest.delete(`FileUpload/Uploadeddocs/${id}`);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uploadAudio_field(ref:any, Testa:any, file:any): Observable<any>{
 | 
				
			||||||
 | 
					    const formData = new FormData();
 | 
				
			||||||
 | 
					    formData.append('file', file);
 | 
				
			||||||
 | 
					    return this.apiRequest.postFormData(`FileUpload/Uploadeddocs/${ref}/${Testa}`, formData);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uploadAudio_fieldgetById(ref:any, Testa:any,): Observable<any> {
 | 
				
			||||||
 | 
					    return this.apiRequest.get(`FileUpload/Uploadeddocs/${ref}/${Testa}`);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uploadAudio_fielddelete(id: number): Observable<any> {
 | 
				
			||||||
 | 
					    return this.apiRequest.delete(`FileUpload/Uploadeddocs/${id}`);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uploadVideo_field(ref:any, Testa:any, file:any): Observable<any>{
 | 
				
			||||||
 | 
					    const formData = new FormData();
 | 
				
			||||||
 | 
					    formData.append('file', file);
 | 
				
			||||||
 | 
					    return this.apiRequest.postFormData(`FileUpload/Uploadeddocs/${ref}/${Testa}`, formData);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uploadVideo_fieldgetById(ref:any, Testa:any,): Observable<any> {
 | 
				
			||||||
 | 
					    return this.apiRequest.get(`FileUpload/Uploadeddocs/${ref}/${Testa}`);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uploadVideo_fielddelete(id: number): Observable<any> {
 | 
				
			||||||
 | 
					    return this.apiRequest.delete(`FileUpload/Uploadeddocs/${id}`);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// updateaction
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -1,3 +1,5 @@
 | 
				
			|||||||
 | 
					import { stepsComponent } from './BuilderComponents/stepperworkflow/steps/steps.component';
 | 
				
			||||||
 | 
					import { TestaComponent } from './BuilderComponents/basicp1/Testa/Testa.component';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { SequencegenaratorComponent } from './fnd/sequencegenarator/sequencegenarator.component';
 | 
					import { SequencegenaratorComponent } from './fnd/sequencegenarator/sequencegenarator.component';
 | 
				
			||||||
import { Component, NgModule } from '@angular/core';
 | 
					import { Component, NgModule } from '@angular/core';
 | 
				
			||||||
@ -256,6 +258,12 @@ const routes: Routes = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      // buildercomponents
 | 
					      // buildercomponents
 | 
				
			||||||
 | 
					{path:'steps/:id',component:stepsComponent},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{path:'Testa',component:TestaComponent},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,5 @@
 | 
				
			|||||||
 | 
					import { stepsComponent } from './BuilderComponents/stepperworkflow/steps/steps.component';
 | 
				
			||||||
 | 
					import { TestaComponent } from './BuilderComponents/basicp1/Testa/Testa.component';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { CommonModule } from '@angular/common';
 | 
					import { CommonModule } from '@angular/common';
 | 
				
			||||||
@ -129,6 +131,12 @@ import { Stepper_workflowComponent } from './BuilderComponents/stepperworkflow/S
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // buildercomponents
 | 
					    // buildercomponents
 | 
				
			||||||
 | 
					stepsComponent,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TestaComponent,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -226,10 +226,13 @@
 | 
				
			|||||||
  "MENU_ACTION_LINK": "Menu Action Link",
 | 
					  "MENU_ACTION_LINK": "Menu Action Link",
 | 
				
			||||||
  "STATUS": "Status",
 | 
					  "STATUS": "Status",
 | 
				
			||||||
  "SUB_MENU": "Sub Menu",
 | 
					  "SUB_MENU": "Sub Menu",
 | 
				
			||||||
  "Active": "Active",
 | 
					  "Testa": "Testa",
 | 
				
			||||||
  "Description": "Description",
 | 
					  "a": "a",
 | 
				
			||||||
 | 
					  "video_Field": "video_Field",
 | 
				
			||||||
 | 
					  "b": "b",
 | 
				
			||||||
 | 
					  "c": "c",
 | 
				
			||||||
  "Fileupload_Field": "Fileupload_Field",
 | 
					  "Fileupload_Field": "Fileupload_Field",
 | 
				
			||||||
  "Test22": "Test22",
 | 
					  "Imageupload_Field": "Imageupload_Field",
 | 
				
			||||||
  "Test11": "Test11",
 | 
					  "audio_Field": "audio_Field",
 | 
				
			||||||
  "Name": "Name"
 | 
					  "Name": "Name"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user