site builder

This commit is contained in:
string 2025-04-11 09:12:51 +05:30
parent 06622acac7
commit 8cc5739cfd
17 changed files with 1270 additions and 1192 deletions

View File

@ -8,14 +8,21 @@
</div> </div>
<div class="clr-col-4" style="text-align: right;"> <div class="clr-col-4" style="text-align: right;">
<button *ngIf="cardButton" id="add" class="btn btn-primary btn-icon" (click)="changeView()"> <button *ngIf="cardButton" id="add" class="btn btn-primary btn-icon" (click)="changeView()">
<clr-icon *ngIf="!isCardview" shape="grid-view"></clr-icon> <clr-icon *ngIf="isCardview" shape="bars"></clr-icon> <clr-icon *ngIf="!isCardview" shape="grid-view"></clr-icon> <clr-icon *ngIf="isCardview"
shape="bars"></clr-icon>
</button> </button>
<!-- button --> <!-- button -->
<button id="add" class="btn btn-primary" (click)="goToAdd(product)"> <button id="add" class="btn btn-primary" (click)="goToAdd(product)">
<clr-icon shape="plus"></clr-icon>ADD <clr-icon shape="plus"></clr-icon>ADD
</button> </button>
</div></div>
<ng-container *ngIf="!isCardview"> <!-- GET ALL --> <clr-datagrid [clrDgLoading]="loading" [(clrDgSelected)]="selected"> <button id="add" class="btn btn-primary" (click)="gotositebuilder()">
<clr-icon shape="plus"></clr-icon>SiteBuilder
</button>
</div>
</div>
<ng-container *ngIf="!isCardview"> <!-- GET ALL --> <clr-datagrid [clrDgLoading]="loading"
[(clrDgSelected)]="selected">
<clr-dg-placeholder> <clr-dg-placeholder>
<ng-template #loadingSpinner> <ng-template #loadingSpinner>
<clr-spinner>Loading ... </clr-spinner> <clr-spinner>Loading ... </clr-spinner>
@ -35,35 +42,43 @@
</ng-container></clr-dg-column> </ng-container></clr-dg-column>
<clr-dg-column [clrDgField]="' visa_entry_type'"> <ng-container *clrDgHideableColumn="{hidden: false}"> Visa Entry Type <clr-dg-column [clrDgField]="' visa_entry_type'"> <ng-container *clrDgHideableColumn="{hidden: false}"> Visa Entry
Type
</ng-container></clr-dg-column> </ng-container></clr-dg-column>
<clr-dg-column [clrDgField]="' visa_duration'"> <ng-container *clrDgHideableColumn="{hidden: false}"> Visa Duration <clr-dg-column [clrDgField]="' visa_duration'"> <ng-container *clrDgHideableColumn="{hidden: false}"> Visa
Duration
</ng-container></clr-dg-column> </ng-container></clr-dg-column>
<clr-dg-column [clrDgField]="' visa_processing'"> <ng-container *clrDgHideableColumn="{hidden: false}"> Visa Processing <clr-dg-column [clrDgField]="' visa_processing'"> <ng-container *clrDgHideableColumn="{hidden: false}"> Visa
Processing
</ng-container></clr-dg-column> </ng-container></clr-dg-column>
<clr-dg-column [clrDgField]="' travel_start_date'"> <ng-container *clrDgHideableColumn="{hidden: false}"> Travel start date <clr-dg-column [clrDgField]="' travel_start_date'"> <ng-container *clrDgHideableColumn="{hidden: false}"> Travel
start date
</ng-container></clr-dg-column> </ng-container></clr-dg-column>
<clr-dg-column [clrDgField]="' travel_end_date'"> <ng-container *clrDgHideableColumn="{hidden: false}"> Travel end date <clr-dg-column [clrDgField]="' travel_end_date'"> <ng-container *clrDgHideableColumn="{hidden: false}"> Travel end
date
</ng-container></clr-dg-column> </ng-container></clr-dg-column>
<clr-dg-column [clrDgField]="' passport_number'"> <ng-container *clrDgHideableColumn="{hidden: false}"> passport Number <clr-dg-column [clrDgField]="' passport_number'"> <ng-container *clrDgHideableColumn="{hidden: false}"> passport
Number
</ng-container></clr-dg-column> </ng-container></clr-dg-column>
<clr-dg-column [clrDgField]="' passport_issue_date'"> <ng-container *clrDgHideableColumn="{hidden: false}"> Passport issue date <clr-dg-column [clrDgField]="' passport_issue_date'"> <ng-container *clrDgHideableColumn="{hidden: false}">
Passport issue date
</ng-container></clr-dg-column> </ng-container></clr-dg-column>
<clr-dg-column [clrDgField]="' passport_expiry_date'"> <ng-container *clrDgHideableColumn="{hidden: false}"> Passport expiry date <clr-dg-column [clrDgField]="' passport_expiry_date'"> <ng-container *clrDgHideableColumn="{hidden: false}">
Passport expiry date
</ng-container></clr-dg-column> </ng-container></clr-dg-column>
@ -79,7 +94,8 @@
</ng-container></clr-dg-column> </ng-container></clr-dg-column>
<clr-dg-column [clrDgField]="' date_of_birth'"> <ng-container *clrDgHideableColumn="{hidden: false}"> Date of Birth <clr-dg-column [clrDgField]="' date_of_birth'"> <ng-container *clrDgHideableColumn="{hidden: false}"> Date of
Birth
</ng-container></clr-dg-column> </ng-container></clr-dg-column>
@ -122,7 +138,8 @@
<clr-dg-cell>{{user. name }}</clr-dg-cell> <clr-dg-cell>{{user. name }}</clr-dg-cell>
<clr-dg-cell (click)="goToReplaceStringdescription (user.description)" style="cursor: pointer; align-items: center;"><clr-icon shape="details"></clr-icon> <clr-dg-cell (click)="goToReplaceStringdescription (user.description)"
style="cursor: pointer; align-items: center;"><clr-icon shape="details"></clr-icon>
</clr-dg-cell> </clr-dg-cell>
@ -189,7 +206,8 @@
<!-- who column --> <!-- who column -->
<clr-dg-cell> <clr-dg-cell>
<clr-signpost> <clr-signpost>
<span style="cursor: pointer;" clrSignpostTrigger><clr-icon shape="help" class="success" style="color: rgb(0, 130, 236);"></clr-icon></span> <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> <clr-signpost-content [clrPosition]="'left-middle'" *clrIfOpen>
<h5 style="margin-top: 0">Who Column</h5> <h5 style="margin-top: 0">Who Column</h5>
<div>Account ID: <code class="clr-code">{{user.accountId}}</code></div> <div>Account ID: <code class="clr-code">{{user.accountId}}</code></div>
@ -233,11 +251,13 @@
<div *ngFor="let app of product| filter:search; let index = i" class="clr-col-auto"> <div *ngFor="let app of product| filter:search; let index = i" class="clr-col-auto">
<div class="clr-row"> <div class="clr-row">
<div class="clr-col-lg-12 clr-col-md-4 clr-col-sm-4 clr-col-12" style="width: 410px;"> <div class="clr-col-lg-12 clr-col-md-4 clr-col-sm-4 clr-col-12" style="width: 410px;">
<div class="card" style="padding: 10px; "[style.background-color]="cardmodal.cardColor !== '' ? cardmodal.cardColor : 'white'"> <div class="card" style="padding: 10px; "
<div class="card-body" style="display: grid; grid-template-columns: repeat(13, 1fr); grid-template-rows: repeat(7, 1fr); gap: 5px;"> [style.background-color]="cardmodal.cardColor !== '' ? cardmodal.cardColor : 'white'">
<div class="card-body"
style="display: grid; grid-template-columns: repeat(13, 1fr); grid-template-rows: repeat(7, 1fr); gap: 5px;">
<ng-container *ngFor="let item of dashboardArray"> <ng-container *ngFor="let item of dashboardArray">
<div [style.gridColumn]="item.x + 1" [style.gridRow]="item.y + 1" [style.gridColumnEnd]="item.x + item.cols + 1" <div [style.gridColumn]="item.x + 1" [style.gridRow]="item.y + 1"
[style.gridRowEnd]="item.y + item.rows + 1"> [style.gridColumnEnd]="item.x + item.cols + 1" [style.gridRowEnd]="item.y + item.rows + 1">
<div *ngIf="item.name === 'textField'" class="title-card card-title" <div *ngIf="item.name === 'textField'" class="title-card card-title"
[style.text-align]="item.alignment !== '' ? item.alignment : 'left'" [style.text-align]="item.alignment !== '' ? item.alignment : 'left'"
[style.line-height]="item.textlineheight !== '' ? item.textlineheight : '1'" [style.line-height]="item.textlineheight !== '' ? item.textlineheight : '1'"
@ -247,7 +267,8 @@
[style.font-weight]="item.bold == true ? 'bold' : 'normal'" [style.text-decoration]="(item.underline && item.strikethough) ? 'underline line-through' : [style.font-weight]="item.bold == true ? 'bold' : 'normal'" [style.text-decoration]="(item.underline && item.strikethough) ? 'underline line-through' :
(item.underline ? 'underline' : (item.strikethough ? 'line-through' : 'none'))" (item.underline ? 'underline' : (item.strikethough ? 'line-through' : 'none'))"
[style.background-color]="item.backgroundcolor !== '' ? item.backgroundcolor : 'white'" [style.background-color]="item.backgroundcolor !== '' ? item.backgroundcolor : 'white'"
[style.color]="item.textcolor !== '' ? item.textcolor : 'black'" [style.background-color]="item.conditionValue == app[transform(item.fieldtext) ] ? item.conditionbackgroundcolor : item.backgroundcolor" [style.color]="item.textcolor !== '' ? item.textcolor : 'black'"
[style.background-color]="item.conditionValue == app[transform(item.fieldtext) ] ? item.conditionbackgroundcolor : item.backgroundcolor"
[style.color]="item.conditionValue == app[transform(item.fieldtext) ] ? item.conditiontextcolor : item.textcolor"> [style.color]="item.conditionValue == app[transform(item.fieldtext) ] ? item.conditiontextcolor : item.textcolor">
{{beforeText(item.fieldtext)}} {{beforeText(item.fieldtext)}}
{{ app[transform(item.fieldtext) ] }} {{ app[transform(item.fieldtext) ] }}
@ -263,7 +284,8 @@
[style.font-weight]="item.bold == true ? 'bold' : 'normal'" [style.text-decoration]="(item.underline && item.strikethough) ? 'underline line-through' : [style.font-weight]="item.bold == true ? 'bold' : 'normal'" [style.text-decoration]="(item.underline && item.strikethough) ? 'underline line-through' :
(item.underline ? 'underline' : (item.strikethough ? 'line-through' : 'none'))" (item.underline ? 'underline' : (item.strikethough ? 'line-through' : 'none'))"
[style.background-color]="item.backgroundcolor !== '' ? item.backgroundcolor : 'white'" [style.background-color]="item.backgroundcolor !== '' ? item.backgroundcolor : 'white'"
[style.color]="item.textcolor !== '' ? item.textcolor : 'black'" [style.background-color]="item.conditionValue == app[transform(item.fieldtext) ] ? item.conditionbackgroundcolor : item.backgroundcolor" [style.color]="item.textcolor !== '' ? item.textcolor : 'black'"
[style.background-color]="item.conditionValue == app[transform(item.fieldtext) ] ? item.conditionbackgroundcolor : item.backgroundcolor"
[style.color]="item.conditionValue == app[transform(item.fieldtext) ] ? item.conditiontextcolor : item.textcolor"> [style.color]="item.conditionValue == app[transform(item.fieldtext) ] ? item.conditiontextcolor : item.textcolor">
{{beforeText(item.fieldtext)}} {{beforeText(item.fieldtext)}}
{{ app[transform(item.fieldtext) ] | date}} {{ app[transform(item.fieldtext) ] | date}}
@ -278,7 +300,8 @@
[style.font-weight]="item.bold == true ? 'bold' : 'normal'" [style.text-decoration]="(item.underline && item.strikethough) ? 'underline line-through' : [style.font-weight]="item.bold == true ? 'bold' : 'normal'" [style.text-decoration]="(item.underline && item.strikethough) ? 'underline line-through' :
(item.underline ? 'underline' : (item.strikethough ? 'line-through' : 'none'))" (item.underline ? 'underline' : (item.strikethough ? 'line-through' : 'none'))"
[style.background-color]="item.backgroundcolor !== '' ? item.backgroundcolor : 'white'" [style.background-color]="item.backgroundcolor !== '' ? item.backgroundcolor : 'white'"
[style.color]="item.textcolor !== '' ? item.textcolor : 'black'" [style.background-color]="item.conditionValue == app[transform(item.fieldtext) ] ? item.conditionbackgroundcolor : item.backgroundcolor" [style.color]="item.textcolor !== '' ? item.textcolor : 'black'"
[style.background-color]="item.conditionValue == app[transform(item.fieldtext) ] ? item.conditionbackgroundcolor : item.backgroundcolor"
[style.color]="item.conditionValue == app[transform(item.fieldtext) ] ? item.conditiontextcolor : item.textcolor"> [style.color]="item.conditionValue == app[transform(item.fieldtext) ] ? item.conditiontextcolor : item.textcolor">
{{beforeText(item.fieldtext)}} {{beforeText(item.fieldtext)}}
{{ app[transform(item.fieldtext) ]}} {{ app[transform(item.fieldtext) ]}}
@ -308,8 +331,7 @@
[style.font-weight]="item.bold == true ? 'bold' : 'normal'" [style.text-decoration]="(item.underline && item.strikethough) ? 'underline line-through' : [style.font-weight]="item.bold == true ? 'bold' : 'normal'" [style.text-decoration]="(item.underline && item.strikethough) ? 'underline line-through' :
(item.underline ? 'underline' : (item.strikethough ? 'line-through' : 'none'))" (item.underline ? 'underline' : (item.strikethough ? 'line-through' : 'none'))"
[style.background-color]="item.backgroundcolor !== '' ? item.backgroundcolor : 'white'" [style.background-color]="item.backgroundcolor !== '' ? item.backgroundcolor : 'white'"
[style.color]="item.textcolor !== '' ? item.textcolor : 'black'" [style.color]="item.textcolor !== '' ? item.textcolor : 'black'">
>
<clr-icon [attr.shape]="item.iconName"></clr-icon> <clr-icon [attr.shape]="item.iconName"></clr-icon>
</div> </div>
@ -324,7 +346,8 @@
[style.background-color]="item.backgroundcolor !== '' ? item.backgroundcolor : 'white'" [style.background-color]="item.backgroundcolor !== '' ? item.backgroundcolor : 'white'"
[style.color]="item.textcolor !== '' ? item.textcolor : 'black'" [style.color]="item.textcolor !== '' ? item.textcolor : 'black'"
[style.background-color]="item.conditionValue == app[transform(item.fieldtext) ] ? item.conditionbackgroundcolor : item.backgroundcolor" [style.background-color]="item.conditionValue == app[transform(item.fieldtext) ] ? item.conditionbackgroundcolor : item.backgroundcolor"
[style.color]="item.conditionValue == app[transform(item.fieldtext) ] ? item.conditiontextcolor : item.textcolor"> <img id="filePreview" [src]="item.imageURL" alt="File Preview" [style.color]="item.conditionValue == app[transform(item.fieldtext) ] ? item.conditiontextcolor : item.textcolor">
<img id="filePreview" [src]="item.imageURL" alt="File Preview"
[style.width]="item.imagewidth !== '' ? item.imagewidth + 'px' : '100px'" [style.width]="item.imagewidth !== '' ? item.imagewidth + 'px' : '100px'"
[style.height]="item.imagewidth !== '' ? item.imagewidth + 'px' : '100px'"></div> [style.height]="item.imagewidth !== '' ? item.imagewidth + 'px' : '100px'"></div>
</div> </div>
@ -343,7 +366,8 @@
<clr-modal [(clrModalOpen)]="rsModaldescription" [clrModalSize]="'xl'" [clrModalStaticBackdrop]="true"> <clr-modal [(clrModalOpen)]="rsModaldescription" [clrModalSize]="'xl'" [clrModalStaticBackdrop]="true">
<div class="modal-body"> <div class="modal-body">
<textarea class="form-control" style="width:100%; height: 400px;" readonly>{{rowSelected}}</textarea> <textarea class="form-control" style="width:100%; height: 400px;" readonly>{{rowSelected}}</textarea>
</div></clr-modal> </div>
</clr-modal>
@ -444,12 +468,14 @@
<div class="clr-col-sm-12"> <div class="clr-col-sm-12">
<label> Description</label> <label> Description</label>
<textarea cols="10" rows="2"[(ngModel)]="rowSelected.description" name="description " placeholder="Textarea"> </textarea> <textarea cols="10" rows="2" [(ngModel)]="rowSelected.description" name="description "
placeholder="Textarea"> </textarea>
</div> </div>
<div class="clr-col-sm-12"> <div class="clr-col-sm-12">
<label> Active</label> <label> Active</label>
<input type="checkbox" name="active" clrToggle [(ngModel)]="rowSelected.active" /> </div> <input type="checkbox" name="active" clrToggle [(ngModel)]="rowSelected.active" />
</div>
@ -457,7 +483,9 @@
<label>Visa Entry Type</label> <label>Visa Entry Type</label>
<select name="visa_entry_type" [(ngModel)]="rowSelected.visa_entry_type"> <select name="visa_entry_type" [(ngModel)]="rowSelected.visa_entry_type">
<option [value]="null">Choose visa_entry_type</option> <option [value]="null">Choose visa_entry_type</option>
<option *ngFor=" let item of selectvisa_entry_type" [value]="item.id">{{item.name }}</option> </select> </div> <option *ngFor=" let item of selectvisa_entry_type" [value]="item.id">{{item.name }}</option>
</select>
</div>
@ -467,7 +495,9 @@
<label>Visa Duration</label> <label>Visa Duration</label>
<select name="visa_duration" [(ngModel)]="rowSelected.visa_duration"> <select name="visa_duration" [(ngModel)]="rowSelected.visa_duration">
<option [value]="null">Choose visa_duration</option> <option [value]="null">Choose visa_duration</option>
<option *ngFor=" let item of selectvisa_duration" [value]="item.id">{{item.name }}</option> </select> </div> <option *ngFor=" let item of selectvisa_duration" [value]="item.id">{{item.name }}</option>
</select>
</div>
@ -477,49 +507,59 @@
<label>Visa Processing</label> <label>Visa Processing</label>
<select name="visa_processing" [(ngModel)]="rowSelected.visa_processing"> <select name="visa_processing" [(ngModel)]="rowSelected.visa_processing">
<option [value]="null">Choose visa_processing</option> <option [value]="null">Choose visa_processing</option>
<option *ngFor=" let item of selectvisa_processing" [value]="item.id">{{item.name }}</option> </select> </div> <option *ngFor=" let item of selectvisa_processing" [value]="item.id">{{item.name }}</option>
</select>
</div>
<div class="clr-col-sm-12"> <div class="clr-col-sm-12">
<label>Travel start date</label> <label>Travel start date</label>
<input id="name" class="clr-input" type="date" [(ngModel)]="rowSelected.travel_start_date" name="travel_start_date" /> <input id="name" class="clr-input" type="date" [(ngModel)]="rowSelected.travel_start_date"
name="travel_start_date" />
</div> </div>
<div class="clr-col-sm-12"> <div class="clr-col-sm-12">
<label>Travel end date</label> <label>Travel end date</label>
<input id="name" class="clr-input" type="date" [(ngModel)]="rowSelected.travel_end_date" name="travel_end_date" /> <input id="name" class="clr-input" type="date" [(ngModel)]="rowSelected.travel_end_date"
name="travel_end_date" />
</div> </div>
<div class="clr-col-sm-12"> <div class="clr-col-sm-12">
<label>passport Number</label> <label>passport Number</label>
<input id="name" class="clr-input" type="number" [(ngModel)]="rowSelected.passport_number" name="passport_number" /> <input id="name" class="clr-input" type="number" [(ngModel)]="rowSelected.passport_number"
name="passport_number" />
</div> </div>
<div class="clr-col-sm-12"> <div class="clr-col-sm-12">
<label>Passport issue date</label> <label>Passport issue date</label>
<input id="name" class="clr-input" type="date" [(ngModel)]="rowSelected.passport_issue_date" name="passport_issue_date" /> <input id="name" class="clr-input" type="date" [(ngModel)]="rowSelected.passport_issue_date"
name="passport_issue_date" />
</div> </div>
<div class="clr-col-sm-12"> <div class="clr-col-sm-12">
<label>Passport expiry date</label> <label>Passport expiry date</label>
<input id="name" class="clr-input" type="date" [(ngModel)]="rowSelected.passport_expiry_date" name="passport_expiry_date" /> <input id="name" class="clr-input" type="date" [(ngModel)]="rowSelected.passport_expiry_date"
name="passport_expiry_date" />
</div> </div>
<div class="clr-col-sm-12"> <div class="clr-col-sm-12">
<label> Email</label> <label> Email</label>
<input id="name" class="clr-input" type="email" <input id="name" class="clr-input" type="email" [(ngModel)]="rowSelected.email " name="email"
[(ngModel)]="rowSelected.email " name="email" pattern="[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"> pattern="[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$">
<div *ngIf="rowSelected.email && !isValidemail(rowSelected.email )" class="error_mess"> <div *ngIf="rowSelected.email && !isValidemail(rowSelected.email )" class="error_mess">
* Email must be a valid email address. * Email must be a valid email address.
</div> </div> </div>
</div>
<div class="clr-col-sm-12"> <div class="clr-col-sm-12">
<label> Phone Number</label> <label> Phone Number</label>
<input id="name" class="clr-input" type="Text" [(ngModel)]="rowSelected.phone_number " name="phone_number" pattern="((\\+)?([1-9]{2}))?[1-9]{1}[0-9]{9}$" /> <input id="name" class="clr-input" type="Text" [(ngModel)]="rowSelected.phone_number " name="phone_number"
pattern="((\\+)?([1-9]{2}))?[1-9]{1}[0-9]{9}$" />
<div *ngIf="rowSelected.phone_number && !isValidPhone_number(rowSelected.phone_number)" class="error_mess"> <div *ngIf="rowSelected.phone_number && !isValidPhone_number(rowSelected.phone_number)" class="error_mess">
* Please Follow your pattern,+91 Enter 10 digit Mobile Number. * Please Follow your pattern,+91 Enter 10 digit Mobile Number.
</div> </div> </div>
</div>
<div class="clr-col-sm-12"> <div class="clr-col-sm-12">
<label>Birth Place</label> <label>Birth Place</label>
@ -537,7 +577,9 @@
<label>Gender</label> <label>Gender</label>
<select name="gender" [(ngModel)]="rowSelected.gender"> <select name="gender" [(ngModel)]="rowSelected.gender">
<option [value]="null">Choose gender</option> <option [value]="null">Choose gender</option>
<option *ngFor=" let item of selectgender" [value]="item.id">{{item.name }}</option> </select> </div> <option *ngFor=" let item of selectgender" [value]="item.id">{{item.name }}</option>
</select>
</div>
@ -549,7 +591,8 @@
<!-- currency field start --> <!-- currency field start -->
<div class="clr-col-sm-12"> <div class="clr-col-sm-12">
<label> Visa cost</label> <label> Visa cost</label>
<input type="number" class="clr-input" [(ngModel)]="rowSelected.visa_cost" name="visa_cost" (blur)="formatCurrencyvisa_cost()" [value]="rowSelected.visa_cost | removeCommas"> <input type="number" class="clr-input" [(ngModel)]="rowSelected.visa_cost" name="visa_cost"
(blur)="formatCurrencyvisa_cost()" [value]="rowSelected.visa_cost | removeCommas">
</div> </div>
<!-- currency field end --> <!-- currency field end -->
@ -559,7 +602,9 @@
<label>Referrer</label> <label>Referrer</label>
<select name="referrer" [(ngModel)]="rowSelected.referrer"> <select name="referrer" [(ngModel)]="rowSelected.referrer">
<option [value]="null">Choose referrer</option> <option [value]="null">Choose referrer</option>
<option *ngFor=" let item of selectreferrer" [value]="item.id">{{item.name }}</option> </select> </div> <option *ngFor=" let item of selectreferrer" [value]="item.id">{{item.name }}</option>
</select>
</div>
@ -569,7 +614,9 @@
<label>Nationality</label> <label>Nationality</label>
<select name="nationality" [(ngModel)]="rowSelected.nationality"> <select name="nationality" [(ngModel)]="rowSelected.nationality">
<option [value]="null">Choose nationality</option> <option [value]="null">Choose nationality</option>
<option *ngFor=" let item of selectnationality" [value]="item.id">{{item.name }}</option> </select> </div> <option *ngFor=" let item of selectnationality" [value]="item.id">{{item.name }}</option>
</select>
</div>
@ -579,7 +626,9 @@
<label>Supplier</label> <label>Supplier</label>
<select name="supplier" [(ngModel)]="rowSelected.supplier"> <select name="supplier" [(ngModel)]="rowSelected.supplier">
<option [value]="null">Choose supplier</option> <option [value]="null">Choose supplier</option>
<option *ngFor=" let item of selectsupplier" [value]="item.id">{{item.name }}</option> </select> </div> <option *ngFor=" let item of selectsupplier" [value]="item.id">{{item.name }}</option>
</select>
</div>
@ -589,52 +638,13 @@
<label>Agent</label> <label>Agent</label>
<select name="agent" [(ngModel)]="rowSelected.agent"> <select name="agent" [(ngModel)]="rowSelected.agent">
<option [value]="null">Choose agent</option> <option [value]="null">Choose agent</option>
<option *ngFor=" let item of selectagent" [value]="item.id">{{item.name }}</option> </select> </div> <option *ngFor=" let item of selectagent" [value]="item.id">{{item.name }}</option>
</select>
</div> </div>
</div>
@ -647,22 +657,27 @@
<div class="clr-col-4" *ngFor="let field of additionalFieldsFromBackend"> <div class="clr-col-4" *ngFor="let field of additionalFieldsFromBackend">
<ng-container *ngIf="field.formCode === formcode" [ngSwitch]="field.fieldType"> <ng-container *ngIf="field.formCode === formcode" [ngSwitch]="field.fieldType">
<!-- Text Input --> <label *ngSwitchCase="'text'">{{ field.fieldName }}</label> <!-- Text Input --> <label *ngSwitchCase="'text'">{{ field.fieldName }}</label>
<input *ngSwitchCase="'text'" [type]="field.fieldType" name="{{ field.extValue }}" [(ngModel)]="rowSelected[field.extValue]" class="clr-input" /> <input *ngSwitchCase="'text'" [type]="field.fieldType" name="{{ field.extValue }}"
[(ngModel)]="rowSelected[field.extValue]" class="clr-input" />
<!-- Date Input --> <label *ngSwitchCase="'date'">{{ field.fieldName }}</label> <!-- Date Input --> <label *ngSwitchCase="'date'">{{ field.fieldName }}</label>
<input *ngSwitchCase="'date'" [type]="field.fieldType" name="{{ field.extValue }}" [(ngModel)]="rowSelected[field.extValue]" class="clr-input" /> <input *ngSwitchCase="'date'" [type]="field.fieldType" name="{{ field.extValue }}"
[(ngModel)]="rowSelected[field.extValue]" class="clr-input" />
<!-- Textarea --> <label *ngSwitchCase="'textarea'">{{ field.fieldName }}</label> <!-- Textarea --> <label *ngSwitchCase="'textarea'">{{ field.fieldName }}</label>
<textarea *ngSwitchCase="'textarea'" name="{{ field.extValue }}" [(ngModel)]="rowSelected[field.extValue]" col="10" row="2"></textarea> <textarea *ngSwitchCase="'textarea'" name="{{ field.extValue }}" [(ngModel)]="rowSelected[field.extValue]"
col="10" row="2"></textarea>
<!-- Checkbox --> <label *ngSwitchCase="'checkbox'">{{ field.fieldName }}</label><br> <!-- Checkbox --> <label *ngSwitchCase="'checkbox'">{{ field.fieldName }}</label><br>
<input *ngSwitchCase="'checkbox'" [type]="field.fieldType" name="{{ field.extValue }}" [(ngModel)]="rowSelected[field.extValue]" class="clr-checkbox" /> <input *ngSwitchCase="'checkbox'" [type]="field.fieldType" name="{{ field.extValue }}"
[(ngModel)]="rowSelected[field.extValue]" class="clr-checkbox" />
</ng-container> </ng-container>
</div> </div>
</div> </div>
</div> </div>
<!-- form code end --> <div class="modal-footer"> <!-- form code end -->
<div class="modal-footer">
<button type="button" class="btn btn-outline" (click)="modalEdit = false">Cancel</button> <button type="button" class="btn btn-outline" (click)="modalEdit = false">Cancel</button>
<button type="submit" class="btn btn-primary" (click)="onUpdate(rowSelected.id)">Update</button> <button type="submit" class="btn btn-primary" (click)="onUpdate(rowSelected.id)">Update</button>
</div> </div>
@ -728,13 +743,15 @@
<!-- aeroplane icon --> <!-- aeroplane icon -->
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
<a *ngIf="userrole.includes('ROLE_ADMIN')" style="float: right;" href="javascript:void(0)" role="tooltip" aria-haspopup="true" <a *ngIf="userrole.includes('ROLE_ADMIN')" style="float: right;" href="javascript:void(0)" role="tooltip"
class="tooltip tooltip-sm tooltip-bottom-left"> aria-haspopup="true" class="tooltip tooltip-sm tooltip-bottom-left">
<a id="build_extension" [routerLink]="['../extension/all']" [queryParams]="{ formCode: 'Visa_application_formCode' }"> <a id="build_extension" [routerLink]="['../extension/all']"
[queryParams]="{ formCode: 'Visa_application_formCode' }">
<clr-icon shape="airplane" size="32"></clr-icon> <clr-icon shape="airplane" size="32"></clr-icon>
</a> </a>
<span class="tooltip-content">Form Extension</span> <span class="tooltip-content">Form Extension</span>
</a> </h3> </a>
</h3>
<div class="modal-body"> <div class="modal-body">
<form [formGroup]="entryForm"> <form [formGroup]="entryForm">
<div class="clr-row" style="height: fit-content;"> <div class="clr-row" style="height: fit-content;">
@ -751,7 +768,8 @@
<div class="clr-col-sm-12"> <div class="clr-col-sm-12">
<label> Active</label> <label> Active</label>
<input type="checkbox" formControlName="active" clrToggle/> </div> <input type="checkbox" formControlName="active" clrToggle />
</div>
@ -760,7 +778,8 @@
<select formControlName="visa_entry_type"> <select formControlName="visa_entry_type">
<option [value]="null">Choose Visa Entry Type</option> <option [value]="null">Choose Visa Entry Type</option>
<option *ngFor="let item of selectvisa_entry_type" [value]="item.id">{{item.name}}</option> <option *ngFor="let item of selectvisa_entry_type" [value]="item.id">{{item.name}}</option>
</select> </div> </select>
</div>
@ -771,7 +790,8 @@
<select formControlName="visa_duration"> <select formControlName="visa_duration">
<option [value]="null">Choose Visa Duration</option> <option [value]="null">Choose Visa Duration</option>
<option *ngFor="let item of selectvisa_duration" [value]="item.id">{{item.name}}</option> <option *ngFor="let item of selectvisa_duration" [value]="item.id">{{item.name}}</option>
</select> </div> </select>
</div>
@ -782,7 +802,8 @@
<select formControlName="visa_processing"> <select formControlName="visa_processing">
<option [value]="null">Choose Visa Processing</option> <option [value]="null">Choose Visa Processing</option>
<option *ngFor="let item of selectvisa_processing" [value]="item.id">{{item.name}}</option> <option *ngFor="let item of selectvisa_processing" [value]="item.id">{{item.name}}</option>
</select> </div> </select>
</div>
@ -800,7 +821,8 @@
<label> passport Number</label> <label> passport Number</label>
<input class="clr-input" type="number" formControlName="passport_number" /> <input class="clr-input" type="number" formControlName="passport_number" />
<div *ngIf="submitted && entryForm.controls.passport_number.errors" class="error_mess"> <div *ngIf="submitted && entryForm.controls.passport_number.errors" class="error_mess">
<div *ngIf="submitted && entryForm.controls.passport_number.errors.required" class="error_mess">*This field is Required</div> <div *ngIf="submitted && entryForm.controls.passport_number.errors.required" class="error_mess">*This field
is Required</div>
</div> </div>
</div> </div>
@ -816,18 +838,25 @@
<div class="clr-col-sm-12"> <div class="clr-col-sm-12">
<label> Email</label> <label> Email</label>
<input class="clr-input" type="email" formControlName="email" pattern="[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"> <input class="clr-input" type="email" formControlName="email"
pattern="[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$">
<div *ngIf="entryForm.controls['email'].errors" class="error_mess"> <div *ngIf="entryForm.controls['email'].errors" class="error_mess">
<div *ngIf="entryForm.controls['email'].hasError('pattern')" class="error_mess">* Email must be a valid email address <div *ngIf="entryForm.controls['email'].hasError('pattern')" class="error_mess">* Email must be a valid
</div> </div> email address
</div>
</div>
</div> </div>
<div class="clr-col-sm-12"> <div class="clr-col-sm-12">
<label> Phone Number</label> <label> Phone Number</label>
<input class="clr-input" type="text" formControlName="phone_number" pattern="((\+)?([1-9]{2}))?[1-9]{1}[0-9]{9}$" /> <input class="clr-input" type="text" formControlName="phone_number"
pattern="((\+)?([1-9]{2}))?[1-9]{1}[0-9]{9}$" />
<div *ngIf="submitted && entryForm.controls['phone_number'].errors" class="error_mess"> <div *ngIf="submitted && entryForm.controls['phone_number'].errors" class="error_mess">
<div *ngIf="submitted && entryForm.controls['phone_number'].hasError('pattern')" class="error_mess">* Please Follow your pattern,+91 Enter 10 digit Mobile Number. <div *ngIf="submitted && entryForm.controls['phone_number'].hasError('pattern')" class="error_mess">* Please
</div> </div> </div> Follow your pattern,+91 Enter 10 digit Mobile Number.
</div>
</div>
</div>
<div class="clr-col-sm-12"> <div class="clr-col-sm-12">
<label> Birth Place</label> <label> Birth Place</label>
@ -846,7 +875,8 @@
<select formControlName="gender"> <select formControlName="gender">
<option [value]="null">Choose Gender</option> <option [value]="null">Choose Gender</option>
<option *ngFor="let item of selectgender" [value]="item.id">{{item.name}}</option> <option *ngFor="let item of selectgender" [value]="item.id">{{item.name}}</option>
</select> </div> </select>
</div>
@ -858,7 +888,8 @@
<!-- currency field start --> <!-- currency field start -->
<div class="clr-col-sm-12"> <div class="clr-col-sm-12">
<label> Visa cost</label> <label> Visa cost</label>
<input type="number" class="clr-input" formControlName="visa_cost" [value]="entryForm.value.visa_cost | number:'1.2-2' | removeCommas"> <input type="number" class="clr-input" formControlName="visa_cost"
[value]="entryForm.value.visa_cost | number:'1.2-2' | removeCommas">
</div> </div>
<!-- currency field end --> <!-- currency field end -->
@ -869,7 +900,8 @@
<select formControlName="referrer"> <select formControlName="referrer">
<option [value]="null">Choose Referrer</option> <option [value]="null">Choose Referrer</option>
<option *ngFor="let item of selectreferrer" [value]="item.id">{{item.name}}</option> <option *ngFor="let item of selectreferrer" [value]="item.id">{{item.name}}</option>
</select> </div> </select>
</div>
@ -880,7 +912,8 @@
<select formControlName="nationality"> <select formControlName="nationality">
<option [value]="null">Choose Nationality</option> <option [value]="null">Choose Nationality</option>
<option *ngFor="let item of selectnationality" [value]="item.id">{{item.name}}</option> <option *ngFor="let item of selectnationality" [value]="item.id">{{item.name}}</option>
</select> </div> </select>
</div>
@ -891,7 +924,8 @@
<select formControlName="supplier"> <select formControlName="supplier">
<option [value]="null">Choose Supplier</option> <option [value]="null">Choose Supplier</option>
<option *ngFor="let item of selectsupplier" [value]="item.id">{{item.name}}</option> <option *ngFor="let item of selectsupplier" [value]="item.id">{{item.name}}</option>
</select> </div> </select>
</div>
@ -902,7 +936,8 @@
<select formControlName="agent"> <select formControlName="agent">
<option [value]="null">Choose Agent</option> <option [value]="null">Choose Agent</option>
<option *ngFor="let item of selectagent" [value]="item.id">{{item.name}}</option> <option *ngFor="let item of selectagent" [value]="item.id">{{item.name}}</option>
</select> </div> </select>
</div>
@ -977,7 +1012,8 @@
</div> </div>
</div> </div>
</div> </div>
<!-- form code end --> <div class="modal-footer"> <!-- form code end -->
<div class="modal-footer">
<button type="button" class="btn btn-outline" (click)="modalAdd = false">Cancel</button> <button type="button" class="btn btn-outline" (click)="modalAdd = false">Cancel</button>
<button type="submit" class="btn btn-primary" (click)="onSubmit()">ADD</button> <button type="submit" class="btn btn-primary" (click)="onSubmit()">ADD</button>
</div> </div>

View File

@ -7,6 +7,7 @@ import { ExtensionService } from 'src/app/services/fnd/extension.service';
import { DashboardContentModel2 } from 'src/app/models/builder/dashboard'; import { DashboardContentModel2 } from 'src/app/models/builder/dashboard';
import { Visa_applicationcardvariable } from './Visa_application_cardvariable'; import { Visa_applicationcardvariable } from './Visa_application_cardvariable';
import { UserInfoService } from 'src/app/services/user-info.service'; import { UserInfoService } from 'src/app/services/user-info.service';
import { Router } from '@angular/router';
declare var JsBarcode: any; declare var JsBarcode: any;
@Component({ @Component({
selector: 'app-Visa_application', selector: 'app-Visa_application',
@ -18,7 +19,9 @@ export class Visa_applicationComponent implements OnInit {
cardmodeldata = Visa_applicationcardvariable.cardmodeldata; cardmodeldata = Visa_applicationcardvariable.cardmodeldata;
public dashboardArray: DashboardContentModel2[]; public dashboardArray: DashboardContentModel2[];
isCardview = Visa_applicationcardvariable.cardButton; isCardview = Visa_applicationcardvariable.cardButton;
cardmodal; changeView() { cardmodal;
changeView() {
this.isCardview = !this.isCardview; this.isCardview = !this.isCardview;
} }
beforeText(fieldtext: string): string { // Extract the text before the first '<' beforeText(fieldtext: string): string { // Extract the text before the first '<'
@ -52,6 +55,8 @@ export class Visa_applicationComponent implements OnInit {
private alertService: AlertService, private alertService: AlertService,
private toastr: ToastrService, private toastr: ToastrService,
private _fb: FormBuilder, private _fb: FormBuilder,
private router: Router,
) { } ) { }
// component button // component button
ngOnInit(): void { ngOnInit(): void {
@ -214,49 +219,6 @@ export class Visa_applicationComponent implements OnInit {
this.rowSelected = row; this.rowSelected = row;
this.modalEdit = true; this.modalEdit = true;
} }
onDelete(row) { onDelete(row) {
@ -397,47 +359,6 @@ export class Visa_applicationComponent implements OnInit {
this.mainService.create(this.entryForm.value).subscribe( this.mainService.create(this.entryForm.value).subscribe(
(data) => { (data) => {
console.log(data); console.log(data);
@ -450,47 +371,6 @@ export class Visa_applicationComponent implements OnInit {
}, (error) => { }, (error) => {
console.log(error); console.log(error);
if (error.status >= 200 && error.status <= 299) { if (error.status >= 200 && error.status <= 299) {
@ -509,50 +389,6 @@ export class Visa_applicationComponent implements OnInit {
} }
goToAdd(row) { goToAdd(row) {
this.modalAdd = true; this.submitted = false; this.modalAdd = true; this.submitted = false;
} }
submitted = false; submitted = false;
onSubmit() { onSubmit() {
@ -662,6 +498,11 @@ export class Visa_applicationComponent implements OnInit {
} }
// updateaction // updateaction
gotositebuilder() {
this.router.navigate(["/cns-portal/SiteBuilder"]);
}
} }

View File

@ -0,0 +1,44 @@
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';
import baseUrl from 'src/app/services/api/helper';
@Injectable({
providedIn: 'root'
})
export class Referrerservice{
private baseURL = "Referrer/Referrer" ; 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);
}
downloadCSV(tableName: string): Observable<Blob> {
const url = `${baseUrl}/api/template/download-csv?tableName=${tableName}`;
return this.http.get(url, { responseType: 'blob' })
}// updateaction
}

View File

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

View File

@ -0,0 +1,30 @@
.node-card {
border: 1px solid #ccc;
padding: 12px;
background: white;
border-radius: 6px;
margin: 8px auto;
width: 300px;
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
}
.children-container {
display: flex;
flex-direction: column;
align-items: center;
position: relative;
margin-top: 20px;
}
.children {
display: flex;
justify-content: center;
gap: 40px;
}
.connector-line {
position: absolute;
top: -30px;
height: 100px;
width: 100%;
}

View File

@ -0,0 +1,16 @@
<div class="node-card">
<h3>{{ node.title }}</h3>
<div class="section" *ngFor="let sec of getSections(node.data)">
<h4>{{ sec.title }}</h4>
<p>{{ sec.description }}</p>
</div>
</div>
<div class="children-container" *ngIf="getChildren(node.data).length">
<svg class="connector-line">
<path d="M 100 0 C 150 50, 150 50, 200 100" stroke="gray" fill="transparent"/>
</svg>
<div class="children">
<app-tree-node *ngFor="let child of getChildren(node.data)" [node]="child"></app-tree-node>
</div>
</div>

View File

@ -0,0 +1,33 @@
import { Component, Input } from '@angular/core';
@Component({
selector: 'app-tree-node',
templateUrl: './tree-node.component.html',
styleUrls: ['./tree-node.component.css']
})
export class TreeNodeComponent {
@Input() node: any;
getSections(data: any): { title: string, description: string }[] {
const sections: { title: string, description: string }[] = [];
for (const key in data) {
if (key !== 'Children' && typeof data[key] === 'string') {
sections.push({ title: key, description: data[key] });
}
if (key !== 'Children' && Array.isArray(data[key])) {
sections.push({ title: key, description: data[key].join('\n') });
}
}
return sections;
}
getChildren(data: any): any[] {
if (data.Children) {
return Object.keys(data.Children).map((key) => ({
title: key,
data: data.Children[key]
}));
}
return [];
}
}

View File

@ -0,0 +1,30 @@
<!-- <div class="toolbar">
<textarea [(ngModel)]="rawJson" placeholder="Paste your JSON here..."></textarea>
<div class="actions">
<button (click)="convertToTree()">Convert</button>
<button (click)="exportJson()">Export JSON</button>
<input type="file" (change)="importJson($event)" />
</div>
</div>
<div class="tree-container" panZoom>
<ng-container *ngIf="treeData">
<app-tree-node [node]="treeData" [parent]="null"></app-tree-node>
</ng-container>
</div> -->
<!-- 🔽 New textarea for creating JSON -->
<div class="controls">
<textarea [(ngModel)]="rawInputText" placeholder="Write your structure here"></textarea>
<button (click)="generateJson()">Submit</button>
</div>
<div class="controls">
<textarea [(ngModel)]="inputJson" placeholder="Paste your JSON here"></textarea>
<button (click)="convertJson()">Convert</button>
</div>
<div class="tree-container" *ngIf="treeData">
<app-tree-node [node]="treeData"></app-tree-node>
</div>

View File

@ -0,0 +1,29 @@
.controls {
margin-bottom: 20px;
}
.controls textarea {
width: 100%;
height: 200px;
padding: 10px;
font-size: 14px;
font-family: monospace;
border: 1px solid #ccc;
border-radius: 4px;
resize: vertical;
box-sizing: border-box;
margin-bottom: 10px;
}
.controls button {
padding: 10px 20px;
background-color: #1976d2;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
}
.controls button:hover {
background-color: #1565c0;
}

View File

@ -0,0 +1,108 @@
import { Component } from '@angular/core';
import { treeVisualizerService } from './tree-visualizer.service';
@Component({
selector: 'app-tree-visualizer',
templateUrl: './tree-visualizer.component.html',
styleUrls: ['./tree-visualizer.component.scss']
})
export class TreeVisualizerComponent {
inputJson: string = '';
treeData: any = null;
rawInputText: string = `make a website , where we can login , sign up.
inside that there is a menu of icard where we can add a icard detail iacardname, description
after click this icard inside we upload excel of student data, icard template, after click convert it fetch all data of excel and replace the key value of icard template..`;
constructor(private treeService: treeVisualizerService) { }
convertJson() {
try {
const parsed = JSON.parse(this.inputJson);
const rootKey = Object.keys(parsed)[0];
this.treeData = {
title: rootKey,
data: parsed[rootKey]
};
} catch (e) {
alert('Invalid JSON');
}
}
getSections(data: any): { title: string, description: string }[] {
const sections: { title: string, description: string }[] = [];
for (const key in data) {
if (key !== 'Children' && typeof data[key] === 'string') {
sections.push({ title: key, description: data[key] });
}
if (key !== 'Children' && Array.isArray(data[key])) {
sections.push({ title: key, description: data[key].join('\n') });
}
}
return sections;
}
getChildren(data: any): any[] {
if (data.Children) {
return Object.keys(data.Children).map((key) => ({
title: key,
data: data.Children[key]
}));
}
return [];
}
generateJson() {
const suffix = `
🔁 You are a JSON structure generator for website page hierarchies.
You will return only a JSON object in a strictly hierarchical tree structure. Do not include any explanation, text, or markdown formatting like \`\`\`json — just return pure JSON only.
Each page should be a key. For subpages like "Login", "Projects", or "New Project", nest them under a "Children" key of their parent page.
Each page must include specific sections as keys (like "Navbar", "Header Section", "Feature Section" etc.) with either an empty object {} or a short description as the value.
Do not return any explanation, text, or markdown formatting only return the raw JSON object exactly in this format.
Do not include:
- Any explanation before or after the JSON
- Any markdown formatting like \`\`\` or json
- Any text like "Here is..." or "Please note..."
Output must look like this:
{
"Home": {
"Navbar": {},
"Header Section": "Intro...",
"Children": {
"Login": {
"Navbar": {},
"Header Section": "Login form...",
"Footer": {}
}
}
}
}`;
const payload = {
query: this.rawInputText + suffix,
conversationId: '677'
};
console.log(' query : ', payload.query)
this.treeService.generateJson(payload).subscribe({
next: (res) => {
console.log('response ', res)
if (res && res.responseContent) {
this.inputJson = res.responseContent;
console.log('input json ', this.inputJson)
this.convertJson(); // auto convert after API response
}
},
error: (err) => {
console.error('API Error:', err);
alert('Failed to fetch JSON from API');
}
});
}
}

View File

@ -0,0 +1,27 @@
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders, HttpParams, HttpResponse } from "@angular/common/http";
import { Observable } from "rxjs";
import { ApiRequestService } from 'src/app/services/api/api-request.service';
import { environment } from 'src/environments/environment';
@Injectable({
providedIn: 'root'
})
export class treeVisualizerService {
private baseURL = environment.nodeUrl;
constructor(private apiRequest: ApiRequestService, private http: HttpClient) { }
generateJson(data: any): Observable<any> {
return this.http.post(`${this.baseURL}/chatMemory`, data);
}
}

View File

@ -1,4 +1,3 @@
<div class="clr-row"> <div class="clr-row">
<ng-container *ngFor="let item of dashboardModel; let i = index"> <ng-container *ngFor="let item of dashboardModel; let i = index">
<ng-container *ngIf="item.name === 'Index'"> <ng-container *ngIf="item.name === 'Index'">
@ -13,124 +12,6 @@
</div> </div>
</ng-container> </ng-container>
<!-- <ng-container *ngIf="item.name === 'Bar Chart'" >
<div class="clr-col-4" style="padding: 10px 12px 5px 12px;">
<div class="chart-box" id="contentContainer" #contentContainer>
<h4 class="center"> <b>{{item?.charttitle}}</b> </h4>
<canvas baseChart
[datasets]="item?.featchData?.barChartData"
[labels]="item.showlabel ? item?.featchData?.barChartLabels: ChartNoLabels"
[legend]="item.chartlegend"
[type]="'bar'">
</canvas>
</div>
</div>
</ng-container>
<ng-container *ngIf="item.name === 'Line Chart'" >
<div class="clr-col-4" style="padding: 10px 12px 5px 12px;">
<div class="chart-box" id="contentContainer" #contentContainer>
<h4 class="center"> <b>{{item?.charttitle}}</b> </h4>
<canvas baseChart
[datasets]="item?.featchData?.chartData"
[labels]="item.showlabel ? item?.featchData?.chartLabels: ChartNoLabels"
[legend]="item.chartlegend"
[type]="'line'">
</canvas>
</div>
</div>
</ng-container>
<ng-container *ngIf="item.name === 'Doughnut Chart'" >
<div class="clr-col-4" style="padding: 10px 12px 5px 12px;">
<div class="chart-box" id="contentContainer" #contentContainer>
<h4 class="center"> <b>{{item?.charttitle}}</b> </h4>
<canvas baseChart
[datasets]="item?.featchData?.chartData"
[labels]="item.showlabel ? item?.featchData?.chartLabels: ChartNoLabels"
[legend]="item.chartlegend"
[type]="'doughnut'">
</canvas>
</div>
</div>
</ng-container>
<ng-container *ngIf="item.name === 'Bubble Chart'" >
<div class="clr-col-4" style="padding: 10px 12px 5px 12px;">
<div class="chart-box" id="contentContainer" #contentContainer>
<h4 class="center"> <b>{{item?.charttitle}}</b> </h4>
<canvas baseChart
[datasets]="item?.featchData?.bubbleChartData"
[legend]="item.chartlegend"
[type]="'bubble'">
</canvas>
</div>
</div>
</ng-container>
<ng-container *ngIf="item.name === 'Pie Chart'" >
<div class="clr-col-4" style="padding: 10px 12px 5px 12px;">
<div class="chart-box" id="contentContainer" #contentContainer>
<h4 class="center"> <b>{{item?.charttitle}}</b> </h4>
<canvas baseChart
[datasets]="item?.featchData?.pieChartData"
[labels]="item.showlabel ? item?.featchData?.pieChartLabels: ChartNoLabels"
[legend]="item.chartlegend"
[type]="'pie'">
</canvas>
</div>
</div>
</ng-container>
<ng-container *ngIf="item.name === 'PolarArea Chart'" >
<div class="clr-col-4" style="padding: 10px 12px 5px 12px;">
<div class="chart-box" id="contentContainer" #contentContainer>
<h4 class="center"> <b>{{item?.charttitle}}</b> </h4>
<canvas baseChart
[datasets]="item?.featchData?.polarAreaChartData"
[labels]="item.showlabel ? item?.featchData?.polarAreaChartLabels: ChartNoLabels"
[legend]="item.chartlegend"
[type]="'polarArea'">
</canvas>
</div>
</div>
</ng-container>
<ng-container *ngIf="item.name === 'Radar Chart'" >
<div class="clr-col-4" style="padding: 10px 12px 5px 12px;">
<div class="chart-box" id="contentContainer" #contentContainer>
<h4 class="center"> <b>{{item?.charttitle}}</b> </h4>
<canvas baseChart
[datasets]="item?.featchData?.radarChartData"
[labels]="item.showlabel ? item?.featchData?.radarChartLabels: ChartNoLabels"
[legend]="item.chartlegend"
[type]="'radar'">
</canvas>
</div>
</div>
</ng-container>
<ng-container *ngIf="item.name === 'Scatter Chart'" >
<div class="clr-col-4" style="padding: 10px 12px 5px 12px;">
<div class="chart-box" id="contentContainer" #contentContainer>
<h4 class="center"> <b>{{item?.charttitle}}</b> </h4>
<canvas baseChart
[datasets]="item?.featchData?.scatterChartData"
[labels]="item.showlabel ? item?.featchData?.scatterChartLabels: ChartNoLabels"
[legend]="item.chartlegend"
[type]="'scatter'">
</canvas>
</div>
</div>
</ng-container>
<ng-container *ngIf="item.name === 'Scatter Chart'" >
<div class="clr-col-4" style="padding: 10px 12px 5px 12px;">
<div class="chart-box" id="contentContainer" #contentContainer>
<h4 class="center"> <b>{{item?.charttitle}}</b> </h4>
<canvas baseChart
[datasets]="item?.featchData?.scatterChartData"
[labels]="item.showlabel ? item?.featchData?.scatterChartLabels: ChartNoLabels"
[legend]="item.chartlegend"
[type]="'scatter'">
</canvas>
</div>
</div>
</ng-container> -->
</ng-container> </ng-container>
<ng-container *ngFor="let item of dashboardChartData; let i = index"> <ng-container *ngFor="let item of dashboardChartData; let i = index">
@ -138,10 +19,8 @@
<div class="clr-col-4" style="padding: 10px 12px 5px 12px;"> <div class="clr-col-4" style="padding: 10px 12px 5px 12px;">
<div class="chart-box" id="contentContainer" #contentContainer> <div class="chart-box" id="contentContainer" #contentContainer>
<h4 class="center"> <b>{{item?.charttitle}}</b> </h4> <h4 class="center"> <b>{{item?.charttitle}}</b> </h4>
<canvas baseChart <canvas baseChart [datasets]="item?.featchData?.barChartData"
[datasets]="item?.featchData?.barChartData" [labels]="item.showlabel ? item?.featchData?.barChartLabels: ChartNoLabels" [legend]="item.chartlegend"
[labels]="item.showlabel ? item?.featchData?.barChartLabels: ChartNoLabels"
[legend]="item.chartlegend"
[type]="'bar'"> [type]="'bar'">
</canvas> </canvas>
</div> </div>
@ -151,10 +30,8 @@
<div class="clr-col-4" style="padding: 10px 12px 5px 12px;"> <div class="clr-col-4" style="padding: 10px 12px 5px 12px;">
<div class="chart-box" id="contentContainer" #contentContainer> <div class="chart-box" id="contentContainer" #contentContainer>
<h4 class="center"> <b>{{item?.charttitle}}</b> </h4> <h4 class="center"> <b>{{item?.charttitle}}</b> </h4>
<canvas baseChart <canvas baseChart [datasets]="item?.featchData?.chartData"
[datasets]="item?.featchData?.chartData" [labels]="item.showlabel ? item?.featchData?.chartLabels: ChartNoLabels" [legend]="item.chartlegend"
[labels]="item.showlabel ? item?.featchData?.chartLabels: ChartNoLabels"
[legend]="item.chartlegend"
[type]="'line'"> [type]="'line'">
</canvas> </canvas>
</div> </div>
@ -164,10 +41,8 @@
<div class="clr-col-4" style="padding: 10px 12px 5px 12px;"> <div class="clr-col-4" style="padding: 10px 12px 5px 12px;">
<div class="chart-box" id="contentContainer" #contentContainer> <div class="chart-box" id="contentContainer" #contentContainer>
<h4 class="center"> <b>{{item?.charttitle}}</b> </h4> <h4 class="center"> <b>{{item?.charttitle}}</b> </h4>
<canvas baseChart <canvas baseChart [datasets]="item?.featchData?.chartData"
[datasets]="item?.featchData?.chartData" [labels]="item.showlabel ? item?.featchData?.chartLabels: ChartNoLabels" [legend]="item.chartlegend"
[labels]="item.showlabel ? item?.featchData?.chartLabels: ChartNoLabels"
[legend]="item.chartlegend"
[type]="'doughnut'"> [type]="'doughnut'">
</canvas> </canvas>
</div> </div>
@ -177,9 +52,7 @@
<div class="clr-col-4" style="padding: 10px 12px 5px 12px;"> <div class="clr-col-4" style="padding: 10px 12px 5px 12px;">
<div class="chart-box" id="contentContainer" #contentContainer> <div class="chart-box" id="contentContainer" #contentContainer>
<h4 class="center"> <b>{{item?.charttitle}}</b> </h4> <h4 class="center"> <b>{{item?.charttitle}}</b> </h4>
<canvas baseChart <canvas baseChart [datasets]="item?.featchData?.bubbleChartData" [legend]="item.chartlegend"
[datasets]="item?.featchData?.bubbleChartData"
[legend]="item.chartlegend"
[type]="'bubble'"> [type]="'bubble'">
</canvas> </canvas>
</div> </div>
@ -189,10 +62,8 @@
<div class="clr-col-4" style="padding: 10px 12px 5px 12px;"> <div class="clr-col-4" style="padding: 10px 12px 5px 12px;">
<div class="chart-box" id="contentContainer" #contentContainer> <div class="chart-box" id="contentContainer" #contentContainer>
<h4 class="center"> <b>{{item?.charttitle}}</b> </h4> <h4 class="center"> <b>{{item?.charttitle}}</b> </h4>
<canvas baseChart <canvas baseChart [datasets]="item?.featchData?.pieChartData"
[datasets]="item?.featchData?.pieChartData" [labels]="item.showlabel ? item?.featchData?.pieChartLabels: ChartNoLabels" [legend]="item.chartlegend"
[labels]="item.showlabel ? item?.featchData?.pieChartLabels: ChartNoLabels"
[legend]="item.chartlegend"
[type]="'pie'"> [type]="'pie'">
</canvas> </canvas>
</div> </div>
@ -202,11 +73,9 @@
<div class="clr-col-4" style="padding: 10px 12px 5px 12px;"> <div class="clr-col-4" style="padding: 10px 12px 5px 12px;">
<div class="chart-box" id="contentContainer" #contentContainer> <div class="chart-box" id="contentContainer" #contentContainer>
<h4 class="center"> <b>{{item?.charttitle}}</b> </h4> <h4 class="center"> <b>{{item?.charttitle}}</b> </h4>
<canvas baseChart <canvas baseChart [datasets]="item?.featchData?.polarAreaChartData"
[datasets]="item?.featchData?.polarAreaChartData"
[labels]="item.showlabel ? item?.featchData?.polarAreaChartLabels: ChartNoLabels" [labels]="item.showlabel ? item?.featchData?.polarAreaChartLabels: ChartNoLabels"
[legend]="item.chartlegend" [legend]="item.chartlegend" [type]="'polarArea'">
[type]="'polarArea'">
</canvas> </canvas>
</div> </div>
</div> </div>
@ -215,10 +84,8 @@
<div class="clr-col-4" style="padding: 10px 12px 5px 12px;"> <div class="clr-col-4" style="padding: 10px 12px 5px 12px;">
<div class="chart-box" id="contentContainer" #contentContainer> <div class="chart-box" id="contentContainer" #contentContainer>
<h4 class="center"> <b>{{item?.charttitle}}</b> </h4> <h4 class="center"> <b>{{item?.charttitle}}</b> </h4>
<canvas baseChart <canvas baseChart [datasets]="item?.featchData?.radarChartData"
[datasets]="item?.featchData?.radarChartData" [labels]="item.showlabel ? item?.featchData?.radarChartLabels: ChartNoLabels" [legend]="item.chartlegend"
[labels]="item.showlabel ? item?.featchData?.radarChartLabels: ChartNoLabels"
[legend]="item.chartlegend"
[type]="'radar'"> [type]="'radar'">
</canvas> </canvas>
</div> </div>
@ -228,10 +95,8 @@
<div class="clr-col-4" style="padding: 10px 12px 5px 12px;"> <div class="clr-col-4" style="padding: 10px 12px 5px 12px;">
<div class="chart-box" id="contentContainer" #contentContainer> <div class="chart-box" id="contentContainer" #contentContainer>
<h4 class="center"> <b>{{item?.charttitle}}</b> </h4> <h4 class="center"> <b>{{item?.charttitle}}</b> </h4>
<canvas baseChart <canvas baseChart [datasets]="item?.featchData?.scatterChartData"
[datasets]="item?.featchData?.scatterChartData" [labels]="item.showlabel ? item?.featchData?.scatterChartLabels: ChartNoLabels" [legend]="item.chartlegend"
[labels]="item.showlabel ? item?.featchData?.scatterChartLabels: ChartNoLabels"
[legend]="item.chartlegend"
[type]="'scatter'"> [type]="'scatter'">
</canvas> </canvas>
</div> </div>
@ -241,10 +106,8 @@
<div class="clr-col-4" style="padding: 10px 12px 5px 12px;"> <div class="clr-col-4" style="padding: 10px 12px 5px 12px;">
<div class="chart-box" id="contentContainer" #contentContainer> <div class="chart-box" id="contentContainer" #contentContainer>
<h4 class="center"> <b>{{item?.charttitle}}</b> </h4> <h4 class="center"> <b>{{item?.charttitle}}</b> </h4>
<canvas baseChart <canvas baseChart [datasets]="item?.featchData?.scatterChartData"
[datasets]="item?.featchData?.scatterChartData" [labels]="item.showlabel ? item?.featchData?.scatterChartLabels: ChartNoLabels" [legend]="item.chartlegend"
[labels]="item.showlabel ? item?.featchData?.scatterChartLabels: ChartNoLabels"
[legend]="item.chartlegend"
[type]="'scatter'"> [type]="'scatter'">
</canvas> </canvas>
</div> </div>
@ -273,11 +136,15 @@ border-radius: 2px;">
<div class="alert-item static"> <div class="alert-item static">
<span class="alert-text"> <span class="alert-text">
{{'NOTIFICATION_NOT_FOUND' | translate}} {{'NOTIFICATION_NOT_FOUND' | translate}}
<ng-template #loadingSpinner><clr-spinner [clrMedium]="true">{{'LOADING' | translate}} ... </clr-spinner></ng-template> <ng-template #loadingSpinner><clr-spinner [clrMedium]="true">{{'LOADING' | translate}} ...
</clr-spinner></ng-template>
<div *ngIf="error;else loadingSpinner">{{error}}</div> <div *ngIf="error;else loadingSpinner">{{error}}</div>
<div *ngIf="er;">{{er}}</div> </span></div> <div *ngIf="er;">{{er}}</div>
</span>
</div> </div>
</div></ng-template> </div>
</div>
</ng-template>
<div *ngIf="notification; else showInfo"> <div *ngIf="notification; else showInfo">
<div *ngFor="let not of notification;"> <div *ngFor="let not of notification;">
<ng-container *ngIf="not?.image; else def"> <ng-container *ngIf="not?.image; else def">
@ -291,7 +158,8 @@ border-radius: 2px;">
<b>{{ not.time | timePipe }}</b> <b>{{ not.time | timePipe }}</b>
</span><br> </span><br>
<hr> <hr>
</div></div> </div>
</div>
</clr-tab-content> </clr-tab-content>
</clr-tab> </clr-tab>
<clr-tab> <clr-tab>
@ -304,20 +172,27 @@ border-radius: 2px;">
<div class="alert-item static"> <div class="alert-item static">
<span class="alert-text"> <span class="alert-text">
{{'SUGGESTION_NOT_FOUND'| translate}} {{'SUGGESTION_NOT_FOUND'| translate}}
<ng-template #loadingSpinner><clr-spinner [clrMedium]="true">{{'LOADING'| translate}} ... </clr-spinner></ng-template> <ng-template #loadingSpinner><clr-spinner [clrMedium]="true">{{'LOADING'| translate}} ...
</clr-spinner></ng-template>
<div *ngIf="error;else loadingSpinner">{{error}}</div> <div *ngIf="error;else loadingSpinner">{{error}}</div>
<div *ngIf="er;">{{er}}</div> </span></div> <div *ngIf="er;">{{er}}</div>
</span>
</div> </div>
</div></ng-template> </div>
</div>
</ng-template>
<ng-container *ngIf="projectsetup else suggetionInfo"> <ng-container *ngIf="projectsetup else suggetionInfo">
<div> <div>
<div class="clr-row"> <div class="clr-row">
<div *ngFor="let app of projectsetup; let index = i" class="clr-col-md-6 clr-col-12" style="width: 310px;"> <div *ngFor="let app of projectsetup; let index = i" class="clr-col-md-6 clr-col-12"
style="width: 310px;">
<div class="card" style="background-color: azure;"> <div class="card" style="background-color: azure;">
<div class="card-header"> <div class="card-header">
<div class="clr-row"> <div class="clr-row">
<div class="clr-col-5"> <div class="clr-col-5">
<b class="word" id="projectword" [title]="app.owner"><clr-icon shape="employee"></clr-icon> {{app.owner}} <span class="label label-light-blue p7 wordwrap" style="margin-top: .4em;" [title]="app.accessibility"> {{app.accessibility ? 'private' : 'public'}}</span></b> <b class="word" id="projectword" [title]="app.owner"><clr-icon shape="employee"></clr-icon>
{{app.owner}} <span class="label label-light-blue p7 wordwrap" style="margin-top: .4em;"
[title]="app.accessibility"> {{app.accessibility ? 'private' : 'public'}}</span></b>
</div> </div>
<div class="clr-col-7" style="text-align: right;"> <div class="clr-col-7" style="text-align: right;">
@ -327,11 +202,14 @@ border-radius: 2px;">
<b style="font-size: 15px;" [title]="app.projectName">{{app.projectName}}</b> <b style="font-size: 15px;" [title]="app.projectName">{{app.projectName}}</b>
</div> </div>
<div class="clr-row"> <div class="clr-row">
<div class="clr-col-9"> <div class="card-title1" id="projectword" > <div class="clr-col-9">
<b style="font-size: 15px;" class="p2" [title]="app.description">{{app.description ? app.description : 'project description'}}</b> <div class="card-title1" id="projectword">
<b style="font-size: 15px;" class="p2" [title]="app.description">{{app.description ?
app.description : 'project description'}}</b>
</div> </div>
</div> </div>
<div class="clr-col-3" style="text-align: right; display: flex; align-items: center; justify-content: flex-end;"> <div class="clr-col-3"
style="text-align: right; display: flex; align-items: center; justify-content: flex-end;">
<a href="javascript:void(0)" class="btn--circle" (click)="goToModule(app.id);"> <a href="javascript:void(0)" class="btn--circle" (click)="goToModule(app.id);">
<span class="btn-stage"></span> <span class="btn-stage"></span>
@ -344,7 +222,8 @@ border-radius: 2px;">
<div class="clr-row"> <div class="clr-row">
<div class="clr-col-12"> <div class="clr-col-12">
<span *ngFor="let tech of app?.technology?.slice(0, 6); let i = index"> <span *ngFor="let tech of app?.technology?.slice(0, 6); let i = index">
<span class="label label-light-blue p7 wordwrap" style="margin-top: .4em;" [title]="tech"> {{tech}}</span> <span class="label label-light-blue p7 wordwrap" style="margin-top: .4em;" [title]="tech">
{{tech}}</span>
</span> </span>
</div> </div>
<!-- <div class="clr-col-5" (click)="stopRedirection($event)"> <!-- <div class="clr-col-5" (click)="stopRedirection($event)">
@ -357,7 +236,9 @@ border-radius: 2px;">
<div class="card-block" style="padding: 10px 10px 0px 10px;"> <div class="card-block" style="padding: 10px 10px 0px 10px;">
<div class="card-footer" style="padding: 0px 10px 6px 10px"> <div class="card-footer" style="padding: 0px 10px 6px 10px">
<button class="btn btn-sm btn-link"> {{'Last Updated On' | translate}} {{app.updatedAt|date}}</button> <span style="margin: 0 0 0 10px; padding: 5px;" class="label p7"><clr-icon shape="calendar"></clr-icon>&nbsp;{{app.createdAt | timePipe}}</span> <button class="btn btn-sm btn-link"> {{'Last Updated On' | translate}}
{{app.updatedAt|date}}</button> <span style="margin: 0 0 0 10px; padding: 5px;"
class="label p7"><clr-icon shape="calendar"></clr-icon>&nbsp;{{app.createdAt | timePipe}}</span>
</div> </div>
</div> </div>
</div> </div>

View File

@ -101,6 +101,7 @@ import { MappingruleeditComponent } from './datamanagement/mappingrule/mappingru
import { QueryComponent } from './superadmin/query/query.component'; import { QueryComponent } from './superadmin/query/query.component';
import { QueryaddComponent } from './superadmin/queryadd/queryadd.component'; import { QueryaddComponent } from './superadmin/queryadd/queryadd.component';
import { QueryeditComponent } from './superadmin/queryedit/queryedit.component'; import { QueryeditComponent } from './superadmin/queryedit/queryedit.component';
import { TreeVisualizerComponent } from './fnd/SiteTreeBuilder/tree-visualizer.component';
@ -275,6 +276,8 @@ const routes: Routes = [
{path:'Visa_administration',component:Visa_administrationComponent}, {path:'Visa_administration',component:Visa_administrationComponent},
{path:'SiteBuilder',component:TreeVisualizerComponent},
{path:'Visa_status',component:Visa_statusComponent}, {path:'Visa_status',component:Visa_statusComponent},

View File

@ -121,6 +121,9 @@ import { MappingruleeditComponent } from './datamanagement/mappingrule/mappingru
import { QueryComponent } from './superadmin/query/query.component'; import { QueryComponent } from './superadmin/query/query.component';
import { QueryaddComponent } from './superadmin/queryadd/queryadd.component'; import { QueryaddComponent } from './superadmin/queryadd/queryadd.component';
import { QueryeditComponent } from './superadmin/queryedit/queryedit.component'; import { QueryeditComponent } from './superadmin/queryedit/queryedit.component';
import { TreeVisualizerComponent } from './fnd/SiteTreeBuilder/tree-visualizer.component';
import { TreeNodeComponent } from './fnd/SiteTreeBuilder/tree-node.component';
@NgModule({ @NgModule({
declarations: [ declarations: [
@ -140,6 +143,9 @@ import { QueryeditComponent } from './superadmin/queryedit/queryedit.component';
// buildercomponents // buildercomponents
TreeNodeComponent,
TreeVisualizerComponent,
Visa_administrationComponent, Visa_administrationComponent,

View File

@ -14,6 +14,8 @@ export const environment = {
// backendUrl:'/visaproject36808/back', // backendUrl:'/visaproject36808/back',
backendUrl:'http://157.66.191.31:30101/back', backendUrl:'http://157.66.191.31:30101/back',
nodeUrl:'http://157.66.191.31:31170',

View File

@ -11,8 +11,10 @@ export const environment = {
captchaSiteKey: '6LfrdSUpAAAAALkYDmnvdX3GLLCArgPWNHfXasjP', captchaSiteKey: '6LfrdSUpAAAAALkYDmnvdX3GLLCArgPWNHfXasjP',
// backport:'31701/visaproject36808/back', // backport:'31701/visaproject36808/back',
// backendUrl:'http://localhost:9292/back', backendUrl:'http://localhost:9292/back',
backendUrl:'http://157.66.191.31:30101/back', nodeUrl:'http://localhost:3000',
// backendUrl:'http://157.66.191.31:30101/back',

View File

@ -3,28 +3,14 @@ const express = require('express');
const { createProxyMiddleware } = require('http-proxy-middleware'); const { createProxyMiddleware } = require('http-proxy-middleware');
const cors = require('cors') const cors = require('cors')
const app = express(); const app = express();
const proxy = require('express-http-proxy');
app.use(cors({ app.use(cors({
origin: '*' origin: '*'
})) }))
//Deployment configs //Deployment configs
app.use('/repos', createProxyMiddleware({ target: 'https://try.gitea.io/api/v1', changeOrigin: true })); app.use('/llm', createProxyMiddleware({ target: 'http://157.66.191.31:30103', changeOrigin: true }));
app.use('/sureconnect', createProxyMiddleware({ target: 'http://43.205.154.152:30174', changeOrigin: true }));
app.use('/sureops', createProxyMiddleware({ target: 'http://43.205.154.152:31123', changeOrigin: true }));
app.use('/entityBuilder', createProxyMiddleware({ target: 'http://43.205.154.152:30171', changeOrigin: true }));
app.use('/surechat', createProxyMiddleware({ target: 'http://43.205.154.152:30172', changeOrigin: true }));
app.use('/jobpro', createProxyMiddleware({ target: 'http://43.205.154.152:30167', changeOrigin: true }));
app.use('/Surecommunication', createProxyMiddleware({ target: 'http://43.205.154.152:30187', changeOrigin: true }));
app.use('/surejob', createProxyMiddleware({ target: 'http://43.205.154.152:30188', changeOrigin: true }));
// app.use('/jobpro', createProxyMiddleware({ target: 'http://localhost:8087', changeOrigin: true }));
// app.use('/Surecommunication', createProxyMiddleware({ target: 'http://localhost:19002', changeOrigin: true }));
// app.use('/sureops', createProxyMiddleware({ target: 'http://localhost:9090', changeOrigin: true }));
// app.use('/', createProxyMiddleware({ target: 'http://localhost:8080', changeOrigin: true }));
// app.use('/', createProxyMiddleware({ target: 'http://localhost:9190', changeOrigin: true }));
// app.listen(3000);
// console.log('Node server running on port 3000');
app.listen(3000, () => { app.listen(3000, () => {
console.log("Server started in port 3000!"); console.log("Server started in port 3000!");
}); });