build_app

This commit is contained in:
string 2024-11-04 09:05:29 +00:00
parent 19ab2daf83
commit 125aa7fc60
12 changed files with 1026 additions and 41 deletions

@ -72,6 +72,9 @@ public class BuilderService {
addCustomMenu( "Formb", "Transcations");
addCustomMenu( "Formb", "Transcations");
System.out.println("dashboard and menu inserted...");

@ -23,6 +23,28 @@ import com.realnet.basicp1.Services.FormbService ;
@RequestMapping(value = "/Formb")
@CrossOrigin("*")
@RestController
@ -39,6 +61,28 @@ public class FormbController {
@PostMapping("/Formb")
public Formb Savedata(@RequestBody Formb data) {
Formb save = Service.Savedata(data) ;
@ -47,6 +91,28 @@ public class FormbController {
System.out.println("data saved..." + save);
return save;
@ -96,4 +162,26 @@ public class FormbController {
}

@ -11,6 +11,28 @@ import com.realnet.WhoColumn.Extension;
@Entity
@Data
public class Formb extends Extension {
@ -23,12 +45,38 @@ import com.realnet.WhoColumn.Extension;
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String name;
private String textf;
private int numberg;
private String phoneg;
@Column(length = 2000)
private String description;
private String paragraphg;
private boolean active;
private String passwordg;
@Transient
private String confirmpasswordg;
@Column(length = 2000)
private String textareag;
private String dateg;
private String datetimey;
private String emailg;
private boolean toggler;
private String urlg;
private int decimalh;
private int percentages;
private String recaptchad;
}

@ -18,6 +18,28 @@ import com.realnet.users.entity1.AppUser;
import org.springframework.stereotype.Service;
@Service
@ -31,6 +53,28 @@ private FormbRepository Repository;
public Formb Savedata(Formb data) {
@ -38,6 +82,28 @@ public Formb Savedata(Formb data) {
Formb save = Repository.save(data);
return save;
}
@ -64,11 +130,33 @@ public Formb getdetailsbyId(Integer id) {
public Formb update(Formb data,Integer id) {
Formb old = Repository.findById(id).get();
old.setName(data.getName());
old.setTextf(data.getTextf());
old.setDescription(data.getDescription());
old.setNumberg(data.getNumberg());
old.setActive (data.isActive());
old.setPhoneg(data.getPhoneg());
old.setParagraphg(data.getParagraphg());
old.setPasswordg(data.getPasswordg());
old.setTextareag(data.getTextareag());
old.setDateg(data.getDateg());
old.setDatetimey(data.getDatetimey());
old.setEmailg(data.getEmailg());
old.setToggler (data.isToggler());
old.setUrlg(data.getUrlg());
old.setDecimalh(data.getDecimalh());
old.setPercentages(data.getPercentages());
old.setRecaptchad(data.getRecaptchad());
final Formb test = Repository.save(old);
return test;}
@ -78,6 +166,28 @@ final Formb test = Repository.save(old);
public AppUser getUser() {
AppUser user = userService.getLoggedInUser();
return user;

@ -1,2 +1,2 @@
CREATE TABLE db.Formb(id BIGINT NOT NULL AUTO_INCREMENT, active VARCHAR(400), description VARCHAR(400), name VARCHAR(400), PRIMARY KEY (id));
CREATE TABLE db.Formb(id BIGINT NOT NULL AUTO_INCREMENT, datetimey VARCHAR(400), paragraphg VARCHAR(400), percentages int, numberg int, toggler VARCHAR(400), emailg VARCHAR(400), phoneg VARCHAR(400), recaptchad VARCHAR(400), urlg VARCHAR(400), passwordg VARCHAR(400), dateg Date, textf VARCHAR(400), textareag VARCHAR(400), decimalh int, PRIMARY KEY (id));

@ -2,14 +2,14 @@
export const LoginEnvironment = {
"templateNo": "<templateNo>",
"loginHeading": "<loginHeading>",
"loginHeading2": "<loginHeading2>",
"isSignup": "<isSignup>",
"loginSignup": "<loginSignup> ",
"loginSignup2": "<loginSignup2>",
"loginForgotpass": "<loginForgotpass>",
"loginImage": "<loginImage>",
"loginImageURL": "<loginImageURL>"
"templateNo": "Template 1",
"loginHeading": "Welcome to",
"loginHeading2": "io8.dev",
"isSignup": "true",
"loginSignup": "Use your ID to sign in OR ",
"loginSignup2": "create one now",
"loginForgotpass": "FORGOT PASSWORD?",
"loginImage": "[]",
"loginImageURL": "null"
}

@ -23,15 +23,59 @@
<div *ngIf="error;else loadingSpinner">{{error}}</div>
</clr-dg-placeholder>
<clr-dg-column [clrDgField]="' name'"> <ng-container *clrDgHideableColumn="{hidden: false}"> Name
<clr-dg-column [clrDgField]="' textf'"> <ng-container *clrDgHideableColumn="{hidden: false}"> Textf
</ng-container></clr-dg-column>
<clr-dg-column [clrDgField]="' description'"> <ng-container *clrDgHideableColumn="{hidden: false}"> Description
<clr-dg-column [clrDgField]="' numberg'"> <ng-container *clrDgHideableColumn="{hidden: false}"> Numberg
</ng-container></clr-dg-column>
<clr-dg-column [clrDgField]="' active'"> <ng-container *clrDgHideableColumn="{hidden: false}"> Active
<clr-dg-column [clrDgField]="' phoneg'"> <ng-container *clrDgHideableColumn="{hidden: false}"> Phoneg
</ng-container></clr-dg-column>
<clr-dg-column [clrDgField]="' paragraphg'"> <ng-container *clrDgHideableColumn="{hidden: false}"> Paragraphg
</ng-container></clr-dg-column>
<clr-dg-column [clrDgField]="'passwordg'"> <ng-container *clrDgHideableColumn="{hidden: false}">Passwordg
</ng-container></clr-dg-column>
<clr-dg-column [clrDgField]="' textareag'"> <ng-container *clrDgHideableColumn="{hidden: false}"> Textareag
</ng-container></clr-dg-column>
<clr-dg-column [clrDgField]="' dateg'"> <ng-container *clrDgHideableColumn="{hidden: false}"> Dateg
</ng-container></clr-dg-column>
<clr-dg-column [clrDgField]="' datetimey'"> <ng-container *clrDgHideableColumn="{hidden: false}"> Datetimey
</ng-container></clr-dg-column>
<clr-dg-column [clrDgField]="' emailg'"> <ng-container *clrDgHideableColumn="{hidden: false}"> Emailg
</ng-container></clr-dg-column>
<clr-dg-column [clrDgField]="' toggler'"> <ng-container *clrDgHideableColumn="{hidden: false}"> toggler
</ng-container></clr-dg-column>
<clr-dg-column [clrDgField]="'urlg'"> <ng-container *clrDgHideableColumn="{hidden: false}"> Urlg
</ng-container></clr-dg-column>
<clr-dg-column [clrDgField]="' decimalh'"> <ng-container *clrDgHideableColumn="{hidden: false}"> Decimalh
</ng-container></clr-dg-column>
<clr-dg-column [clrDgField]="' percentages'"> <ng-container *clrDgHideableColumn="{hidden: false}"> Percentages
</ng-container></clr-dg-column>
<clr-dg-column [clrDgField]="' recaptchad'"> <ng-container *clrDgHideableColumn="{hidden: false}"> recaptchad
</ng-container></clr-dg-column>
@ -43,14 +87,47 @@
<clr-dg-row *clrDgItems="let user of product" [clrDgItem]="user">
<clr-dg-cell>{{user. name }}</clr-dg-cell>
<clr-dg-cell>{{user. textf }}</clr-dg-cell>
<clr-dg-cell (click)="goToReplaceStringdescription (user.description)" style="cursor: pointer; align-items: center;"><clr-icon shape="details"></clr-icon>
<clr-dg-cell>{{user. numberg }}</clr-dg-cell>
<clr-dg-cell>{{user. phoneg }}</clr-dg-cell>
<clr-dg-cell (click)="goToReplaceStringparagraphg(user.paragraphg)" style="cursor: pointer; align-items: center;"><clr-icon shape="details"></clr-icon></clr-dg-cell>
<clr-dg-cell>{{user. passwordg }}</clr-dg-cell>
<clr-dg-cell (click)="goToReplaceStringtextareag (user.textareag)" style="cursor: pointer; align-items: center;"><clr-icon shape="details"></clr-icon>
</clr-dg-cell>
<clr-dg-cell>{{user. active }}</clr-dg-cell>
<clr-dg-cell>{{user. dateg }}</clr-dg-cell>
<clr-dg-cell>{{user. datetimey }}</clr-dg-cell>
<clr-dg-cell>{{user. emailg }}</clr-dg-cell>
<clr-dg-cell>{{user. toggler }}</clr-dg-cell>
<clr-dg-cell (click)="goTourlgUrl(user.urlg)" style="cursor: pointer; color: rgb(108, 108, 194);">{{user.urlg}}</clr-dg-cell>
<clr-dg-cell>{{user. decimalh }}</clr-dg-cell>
<clr-dg-cell>{{user. percentages }}</clr-dg-cell>
<clr-dg-cell>{{user. recaptchad }}</clr-dg-cell>
<!-- who column -->
@ -207,13 +284,39 @@
<clr-modal [(clrModalOpen)]="rsModaldescription" [clrModalSize]="'xl'" [clrModalStaticBackdrop]="true">
<clr-modal [(clrModalOpen)]="rsModalparagraphg" [clrModalSize]="'xl'" [clrModalStaticBackdrop]="true">
<div class="modal-body">
<textarea class="form-control" style="width:100%; height: 400px;" readonly>{{rowSelected}}</textarea>
</div></clr-modal>
<clr-modal [(clrModalOpen)]="rsModaltextareag" [clrModalSize]="'xl'" [clrModalStaticBackdrop]="true">
<div class="modal-body">
<textarea class="form-control" style="width:100%; height: 400px;" readonly>{{rowSelected}}</textarea>
</div></clr-modal>
<!-- // EDIT DATA......... -->
<clr-modal [(clrModalOpen)]="modalEdit" [clrModalSize]="'lg'" [clrModalStaticBackdrop]="true">
<h3 class="modal-title">Update Formb
@ -222,6 +325,28 @@
</h3>
<div class="modal-body" *ngIf="rowSelected.id">
<h2 class="heading">{{rowSelected.id}}</h2>
@ -229,18 +354,82 @@
<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" />
<label>Textf</label>
<input class="clr-input" type="text" [(ngModel)]="rowSelected.textf" name="textf" />
</div>
<div class="clr-col-sm-12">
<label>Numberg</label>
<input id="name" class="clr-input" type="number" [(ngModel)]="rowSelected.numberg" name="numberg" />
</div>
<div class="clr-col-sm-12">
<label> Phoneg</label>
<input id="name" class="clr-input" type="Text" [(ngModel)]="rowSelected.phoneg " name="phoneg" pattern="((\\+)?([1-9]{2}))?[1-9]{1}[0-9]{9}$" />
<div *ngIf="rowSelected.phoneg && !isValidPhoneg(rowSelected.phoneg)" class="error_mess">
* Please Follow your pattern,+91 Enter 10 digit Mobile Number.
</div> </div>
<div class="clr-col-sm-12">
<label> Paragraphg</label>
<input id="name" type="Text" class="form-control" style="border: none; outline: none; height:33px !important;" [(ngModel)]="rowSelected.paragraphg" name=" paragraphg " /> </div>
<div class="clr-col-sm-12">
<label> Passwordg</label><br>
<div><input [type]="newpHidepasswordg ? 'password': 'text'" class="clr-input" style="width: 93% !important;" [(ngModel)]="rowSelected.passwordg" name="passwordg">&nbsp;
<clr-icon [attr.shape]="newIconpasswordg" (click)="newShapeChangerpasswordg()"></clr-icon></div>
</div>
<div class="clr-col-sm-12">
<label> Description</label>
<textarea cols="10" rows="2"[(ngModel)]="rowSelected.description" name="description " placeholder="Textarea"> </textarea>
<label> Textareag</label>
<textarea cols="10" rows="2"[(ngModel)]="rowSelected.textareag" name="textareag " placeholder="Textarea"> </textarea>
</div>
<div class="clr-col-sm-12">
<label>Dateg</label>
<input id="name" class="clr-input" type="date" [(ngModel)]="rowSelected.dateg" name="dateg" />
</div>
<div class="clr-col-sm-12">
<label>Datetimey</label>
<input class="clr-input" type="text" [(ngModel)]="rowSelected.datetimey" name="datetimey" />
</div>
<div class="clr-col-sm-12">
<label> Emailg</label>
<input id="name" class="clr-input" type="email"
[(ngModel)]="rowSelected.emailg " name="emailg" pattern="[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$">
<div *ngIf="rowSelected.emailg && !isValidemailg(rowSelected.emailg )" class="error_mess">
* Email must be a valid email address.
</div> </div>
<div class="clr-col-sm-12">
<label> Active</label>
<input type="checkbox" name="active" clrToggle [(ngModel)]="rowSelected.active" /> </div>
<label> toggler</label>
<input type="checkbox" name="toggler" clrToggle [(ngModel)]="rowSelected.toggler" /> </div>
<div class="clr-col-sm-12">
<label> Urlg</label>
<input type="url" name="urlg" [(ngModel)]="rowSelected.urlg" placeholder="Enter URL" class="clr-input" pattern="https?://.+">
<div *ngIf="!isValidurlg(rowSelected.urlg )" class="error_mess"> * Please enter a valid URL. </div> </div>
<div class="clr-col-sm-12">
<label>Decimalh</label>
<input id="name" class="clr-input" type="number" [(ngModel)]="rowSelected.decimalh" name="decimalh" />
</div>
<div class="clr-col-sm-12">
<label>Percentages</label>
<input id="name" class="clr-input" type="number" [(ngModel)]="rowSelected.percentages" name="percentages" />
</div>
<div class="clr-col-sm-12">
<label> recaptchad</label> <div><b>{{ recaptchadCode }}</b> &nbsp; <button class="btn btn-icon btn-primary btn-sm" (click)="generaterecaptchad()">
<clr-icon shape="refresh"></clr-icon> </button></div>
<input type="text" name="recaptchad" [(ngModel)]="rowSelected.recaptchad" (ngModelChange)="checkrecaptchadEdit()" class="clr-input">
<div *ngIf=" recaptchadMismatch" class="error_mess">
<div class="error_mess"> recaptchad not valid.</div>
</div>
</div>
</div>
@ -249,6 +438,28 @@
<!-- form code start -->
<div *ngIf="checkFormCode">
<h4 style="font-weight: 300;display: inline;">Extension</h4>
@ -299,6 +510,28 @@
<!-- aeroplane icon -->
&nbsp; &nbsp; &nbsp; &nbsp;
<a *ngIf="userrole.includes('ROLE_ADMIN')" style="float: right;" href="javascript:void(0)" role="tooltip" aria-haspopup="true"
@ -313,18 +546,102 @@
<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" />
<label> Textf</label>
<input class="clr-input" type="text" formControlName="textf" />
</div>
<div class="clr-col-sm-12">
<label> Numberg</label>
<input class="clr-input" type="number" formControlName="numberg" />
<div *ngIf="submitted && entryForm.controls.numberg.errors" class="error_mess">
<div *ngIf="submitted && entryForm.controls.numberg.errors.required" class="error_mess">*This field is Required</div>
</div>
</div>
<div class="clr-col-sm-12">
<label> Phoneg</label>
<input class="clr-input" type="text" formControlName="phoneg" pattern="((\+)?([1-9]{2}))?[1-9]{1}[0-9]{9}$" />
<div *ngIf="submitted && entryForm.controls['phoneg'].errors" class="error_mess">
<div *ngIf="submitted && entryForm.controls['phoneg'].hasError('pattern')" class="error_mess">* Please Follow your pattern,+91 Enter 10 digit Mobile Number.
</div> </div> </div>
<div class="clr-col-sm-12">
<label>Paragraphg</label>
<input class="form-control" type="Text" formControlName="paragraphg" style="border: none; outline: none; height:33px !important;" />
</div>
<div class="clr-col-sm-12">
<label>Passwordg</label><br>
<div><input class="clr-input" style="width: 93% !important;" [type]="newaddpHidepasswordg ? 'password': 'text'" formControlName="passwordg" autocomplete >&nbsp;
<clr-icon [attr.shape]="newaddIconpasswordg" (click)="newaddChangerpasswordg()"></clr-icon></div>
</div>
<div class="clr-col-sm-12">
<label>Confirm Passwordg</label><br>
<input type="password" class="clr-input" formControlName="confirmpasswordg" autocomplete >
<div *ngIf="entryForm.controls.confirmpasswordg.errors" class="error_mess">
<div *ngIf="entryForm.controls.confirmpasswordg.errors.confirmedpasswordgValidator" class="error_mess">* Password and Confirm Password must be match.</div>
</div>
</div>
<div class="clr-col-sm-12">
<label> Description</label>
<textarea cols="10" rows="2" formControlName="description" placeholder="Textarea"> </textarea>
<label> Textareag</label>
<textarea cols="10" rows="2" formControlName="textareag" placeholder="Textarea"> </textarea>
</div>
<div class="clr-col-sm-12">
<label> Dateg</label>
<input class="clr-input" type="date" formControlName="dateg" />
</div>
<div class="clr-col-sm-12">
<label> Datetimey</label>
<input class="clr-input" type="text" formControlName="datetimey" />
</div>
<div class="clr-col-sm-12">
<label> Emailg</label>
<input class="clr-input" type="email" formControlName="emailg" pattern="[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$">
<div *ngIf="entryForm.controls['emailg'].errors" class="error_mess">
<div *ngIf="entryForm.controls['emailg'].hasError('pattern')" class="error_mess">* Email must be a valid email address
</div> </div>
</div>
<div class="clr-col-sm-12">
<label> Active</label>
<input type="checkbox" formControlName="active" clrToggle/> </div>
<label> toggler</label>
<input type="checkbox" formControlName="toggler" clrToggle/> </div>
<div class="clr-col-sm-12">
<label> Urlg </label>
<input type="url" formControlName="urlg" class="clr-input" pattern="https?://.+">
<div *ngIf="entryForm.controls['urlg'].errors" class="error_mess">
<div *ngIf="entryForm.controls['urlg'].hasError('pattern')" class="error_mess"> * Please enter a valid URL.</div>
</div> </div>
<div class="clr-col-sm-12">
<label> Decimalh</label>
<input class="clr-input" type="number" formControlName="decimalh" />
<div *ngIf="submitted && entryForm.controls.decimalh.errors" class="error_mess">
<div *ngIf="submitted && entryForm.controls.decimalh.errors.required" class="error_mess">*This field is Required</div>
</div>
</div>
<div class="clr-col-sm-12">
<label> Percentages</label>
<input class="clr-input" type="number" formControlName="percentages" />
<div *ngIf="submitted && entryForm.controls.percentages.errors" class="error_mess">
<div *ngIf="submitted && entryForm.controls.percentages.errors.required" class="error_mess">*This field is Required</div>
</div>
</div>
<div class="clr-col-sm-12">
<label> recaptchad</label><div><b>{{ recaptchadCode }}</b> &nbsp; <button class="btn btn-icon btn-primary btn-sm" (click)="generaterecaptchad()"><clr-icon shape="refresh"></clr-icon></button></div>
<input type="text" formControlName="recaptchad" class="clr-input">
<div *ngIf="submitted && entryForm.controls.recaptchad.errors.required" class="error_mess">*This field is Required</div>
<div *ngIf="submitted && entryForm.get('recaptchad').errors && entryForm.get('recaptchad').dirty" class="error_mess">
<div *ngIf="submitted && entryForm.controls['recaptchad'].hasError('recaptchadMismatch')" class="error_mess"> recaptchad not valid.</div>
</div>
</div>
</div>
@ -334,6 +651,28 @@
<!-- form code start -->
@ -372,4 +711,26 @@
<!-- htmlpopup -->

@ -63,11 +63,34 @@ private userInfoService:UserInfoService,
this.userrole=this.userInfoService.getRoles();
this.getData();
this.entryForm = this._fb.group({
name : [null],
textf : [null],
description : [null],
numberg : [null,[Validators.required]],
active : [false],
phoneg: ['+91'],
paragraphg : [null],
passwordg : [null],
confirmpasswordg : [null],
textareag : [null],
dateg : [null],
datetimey : [null],
emailg : [null],
toggler : [false],
urlg : [null],
decimalh : [null,[Validators.required]],
percentages : [null,[Validators.required]],
recaptchad : [null, [Validators.required,this.checkrecaptchad.bind(this)]],
@ -76,6 +99,29 @@ active : [false],
}, {
validator: ConfirmedpasswordgValidator('passwordg', 'confirmpasswordg')
}); // component_button200
// form code start
this.extensionService.getJsonObjectsByFormCodeList(this.formcode).subscribe(data => {
@ -104,6 +150,28 @@ active : [false],
this.generaterecaptchad()
}
@ -112,6 +180,28 @@ active : [false],
error;
getData() {
this.mainService.getAll().subscribe((data) => {
@ -135,6 +225,28 @@ active : [false],
this.modalEdit = true;
}
@ -161,6 +273,28 @@ active : [false],
//console.log("in update");
console.log("id " + id);
console.log(this.rowSelected);
@ -178,6 +312,28 @@ active : [false],
}, (error) => {
console.log(error);
if (error.status >= 200 && error.status <= 299) {
@ -202,6 +358,28 @@ onCreate() {
this.mainService.create(this.entryForm.value).subscribe(
(data) => {
console.log(data);
@ -214,6 +392,28 @@ onCreate() {
}, (error) => {
console.log(error);
@ -238,6 +438,28 @@ this.modalAdd = true; this.submitted = false;
}
submitted = false;
@ -251,11 +473,78 @@ onSubmit() {
}
rsModaldescription = false;
goToReplaceStringdescription(row){
this.rowSelected = row; this.rsModaldescription =true; }
isValidPhoneg(phone: string): boolean {
const phonePattern = /^(\+[1-9][0-9]{0,2})?[1-9][0-9]{9}$/;
return phonePattern.test(phone);
}
rsModalparagraphg = false;
goToReplaceStringparagraphg (row){
this.rowSelected = row; this.rsModalparagraphg =true; }
newpHidepasswordg: boolean = true;
newIconpasswordg: string = "eye";
newShapeChangerpasswordg() {
this.newpHidepasswordg = !this.newpHidepasswordg;
if(this.newpHidepasswordg){
this.newIconpasswordg = 'eye' } else { this.newIconpasswordg = 'eye-hide' }
}
newaddpHidepasswordg: boolean = true;
newaddIconpasswordg: string = "eye";
newaddChangerpasswordg() { this.newaddpHidepasswordg = !this.newaddpHidepasswordg;
if(this.newaddpHidepasswordg){ this.newaddIconpasswordg = 'eye' } else {
this.newaddIconpasswordg = 'eye-hide' } }
rsModaltextareag = false;
goToReplaceStringtextareag(row){
this.rowSelected = row; this.rsModaltextareag =true; }
isValidemailg(email: string): boolean {
const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
return emailPattern.test(email); }
isValidurlg(url: string): boolean {
return /^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/.test(url); }
goTourlgUrl(val){ window.open(val) }
recaptchadCode = '';
generaterecaptchad (): void {
const possibleCharacters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
const codeLength = 6; // Change to desired length
let recaptchad= '';
for (let i = 0; i < codeLength; i++) {
const randomIndex = Math.floor(Math.random() * possibleCharacters.length);
recaptchad += possibleCharacters.charAt(randomIndex);
}
this.recaptchadCode = recaptchad;
}
checkrecaptchad(control: AbstractControl): ValidationErrors | null {
if (control.value !== this.recaptchadCode) {
return { recaptchadMismatch: true };
}
return null;
}
recaptchadMismatch = false;
checkrecaptchadEdit(): void {
if (this.rowSelected.recaptchad !== this. recaptchadCode) {
this. recaptchadMismatch = true; } else { this.recaptchadMismatch = false; } }
// updateaction
}
@ -264,3 +553,39 @@ this.rowSelected = row; this.rsModaldescription =true; }
export function ConfirmedpasswordgValidator(controlName: string, matchingControlName: string){
return (formGroup: FormGroup) => {
const control = formGroup.controls[controlName];
const matchingControl = formGroup.controls[matchingControlName];
if (matchingControl.errors && !matchingControl.errors.confirmedpasswordgValidator) {
return;
}
if (control.value !== matchingControl.value) {
matchingControl.setErrors({ confirmedpasswordgValidator: true });
} else {
matchingControl.setErrors(null);
}
}
}

@ -1,3 +1,4 @@
import { FormbComponent } from './BuilderComponents/basicp1/Formb/Formb.component';
@ -241,6 +242,8 @@ children: [
// buildercomponents
{path:'Formb',component:FormbComponent},

@ -1,3 +1,4 @@
import { FormbComponent } from './BuilderComponents/basicp1/Formb/Formb.component';
@ -143,6 +144,8 @@ import { MappingruleeditComponent } from './datamanagement/mappingrule/mappingru
// buildercomponents
FormbComponent,