build_app

This commit is contained in:
string 2024-11-05 03:43:44 +00:00
parent 5a4519e89f
commit adfb264f56
13 changed files with 1990 additions and 0 deletions

@ -69,6 +69,9 @@ public class BuilderService {
executeDump(true);
// ADD OTHER SERVICE
addCustomMenu( "Formb", "Transcations");
System.out.println("dashboard and menu inserted...");

@ -0,0 +1,187 @@
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.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.http.ResponseEntity;
import org.springframework.data.domain.Pageable;
import org.springframework.beans.factory.annotation.*;
import com.realnet.basicp1.Entity.Formb;
import com.realnet.basicp1.Services.FormbService ;
@RequestMapping(value = "/Formb")
@CrossOrigin("*")
@RestController
public class FormbController {
@Autowired
private FormbService Service;
@Value("${projectPath}")
private String projectPath;
@PostMapping("/Formb")
public Formb Savedata(@RequestBody Formb data) {
Formb save = Service.Savedata(data) ;
System.out.println("data saved..." + save);
return save;
}
@PutMapping("/Formb/{id}")
public Formb update(@RequestBody Formb data,@PathVariable Integer id ) {
Formb update = Service.update(data,id);
System.out.println("data update..." + update);
return update;
}
// get all with pagination
@GetMapping("/Formb/getall/page")
public Page<Formb> getall(@RequestParam(value = "page", required = false) Integer page,
@RequestParam(value = "size", required = false) Integer size) {
Pageable paging = PageRequest.of(page, size);
Page<Formb> get = Service.getAllWithPagination(paging);
return get;
}
@GetMapping("/Formb")
public List<Formb> getdetails() {
List<Formb> get = Service.getdetails();
return get;
}
// get all without authentication
@GetMapping("/token/Formb")
public List<Formb> getallwioutsec() {
List<Formb> get = Service.getdetails();
return get;
}
@GetMapping("/Formb/{id}")
public Formb getdetailsbyId(@PathVariable Integer id ) {
Formb get = Service.getdetailsbyId(id);
return get;
}
@DeleteMapping("/Formb/{id}")
public void delete_by_id(@PathVariable Integer id ) {
Service.delete_by_id(id);
}
}

@ -0,0 +1,82 @@
package com.realnet.basicp1.Entity;
import lombok.*;
import com.realnet.WhoColumn.Extension;
import javax.persistence.*;
import java.time.LocalDateTime;
import java.util.*;
@Entity
@Data
public class Formb extends Extension {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String textf;
private int numberg;
private String phoneg;
@Column(length = 2000)
private String paragraphg;
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;
}

@ -0,0 +1,43 @@
package com.realnet.basicp1.Repository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.*;
import com.realnet.basicp1.Entity.Formb;
@Repository
public interface FormbRepository extends JpaRepository<Formb, Integer> {
}

@ -0,0 +1,195 @@
package com.realnet.basicp1.Services;
import com.realnet.basicp1.Repository.FormbRepository;
import com.realnet.basicp1.Entity.Formb;import java.util.List;
import java.util.ArrayList;
import org.springframework.beans.factory.annotation.Autowired;
import com.realnet.SequenceGenerator.Service.SequenceService;
import com.realnet.Notification.Entity.NotificationService;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.http.ResponseEntity;
import com.realnet.users.service1.AppUserServiceImpl;
import org.springframework.http.HttpStatus;
import com.realnet.users.entity1.AppUser;
import org.springframework.stereotype.Service;
@Service
public class FormbService {
@Autowired
private FormbRepository Repository;
@Autowired
private AppUserServiceImpl userService;
public Formb Savedata(Formb data) {
Formb save = Repository.save(data);
return save;
}
// get all with pagination
public Page<Formb> getAllWithPagination(Pageable page) {
return Repository.findAll(page);
}
public List<Formb> getdetails() {
return (List<Formb>) Repository.findAll();
}
public Formb getdetailsbyId(Integer id) {
return Repository.findById(id).get();
}
public void delete_by_id(Integer id) {
Repository.deleteById(id);
}
public Formb update(Formb data,Integer id) {
Formb old = Repository.findById(id).get();
old.setTextf(data.getTextf());
old.setNumberg(data.getNumberg());
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;}
public AppUser getUser() {
AppUser user = userService.getLoggedInUser();
return user;
}}

@ -0,0 +1,2 @@
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));

@ -0,0 +1,736 @@
<ol class="breadcrumb breadcrumb-arrow font-trirong">
<li><a href="javascript://"> Formb</a></li>
</ol>
<div class="dg-wrapper">
<div class="clr-row">
<div class="clr-col-8">
<h3>Formb </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]="' textf'"> <ng-container *clrDgHideableColumn="{hidden: false}"> Textf
</ng-container></clr-dg-column>
<clr-dg-column [clrDgField]="' numberg'"> <ng-container *clrDgHideableColumn="{hidden: false}"> Numberg
</ng-container></clr-dg-column>
<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>
<!-- 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. textf }}</clr-dg-cell>
<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. 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 -->
<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>
<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
</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>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> 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> 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>
<!-- 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 Formb
<!-- aeroplane icon -->
&nbsp; &nbsp; &nbsp; &nbsp;
<a *ngIf="userrole.includes('ROLE_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: 'Formb_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> 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> 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> 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>
<!-- 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,591 @@
import { Component, OnInit } from '@angular/core';
import { ToastrService } from 'ngx-toastr';
import { AlertService } from 'src/app/services/alert.service';
import { Formbservice} from './Formb.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 { Formbcardvariable } from './Formb_cardvariable';
import { UserInfoService } from 'src/app/services/user-info.service';
declare var JsBarcode: any;
@Component({
selector: 'app-Formb',
templateUrl: './Formb.component.html',
styleUrls: ['./Formb.component.scss']
})
export class FormbComponent implements OnInit {
cardButton = Formbcardvariable.cardButton;
cardmodeldata = Formbcardvariable.cardmodeldata;
public dashboardArray: DashboardContentModel2[];
isCardview = Formbcardvariable.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 = 'Formb_formCode'
tableName = 'Formb'; checkFormCode; selected: any[] = []; constructor(
private extensionService: ExtensionService,
private userInfoService:UserInfoService,
private mainService:Formbservice,
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({
textf : [null],
numberg : [null,[Validators.required]],
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)]],
}, {
validator: ConfirmedpasswordgValidator('passwordg', 'confirmpasswordg')
}); // 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 === "Formb_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
this.generaterecaptchad()
}
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.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");
}
}, (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");
}
}, (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;
}
submitted = false;
onSubmit() {
console.log(this.entryForm.value);
this.submitted = true;
if (this.entryForm.invalid) {
return;
}this.onCreate();
}
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
}
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);
}
}
}

@ -0,0 +1,61 @@
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 Formbservice{
private baseURL = "Formb/Formb" ; 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);
}
// updateaction
}

@ -0,0 +1,4 @@
export const Formbcardvariable = {
"cardButton": false,
"cardmodeldata": ``
}

@ -1,3 +1,4 @@
import { FormbComponent } from './BuilderComponents/basicp1/Formb/Formb.component';
import { SequencegenaratorComponent } from './fnd/sequencegenarator/sequencegenarator.component';
@ -240,6 +241,9 @@ children: [
// buildercomponents
{path:'Formb',component:FormbComponent},

@ -1,3 +1,4 @@
import { FormbComponent } from './BuilderComponents/basicp1/Formb/Formb.component';
import { SequencegenaratorComponent } from './fnd/sequencegenarator/sequencegenarator.component';
@ -142,6 +143,9 @@ import { MappingruleeditComponent } from './datamanagement/mappingrule/mappingru
// buildercomponents
FormbComponent,