From 585dd9d09d1ce68b352e6ded7eea7fe8ec0c4574 Mon Sep 17 00:00:00 2001 From: Varun Kaushik Date: Fri, 24 Oct 2025 12:15:06 +0530 Subject: [PATCH] first commit --- Basicp3/Basicp3.component.html | 627 ++++++++++++++++++++++++++++++++ Basicp3/Basicp3.component.scss | 85 +++++ Basicp3/Basicp3.component.ts | 517 ++++++++++++++++++++++++++ Basicp3/Basicp3.service.ts | 55 +++ Basicp3/Basicp3_cardvariable.ts | 4 + 5 files changed, 1288 insertions(+) create mode 100644 Basicp3/Basicp3.component.html create mode 100644 Basicp3/Basicp3.component.scss create mode 100644 Basicp3/Basicp3.component.ts create mode 100644 Basicp3/Basicp3.service.ts create mode 100644 Basicp3/Basicp3_cardvariable.ts diff --git a/Basicp3/Basicp3.component.html b/Basicp3/Basicp3.component.html new file mode 100644 index 0000000..b98e69c --- /dev/null +++ b/Basicp3/Basicp3.component.html @@ -0,0 +1,627 @@ + +
+
+
+

Basicp3

+
+
+ + + +
+ + + + Loading ... + +
{{error}}
+
+ + Toggle Switch + + + + Toggle Switch2 + + + + Url Field + + + + Url Field2 + + + + Decimal Field + + + + Decimal Field2 + + + + Percentage Field + + + + Percentage Field2 + + + + documentsequenc + + + + recaptcha + + + + recaptcha2 + + + + + + Action + + + + + +{{user.toggle_switch }} + + +{{user.toggle_switch2 }} + + +{{user.url_field}} + + +{{user.url_field2}} + + +{{user.decimal_field }} + + +{{user.decimal_field2 }} + + +{{user.percentage_field }} + + +{{user.percentage_field2 }} + + +{{user.documentsequenc }} + + +{{user.recaptcha }} + + +{{user.recaptcha2 }} + + + + + + + +
Who Column
+
Account ID: {{user.accountId}}
+
Created At: {{user.createdAt| date}}
+
Created By: {{user.createdBy}}
+
Updated At: {{user.updatedAt | date}}
+
Updated By: {{user.updatedBy}}
+
+
+
+ + + + + + + +
+ + + Users per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} users + + +
+ + + +
+
+
+
+
+
+ +
+
+ {{beforeText(item.fieldtext)}} + {{ app[transform(item.fieldtext) ] }} + {{afterText(item.fieldtext)}} +
+ +
+ {{beforeText(item.fieldtext)}} + {{ app[transform(item.fieldtext) ] | date}} + {{afterText(item.fieldtext)}} +
+
+ {{beforeText(item.fieldtext)}} + {{ app[transform(item.fieldtext) ]}} + {{afterText(item.fieldtext)}} +
+ +
+
+
+ + +
+ +
+ +
File Preview
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Basicp3/Basicp3.component.scss b/Basicp3/Basicp3.component.scss new file mode 100644 index 0000000..578f4bc --- /dev/null +++ b/Basicp3/Basicp3.component.scss @@ -0,0 +1,85 @@ +//@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; +} +.universal-section-header { + margin: 24px 0 10px 0; + font-weight: 600; + color: #1a237e; + letter-spacing: 0.5px; + font-size: 1.25rem; +} \ No newline at end of file diff --git a/Basicp3/Basicp3.component.ts b/Basicp3/Basicp3.component.ts new file mode 100644 index 0000000..21d2bd1 --- /dev/null +++ b/Basicp3/Basicp3.component.ts @@ -0,0 +1,517 @@ +import { Component, OnInit } from '@angular/core'; +import { ToastrService } from 'ngx-toastr'; +import { AlertService } from 'src/app/services/alert.service'; +import { Basicp3service} from './Basicp3.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 { Basicp3cardvariable } from './Basicp3_cardvariable'; +import { UserInfoService } from 'src/app/services/user-info.service'; +declare var JsBarcode: any; +@Component({ + selector: 'app-Basicp3', + templateUrl: './Basicp3.component.html', + styleUrls: ['./Basicp3.component.scss'] +}) +export class Basicp3Component implements OnInit { + cardButton = Basicp3cardvariable.cardButton; + cardmodeldata = Basicp3cardvariable.cardmodeldata; + public dashboardArray: DashboardContentModel2[]; + isCardview = Basicp3cardvariable.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 = 'Basicp3_formCode' +tableName = 'Basicp3'; checkFormCode; selected: any[] = []; constructor( + private extensionService: ExtensionService, +private userInfoService:UserInfoService, + private mainService:Basicp3service, + private alertService: AlertService, + private toastr: ToastrService, + private _fb: FormBuilder, + ) { } + private editInterval: any; +// 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({ +toggle_switch : [true], + +toggle_switch2 : [true], + +url_field : [null], + +url_field2 : [null], + +decimal_field : [null,[Validators.required]], + +decimal_field2 : [null,[Validators.required]], + +percentage_field : [null,[Validators.required]], + +percentage_field2 : [null,[Validators.required]], + +documentsequenc : [null], + +recaptcha : ['', [Validators.required,this.checkrecaptcha.bind(this)]], + +recaptcha2 : ['', [Validators.required,this.checkrecaptcha2.bind(this)]], + + + + + + + + + + + + + + + + + + + + + + + + + }); // 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 === "Basicp3_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.generaterecaptcha() + +this.generaterecaptcha2() + + + } + ngOnDestroy(): void { + if (this.editInterval) { + clearInterval(this.editInterval); + } + } + + + + + + + + + + + + + + + + + + + + + + error; + getData() { + this.mainService.getAll().subscribe((data) => { + console.log(data); + this.product = data; +this.product = [...this.product].reverse(); 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"); + } +setTimeout(() => { + this.ngOnInit(); + }, 500); + + + + + + + + + + + + + + + + + + + + + + + }, (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); + + + + + + + + + + + + + + + + + + + + + + + }, (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(); + +} + + + + +isValidurl_field(url: string): boolean { + return /^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/.test(url); } + goTourl_fieldUrl(val){ window.open(val) } + +isValidurl_field2(url: string): boolean { + return /^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/.test(url); } + goTourl_field2Url(val){ window.open(val) } + + + + + + + + + + + +recaptchaCode = ''; +generaterecaptcha (): void { + const possibleCharacters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + const codeLength = 6; // Change to desired length + + let recaptcha= ''; + for (let i = 0; i < codeLength; i++) { + const randomIndex = Math.floor(Math.random() * possibleCharacters.length); + recaptcha += possibleCharacters.charAt(randomIndex); + } + this.recaptchaCode = recaptcha; +} + +checkrecaptcha(control: AbstractControl): ValidationErrors | null { + if (control.value !== this.recaptchaCode) { + return { recaptchaMismatch: true }; + } + return null; +} + +recaptchaMismatch = false; + +checkrecaptchaEdit(): void { + if (this.rowSelected.recaptcha !== this. recaptchaCode) { + this. recaptchaMismatch = true; } else { this.recaptchaMismatch = false; } } + +recaptcha2Code = ''; +generaterecaptcha2 (): void { + const possibleCharacters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + const codeLength = 6; // Change to desired length + + let recaptcha2= ''; + for (let i = 0; i < codeLength; i++) { + const randomIndex = Math.floor(Math.random() * possibleCharacters.length); + recaptcha2 += possibleCharacters.charAt(randomIndex); + } + this.recaptcha2Code = recaptcha2; +} + +checkrecaptcha2(control: AbstractControl): ValidationErrors | null { + if (control.value !== this.recaptcha2Code) { + return { recaptcha2Mismatch: true }; + } + return null; +} + +recaptcha2Mismatch = false; + +checkrecaptcha2Edit(): void { + if (this.rowSelected.recaptcha2 !== this. recaptcha2Code) { + this. recaptcha2Mismatch = true; } else { this.recaptcha2Mismatch = false; } } + +// updateaction +} + + + + + + + + + + + + + + + + + + + + + diff --git a/Basicp3/Basicp3.service.ts b/Basicp3/Basicp3.service.ts new file mode 100644 index 0000000..cc12ada --- /dev/null +++ b/Basicp3/Basicp3.service.ts @@ -0,0 +1,55 @@ +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 Basicp3service{ + private baseURL = "Basicp3/Basicp3" ; constructor( + private http: HttpClient, + private apiRequest: ApiRequestService, + ) { } + getAll(page?: number, size?: number): Observable { + return this.apiRequest.get(this.baseURL); + } + getById(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.get(_http); + } + create(data: any): Observable { + return this.apiRequest.post(this.baseURL, data); + } + update(id: number, data: any): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.put(_http, data); + } + delete(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.delete(_http); + } + + + + + + + + + + + + + + + + + + + + + + +// updateaction +} \ No newline at end of file diff --git a/Basicp3/Basicp3_cardvariable.ts b/Basicp3/Basicp3_cardvariable.ts new file mode 100644 index 0000000..ff91595 --- /dev/null +++ b/Basicp3/Basicp3_cardvariable.ts @@ -0,0 +1,4 @@ +export const Basicp3cardvariable = { + "cardButton": false, + "cardmodeldata": `` +} \ No newline at end of file