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

@ -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,263 +1,126 @@
<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'" > <div class="clr-col-3" style="padding: 10px 12px 5px 12px;">
<div class="clr-col-3" style="padding: 10px 12px 5px 12px;"> <div class="card card-block" style="margin: 0%; padding: 1%;">
<div class="card card-block" style="margin: 0%; padding: 1%;"> <h4 class="card-title" style="text-align: center; font-weight: bolder; ">{{ item?.charttitle }}</h4>
<h4 class="card-title" style="text-align: center; font-weight: bolder; ">{{ item?.charttitle }}</h4> <p class="card-text" style="text-align: center; color: red; font-size: 25px;">
<p class="card-text" style="text-align: center; color: red; font-size: 25px;"> <!-- {{ item.function === "Count" ? calculateCount(item.key) : 'N/A' }} -->
<!-- {{ item.function === "Count" ? calculateCount(item.key) : 'N/A' }} --> 0
0 </p>
</p>
</div>
</div> </div>
</div>
</ng-container> </ng-container>
</ng-container>
<ng-container *ngFor="let item of dashboardChartData; let i = index">
<!-- <ng-container *ngIf="item.name === 'Bar Chart'" > <ng-container *ngIf="item.name === 'Bar Chart'">
<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" [type]="'bar'">
[legend]="item.chartlegend" </canvas>
[type]="'bar'"> </div>
</canvas> </div>
</div> </ng-container>
</div> <ng-container *ngIf="item.name === 'Line Chart'">
</ng-container> <div class="clr-col-4" style="padding: 10px 12px 5px 12px;">
<ng-container *ngIf="item.name === 'Line Chart'" > <div class="chart-box" id="contentContainer" #contentContainer>
<div class="clr-col-4" style="padding: 10px 12px 5px 12px;"> <h4 class="center"> <b>{{item?.charttitle}}</b> </h4>
<div class="chart-box" id="contentContainer" #contentContainer> <canvas baseChart [datasets]="item?.featchData?.chartData"
<h4 class="center"> <b>{{item?.charttitle}}</b> </h4> [labels]="item.showlabel ? item?.featchData?.chartLabels: ChartNoLabels" [legend]="item.chartlegend"
<canvas baseChart [type]="'line'">
[datasets]="item?.featchData?.chartData" </canvas>
[labels]="item.showlabel ? item?.featchData?.chartLabels: ChartNoLabels" </div>
[legend]="item.chartlegend" </div>
[type]="'line'"> </ng-container>
</canvas> <ng-container *ngIf="item.name === 'Doughnut Chart'">
</div> <div class="clr-col-4" style="padding: 10px 12px 5px 12px;">
</div> <div class="chart-box" id="contentContainer" #contentContainer>
</ng-container> <h4 class="center"> <b>{{item?.charttitle}}</b> </h4>
<ng-container *ngIf="item.name === 'Doughnut Chart'" > <canvas baseChart [datasets]="item?.featchData?.chartData"
<div class="clr-col-4" style="padding: 10px 12px 5px 12px;"> [labels]="item.showlabel ? item?.featchData?.chartLabels: ChartNoLabels" [legend]="item.chartlegend"
<div class="chart-box" id="contentContainer" #contentContainer> [type]="'doughnut'">
<h4 class="center"> <b>{{item?.charttitle}}</b> </h4> </canvas>
<canvas baseChart </div>
[datasets]="item?.featchData?.chartData" </div>
[labels]="item.showlabel ? item?.featchData?.chartLabels: ChartNoLabels" </ng-container>
[legend]="item.chartlegend" <ng-container *ngIf="item.name === 'Bubble Chart'">
[type]="'doughnut'"> <div class="clr-col-4" style="padding: 10px 12px 5px 12px;">
</canvas> <div class="chart-box" id="contentContainer" #contentContainer>
</div> <h4 class="center"> <b>{{item?.charttitle}}</b> </h4>
</div> <canvas baseChart [datasets]="item?.featchData?.bubbleChartData" [legend]="item.chartlegend"
</ng-container> [type]="'bubble'">
<ng-container *ngIf="item.name === 'Bubble Chart'" > </canvas>
<div class="clr-col-4" style="padding: 10px 12px 5px 12px;"> </div>
<div class="chart-box" id="contentContainer" #contentContainer> </div>
<h4 class="center"> <b>{{item?.charttitle}}</b> </h4> </ng-container>
<canvas baseChart <ng-container *ngIf="item.name === 'Pie Chart'">
[datasets]="item?.featchData?.bubbleChartData" <div class="clr-col-4" style="padding: 10px 12px 5px 12px;">
[legend]="item.chartlegend" <div class="chart-box" id="contentContainer" #contentContainer>
[type]="'bubble'"> <h4 class="center"> <b>{{item?.charttitle}}</b> </h4>
</canvas> <canvas baseChart [datasets]="item?.featchData?.pieChartData"
</div> [labels]="item.showlabel ? item?.featchData?.pieChartLabels: ChartNoLabels" [legend]="item.chartlegend"
</div> [type]="'pie'">
</ng-container> </canvas>
<ng-container *ngIf="item.name === 'Pie Chart'" > </div>
<div class="clr-col-4" style="padding: 10px 12px 5px 12px;"> </div>
<div class="chart-box" id="contentContainer" #contentContainer> </ng-container>
<h4 class="center"> <b>{{item?.charttitle}}</b> </h4> <ng-container *ngIf="item.name === 'PolarArea Chart'">
<canvas baseChart <div class="clr-col-4" style="padding: 10px 12px 5px 12px;">
[datasets]="item?.featchData?.pieChartData" <div class="chart-box" id="contentContainer" #contentContainer>
[labels]="item.showlabel ? item?.featchData?.pieChartLabels: ChartNoLabels" <h4 class="center"> <b>{{item?.charttitle}}</b> </h4>
[legend]="item.chartlegend" <canvas baseChart [datasets]="item?.featchData?.polarAreaChartData"
[type]="'pie'"> [labels]="item.showlabel ? item?.featchData?.polarAreaChartLabels: ChartNoLabels"
</canvas> [legend]="item.chartlegend" [type]="'polarArea'">
</div> </canvas>
</div> </div>
</ng-container> </div>
<ng-container *ngIf="item.name === 'PolarArea Chart'" > </ng-container>
<div class="clr-col-4" style="padding: 10px 12px 5px 12px;"> <ng-container *ngIf="item.name === 'Radar Chart'">
<div class="chart-box" id="contentContainer" #contentContainer> <div class="clr-col-4" style="padding: 10px 12px 5px 12px;">
<h4 class="center"> <b>{{item?.charttitle}}</b> </h4> <div class="chart-box" id="contentContainer" #contentContainer>
<canvas baseChart <h4 class="center"> <b>{{item?.charttitle}}</b> </h4>
[datasets]="item?.featchData?.polarAreaChartData" <canvas baseChart [datasets]="item?.featchData?.radarChartData"
[labels]="item.showlabel ? item?.featchData?.polarAreaChartLabels: ChartNoLabels" [labels]="item.showlabel ? item?.featchData?.radarChartLabels: ChartNoLabels" [legend]="item.chartlegend"
[legend]="item.chartlegend" [type]="'radar'">
[type]="'polarArea'"> </canvas>
</canvas> </div>
</div> </div>
</div> </ng-container>
</ng-container> <ng-container *ngIf="item.name === 'Scatter Chart'">
<ng-container *ngIf="item.name === 'Radar Chart'" > <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 [datasets]="item?.featchData?.scatterChartData"
<canvas baseChart [labels]="item.showlabel ? item?.featchData?.scatterChartLabels: ChartNoLabels" [legend]="item.chartlegend"
[datasets]="item?.featchData?.radarChartData" [type]="'scatter'">
[labels]="item.showlabel ? item?.featchData?.radarChartLabels: ChartNoLabels" </canvas>
[legend]="item.chartlegend" </div>
[type]="'radar'"> </div>
</canvas> </ng-container>
</div> <ng-container *ngIf="item.name === 'Scatter Chart'">
</div> <div class="clr-col-4" style="padding: 10px 12px 5px 12px;">
</ng-container> <div class="chart-box" id="contentContainer" #contentContainer>
<ng-container *ngIf="item.name === 'Scatter Chart'" > <h4 class="center"> <b>{{item?.charttitle}}</b> </h4>
<div class="clr-col-4" style="padding: 10px 12px 5px 12px;"> <canvas baseChart [datasets]="item?.featchData?.scatterChartData"
<div class="chart-box" id="contentContainer" #contentContainer> [labels]="item.showlabel ? item?.featchData?.scatterChartLabels: ChartNoLabels" [legend]="item.chartlegend"
<h4 class="center"> <b>{{item?.charttitle}}</b> </h4> [type]="'scatter'">
<canvas baseChart </canvas>
[datasets]="item?.featchData?.scatterChartData" </div>
[labels]="item.showlabel ? item?.featchData?.scatterChartLabels: ChartNoLabels" </div>
[legend]="item.chartlegend" </ng-container>
[type]="'scatter'"> </ng-container>
</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 *ngFor="let item of dashboardChartData; let i = index">
<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>
</div> </div>
<div style="width:1180px; margin:16px; <div style="width:1180px; margin:16px;
padding:0 16px; padding:0 16px;
background-color: #fff; background-color: #fff;
border:1px solid #ccc; border:1px solid #ccc;
@ -268,104 +131,122 @@ border-radius: 2px;">
<clr-tab-content *clrIfActive> <clr-tab-content *clrIfActive>
<br> <br>
<ng-template #showInfo> <ng-template #showInfo>
<div class="alert alert-info" role="alert"> <div class="alert alert-info" role="alert">
<div class="alert-items"> <div class="alert-items">
<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}} ...
<div *ngIf="error;else loadingSpinner">{{error}}</div> </clr-spinner></ng-template>
<div *ngIf="er;">{{er}}</div> </span></div> <div *ngIf="error;else loadingSpinner">{{error}}</div>
<div *ngIf="er;">{{er}}</div>
</span>
</div>
</div>
</div> </div>
</div></ng-template> </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">
<img [src]="not?.image" alt="Avatar" style="height:50px;border-radius:50%;"> <img [src]="not?.image" alt="Avatar" style="height:50px;border-radius:50%;">
</ng-container> </ng-container>
<ng-template #def> <ng-template #def>
<img src="../../../../assets/images/images.png" alt="" style="height: 50px;"> <img src="../../../../assets/images/images.png" alt="" style="height: 50px;">
</ng-template> </ng-template>
{{not.notification}} {{not.notification}}
<span class="label label-purple p7" style="margin-top: .4em;" [title]="not.time"> <span class="label label-purple p7" style="margin-top: .4em;" [title]="not.time">
<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>
<button clrTabLink>{{'SUGGESTION_FOR_YOU'| translate}}</button> <button clrTabLink>{{'SUGGESTION_FOR_YOU'| translate}}</button>
<clr-tab-content *clrIfActive> <clr-tab-content *clrIfActive>
<br> <br>
<ng-template #suggetionInfo> <ng-template #suggetionInfo>
<div class="alert alert-info" role="alert"> <div class="alert alert-info" role="alert">
<div class="alert-items"> <div class="alert-items">
<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}} ...
<div *ngIf="error;else loadingSpinner">{{error}}</div> </clr-spinner></ng-template>
<div *ngIf="er;">{{er}}</div> </span></div> <div *ngIf="error;else loadingSpinner">{{error}}</div>
<div *ngIf="er;">{{er}}</div>
</span>
</div>
</div>
</div> </div>
</div></ng-template> </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;">
</div>
</div> </div>
</div>
<div class="card-title1" id="projectword">
<b style="font-size: 15px;" [title]="app.projectName">{{app.projectName}}</b>
</div>
<div class="clr-row">
<div class="clr-col-9">
<div class="card-title1" id="projectword"> <div class="card-title1" id="projectword">
<b style="font-size: 15px;" [title]="app.projectName">{{app.projectName}}</b> <b style="font-size: 15px;" class="p2" [title]="app.description">{{app.description ?
</div> app.description : 'project description'}}</b>
<div class="clr-row">
<div class="clr-col-9"> <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 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);" >
<span class="btn-stage"></span>
<span class="btn-stage">{{'SERVICE'| translate}}</span>
</a>
</div>
</div> </div>
<div class="card-text"> </div>
<div class="clr-row" > <div class="clr-col-3"
<div class="clr-col-12" > style="text-align: right; display: flex; align-items: center; justify-content: flex-end;">
<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> <a href="javascript:void(0)" class="btn--circle" (click)="goToModule(app.id);">
</span> <span class="btn-stage"></span>
</div> <span class="btn-stage">{{'SERVICE'| translate}}</span>
<!-- <div class="clr-col-5" (click)="stopRedirection($event)"> </a>
</div>
</div>
<div class="card-text">
<div class="clr-row">
<div class="clr-col-12">
<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>
</div>
<!-- <div class="clr-col-5" (click)="stopRedirection($event)">
</div> --> </div> -->
</div> </div>
</div>
</div> </div>
</div>
<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>
</div> </div>
</div> </div>
</div> </ng-container>
</div> <br>
</ng-container>
<br>
</clr-tab-content> </clr-tab-content>
</clr-tab> </clr-tab>

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,46 +143,49 @@ import { QueryeditComponent } from './superadmin/queryedit/queryedit.component';
// buildercomponents // buildercomponents
Visa_administrationComponent,
TreeNodeComponent,
TreeVisualizerComponent,
Visa_administrationComponent,
Visa_statusComponent, Visa_statusComponent,
Cost_sheetComponent, Cost_sheetComponent,
Visa_bundleComponent, Visa_bundleComponent,
AgentComponent, AgentComponent,
SupplierComponent, SupplierComponent,
NationalityComponent, NationalityComponent,
ReferrerComponent, ReferrerComponent,
GenderComponent, GenderComponent,
Visa_processingComponent, Visa_processingComponent,
Visa_pricesComponent, Visa_pricesComponent,
Visa_entryComponent, Visa_entryComponent,
Visa_durationComponent, Visa_durationComponent,
Visa_applicationComponent, Visa_applicationComponent,

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!");
}); });