build_app
This commit is contained in:
parent
099c180616
commit
d71d5fb3da
6
testallnewbasic01-dbtdt-d/authsec_mysql/mysql/wf_table/wf_table.sql
Executable file
6
testallnewbasic01-dbtdt-d/authsec_mysql/mysql/wf_table/wf_table.sql
Executable file
@ -0,0 +1,6 @@
|
|||||||
|
CREATE TABLE dbtdt.Basicp1(id BIGINT NOT NULL AUTO_INCREMENT, textarea_field VARCHAR(400), paragraph_field VARCHAR(400), textarea VARCHAR(400), paragraph_field2 VARCHAR(400), phone_number2 VARCHAR(400), name VARCHAR(400), number1 int, phone_number VARCHAR(400), number2 int, name2 VARCHAR(400), password_field VARCHAR(400), textarea_field2 VARCHAR(400), PRIMARY KEY (id));
|
||||||
|
|
||||||
|
CREATE TABLE dbtdt.Basicp2(id BIGINT NOT NULL AUTO_INCREMENT, datetime_field2 VARCHAR(400), about VARCHAR(400), datetime_field VARCHAR(400), userid_field VARCHAR(400), email_field2 VARCHAR(400), date_field Date, email_field VARCHAR(400), textarea2 VARCHAR(400), date_field2 Date, PRIMARY KEY (id));
|
||||||
|
|
||||||
|
CREATE TABLE dbtdt.Basicp3(id BIGINT NOT NULL AUTO_INCREMENT, toggle_switch2 VARCHAR(400), decimal_field2 double, documentsequenc VARCHAR(400), toggle_switch VARCHAR(400), recaptcha VARCHAR(400), percentage_field int, percentage_field2 int, url_field VARCHAR(400), url_field2 VARCHAR(400), decimal_field double, recaptcha2 VARCHAR(400), PRIMARY KEY (id));
|
||||||
|
|
||||||
@ -0,0 +1,813 @@
|
|||||||
|
<ol class="breadcrumb breadcrumb-arrow font-trirong">
|
||||||
|
<li><a href="javascript://"> Basicp1</a></li>
|
||||||
|
</ol>
|
||||||
|
<section class="ug-hero">
|
||||||
|
<div class="ug-hero__content">
|
||||||
|
<div class="ug-hero__icon"><clr-icon shape="users"></clr-icon></div>
|
||||||
|
<div>
|
||||||
|
<h2 class="ug-hero__title">Basicp1</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="ug-hero__actions">
|
||||||
|
<button id="add" class="ug-btn ug-btn-primary" (click)="goToAdd()">
|
||||||
|
<clr-icon shape="plus"></clr-icon>
|
||||||
|
<span class="ug-btn-text">ADD</span>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="ug-toolbar">
|
||||||
|
<div class="ug-toolbar__left">
|
||||||
|
<div class="ug-search">
|
||||||
|
<clr-icon shape="search"></clr-icon>
|
||||||
|
<input class="ug-search__input" type="text" placeholder="SEARCH" [(ngModel)]="filterText" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="ug-toolbar__right">
|
||||||
|
<div class="ug-view-toggle">
|
||||||
|
<button class="ug-btn ug-btn-sm" [class.ug-btn-primary]="viewMode==='cards'" (click)="setViewMode('cards')">
|
||||||
|
<clr-icon shape="view-cards"></clr-icon>
|
||||||
|
</button>
|
||||||
|
<button class="ug-btn ug-btn-sm" [class.ug-btn-primary]="viewMode==='table'" (click)="setViewMode('table')">
|
||||||
|
<clr-icon shape="table"></clr-icon>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<clr-datagrid class="ug-grid" [clrDgLoading]="loading" *ngIf="viewMode==='table'">
|
||||||
|
<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]="'name2'">
|
||||||
|
<ng-container *clrDgHideableColumn="{hidden: false}">
|
||||||
|
name2
|
||||||
|
</ng-container>
|
||||||
|
</clr-dg-column>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-column [clrDgField]="'number1'">
|
||||||
|
<ng-container *clrDgHideableColumn="{hidden: false}">
|
||||||
|
number1
|
||||||
|
</ng-container>
|
||||||
|
</clr-dg-column>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-column [clrDgField]="'number2'">
|
||||||
|
<ng-container *clrDgHideableColumn="{hidden: false}">
|
||||||
|
number2
|
||||||
|
</ng-container>
|
||||||
|
</clr-dg-column>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-column [clrDgField]="'phone_number'">
|
||||||
|
<ng-container *clrDgHideableColumn="{hidden: false}">
|
||||||
|
Phone Number
|
||||||
|
</ng-container>
|
||||||
|
</clr-dg-column>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-column [clrDgField]="'phone_number2'">
|
||||||
|
<ng-container *clrDgHideableColumn="{hidden: false}">
|
||||||
|
Phone Number2
|
||||||
|
</ng-container>
|
||||||
|
</clr-dg-column>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-column [clrDgField]="'paragraph_field'">
|
||||||
|
<ng-container *clrDgHideableColumn="{hidden: false}">
|
||||||
|
Paragraph Field
|
||||||
|
</ng-container>
|
||||||
|
</clr-dg-column>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-column [clrDgField]="'paragraph_field2'">
|
||||||
|
<ng-container *clrDgHideableColumn="{hidden: false}">
|
||||||
|
Paragraph Field2
|
||||||
|
</ng-container>
|
||||||
|
</clr-dg-column>
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-column [clrDgField]="'password_field'"> <ng-container *clrDgHideableColumn="{hidden: false}">Password Field
|
||||||
|
</ng-container></clr-dg-column>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-column [clrDgField]="'textarea'">
|
||||||
|
<ng-container *clrDgHideableColumn="{hidden: false}">
|
||||||
|
Textarea
|
||||||
|
</ng-container>
|
||||||
|
</clr-dg-column>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-column [clrDgField]="'textarea_field'">
|
||||||
|
<ng-container *clrDgHideableColumn="{hidden: false}">
|
||||||
|
Textarea Field
|
||||||
|
</ng-container>
|
||||||
|
</clr-dg-column>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-column [clrDgField]="'textarea_field2'">
|
||||||
|
<ng-container *clrDgHideableColumn="{hidden: false}">
|
||||||
|
Textarea Field2
|
||||||
|
</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 filteredGroups;let i = index" [clrDgItem]="user">
|
||||||
|
|
||||||
|
<clr-dg-cell>{{user.name }}</clr-dg-cell>
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-cell>{{user.name2 }}</clr-dg-cell>
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-cell>{{user.number1 }}</clr-dg-cell>
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-cell>{{user.number2 }}</clr-dg-cell>
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-cell>{{user.phone_number }}</clr-dg-cell>
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-cell>{{user.phone_number2 }}</clr-dg-cell>
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-cell (click)="goToReplaceStringparagraph_field(user.paragraph_field)" style="cursor: pointer; align-items: center;"><clr-icon shape="details"></clr-icon></clr-dg-cell>
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-cell (click)="goToReplaceStringparagraph_field2(user.paragraph_field2)" style="cursor: pointer; align-items: center;"><clr-icon shape="details"></clr-icon></clr-dg-cell>
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-cell>{{user.password_field }}</clr-dg-cell>
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-cell (click)="goToReplaceStringtextarea (user.textarea)" style="cursor: pointer; align-items: center;"><clr-icon shape="details"></clr-icon>
|
||||||
|
</clr-dg-cell>
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-cell (click)="goToReplaceStringtextarea_field (user.textarea_field)" style="cursor: pointer; align-items: center;"><clr-icon shape="details"></clr-icon>
|
||||||
|
</clr-dg-cell>
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-cell (click)="goToReplaceStringtextarea_field2 (user.textarea_field2)" style="cursor: pointer; align-items: center;"><clr-icon shape="details"></clr-icon>
|
||||||
|
</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="ug-action-item" *ngIf="medit == 'true' || medit == true" (click)="onEdit(user)">
|
||||||
|
<clr-icon shape="edit"></clr-icon>
|
||||||
|
EDIT
|
||||||
|
</button> -->
|
||||||
|
<button class="ug-action-item" (click)="onEdit(user)">
|
||||||
|
<clr-icon shape="edit"></clr-icon>
|
||||||
|
EDIT
|
||||||
|
</button>
|
||||||
|
<button class="ug-action-item ug-btn-error" (click)="onDelete(user)">
|
||||||
|
<clr-icon shape="trash"></clr-icon>
|
||||||
|
DELETE
|
||||||
|
</button>
|
||||||
|
</clr-dg-action-overflow>
|
||||||
|
|
||||||
|
</clr-dg-row>
|
||||||
|
|
||||||
|
<clr-dg-footer class="ug-grid-footer">
|
||||||
|
<clr-dg-pagination #pagination [clrDgPageSize]="10">
|
||||||
|
<clr-dg-page-size [clrPageSizeOptions]="[10,20,50,100]">Record per page</clr-dg-page-size>
|
||||||
|
{{pagination.firstItem + 1}} - {{pagination.lastItem + 1}}
|
||||||
|
of {{pagination.totalItems}} Records
|
||||||
|
</clr-dg-pagination>
|
||||||
|
</clr-dg-footer>
|
||||||
|
</clr-datagrid>
|
||||||
|
|
||||||
|
<div class="ug-cards" *ngIf="viewMode==='cards'">
|
||||||
|
<div class="ug-card-item" *ngFor="let user of filteredGroups; let i = index">
|
||||||
|
<div class="ug-card-item__body">
|
||||||
|
|
||||||
|
<div class="ug-kv"><span>name</span><strong>{{user.name}}</strong></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="ug-kv"><span>name2</span><strong>{{user.name2}}</strong></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="ug-kv"><span>number1</span><strong>{{user.number1}}</strong></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="ug-kv"><span>number2</span><strong>{{user.number2}}</strong></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="ug-kv"><span>Phone Number</span><strong>{{user.phone_number}}</strong></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="ug-kv"><span>Phone Number2</span><strong>{{user.phone_number2}}</strong></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="ug-kv"><span>Paragraph Field</span><strong>{{user.paragraph_field}}</strong></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="ug-kv"><span>Paragraph Field2</span><strong>{{user.paragraph_field2}}</strong></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="ug-kv"><span>Password Field</span><strong>{{user.password_field}}</strong></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="ug-kv"><span>Textarea</span><strong>{{user.textarea}}</strong></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="ug-kv"><span>Textarea Field</span><strong>{{user.textarea_field}}</strong></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="ug-kv"><span>Textarea Field2</span><strong>{{user.textarea_field2}}</strong></div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="ug-card-item__footer">
|
||||||
|
|
||||||
|
<button class="ug-btn ug-btn-sm ug-btn-outline" (click)="onEdit(user)">
|
||||||
|
<clr-icon shape="edit"></clr-icon> Edit
|
||||||
|
</button>
|
||||||
|
<button class="ug-btn ug-btn-sm ug-btn-error" (click)="onDelete(user)">
|
||||||
|
<clr-icon shape="trash"></clr-icon> Delete
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<clr-modal [(clrModalOpen)]="rsModalparagraph_field" [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)]="rsModalparagraph_field2" [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)]="rsModaltextarea" [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)]="rsModaltextarea_field" [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)]="rsModaltextarea_field2" [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)]="modalAdd" [clrModalSize]="'md'" [clrModalStaticBackdrop]="true">
|
||||||
|
<h3 class="modal-title">Add Basicp1</h3>
|
||||||
|
<div class="modal-body">
|
||||||
|
<form [formGroup]="entryForm" (ngSubmit)="onSubmit()">
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="name" class="ug-form-label">name<span class="required-field">*</span></label>
|
||||||
|
<input type="text" id="name" class="ug-form-input" formControlName="name">
|
||||||
|
<div *ngIf="submitted && entryForm.controls.name.errors" class="ug-form-error">
|
||||||
|
<div *ngIf="submitted && entryForm.controls.name.errors.required">*This field is Required</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="name2" class="ug-form-label">name2<span class="required-field">*</span></label>
|
||||||
|
<input type="text" id="name2" class="ug-form-input" formControlName="name2">
|
||||||
|
<div *ngIf="submitted && entryForm.controls.name2.errors" class="ug-form-error">
|
||||||
|
<div *ngIf="submitted && entryForm.controls.name2.errors.required">*This field is Required</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="number1" class="ug-form-label">number1<span class="required-field">*</span></label>
|
||||||
|
<input type="number" id="number1" class="ug-form-input" formControlName="number1" placeholder="Enter number1">
|
||||||
|
<div *ngIf="submitted && entryForm.controls.number1.errors" class="ug-form-error">
|
||||||
|
<div *ngIf="submitted && entryForm.controls.number1.errors.required">*This field is Required</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="number2" class="ug-form-label">number2<span class="required-field">*</span></label>
|
||||||
|
<input type="number" id="number2" class="ug-form-input" formControlName="number2" placeholder="Enter number2">
|
||||||
|
<div *ngIf="submitted && entryForm.controls.number2.errors" class="ug-form-error">
|
||||||
|
<div *ngIf="submitted && entryForm.controls.number2.errors.required">*This field is Required</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="phone_number" class="ug-form-label">Phone Number</label>
|
||||||
|
<input type="text" id="phone_number" class="ug-form-input" formControlName="phone_number" placeholder="+91 Enter 10 digit Mobile Number" pattern="((\+)?([1-9]{2}))?[1-9]{1}[0-9]{9}$">
|
||||||
|
<div *ngIf="submitted && entryForm.controls['phone_number'].errors" class="ug-form-error">
|
||||||
|
<div *ngIf="submitted && entryForm.controls['phone_number'].hasError('pattern')">* Please Follow your pattern,+91 Enter 10 digit Mobile Number.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="phone_number2" class="ug-form-label">Phone Number2</label>
|
||||||
|
<input type="text" id="phone_number2" class="ug-form-input" formControlName="phone_number2" placeholder="+91 Enter 10 digit Mobile Number" pattern="((\+)?([1-9]{2}))?[1-9]{1}[0-9]{9}$">
|
||||||
|
<div *ngIf="submitted && entryForm.controls['phone_number2'].errors" class="ug-form-error">
|
||||||
|
<div *ngIf="submitted && entryForm.controls['phone_number2'].hasError('pattern')">* Please Follow your pattern,+91 Enter 10 digit Mobile Number.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="paragraph_field" class="ug-form-label">Paragraph Field</label>
|
||||||
|
<input type="text" id="paragraph_field" class="ug-form-input" formControlName="paragraph_field" placeholder="Enter paragraph">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="paragraph_field2" class="ug-form-label">Paragraph Field2</label>
|
||||||
|
<input type="text" id="paragraph_field2" class="ug-form-input" formControlName="paragraph_field2" placeholder="Enter paragraph">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Password Fields -->
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="password_field" class="ug-form-label">Password Field</label>
|
||||||
|
<div class="password-input-container">
|
||||||
|
<input
|
||||||
|
[type]="newaddpHidepassword_field ? 'password' : 'text'"
|
||||||
|
id="password_field"
|
||||||
|
class="ug-form-input password-input"
|
||||||
|
formControlName="password_field"
|
||||||
|
placeholder="Enter Password Field"
|
||||||
|
autocomplete="new-password">
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
class="password-toggle"
|
||||||
|
(click)="newaddChangerpassword_field()"
|
||||||
|
[attr.aria-label]="newaddpHidepassword_field? 'Show password' : 'Hide password'">
|
||||||
|
<clr-icon [attr.shape]="newaddIconpassword_field"></clr-icon>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="confirmpassword_field" class="ug-form-label">Confirm Password Field</label>
|
||||||
|
<input
|
||||||
|
type="password"
|
||||||
|
id="confirmpassword_field"
|
||||||
|
class="ug-form-input"
|
||||||
|
formControlName="confirmpassword_field"
|
||||||
|
placeholder="Confirm password"
|
||||||
|
autocomplete="new-password">
|
||||||
|
<div *ngIf="entryForm.controls.confirmpassword_field.errors" class="ug-form-error">
|
||||||
|
<div *ngIf="entryForm.controls.confirmpassword_field.errors.confirmedpassword_fieldValidator">* Password and Confirm Password must match.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="textarea" class="ug-form-label">Textarea</label>
|
||||||
|
<textarea
|
||||||
|
id="textarea"
|
||||||
|
class="ug-form-input"
|
||||||
|
formControlName="textarea"
|
||||||
|
placeholder="Enter text"
|
||||||
|
rows="3"></textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="textarea_field" class="ug-form-label">Textarea Field</label>
|
||||||
|
<textarea
|
||||||
|
id="textarea_field"
|
||||||
|
class="ug-form-input"
|
||||||
|
formControlName="textarea_field"
|
||||||
|
placeholder="Enter text"
|
||||||
|
rows="3"></textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="textarea_field2" class="ug-form-label">Textarea Field2</label>
|
||||||
|
<textarea
|
||||||
|
id="textarea_field2"
|
||||||
|
class="ug-form-input"
|
||||||
|
formControlName="textarea_field2"
|
||||||
|
placeholder="Enter text"
|
||||||
|
rows="3"></textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="ug-btn ug-btn-outline" (click)="modalAdd = false">Cancel</button>
|
||||||
|
<button type="submit" class="ug-btn ug-btn-primary">ADD</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</clr-modal>
|
||||||
|
|
||||||
|
<clr-modal [(clrModalOpen)]="modalEdit" [clrModalSize]="'md'" [clrModalStaticBackdrop]="true">
|
||||||
|
<h3 class="modal-title">Update Basicp1</h3>
|
||||||
|
<div class="modal-body" *ngIf="rowSelected.id">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="name" class="ug-form-label">name<span class="required-field">*</span></label>
|
||||||
|
<input type="text" id="name" class="ug-form-input" [(ngModel)]="rowSelected.name" name="name"
|
||||||
|
placeholder="Enter name">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="name2" class="ug-form-label">name2<span class="required-field">*</span></label>
|
||||||
|
<input type="text" id="name2" class="ug-form-input" [(ngModel)]="rowSelected.name2" name="name2"
|
||||||
|
placeholder="Enter name2">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Number Fields -->
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="number1" class="ug-form-label">number1</label>
|
||||||
|
<input type="number" id="number1" class="ug-form-input" [(ngModel)]="rowSelected.number1"
|
||||||
|
name="number1" placeholder="Enter number1">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Number Fields -->
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="number2" class="ug-form-label">number2</label>
|
||||||
|
<input type="number" id="number2" class="ug-form-input" [(ngModel)]="rowSelected.number2"
|
||||||
|
name="number2" placeholder="Enter number2">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Phone Number Fields -->
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="phone_number" class="ug-form-label">Phone Number</label>
|
||||||
|
<input type="text" id="phone_number" class="ug-form-input" [(ngModel)]="rowSelected.phone_number"
|
||||||
|
name="phone_number" placeholder="+91 Enter 10 digit Mobile Number"
|
||||||
|
pattern="((\+)?([1-9]{2}))?[1-9]{1}[0-9]{9}$">
|
||||||
|
<div *ngIf="rowSelected.phone_number && !isValidPhone_number(rowSelected.phone_number)"
|
||||||
|
class="ug-form-error">
|
||||||
|
* Please Follow your pattern,+91 Enter 10 digit Mobile Number.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Phone Number Fields -->
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="phone_number2" class="ug-form-label">Phone Number2</label>
|
||||||
|
<input type="text" id="phone_number2" class="ug-form-input" [(ngModel)]="rowSelected.phone_number2"
|
||||||
|
name="phone_number2" placeholder="+91 Enter 10 digit Mobile Number"
|
||||||
|
pattern="((\+)?([1-9]{2}))?[1-9]{1}[0-9]{9}$">
|
||||||
|
<div *ngIf="rowSelected.phone_number2 && !isValidPhone_number2(rowSelected.phone_number2)"
|
||||||
|
class="ug-form-error">
|
||||||
|
* Please Follow your pattern,+91 Enter 10 digit Mobile Number.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Paragraph Fields -->
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="paragraph_field" class="ug-form-label">Paragraph Field</label>
|
||||||
|
<input type="text" id="paragraph_field" class="ug-form-input"
|
||||||
|
[(ngModel)]="rowSelected.paragraph_field" name="paragraph_field" placeholder="Enter Paragraph Field">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Paragraph Fields -->
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="paragraph_field2" class="ug-form-label">Paragraph Field2</label>
|
||||||
|
<input type="text" id="paragraph_field2" class="ug-form-input"
|
||||||
|
[(ngModel)]="rowSelected.paragraph_field2" name="paragraph_field2" placeholder="Enter Paragraph Field2">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Password Fields -->
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="password_field" class="ug-form-label">Password Field</label>
|
||||||
|
<div class="password-input-container">
|
||||||
|
<input [type]="newpHidepassword_field ? 'password' : 'text'" id="password_field"
|
||||||
|
class="ug-form-input password-input" [(ngModel)]="rowSelected.password_field" name="password_field"
|
||||||
|
placeholder="Enter Password Field">
|
||||||
|
<button type="button" class="password-toggle" (click)="newShapeChangerpassword_field()"
|
||||||
|
[attr.aria-label]="newpHidepassword_field ? 'Show password' : 'Hide password'">
|
||||||
|
<clr-icon [attr.shape]="newIconpassword_field"></clr-icon>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="textarea" class="ug-form-label">Textarea</label>
|
||||||
|
<textarea id="textarea" class="ug-form-input" [(ngModel)]="rowSelected.textarea"
|
||||||
|
name="textarea" placeholder="Enter text" rows="3"></textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="textarea_field" class="ug-form-label">Textarea Field</label>
|
||||||
|
<textarea id="textarea_field" class="ug-form-input" [(ngModel)]="rowSelected.textarea_field"
|
||||||
|
name="textarea_field" placeholder="Enter text" rows="3"></textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="textarea_field2" class="ug-form-label">Textarea Field2</label>
|
||||||
|
<textarea id="textarea_field2" class="ug-form-input" [(ngModel)]="rowSelected.textarea_field2"
|
||||||
|
name="textarea_field2" placeholder="Enter text" rows="3"></textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="ug-btn ug-btn-outline" (click)="modalEdit = false">Cancel</button>
|
||||||
|
<button type="submit" (click)="onUpdate(rowSelected.id)" class="ug-btn ug-btn-primary">Update</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<clr-modal [(clrModalOpen)]="modaldelete" [clrModalSize]="'lg'" [clrModalStaticBackdrop]="true">
|
||||||
|
<div class="modal-body" *ngIf="rowSelected.id">
|
||||||
|
<div class="ug-delete-header">
|
||||||
|
<div class="ug-delete-icon">
|
||||||
|
<clr-icon shape="exclamation-triangle" size="48"></clr-icon>
|
||||||
|
</div>
|
||||||
|
<h1 class="ug-delete-title">Are You Sure Want to Delete?</h1>
|
||||||
|
<p class="ug-delete-subtitle">This action cannot be undone</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ug-delete-details"><div class="ug-delete-detail-item">
|
||||||
|
<span class="ug-delete-detail-label">name:</span>
|
||||||
|
<span class="ug-delete-detail-value">{{rowSelected.name}}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ug-delete-detail-item">
|
||||||
|
<span class="ug-delete-detail-label">name2:</span>
|
||||||
|
<span class="ug-delete-detail-value">{{rowSelected.name2}}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ug-delete-detail-item">
|
||||||
|
<span class="ug-delete-detail-label">number1:</span>
|
||||||
|
<span class="ug-delete-detail-value">{{rowSelected.number1}}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ug-delete-detail-item">
|
||||||
|
<span class="ug-delete-detail-label">number2:</span>
|
||||||
|
<span class="ug-delete-detail-value">{{rowSelected.number2}}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ug-delete-detail-item">
|
||||||
|
<span class="ug-delete-detail-label">Phone Number:</span>
|
||||||
|
<span class="ug-delete-detail-value">{{rowSelected.phone_number}}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ug-delete-detail-item">
|
||||||
|
<span class="ug-delete-detail-label">Phone Number2:</span>
|
||||||
|
<span class="ug-delete-detail-value">{{rowSelected.phone_number2}}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ug-delete-detail-item">
|
||||||
|
<span class="ug-delete-detail-label">Paragraph Field:</span>
|
||||||
|
<span class="ug-delete-detail-value">{{rowSelected.paragraph_field}}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ug-delete-detail-item">
|
||||||
|
<span class="ug-delete-detail-label">Paragraph Field2:</span>
|
||||||
|
<span class="ug-delete-detail-value">{{rowSelected.paragraph_field2}}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ug-delete-detail-item">
|
||||||
|
<span class="ug-delete-detail-label">Password Field:</span>
|
||||||
|
<span class="ug-delete-detail-value">{{rowSelected.password_field}}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ug-delete-detail-item">
|
||||||
|
<span class="ug-delete-detail-label">Textarea:</span>
|
||||||
|
<span class="ug-delete-detail-value">{{rowSelected.textarea}}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ug-delete-detail-item">
|
||||||
|
<span class="ug-delete-detail-label">Textarea Field:</span>
|
||||||
|
<span class="ug-delete-detail-value">{{rowSelected.textarea_field}}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ug-delete-detail-item">
|
||||||
|
<span class="ug-delete-detail-label">Textarea Field2:</span>
|
||||||
|
<span class="ug-delete-detail-value">{{rowSelected.textarea_field2}}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="ug-btn ug-btn-outline" (click)="modaldelete = false">Cancel</button>
|
||||||
|
<button type="submit" (click)="delete(rowSelected.id)" class="ug-btn ug-btn-error">Delete</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</clr-modal>
|
||||||
|
|
||||||
|
<clr-modal [(clrModalOpen)]="modalCsv" [clrModalSize]="'sm'" [clrModalStaticBackdrop]="false">
|
||||||
|
<h3 class="modal-title">Import File</h3>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label class="ug-form-label">Select CSV File</label>
|
||||||
|
<input type="file" name="file" class="ug-file-input" (change)="selectFile($event)"
|
||||||
|
accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button class="ug-btn ug-btn-outline" type="button" (click)="modalCsv = false">Cancel</button>
|
||||||
|
<button class="ug-btn ug-btn-primary" type="button" [disabled]="!selectedFiles" (click)="saveCsv()">Import</button>
|
||||||
|
</div>
|
||||||
|
</clr-modal>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- htmlpopup -->
|
||||||
@ -0,0 +1,870 @@
|
|||||||
|
|
||||||
|
@import '../../../../../../styles.scss';
|
||||||
|
|
||||||
|
// Import design tokens
|
||||||
|
@import '../../../../../../styles/design-tokens';
|
||||||
|
// Newbasicp1 Styles
|
||||||
|
.ug-hero {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
padding: 24px 32px;
|
||||||
|
background: linear-gradient(135deg, var(--theme-primary) 0%, var(--theme-accent) 100%);
|
||||||
|
color: white;
|
||||||
|
border-radius: 16px;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
|
||||||
|
backdrop-filter: blur(16px);
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.2);
|
||||||
|
font-family: var(--theme-font-primary);
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__icon {
|
||||||
|
background: rgba(255, 255, 255, 0.2);
|
||||||
|
border-radius: 50%;
|
||||||
|
padding: 16px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
clr-icon {
|
||||||
|
width: 36px;
|
||||||
|
height: 36px;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__title {
|
||||||
|
font-size: 28px;
|
||||||
|
font-weight: 700;
|
||||||
|
margin: 0;
|
||||||
|
color: white;
|
||||||
|
font-family: var(--theme-font-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
&__subtitle {
|
||||||
|
font-size: 16px;
|
||||||
|
margin: 0;
|
||||||
|
opacity: 0.9;
|
||||||
|
color: rgba(255, 255, 255, 0.8);
|
||||||
|
}
|
||||||
|
|
||||||
|
&__actions {
|
||||||
|
display: flex;
|
||||||
|
gap: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-btn-text {
|
||||||
|
margin-left: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Modern Button Styles using ThemeService
|
||||||
|
.ug-btn {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
gap: 8px;
|
||||||
|
padding: 12px 20px;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
line-height: 1;
|
||||||
|
border-radius: 8px;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: all 200ms ease-out;
|
||||||
|
text-decoration: none;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
font-family: var(--theme-font-primary);
|
||||||
|
z-index: 1;
|
||||||
|
|
||||||
|
&:focus {
|
||||||
|
outline: 2px solid var(--theme-primary);
|
||||||
|
outline-offset: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:disabled {
|
||||||
|
opacity: 0.5;
|
||||||
|
cursor: not-allowed;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sizes
|
||||||
|
&.ug-btn-sm {
|
||||||
|
padding: 8px 16px;
|
||||||
|
font-size: 13px;
|
||||||
|
height: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.ug-btn-md {
|
||||||
|
padding: 12px 20px;
|
||||||
|
font-size: 14px;
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.ug-btn-lg {
|
||||||
|
padding: 16px 24px;
|
||||||
|
font-size: 16px;
|
||||||
|
height: 48px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Variants
|
||||||
|
&.ug-btn-primary {
|
||||||
|
background: linear-gradient(135deg, var(--theme-primary) 0%, var(--theme-accent) 100%);
|
||||||
|
color: white;
|
||||||
|
border-color: var(--theme-primary);
|
||||||
|
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: linear-gradient(135deg, var(--theme-primary, #0284c7) 0%, var(--theme-accent, #7c3aed) 100%);
|
||||||
|
transform: translateY(-2px);
|
||||||
|
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:active {
|
||||||
|
transform: translateY(0);
|
||||||
|
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.ug-btn-secondary {
|
||||||
|
background: var(--theme-surface);
|
||||||
|
color: var(--theme-text);
|
||||||
|
border-color: rgba(0, 0, 0, 0.1);
|
||||||
|
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: var(--theme-background);
|
||||||
|
border-color: rgba(0, 0, 0, 0.2);
|
||||||
|
transform: translateY(-1px);
|
||||||
|
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.ug-btn-outline {
|
||||||
|
background: transparent;
|
||||||
|
color: var(--theme-secondary);
|
||||||
|
border-color: var(--theme-secondary);
|
||||||
|
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: rgba(100, 116, 139, 0.1); // var(--theme-secondary) with 10% opacity
|
||||||
|
border-color: var(--theme-secondary);
|
||||||
|
color: var(--theme-secondary);
|
||||||
|
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.ug-btn-error {
|
||||||
|
background: var(--theme-error, #ef4444);
|
||||||
|
color: white;
|
||||||
|
border-color: var(--theme-error, #ef4444);
|
||||||
|
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: var(--theme-error-dark, #dc2626);
|
||||||
|
border-color: var(--theme-error-dark, #dc2626);
|
||||||
|
transform: translateY(-2px);
|
||||||
|
box-shadow: 0 10px 15px -3px rgba(239, 68, 68, 0.3), 0 4px 6px -2px rgba(239, 68, 68, 0.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.ug-btn-ghost {
|
||||||
|
background: transparent;
|
||||||
|
color: var(--theme-text-secondary);
|
||||||
|
border-color: transparent;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: var(--theme-background);
|
||||||
|
color: var(--theme-text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-toolbar {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
padding: 16px;
|
||||||
|
background: var(--theme-surface);
|
||||||
|
border-radius: 12px;
|
||||||
|
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
||||||
|
|
||||||
|
&__left {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__right {
|
||||||
|
display: flex;
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Form Container Styles
|
||||||
|
.form-container {
|
||||||
|
padding: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-row {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
margin: 0 -12px 16px -12px;
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
flex-direction: column;
|
||||||
|
margin: 0 0 16px 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-col {
|
||||||
|
flex: 1;
|
||||||
|
padding: 0 12px;
|
||||||
|
min-width: 250px;
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
padding: 0;
|
||||||
|
min-width: 100%;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Password Input Container
|
||||||
|
.password-input-container {
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.password-input {
|
||||||
|
padding-right: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.password-toggle {
|
||||||
|
position: absolute;
|
||||||
|
right: 12px;
|
||||||
|
top: 50%;
|
||||||
|
transform: translateY(-50%);
|
||||||
|
background: none;
|
||||||
|
border: none;
|
||||||
|
cursor: pointer;
|
||||||
|
color: var(--theme-text-secondary);
|
||||||
|
padding: 4px;
|
||||||
|
border-radius: 4px;
|
||||||
|
transition: all 200ms ease-out;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: var(--theme-text);
|
||||||
|
background: rgba(0, 0, 0, 0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
clr-icon {
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Textarea Styles
|
||||||
|
textarea.ug-form-input {
|
||||||
|
min-height: 100px;
|
||||||
|
resize: vertical;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-search {
|
||||||
|
position: relative;
|
||||||
|
max-width: 400px;
|
||||||
|
|
||||||
|
clr-icon {
|
||||||
|
position: absolute;
|
||||||
|
left: 12px;
|
||||||
|
top: 50%;
|
||||||
|
transform: translateY(-50%);
|
||||||
|
color: #9ca3af;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__input {
|
||||||
|
width: 100%;
|
||||||
|
padding: 12px 12px 12px 40px;
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.1);
|
||||||
|
border-radius: 8px;
|
||||||
|
font-size: 14px;
|
||||||
|
transition: all 200ms ease-out;
|
||||||
|
background: var(--theme-surface);
|
||||||
|
color: var(--theme-text);
|
||||||
|
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||||
|
|
||||||
|
&:focus {
|
||||||
|
outline: none;
|
||||||
|
border-color: var(--theme-primary);
|
||||||
|
box-shadow: 0 0 0 3px rgba(14, 165, 233, 0.1); // var(--theme-primary) with 10% opacity
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-view-toggle {
|
||||||
|
display: flex;
|
||||||
|
border: 1px solid #d1d5db;
|
||||||
|
border-radius: 8px;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
.ug-btn {
|
||||||
|
border-radius: 0;
|
||||||
|
border: none;
|
||||||
|
background: var(--theme-surface);
|
||||||
|
color: var(--theme-text-secondary);
|
||||||
|
|
||||||
|
&:first-child {
|
||||||
|
border-right: 1px solid #d1d5db;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.ug-btn-primary {
|
||||||
|
background: var(--theme-primary);
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Modern Table Styles
|
||||||
|
.ug-grid {
|
||||||
|
background: var(--theme-surface);
|
||||||
|
border-radius: 16px;
|
||||||
|
overflow: hidden;
|
||||||
|
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
|
||||||
|
margin-bottom: 24px;
|
||||||
|
|
||||||
|
::ng-deep .datagrid {
|
||||||
|
.datagrid-head {
|
||||||
|
background: var(--theme-background);
|
||||||
|
|
||||||
|
.datagrid-column {
|
||||||
|
padding: 16px 24px;
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: var(--theme-text-secondary);
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.05em;
|
||||||
|
border-bottom: 1px solid #e5e7eb;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.datagrid-row {
|
||||||
|
transition: background-color 150ms ease-out;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: var(--theme-background);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:not(:last-child) {
|
||||||
|
border-bottom: 1px solid #e5e7eb;
|
||||||
|
}
|
||||||
|
|
||||||
|
.datagrid-cell {
|
||||||
|
padding: 16px 24px;
|
||||||
|
font-size: 14px;
|
||||||
|
color: var(--theme-text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.datagrid-footer {
|
||||||
|
background: var(--theme-background);
|
||||||
|
border-top: 1px solid #e5e7eb;
|
||||||
|
padding: 16px 24px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-grid-footer {
|
||||||
|
background: var(--theme-background);
|
||||||
|
border-top: 1px solid #e5e7eb;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Modern Card Styles - More beautiful design
|
||||||
|
.ug-cards {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
|
||||||
|
gap: 24px;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-card-item {
|
||||||
|
background: var(--theme-surface);
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.06);
|
||||||
|
border-radius: var(--theme-border-radius); // Using theme variable
|
||||||
|
box-shadow: var(--theme-shadow); // Using theme variable
|
||||||
|
overflow: hidden;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
transform: translateY(-5px);
|
||||||
|
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
|
||||||
|
border-color: rgba(14, 165, 233, 0.3); // var(--theme-primary) with 30% opacity
|
||||||
|
}
|
||||||
|
|
||||||
|
&__header {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 10px;
|
||||||
|
padding: 16px;
|
||||||
|
background: linear-gradient(135deg, rgba(14, 165, 233, 0.1), transparent); // var(--theme-primary) with 10% opacity
|
||||||
|
min-height: 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__icon {
|
||||||
|
clr-icon {
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
color: var(--theme-primary);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__title {
|
||||||
|
font-weight: 700;
|
||||||
|
flex: 1 1 auto;
|
||||||
|
font-size: 18px;
|
||||||
|
color: var(--theme-text);
|
||||||
|
max-width: 60%;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__badge {
|
||||||
|
margin-left: auto;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
padding: 4px 12px;
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 600;
|
||||||
|
border-radius: 9999px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.05em;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__body {
|
||||||
|
padding: 16px;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||||
|
gap: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__footer {
|
||||||
|
padding: 16px;
|
||||||
|
display: flex;
|
||||||
|
gap: 8px;
|
||||||
|
border-top: 1px solid rgba(0, 0, 0, 0.06);
|
||||||
|
background: var(--theme-background);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-kv {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
font-size: 14px;
|
||||||
|
|
||||||
|
span {
|
||||||
|
color: var(--theme-text-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
strong {
|
||||||
|
color: var(--theme-text);
|
||||||
|
font-weight: 500;
|
||||||
|
text-align: right;
|
||||||
|
max-width: 60%;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Theme the card footer buttons
|
||||||
|
.ug-card-item__footer .ug-btn {
|
||||||
|
border-radius: 10px;
|
||||||
|
flex: 1;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-card-item__footer .ug-btn.ug-btn-outline {
|
||||||
|
border: 1px solid var(--theme-secondary);
|
||||||
|
color: var(--theme-secondary);
|
||||||
|
background: transparent;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: rgba(100, 116, 139, 0.1); // var(--theme-secondary) with 10% opacity
|
||||||
|
border-color: var(--theme-secondary);
|
||||||
|
color: var(--theme-secondary);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-card-item__footer .ug-btn.ug-btn-error {
|
||||||
|
background: var(--theme-error, #ef4444);
|
||||||
|
color: #fff;
|
||||||
|
border-color: var(--theme-error, #ef4444);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: var(--theme-error-dark, #dc2626);
|
||||||
|
border-color: var(--theme-error-dark, #dc2626);
|
||||||
|
transform: translateY(-2px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Table view action buttons
|
||||||
|
.ug-action-item {
|
||||||
|
@extend .ug-btn;
|
||||||
|
@extend .ug-btn-ghost;
|
||||||
|
@extend .ug-btn-sm;
|
||||||
|
width: 100%;
|
||||||
|
justify-content: flex-start;
|
||||||
|
margin-bottom: 4px;
|
||||||
|
text-align: left;
|
||||||
|
|
||||||
|
clr-icon {
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.ug-btn-error {
|
||||||
|
color: var(--theme-error, #ef4444);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: rgba(239, 68, 68, 0.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ensure action overflow is visible
|
||||||
|
::ng-deep .datagrid-action-overflow {
|
||||||
|
button.action-item {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
text-align: left;
|
||||||
|
padding: 8px 12px;
|
||||||
|
|
||||||
|
clr-icon {
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Status Badges
|
||||||
|
.ug-status-badge {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
padding: 6px 16px;
|
||||||
|
font-size: 13px;
|
||||||
|
font-weight: 600;
|
||||||
|
border-radius: 9999px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.05em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-status-enabled {
|
||||||
|
background: linear-gradient(135deg, rgba(16, 185, 129, 0.1) 0%, rgba(16, 185, 129, 0.05) 100%);
|
||||||
|
color: #10b981;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-status-disabled {
|
||||||
|
background: linear-gradient(135deg, rgba(239, 68, 68, 0.1) 0%, rgba(239, 68, 68, 0.05) 100%);
|
||||||
|
color: #ef4444;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Form Styles
|
||||||
|
.ug-form-group {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-form-label {
|
||||||
|
display: block;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--theme-text);
|
||||||
|
margin-bottom: 8px;
|
||||||
|
font-family: var(--theme-font-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-form-input, .ug-form-select {
|
||||||
|
width: 100%;
|
||||||
|
padding: 12px 16px;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 1.5;
|
||||||
|
color: var(--theme-text);
|
||||||
|
background: var(--theme-surface);
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.1);
|
||||||
|
border-radius: 8px;
|
||||||
|
transition: all 200ms ease-out;
|
||||||
|
margin-bottom: 0;
|
||||||
|
font-family: var(--theme-font-primary);
|
||||||
|
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||||
|
|
||||||
|
&:focus {
|
||||||
|
outline: none;
|
||||||
|
border-color: var(--theme-primary);
|
||||||
|
box-shadow: 0 0 0 3px rgba(14, 165, 233, 0.1); // var(--theme-primary) with 10% opacity
|
||||||
|
}
|
||||||
|
|
||||||
|
&:disabled {
|
||||||
|
background: var(--theme-background);
|
||||||
|
color: var(--theme-text-secondary);
|
||||||
|
cursor: not-allowed;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.error {
|
||||||
|
border-color: #ef4444;
|
||||||
|
box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
&::placeholder {
|
||||||
|
color: var(--theme-text-secondary);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-form-select {
|
||||||
|
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e");
|
||||||
|
background-position: right 12px center;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-size: 16px 12px;
|
||||||
|
padding-right: 40px;
|
||||||
|
appearance: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-form-error {
|
||||||
|
color: #ef4444;
|
||||||
|
font-size: 12px;
|
||||||
|
margin-top: 6px;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.required-field {
|
||||||
|
color: #ef4444;
|
||||||
|
margin-left: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-file-input {
|
||||||
|
width: 100%;
|
||||||
|
padding: 12px;
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.1);
|
||||||
|
border-radius: 8px;
|
||||||
|
background: var(--theme-surface);
|
||||||
|
color: var(--theme-text);
|
||||||
|
|
||||||
|
&::file-selector-button {
|
||||||
|
@extend .ug-btn;
|
||||||
|
@extend .ug-btn-secondary;
|
||||||
|
margin-right: 12px;
|
||||||
|
padding: 8px 16px;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete Modal Styles
|
||||||
|
.ug-delete-header {
|
||||||
|
text-align: center;
|
||||||
|
padding: 24px;
|
||||||
|
border-bottom: 1px solid rgba(0, 0, 0, 0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-delete-icon {
|
||||||
|
color: #ef4444;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-delete-title {
|
||||||
|
font-size: 24px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: var(--theme-text);
|
||||||
|
margin: 0 0 8px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-delete-subtitle {
|
||||||
|
font-size: 16px;
|
||||||
|
color: var(--theme-text-secondary);
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-delete-details {
|
||||||
|
padding: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-delete-detail-item {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 12px 0;
|
||||||
|
border-bottom: 1px solid rgba(0, 0, 0, 0.05);
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-delete-detail-label {
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--theme-text-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-delete-detail-value {
|
||||||
|
font-weight: 600;
|
||||||
|
color: var(--theme-text);
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete {
|
||||||
|
color: #ef4444;
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.heading {
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
color: var(--theme-text);
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Modal Header
|
||||||
|
::ng-deep .modal-header {
|
||||||
|
background: linear-gradient(135deg, var(--theme-primary) 0%, var(--theme-accent) 100%);
|
||||||
|
color: white;
|
||||||
|
border-radius: 16px 16px 0 0 !important;
|
||||||
|
padding: 20px 24px !important;
|
||||||
|
|
||||||
|
.modal-title {
|
||||||
|
color: white;
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 20px;
|
||||||
|
margin: 0;
|
||||||
|
font-family: var(--theme-font-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.close {
|
||||||
|
color: white;
|
||||||
|
opacity: 0.8;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Modal Body
|
||||||
|
::ng-deep .modal-body {
|
||||||
|
padding: 24px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Modal Footer
|
||||||
|
::ng-deep .modal-footer {
|
||||||
|
padding: 20px 24px !important;
|
||||||
|
background: var(--theme-background);
|
||||||
|
border-radius: 0 0 16px 16px !important;
|
||||||
|
border-top: 1px solid rgba(0, 0, 0, 0.05) !important;
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
gap: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Recaptcha Container Styles
|
||||||
|
.recaptcha-container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.recaptcha-code {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 12px;
|
||||||
|
padding: 12px;
|
||||||
|
background: var(--theme-background);
|
||||||
|
border-radius: 8px;
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.1);
|
||||||
|
|
||||||
|
b {
|
||||||
|
font-size: 18px;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
font-family: 'Courier New', monospace;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Toggle Styles
|
||||||
|
.clr-toggle-wrapper {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
|
||||||
|
label {
|
||||||
|
margin-bottom: 0;
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--theme-text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// URL Field Styles
|
||||||
|
.ug-form-input[type="url"] {
|
||||||
|
font-family: monospace;
|
||||||
|
}
|
||||||
|
// Responsive adjustments
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.ug-hero {
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 16px;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
flex-direction: column;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__actions {
|
||||||
|
width: 100%;
|
||||||
|
justify-content: center;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-toolbar {
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-search {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-cards {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-card-item {
|
||||||
|
&__header {
|
||||||
|
flex-direction: column;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
&__icon {
|
||||||
|
margin-right: 0;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__footer {
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.recaptcha-code {
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-start;
|
||||||
|
|
||||||
|
.ug-btn {
|
||||||
|
align-self: flex-end;
|
||||||
|
}
|
||||||
|
}}
|
||||||
@ -0,0 +1,630 @@
|
|||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
import { ToastrService } from 'ngx-toastr';
|
||||||
|
import { AlertService } from 'src/app/services/alert.service';
|
||||||
|
import { Basicp1service} from './Basicp1.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 { Basicp1cardvariable } from './Basicp1_cardvariable';
|
||||||
|
import { UserInfoService } from 'src/app/services/user-info.service';
|
||||||
|
import { CsvService } from 'src/app/services/csv.service';
|
||||||
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
|
import { ThemeService } from 'src/app/services/theme.service';
|
||||||
|
import { Subscription } from 'rxjs';
|
||||||
|
import { ExcelService } from 'src/app/services/excel.service';
|
||||||
|
import * as moment from 'moment';
|
||||||
|
declare var JsBarcode: any;
|
||||||
|
@Component({
|
||||||
|
selector: 'app-Basicp1',
|
||||||
|
templateUrl: './Basicp1.component.html',
|
||||||
|
styleUrls: ['./Basicp1.component.scss']
|
||||||
|
})
|
||||||
|
export class Basicp1Component implements OnInit {
|
||||||
|
cardButton = Basicp1cardvariable.cardButton;
|
||||||
|
cardmodeldata = Basicp1cardvariable.cardmodeldata;
|
||||||
|
public dashboardArray: DashboardContentModel2[];
|
||||||
|
isCardview = Basicp1cardvariable.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 = 'Basicp1_formCode'
|
||||||
|
tableName = 'Basicp1'; checkFormCode; selected: any[] = [];
|
||||||
|
filterText: string = '';
|
||||||
|
viewMode: 'table' | 'cards' = 'cards';
|
||||||
|
private themeSubscription: Subscription; constructor(
|
||||||
|
private extensionService: ExtensionService,
|
||||||
|
private userInfoService:UserInfoService,
|
||||||
|
private mainService:Basicp1service,
|
||||||
|
private alertService: AlertService,
|
||||||
|
private toastr: ToastrService,
|
||||||
|
private csvService: CsvService,
|
||||||
|
private translate: TranslateService,
|
||||||
|
private themeService: ThemeService,
|
||||||
|
private excel: ExcelService, private _fb: FormBuilder,
|
||||||
|
) { }
|
||||||
|
|
||||||
|
switchLanguage(language: string) {
|
||||||
|
this.translate.use(language);
|
||||||
|
}
|
||||||
|
private editInterval: any;
|
||||||
|
// component button
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.themeSubscription = this.themeService.currentTheme$.subscribe(() => {
|
||||||
|
// Theme changes will automatically update CSS variables
|
||||||
|
// This triggers a re-render of themed elements
|
||||||
|
});
|
||||||
|
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],
|
||||||
|
|
||||||
|
name2 : [null],
|
||||||
|
|
||||||
|
number1 : [null,[Validators.required]],
|
||||||
|
|
||||||
|
number2 : [null,[Validators.required]],
|
||||||
|
|
||||||
|
phone_number: ['+91'],
|
||||||
|
|
||||||
|
phone_number2: ['+91'],
|
||||||
|
|
||||||
|
paragraph_field : [null],
|
||||||
|
|
||||||
|
paragraph_field2 : [null],
|
||||||
|
|
||||||
|
password_field : [null],
|
||||||
|
confirmpassword_field : [null],
|
||||||
|
|
||||||
|
textarea : [null],
|
||||||
|
|
||||||
|
textarea_field : [null],
|
||||||
|
|
||||||
|
textarea_field2 : [null],
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}, {
|
||||||
|
validator: Confirmedpassword_fieldValidator('password_field', 'confirmpassword_field')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}); // 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 === "Basicp1_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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
ngOnDestroy(): void {
|
||||||
|
if (this.themeSubscription) {
|
||||||
|
this.themeSubscription.unsubscribe();
|
||||||
|
}
|
||||||
|
if (this.editInterval) {
|
||||||
|
clearInterval(this.editInterval);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
get filteredGroups(): any[] {
|
||||||
|
const items: any[] = (this.product as unknown as any[]) || [];
|
||||||
|
const text = (this.filterText || '').toLowerCase();
|
||||||
|
if (!text) { return items; }
|
||||||
|
return items.filter(g => (
|
||||||
|
((g?.name || '').toString()).toLowerCase().includes(text) ||
|
||||||
|
|
||||||
|
((g?.name2 || '').toString()).toLowerCase().includes(text) ||
|
||||||
|
|
||||||
|
((g?.number1 || '').toString()).toLowerCase().includes(text) ||
|
||||||
|
|
||||||
|
((g?.number2 || '').toString()).toLowerCase().includes(text) ||
|
||||||
|
|
||||||
|
((g?.phone_number || '').toString()).toLowerCase().includes(text) ||
|
||||||
|
|
||||||
|
((g?.phone_number2 || '').toString()).toLowerCase().includes(text) ||
|
||||||
|
|
||||||
|
((g?.paragraph_field || '').toString()).toLowerCase().includes(text) ||
|
||||||
|
|
||||||
|
((g?.paragraph_field2 || '').toString()).toLowerCase().includes(text) ||
|
||||||
|
|
||||||
|
((g?.password_field || '').toString()).toLowerCase().includes(text) ||
|
||||||
|
|
||||||
|
((g?.textarea || '').toString()).toLowerCase().includes(text) ||
|
||||||
|
|
||||||
|
((g?.textarea_field || '').toString()).toLowerCase().includes(text) ||
|
||||||
|
|
||||||
|
((g?.textarea_field2 || '').toString()).toLowerCase().includes(text)
|
||||||
|
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
setViewMode(mode: 'table' | 'cards') { this.viewMode = mode; }
|
||||||
|
onExport() {
|
||||||
|
this.excel.exportAsExcelFile(this.product, 'user_',
|
||||||
|
moment().format('YYYYMMDD_HHmmss'))
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
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() {
|
||||||
|
this.modalAdd = true; this.submitted = false;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
submitted = false;
|
||||||
|
onSubmit() {
|
||||||
|
console.log(this.entryForm.value);
|
||||||
|
this.submitted = true;
|
||||||
|
if (this.entryForm.invalid) {
|
||||||
|
return;
|
||||||
|
}this.onCreate();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
isValidPhone_number(phone: string): boolean {
|
||||||
|
const phonePattern = /^(\+[1-9][0-9]{0,2})?[1-9][0-9]{9}$/;
|
||||||
|
return phonePattern.test(phone);
|
||||||
|
}
|
||||||
|
|
||||||
|
isValidPhone_number2(phone: string): boolean {
|
||||||
|
const phonePattern = /^(\+[1-9][0-9]{0,2})?[1-9][0-9]{9}$/;
|
||||||
|
return phonePattern.test(phone);
|
||||||
|
}
|
||||||
|
|
||||||
|
rsModalparagraph_field = false;
|
||||||
|
goToReplaceStringparagraph_field (row){
|
||||||
|
this.rowSelected = row; this.rsModalparagraph_field =true; }
|
||||||
|
|
||||||
|
rsModalparagraph_field2 = false;
|
||||||
|
goToReplaceStringparagraph_field2 (row){
|
||||||
|
this.rowSelected = row; this.rsModalparagraph_field2 =true; }
|
||||||
|
|
||||||
|
newpHidepassword_field: boolean = true;
|
||||||
|
newIconpassword_field: string = "eye";
|
||||||
|
newShapeChangerpassword_field() {
|
||||||
|
this.newpHidepassword_field = !this.newpHidepassword_field;
|
||||||
|
if(this.newpHidepassword_field){
|
||||||
|
this.newIconpassword_field = 'eye' } else { this.newIconpassword_field = 'eye-hide' }
|
||||||
|
}
|
||||||
|
|
||||||
|
newaddpHidepassword_field: boolean = true;
|
||||||
|
newaddIconpassword_field: string = "eye";
|
||||||
|
newaddChangerpassword_field() { this.newaddpHidepassword_field = !this.newaddpHidepassword_field;
|
||||||
|
if(this.newaddpHidepassword_field){ this.newaddIconpassword_field = 'eye' } else {
|
||||||
|
this.newaddIconpassword_field = 'eye-hide' } }
|
||||||
|
|
||||||
|
rsModaltextarea = false;
|
||||||
|
goToReplaceStringtextarea(row){
|
||||||
|
this.rowSelected = row; this.rsModaltextarea =true; }
|
||||||
|
|
||||||
|
rsModaltextarea_field = false;
|
||||||
|
goToReplaceStringtextarea_field(row){
|
||||||
|
this.rowSelected = row; this.rsModaltextarea_field =true; }
|
||||||
|
|
||||||
|
rsModaltextarea_field2 = false;
|
||||||
|
goToReplaceStringtextarea_field2(row){
|
||||||
|
this.rowSelected = row; this.rsModaltextarea_field2 =true; }
|
||||||
|
|
||||||
|
|
||||||
|
// csv
|
||||||
|
|
||||||
|
modalCsv = false;
|
||||||
|
selectedFiles: File;
|
||||||
|
fileList;
|
||||||
|
ttype = 'usergroupmaintenance';
|
||||||
|
|
||||||
|
|
||||||
|
// Import CSV
|
||||||
|
public selectFile(event) {
|
||||||
|
this.selectedFiles = event.target.files[0];
|
||||||
|
// this.saveCsv();
|
||||||
|
}
|
||||||
|
|
||||||
|
csvImport() {
|
||||||
|
console.log("import CSV");
|
||||||
|
this.modalCsv = true;
|
||||||
|
}
|
||||||
|
saveCsv() {
|
||||||
|
this.csvService.importCsv(this.selectedFiles, this.ttype).subscribe(data => {
|
||||||
|
console.log(data);
|
||||||
|
this.fileList = data;
|
||||||
|
this.modalCsv = false;
|
||||||
|
},
|
||||||
|
(error) => {
|
||||||
|
console.log(error);
|
||||||
|
if (error.status == 202) {
|
||||||
|
this.toastr.success(error.error.text)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
downloadFiles() {
|
||||||
|
this.csvService.downloadCsvs(this.ttype);
|
||||||
|
|
||||||
|
}
|
||||||
|
// updateaction
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export function Confirmedpassword_fieldValidator(controlName: string, matchingControlName: string){
|
||||||
|
return (formGroup: FormGroup) => {
|
||||||
|
const control = formGroup.controls[controlName];
|
||||||
|
const matchingControl = formGroup.controls[matchingControlName];
|
||||||
|
if (matchingControl.errors && !matchingControl.errors.confirmedpassword_fieldValidator) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (control.value !== matchingControl.value) {
|
||||||
|
matchingControl.setErrors({ confirmedpassword_fieldValidator: true });
|
||||||
|
} else {
|
||||||
|
matchingControl.setErrors(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,57 @@
|
|||||||
|
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 Basicp1service{
|
||||||
|
private baseURL = "Basicp1/Basicp1" ; 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 Basicp1cardvariable = {
|
||||||
|
"cardButton": false,
|
||||||
|
"cardmodeldata": ``
|
||||||
|
}
|
||||||
@ -0,0 +1,552 @@
|
|||||||
|
<ol class="breadcrumb breadcrumb-arrow font-trirong">
|
||||||
|
<li><a href="javascript://"> Basicp2</a></li>
|
||||||
|
</ol>
|
||||||
|
<section class="ug-hero">
|
||||||
|
<div class="ug-hero__content">
|
||||||
|
<div class="ug-hero__icon"><clr-icon shape="users"></clr-icon></div>
|
||||||
|
<div>
|
||||||
|
<h2 class="ug-hero__title">Basicp2</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="ug-hero__actions">
|
||||||
|
<button id="add" class="ug-btn ug-btn-primary" (click)="goToAdd()">
|
||||||
|
<clr-icon shape="plus"></clr-icon>
|
||||||
|
<span class="ug-btn-text">ADD</span>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="ug-toolbar">
|
||||||
|
<div class="ug-toolbar__left">
|
||||||
|
<div class="ug-search">
|
||||||
|
<clr-icon shape="search"></clr-icon>
|
||||||
|
<input class="ug-search__input" type="text" placeholder="SEARCH" [(ngModel)]="filterText" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="ug-toolbar__right">
|
||||||
|
<div class="ug-view-toggle">
|
||||||
|
<button class="ug-btn ug-btn-sm" [class.ug-btn-primary]="viewMode==='cards'" (click)="setViewMode('cards')">
|
||||||
|
<clr-icon shape="view-cards"></clr-icon>
|
||||||
|
</button>
|
||||||
|
<button class="ug-btn ug-btn-sm" [class.ug-btn-primary]="viewMode==='table'" (click)="setViewMode('table')">
|
||||||
|
<clr-icon shape="table"></clr-icon>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<clr-datagrid class="ug-grid" [clrDgLoading]="loading" *ngIf="viewMode==='table'">
|
||||||
|
<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]="'about'">
|
||||||
|
<ng-container *clrDgHideableColumn="{hidden: false}">
|
||||||
|
about
|
||||||
|
</ng-container>
|
||||||
|
</clr-dg-column>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-column [clrDgField]="'textarea2'">
|
||||||
|
<ng-container *clrDgHideableColumn="{hidden: false}">
|
||||||
|
Textarea2
|
||||||
|
</ng-container>
|
||||||
|
</clr-dg-column>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-column [clrDgField]="'date_field'">
|
||||||
|
<ng-container *clrDgHideableColumn="{hidden: false}">
|
||||||
|
Date Field
|
||||||
|
</ng-container>
|
||||||
|
</clr-dg-column>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-column [clrDgField]="'date_field2'">
|
||||||
|
<ng-container *clrDgHideableColumn="{hidden: false}">
|
||||||
|
Date Field2
|
||||||
|
</ng-container>
|
||||||
|
</clr-dg-column>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-column [clrDgField]="'datetime_field'">
|
||||||
|
<ng-container *clrDgHideableColumn="{hidden: false}">
|
||||||
|
Datetime Field
|
||||||
|
</ng-container>
|
||||||
|
</clr-dg-column>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-column [clrDgField]="'datetime_field2'">
|
||||||
|
<ng-container *clrDgHideableColumn="{hidden: false}">
|
||||||
|
Datetime Field2
|
||||||
|
</ng-container>
|
||||||
|
</clr-dg-column>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-column [clrDgField]="'email_field'">
|
||||||
|
<ng-container *clrDgHideableColumn="{hidden: false}">
|
||||||
|
Email Field
|
||||||
|
</ng-container>
|
||||||
|
</clr-dg-column>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-column [clrDgField]="'email_field2'">
|
||||||
|
<ng-container *clrDgHideableColumn="{hidden: false}">
|
||||||
|
Email Field2
|
||||||
|
</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 filteredGroups;let i = index" [clrDgItem]="user">
|
||||||
|
|
||||||
|
<clr-dg-cell (click)="goToReplaceStringabout (user.about)" style="cursor: pointer; align-items: center;"><clr-icon shape="details"></clr-icon>
|
||||||
|
</clr-dg-cell>
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-cell (click)="goToReplaceStringtextarea2 (user.textarea2)" style="cursor: pointer; align-items: center;"><clr-icon shape="details"></clr-icon>
|
||||||
|
</clr-dg-cell>
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-cell>{{user.date_field }}</clr-dg-cell>
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-cell>{{user.date_field2 }}</clr-dg-cell>
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-cell>{{user.datetime_field }}</clr-dg-cell>
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-cell>{{user.datetime_field2 }}</clr-dg-cell>
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-cell>{{user.email_field }}</clr-dg-cell>
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-cell>{{user.email_field2 }}</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="ug-action-item" *ngIf="medit == 'true' || medit == true" (click)="onEdit(user)">
|
||||||
|
<clr-icon shape="edit"></clr-icon>
|
||||||
|
EDIT
|
||||||
|
</button> -->
|
||||||
|
<button class="ug-action-item" (click)="onEdit(user)">
|
||||||
|
<clr-icon shape="edit"></clr-icon>
|
||||||
|
EDIT
|
||||||
|
</button>
|
||||||
|
<button class="ug-action-item ug-btn-error" (click)="onDelete(user)">
|
||||||
|
<clr-icon shape="trash"></clr-icon>
|
||||||
|
DELETE
|
||||||
|
</button>
|
||||||
|
</clr-dg-action-overflow>
|
||||||
|
|
||||||
|
</clr-dg-row>
|
||||||
|
|
||||||
|
<clr-dg-footer class="ug-grid-footer">
|
||||||
|
<clr-dg-pagination #pagination [clrDgPageSize]="10">
|
||||||
|
<clr-dg-page-size [clrPageSizeOptions]="[10,20,50,100]">Record per page</clr-dg-page-size>
|
||||||
|
{{pagination.firstItem + 1}} - {{pagination.lastItem + 1}}
|
||||||
|
of {{pagination.totalItems}} Records
|
||||||
|
</clr-dg-pagination>
|
||||||
|
</clr-dg-footer>
|
||||||
|
</clr-datagrid>
|
||||||
|
|
||||||
|
<div class="ug-cards" *ngIf="viewMode==='cards'">
|
||||||
|
<div class="ug-card-item" *ngFor="let user of filteredGroups; let i = index">
|
||||||
|
<div class="ug-card-item__body">
|
||||||
|
|
||||||
|
<div class="ug-kv"><span>about</span><strong>{{user.about}}</strong></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="ug-kv"><span>Textarea2</span><strong>{{user.textarea2}}</strong></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="ug-kv"><span>Date Field</span><strong>{{user.date_field}}</strong></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="ug-kv"><span>Date Field2</span><strong>{{user.date_field2}}</strong></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="ug-kv"><span>Datetime Field</span><strong>{{user.datetime_field}}</strong></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="ug-kv"><span>Datetime Field2</span><strong>{{user.datetime_field2}}</strong></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="ug-kv"><span>Email Field</span><strong>{{user.email_field}}</strong></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="ug-kv"><span>Email Field2</span><strong>{{user.email_field2}}</strong></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="ug-kv"><span>UserId Field</span><strong>{{user.userid_field}}</strong></div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="ug-card-item__footer">
|
||||||
|
|
||||||
|
<button class="ug-btn ug-btn-sm ug-btn-outline" (click)="onEdit(user)">
|
||||||
|
<clr-icon shape="edit"></clr-icon> Edit
|
||||||
|
</button>
|
||||||
|
<button class="ug-btn ug-btn-sm ug-btn-error" (click)="onDelete(user)">
|
||||||
|
<clr-icon shape="trash"></clr-icon> Delete
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<clr-modal [(clrModalOpen)]="rsModalabout" [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)]="rsModaltextarea2" [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)]="modalAdd" [clrModalSize]="'md'" [clrModalStaticBackdrop]="true">
|
||||||
|
<h3 class="modal-title">Add Basicp2</h3>
|
||||||
|
<div class="modal-body">
|
||||||
|
<form [formGroup]="entryForm" (ngSubmit)="onSubmit()">
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="about" class="ug-form-label">about</label>
|
||||||
|
<textarea
|
||||||
|
id="about"
|
||||||
|
class="ug-form-input"
|
||||||
|
formControlName="about"
|
||||||
|
placeholder="Enter text"
|
||||||
|
rows="3"></textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="textarea2" class="ug-form-label">Textarea2</label>
|
||||||
|
<textarea
|
||||||
|
id="textarea2"
|
||||||
|
class="ug-form-input"
|
||||||
|
formControlName="textarea2"
|
||||||
|
placeholder="Enter text"
|
||||||
|
rows="3"></textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="date_field" class="ug-form-label">Date Field</label>
|
||||||
|
<input type="date" id="date_field" class="ug-form-input" formControlName="date_field">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="date_field2" class="ug-form-label">Date Field2</label>
|
||||||
|
<input type="date" id="date_field2" class="ug-form-input" formControlName="date_field2">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="clr-col-sm-12">
|
||||||
|
<label> Datetime Field</label>
|
||||||
|
<input class="clr-input" type="datetime-local" formControlName="datetime_field" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="clr-col-sm-12">
|
||||||
|
<label> Datetime Field2</label>
|
||||||
|
<input class="clr-input" type="datetime-local" formControlName="datetime_field2" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="email_field" class="ug-form-label">Email Field</label>
|
||||||
|
<input type="email" id="email_field" class="ug-form-input" formControlName="email_field" placeholder="Enter Email Field">
|
||||||
|
<div *ngIf="entryForm.controls['email_field'].errors" class="ug-form-error">
|
||||||
|
<div *ngIf="entryForm.controls['email_field'].hasError('pattern')" class="error_mess">* Email must be a valid email address</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="email_field2" class="ug-form-label">Email Field2</label>
|
||||||
|
<input type="email" id="email_field2" class="ug-form-input" formControlName="email_field2" placeholder="Enter Email Field2">
|
||||||
|
<div *ngIf="entryForm.controls['email_field2'].errors" class="ug-form-error">
|
||||||
|
<div *ngIf="entryForm.controls['email_field2'].hasError('pattern')" class="error_mess">* Email must be a valid email address</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="ug-btn ug-btn-outline" (click)="modalAdd = false">Cancel</button>
|
||||||
|
<button type="submit" class="ug-btn ug-btn-primary">ADD</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</clr-modal>
|
||||||
|
|
||||||
|
<clr-modal [(clrModalOpen)]="modalEdit" [clrModalSize]="'md'" [clrModalStaticBackdrop]="true">
|
||||||
|
<h3 class="modal-title">Update Basicp2</h3>
|
||||||
|
<div class="modal-body" *ngIf="rowSelected.id">
|
||||||
|
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="about" class="ug-form-label">about</label>
|
||||||
|
<textarea id="about" class="ug-form-input" [(ngModel)]="rowSelected.about"
|
||||||
|
name="about" placeholder="Enter text" rows="3"></textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="textarea2" class="ug-form-label">Textarea2</label>
|
||||||
|
<textarea id="textarea2" class="ug-form-input" [(ngModel)]="rowSelected.textarea2"
|
||||||
|
name="textarea2" placeholder="Enter text" rows="3"></textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="date_field" class="ug-form-label">Date Field</label>
|
||||||
|
<input type="date" id="date_field" class="ug-form-input" [(ngModel)]="rowSelected.date_field" name="date_field">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="date_field2" class="ug-form-label">Date Field2</label>
|
||||||
|
<input type="date" id="date_field2" class="ug-form-input" [(ngModel)]="rowSelected.date_field2" name="date_field2">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="clr-col-sm-12">
|
||||||
|
<label>Datetime Field</label>
|
||||||
|
<input class="clr-input" type="datetime-local" [(ngModel)]="rowSelected.datetime_field" name="datetime_field" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="clr-col-sm-12">
|
||||||
|
<label>Datetime Field2</label>
|
||||||
|
<input class="clr-input" type="datetime-local" [(ngModel)]="rowSelected.datetime_field2" name="datetime_field2" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="email_field" class="ug-form-label">Email Field</label>
|
||||||
|
<input type="email" id="email_field" class="ug-form-input" [(ngModel)]="rowSelected.email_field" name="email_field" placeholder="Enter email address">
|
||||||
|
<div *ngIf="rowSelected.email_field && !isValidemail_field(rowSelected.email_field)" class="ug-form-error">
|
||||||
|
* Email must be a valid email address.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="email_field2" class="ug-form-label">Email Field2</label>
|
||||||
|
<input type="email" id="email_field2" class="ug-form-input" [(ngModel)]="rowSelected.email_field2" name="email_field2" placeholder="Enter email address">
|
||||||
|
<div *ngIf="rowSelected.email_field2 && !isValidemail_field2(rowSelected.email_field2)" class="ug-form-error">
|
||||||
|
* Email must be a valid email address.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="ug-btn ug-btn-outline" (click)="modalEdit = false">Cancel</button>
|
||||||
|
<button type="submit" (click)="onUpdate(rowSelected.id)" class="ug-btn ug-btn-primary">Update</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<clr-modal [(clrModalOpen)]="modaldelete" [clrModalSize]="'lg'" [clrModalStaticBackdrop]="true">
|
||||||
|
<div class="modal-body" *ngIf="rowSelected.id">
|
||||||
|
<div class="ug-delete-header">
|
||||||
|
<div class="ug-delete-icon">
|
||||||
|
<clr-icon shape="exclamation-triangle" size="48"></clr-icon>
|
||||||
|
</div>
|
||||||
|
<h1 class="ug-delete-title">Are You Sure Want to Delete?</h1>
|
||||||
|
<p class="ug-delete-subtitle">This action cannot be undone</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ug-delete-details"><div class="ug-delete-detail-item">
|
||||||
|
<span class="ug-delete-detail-label">about:</span>
|
||||||
|
<span class="ug-delete-detail-value">{{rowSelected.about}}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ug-delete-detail-item">
|
||||||
|
<span class="ug-delete-detail-label">Textarea2:</span>
|
||||||
|
<span class="ug-delete-detail-value">{{rowSelected.textarea2}}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ug-delete-detail-item">
|
||||||
|
<span class="ug-delete-detail-label">Date Field:</span>
|
||||||
|
<span class="ug-delete-detail-value">{{rowSelected.date_field}}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ug-delete-detail-item">
|
||||||
|
<span class="ug-delete-detail-label">Date Field2:</span>
|
||||||
|
<span class="ug-delete-detail-value">{{rowSelected.date_field2}}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ug-delete-detail-item">
|
||||||
|
<span class="ug-delete-detail-label">Datetime Field:</span>
|
||||||
|
<span class="ug-delete-detail-value">{{rowSelected.datetime_field}}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ug-delete-detail-item">
|
||||||
|
<span class="ug-delete-detail-label">Datetime Field2:</span>
|
||||||
|
<span class="ug-delete-detail-value">{{rowSelected.datetime_field2}}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ug-delete-detail-item">
|
||||||
|
<span class="ug-delete-detail-label">Email Field:</span>
|
||||||
|
<span class="ug-delete-detail-value">{{rowSelected.email_field}}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ug-delete-detail-item">
|
||||||
|
<span class="ug-delete-detail-label">Email Field2:</span>
|
||||||
|
<span class="ug-delete-detail-value">{{rowSelected.email_field2}}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ug-delete-detail-item">
|
||||||
|
<span class="ug-delete-detail-label">UserId Field:</span>
|
||||||
|
<span class="ug-delete-detail-value">{{rowSelected.userid_field}}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="ug-btn ug-btn-outline" (click)="modaldelete = false">Cancel</button>
|
||||||
|
<button type="submit" (click)="delete(rowSelected.id)" class="ug-btn ug-btn-error">Delete</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</clr-modal>
|
||||||
|
|
||||||
|
<clr-modal [(clrModalOpen)]="modalCsv" [clrModalSize]="'sm'" [clrModalStaticBackdrop]="false">
|
||||||
|
<h3 class="modal-title">Import File</h3>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label class="ug-form-label">Select CSV File</label>
|
||||||
|
<input type="file" name="file" class="ug-file-input" (change)="selectFile($event)"
|
||||||
|
accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button class="ug-btn ug-btn-outline" type="button" (click)="modalCsv = false">Cancel</button>
|
||||||
|
<button class="ug-btn ug-btn-primary" type="button" [disabled]="!selectedFiles" (click)="saveCsv()">Import</button>
|
||||||
|
</div>
|
||||||
|
</clr-modal>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- htmlpopup -->
|
||||||
@ -0,0 +1,870 @@
|
|||||||
|
|
||||||
|
@import '../../../../../../styles.scss';
|
||||||
|
|
||||||
|
// Import design tokens
|
||||||
|
@import '../../../../../../styles/design-tokens';
|
||||||
|
// Newbasicp1 Styles
|
||||||
|
.ug-hero {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
padding: 24px 32px;
|
||||||
|
background: linear-gradient(135deg, var(--theme-primary) 0%, var(--theme-accent) 100%);
|
||||||
|
color: white;
|
||||||
|
border-radius: 16px;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
|
||||||
|
backdrop-filter: blur(16px);
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.2);
|
||||||
|
font-family: var(--theme-font-primary);
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__icon {
|
||||||
|
background: rgba(255, 255, 255, 0.2);
|
||||||
|
border-radius: 50%;
|
||||||
|
padding: 16px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
clr-icon {
|
||||||
|
width: 36px;
|
||||||
|
height: 36px;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__title {
|
||||||
|
font-size: 28px;
|
||||||
|
font-weight: 700;
|
||||||
|
margin: 0;
|
||||||
|
color: white;
|
||||||
|
font-family: var(--theme-font-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
&__subtitle {
|
||||||
|
font-size: 16px;
|
||||||
|
margin: 0;
|
||||||
|
opacity: 0.9;
|
||||||
|
color: rgba(255, 255, 255, 0.8);
|
||||||
|
}
|
||||||
|
|
||||||
|
&__actions {
|
||||||
|
display: flex;
|
||||||
|
gap: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-btn-text {
|
||||||
|
margin-left: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Modern Button Styles using ThemeService
|
||||||
|
.ug-btn {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
gap: 8px;
|
||||||
|
padding: 12px 20px;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
line-height: 1;
|
||||||
|
border-radius: 8px;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: all 200ms ease-out;
|
||||||
|
text-decoration: none;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
font-family: var(--theme-font-primary);
|
||||||
|
z-index: 1;
|
||||||
|
|
||||||
|
&:focus {
|
||||||
|
outline: 2px solid var(--theme-primary);
|
||||||
|
outline-offset: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:disabled {
|
||||||
|
opacity: 0.5;
|
||||||
|
cursor: not-allowed;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sizes
|
||||||
|
&.ug-btn-sm {
|
||||||
|
padding: 8px 16px;
|
||||||
|
font-size: 13px;
|
||||||
|
height: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.ug-btn-md {
|
||||||
|
padding: 12px 20px;
|
||||||
|
font-size: 14px;
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.ug-btn-lg {
|
||||||
|
padding: 16px 24px;
|
||||||
|
font-size: 16px;
|
||||||
|
height: 48px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Variants
|
||||||
|
&.ug-btn-primary {
|
||||||
|
background: linear-gradient(135deg, var(--theme-primary) 0%, var(--theme-accent) 100%);
|
||||||
|
color: white;
|
||||||
|
border-color: var(--theme-primary);
|
||||||
|
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: linear-gradient(135deg, var(--theme-primary, #0284c7) 0%, var(--theme-accent, #7c3aed) 100%);
|
||||||
|
transform: translateY(-2px);
|
||||||
|
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:active {
|
||||||
|
transform: translateY(0);
|
||||||
|
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.ug-btn-secondary {
|
||||||
|
background: var(--theme-surface);
|
||||||
|
color: var(--theme-text);
|
||||||
|
border-color: rgba(0, 0, 0, 0.1);
|
||||||
|
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: var(--theme-background);
|
||||||
|
border-color: rgba(0, 0, 0, 0.2);
|
||||||
|
transform: translateY(-1px);
|
||||||
|
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.ug-btn-outline {
|
||||||
|
background: transparent;
|
||||||
|
color: var(--theme-secondary);
|
||||||
|
border-color: var(--theme-secondary);
|
||||||
|
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: rgba(100, 116, 139, 0.1); // var(--theme-secondary) with 10% opacity
|
||||||
|
border-color: var(--theme-secondary);
|
||||||
|
color: var(--theme-secondary);
|
||||||
|
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.ug-btn-error {
|
||||||
|
background: var(--theme-error, #ef4444);
|
||||||
|
color: white;
|
||||||
|
border-color: var(--theme-error, #ef4444);
|
||||||
|
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: var(--theme-error-dark, #dc2626);
|
||||||
|
border-color: var(--theme-error-dark, #dc2626);
|
||||||
|
transform: translateY(-2px);
|
||||||
|
box-shadow: 0 10px 15px -3px rgba(239, 68, 68, 0.3), 0 4px 6px -2px rgba(239, 68, 68, 0.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.ug-btn-ghost {
|
||||||
|
background: transparent;
|
||||||
|
color: var(--theme-text-secondary);
|
||||||
|
border-color: transparent;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: var(--theme-background);
|
||||||
|
color: var(--theme-text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-toolbar {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
padding: 16px;
|
||||||
|
background: var(--theme-surface);
|
||||||
|
border-radius: 12px;
|
||||||
|
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
||||||
|
|
||||||
|
&__left {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__right {
|
||||||
|
display: flex;
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Form Container Styles
|
||||||
|
.form-container {
|
||||||
|
padding: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-row {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
margin: 0 -12px 16px -12px;
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
flex-direction: column;
|
||||||
|
margin: 0 0 16px 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-col {
|
||||||
|
flex: 1;
|
||||||
|
padding: 0 12px;
|
||||||
|
min-width: 250px;
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
padding: 0;
|
||||||
|
min-width: 100%;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Password Input Container
|
||||||
|
.password-input-container {
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.password-input {
|
||||||
|
padding-right: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.password-toggle {
|
||||||
|
position: absolute;
|
||||||
|
right: 12px;
|
||||||
|
top: 50%;
|
||||||
|
transform: translateY(-50%);
|
||||||
|
background: none;
|
||||||
|
border: none;
|
||||||
|
cursor: pointer;
|
||||||
|
color: var(--theme-text-secondary);
|
||||||
|
padding: 4px;
|
||||||
|
border-radius: 4px;
|
||||||
|
transition: all 200ms ease-out;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: var(--theme-text);
|
||||||
|
background: rgba(0, 0, 0, 0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
clr-icon {
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Textarea Styles
|
||||||
|
textarea.ug-form-input {
|
||||||
|
min-height: 100px;
|
||||||
|
resize: vertical;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-search {
|
||||||
|
position: relative;
|
||||||
|
max-width: 400px;
|
||||||
|
|
||||||
|
clr-icon {
|
||||||
|
position: absolute;
|
||||||
|
left: 12px;
|
||||||
|
top: 50%;
|
||||||
|
transform: translateY(-50%);
|
||||||
|
color: #9ca3af;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__input {
|
||||||
|
width: 100%;
|
||||||
|
padding: 12px 12px 12px 40px;
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.1);
|
||||||
|
border-radius: 8px;
|
||||||
|
font-size: 14px;
|
||||||
|
transition: all 200ms ease-out;
|
||||||
|
background: var(--theme-surface);
|
||||||
|
color: var(--theme-text);
|
||||||
|
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||||
|
|
||||||
|
&:focus {
|
||||||
|
outline: none;
|
||||||
|
border-color: var(--theme-primary);
|
||||||
|
box-shadow: 0 0 0 3px rgba(14, 165, 233, 0.1); // var(--theme-primary) with 10% opacity
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-view-toggle {
|
||||||
|
display: flex;
|
||||||
|
border: 1px solid #d1d5db;
|
||||||
|
border-radius: 8px;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
.ug-btn {
|
||||||
|
border-radius: 0;
|
||||||
|
border: none;
|
||||||
|
background: var(--theme-surface);
|
||||||
|
color: var(--theme-text-secondary);
|
||||||
|
|
||||||
|
&:first-child {
|
||||||
|
border-right: 1px solid #d1d5db;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.ug-btn-primary {
|
||||||
|
background: var(--theme-primary);
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Modern Table Styles
|
||||||
|
.ug-grid {
|
||||||
|
background: var(--theme-surface);
|
||||||
|
border-radius: 16px;
|
||||||
|
overflow: hidden;
|
||||||
|
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
|
||||||
|
margin-bottom: 24px;
|
||||||
|
|
||||||
|
::ng-deep .datagrid {
|
||||||
|
.datagrid-head {
|
||||||
|
background: var(--theme-background);
|
||||||
|
|
||||||
|
.datagrid-column {
|
||||||
|
padding: 16px 24px;
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: var(--theme-text-secondary);
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.05em;
|
||||||
|
border-bottom: 1px solid #e5e7eb;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.datagrid-row {
|
||||||
|
transition: background-color 150ms ease-out;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: var(--theme-background);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:not(:last-child) {
|
||||||
|
border-bottom: 1px solid #e5e7eb;
|
||||||
|
}
|
||||||
|
|
||||||
|
.datagrid-cell {
|
||||||
|
padding: 16px 24px;
|
||||||
|
font-size: 14px;
|
||||||
|
color: var(--theme-text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.datagrid-footer {
|
||||||
|
background: var(--theme-background);
|
||||||
|
border-top: 1px solid #e5e7eb;
|
||||||
|
padding: 16px 24px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-grid-footer {
|
||||||
|
background: var(--theme-background);
|
||||||
|
border-top: 1px solid #e5e7eb;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Modern Card Styles - More beautiful design
|
||||||
|
.ug-cards {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
|
||||||
|
gap: 24px;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-card-item {
|
||||||
|
background: var(--theme-surface);
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.06);
|
||||||
|
border-radius: var(--theme-border-radius); // Using theme variable
|
||||||
|
box-shadow: var(--theme-shadow); // Using theme variable
|
||||||
|
overflow: hidden;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
transform: translateY(-5px);
|
||||||
|
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
|
||||||
|
border-color: rgba(14, 165, 233, 0.3); // var(--theme-primary) with 30% opacity
|
||||||
|
}
|
||||||
|
|
||||||
|
&__header {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 10px;
|
||||||
|
padding: 16px;
|
||||||
|
background: linear-gradient(135deg, rgba(14, 165, 233, 0.1), transparent); // var(--theme-primary) with 10% opacity
|
||||||
|
min-height: 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__icon {
|
||||||
|
clr-icon {
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
color: var(--theme-primary);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__title {
|
||||||
|
font-weight: 700;
|
||||||
|
flex: 1 1 auto;
|
||||||
|
font-size: 18px;
|
||||||
|
color: var(--theme-text);
|
||||||
|
max-width: 60%;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__badge {
|
||||||
|
margin-left: auto;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
padding: 4px 12px;
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 600;
|
||||||
|
border-radius: 9999px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.05em;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__body {
|
||||||
|
padding: 16px;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||||
|
gap: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__footer {
|
||||||
|
padding: 16px;
|
||||||
|
display: flex;
|
||||||
|
gap: 8px;
|
||||||
|
border-top: 1px solid rgba(0, 0, 0, 0.06);
|
||||||
|
background: var(--theme-background);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-kv {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
font-size: 14px;
|
||||||
|
|
||||||
|
span {
|
||||||
|
color: var(--theme-text-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
strong {
|
||||||
|
color: var(--theme-text);
|
||||||
|
font-weight: 500;
|
||||||
|
text-align: right;
|
||||||
|
max-width: 60%;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Theme the card footer buttons
|
||||||
|
.ug-card-item__footer .ug-btn {
|
||||||
|
border-radius: 10px;
|
||||||
|
flex: 1;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-card-item__footer .ug-btn.ug-btn-outline {
|
||||||
|
border: 1px solid var(--theme-secondary);
|
||||||
|
color: var(--theme-secondary);
|
||||||
|
background: transparent;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: rgba(100, 116, 139, 0.1); // var(--theme-secondary) with 10% opacity
|
||||||
|
border-color: var(--theme-secondary);
|
||||||
|
color: var(--theme-secondary);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-card-item__footer .ug-btn.ug-btn-error {
|
||||||
|
background: var(--theme-error, #ef4444);
|
||||||
|
color: #fff;
|
||||||
|
border-color: var(--theme-error, #ef4444);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: var(--theme-error-dark, #dc2626);
|
||||||
|
border-color: var(--theme-error-dark, #dc2626);
|
||||||
|
transform: translateY(-2px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Table view action buttons
|
||||||
|
.ug-action-item {
|
||||||
|
@extend .ug-btn;
|
||||||
|
@extend .ug-btn-ghost;
|
||||||
|
@extend .ug-btn-sm;
|
||||||
|
width: 100%;
|
||||||
|
justify-content: flex-start;
|
||||||
|
margin-bottom: 4px;
|
||||||
|
text-align: left;
|
||||||
|
|
||||||
|
clr-icon {
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.ug-btn-error {
|
||||||
|
color: var(--theme-error, #ef4444);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: rgba(239, 68, 68, 0.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ensure action overflow is visible
|
||||||
|
::ng-deep .datagrid-action-overflow {
|
||||||
|
button.action-item {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
text-align: left;
|
||||||
|
padding: 8px 12px;
|
||||||
|
|
||||||
|
clr-icon {
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Status Badges
|
||||||
|
.ug-status-badge {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
padding: 6px 16px;
|
||||||
|
font-size: 13px;
|
||||||
|
font-weight: 600;
|
||||||
|
border-radius: 9999px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.05em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-status-enabled {
|
||||||
|
background: linear-gradient(135deg, rgba(16, 185, 129, 0.1) 0%, rgba(16, 185, 129, 0.05) 100%);
|
||||||
|
color: #10b981;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-status-disabled {
|
||||||
|
background: linear-gradient(135deg, rgba(239, 68, 68, 0.1) 0%, rgba(239, 68, 68, 0.05) 100%);
|
||||||
|
color: #ef4444;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Form Styles
|
||||||
|
.ug-form-group {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-form-label {
|
||||||
|
display: block;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--theme-text);
|
||||||
|
margin-bottom: 8px;
|
||||||
|
font-family: var(--theme-font-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-form-input, .ug-form-select {
|
||||||
|
width: 100%;
|
||||||
|
padding: 12px 16px;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 1.5;
|
||||||
|
color: var(--theme-text);
|
||||||
|
background: var(--theme-surface);
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.1);
|
||||||
|
border-radius: 8px;
|
||||||
|
transition: all 200ms ease-out;
|
||||||
|
margin-bottom: 0;
|
||||||
|
font-family: var(--theme-font-primary);
|
||||||
|
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||||
|
|
||||||
|
&:focus {
|
||||||
|
outline: none;
|
||||||
|
border-color: var(--theme-primary);
|
||||||
|
box-shadow: 0 0 0 3px rgba(14, 165, 233, 0.1); // var(--theme-primary) with 10% opacity
|
||||||
|
}
|
||||||
|
|
||||||
|
&:disabled {
|
||||||
|
background: var(--theme-background);
|
||||||
|
color: var(--theme-text-secondary);
|
||||||
|
cursor: not-allowed;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.error {
|
||||||
|
border-color: #ef4444;
|
||||||
|
box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
&::placeholder {
|
||||||
|
color: var(--theme-text-secondary);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-form-select {
|
||||||
|
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e");
|
||||||
|
background-position: right 12px center;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-size: 16px 12px;
|
||||||
|
padding-right: 40px;
|
||||||
|
appearance: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-form-error {
|
||||||
|
color: #ef4444;
|
||||||
|
font-size: 12px;
|
||||||
|
margin-top: 6px;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.required-field {
|
||||||
|
color: #ef4444;
|
||||||
|
margin-left: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-file-input {
|
||||||
|
width: 100%;
|
||||||
|
padding: 12px;
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.1);
|
||||||
|
border-radius: 8px;
|
||||||
|
background: var(--theme-surface);
|
||||||
|
color: var(--theme-text);
|
||||||
|
|
||||||
|
&::file-selector-button {
|
||||||
|
@extend .ug-btn;
|
||||||
|
@extend .ug-btn-secondary;
|
||||||
|
margin-right: 12px;
|
||||||
|
padding: 8px 16px;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete Modal Styles
|
||||||
|
.ug-delete-header {
|
||||||
|
text-align: center;
|
||||||
|
padding: 24px;
|
||||||
|
border-bottom: 1px solid rgba(0, 0, 0, 0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-delete-icon {
|
||||||
|
color: #ef4444;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-delete-title {
|
||||||
|
font-size: 24px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: var(--theme-text);
|
||||||
|
margin: 0 0 8px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-delete-subtitle {
|
||||||
|
font-size: 16px;
|
||||||
|
color: var(--theme-text-secondary);
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-delete-details {
|
||||||
|
padding: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-delete-detail-item {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 12px 0;
|
||||||
|
border-bottom: 1px solid rgba(0, 0, 0, 0.05);
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-delete-detail-label {
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--theme-text-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-delete-detail-value {
|
||||||
|
font-weight: 600;
|
||||||
|
color: var(--theme-text);
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete {
|
||||||
|
color: #ef4444;
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.heading {
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
color: var(--theme-text);
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Modal Header
|
||||||
|
::ng-deep .modal-header {
|
||||||
|
background: linear-gradient(135deg, var(--theme-primary) 0%, var(--theme-accent) 100%);
|
||||||
|
color: white;
|
||||||
|
border-radius: 16px 16px 0 0 !important;
|
||||||
|
padding: 20px 24px !important;
|
||||||
|
|
||||||
|
.modal-title {
|
||||||
|
color: white;
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 20px;
|
||||||
|
margin: 0;
|
||||||
|
font-family: var(--theme-font-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.close {
|
||||||
|
color: white;
|
||||||
|
opacity: 0.8;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Modal Body
|
||||||
|
::ng-deep .modal-body {
|
||||||
|
padding: 24px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Modal Footer
|
||||||
|
::ng-deep .modal-footer {
|
||||||
|
padding: 20px 24px !important;
|
||||||
|
background: var(--theme-background);
|
||||||
|
border-radius: 0 0 16px 16px !important;
|
||||||
|
border-top: 1px solid rgba(0, 0, 0, 0.05) !important;
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
gap: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Recaptcha Container Styles
|
||||||
|
.recaptcha-container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.recaptcha-code {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 12px;
|
||||||
|
padding: 12px;
|
||||||
|
background: var(--theme-background);
|
||||||
|
border-radius: 8px;
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.1);
|
||||||
|
|
||||||
|
b {
|
||||||
|
font-size: 18px;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
font-family: 'Courier New', monospace;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Toggle Styles
|
||||||
|
.clr-toggle-wrapper {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
|
||||||
|
label {
|
||||||
|
margin-bottom: 0;
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--theme-text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// URL Field Styles
|
||||||
|
.ug-form-input[type="url"] {
|
||||||
|
font-family: monospace;
|
||||||
|
}
|
||||||
|
// Responsive adjustments
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.ug-hero {
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 16px;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
flex-direction: column;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__actions {
|
||||||
|
width: 100%;
|
||||||
|
justify-content: center;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-toolbar {
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-search {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-cards {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-card-item {
|
||||||
|
&__header {
|
||||||
|
flex-direction: column;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
&__icon {
|
||||||
|
margin-right: 0;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__footer {
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.recaptcha-code {
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-start;
|
||||||
|
|
||||||
|
.ug-btn {
|
||||||
|
align-self: flex-end;
|
||||||
|
}
|
||||||
|
}}
|
||||||
@ -0,0 +1,516 @@
|
|||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
import { ToastrService } from 'ngx-toastr';
|
||||||
|
import { AlertService } from 'src/app/services/alert.service';
|
||||||
|
import { Basicp2service} from './Basicp2.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 { Basicp2cardvariable } from './Basicp2_cardvariable';
|
||||||
|
import { UserInfoService } from 'src/app/services/user-info.service';
|
||||||
|
import { CsvService } from 'src/app/services/csv.service';
|
||||||
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
|
import { ThemeService } from 'src/app/services/theme.service';
|
||||||
|
import { Subscription } from 'rxjs';
|
||||||
|
import { ExcelService } from 'src/app/services/excel.service';
|
||||||
|
import * as moment from 'moment';
|
||||||
|
declare var JsBarcode: any;
|
||||||
|
@Component({
|
||||||
|
selector: 'app-Basicp2',
|
||||||
|
templateUrl: './Basicp2.component.html',
|
||||||
|
styleUrls: ['./Basicp2.component.scss']
|
||||||
|
})
|
||||||
|
export class Basicp2Component implements OnInit {
|
||||||
|
cardButton = Basicp2cardvariable.cardButton;
|
||||||
|
cardmodeldata = Basicp2cardvariable.cardmodeldata;
|
||||||
|
public dashboardArray: DashboardContentModel2[];
|
||||||
|
isCardview = Basicp2cardvariable.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 = 'Basicp2_formCode'
|
||||||
|
tableName = 'Basicp2'; checkFormCode; selected: any[] = [];
|
||||||
|
filterText: string = '';
|
||||||
|
viewMode: 'table' | 'cards' = 'cards';
|
||||||
|
private themeSubscription: Subscription; constructor(
|
||||||
|
private extensionService: ExtensionService,
|
||||||
|
private userInfoService:UserInfoService,
|
||||||
|
private mainService:Basicp2service,
|
||||||
|
private alertService: AlertService,
|
||||||
|
private toastr: ToastrService,
|
||||||
|
private csvService: CsvService,
|
||||||
|
private translate: TranslateService,
|
||||||
|
private themeService: ThemeService,
|
||||||
|
private excel: ExcelService, private _fb: FormBuilder,
|
||||||
|
) { }
|
||||||
|
|
||||||
|
switchLanguage(language: string) {
|
||||||
|
this.translate.use(language);
|
||||||
|
}
|
||||||
|
private editInterval: any;
|
||||||
|
// component button
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.themeSubscription = this.themeService.currentTheme$.subscribe(() => {
|
||||||
|
// Theme changes will automatically update CSS variables
|
||||||
|
// This triggers a re-render of themed elements
|
||||||
|
});
|
||||||
|
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({
|
||||||
|
about : [null],
|
||||||
|
|
||||||
|
textarea2 : [null],
|
||||||
|
|
||||||
|
date_field : [null],
|
||||||
|
|
||||||
|
date_field2 : [null],
|
||||||
|
|
||||||
|
datetime_field : [null],
|
||||||
|
|
||||||
|
datetime_field2 : [null],
|
||||||
|
|
||||||
|
email_field : [null,[Validators.required]],
|
||||||
|
|
||||||
|
email_field2 : [null,[Validators.required]],
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}); // 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 === "Basicp2_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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
ngOnDestroy(): void {
|
||||||
|
if (this.themeSubscription) {
|
||||||
|
this.themeSubscription.unsubscribe();
|
||||||
|
}
|
||||||
|
if (this.editInterval) {
|
||||||
|
clearInterval(this.editInterval);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
get filteredGroups(): any[] {
|
||||||
|
const items: any[] = (this.product as unknown as any[]) || [];
|
||||||
|
const text = (this.filterText || '').toLowerCase();
|
||||||
|
if (!text) { return items; }
|
||||||
|
return items.filter(g => (
|
||||||
|
((g?.about || '').toString()).toLowerCase().includes(text) ||
|
||||||
|
|
||||||
|
((g?.textarea2 || '').toString()).toLowerCase().includes(text) ||
|
||||||
|
|
||||||
|
((g?.date_field || '').toString()).toLowerCase().includes(text) ||
|
||||||
|
|
||||||
|
((g?.date_field2 || '').toString()).toLowerCase().includes(text) ||
|
||||||
|
|
||||||
|
((g?.datetime_field || '').toString()).toLowerCase().includes(text) ||
|
||||||
|
|
||||||
|
((g?.datetime_field2 || '').toString()).toLowerCase().includes(text) ||
|
||||||
|
|
||||||
|
((g?.email_field || '').toString()).toLowerCase().includes(text) ||
|
||||||
|
|
||||||
|
((g?.email_field2 || '').toString()).toLowerCase().includes(text) ||
|
||||||
|
|
||||||
|
((g?.userid_field || '').toString()).toLowerCase().includes(text)
|
||||||
|
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
setViewMode(mode: 'table' | 'cards') { this.viewMode = mode; }
|
||||||
|
onExport() {
|
||||||
|
this.excel.exportAsExcelFile(this.product, 'user_',
|
||||||
|
moment().format('YYYYMMDD_HHmmss'))
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
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() {
|
||||||
|
this.modalAdd = true; this.submitted = false;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
submitted = false;
|
||||||
|
onSubmit() {
|
||||||
|
console.log(this.entryForm.value);
|
||||||
|
this.submitted = true;
|
||||||
|
if (this.entryForm.invalid) {
|
||||||
|
return;
|
||||||
|
}this.onCreate();
|
||||||
|
|
||||||
|
}
|
||||||
|
rsModalabout = false;
|
||||||
|
goToReplaceStringabout(row){
|
||||||
|
this.rowSelected = row; this.rsModalabout =true; }
|
||||||
|
|
||||||
|
rsModaltextarea2 = false;
|
||||||
|
goToReplaceStringtextarea2(row){
|
||||||
|
this.rowSelected = row; this.rsModaltextarea2 =true; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
isValidemail_field(email: string): boolean {
|
||||||
|
const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
|
||||||
|
return emailPattern.test(email); }
|
||||||
|
|
||||||
|
isValidemail_field2(email: string): boolean {
|
||||||
|
const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
|
||||||
|
return emailPattern.test(email); }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// csv
|
||||||
|
|
||||||
|
modalCsv = false;
|
||||||
|
selectedFiles: File;
|
||||||
|
fileList;
|
||||||
|
ttype = 'usergroupmaintenance';
|
||||||
|
|
||||||
|
|
||||||
|
// Import CSV
|
||||||
|
public selectFile(event) {
|
||||||
|
this.selectedFiles = event.target.files[0];
|
||||||
|
// this.saveCsv();
|
||||||
|
}
|
||||||
|
|
||||||
|
csvImport() {
|
||||||
|
console.log("import CSV");
|
||||||
|
this.modalCsv = true;
|
||||||
|
}
|
||||||
|
saveCsv() {
|
||||||
|
this.csvService.importCsv(this.selectedFiles, this.ttype).subscribe(data => {
|
||||||
|
console.log(data);
|
||||||
|
this.fileList = data;
|
||||||
|
this.modalCsv = false;
|
||||||
|
},
|
||||||
|
(error) => {
|
||||||
|
console.log(error);
|
||||||
|
if (error.status == 202) {
|
||||||
|
this.toastr.success(error.error.text)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
downloadFiles() {
|
||||||
|
this.csvService.downloadCsvs(this.ttype);
|
||||||
|
|
||||||
|
}
|
||||||
|
// updateaction
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,51 @@
|
|||||||
|
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 Basicp2service{
|
||||||
|
private baseURL = "Basicp2/Basicp2" ; 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 Basicp2cardvariable = {
|
||||||
|
"cardButton": false,
|
||||||
|
"cardmodeldata": ``
|
||||||
|
}
|
||||||
@ -0,0 +1,702 @@
|
|||||||
|
<ol class="breadcrumb breadcrumb-arrow font-trirong">
|
||||||
|
<li><a href="javascript://"> Basicp3</a></li>
|
||||||
|
</ol>
|
||||||
|
<section class="ug-hero">
|
||||||
|
<div class="ug-hero__content">
|
||||||
|
<div class="ug-hero__icon"><clr-icon shape="users"></clr-icon></div>
|
||||||
|
<div>
|
||||||
|
<h2 class="ug-hero__title">Basicp3</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="ug-hero__actions">
|
||||||
|
<button id="add" class="ug-btn ug-btn-primary" (click)="goToAdd()">
|
||||||
|
<clr-icon shape="plus"></clr-icon>
|
||||||
|
<span class="ug-btn-text">ADD</span>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="ug-toolbar">
|
||||||
|
<div class="ug-toolbar__left">
|
||||||
|
<div class="ug-search">
|
||||||
|
<clr-icon shape="search"></clr-icon>
|
||||||
|
<input class="ug-search__input" type="text" placeholder="SEARCH" [(ngModel)]="filterText" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="ug-toolbar__right">
|
||||||
|
<div class="ug-view-toggle">
|
||||||
|
<button class="ug-btn ug-btn-sm" [class.ug-btn-primary]="viewMode==='cards'" (click)="setViewMode('cards')">
|
||||||
|
<clr-icon shape="view-cards"></clr-icon>
|
||||||
|
</button>
|
||||||
|
<button class="ug-btn ug-btn-sm" [class.ug-btn-primary]="viewMode==='table'" (click)="setViewMode('table')">
|
||||||
|
<clr-icon shape="table"></clr-icon>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<clr-datagrid class="ug-grid" [clrDgLoading]="loading" *ngIf="viewMode==='table'">
|
||||||
|
<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]="'toggle_switch'">
|
||||||
|
<ng-container *clrDgHideableColumn="{hidden: false}">
|
||||||
|
Toggle Switch
|
||||||
|
</ng-container>
|
||||||
|
</clr-dg-column>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-column [clrDgField]="'toggle_switch2'">
|
||||||
|
<ng-container *clrDgHideableColumn="{hidden: false}">
|
||||||
|
Toggle Switch2
|
||||||
|
</ng-container>
|
||||||
|
</clr-dg-column>
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-column [clrDgField]="'url_field'"> <ng-container *clrDgHideableColumn="{hidden: false}"> Url Field
|
||||||
|
</ng-container></clr-dg-column>
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-column [clrDgField]="'url_field2'"> <ng-container *clrDgHideableColumn="{hidden: false}"> Url Field2
|
||||||
|
</ng-container></clr-dg-column>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-column [clrDgField]="'decimal_field'">
|
||||||
|
<ng-container *clrDgHideableColumn="{hidden: false}">
|
||||||
|
Decimal Field
|
||||||
|
</ng-container>
|
||||||
|
</clr-dg-column>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-column [clrDgField]="'decimal_field2'">
|
||||||
|
<ng-container *clrDgHideableColumn="{hidden: false}">
|
||||||
|
Decimal Field2
|
||||||
|
</ng-container>
|
||||||
|
</clr-dg-column>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-column [clrDgField]="'percentage_field'">
|
||||||
|
<ng-container *clrDgHideableColumn="{hidden: false}">
|
||||||
|
Percentage Field
|
||||||
|
</ng-container>
|
||||||
|
</clr-dg-column>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-column [clrDgField]="'percentage_field2'">
|
||||||
|
<ng-container *clrDgHideableColumn="{hidden: false}">
|
||||||
|
Percentage Field2
|
||||||
|
</ng-container>
|
||||||
|
</clr-dg-column>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-column [clrDgField]="'documentsequenc'">
|
||||||
|
<ng-container *clrDgHideableColumn="{hidden: false}">
|
||||||
|
documentsequenc
|
||||||
|
</ng-container>
|
||||||
|
</clr-dg-column>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-column [clrDgField]="'recaptcha'">
|
||||||
|
<ng-container *clrDgHideableColumn="{hidden: false}">
|
||||||
|
recaptcha
|
||||||
|
</ng-container>
|
||||||
|
</clr-dg-column>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-column [clrDgField]="'recaptcha2'">
|
||||||
|
<ng-container *clrDgHideableColumn="{hidden: false}">
|
||||||
|
recaptcha2
|
||||||
|
</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 filteredGroups;let i = index" [clrDgItem]="user">
|
||||||
|
|
||||||
|
<clr-dg-cell>{{user.toggle_switch }}</clr-dg-cell>
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-cell>{{user.toggle_switch2 }}</clr-dg-cell>
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-cell (click)="goTourl_fieldUrl(user.url_field)" style="cursor: pointer; color: rgb(108, 108, 194);">{{user.url_field}}</clr-dg-cell>
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-cell (click)="goTourl_field2Url(user.url_field2)" style="cursor: pointer; color: rgb(108, 108, 194);">{{user.url_field2}}</clr-dg-cell>
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-cell>{{user.decimal_field }}</clr-dg-cell>
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-cell>{{user.decimal_field2 }}</clr-dg-cell>
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-cell>{{user.percentage_field }}</clr-dg-cell>
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-cell>{{user.percentage_field2 }}</clr-dg-cell>
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-cell>{{user.documentsequenc }}</clr-dg-cell>
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-cell>{{user.recaptcha }}</clr-dg-cell>
|
||||||
|
|
||||||
|
|
||||||
|
<clr-dg-cell>{{user.recaptcha2 }}</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="ug-action-item" *ngIf="medit == 'true' || medit == true" (click)="onEdit(user)">
|
||||||
|
<clr-icon shape="edit"></clr-icon>
|
||||||
|
EDIT
|
||||||
|
</button> -->
|
||||||
|
<button class="ug-action-item" (click)="onEdit(user)">
|
||||||
|
<clr-icon shape="edit"></clr-icon>
|
||||||
|
EDIT
|
||||||
|
</button>
|
||||||
|
<button class="ug-action-item ug-btn-error" (click)="onDelete(user)">
|
||||||
|
<clr-icon shape="trash"></clr-icon>
|
||||||
|
DELETE
|
||||||
|
</button>
|
||||||
|
</clr-dg-action-overflow>
|
||||||
|
|
||||||
|
</clr-dg-row>
|
||||||
|
|
||||||
|
<clr-dg-footer class="ug-grid-footer">
|
||||||
|
<clr-dg-pagination #pagination [clrDgPageSize]="10">
|
||||||
|
<clr-dg-page-size [clrPageSizeOptions]="[10,20,50,100]">Record per page</clr-dg-page-size>
|
||||||
|
{{pagination.firstItem + 1}} - {{pagination.lastItem + 1}}
|
||||||
|
of {{pagination.totalItems}} Records
|
||||||
|
</clr-dg-pagination>
|
||||||
|
</clr-dg-footer>
|
||||||
|
</clr-datagrid>
|
||||||
|
|
||||||
|
<div class="ug-cards" *ngIf="viewMode==='cards'">
|
||||||
|
<div class="ug-card-item" *ngFor="let user of filteredGroups; let i = index">
|
||||||
|
<div class="ug-card-item__body">
|
||||||
|
|
||||||
|
<div class="ug-kv"><span>Toggle Switch</span><strong>{{user.toggle_switch}}</strong></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="ug-kv"><span>Toggle Switch2</span><strong>{{user.toggle_switch2}}</strong></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="ug-kv"><span>Url Field</span><strong>{{user.url_field}}</strong></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="ug-kv"><span>Url Field2</span><strong>{{user.url_field2}}</strong></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="ug-kv"><span>Decimal Field</span><strong>{{user.decimal_field}}</strong></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="ug-kv"><span>Decimal Field2</span><strong>{{user.decimal_field2}}</strong></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="ug-kv"><span>Percentage Field</span><strong>{{user.percentage_field}}</strong></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="ug-kv"><span>Percentage Field2</span><strong>{{user.percentage_field2}}</strong></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="ug-kv"><span>documentsequenc</span><strong>{{user.documentsequenc}}</strong></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="ug-kv"><span>recaptcha</span><strong>{{user.recaptcha}}</strong></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="ug-kv"><span>recaptcha2</span><strong>{{user.recaptcha2}}</strong></div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="ug-card-item__footer">
|
||||||
|
|
||||||
|
<button class="ug-btn ug-btn-sm ug-btn-outline" (click)="onEdit(user)">
|
||||||
|
<clr-icon shape="edit"></clr-icon> Edit
|
||||||
|
</button>
|
||||||
|
<button class="ug-btn ug-btn-sm ug-btn-error" (click)="onDelete(user)">
|
||||||
|
<clr-icon shape="trash"></clr-icon> Delete
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<clr-modal [(clrModalOpen)]="modalAdd" [clrModalSize]="'md'" [clrModalStaticBackdrop]="true">
|
||||||
|
<h3 class="modal-title">Add Basicp3</h3>
|
||||||
|
<div class="modal-body">
|
||||||
|
<form [formGroup]="entryForm" (ngSubmit)="onSubmit()">
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label class="ug-form-label">Toggle Switch</label>
|
||||||
|
<div class="clr-toggle-wrapper">
|
||||||
|
<input type="checkbox" id="toggle_switch" formControlName="toggle_switch" clrToggle>
|
||||||
|
<label for="toggle_switch">Toggle Switch</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label class="ug-form-label">Toggle Switch2</label>
|
||||||
|
<div class="clr-toggle-wrapper">
|
||||||
|
<input type="checkbox" id="toggle_switch2" formControlName="toggle_switch2" clrToggle>
|
||||||
|
<label for="toggle_switch2">Toggle Switch2</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="url_field" class="ug-form-label">Url Field</label>
|
||||||
|
<input type="url" id="url_field" class="ug-form-input" formControlName="url_field" placeholder="Enter Url Field">
|
||||||
|
<div *ngIf="entryForm.controls['url_field'].errors" class="ug-form-error">
|
||||||
|
<div *ngIf="entryForm.controls['url_field'].hasError('pattern')" class="error_mess">* Please enter a valid URL.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="url_field2" class="ug-form-label">Url Field2</label>
|
||||||
|
<input type="url" id="url_field2" class="ug-form-input" formControlName="url_field2" placeholder="Enter Url Field2">
|
||||||
|
<div *ngIf="entryForm.controls['url_field2'].errors" class="ug-form-error">
|
||||||
|
<div *ngIf="entryForm.controls['url_field2'].hasError('pattern')" class="error_mess">* Please enter a valid URL.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="decimal_field" class="ug-form-label">Decimal Field<span class="required-field">*</span></label>
|
||||||
|
<input type="number" id="decimal_field" class="ug-form-input" formControlName="decimal_field" placeholder="Enter decimal value" step="0.01">
|
||||||
|
<div *ngIf="submitted && entryForm.controls.decimal_field.errors" class="ug-form-error">
|
||||||
|
<div *ngIf="submitted && entryForm.controls.decimal_field.errors.required">*This field is Required</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="decimal_field2" class="ug-form-label">Decimal Field2<span class="required-field">*</span></label>
|
||||||
|
<input type="number" id="decimal_field2" class="ug-form-input" formControlName="decimal_field2" placeholder="Enter decimal value" step="0.01">
|
||||||
|
<div *ngIf="submitted && entryForm.controls.decimal_field2.errors" class="ug-form-error">
|
||||||
|
<div *ngIf="submitted && entryForm.controls.decimal_field2.errors.required">*This field is Required</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="percentage_field" class="ug-form-label">Percentage Field<span class="required-field">*</span></label>
|
||||||
|
<input type="number" id="percentage_field" class="ug-form-input" formControlName="percentage_field" placeholder="Enter Percentage Field">
|
||||||
|
<div *ngIf="submitted && entryForm.controls.percentage_field.errors" class="ug-form-error">
|
||||||
|
<div *ngIf="submitted && entryForm.controls.percentage_field.errors.required">*This field is Required</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="percentage_field2" class="ug-form-label">Percentage Field2<span class="required-field">*</span></label>
|
||||||
|
<input type="number" id="percentage_field2" class="ug-form-input" formControlName="percentage_field2" placeholder="Enter Percentage Field2">
|
||||||
|
<div *ngIf="submitted && entryForm.controls.percentage_field2.errors" class="ug-form-error">
|
||||||
|
<div *ngIf="submitted && entryForm.controls.percentage_field2.errors.required">*This field is Required</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label class="ug-form-label">recaptcha<span class="required-field">*</span></label>
|
||||||
|
<div class="recaptcha-container">
|
||||||
|
<div class="recaptcha-code">
|
||||||
|
<b>{{ recaptchaCode }}</b>
|
||||||
|
<button type="button" class="ug-btn ug-btn-sm ug-btn-secondary" (click)="generaterecaptcha()">
|
||||||
|
<clr-icon shape="refresh"></clr-icon>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<input type="text" class="ug-form-input" formControlName="recaptcha" placeholder="Enter the code above">
|
||||||
|
<div *ngIf="submitted && entryForm.controls.recaptcha?.errors?.required" class="ug-form-error">*This field is Required</div>
|
||||||
|
<div *ngIf="submitted && entryForm.get('recaptcha')?.errors && entryForm.get('recaptcha')?.dirty" class="ug-form-error">
|
||||||
|
<div *ngIf="submitted && entryForm.controls['recaptcha']?.hasError('recaptchaMismatch')" class="error_mess">recaptcha not valid.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label class="ug-form-label">recaptcha2<span class="required-field">*</span></label>
|
||||||
|
<div class="recaptcha-container">
|
||||||
|
<div class="recaptcha-code">
|
||||||
|
<b>{{ recaptcha2Code }}</b>
|
||||||
|
<button type="button" class="ug-btn ug-btn-sm ug-btn-secondary" (click)="generaterecaptcha2()">
|
||||||
|
<clr-icon shape="refresh"></clr-icon>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<input type="text" class="ug-form-input" formControlName="recaptcha2" placeholder="Enter the code above">
|
||||||
|
<div *ngIf="submitted && entryForm.controls.recaptcha2?.errors?.required" class="ug-form-error">*This field is Required</div>
|
||||||
|
<div *ngIf="submitted && entryForm.get('recaptcha2')?.errors && entryForm.get('recaptcha2')?.dirty" class="ug-form-error">
|
||||||
|
<div *ngIf="submitted && entryForm.controls['recaptcha2']?.hasError('recaptcha2Mismatch')" class="error_mess">recaptcha2 not valid.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="ug-btn ug-btn-outline" (click)="modalAdd = false">Cancel</button>
|
||||||
|
<button type="submit" class="ug-btn ug-btn-primary">ADD</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</clr-modal>
|
||||||
|
|
||||||
|
<clr-modal [(clrModalOpen)]="modalEdit" [clrModalSize]="'md'" [clrModalStaticBackdrop]="true">
|
||||||
|
<h3 class="modal-title">Update Basicp3</h3>
|
||||||
|
<div class="modal-body" *ngIf="rowSelected.id">
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label class="ug-form-label">Toggle Switch</label>
|
||||||
|
<div class="clr-toggle-wrapper">
|
||||||
|
<input type="checkbox" id="toggle_switch" name="toggle_switch" clrToggle [(ngModel)]="rowSelected.toggle_switch">
|
||||||
|
<label for="toggle_switch">Toggle Switch</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label class="ug-form-label">Toggle Switch2</label>
|
||||||
|
<div class="clr-toggle-wrapper">
|
||||||
|
<input type="checkbox" id="toggle_switch2" name="toggle_switch2" clrToggle [(ngModel)]="rowSelected.toggle_switch2">
|
||||||
|
<label for="toggle_switch2">Toggle Switch2</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="url_field" class="ug-form-label">Url Field</label>
|
||||||
|
<input type="url" id="url_field" class="ug-form-input" name="url_field" [(ngModel)]="rowSelected.url_field" placeholder="Enter URL">
|
||||||
|
<div *ngIf="!isValidurl_field(rowSelected.url_field)" class="ug-form-error">* Please enter a valid URL.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="url_field2" class="ug-form-label">Url Field2</label>
|
||||||
|
<input type="url" id="url_field2" class="ug-form-input" name="url_field2" [(ngModel)]="rowSelected.url_field2" placeholder="Enter URL">
|
||||||
|
<div *ngIf="!isValidurl_field2(rowSelected.url_field2)" class="ug-form-error">* Please enter a valid URL.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="decimal_field" class="ug-form-label">Decimal Field</label>
|
||||||
|
<input type="number" id="decimal_field" class="ug-form-input" name="decimal_field" [(ngModel)]="rowSelected.decimal_field" placeholder="Enter decimal value" step="0.01">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="decimal_field2" class="ug-form-label">Decimal Field2</label>
|
||||||
|
<input type="number" id="decimal_field2" class="ug-form-input" name="decimal_field2" [(ngModel)]="rowSelected.decimal_field2" placeholder="Enter decimal value" step="0.01">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Number Fields -->
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="percentage_field" class="ug-form-label">Percentage Field</label>
|
||||||
|
<input type="number" id="percentage_field" class="ug-form-input" [(ngModel)]="rowSelected.percentage_field"
|
||||||
|
name="percentage_field" placeholder="Enter Percentage Field">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Number Fields -->
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label for="percentage_field2" class="ug-form-label">Percentage Field2</label>
|
||||||
|
<input type="number" id="percentage_field2" class="ug-form-input" [(ngModel)]="rowSelected.percentage_field2"
|
||||||
|
name="percentage_field2" placeholder="Enter Percentage Field2">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label class="ug-form-label">recaptcha<span class="required-field">*</span></label>
|
||||||
|
<div class="recaptcha-container">
|
||||||
|
<div class="recaptcha-code">
|
||||||
|
<b>{{ recaptchaCode }}</b>
|
||||||
|
<button type="button" class="ug-btn ug-btn-sm ug-btn-secondary" (click)="generaterecaptcha()">
|
||||||
|
<clr-icon shape="refresh"></clr-icon>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<input type="text" class="ug-form-input" name="recaptcha" [(ngModel)]="rowSelected.recaptcha" (ngModelChange)="checkrecaptchaEdit()" placeholder="Enter the code above">
|
||||||
|
<div *ngIf="recaptchaMismatch" class="ug-form-error">recaptcha not valid.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-row">
|
||||||
|
<div class="form-col">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label class="ug-form-label">recaptcha2<span class="required-field">*</span></label>
|
||||||
|
<div class="recaptcha-container">
|
||||||
|
<div class="recaptcha-code">
|
||||||
|
<b>{{ recaptcha2Code }}</b>
|
||||||
|
<button type="button" class="ug-btn ug-btn-sm ug-btn-secondary" (click)="generaterecaptcha2()">
|
||||||
|
<clr-icon shape="refresh"></clr-icon>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<input type="text" class="ug-form-input" name="recaptcha2" [(ngModel)]="rowSelected.recaptcha2" (ngModelChange)="checkrecaptchaEdit()" placeholder="Enter the code above">
|
||||||
|
<div *ngIf="recaptcha2Mismatch" class="ug-form-error">recaptcha2 not valid.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="ug-btn ug-btn-outline" (click)="modalEdit = false">Cancel</button>
|
||||||
|
<button type="submit" (click)="onUpdate(rowSelected.id)" class="ug-btn ug-btn-primary">Update</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<clr-modal [(clrModalOpen)]="modaldelete" [clrModalSize]="'lg'" [clrModalStaticBackdrop]="true">
|
||||||
|
<div class="modal-body" *ngIf="rowSelected.id">
|
||||||
|
<div class="ug-delete-header">
|
||||||
|
<div class="ug-delete-icon">
|
||||||
|
<clr-icon shape="exclamation-triangle" size="48"></clr-icon>
|
||||||
|
</div>
|
||||||
|
<h1 class="ug-delete-title">Are You Sure Want to Delete?</h1>
|
||||||
|
<p class="ug-delete-subtitle">This action cannot be undone</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ug-delete-details"><div class="ug-delete-detail-item">
|
||||||
|
<span class="ug-delete-detail-label">Toggle Switch:</span>
|
||||||
|
<span class="ug-delete-detail-value">{{rowSelected.toggle_switch}}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ug-delete-detail-item">
|
||||||
|
<span class="ug-delete-detail-label">Toggle Switch2:</span>
|
||||||
|
<span class="ug-delete-detail-value">{{rowSelected.toggle_switch2}}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ug-delete-detail-item">
|
||||||
|
<span class="ug-delete-detail-label">Url Field:</span>
|
||||||
|
<span class="ug-delete-detail-value">{{rowSelected.url_field}}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ug-delete-detail-item">
|
||||||
|
<span class="ug-delete-detail-label">Url Field2:</span>
|
||||||
|
<span class="ug-delete-detail-value">{{rowSelected.url_field2}}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ug-delete-detail-item">
|
||||||
|
<span class="ug-delete-detail-label">Decimal Field:</span>
|
||||||
|
<span class="ug-delete-detail-value">{{rowSelected.decimal_field}}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ug-delete-detail-item">
|
||||||
|
<span class="ug-delete-detail-label">Decimal Field2:</span>
|
||||||
|
<span class="ug-delete-detail-value">{{rowSelected.decimal_field2}}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ug-delete-detail-item">
|
||||||
|
<span class="ug-delete-detail-label">Percentage Field:</span>
|
||||||
|
<span class="ug-delete-detail-value">{{rowSelected.percentage_field}}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ug-delete-detail-item">
|
||||||
|
<span class="ug-delete-detail-label">Percentage Field2:</span>
|
||||||
|
<span class="ug-delete-detail-value">{{rowSelected.percentage_field2}}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ug-delete-detail-item">
|
||||||
|
<span class="ug-delete-detail-label">documentsequenc:</span>
|
||||||
|
<span class="ug-delete-detail-value">{{rowSelected.documentsequenc}}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ug-delete-detail-item">
|
||||||
|
<span class="ug-delete-detail-label">recaptcha:</span>
|
||||||
|
<span class="ug-delete-detail-value">{{rowSelected.recaptcha}}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="ug-delete-detail-item">
|
||||||
|
<span class="ug-delete-detail-label">recaptcha2:</span>
|
||||||
|
<span class="ug-delete-detail-value">{{rowSelected.recaptcha2}}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="ug-btn ug-btn-outline" (click)="modaldelete = false">Cancel</button>
|
||||||
|
<button type="submit" (click)="delete(rowSelected.id)" class="ug-btn ug-btn-error">Delete</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</clr-modal>
|
||||||
|
|
||||||
|
<clr-modal [(clrModalOpen)]="modalCsv" [clrModalSize]="'sm'" [clrModalStaticBackdrop]="false">
|
||||||
|
<h3 class="modal-title">Import File</h3>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="ug-form-group">
|
||||||
|
<label class="ug-form-label">Select CSV File</label>
|
||||||
|
<input type="file" name="file" class="ug-file-input" (change)="selectFile($event)"
|
||||||
|
accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button class="ug-btn ug-btn-outline" type="button" (click)="modalCsv = false">Cancel</button>
|
||||||
|
<button class="ug-btn ug-btn-primary" type="button" [disabled]="!selectedFiles" (click)="saveCsv()">Import</button>
|
||||||
|
</div>
|
||||||
|
</clr-modal>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- htmlpopup -->
|
||||||
@ -0,0 +1,870 @@
|
|||||||
|
|
||||||
|
@import '../../../../../../styles.scss';
|
||||||
|
|
||||||
|
// Import design tokens
|
||||||
|
@import '../../../../../../styles/design-tokens';
|
||||||
|
// Newbasicp1 Styles
|
||||||
|
.ug-hero {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
padding: 24px 32px;
|
||||||
|
background: linear-gradient(135deg, var(--theme-primary) 0%, var(--theme-accent) 100%);
|
||||||
|
color: white;
|
||||||
|
border-radius: 16px;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
|
||||||
|
backdrop-filter: blur(16px);
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.2);
|
||||||
|
font-family: var(--theme-font-primary);
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__icon {
|
||||||
|
background: rgba(255, 255, 255, 0.2);
|
||||||
|
border-radius: 50%;
|
||||||
|
padding: 16px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
clr-icon {
|
||||||
|
width: 36px;
|
||||||
|
height: 36px;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__title {
|
||||||
|
font-size: 28px;
|
||||||
|
font-weight: 700;
|
||||||
|
margin: 0;
|
||||||
|
color: white;
|
||||||
|
font-family: var(--theme-font-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
&__subtitle {
|
||||||
|
font-size: 16px;
|
||||||
|
margin: 0;
|
||||||
|
opacity: 0.9;
|
||||||
|
color: rgba(255, 255, 255, 0.8);
|
||||||
|
}
|
||||||
|
|
||||||
|
&__actions {
|
||||||
|
display: flex;
|
||||||
|
gap: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-btn-text {
|
||||||
|
margin-left: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Modern Button Styles using ThemeService
|
||||||
|
.ug-btn {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
gap: 8px;
|
||||||
|
padding: 12px 20px;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
line-height: 1;
|
||||||
|
border-radius: 8px;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: all 200ms ease-out;
|
||||||
|
text-decoration: none;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
font-family: var(--theme-font-primary);
|
||||||
|
z-index: 1;
|
||||||
|
|
||||||
|
&:focus {
|
||||||
|
outline: 2px solid var(--theme-primary);
|
||||||
|
outline-offset: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:disabled {
|
||||||
|
opacity: 0.5;
|
||||||
|
cursor: not-allowed;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sizes
|
||||||
|
&.ug-btn-sm {
|
||||||
|
padding: 8px 16px;
|
||||||
|
font-size: 13px;
|
||||||
|
height: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.ug-btn-md {
|
||||||
|
padding: 12px 20px;
|
||||||
|
font-size: 14px;
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.ug-btn-lg {
|
||||||
|
padding: 16px 24px;
|
||||||
|
font-size: 16px;
|
||||||
|
height: 48px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Variants
|
||||||
|
&.ug-btn-primary {
|
||||||
|
background: linear-gradient(135deg, var(--theme-primary) 0%, var(--theme-accent) 100%);
|
||||||
|
color: white;
|
||||||
|
border-color: var(--theme-primary);
|
||||||
|
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: linear-gradient(135deg, var(--theme-primary, #0284c7) 0%, var(--theme-accent, #7c3aed) 100%);
|
||||||
|
transform: translateY(-2px);
|
||||||
|
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:active {
|
||||||
|
transform: translateY(0);
|
||||||
|
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.ug-btn-secondary {
|
||||||
|
background: var(--theme-surface);
|
||||||
|
color: var(--theme-text);
|
||||||
|
border-color: rgba(0, 0, 0, 0.1);
|
||||||
|
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: var(--theme-background);
|
||||||
|
border-color: rgba(0, 0, 0, 0.2);
|
||||||
|
transform: translateY(-1px);
|
||||||
|
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.ug-btn-outline {
|
||||||
|
background: transparent;
|
||||||
|
color: var(--theme-secondary);
|
||||||
|
border-color: var(--theme-secondary);
|
||||||
|
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: rgba(100, 116, 139, 0.1); // var(--theme-secondary) with 10% opacity
|
||||||
|
border-color: var(--theme-secondary);
|
||||||
|
color: var(--theme-secondary);
|
||||||
|
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.ug-btn-error {
|
||||||
|
background: var(--theme-error, #ef4444);
|
||||||
|
color: white;
|
||||||
|
border-color: var(--theme-error, #ef4444);
|
||||||
|
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: var(--theme-error-dark, #dc2626);
|
||||||
|
border-color: var(--theme-error-dark, #dc2626);
|
||||||
|
transform: translateY(-2px);
|
||||||
|
box-shadow: 0 10px 15px -3px rgba(239, 68, 68, 0.3), 0 4px 6px -2px rgba(239, 68, 68, 0.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.ug-btn-ghost {
|
||||||
|
background: transparent;
|
||||||
|
color: var(--theme-text-secondary);
|
||||||
|
border-color: transparent;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: var(--theme-background);
|
||||||
|
color: var(--theme-text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-toolbar {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
padding: 16px;
|
||||||
|
background: var(--theme-surface);
|
||||||
|
border-radius: 12px;
|
||||||
|
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
||||||
|
|
||||||
|
&__left {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__right {
|
||||||
|
display: flex;
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Form Container Styles
|
||||||
|
.form-container {
|
||||||
|
padding: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-row {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
margin: 0 -12px 16px -12px;
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
flex-direction: column;
|
||||||
|
margin: 0 0 16px 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-col {
|
||||||
|
flex: 1;
|
||||||
|
padding: 0 12px;
|
||||||
|
min-width: 250px;
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
padding: 0;
|
||||||
|
min-width: 100%;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Password Input Container
|
||||||
|
.password-input-container {
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.password-input {
|
||||||
|
padding-right: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.password-toggle {
|
||||||
|
position: absolute;
|
||||||
|
right: 12px;
|
||||||
|
top: 50%;
|
||||||
|
transform: translateY(-50%);
|
||||||
|
background: none;
|
||||||
|
border: none;
|
||||||
|
cursor: pointer;
|
||||||
|
color: var(--theme-text-secondary);
|
||||||
|
padding: 4px;
|
||||||
|
border-radius: 4px;
|
||||||
|
transition: all 200ms ease-out;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: var(--theme-text);
|
||||||
|
background: rgba(0, 0, 0, 0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
clr-icon {
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Textarea Styles
|
||||||
|
textarea.ug-form-input {
|
||||||
|
min-height: 100px;
|
||||||
|
resize: vertical;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-search {
|
||||||
|
position: relative;
|
||||||
|
max-width: 400px;
|
||||||
|
|
||||||
|
clr-icon {
|
||||||
|
position: absolute;
|
||||||
|
left: 12px;
|
||||||
|
top: 50%;
|
||||||
|
transform: translateY(-50%);
|
||||||
|
color: #9ca3af;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__input {
|
||||||
|
width: 100%;
|
||||||
|
padding: 12px 12px 12px 40px;
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.1);
|
||||||
|
border-radius: 8px;
|
||||||
|
font-size: 14px;
|
||||||
|
transition: all 200ms ease-out;
|
||||||
|
background: var(--theme-surface);
|
||||||
|
color: var(--theme-text);
|
||||||
|
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||||
|
|
||||||
|
&:focus {
|
||||||
|
outline: none;
|
||||||
|
border-color: var(--theme-primary);
|
||||||
|
box-shadow: 0 0 0 3px rgba(14, 165, 233, 0.1); // var(--theme-primary) with 10% opacity
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-view-toggle {
|
||||||
|
display: flex;
|
||||||
|
border: 1px solid #d1d5db;
|
||||||
|
border-radius: 8px;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
.ug-btn {
|
||||||
|
border-radius: 0;
|
||||||
|
border: none;
|
||||||
|
background: var(--theme-surface);
|
||||||
|
color: var(--theme-text-secondary);
|
||||||
|
|
||||||
|
&:first-child {
|
||||||
|
border-right: 1px solid #d1d5db;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.ug-btn-primary {
|
||||||
|
background: var(--theme-primary);
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Modern Table Styles
|
||||||
|
.ug-grid {
|
||||||
|
background: var(--theme-surface);
|
||||||
|
border-radius: 16px;
|
||||||
|
overflow: hidden;
|
||||||
|
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
|
||||||
|
margin-bottom: 24px;
|
||||||
|
|
||||||
|
::ng-deep .datagrid {
|
||||||
|
.datagrid-head {
|
||||||
|
background: var(--theme-background);
|
||||||
|
|
||||||
|
.datagrid-column {
|
||||||
|
padding: 16px 24px;
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: var(--theme-text-secondary);
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.05em;
|
||||||
|
border-bottom: 1px solid #e5e7eb;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.datagrid-row {
|
||||||
|
transition: background-color 150ms ease-out;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: var(--theme-background);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:not(:last-child) {
|
||||||
|
border-bottom: 1px solid #e5e7eb;
|
||||||
|
}
|
||||||
|
|
||||||
|
.datagrid-cell {
|
||||||
|
padding: 16px 24px;
|
||||||
|
font-size: 14px;
|
||||||
|
color: var(--theme-text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.datagrid-footer {
|
||||||
|
background: var(--theme-background);
|
||||||
|
border-top: 1px solid #e5e7eb;
|
||||||
|
padding: 16px 24px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-grid-footer {
|
||||||
|
background: var(--theme-background);
|
||||||
|
border-top: 1px solid #e5e7eb;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Modern Card Styles - More beautiful design
|
||||||
|
.ug-cards {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
|
||||||
|
gap: 24px;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-card-item {
|
||||||
|
background: var(--theme-surface);
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.06);
|
||||||
|
border-radius: var(--theme-border-radius); // Using theme variable
|
||||||
|
box-shadow: var(--theme-shadow); // Using theme variable
|
||||||
|
overflow: hidden;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
transform: translateY(-5px);
|
||||||
|
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
|
||||||
|
border-color: rgba(14, 165, 233, 0.3); // var(--theme-primary) with 30% opacity
|
||||||
|
}
|
||||||
|
|
||||||
|
&__header {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 10px;
|
||||||
|
padding: 16px;
|
||||||
|
background: linear-gradient(135deg, rgba(14, 165, 233, 0.1), transparent); // var(--theme-primary) with 10% opacity
|
||||||
|
min-height: 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__icon {
|
||||||
|
clr-icon {
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
color: var(--theme-primary);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__title {
|
||||||
|
font-weight: 700;
|
||||||
|
flex: 1 1 auto;
|
||||||
|
font-size: 18px;
|
||||||
|
color: var(--theme-text);
|
||||||
|
max-width: 60%;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__badge {
|
||||||
|
margin-left: auto;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
padding: 4px 12px;
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 600;
|
||||||
|
border-radius: 9999px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.05em;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__body {
|
||||||
|
padding: 16px;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||||
|
gap: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__footer {
|
||||||
|
padding: 16px;
|
||||||
|
display: flex;
|
||||||
|
gap: 8px;
|
||||||
|
border-top: 1px solid rgba(0, 0, 0, 0.06);
|
||||||
|
background: var(--theme-background);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-kv {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
font-size: 14px;
|
||||||
|
|
||||||
|
span {
|
||||||
|
color: var(--theme-text-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
strong {
|
||||||
|
color: var(--theme-text);
|
||||||
|
font-weight: 500;
|
||||||
|
text-align: right;
|
||||||
|
max-width: 60%;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Theme the card footer buttons
|
||||||
|
.ug-card-item__footer .ug-btn {
|
||||||
|
border-radius: 10px;
|
||||||
|
flex: 1;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-card-item__footer .ug-btn.ug-btn-outline {
|
||||||
|
border: 1px solid var(--theme-secondary);
|
||||||
|
color: var(--theme-secondary);
|
||||||
|
background: transparent;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: rgba(100, 116, 139, 0.1); // var(--theme-secondary) with 10% opacity
|
||||||
|
border-color: var(--theme-secondary);
|
||||||
|
color: var(--theme-secondary);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-card-item__footer .ug-btn.ug-btn-error {
|
||||||
|
background: var(--theme-error, #ef4444);
|
||||||
|
color: #fff;
|
||||||
|
border-color: var(--theme-error, #ef4444);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: var(--theme-error-dark, #dc2626);
|
||||||
|
border-color: var(--theme-error-dark, #dc2626);
|
||||||
|
transform: translateY(-2px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Table view action buttons
|
||||||
|
.ug-action-item {
|
||||||
|
@extend .ug-btn;
|
||||||
|
@extend .ug-btn-ghost;
|
||||||
|
@extend .ug-btn-sm;
|
||||||
|
width: 100%;
|
||||||
|
justify-content: flex-start;
|
||||||
|
margin-bottom: 4px;
|
||||||
|
text-align: left;
|
||||||
|
|
||||||
|
clr-icon {
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.ug-btn-error {
|
||||||
|
color: var(--theme-error, #ef4444);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: rgba(239, 68, 68, 0.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ensure action overflow is visible
|
||||||
|
::ng-deep .datagrid-action-overflow {
|
||||||
|
button.action-item {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
text-align: left;
|
||||||
|
padding: 8px 12px;
|
||||||
|
|
||||||
|
clr-icon {
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Status Badges
|
||||||
|
.ug-status-badge {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
padding: 6px 16px;
|
||||||
|
font-size: 13px;
|
||||||
|
font-weight: 600;
|
||||||
|
border-radius: 9999px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.05em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-status-enabled {
|
||||||
|
background: linear-gradient(135deg, rgba(16, 185, 129, 0.1) 0%, rgba(16, 185, 129, 0.05) 100%);
|
||||||
|
color: #10b981;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-status-disabled {
|
||||||
|
background: linear-gradient(135deg, rgba(239, 68, 68, 0.1) 0%, rgba(239, 68, 68, 0.05) 100%);
|
||||||
|
color: #ef4444;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Form Styles
|
||||||
|
.ug-form-group {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-form-label {
|
||||||
|
display: block;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--theme-text);
|
||||||
|
margin-bottom: 8px;
|
||||||
|
font-family: var(--theme-font-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-form-input, .ug-form-select {
|
||||||
|
width: 100%;
|
||||||
|
padding: 12px 16px;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 1.5;
|
||||||
|
color: var(--theme-text);
|
||||||
|
background: var(--theme-surface);
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.1);
|
||||||
|
border-radius: 8px;
|
||||||
|
transition: all 200ms ease-out;
|
||||||
|
margin-bottom: 0;
|
||||||
|
font-family: var(--theme-font-primary);
|
||||||
|
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||||
|
|
||||||
|
&:focus {
|
||||||
|
outline: none;
|
||||||
|
border-color: var(--theme-primary);
|
||||||
|
box-shadow: 0 0 0 3px rgba(14, 165, 233, 0.1); // var(--theme-primary) with 10% opacity
|
||||||
|
}
|
||||||
|
|
||||||
|
&:disabled {
|
||||||
|
background: var(--theme-background);
|
||||||
|
color: var(--theme-text-secondary);
|
||||||
|
cursor: not-allowed;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.error {
|
||||||
|
border-color: #ef4444;
|
||||||
|
box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
&::placeholder {
|
||||||
|
color: var(--theme-text-secondary);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-form-select {
|
||||||
|
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e");
|
||||||
|
background-position: right 12px center;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-size: 16px 12px;
|
||||||
|
padding-right: 40px;
|
||||||
|
appearance: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-form-error {
|
||||||
|
color: #ef4444;
|
||||||
|
font-size: 12px;
|
||||||
|
margin-top: 6px;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.required-field {
|
||||||
|
color: #ef4444;
|
||||||
|
margin-left: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-file-input {
|
||||||
|
width: 100%;
|
||||||
|
padding: 12px;
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.1);
|
||||||
|
border-radius: 8px;
|
||||||
|
background: var(--theme-surface);
|
||||||
|
color: var(--theme-text);
|
||||||
|
|
||||||
|
&::file-selector-button {
|
||||||
|
@extend .ug-btn;
|
||||||
|
@extend .ug-btn-secondary;
|
||||||
|
margin-right: 12px;
|
||||||
|
padding: 8px 16px;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete Modal Styles
|
||||||
|
.ug-delete-header {
|
||||||
|
text-align: center;
|
||||||
|
padding: 24px;
|
||||||
|
border-bottom: 1px solid rgba(0, 0, 0, 0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-delete-icon {
|
||||||
|
color: #ef4444;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-delete-title {
|
||||||
|
font-size: 24px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: var(--theme-text);
|
||||||
|
margin: 0 0 8px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-delete-subtitle {
|
||||||
|
font-size: 16px;
|
||||||
|
color: var(--theme-text-secondary);
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-delete-details {
|
||||||
|
padding: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-delete-detail-item {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 12px 0;
|
||||||
|
border-bottom: 1px solid rgba(0, 0, 0, 0.05);
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-delete-detail-label {
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--theme-text-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-delete-detail-value {
|
||||||
|
font-weight: 600;
|
||||||
|
color: var(--theme-text);
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete {
|
||||||
|
color: #ef4444;
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.heading {
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
color: var(--theme-text);
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Modal Header
|
||||||
|
::ng-deep .modal-header {
|
||||||
|
background: linear-gradient(135deg, var(--theme-primary) 0%, var(--theme-accent) 100%);
|
||||||
|
color: white;
|
||||||
|
border-radius: 16px 16px 0 0 !important;
|
||||||
|
padding: 20px 24px !important;
|
||||||
|
|
||||||
|
.modal-title {
|
||||||
|
color: white;
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 20px;
|
||||||
|
margin: 0;
|
||||||
|
font-family: var(--theme-font-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.close {
|
||||||
|
color: white;
|
||||||
|
opacity: 0.8;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Modal Body
|
||||||
|
::ng-deep .modal-body {
|
||||||
|
padding: 24px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Modal Footer
|
||||||
|
::ng-deep .modal-footer {
|
||||||
|
padding: 20px 24px !important;
|
||||||
|
background: var(--theme-background);
|
||||||
|
border-radius: 0 0 16px 16px !important;
|
||||||
|
border-top: 1px solid rgba(0, 0, 0, 0.05) !important;
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
gap: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Recaptcha Container Styles
|
||||||
|
.recaptcha-container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.recaptcha-code {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 12px;
|
||||||
|
padding: 12px;
|
||||||
|
background: var(--theme-background);
|
||||||
|
border-radius: 8px;
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.1);
|
||||||
|
|
||||||
|
b {
|
||||||
|
font-size: 18px;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
font-family: 'Courier New', monospace;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Toggle Styles
|
||||||
|
.clr-toggle-wrapper {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
|
||||||
|
label {
|
||||||
|
margin-bottom: 0;
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--theme-text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// URL Field Styles
|
||||||
|
.ug-form-input[type="url"] {
|
||||||
|
font-family: monospace;
|
||||||
|
}
|
||||||
|
// Responsive adjustments
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.ug-hero {
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 16px;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
flex-direction: column;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__actions {
|
||||||
|
width: 100%;
|
||||||
|
justify-content: center;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-toolbar {
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-search {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-cards {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ug-card-item {
|
||||||
|
&__header {
|
||||||
|
flex-direction: column;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
&__icon {
|
||||||
|
margin-right: 0;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__footer {
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.recaptcha-code {
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-start;
|
||||||
|
|
||||||
|
.ug-btn {
|
||||||
|
align-self: flex-end;
|
||||||
|
}
|
||||||
|
}}
|
||||||
@ -0,0 +1,612 @@
|
|||||||
|
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';
|
||||||
|
import { CsvService } from 'src/app/services/csv.service';
|
||||||
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
|
import { ThemeService } from 'src/app/services/theme.service';
|
||||||
|
import { Subscription } from 'rxjs';
|
||||||
|
import { ExcelService } from 'src/app/services/excel.service';
|
||||||
|
import * as moment from 'moment';
|
||||||
|
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[] = [];
|
||||||
|
filterText: string = '';
|
||||||
|
viewMode: 'table' | 'cards' = 'cards';
|
||||||
|
private themeSubscription: Subscription; constructor(
|
||||||
|
private extensionService: ExtensionService,
|
||||||
|
private userInfoService:UserInfoService,
|
||||||
|
private mainService:Basicp3service,
|
||||||
|
private alertService: AlertService,
|
||||||
|
private toastr: ToastrService,
|
||||||
|
private csvService: CsvService,
|
||||||
|
private translate: TranslateService,
|
||||||
|
private themeService: ThemeService,
|
||||||
|
private excel: ExcelService, private _fb: FormBuilder,
|
||||||
|
) { }
|
||||||
|
|
||||||
|
switchLanguage(language: string) {
|
||||||
|
this.translate.use(language);
|
||||||
|
}
|
||||||
|
private editInterval: any;
|
||||||
|
// component button
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.themeSubscription = this.themeService.currentTheme$.subscribe(() => {
|
||||||
|
// Theme changes will automatically update CSS variables
|
||||||
|
// This triggers a re-render of themed elements
|
||||||
|
});
|
||||||
|
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.themeSubscription) {
|
||||||
|
this.themeSubscription.unsubscribe();
|
||||||
|
}
|
||||||
|
if (this.editInterval) {
|
||||||
|
clearInterval(this.editInterval);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
get filteredGroups(): any[] {
|
||||||
|
const items: any[] = (this.product as unknown as any[]) || [];
|
||||||
|
const text = (this.filterText || '').toLowerCase();
|
||||||
|
if (!text) { return items; }
|
||||||
|
return items.filter(g => (
|
||||||
|
((g?.toggle_switch || '').toString()).toLowerCase().includes(text) ||
|
||||||
|
|
||||||
|
((g?.toggle_switch2 || '').toString()).toLowerCase().includes(text) ||
|
||||||
|
|
||||||
|
((g?.url_field || '').toString()).toLowerCase().includes(text) ||
|
||||||
|
|
||||||
|
((g?.url_field2 || '').toString()).toLowerCase().includes(text) ||
|
||||||
|
|
||||||
|
((g?.decimal_field || '').toString()).toLowerCase().includes(text) ||
|
||||||
|
|
||||||
|
((g?.decimal_field2 || '').toString()).toLowerCase().includes(text) ||
|
||||||
|
|
||||||
|
((g?.percentage_field || '').toString()).toLowerCase().includes(text) ||
|
||||||
|
|
||||||
|
((g?.percentage_field2 || '').toString()).toLowerCase().includes(text) ||
|
||||||
|
|
||||||
|
((g?.documentsequenc || '').toString()).toLowerCase().includes(text) ||
|
||||||
|
|
||||||
|
((g?.recaptcha || '').toString()).toLowerCase().includes(text) ||
|
||||||
|
|
||||||
|
((g?.recaptcha2 || '').toString()).toLowerCase().includes(text)
|
||||||
|
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
setViewMode(mode: 'table' | 'cards') { this.viewMode = mode; }
|
||||||
|
onExport() {
|
||||||
|
this.excel.exportAsExcelFile(this.product, 'user_',
|
||||||
|
moment().format('YYYYMMDD_HHmmss'))
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
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() {
|
||||||
|
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; } }
|
||||||
|
|
||||||
|
|
||||||
|
// csv
|
||||||
|
|
||||||
|
modalCsv = false;
|
||||||
|
selectedFiles: File;
|
||||||
|
fileList;
|
||||||
|
ttype = 'usergroupmaintenance';
|
||||||
|
|
||||||
|
|
||||||
|
// Import CSV
|
||||||
|
public selectFile(event) {
|
||||||
|
this.selectedFiles = event.target.files[0];
|
||||||
|
// this.saveCsv();
|
||||||
|
}
|
||||||
|
|
||||||
|
csvImport() {
|
||||||
|
console.log("import CSV");
|
||||||
|
this.modalCsv = true;
|
||||||
|
}
|
||||||
|
saveCsv() {
|
||||||
|
this.csvService.importCsv(this.selectedFiles, this.ttype).subscribe(data => {
|
||||||
|
console.log(data);
|
||||||
|
this.fileList = data;
|
||||||
|
this.modalCsv = false;
|
||||||
|
},
|
||||||
|
(error) => {
|
||||||
|
console.log(error);
|
||||||
|
if (error.status == 202) {
|
||||||
|
this.toastr.success(error.error.text)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
downloadFiles() {
|
||||||
|
this.csvService.downloadCsvs(this.ttype);
|
||||||
|
|
||||||
|
}
|
||||||
|
// updateaction
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -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<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 Basicp3cardvariable = {
|
||||||
|
"cardButton": false,
|
||||||
|
"cardmodeldata": ``
|
||||||
|
}
|
||||||
@ -1,3 +1,6 @@
|
|||||||
|
import { Basicp3Component } from './BuilderComponents/angulardatatype/Basicp3/Basicp3.component';
|
||||||
|
import { Basicp2Component } from './BuilderComponents/angulardatatype/Basicp2/Basicp2.component';
|
||||||
|
import { Basicp1Component } from './BuilderComponents/angulardatatype/Basicp1/Basicp1.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';
|
||||||
@ -261,6 +264,15 @@ const routes: Routes = [
|
|||||||
|
|
||||||
|
|
||||||
// buildercomponents
|
// buildercomponents
|
||||||
|
{path:'Basicp3',component:Basicp3Component},
|
||||||
|
|
||||||
|
|
||||||
|
{path:'Basicp2',component:Basicp2Component},
|
||||||
|
|
||||||
|
|
||||||
|
{path:'Basicp1',component:Basicp1Component},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{ path: 'tokenregistery', component: Token_registeryComponent },
|
{ path: 'tokenregistery', component: Token_registeryComponent },
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,6 @@
|
|||||||
|
import { Basicp3Component } from './BuilderComponents/angulardatatype/Basicp3/Basicp3.component';
|
||||||
|
import { Basicp2Component } from './BuilderComponents/angulardatatype/Basicp2/Basicp2.component';
|
||||||
|
import { Basicp1Component } from './BuilderComponents/angulardatatype/Basicp1/Basicp1.component';
|
||||||
|
|
||||||
|
|
||||||
import { CommonModule } from '@angular/common';
|
import { CommonModule } from '@angular/common';
|
||||||
@ -136,6 +139,15 @@ import { ThemeCustomizationComponent } from './theme-customization/theme-customi
|
|||||||
|
|
||||||
|
|
||||||
// buildercomponents
|
// buildercomponents
|
||||||
|
Basicp3Component,
|
||||||
|
|
||||||
|
|
||||||
|
Basicp2Component,
|
||||||
|
|
||||||
|
|
||||||
|
Basicp1Component,
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -69,6 +69,18 @@ public class BuilderService {
|
|||||||
executeDump(true);
|
executeDump(true);
|
||||||
|
|
||||||
// ADD OTHER SERVICE
|
// ADD OTHER SERVICE
|
||||||
|
SaveDashboard("tets", "tets", "{\"dashboard\":[{\"cols\":4,\"rows\":5,\"x\":0,\"y\":0,\"name\":\"Radar Chart\",\"component\":\"Radar Chart\"}]}");
|
||||||
|
|
||||||
|
|
||||||
|
addCustomMenu( "Basicp3","Basicp3", "Transcations");
|
||||||
|
|
||||||
|
|
||||||
|
addCustomMenu( "Basicp2","Basicp2", "Transcations");
|
||||||
|
|
||||||
|
|
||||||
|
addCustomMenu( "Basicp1","Basicp1", "Transcations");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
System.out.println("dashboard and menu inserted...");
|
System.out.println("dashboard and menu inserted...");
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,171 @@
|
|||||||
|
package com.realnet.angulardatatype.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.angulardatatype.Entity.Basicp1;
|
||||||
|
import com.realnet.angulardatatype.Services.Basicp1Service ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@RequestMapping(value = "/Basicp1")
|
||||||
|
@CrossOrigin("*")
|
||||||
|
@RestController
|
||||||
|
public class Basicp1Controller {
|
||||||
|
@Autowired
|
||||||
|
private Basicp1Service Service;
|
||||||
|
|
||||||
|
@Value("${projectPath}")
|
||||||
|
private String projectPath;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@PostMapping("/Basicp1")
|
||||||
|
public Basicp1 Savedata(@RequestBody Basicp1 data) {
|
||||||
|
Basicp1 save = Service.Savedata(data) ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
System.out.println("data saved..." + save);
|
||||||
|
|
||||||
|
return save;
|
||||||
|
}
|
||||||
|
@PutMapping("/Basicp1/{id}")
|
||||||
|
public Basicp1 update(@RequestBody Basicp1 data,@PathVariable Integer id ) {
|
||||||
|
Basicp1 update = Service.update(data,id);
|
||||||
|
System.out.println("data update..." + update);
|
||||||
|
return update;
|
||||||
|
}
|
||||||
|
// get all with pagination
|
||||||
|
@GetMapping("/Basicp1/getall/page")
|
||||||
|
public Page<Basicp1> getall(@RequestParam(value = "page", required = false) Integer page,
|
||||||
|
@RequestParam(value = "size", required = false) Integer size) {
|
||||||
|
Pageable paging = PageRequest.of(page, size);
|
||||||
|
Page<Basicp1> get = Service.getAllWithPagination(paging);
|
||||||
|
|
||||||
|
return get;
|
||||||
|
|
||||||
|
}
|
||||||
|
@GetMapping("/Basicp1")
|
||||||
|
public List<Basicp1> getdetails() {
|
||||||
|
List<Basicp1> get = Service.getdetails();
|
||||||
|
return get;
|
||||||
|
}
|
||||||
|
// get all without authentication
|
||||||
|
|
||||||
|
@GetMapping("/token/Basicp1")
|
||||||
|
public List<Basicp1> getallwioutsec() {
|
||||||
|
List<Basicp1> get = Service.getdetails();
|
||||||
|
return get;
|
||||||
|
}
|
||||||
|
@GetMapping("/Basicp1/{id}")
|
||||||
|
public Basicp1 getdetailsbyId(@PathVariable Integer id ) {
|
||||||
|
Basicp1 get = Service.getdetailsbyId(id);
|
||||||
|
return get;
|
||||||
|
}
|
||||||
|
@DeleteMapping("/Basicp1/{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,147 @@
|
|||||||
|
package com.realnet.angulardatatype.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.angulardatatype.Entity.Basicp2;
|
||||||
|
import com.realnet.angulardatatype.Services.Basicp2Service ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@RequestMapping(value = "/Basicp2")
|
||||||
|
@CrossOrigin("*")
|
||||||
|
@RestController
|
||||||
|
public class Basicp2Controller {
|
||||||
|
@Autowired
|
||||||
|
private Basicp2Service Service;
|
||||||
|
|
||||||
|
@Value("${projectPath}")
|
||||||
|
private String projectPath;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@PostMapping("/Basicp2")
|
||||||
|
public Basicp2 Savedata(@RequestBody Basicp2 data) {
|
||||||
|
Basicp2 save = Service.Savedata(data) ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
System.out.println("data saved..." + save);
|
||||||
|
|
||||||
|
return save;
|
||||||
|
}
|
||||||
|
@PutMapping("/Basicp2/{id}")
|
||||||
|
public Basicp2 update(@RequestBody Basicp2 data,@PathVariable Integer id ) {
|
||||||
|
Basicp2 update = Service.update(data,id);
|
||||||
|
System.out.println("data update..." + update);
|
||||||
|
return update;
|
||||||
|
}
|
||||||
|
// get all with pagination
|
||||||
|
@GetMapping("/Basicp2/getall/page")
|
||||||
|
public Page<Basicp2> getall(@RequestParam(value = "page", required = false) Integer page,
|
||||||
|
@RequestParam(value = "size", required = false) Integer size) {
|
||||||
|
Pageable paging = PageRequest.of(page, size);
|
||||||
|
Page<Basicp2> get = Service.getAllWithPagination(paging);
|
||||||
|
|
||||||
|
return get;
|
||||||
|
|
||||||
|
}
|
||||||
|
@GetMapping("/Basicp2")
|
||||||
|
public List<Basicp2> getdetails() {
|
||||||
|
List<Basicp2> get = Service.getdetails();
|
||||||
|
return get;
|
||||||
|
}
|
||||||
|
// get all without authentication
|
||||||
|
|
||||||
|
@GetMapping("/token/Basicp2")
|
||||||
|
public List<Basicp2> getallwioutsec() {
|
||||||
|
List<Basicp2> get = Service.getdetails();
|
||||||
|
return get;
|
||||||
|
}
|
||||||
|
@GetMapping("/Basicp2/{id}")
|
||||||
|
public Basicp2 getdetailsbyId(@PathVariable Integer id ) {
|
||||||
|
Basicp2 get = Service.getdetailsbyId(id);
|
||||||
|
return get;
|
||||||
|
}
|
||||||
|
@DeleteMapping("/Basicp2/{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,163 @@
|
|||||||
|
package com.realnet.angulardatatype.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.angulardatatype.Entity.Basicp3;
|
||||||
|
import com.realnet.angulardatatype.Services.Basicp3Service ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@RequestMapping(value = "/Basicp3")
|
||||||
|
@CrossOrigin("*")
|
||||||
|
@RestController
|
||||||
|
public class Basicp3Controller {
|
||||||
|
@Autowired
|
||||||
|
private Basicp3Service Service;
|
||||||
|
|
||||||
|
@Value("${projectPath}")
|
||||||
|
private String projectPath;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@PostMapping("/Basicp3")
|
||||||
|
public Basicp3 Savedata(@RequestBody Basicp3 data) {
|
||||||
|
Basicp3 save = Service.Savedata(data) ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
System.out.println("data saved..." + save);
|
||||||
|
|
||||||
|
return save;
|
||||||
|
}
|
||||||
|
@PutMapping("/Basicp3/{id}")
|
||||||
|
public Basicp3 update(@RequestBody Basicp3 data,@PathVariable Integer id ) {
|
||||||
|
Basicp3 update = Service.update(data,id);
|
||||||
|
System.out.println("data update..." + update);
|
||||||
|
return update;
|
||||||
|
}
|
||||||
|
// get all with pagination
|
||||||
|
@GetMapping("/Basicp3/getall/page")
|
||||||
|
public Page<Basicp3> getall(@RequestParam(value = "page", required = false) Integer page,
|
||||||
|
@RequestParam(value = "size", required = false) Integer size) {
|
||||||
|
Pageable paging = PageRequest.of(page, size);
|
||||||
|
Page<Basicp3> get = Service.getAllWithPagination(paging);
|
||||||
|
|
||||||
|
return get;
|
||||||
|
|
||||||
|
}
|
||||||
|
@GetMapping("/Basicp3")
|
||||||
|
public List<Basicp3> getdetails() {
|
||||||
|
List<Basicp3> get = Service.getdetails();
|
||||||
|
return get;
|
||||||
|
}
|
||||||
|
// get all without authentication
|
||||||
|
|
||||||
|
@GetMapping("/token/Basicp3")
|
||||||
|
public List<Basicp3> getallwioutsec() {
|
||||||
|
List<Basicp3> get = Service.getdetails();
|
||||||
|
return get;
|
||||||
|
}
|
||||||
|
@GetMapping("/Basicp3/{id}")
|
||||||
|
public Basicp3 getdetailsbyId(@PathVariable Integer id ) {
|
||||||
|
Basicp3 get = Service.getdetailsbyId(id);
|
||||||
|
return get;
|
||||||
|
}
|
||||||
|
@DeleteMapping("/Basicp3/{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,171 @@
|
|||||||
|
package com.realnet.angulardatatype.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.angulardatatype.Entity.Basicp1;
|
||||||
|
import com.realnet.angulardatatype.Services.Basicp1Service ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@RequestMapping(value = "/token/Basicp1")
|
||||||
|
@CrossOrigin("*")
|
||||||
|
@RestController
|
||||||
|
public class tokenFree_Basicp1Controller {
|
||||||
|
@Autowired
|
||||||
|
private Basicp1Service Service;
|
||||||
|
|
||||||
|
@Value("${projectPath}")
|
||||||
|
private String projectPath;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@PostMapping("/Basicp1")
|
||||||
|
public Basicp1 Savedata(@RequestBody Basicp1 data) {
|
||||||
|
Basicp1 save = Service.Savedata(data) ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
System.out.println("data saved..." + save);
|
||||||
|
|
||||||
|
return save;
|
||||||
|
}
|
||||||
|
@PutMapping("/Basicp1/{id}")
|
||||||
|
public Basicp1 update(@RequestBody Basicp1 data,@PathVariable Integer id ) {
|
||||||
|
Basicp1 update = Service.update(data,id);
|
||||||
|
System.out.println("data update..." + update);
|
||||||
|
return update;
|
||||||
|
}
|
||||||
|
// get all with pagination
|
||||||
|
@GetMapping("/Basicp1/getall/page")
|
||||||
|
public Page<Basicp1> getall(@RequestParam(value = "page", required = false) Integer page,
|
||||||
|
@RequestParam(value = "size", required = false) Integer size) {
|
||||||
|
Pageable paging = PageRequest.of(page, size);
|
||||||
|
Page<Basicp1> get = Service.getAllWithPagination(paging);
|
||||||
|
|
||||||
|
return get;
|
||||||
|
|
||||||
|
}
|
||||||
|
@GetMapping("/Basicp1")
|
||||||
|
public List<Basicp1> getdetails() {
|
||||||
|
List<Basicp1> get = Service.getdetails();
|
||||||
|
return get;
|
||||||
|
}
|
||||||
|
// get all without authentication
|
||||||
|
|
||||||
|
@GetMapping("/token/Basicp1")
|
||||||
|
public List<Basicp1> getallwioutsec() {
|
||||||
|
List<Basicp1> get = Service.getdetails();
|
||||||
|
return get;
|
||||||
|
}
|
||||||
|
@GetMapping("/Basicp1/{id}")
|
||||||
|
public Basicp1 getdetailsbyId(@PathVariable Integer id ) {
|
||||||
|
Basicp1 get = Service.getdetailsbyId(id);
|
||||||
|
return get;
|
||||||
|
}
|
||||||
|
@DeleteMapping("/Basicp1/{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,147 @@
|
|||||||
|
package com.realnet.angulardatatype.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.angulardatatype.Entity.Basicp2;
|
||||||
|
import com.realnet.angulardatatype.Services.Basicp2Service ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@RequestMapping(value = "/token/Basicp2")
|
||||||
|
@CrossOrigin("*")
|
||||||
|
@RestController
|
||||||
|
public class tokenFree_Basicp2Controller {
|
||||||
|
@Autowired
|
||||||
|
private Basicp2Service Service;
|
||||||
|
|
||||||
|
@Value("${projectPath}")
|
||||||
|
private String projectPath;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@PostMapping("/Basicp2")
|
||||||
|
public Basicp2 Savedata(@RequestBody Basicp2 data) {
|
||||||
|
Basicp2 save = Service.Savedata(data) ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
System.out.println("data saved..." + save);
|
||||||
|
|
||||||
|
return save;
|
||||||
|
}
|
||||||
|
@PutMapping("/Basicp2/{id}")
|
||||||
|
public Basicp2 update(@RequestBody Basicp2 data,@PathVariable Integer id ) {
|
||||||
|
Basicp2 update = Service.update(data,id);
|
||||||
|
System.out.println("data update..." + update);
|
||||||
|
return update;
|
||||||
|
}
|
||||||
|
// get all with pagination
|
||||||
|
@GetMapping("/Basicp2/getall/page")
|
||||||
|
public Page<Basicp2> getall(@RequestParam(value = "page", required = false) Integer page,
|
||||||
|
@RequestParam(value = "size", required = false) Integer size) {
|
||||||
|
Pageable paging = PageRequest.of(page, size);
|
||||||
|
Page<Basicp2> get = Service.getAllWithPagination(paging);
|
||||||
|
|
||||||
|
return get;
|
||||||
|
|
||||||
|
}
|
||||||
|
@GetMapping("/Basicp2")
|
||||||
|
public List<Basicp2> getdetails() {
|
||||||
|
List<Basicp2> get = Service.getdetails();
|
||||||
|
return get;
|
||||||
|
}
|
||||||
|
// get all without authentication
|
||||||
|
|
||||||
|
@GetMapping("/token/Basicp2")
|
||||||
|
public List<Basicp2> getallwioutsec() {
|
||||||
|
List<Basicp2> get = Service.getdetails();
|
||||||
|
return get;
|
||||||
|
}
|
||||||
|
@GetMapping("/Basicp2/{id}")
|
||||||
|
public Basicp2 getdetailsbyId(@PathVariable Integer id ) {
|
||||||
|
Basicp2 get = Service.getdetailsbyId(id);
|
||||||
|
return get;
|
||||||
|
}
|
||||||
|
@DeleteMapping("/Basicp2/{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,163 @@
|
|||||||
|
package com.realnet.angulardatatype.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.angulardatatype.Entity.Basicp3;
|
||||||
|
import com.realnet.angulardatatype.Services.Basicp3Service ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@RequestMapping(value = "/token/Basicp3")
|
||||||
|
@CrossOrigin("*")
|
||||||
|
@RestController
|
||||||
|
public class tokenFree_Basicp3Controller {
|
||||||
|
@Autowired
|
||||||
|
private Basicp3Service Service;
|
||||||
|
|
||||||
|
@Value("${projectPath}")
|
||||||
|
private String projectPath;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@PostMapping("/Basicp3")
|
||||||
|
public Basicp3 Savedata(@RequestBody Basicp3 data) {
|
||||||
|
Basicp3 save = Service.Savedata(data) ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
System.out.println("data saved..." + save);
|
||||||
|
|
||||||
|
return save;
|
||||||
|
}
|
||||||
|
@PutMapping("/Basicp3/{id}")
|
||||||
|
public Basicp3 update(@RequestBody Basicp3 data,@PathVariable Integer id ) {
|
||||||
|
Basicp3 update = Service.update(data,id);
|
||||||
|
System.out.println("data update..." + update);
|
||||||
|
return update;
|
||||||
|
}
|
||||||
|
// get all with pagination
|
||||||
|
@GetMapping("/Basicp3/getall/page")
|
||||||
|
public Page<Basicp3> getall(@RequestParam(value = "page", required = false) Integer page,
|
||||||
|
@RequestParam(value = "size", required = false) Integer size) {
|
||||||
|
Pageable paging = PageRequest.of(page, size);
|
||||||
|
Page<Basicp3> get = Service.getAllWithPagination(paging);
|
||||||
|
|
||||||
|
return get;
|
||||||
|
|
||||||
|
}
|
||||||
|
@GetMapping("/Basicp3")
|
||||||
|
public List<Basicp3> getdetails() {
|
||||||
|
List<Basicp3> get = Service.getdetails();
|
||||||
|
return get;
|
||||||
|
}
|
||||||
|
// get all without authentication
|
||||||
|
|
||||||
|
@GetMapping("/token/Basicp3")
|
||||||
|
public List<Basicp3> getallwioutsec() {
|
||||||
|
List<Basicp3> get = Service.getdetails();
|
||||||
|
return get;
|
||||||
|
}
|
||||||
|
@GetMapping("/Basicp3/{id}")
|
||||||
|
public Basicp3 getdetailsbyId(@PathVariable Integer id ) {
|
||||||
|
Basicp3 get = Service.getdetailsbyId(id);
|
||||||
|
return get;
|
||||||
|
}
|
||||||
|
@DeleteMapping("/Basicp3/{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,77 @@
|
|||||||
|
package com.realnet.angulardatatype.Entity;
|
||||||
|
import lombok.*;
|
||||||
|
import com.realnet.WhoColumn.Entity.Extension;
|
||||||
|
import javax.persistence.*;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
@Data
|
||||||
|
public class Basicp1 extends Extension {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
private Integer id;
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
private String name2;
|
||||||
|
|
||||||
|
private int number1;
|
||||||
|
|
||||||
|
private int number2;
|
||||||
|
|
||||||
|
private String phone_number;
|
||||||
|
|
||||||
|
private String phone_number2;
|
||||||
|
|
||||||
|
|
||||||
|
@Column(length = 2000)
|
||||||
|
private String paragraph_field;
|
||||||
|
|
||||||
|
|
||||||
|
@Column(length = 2000)
|
||||||
|
private String paragraph_field2;
|
||||||
|
|
||||||
|
private String password_field;
|
||||||
|
@Transient
|
||||||
|
private String confirmpassword_field;
|
||||||
|
|
||||||
|
@Column(length = 2000)
|
||||||
|
private String textarea;
|
||||||
|
|
||||||
|
@Column(length = 2000)
|
||||||
|
private String textarea_field;
|
||||||
|
|
||||||
|
@Column(length = 2000)
|
||||||
|
private String textarea_field2;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,59 @@
|
|||||||
|
package com.realnet.angulardatatype.Entity;
|
||||||
|
import lombok.*;
|
||||||
|
import com.realnet.WhoColumn.Entity.Extension;
|
||||||
|
import javax.persistence.*;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
@Data
|
||||||
|
public class Basicp2 extends Extension {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
private Integer id;
|
||||||
|
|
||||||
|
@Column(length = 2000)
|
||||||
|
private String about;
|
||||||
|
|
||||||
|
@Column(length = 2000)
|
||||||
|
private String textarea2;
|
||||||
|
|
||||||
|
private String date_field;
|
||||||
|
|
||||||
|
private String date_field2;
|
||||||
|
|
||||||
|
private String datetime_field;
|
||||||
|
|
||||||
|
private String datetime_field2;
|
||||||
|
|
||||||
|
private String email_field;
|
||||||
|
|
||||||
|
private String email_field2;
|
||||||
|
|
||||||
|
private Long user_id;
|
||||||
|
private String user_name;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,64 @@
|
|||||||
|
package com.realnet.angulardatatype.Entity;
|
||||||
|
import lombok.*;
|
||||||
|
import com.realnet.WhoColumn.Entity.Extension;
|
||||||
|
import javax.persistence.*;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
@Data
|
||||||
|
public class Basicp3 extends Extension {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
private Integer id;
|
||||||
|
|
||||||
|
private Boolean toggle_switch;
|
||||||
|
|
||||||
|
private Boolean toggle_switch2;
|
||||||
|
|
||||||
|
private String url_field;
|
||||||
|
|
||||||
|
private String url_field2;
|
||||||
|
|
||||||
|
private double decimal_field;
|
||||||
|
|
||||||
|
private double decimal_field2;
|
||||||
|
|
||||||
|
private int percentage_field;
|
||||||
|
|
||||||
|
private int percentage_field2;
|
||||||
|
|
||||||
|
private String documentsequenc;
|
||||||
|
|
||||||
|
private String recaptcha;
|
||||||
|
|
||||||
|
private String recaptcha2;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,48 @@
|
|||||||
|
package com.realnet.angulardatatype.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.angulardatatype.Entity.Basicp1;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public interface Basicp1Repository extends JpaRepository<Basicp1, Integer> {
|
||||||
|
|
||||||
|
@Query(value = "select * from basicp1 where created_by=?1", nativeQuery = true)
|
||||||
|
List<Basicp1> findAll(Long creayedBy);
|
||||||
|
|
||||||
|
@Query(value = "select * from basicp1 where created_by=?1", nativeQuery = true)
|
||||||
|
Page<Basicp1> findAll( Long creayedBy,Pageable page);
|
||||||
|
}
|
||||||
@ -0,0 +1,42 @@
|
|||||||
|
package com.realnet.angulardatatype.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.angulardatatype.Entity.Basicp2;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public interface Basicp2Repository extends JpaRepository<Basicp2, Integer> {
|
||||||
|
|
||||||
|
@Query(value = "select * from basicp2 where created_by=?1", nativeQuery = true)
|
||||||
|
List<Basicp2> findAll(Long creayedBy);
|
||||||
|
|
||||||
|
@Query(value = "select * from basicp2 where created_by=?1", nativeQuery = true)
|
||||||
|
Page<Basicp2> findAll( Long creayedBy,Pageable page);
|
||||||
|
}
|
||||||
@ -0,0 +1,46 @@
|
|||||||
|
package com.realnet.angulardatatype.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.angulardatatype.Entity.Basicp3;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public interface Basicp3Repository extends JpaRepository<Basicp3, Integer> {
|
||||||
|
|
||||||
|
@Query(value = "select * from basicp3 where created_by=?1", nativeQuery = true)
|
||||||
|
List<Basicp3> findAll(Long creayedBy);
|
||||||
|
|
||||||
|
@Query(value = "select * from basicp3 where created_by=?1", nativeQuery = true)
|
||||||
|
Page<Basicp3> findAll( Long creayedBy,Pageable page);
|
||||||
|
}
|
||||||
@ -0,0 +1,183 @@
|
|||||||
|
package com.realnet.angulardatatype.Services;
|
||||||
|
import com.realnet.angulardatatype.Repository.Basicp1Repository;
|
||||||
|
import com.realnet.angulardatatype.Entity.Basicp1
|
||||||
|
;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 Basicp1Service {
|
||||||
|
@Autowired
|
||||||
|
private Basicp1Repository Repository;
|
||||||
|
@Autowired
|
||||||
|
private AppUserServiceImpl userService;
|
||||||
|
@Autowired
|
||||||
|
private RealmService realmService;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public Basicp1 Savedata(Basicp1 data) {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
data.setUpdatedBy(getUser().getUserId());
|
||||||
|
data.setCreatedBy(getUser().getUserId());
|
||||||
|
data.setAccountId(getUser().getAccount().getAccount_id());
|
||||||
|
Basicp1 save = Repository.save(data);
|
||||||
|
return save;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// get all with pagination
|
||||||
|
public Page<Basicp1> getAllWithPagination(Pageable page) {
|
||||||
|
return Repository.findAll( getUser().getUserId(),page);
|
||||||
|
}
|
||||||
|
public List<Basicp1> getdetails() {
|
||||||
|
List<Realm> realm = realmService.findByUserId(getUser().getUserId());
|
||||||
|
List<Basicp1> all = Repository.findAll(getUser().getUserId());
|
||||||
|
|
||||||
|
return all ; }
|
||||||
|
|
||||||
|
|
||||||
|
public Basicp1 getdetailsbyId(Integer id) {
|
||||||
|
return Repository.findById(id).get();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void delete_by_id(Integer id) {
|
||||||
|
Repository.deleteById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Basicp1 update(Basicp1 data,Integer id) {
|
||||||
|
Basicp1 old = Repository.findById(id).get();
|
||||||
|
old.setName(data.getName());
|
||||||
|
|
||||||
|
old.setName2(data.getName2());
|
||||||
|
|
||||||
|
old.setNumber1(data.getNumber1());
|
||||||
|
|
||||||
|
old.setNumber2(data.getNumber2());
|
||||||
|
|
||||||
|
old.setPhone_number(data.getPhone_number());
|
||||||
|
|
||||||
|
old.setPhone_number2(data.getPhone_number2());
|
||||||
|
|
||||||
|
old.setParagraph_field(data.getParagraph_field());
|
||||||
|
|
||||||
|
old.setParagraph_field2(data.getParagraph_field2());
|
||||||
|
|
||||||
|
old.setPassword_field(data.getPassword_field());
|
||||||
|
|
||||||
|
old.setTextarea(data.getTextarea());
|
||||||
|
|
||||||
|
old.setTextarea_field(data.getTextarea_field());
|
||||||
|
|
||||||
|
old.setTextarea_field2(data.getTextarea_field2());
|
||||||
|
|
||||||
|
final Basicp1 test = Repository.save(old);
|
||||||
|
data.setUpdatedBy(getUser().getUserId());
|
||||||
|
return test;}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public AppUser getUser() {
|
||||||
|
AppUser user = userService.getLoggedInUser();
|
||||||
|
return user;
|
||||||
|
|
||||||
|
}}
|
||||||
@ -0,0 +1,154 @@
|
|||||||
|
package com.realnet.angulardatatype.Services;
|
||||||
|
import com.realnet.angulardatatype.Repository.Basicp2Repository;
|
||||||
|
import com.realnet.angulardatatype.Entity.Basicp2
|
||||||
|
;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 Basicp2Service {
|
||||||
|
@Autowired
|
||||||
|
private Basicp2Repository Repository;
|
||||||
|
@Autowired
|
||||||
|
private AppUserServiceImpl userService;
|
||||||
|
@Autowired
|
||||||
|
private RealmService realmService;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public Basicp2 Savedata(Basicp2 data) {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
data.setUser_id(getUser().getUserId());
|
||||||
|
data.setUser_name(getUser().getFullName());
|
||||||
|
|
||||||
|
data.setUpdatedBy(getUser().getUserId());
|
||||||
|
data.setCreatedBy(getUser().getUserId());
|
||||||
|
data.setAccountId(getUser().getAccount().getAccount_id());
|
||||||
|
Basicp2 save = Repository.save(data);
|
||||||
|
return save;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// get all with pagination
|
||||||
|
public Page<Basicp2> getAllWithPagination(Pageable page) {
|
||||||
|
return Repository.findAll( getUser().getUserId(),page);
|
||||||
|
}
|
||||||
|
public List<Basicp2> getdetails() {
|
||||||
|
List<Realm> realm = realmService.findByUserId(getUser().getUserId());
|
||||||
|
List<Basicp2> all = Repository.findAll(getUser().getUserId());
|
||||||
|
|
||||||
|
return all ; }
|
||||||
|
|
||||||
|
|
||||||
|
public Basicp2 getdetailsbyId(Integer id) {
|
||||||
|
return Repository.findById(id).get();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void delete_by_id(Integer id) {
|
||||||
|
Repository.deleteById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Basicp2 update(Basicp2 data,Integer id) {
|
||||||
|
Basicp2 old = Repository.findById(id).get();
|
||||||
|
old.setAbout(data.getAbout());
|
||||||
|
|
||||||
|
old.setTextarea2(data.getTextarea2());
|
||||||
|
|
||||||
|
old.setDate_field(data.getDate_field());
|
||||||
|
|
||||||
|
old.setDate_field2(data.getDate_field2());
|
||||||
|
|
||||||
|
old.setDatetime_field(data.getDatetime_field());
|
||||||
|
|
||||||
|
old.setDatetime_field2(data.getDatetime_field2());
|
||||||
|
|
||||||
|
old.setEmail_field(data.getEmail_field());
|
||||||
|
|
||||||
|
old.setEmail_field2(data.getEmail_field2());
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
final Basicp2 test = Repository.save(old);
|
||||||
|
data.setUpdatedBy(getUser().getUserId());
|
||||||
|
return test;}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public AppUser getUser() {
|
||||||
|
AppUser user = userService.getLoggedInUser();
|
||||||
|
return user;
|
||||||
|
|
||||||
|
}}
|
||||||
@ -0,0 +1,174 @@
|
|||||||
|
package com.realnet.angulardatatype.Services;
|
||||||
|
import com.realnet.angulardatatype.Repository.Basicp3Repository;
|
||||||
|
import com.realnet.angulardatatype.Entity.Basicp3
|
||||||
|
;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 Basicp3Service {
|
||||||
|
@Autowired
|
||||||
|
private Basicp3Repository Repository;
|
||||||
|
@Autowired
|
||||||
|
private AppUserServiceImpl userService;
|
||||||
|
@Autowired
|
||||||
|
private RealmService realmService;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private SequenceService documentsequencsequenceService;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public Basicp3 Savedata(Basicp3 data) {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
data.setDocumentsequenc (documentsequencsequenceService.GenerateSequence("ff"));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
data.setUpdatedBy(getUser().getUserId());
|
||||||
|
data.setCreatedBy(getUser().getUserId());
|
||||||
|
data.setAccountId(getUser().getAccount().getAccount_id());
|
||||||
|
Basicp3 save = Repository.save(data);
|
||||||
|
return save;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// get all with pagination
|
||||||
|
public Page<Basicp3> getAllWithPagination(Pageable page) {
|
||||||
|
return Repository.findAll( getUser().getUserId(),page);
|
||||||
|
}
|
||||||
|
public List<Basicp3> getdetails() {
|
||||||
|
List<Realm> realm = realmService.findByUserId(getUser().getUserId());
|
||||||
|
List<Basicp3> all = Repository.findAll(getUser().getUserId());
|
||||||
|
|
||||||
|
return all ; }
|
||||||
|
|
||||||
|
|
||||||
|
public Basicp3 getdetailsbyId(Integer id) {
|
||||||
|
return Repository.findById(id).get();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void delete_by_id(Integer id) {
|
||||||
|
Repository.deleteById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Basicp3 update(Basicp3 data,Integer id) {
|
||||||
|
Basicp3 old = Repository.findById(id).get();
|
||||||
|
old.setToggle_switch (data.getToggle_switch());
|
||||||
|
|
||||||
|
old.setToggle_switch2 (data.getToggle_switch2());
|
||||||
|
|
||||||
|
old.setUrl_field(data.getUrl_field());
|
||||||
|
|
||||||
|
old.setUrl_field2(data.getUrl_field2());
|
||||||
|
|
||||||
|
old.setDecimal_field(data.getDecimal_field());
|
||||||
|
|
||||||
|
old.setDecimal_field2(data.getDecimal_field2());
|
||||||
|
|
||||||
|
old.setPercentage_field(data.getPercentage_field());
|
||||||
|
|
||||||
|
old.setPercentage_field2(data.getPercentage_field2());
|
||||||
|
|
||||||
|
old.setDocumentsequenc(data.getDocumentsequenc());
|
||||||
|
|
||||||
|
old.setRecaptcha(data.getRecaptcha());
|
||||||
|
|
||||||
|
old.setRecaptcha2(data.getRecaptcha2());
|
||||||
|
|
||||||
|
final Basicp3 test = Repository.save(old);
|
||||||
|
data.setUpdatedBy(getUser().getUserId());
|
||||||
|
return test;}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public AppUser getUser() {
|
||||||
|
AppUser user = userService.getLoggedInUser();
|
||||||
|
return user;
|
||||||
|
|
||||||
|
}}
|
||||||
Loading…
x
Reference in New Issue
Block a user