This commit is contained in:
string 2025-03-27 12:51:29 +05:30
parent f7c801e835
commit 656f29018b
25 changed files with 3233 additions and 694 deletions

View File

@ -1,79 +1,115 @@
<ol class="breadcrumb breadcrumb-arrow font-trirong">
<li><a href="javascript://" [routerLink]="['/cns-portal/dashboard/order']"><clr-icon shape="home"></clr-icon></a></li>
<li><a href="javascript://"><clr-icon shape=""></clr-icon>{{ 'SETUP' | translate }}</a></li>
</ol>
<br>
<div class="dg-wrapper">
<div class="clr-row">
<div class="clr-col-8">
<!-- <h3>Setup</h3> -->
</div>
</div>
<li><a href="javascript://" [routerLink]="['/cns-portal/dashboard/order']"><clr-icon shape="home"></clr-icon></a></li>
<li><a href="javascript://"><clr-icon shape=""></clr-icon>{{ 'SETUP' | translate }}</a></li>
</ol>
<br>
<div class="dg-wrapper">
<div class="clr-row">
<div class="clr-col-8">
<!-- <h3>Setup</h3> -->
</div>
</div>
<div class="container">
<div class="container">
<h3 class="section">{{ 'SETUP_TOOLS' | translate }}</h3>
<div class="clr-row clr-align-items-start clr-justify-content-start" style="padding-right: 10px;">
<div class="clr-row">
<div class="clr-col-md-3" style="width: 300px ;" *ngFor="let item of sub;">
<div class="card" (click)="goToUserMaintenance(item)" style="border-left: none; border-right: none; border-top: none;">
<div class="clr-row clr-align-items-start clr-justify-content-start" style="padding-right: 10px;">
<div class="clr-row">
<div class="clr-col-md-3" style="width: 300px ;" *ngFor="let item of sub;">
<div class="card" (click)="goToUserMaintenance(item)"
style="border-left: none; border-right: none; border-top: none;">
<div class="card-header" style="padding-bottom: 0px;">
<div class="clr-row">
<div class="clr-col-10">
<clr-icon shape="cog"></clr-icon>
<div class="card-header" style="padding-bottom: 0px;">
<div class="clr-row">
<div class="clr-col-10">
<clr-icon shape="cog"></clr-icon>
</div>
<div class="clr-col-2">
<input type="radio" id="cb1" class="dots" [title]="item.status == 'Enable' ? 'status: True' : 'status: False'" [ngStyle]="{'background-color': item.status == 'Enable' ? 'green' : 'red'}" >
</div>
</div> <br>
<div class="clr-row">
<div class="clr-col-12">
<div class="clr-col-2">
<input type="radio" id="cb1" class="dots"
[title]="item.status == 'Enable' ? 'status: True' : 'status: False'"
[ngStyle]="{'background-color': item.status == 'Enable' ? 'green' : 'red'}">
</div>
</div> <br>
<div class="clr-row">
<div class="clr-col-12">
<b class="word" id="word" title="User Maintenance" style="color:#e98585">{{item.menuItemDesc}}</b>
</div>
</div>
<div class="clr-row">
<div class="clr-col-12"> <div class="card-title1" id="word" >
<b style="font-size: 15px;" class="p2" [title]="">{{item.menuItemDesc}}</b>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="clr-col-md-3" style="width: 300px ;">
<div class="card" (click)="goToreport()" style="border-left: none; border-right: none; border-top: none;">
<div class="card-header" style="padding-bottom: 0px;">
<div class="clr-row">
<div class="clr-col-12">
<clr-icon shape="cog"></clr-icon>
<div class="clr-row">
<div class="clr-col-12">
<div class="card-title1" id="word">
<b style="font-size: 15px;" class="p2" [title]="">{{item.menuItemDesc}}</b>
</div>
</div>
</div> <br>
<div class="clr-row">
<div class="clr-col-12">
</div>
</div>
</div>
</div>
<div class="clr-col-md-3" style="width: 300px ;">
<div class="card" (click)="goToreport()" style="border-left: none; border-right: none; border-top: none;">
<div class="card-header" style="padding-bottom: 0px;">
<div class="clr-row">
<div class="clr-col-12">
<clr-icon shape="cog"></clr-icon>
</div>
</div> <br>
<div class="clr-row">
<div class="clr-col-12">
<b class="word" id="word" title="Reports" style="color:#e98585">{{ 'REPORTS' | translate }}</b>
</div>
</div>
<div class="clr-row">
<div class="clr-col-12"> <div class="card-title1" id="word" >
<b style="font-size: 15px;" class="p2" [title]="">{{ 'REPORTS_DESCRIPTION' | translate }}</b>
</div>
</div>
</div>
</div>
<div class="clr-row">
<div class="clr-col-12">
<div class="card-title1" id="word">
<b style="font-size: 15px;" class="p2" [title]="">{{ 'REPORTS_DESCRIPTION' | translate }}</b>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Api Registery -->
<div class="clr-col-md-3" style="width: 300px ;">
<div class="card" (click)="goToApiRegistery()"
style="border-left: none; border-right: none; border-top: none;">
<div class="card-header" style="padding-bottom: 0px;">
<div class="clr-row">
<div class="clr-col-12">
<clr-icon shape="cog"></clr-icon>
</div>
</div> <br>
<div class="clr-row">
<div class="clr-col-12">
<b class="word" id="word" title="Api Registery" style="color:#e98585">{{ 'API_REGISTERY' | translate
}}</b>
</div>
</div>
<div class="clr-row">
<div class="clr-col-12">
<div class="card-title1" id="word">
<b style="font-size: 15px;" class="p2" [title]="">{{ 'API_REGISTERY_DESCRIPTION' | translate }}</b>
</div>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -8,82 +8,86 @@ import { TranslateService } from '@ngx-translate/core';
templateUrl: './setupicon.component.html',
styleUrls: ['./setupicon.component.scss']
})
export class SetupiconComponent implements OnInit{
export class SetupiconComponent implements OnInit {
sub;
constructor(private router: Router, private route: ActivatedRoute,private menuservice:MenumaintanceService, private menuGroupService: MenuGroupService,
private translate: TranslateService
) { }
constructor(private router: Router, private route: ActivatedRoute, private menuservice: MenumaintanceService, private menuGroupService: MenuGroupService,
private translate: TranslateService
) { }
ngOnInit(): void {
this.getById(1116)
}
switchLanguage(language: string) {
this.translate.use(language);
}
getById(id:any){
this.menuservice.getbyid(id).subscribe((data)=>{
this.sub=data;
console.log(this.sub)
})
}
ngOnInit(): void {
this.getById(1116)
}
switchLanguage(language: string) {
this.translate.use(language);
}
getById(id: any) {
this.menuservice.getbyid(id).subscribe((data) => {
this.sub = data;
console.log(this.sub)
})
}
mc;
me;
md;
mv;
goToUserMaintenance(val) {
console.log(val);
this.menuGroupService.storeaddeditvalues(val);
this.mc=val.mcreate;
this.me=val.medit;
this.md=val.mdelete;
this.mv=val.mvisible;
if(this.mv == 'false'){
this.menuGroupService.storeaddeditvalues(val);
this.mc = val.mcreate;
this.me = val.medit;
this.md = val.mdelete;
this.mv = val.mvisible;
if (this.mv == 'false') {
this.router.navigate(['/**'])
}
this.router.navigate(['../'+ val.main_menu_action_name] , { relativeTo: this.route});
this.router.navigate(['../' + val.main_menu_action_name], { relativeTo: this.route });
}
goToUsergrpMaintenance() {
this.router.navigate(['/cns-portal/usergrpmaintance'],{ relativeTo: this.route });
this.router.navigate(['/cns-portal/usergrpmaintance'], { relativeTo: this.route });
}
goToMenumaintance() {
this.router.navigate(['/cns-portal/menumaintance'],{ relativeTo: this.route });
this.router.navigate(['/cns-portal/menumaintance'], { relativeTo: this.route });
}
goToMenuaccess() {
this.router.navigate(['/cns-portal/menuaccess'],{ relativeTo: this.route });
this.router.navigate(['/cns-portal/menuaccess'], { relativeTo: this.route });
}
goToSystemparameters() {
this.router.navigate(['/cns-portal/systemparameters'],{ relativeTo: this.route });
this.router.navigate(['/cns-portal/systemparameters'], { relativeTo: this.route });
}
goToAccesstype() {
this.router.navigate(['/cns-portal/accesstype'],{ relativeTo: this.route });
this.router.navigate(['/cns-portal/accesstype'], { relativeTo: this.route });
}
goToreport() {
this.router.navigate(['/cns-portal/reportbuild'],{ relativeTo: this.route });
this.router.navigate(['/cns-portal/reportbuild'], { relativeTo: this.route });
}
goTodash() {
this.router.navigate(['/cns-portal/dashboardbuilder'],{ relativeTo: this.route });
this.router.navigate(['/cns-portal/dashboardbuilder'], { relativeTo: this.route });
}
goToApiRegistery() {
this.router.navigate(['/cns-portal/apiregistery'], { relativeTo: this.route });
}
// mc;
// me;
// md;
// mv;
// send(val){
// console.log(val);
// this.menuGroupService.storeaddeditvalues(val);
// this.mc=val.mcreate;
// this.me=val.medit;
// this.md=val.mdelete;
// this.mv=val.mvisible;
// mc;
// me;
// md;
// mv;
// send(val){
// console.log(val);
// this.menuGroupService.storeaddeditvalues(val);
// this.mc=val.mcreate;
// this.me=val.medit;
// this.md=val.mdelete;
// this.mv=val.mvisible;
}

View File

@ -1,4 +1,7 @@
import { SequencegenaratorComponent } from './fnd/sequencegenarator/sequencegenarator.component';
import { Component, NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
@ -81,6 +84,9 @@ import { MappingruleComponent } from './datamanagement/mappingrule/mappingrule.c
import { MappingruleallComponent } from './datamanagement/mappingrule/mappingruleall/mappingruleall.component';
import { MappingruleaddComponent } from './datamanagement/mappingrule/mappingruleadd/mappingruleadd.component';
import { MappingruleeditComponent } from './datamanagement/mappingrule/mappingruleedit/mappingruleedit.component';
import { QueryComponent } from './superadmin/query/query.component';
import { QueryaddComponent } from './superadmin/queryadd/queryadd.component';
import { QueryeditComponent } from './superadmin/queryedit/queryedit.component';
@ -122,9 +128,20 @@ const routes: Routes = [
{ path: 'all', component: ReportbuildallComponent },
{ path: 'add', component: ReportbuildaddComponent },
{ path: 'edit/:id', component: ReportbuildeditComponent },
{ path: 'reportQuery/:id', component: ReportbuildqueryComponent }
{ path: 'reportQuery/:id', component: ReportbuildqueryComponent },
//SUPER ADMIN
{ path: 'query', component: QueryComponent, canActivate: [AuthGuard], data: { roles: [Role.Admin] } },
{ path: 'reportQuery/:id/queryadd', component: QueryaddComponent, canActivate: [AuthGuard], data: { roles: [Role.Admin] } },
{ path: 'reportQuery/queryedit/:id', component: QueryeditComponent, canActivate: [AuthGuard], data: { roles: [Role.Admin] } },
]
}, // {path:'rerunner',component:DatefunctionComponent},
},
// {path:'rerunner',component:DatefunctionComponent},
{
path: 'reportbuild2', component: ReportBuild2Component,
@ -242,8 +259,6 @@ const routes: Routes = [
// buildercomponents
{ path: '**', component: PageNotFoundComponent },
]

View File

@ -1,128 +1,112 @@
import { SequencegenaratorComponent } from './fnd/sequencegenarator/sequencegenarator.component';
import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { CommonModule } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { ClarityModule } from '@clr/angular';
import { MainRoutingModule } from './main-routing.module';
import { MainPageComponent } from '../main/fnd/main-page/main-page.component';
import { MainRoutingModule } from './main-routing.module';
import { PageNotFoundComponent } from './page-not-found/page-not-found.component';
// import { AboutComponent } from '../main/admin/about/about.component';
// import { LayoutComponent } from './layout/layout.component';
import { UserComponent } from '../main/admin/user/user.component';
import { HelperModule } from 'src/app/pipes/helpers.module';
import { PasswordResetComponent } from '../main/admin/password-reset/password-reset.component';
import { UserComponent } from '../main/admin/user/user.component';
import { DashboardComponent } from '../main/fnd/dashboard/dashboard.component';
import { MenuGroupComponent } from '../main/admin/menu-group/menu-group.component';
import { AllMenuGroupComponent } from '../main/admin/menu-group/all/all-menu-group.component';
import { EditMenuGroupComponent } from '../main/admin/menu-group/edit/edit-menu-group.component';
import { MenuGroupComponent } from '../main/admin/menu-group/menu-group.component';
import { ReadOnlyMenuGroupComponent } from '../main/admin/menu-group/read-only/readonly-menu-group.component';
import { MenuRegisterComponent } from '../main/admin/menu-register/menu-register.component';
import { AddMenurComponent } from '../main/admin/menu-register/add-menur/add-menur.component';
import { EditMenurComponent } from '../main/admin/menu-register/edit-menur/edit-menur.component';
import { AllMenurComponent } from '../main/admin/menu-register/all-menur/all-menur.component';
import { EditMenurComponent } from '../main/admin/menu-register/edit-menur/edit-menur.component';
import { MenuRegisterComponent } from '../main/admin/menu-register/menu-register.component';
import { ReadonlyMenurComponent } from '../main/admin/menu-register/readonly-menur/readonly-menur.component';
import { ProfileSettingComponent } from '../main/admin/profile-setting/profile-setting.component';
import { UsermaintanceComponent } from '../main/admin/usermaintance/usermaintance.component';
import { UsermaintanceaddComponent } from '../main/admin/usermaintanceadd/usermaintanceadd.component';
import { UsermaintanceeditComponent } from '../main/admin/usermaintanceedit/usermaintanceedit.component';
import { UsergrpmaintenanceComponent } from '../main/admin/usergrpmaintenance/usergrpmaintenance.component';
import { MenuaccesscontrolComponent } from '../main/admin/menuaccesscontrol/menuaccesscontrol.component';
import { SystemparametersComponent } from '../main/admin/systemparameters/systemparameters.component';
import { MenumaintanceComponent } from '../main/admin/menumaintance/menumaintance.component';
import { DragDropModule } from '@angular/cdk/drag-drop';
import { CKEditorModule } from 'ng2-ckeditor';
import { CodemirrorModule } from "@ctrl/ngx-codemirror";
import { GridsterModule } from 'angular-gridster2';
import { NgChartsModule } from 'ng2-charts';
import { NgxChartsModule } from '@swimlane/ngx-charts';
import { DynamicModule } from 'ng-dynamic-component';
import { HttpClientModule } from '@angular/common/http';
import { CodemirrorModule } from "@ctrl/ngx-codemirror";
import { NgxChartsModule } from '@swimlane/ngx-charts';
import { GridsterModule } from 'angular-gridster2';
import { DynamicModule } from 'ng-dynamic-component';
import { NgChartsModule } from 'ng2-charts';
import { CKEditorModule } from 'ng2-ckeditor';
import { UserRegistrationComponent } from '../main/admin/user-registration/user-registration.component';
import { QRCodeModule } from 'angularx-qrcode';
import { ImageCropperModule } from 'ngx-image-cropper';
import { SubmenuComponent } from './admin/submenu/submenu.component';
import { TagInputModule } from 'ngx-chips';
import { AccesstypeComponent } from './admin/accesstype/accesstype.component';
import { ModulesComponent } from './admin/modules/modules.component';
import { CookieService } from 'ngx-cookie-service';
import { ImageCropperModule } from 'ngx-image-cropper';
import { ModulesComponent } from './admin/modules/modules.component';
import { SessionloggerComponent } from './admin/sessionlogger/sessionlogger.component';
import { SubmenuComponent } from './admin/submenu/submenu.component';
import { WireframeService } from 'src/app/services/builder/wireframe.service';
import { ReportRunnerComponent } from './builder/report-runner/report-runner.component';
import { ReportrunnerallComponent } from './builder/report-runner/reportrunnerall/reportrunnerall.component';
import { ReportrunnereditComponent } from './builder/report-runner/reportrunneredit/reportrunneredit.component';
import { Reportrunneredit2Component } from './builder/report-runner/reportrunneredit2/reportrunneredit2.component';
import { ReportBuildComponent } from './builder/report-build/report-build.component';
import { ReportbuildallComponent } from './builder/report-build/reportbuildall/reportbuildall.component';
import { ReportbuildaddComponent } from './builder/report-build/reportbuildadd/reportbuildadd.component';
import { ReportbuildeditComponent } from './builder/report-build/reportbuildedit/reportbuildedit.component';
import { ReportbuildqueryComponent } from './builder/report-build/reportbuildquery/reportbuildquery.component';
import { ReportBuild2Component } from './builder/report-build2/report-build2.component';
import { ReportBuild2allComponent } from './builder/report-build2/report-build2all/report-build2all.component';
import { ReportBuild2addComponent } from './builder/report-build2/report-build2add/report-build2add.component';
import { ReportBuild2editComponent } from './builder/report-build2/report-build2edit/report-build2edit.component';
import { ReportRunnerComponent } from './builder/report-runner/report-runner.component';
import { ReportrunnereditComponent } from './builder/report-runner/reportrunneredit/reportrunneredit.component';
import { Reportrunneredit2Component } from './builder/report-runner/reportrunneredit2/reportrunneredit2.component';
import { DashboardnewComponent } from './builder/dashboardnew/dashboardnew.component';
import { AddnewdashComponent } from './builder/dashboardnew/addnewdash/addnewdash.component';
import { AllnewdashComponent } from './builder/dashboardnew/allnewdash/allnewdash.component';
import { EditformnewdashComponent } from './builder/dashboardnew/editformnewdash/editformnewdash.component';
import { EditnewdashComponent } from './builder/dashboardnew/editnewdash/editnewdash.component';
import { BarChartComponent } from './builder/dashboardnew/gadgets/bar-chart/bar-chart.component';
import { BubbleChartComponent } from './builder/dashboardnew/gadgets/bubble-chart/bubble-chart.component';
import { DoughnutChartComponent } from './builder/dashboardnew/gadgets/doughnut-chart/doughnut-chart.component';
import { DynamicChartComponent } from './builder/dashboardnew/gadgets/dynamic-chart/dynamic-chart.component';
import { FinancialChartComponent } from './builder/dashboardnew/gadgets/financial-chart/financial-chart.component';
import { GridViewComponent } from './builder/dashboardnew/gadgets/grid-view/grid-view.component';
import { LineChartComponent } from './builder/dashboardnew/gadgets/line-chart/line-chart.component';
import { PieChartComponent } from './builder/dashboardnew/gadgets/pie-chart/pie-chart.component';
import { PolarChartComponent } from './builder/dashboardnew/gadgets/polar-chart/polar-chart.component';
import { RadarChartComponent } from './builder/dashboardnew/gadgets/radar-chart/radar-chart.component';
import { ScatterChartComponent } from './builder/dashboardnew/gadgets/scatter-chart/scatter-chart.component';
import { ToDoChartComponent } from './builder/dashboardnew/gadgets/to-do-chart/to-do-chart.component';
import { ScheduleComponent } from './builder/dashboardnew/schedule/schedule.component';
import { SetupiconComponent } from './builder/setupicon/setupicon.component';
import { AddextensionComponent } from './fnd/extension/addextension/addextension.component';
import { AllextensionComponent } from './fnd/extension/allextension/allextension.component';
import { EditextensionComponent } from './fnd/extension/editextension/editextension.component';
import { ExtensionComponent } from './fnd/extension/extension.component';
import { DoughnutChartComponent } from './builder/dashboardnew/gadgets/doughnut-chart/doughnut-chart.component';
import { LineChartComponent } from './builder/dashboardnew/gadgets/line-chart/line-chart.component';
import { RadarChartComponent } from './builder/dashboardnew/gadgets/radar-chart/radar-chart.component';
import { BarChartComponent } from './builder/dashboardnew/gadgets/bar-chart/bar-chart.component';
import { BubbleChartComponent } from './builder/dashboardnew/gadgets/bubble-chart/bubble-chart.component';
import { DynamicChartComponent } from './builder/dashboardnew/gadgets/dynamic-chart/dynamic-chart.component';
import { ScatterChartComponent } from './builder/dashboardnew/gadgets/scatter-chart/scatter-chart.component';
import { PolarChartComponent } from './builder/dashboardnew/gadgets/polar-chart/polar-chart.component';
import { PieChartComponent } from './builder/dashboardnew/gadgets/pie-chart/pie-chart.component';
import { FinancialChartComponent } from './builder/dashboardnew/gadgets/financial-chart/financial-chart.component';
import { ToDoChartComponent } from './builder/dashboardnew/gadgets/to-do-chart/to-do-chart.component';
import { GridViewComponent } from './builder/dashboardnew/gadgets/grid-view/grid-view.component';
import { DashboardrunnerComponent } from './builder/dashboardrunner/dashboardrunner.component';
import { DashrunnerallComponent } from './builder/dashboardrunner/dashrunnerall/dashrunnerall.component';
import { DashrunnerlineComponent } from './builder/dashboardrunner/dashrunnerline/dashrunnerline.component';
import { BarRunnerComponent } from './builder/dashboardrunner/dashrunnerline/bar-runner/bar-runner.component';
import { LineRunnerComponent } from './builder/dashboardrunner/dashrunnerline/line-runner/line-runner.component';
import { BubbleRunnerComponent } from './builder/dashboardrunner/dashrunnerline/bubble-runner/bubble-runner.component';
import { DashrunnerlineComponent } from './builder/dashboardrunner/dashrunnerline/dashrunnerline.component';
import { DoughnutRunnerComponent } from './builder/dashboardrunner/dashrunnerline/doughnut-runner/doughnut-runner.component';
import { GridRunnerComponent } from './builder/dashboardrunner/dashrunnerline/grid-runner/grid-runner.component';
import { LineRunnerComponent } from './builder/dashboardrunner/dashrunnerline/line-runner/line-runner.component';
import { PieRunnerComponent } from './builder/dashboardrunner/dashrunnerline/pie-runner/pie-runner.component';
import { PolarRunnerComponent } from './builder/dashboardrunner/dashrunnerline/polar-runner/polar-runner.component';
import { RadarRunnerComponent } from './builder/dashboardrunner/dashrunnerline/radar-runner/radar-runner.component';
import { ScatterRunnerComponent } from './builder/dashboardrunner/dashrunnerline/scatter-runner/scatter-runner.component';
import { TodoRunnerComponent } from './builder/dashboardrunner/dashrunnerline/todo-runner/todo-runner.component';
import { BubbleRunnerComponent } from './builder/dashboardrunner/dashrunnerline/bubble-runner/bubble-runner.component';
import { ApiregisteryComponent } from './fnd/apiregistery/apiregistery.component';
import { BulkimportComponent } from './datamanagement/bulkimport/bulkimport.component';
import { BulkimportaddComponent } from './datamanagement/bulkimport/bulkimportadd/bulkimportadd.component';
import { BulkimportallComponent } from './datamanagement/bulkimport/bulkimportall/bulkimportall.component';
import { BulkimporteditComponent } from './datamanagement/bulkimport/bulkimportedit/bulkimportedit.component';
import { BulkimporteditlineComponent } from './datamanagement/bulkimport/bulkimporteditline/bulkimporteditline.component';
import { BulkimportlineComponent } from './datamanagement/bulkimport/bulkimportline/bulkimportline.component';
import { DatamanagementComponent } from './datamanagement/datamanagement/datamanagement.component';
import { DatamananementworkflowComponent } from './datamanagement/datamananementworkflow/datamananementworkflow.component';
import { BulkimportComponent } from './datamanagement/bulkimport/bulkimport.component';
import { BulkimportallComponent } from './datamanagement/bulkimport/bulkimportall/bulkimportall.component';
import { BulkimportaddComponent } from './datamanagement/bulkimport/bulkimportadd/bulkimportadd.component';
import { BulkimporteditComponent } from './datamanagement/bulkimport/bulkimportedit/bulkimportedit.component';
import { BulkimportlineComponent } from './datamanagement/bulkimport/bulkimportline/bulkimportline.component';
import { BulkimporteditlineComponent } from './datamanagement/bulkimport/bulkimporteditline/bulkimporteditline.component';
import { MappingruleComponent } from './datamanagement/mappingrule/mappingrule.component';
import { MappingruleallComponent } from './datamanagement/mappingrule/mappingruleall/mappingruleall.component';
import { MappingruleaddComponent } from './datamanagement/mappingrule/mappingruleadd/mappingruleadd.component';
import { MappingruleallComponent } from './datamanagement/mappingrule/mappingruleall/mappingruleall.component';
import { MappingruleeditComponent } from './datamanagement/mappingrule/mappingruleedit/mappingruleedit.component';
import { QueryComponent } from './superadmin/query/query.component';
import { QueryaddComponent } from './superadmin/queryadd/queryadd.component';
import { QueryeditComponent } from './superadmin/queryedit/queryedit.component';
@NgModule({
declarations: [
@ -134,7 +118,7 @@ import { MappingruleeditComponent } from './datamanagement/mappingrule/mappingru
DashboardnewComponent, EditformnewdashComponent, EditnewdashComponent, ScheduleComponent,
DoughnutChartComponent, LineChartComponent, RadarChartComponent, BarChartComponent, BubbleChartComponent, DynamicChartComponent, ScatterChartComponent, PolarChartComponent, PieChartComponent, FinancialChartComponent, ToDoChartComponent, GridViewComponent,
DashrunnerlineComponent, BarRunnerComponent, LineRunnerComponent, DoughnutRunnerComponent, GridRunnerComponent, PieRunnerComponent, PolarRunnerComponent, RadarRunnerComponent, ScatterRunnerComponent, TodoRunnerComponent, BubbleRunnerComponent,
ReportBuildComponent, ReportbuildeditComponent, ReportbuildqueryComponent, ReportBuild2Component, ReportBuild2editComponent,
ReportBuildComponent, ReportbuildeditComponent, ReportbuildqueryComponent, ReportBuild2Component, ReportBuild2editComponent, QueryComponent, QueryaddComponent, QueryeditComponent,
ExtensionComponent,
AllextensionComponent,
AddextensionComponent, EditextensionComponent, ApiregisteryComponent,
@ -145,8 +129,6 @@ import { MappingruleeditComponent } from './datamanagement/mappingrule/mappingru
],
imports: [
QRCodeModule,

View File

@ -0,0 +1,146 @@
@import '@swimlane/ngx-datatable/index.css';
@import '@swimlane/ngx-datatable/themes/bootstrap.css';
@import '@swimlane/ngx-datatable/assets/icons.css';
.button1::after {
content: none;
}
.button1:hover::after {
content: "ADD ROWS";
}
.delete, .heading {
text-align: center;
color: red;
}
.bold {
font-weight: bold;
}
.section p {
padding: 10px;
font-size: 18px;
}
.clr-input {
color: #212529;
border: 1px solid #ced4da;
border-radius: 0.25rem;
padding: 0.75rem 0.75rem;
margin-top: 3px;
width: 100%;
margin-bottom: 10px;
}
.required-field {
color: red;
font-size: 18px;
}
input[type=text], textarea {
width: 100%;
padding: 15px 15px;
background-color: rgb(255, 255, 255);
display: inline-block;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box;
}
html {
/* make sure we use up the whole viewport */
width: 100%;
min-height: 100vh;
}
body {
width: 100%;
background-color: gray;
}
ngx-datatable {
font-family: Metropolis, Avenir Next, Helvetica Neue, Arial, sans-serif;
font-size: 13px;
border: 1px solid #ccc;
border-radius: 2px;
padding: 0;
background-color: #fff;
}
ngx-datatable .datatable-header, ngx-datatable .datatable-footer {
font-size: 11px;
line-height: 18px;
font-weight: bold;
background-color: #fafafa;
}
ngx-datatable .datatable-header {
box-shadow: 0 2px 4px 0px #ccc;
}
ngx-datatable .datatable-header .datatable-header-cell {
line-height: 22px;
padding-left: 10px;
height: 22px;
}
ngx-datatable .datatable-header .datatable-header-cell:not(:first-child) {
border-left: 1px solid #ccc;
}
ngx-datatable .datatable-footer {
border-top: 1px solid #ccc;
}
ngx-datatable .datatable-footer .page-count {
margin: 10px;
}
ngx-datatable .datatable-footer .pages a {
padding: 8px;
color: inherit;
}
ngx-datatable .datatable-footer .pages.active a {
padding: 8px;
color: #007cbb;
background-color: rgb(221, 221, 221);
text-align: center;
}
ngx-datatable .datatable-header-inner {
padding: 12px;
}
ngx-datatable .datatable-body-cell {
padding: 8px 0 10px 20px;
border-top: 1px solid #ddd;
}
ngx-datatable .pager i {
font-size: 18px;
vertical-align: middle;
}
.postColumn {
border: 1px solid #ccc;
width: 78%;
margin-left: 15px;
}
.colName {
text-align: center;
padding: 5px;
}
.colfields {
border: 1px solid black;
margin: 17px;
text-align: center;
padding: 3px;
}
.fieldWrapper {
margin-top: 20px;
}
.center {
text-align: center;
}
select {
width: 100%;
padding: 5px 5px;
border: 1px solid #ccc;
border-radius: 4px;
}/*# sourceMappingURL=query.component.css.map */

View File

@ -0,0 +1 @@
{"version":3,"sources":["query.component.scss","query.component.css"],"names":[],"mappings":"AA8JQ,2CAAA;AACA,sDAAA;AACC,kDAAA;AA9JT;EACE,aAAA;ACEF;;ADAA;EACE,mBAAA;ACGF;;ADAA;EACE,kBAAA;EACA,UAAA;ACGF;;ADAA;EACE,iBAAA;ACGF;;ADCA;EAEE,aAAA;EACA,eAAA;ACCF;;ADEA;EACE,cAAA;EACA,yBAAA;EACA,sBAAA;EACA,wBAAA;EACA,eAAA;EACA,WAAA;EACA,mBAAA;ACCF;;ADWA;EACE,UAAA;EACF,eAAA;ACRA;;ADYA;EACE,WAAA;EACA,kBAAA;EAED,oCAAA;EACC,qBAAA;EACA,sBAAA;EACA,kBAAA;EACA,sBAAA;ACVF;;ADcA;EACI,2CAAA;EACA,WAAA;EACA,iBAAA;ACXJ;;ADaA;EACI,WAAA;EACA,sBAAA;ACVJ;;ADeA;EACE,uEAAA;EACA,eAAA;EACA,sBAAA;EACA,kBAAA;EACA,UAAA;EACA,sBAAA;ACZF;ADaE;EACE,eAAA;EACA,iBAAA;EACA,iBAAA;EACA,yBAAA;ACXJ;ADaE;EAEE,8BAAA;ACZJ;ADaI;EACE,iBAAA;EACA,kBAAA;EACA,YAAA;ACXN;ADcE;EACI,2BAAA;ACZN;ADeE;EACE,0BAAA;ACbJ;ADcI;EACE,YAAA;ACZN;ADcI;EACE,YAAA;EACA,cAAA;ACZN;ADcI;EACE,YAAA;EACA,cAAA;EACA,oCAAA;EACA,kBAAA;ACZN;ADgBE;EACE,aAAA;ACdJ;ADgBE;EACE,wBAAA;EACA,0BAAA;ACdJ;ADgBE;EACE,eAAA;EACA,sBAAA;ACdJ;;ADkBA;EACE,sBAAA;EACA,UAAA;EACA,iBAAA;ACfF;;ADiBA;EACE,kBAAA;EACA,YAAA;ACdF;;ADgBA;EACE,uBAAA;EACA,YAAA;EACA,kBAAA;EACA,YAAA;ACbF;;ADeA;EACE,gBAAA;ACZF;;ADcA;EACE,kBAAA;ACXF;;ADcA;EACE,WAAA;EACA,gBAAA;EACA,sBAAA;EACA,kBAAA;ACXF","file":"query.component.css"}

View File

@ -0,0 +1,637 @@
<ol class="breadcrumb breadcrumb-arrow font-trirong">
<li><a href="javascript://" [routerLink]="['/cns-portal/dashboard/order']"><clr-icon shape="home"></clr-icon></a></li>
<li><a href="javascript://"><clr-icon shape="crown"></clr-icon>Super Admin</a></li>
<li><a href="javascript://"> Query</a></li>
</ol>
<!-- <span style="float: right;">
<ng-template #n2><button type="submit" class="btn btn-primary" (click)="onBack()"><clr-icon shape="angle-double"></clr-icon></button></ng-template>
<button *ngIf="!backQuery " type="submit" class="btn btn-primary" (click)="onBack()"><clr-icon shape="angle" direction="down "></clr-icon></button></span>
<div *ngIf="backQuery"> -->
<div class="container">
<div class="clr-row">
<div class="clr-col-8">
<h3>SQL Worksheet-
<ng-template #no> <b>connection name</b></ng-template>
<b *ngIf="databaseName;else no" style="color:#0072a3 ;">{{databaseName}}</b>
<span class="label label-light-green p7" style="margin-top: .4em; display: inline; cursor: pointer;"
(click)="opendatabsemo()">switch</span>
<span class="label label-light-green p7" style="margin-top: .4em; display: inline; cursor: pointer;"
(click)="opencopym()">Add New</span>
</h3>
</div>
<div class="clr-col-4" style="text-align: right;">
<button mat-raised-button class="btn btn-primary" (click)="addTab(selectAfterAdding.checked)">
<clr-icon shape="plus"></clr-icon> new tab
</button>
<span #selectAfterAdding> </span>
</div>
</div>
<clr-tabs [selectedIndex]="selected.value" (selectedIndexChange)="selected.setValue($event)">
<clr-tab *ngFor="let tab of tabs; let index = index" [label]="tab">
<button clrTabLink>{{tab}}{{index+1}}</button>
<clr-tab-content *clrIfActive>
<div class="clr-row">
<div class="clr-col-8">
<!-- <h5> Contents for {{tab}}{{index+1}} tab </h5> -->
<div class="clr-row" style="padding-left: 10px;">
<div>
<!-- <label for="tags">
<span class="label label-light-green p7" style="margin-top: .4em; display: inline; cursor: pointer;" (click)="opentablemod()">Add Table</span>
</label> -->
<!-- <textarea type="text" id="sql_query" name="sql_query" cols="10" rows="3" placeholder="select table here"
name="selectedtable" [(ngModel)]="selectedtable" >
</textarea> -->
<clr-combobox-container>
<label>Table List</label>
<clr-combobox [(ngModel)]="selectedtable" name="selectedtable" clrMulti="true"
required>
<ng-container *clrOptionSelected="let selected;let i = alias">
{{selected}} <b>{{ getAliasedColumn(selected) }}</b>
<!-- <span *ngFor="let data of TableData">
<b *ngIf="data.tables == selected">{{data.alias}}</b></span> -->
</ng-container>
<clr-options>
<clr-option *clrOptionItems="let state of tableList" [clrValue]="state">
{{state}}
</clr-option>
</clr-options>
</clr-combobox>
</clr-combobox-container>
<!-- <select [(ngModel)]="selectedtable" name="selectedtable" (change)="opentcolmod($event.target.value)" class="clr-dropdown">
<option value="null">Choose Data Store</option>
<option *ngFor="let sub of tableList" [value]="sub">{{sub}}</option>
</select> -->
</div>
<div style="padding-top: 12px; padding-bottom: 0px;"><br><button class="btn btn-icon btn-sm btn-primary" style="margin-left: 5px;"
(click)="opentcolmod()"><clr-icon shape="step-forward-2"></clr-icon></button></div>
<div style="padding-top: 12px; padding-bottom: 0px;"><p *ngIf="msg" style="color: red;">{{msg}} </p></div>
</div>
<div class="clr-row" style="padding-left: 10px;">
<div>
<!-- <label for="tags" class="req"> <span class="label label-light-green p7" style="margin-top: .4em; display: inline; cursor: pointer;" (click)="opentcolmod()" >Add Select String</span></label> -->
<!-- <textarea type="text" id="sql_query" name="sql_query" cols="10" rows="3" placeholder="select string here"
name="selectedcol" [(ngModel)]="selectedcol" >
</textarea> -->
<clr-combobox-container>
<label>Column List</label>
<clr-combobox [(ngModel)]="selectedcol" name="selectedcol" clrMulti="true"
required>
<ng-container *clrOptionSelected="let selected">
<ng-container *ngIf="selected.indexOf('.') !== -1; else noDot">
<span class="bold">{{ selected.substr(0, selected.indexOf('.')) }}</span>{{ selected.substr(selected.indexOf('.')) }}
</ng-container>
<ng-template #noDot>
{{selected}}
</ng-template>
</ng-container>
<clr-options>
<clr-option *clrOptionItems="let state of collist" [clrValue]="state">
{{state}}
</clr-option>
</clr-options>
</clr-combobox>
</clr-combobox-container>
<!-- <button class="btn btn-icon btn-sm btn-primary" style="margin-left: 5px;" (click)="opentcolmod1()"><clr-icon shape="step-forward-2"></clr-icon></button> -->
</div>
<div style="padding-top: 12px; padding-bottom: 0px;"><br><button class="btn btn-icon btn-sm btn-primary" style="margin-left: 5px;" (click)="colname()"><clr-icon shape="step-forward-2"></clr-icon></button></div>
<div style="padding-top: 12px; padding-bottom: 0px;"><p *ngIf="msg1" style="color: red;">{{msg1}} </p></div>
</div>
<div class="clr-row" style="padding-left: 10px;">
<div>
<!-- <label for="tags" class="req">
<span class="label label-light-green p7" style="margin-top: .4em; display: inline; cursor: pointer;" (click)="opentcolmod1()" >Add Condition</span>
</label> -->
<!-- <textarea type="text" id="sql_query" name="sql_query" cols="10" rows="3" placeholder="select string here"
name="selectedcol" [(ngModel)]="selectedcol1" >
</textarea> -->
<clr-combobox-container>
<label>Condition List</label>
<clr-combobox [(ngModel)]="selectedcol1" name="selectedcol1" clrMulti="true"
required>
<ng-container *clrOptionSelected="let selected">
<span *ngFor="let data of conditionData">
<b *ngIf="data.fields_name == selected">{{data.andor}}</b></span>&nbsp;
<ng-container *ngIf="selected.indexOf('.') !== -1; else noDot">
<span class="bold">{{ selected.substr(0, selected.indexOf('.')) }}</span>{{ selected.substr(selected.indexOf('.')) }}
</ng-container>
<ng-template #noDot>
{{selected}}
</ng-template>
<span *ngFor="let data of conditionData">
<b *ngIf="data.fields_name == selected">{{data.condition}} {{data.value}}</b></span>
</ng-container>
<clr-options>
<clr-option *clrOptionItems="let state of collist" [clrValue]="state">
{{state}}
</clr-option>
</clr-options>
</clr-combobox>
<!-- <clr-control-helper>Helper text</clr-control-helper> -->
<!-- <clr-control-error>Select one mandatory</clr-control-error> -->
</clr-combobox-container>
</div>
<div style="padding-top: 12px; padding-bottom: 0px;"><br><button class="btn btn-icon btn-sm btn-primary" style="margin-left: 5px;" (click)="filter(selectedcol1)"><clr-icon shape="filter"></clr-icon></button></div>
<!-- <div style="padding-top: 12px; padding-bottom: 0px;"><p *ngIf="msg" style="color: red;">{{msg}} </p></div> -->
</div>
</div>
<div class="clr-col-4" style="text-align: right;">
<button mat-raised-button class="btn btn-primary" [disabled]="tabs.length === 1" (click)="removeTab(index)">
<clr-icon shape="trash"></clr-icon> {{tab}}{{index+1}}
</button>
</div>
</div>
<div class="container" style="margin-top: 20px;">
<div class="progressform">
<div class="clr-row">
</div>
<form [formGroup]="entryForm">
<div class="clr-row">
<div class="clr-col-md-6 clr-col-sm-12">
<label for="tags"> <span class="label label-light-green p7"
style="margin-top: .4em; display: inline; cursor: pointer;" (click)="openquerymod()">Add
Query</span>
</label>
<textarea type="text" id="sql_query" name="sql_query" formControlName="sql_query" cols="10" rows="3"
[(ngModel)]="selectedquery" placeholder="Enter Query here">
</textarea>
</div>
</div>
</form>
<span style="float: right;">
<button type="submit" class="btn btn-primary" (click)="savequery()">SAVE QUERY</button>
<button type="submit" class="btn btn-primary" (click)="onSubmit()">RUN</button>
</span><br>
<div>
<h4 style="font-weight: 300;display: inline;">Response</h4>
</div>
<hr>
<div class="clr-row" style="padding-top: 10px;">
<!-- <ngx-datatable
style='width:fit-content;'
[rows]="rows"
[columns]="columns"
class="bootstrap"
[loadingIndicator]="loadingIndicator"
[headerHeight]="40"
[summaryRow]="true"
[summaryPosition]="'bottom'"
[scrollbarV]="true"
[limit]="10"
[rowHeight]="40"
[reorderable]="reorderable" >
</ngx-datatable> -->
</div>
</div>
</div><br>
</clr-tab-content>
</clr-tab>
</clr-tabs>
</div>
<!-- </div> -->
<div class="container" style=" min-width: 1200px; max-height: 500px !important; overflow: auto;">
<table class="table" >
<thead>
<tr>
<th *ngFor="let co of getHeaders();let i=index">{{co}}</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let item of rows">
<td *ngFor="let key of getHeaders()">{{item[key]}}</td>
</tr>
</tbody>
</table>
</div>
<!-- <clr-datagrid [clrDgLoading]="loading">
<clr-dg-placeholder><ng-template #loadingSpinner><clr-spinner>Loading ... </clr-spinner></ng-template>
<div *ngIf="errorco;else loadingSpinner">{{errorco}}</div></clr-dg-placeholder>
<clr-dg-column *ngFor="let co of getHeaders()">
{{co}}
</clr-dg-column>
<clr-dg-row *ngFor="let item of rows">
<clr-dg-cell *ngFor="let key of getHeaders()">{{item[key]}}</clr-dg-cell>
</clr-dg-row>
<clr-dg-footer>
<clr-dg-pagination #pagination [clrDgPageSize]="5">
<clr-dg-page-size [clrPageSizeOptions]="[10,20,50,100]">Record per page</clr-dg-page-size>
{{pagination.firstItem + 1}} - {{pagination.lastItem + 1}}
of {{pagination.totalItems}} Records
</clr-dg-pagination>
</clr-dg-footer>
</clr-datagrid> -->
<clr-modal [(clrModalOpen)]="database" [clrModalSize]="'xl'">
<h3 class="modal-title"><b>Select Database</b></h3>
<div class="modal-body">
<div class="clr-row">
<div class="clr-col-md-12 clr-col-sm-12" style="margin-top: 8px;">
<input id="data" type="text" placeholder="Enter search Criteria" class="clr-input" name="searchtable"
[(ngModel)]="searchdatabase">
</div>
</div>
<clr-datagrid [clrDgLoading]="loading">
<clr-dg-placeholder><ng-template #loadingSpinner><clr-spinner>Loading ... </clr-spinner></ng-template>
<div *ngIf="errorco;else loadingSpinner">{{errorco}}</div>
</clr-dg-placeholder>
<clr-dg-column [clrDgField]="'id'"> <ng-container *clrDgHideableColumn="{hidden: false}">
No
</ng-container></clr-dg-column>
<clr-dg-column [clrDgField]="'name'"> <ng-container *clrDgHideableColumn="{hidden: false}">
Database Name
</ng-container></clr-dg-column>
<clr-dg-column [clrDgField]="'description'"> <ng-container *clrDgHideableColumn="{hidden: false}">
Description
</ng-container></clr-dg-column>
<clr-dg-column [clrDgField]="'active'"> <ng-container *clrDgHideableColumn="{hidden: false}">
Active
</ng-container></clr-dg-column>
<clr-dg-column [clrDgField]="'type'"> <ng-container *clrDgHideableColumn="{hidden: false}">
Type
</ng-container></clr-dg-column>
<clr-dg-column> <ng-container *clrDgHideableColumn="{hidden: false}"> <clr-icon shape="bars"></clr-icon>
Action
</ng-container></clr-dg-column>
<clr-dg-row *ngFor="let user of databaselist | filter:searchdatabase;let i = index">
<clr-dg-cell>{{i+1}}</clr-dg-cell>
<clr-dg-cell style="color: rgb(108, 108, 194); cursor: pointer;" (click)="databasename(user)">{{user.name}}</clr-dg-cell>
<clr-dg-cell>{{user.description}}</clr-dg-cell>
<clr-dg-cell>{{user.active}}</clr-dg-cell>
<clr-dg-cell id="word">{{user.type}}</clr-dg-cell>
<clr-dg-cell>
<span style="cursor: pointer;padding: 10px; "><clr-icon shape="trash" (click)="onDelete(user)" class="red is-error" style="color: red;"></clr-icon></span>
<!-- <span style="cursor: pointer;"><clr-icon shape="help" class="success" style="color: rgb(0, 130, 236);;"></clr-icon></span> -->
</clr-dg-cell>
<clr-dg-action-overflow>
<button class="action-item" (click)="goToEdit(user.id)">Edit <clr-icon shape="edit" class="is-error"></clr-icon></button>
<!-- <button class="action-item" (click)="onDelete(user)">Delete<clr-icon shape="trash" class="is-error"></clr-icon></button> -->
</clr-dg-action-overflow>
</clr-dg-row>
<clr-dg-footer>
<clr-dg-pagination #pagination [clrDgPageSize]="10">
<clr-dg-page-size [clrPageSizeOptions]="[10,20,50,100]">Record per page</clr-dg-page-size>
{{pagination.firstItem + 1}} - {{pagination.lastItem + 1}}
of {{pagination.totalItems}} Records
</clr-dg-pagination>
</clr-dg-footer>
</clr-datagrid>
</div>
</clr-modal>
<clr-modal [(clrModalOpen)]="table" [clrModalSize]="'lg'">
<h3 class="modal-title"><b>Select From Table List:</b></h3>
<div class="modal-body">
<div class="clr-row">
<div class="clr-col-md-12 clr-col-sm-12" style="margin-top: 8px;">
<input id="data" type="text" placeholder="Enter search Criteria" class="clr-input" name="searchtable"
[(ngModel)]="searchtable">
</div>
</div>
<clr-datagrid [clrDgLoading]="loading">
<clr-dg-placeholder><ng-template #loadingSpinner><clr-spinner>Loading ... </clr-spinner></ng-template>
<div *ngIf="errortb;else loadingSpinner">{{errortb}}</div>
</clr-dg-placeholder>
<clr-dg-column [clrDgField]="'id'"> <ng-container *clrDgHideableColumn="{hidden: false}">
No
</ng-container></clr-dg-column>
<clr-dg-column [clrDgField]="'tableList'"> <ng-container *clrDgHideableColumn="{hidden: false}">
Table Name
</ng-container></clr-dg-column>
<clr-dg-row *ngFor="let user of tableList | filter:searchtable;let i = index" [clrDgItem]="user">
<clr-dg-cell>{{i+1}}</clr-dg-cell>
<clr-dg-cell style="color: rgb(108, 108, 194);" (click)="tablename(user)">{{user}}</clr-dg-cell>
</clr-dg-row>
<clr-dg-footer>
<clr-dg-pagination #pagination [clrDgPageSize]="10">
<clr-dg-page-size [clrPageSizeOptions]="[10,20,50,100]">Users per page</clr-dg-page-size>
{{pagination.firstItem + 1}} - {{pagination.lastItem + 1}}
of {{pagination.totalItems}} Record
</clr-dg-pagination>
</clr-dg-footer>
</clr-datagrid>
</div>
</clr-modal>
<clr-modal [(clrModalOpen)]="col" [clrModalSize]="'lg'">
<h3 class="modal-title"><b>Select From Tables Columns List:</b></h3>
<div class="modal-body">
<div class="clr-row">
<div class="clr-col-md-12 clr-col-sm-12" style="margin-top: 8px;">
<input id="data" type="text" placeholder="Enter search Criteria" class="clr-input" name="searchtable"
[(ngModel)]="searchcol">
</div>
</div>
<clr-datagrid [clrDgLoading]="loading">
<clr-dg-placeholder><ng-template #loadingSpinner><clr-spinner>Loading ... </clr-spinner></ng-template>
<div *ngIf="errorcl;else loadingSpinner">{{errorcl}}</div>
</clr-dg-placeholder>
<clr-dg-column [clrDgField]="'id'"> <ng-container *clrDgHideableColumn="{hidden: false}">
No
</ng-container></clr-dg-column>
<clr-dg-column [clrDgField]="'tableList'"> <ng-container *clrDgHideableColumn="{hidden: false}">
Column Name
</ng-container></clr-dg-column>
<clr-dg-row *ngFor="let user of collist | filter:searchcol;let i = index">
<clr-dg-cell>{{i+1}}</clr-dg-cell>
<clr-dg-cell style="color: rgb(108, 108, 194);" (click)="colname(user)">{{user}}</clr-dg-cell>
</clr-dg-row>
<clr-dg-footer>
<clr-dg-pagination #pagination [clrDgPageSize]="10">
<clr-dg-page-size [clrPageSizeOptions]="[10,20,50,100]">Record per page</clr-dg-page-size>
{{pagination.firstItem + 1}} - {{pagination.lastItem + 1}}
of {{pagination.totalItems}} Records
</clr-dg-pagination>
</clr-dg-footer>
</clr-datagrid>
</div>
</clr-modal>
<clr-modal [(clrModalOpen)]="col1" [clrModalSize]="'lg'">
<h3 class="modal-title"><b>Select From Tables Columns List:</b></h3>
<div class="modal-body">
<div class="clr-row">
<div class="clr-col-md-12 clr-col-sm-12" style="margin-top: 8px;">
<input id="data" type="text" placeholder="Enter search Criteria" class="clr-input" name="searchtable"
[(ngModel)]="searchcol">
</div>
</div>
<clr-datagrid [clrDgLoading]="loading">
<clr-dg-placeholder><clr-spinner [clrMedium]="true">Loading ...</clr-spinner></clr-dg-placeholder>
<clr-dg-column [clrDgField]="'id'"> <ng-container *clrDgHideableColumn="{hidden: false}">
No
</ng-container></clr-dg-column>
<clr-dg-column [clrDgField]="'tableList'"> <ng-container *clrDgHideableColumn="{hidden: false}">
Column Name
</ng-container></clr-dg-column>
<clr-dg-row *ngFor="let user of collist | filter:searchcol;let i = index">
<clr-dg-cell>{{i+1}}</clr-dg-cell>
<clr-dg-cell style="color: rgb(108, 108, 194);" (click)="colname1(user)">{{user}}</clr-dg-cell>
</clr-dg-row>
<clr-dg-footer>
<clr-dg-pagination #pagination [clrDgPageSize]="10">
<clr-dg-page-size [clrPageSizeOptions]="[10,20,50,100]">Record per page</clr-dg-page-size>
{{pagination.firstItem + 1}} - {{pagination.lastItem + 1}}
of {{pagination.totalItems}} Records
</clr-dg-pagination>
</clr-dg-footer>
</clr-datagrid>
</div>
</clr-modal>
<clr-modal [(clrModalOpen)]="query" [clrModalSize]="'lg'">
<h3 class="modal-title"><b>Select Query:</b></h3>
<div class="modal-body">
<div class="clr-row">
<div class="clr-col-md-12 clr-col-sm-12" style="margin-top: 8px;">
<input id="data" type="text" placeholder="Enter search Criteria" class="clr-input" name="searchtable"
[(ngModel)]="searchquery">
</div>
</div>
<clr-datagrid [clrDgLoading]="loading">
<clr-dg-placeholder><clr-spinner [clrMedium]="true">Loading ...</clr-spinner></clr-dg-placeholder>
<clr-dg-column [clrDgField]="'id'"> <ng-container *clrDgHideableColumn="{hidden: false}">
No
</ng-container></clr-dg-column>
<clr-dg-column [clrDgField]="'query'"> <ng-container *clrDgHideableColumn="{hidden: false}">
Query
</ng-container></clr-dg-column>
<clr-dg-row *ngFor="let user of querydata | filter:searchquery;let i = index">
<clr-dg-cell>{{i+1}}</clr-dg-cell>
<clr-dg-cell style="color: rgb(108, 108, 194);"
(click)="selectquery(user.sql_query)">{{user.sql_query}}</clr-dg-cell>
</clr-dg-row>
<clr-dg-footer>
<clr-dg-pagination #pagination [clrDgPageSize]="10">
<clr-dg-page-size [clrPageSizeOptions]="[10,20,50,100]">Record per page</clr-dg-page-size>
{{pagination.firstItem + 1}} - {{pagination.lastItem + 1}}
of {{pagination.totalItems}} Records
</clr-dg-pagination>
</clr-dg-footer>
</clr-datagrid>
</div>
</clr-modal>
<clr-modal [(clrModalOpen)]="addmodal" [clrModalSize]="'lg'" [clrModalStaticBackdrop]="true">
<h3 class="modal-title"> Create New</h3>
<div class="modal-body">
<form [formGroup]="addForm" (ngSubmit)="onCreate()">
<div class="clr-row">
<div class="clr-col-md-6 clr-col-sm-12">
<label>Conn_String<span class="required-field">*</span></label>
<input type="text" formControlName="conn_string" class="clr-input">
</div>
<div class="clr-col-md-6 clr-col-sm-12">
<label>Username<span class="required-field">*</span></label>
<input type="text" formControlName="username" class="clr-input">
</div>
</div>
<div class="clr-row">
<div class="clr-col-md-6 clr-col-sm-12">
<label>Password<span class="required-field">*</span></label>
<input type="text" formControlName="password" class="clr-input">
</div>
<div class="clr-col-md-6 clr-col-sm-12">
<label>Driver_class_name<span class="required-field">*</span></label>
<input type="text" formControlName="driver_class_name" class="clr-input">
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-outline" (click)="addmodal = false">Cancel</button>
<button type="submit" class="btn btn-primary">Add</button>
</div>
</form>
</div>
</clr-modal>
<clr-modal [(clrModalOpen)]="filterModel" [clrModalSize]="'lg'" [clrModalStaticBackdrop]="true">
<h3 class="modal-title"> Condition Table</h3>
<div class="modal-body">
<form>
<div class="clr-row fieldWrapper" >
<div class="clr-col-12">
<table class="table table-striped table-bordered" style="margin-top: 0px;">
<thead>
<tr>
<th>ANDOR</th>
<th>FIELD NAME</th>
<th>CONDITION</th>
<th>VALUE</th>
<th class="right" style="width:125px;">Action</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let data of conditionData; let i = index">
<td ><select colspan="2" [(ngModel)]="data.andor" [ngModelOptions]="{standalone: true}" name="andor" class="clr-dropdown">
<option [ngValue]="null">Select Values</option>
<option *ngFor="let sub of andor" [ngValue]="sub">{{sub}}</option>
</select>
</td>
<!-- <td><input type="text" colspan="2" [(ngModel)]="data.alias" [ngModelOptions]="{standalone: true}" name="alias" class="clr-input"/></td> -->
<td><select colspan="2" [(ngModel)]="data.fields_name" [ngModelOptions]="{standalone: true}" name="fields_name" class="clr-dropdown">
<option [ngValue]="null">Select Field Name</option>
<!-- <option *ngFor="let sub of sourceTable" [ngValue]="sub">{{sub}}</option> -->
<option *ngFor="let item of collist" [ngValue]="item">{{item}}</option>
</select>
</td>
<td>
<select colspan="2" [(ngModel)]="data.condition" [ngModelOptions]="{standalone: true}" name="condition" class="clr-dropdown">
<option [ngValue]="null">Select Values</option>
<option *ngFor="let sub of condition" [ngValue]="sub">{{sub}}</option>
</select>
</td>
<td><input type="text" [(ngModel)]="data.value" [ngModelOptions]="{standalone: true}" name="value" class="clr-input"/></td>
<td style="width:40px;">
<a (click)="deleteRow(i)">
<clr-icon shape="trash" class="is-error"></clr-icon>
</a>
</td>
</tr>
</tbody>
<button type="button" class="btn btn-primary button1" (click)="onAddLines()">
<clr-icon shape="plus"></clr-icon>
</button>
</table>
</div>
</div>
<div class="center">
<button type="button" class="btn btn-outline" (click)="filterModel = false">Cancel</button>
<button type="submit" form-control class="btn btn-primary" (click)="onSelected()">Select</button>
<!-- <button type="button" form-control class="btn btn-primary" (click)="back()">Back</button> -->
</div>
</form>
</div>
</clr-modal>
<clr-modal [(clrModalOpen)]="columnModal" [clrModalSize]="'lg'" [clrModalStaticBackdrop]="true">
<h3 class="modal-title"> Column Table</h3>
<div class="modal-body">
<form>
<div class="clr-row fieldWrapper" >
<div class="clr-col-12">
<table class="table table-striped table-bordered" style="margin-top: 0px;">
<thead>
<tr>
<th>Column</th>
<th>Alias</th>
<th class="right" style="width:125px;">Action</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let data of columnData; let i = index">
<td >
<input type="text" [(ngModel)]="data.columns" [ngModelOptions]="{standalone: true}" name="columns" class="clr-input" readonly/>
<td><input type="text" [(ngModel)]="data.alias" [ngModelOptions]="{standalone: true}" name="alias" class="clr-input"/></td>
<td style="width:40px;">
<a (click)="deleteColRow(i)">
<clr-icon shape="trash" class="is-error"></clr-icon>
</a>
</td>
</tr>
</tbody>
<button type="button" class="btn btn-primary button1" (click)="onAddColLines()">
<clr-icon shape="plus"></clr-icon>
</button>
</table>
</div>
</div>
<div class="center">
<button type="submit" form-control class="btn btn-primary" (click)="onColSelected()">Select</button>
<!-- <button type="button" form-control class="btn btn-primary" (click)="back()">Back</button> -->
</div>
</form>
</div>
</clr-modal>
<!-- <clr-modal [(clrModalOpen)]="tableModal" [clrModalSize]="'lg'" [clrModalStaticBackdrop]="true">
<h3 class="modal-title"> Condition Table</h3>
<div class="modal-body">
<form>
<div class="clr-row fieldWrapper" >
<div class="clr-col-12">
<table class="table table-striped table-bordered" style="margin-top: 0px;">
<thead>
<tr>
<th>Table Name</th>
<th>Alias</th>
<th></th>
<th class="right" style="width:125px;">Action</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let data of TableData; let i = index">
<td >
<input type="text" [(ngModel)]="data.tables" [ngModelOptions]="{standalone: true}" name="columns" class="clr-input" readonly/>
<td><input type="text" [(ngModel)]="data.alias" [ngModelOptions]="{standalone: true}" name="alias" class="clr-input"/></td>
<td><button type="button" class="btn btn-primary" (click)="onTableSelected(data)">Add</button></td>
<td style="width:40px;">
<a (click)="deleteTableRow(i)">
<clr-icon shape="trash" class="is-error"></clr-icon>
</a>
</td>
</tr>
</tbody>
<button type="button" class="btn btn-primary button1" (click)="onAddTableLines()">
<clr-icon shape="plus"></clr-icon>
</button>
</table>
</div>
</div>
<div class="center">
<button type="submit" form-control class="btn btn-outline" (click)="tableModal = false">Cancel</button>
</div>
</form>
</div>
</clr-modal> -->
<clr-modal [(clrModalOpen)]="modaldelete" [clrModalSize]="'lg'" [clrModalStaticBackdrop]="true">
<div class="modal-body" *ngIf="rowSelected.id">
<h1 class="delete">Are You Sure Want to delete?</h1>
<h2 class="heading">{{rowSelected.id}}</h2>
<div class="modal-footer">
<button type="button" class="btn btn-outline" (click)="modaldelete = false">Cancel</button>
<button type="submit" (click)="delete(rowSelected.id)" class="btn btn-primary" >Delete</button>
</div>
</div>
</clr-modal>

View File

@ -0,0 +1,161 @@
$bg-color: #dddddd;
.button1::after {
content: none;
}
.button1:hover::after {
content: "ADD ROWS";
}
.delete,.heading{
text-align: center;
color: red;
}
.bold{
font-weight: bold;
}
.section p {
//color: white;
padding: 10px;
font-size: 18px;
}
.clr-input {
color: #212529;
border: 1px solid #ced4da;
border-radius: 0.25rem;
padding: 0.75rem 0.75rem;
margin-top: 3px;
width: 100%;
margin-bottom: 10px;
}
// input[type=text],[type=date],textarea {
// width: 60%;
// padding: 15px 15px;
// // margin: 8px 0;
// background-color:rgb(255, 255, 255);
// display: inline-block;
// border: 1px solid #ccc;
// border-radius: 4px;
// box-sizing: border-box;
// }
.required-field{
color: red;
font-size: 18px;
}
input[type=text],textarea {
width: 100%;
padding: 15px 15px;
// margin: 8px 0;
background-color:rgb(255, 255, 255);
display: inline-block;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box;
}
html {
/* make sure we use up the whole viewport */
width: 100%;
min-height: 100vh;
}
body {
width: 100%;
background-color: gray;
//min-height: 100vh; /* this helps with the sticky footer */
}
//Import classes from swimlane datatable
ngx-datatable {
font-family: Metropolis,Avenir Next,Helvetica Neue,Arial,sans-serif;
font-size:13px;
border:1px solid #ccc;
border-radius: 2px;
padding:0;
background-color: #fff;
.datatable-header, .datatable-footer {
font-size:11px;
line-height:18px;
font-weight:bold;
background-color:#fafafa;
}
.datatable-header{
//border-bottom: 2px solid #ccc;
box-shadow: 0 2px 4px 0px #ccc;
.datatable-header-cell{
line-height:22px;
padding-left:10px;
height:22px;
}
}
.datatable-header .datatable-header-cell:not(:first-child) {
border-left:1px solid #ccc;
}
.datatable-footer{
border-top: 1px solid #ccc;
.page-count{
margin: 10px;
}
.pages a{
padding:8px;
color:inherit;
}
.pages.active a{
padding:8px;
color:#007cbb;
background-color:rgb(221, 221, 221);
text-align: center;
}
}
.datatable-header-inner{
padding:12px;
}
.datatable-body-cell{
padding:8px 0 10px 20px;
border-top: 1px solid #ddd;
}
.pager i {
font-size:18px;
vertical-align: middle;
}
}
.postColumn{
border: 1px solid #ccc;
width: 78%;
margin-left: 15px;
}
.colName{
text-align: center;
padding: 5px;
}
.colfields{
border: 1px solid black;
margin: 17px;
text-align: center;
padding: 3px;
}
.fieldWrapper{
margin-top: 20px;
}
.center {
text-align: center;
}
select{
width: 100%;
padding: 5px 5px;
border: 1px solid #ccc;
border-radius: 4px;
}
// @import '@swimlane/ngx-datatable/index.css';
// @import '@swimlane/ngx-datatable/themes/bootstrap.css';
// @import '@swimlane/ngx-datatable/assets/icons.css';

View File

@ -0,0 +1,25 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { QueryComponent } from './query.component';
describe('QueryComponent', () => {
let component: QueryComponent;
let fixture: ComponentFixture<QueryComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [ QueryComponent ]
})
.compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(QueryComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@ -0,0 +1,536 @@
import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormControl, FormGroup } from '@angular/forms';
import { ReportBuilderService } from 'src/app/services/api/report-builder.service';
import { TableList } from '../../../../models/fnd/table-setup';
import { HttpClient } from '@angular/common/http';
import { ToastrService } from 'ngx-toastr';
import { ActivatedRoute, Router } from '@angular/router';
@Component({
selector: 'app-query',
templateUrl: './query.component.html',
styleUrls: ['./query.component.scss']
})
export class QueryComponent implements OnInit {
searchtable: any;
searchcol: any;
columns: any[];
table: boolean = false;
database: boolean = false;
query: boolean = false;
public entryForm: FormGroup;
public addForm: FormGroup;
addmodal: boolean = false;
query2: string;
rows: any[];
loading = false;
tableList: TableList[];
databaselist = [];
collist;
search: any;
selectedtable: any[];
selectedcol: any[];
selectedcol1: any[];
selectedtablequery;
selectcolquery;
selectedquery;
backQuery = true;
searchquery;
col: boolean = false;
col1: boolean = false;
searchdatabase;
selecteddatabase;
msg;
querydata;
errorco;
errortb;
errorcl;
loadingIndicator = true; reorderable = true;
filterModel = false;
conditionData = [];
andor = ['AND', 'OR', 'NOT'];
fieldname = ['name1', 'name2'];
condition = ['=', '!=', '<', '>', '<=', '>=', 'LIKE', 'BETWEEN', 'IN'];
alias = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];
tabs = ['Tab', 'Tab',];
selected = new FormControl(0);
constructor(private _fb: FormBuilder, private router: Router,
private route: ActivatedRoute,
private reportBuilderService: ReportBuilderService, private toastr: ToastrService,) { }
ngOnInit(): void {
this.entryForm = this._fb.group({
sql_query: [null],
});
this.addForm = this._fb.group({
conn_string: [null],
username: [null],
password: [null],
driver_class_name: [null],
})
// this.listofTables();
}
listoddatabase() {
this.reportBuilderService.getdatabse().subscribe((data) => {
this.databaselist = data;
console.log('databse list ', this.databaselist)
if (this.databaselist.length == 0) {
this.errorco = "No data Available";
}
}, (error) => {
console.log(error);
if (error) {
this.errorco = "No data Available";
}
});
}
listofTables(val) {
this.reportBuilderService.getTableListn(val).subscribe(data => {
// console.log("table list "+data);
this.tableList = data;
console.log('table list ', this.tableList);
}, (error) => {
console.log(error);
if (error) {
this.errortb = "No data Available";
}
})
}
msg1;
finalColList: any[] = [];
listofcol(val) {
console.log(this.selectedtable);
console.log(this.selectedcol);
console.log(this.selectedcol1);
const tableString = JSON.stringify(val);
console.log(tableString);
const array = Array.of(val); // Using the Array constructor
console.log(array);
console.log(val);
// this.reportBuilderService.getcolListn(this.name[1],val).subscribe((data)=>{
// this.reportBuilderService.getColumnList(this.name[1],array).subscribe((data)=>{
this.reportBuilderService.getAllColumnsFromAllTables(array).subscribe((data) => {
console.log(data);
this.collist = data;
// this.finalColList.push(data);
// this.finalColList.push(this.collist)
if (this.selectedtable == null) {
this.msg = 'Plz First Select Table'
} else {
this.msg = "";
}
//console.log(this.collist);
}, (error) => {
console.log(error);
if (error) {
this.errorcl = "No data Available";
}
})
}
listofquery() {
this.reportBuilderService.getall().subscribe((data) => {
this.querydata = data;
console.log(this.querydata)
})
}
rowdata;
onSubmit() {
this.backQuery = false;
this.query2 = this.entryForm.value.sql_query;
console.log(this.query2);
this.reportBuilderService.getMasterData(this.query2).subscribe((data) => {
this.rows = data;
console.log(this.rows);
this.rowdata = [this.rows];
console.log(typeof this.rows);
if (data) {
this.toastr.success("Run Successfully")
}
var j;
var cart = [];
for (var i = 0; i < data.length; i++) {
var columnsIn = data[i];
if (i == 1) {
for (var key in columnsIn) {
j = { prop: key, name: key };
cart.push(j)
}
}
}
this.columns = cart;
});
}
getHeaders() {
let headers: string[] = [];
if (this.rows) {
this.rows.forEach((value) => {
Object.keys(value).forEach((key) => {
if (!headers.find((header) => header == key)) {
headers.push(key)
}
})
})
}
return headers;
}
savequery() {
//this.query2=this.entryForm.value.sql_query;
console.log(this.entryForm.value);
this.reportBuilderService.saveq(this.entryForm.value).subscribe((data) => {
console.log(data);
})
}
//tab
addTab(selectAfterAdding: boolean) {
this.tabs.push('Tab');
if (selectAfterAdding) {
this.selected.setValue(this.tabs.length - 1);
}
}
removeTab(index: number) {
this.tabs.splice(index, 1);
}
opendatabsemo() {
this.database = true;
this.listoddatabase();
}
name;
databaseName;
databasename(val) {
console.log(val);
this.databaseName = val.name;
this.selecteddatabase = val.conn_string;
console.log('selected databse ', this.selecteddatabase);
// this.selecteddatabase.substring(0,this.selecteddatabase.indexOf(':3306/'))
// console.log(this.selecteddatabase);
this.name = this.selecteddatabase.split(":3306/");
console.log(this.name[1]);
this.database = false;
this.listofTables(this.name[1])
}
opentablemod() {
this.table = true;
// this.listofTables();
}
tablename(value) {
console.log(value);
this.selectedtable = value;
this.table = false;
}
tableModal = false;
TableData;
opentcolmod() {
// this.col=true;
if (this.selectedtable == null) {
this.msg = 'Plz First Select Table'
} else {
this.msg = "";
// this.tableModal = true;
}
this.listofcol(this.selectedtable)
if (Array.isArray(this.selectedtable) || this.selectedtable === undefined) {
const selectedTables = this.selectedtable.map((table, index) => {
const alias = String.fromCharCode(97 + (index % 26)); // Generate aliases starting from 'a'
console.log(alias, table);
return `${table} ${alias}`;
}).join(',');
console.log(selectedTables);
// const selectedTables = this.TableData.map(({ alias, tables }) => `${tables} ${alias}`).join(',');
// console.log(selectedTables);
this.selectedtablequery = `SELECT * FROM ${selectedTables} WHERE 1=1`;
console.log(this.selectedtablequery);
// You can perform further actions with the generated SQL query
} else {
this.selectedtablequery = '';
console.log(this.selectedtablequery);
// You can perform further actions with the generated SQL query
}
this.selectedquery = this.selectedtablequery;
// const defaultObject = {
// alias: "",
// }
// const objectArray = this.selectedtable.map(value => ({
// ...defaultObject,
// tables: value,
// }));
// console.log(objectArray);
// const data = JSON.stringify(objectArray);
// try {
// this.TableData = JSON.parse(data);
// console.log('Received data:', this.TableData );
// } catch (e) { console.error('Invalid JSON:', data);}
}
onAddTableLines() {
this.TableData.push({
tables: "",
alias: "",
});
}
deleteTableRow(index) {
this.TableData.splice(index, 1);
}
opentcolmod1() {
// this.col1=true;
this.listofcol(this.selectedtable)
}
columnModal = false;
columnData;
colname() {
this.columnModal = true;
//column filter
const defaultObject = {
alias: "",
}
const objectArray = this.selectedcol.map(value => ({
...defaultObject,
columns: value,
}));
console.log(objectArray);
const data = JSON.stringify(objectArray);
try {
this.columnData = JSON.parse(data);
console.log('Received data:', this.columnData);
} catch (e) { console.error('Invalid JSON:', data); }
}
onAddColLines() {
this.columnData.push({
columns: "",
alias: "",
});
}
deleteColRow(index) {
this.columnData.splice(index, 1);
}
onColSelected() {
// console.log(col);
// this.selectedcol=col;
this.col = false;
this.columnModal = false;
if (Array.isArray(this.columnData)) {
// const selectedColumns = this.columnData.join(',');
//for column
const selectedColumns = this.columnData.map(({ alias, columns }) => `${columns} as ${alias}`).join(',');
console.log(selectedColumns);
//for table
const selectedTables = this.selectedtable.map((table, index) => {
const alias = String.fromCharCode(97 + (index % 26)); // Generate aliases starting from 'a'
console.log(alias, table);
return `${table} ${alias}`;
}).join(',');
console.log(selectedTables);
// const selectedTables = this.TableData.map(({ alias, tables }) => `${tables} ${alias}`).join(',');
// console.log(selectedTables);
this.selectcolquery = `SELECT ${selectedColumns} FROM ${selectedTables} WHERE 1=1`;
console.log(this.selectcolquery);
// You can perform further actions with the generated SQL query
} else if (Array.isArray(this.selectedtable)) {
//for table
const selectedTables = this.selectedtable.map((table, index) => {
const alias = String.fromCharCode(97 + (index % 26)); // Generate aliases starting from 'a'
console.log(alias, table);
return `${table} ${alias}`;
}).join(',');
console.log(selectedTables);
this.selectcolquery = `SELECT * FROM ${selectedTables} WHERE 1=1`;
console.log(this.selectcolquery);
// You can perform further actions with the generated SQL query
} else {
// if(this.selectedtable==null){
// this.msg1='Plz First Select Table'
// }else{
// this.msg1="";
// }
}
this.selectedquery = this.selectcolquery;
}
colname1() {
// console.log(col);
// this.selectedcol1=col;
// this.col1=false;
// this.listofquery();
}
openquerymod() {
this.query = true;
this.listofquery();
}
selectquery(val) {
console.log(val);
this.selectedquery = val;
this.query = false;
}
opencopym() {
this.router.navigate(["../queryadd"], { relativeTo: this.route });
// this.addmodal=true;
}
onCreate() {
console.log(this.addForm.value);
this.reportBuilderService.createdb(this.addForm.value).subscribe((data) => {
console.log(data);
})
}
// onSelectedChanged(selected){
// this.selectedTableData = this.tableList.filter(item => item.selected);
// }
conditionVal;
filter(val) {
this.filterModel = true;
this.conditionVal = val;
const defaultObject = {
andor: "AND",
// alias: "",
condition: "=",
value: "",
}
const objectArray = this.conditionVal.map(value => ({
...defaultObject,
fields_name: value,
}));
console.log(objectArray);
const data = JSON.stringify(objectArray);
try {
this.conditionData = JSON.parse(data);
console.log('Received data:', this.conditionData);
} catch (e) { console.error('Invalid JSON:', data); }
}
onAddLines() {
this.conditionData.push({
andor: "AND",
fields_name: "",
condition: "=",
value: ""
});
}
deleteRow(index) {
this.conditionData.splice(index, 1);
}
filteredConditionData;
filterAndor;
filtercondlvalue;
onSelected() {
this.filterModel = false;
console.log(this.conditionData);
let formattedString = '';
for (const condition of this.conditionData) {
const { andor, fields_name, condition: cond, value } = condition;
formattedString += `${andor} ${fields_name} ${cond} '${value}'`;
this.filterAndor = andor;
this.filtercondlvalue = cond + ' ' + value;
}
// this.getConditionBeforeColumn(this.selectedcol1)
// this.getConditionAfterColumn(this.selectedcol1);
console.log(formattedString);
this.filteredConditionData = formattedString
if (this.selectcolquery !== undefined) {
const mQuery = this.selectcolquery + ' ' + formattedString;
console.log(mQuery);
this.selectedquery = mQuery;
} else {
const mQuery = this.selectedtablequery + ' ' + formattedString;
console.log(mQuery);
this.selectedquery = mQuery;
}
}
// getConditionBeforeColumn(selected: any){
// return this.filterAndor;
// }
// getConditionAfterColumn(selected: any){
// return this.filtercondlvalue
// }
onBack() {
// this.backQuery = true;
}
getAliasedColumn(selected: string) {
const index = this.selectedtable.findIndex(item => item === selected);
const alphabet = 'abcdefghijklmnopqrstuvwxyz';
const aliasIndex = index % alphabet.length; // Calculate the index based on the remainder
const repeatedAlias = alphabet.charAt(aliasIndex);
return repeatedAlias;
// const index = this.selectedtable.findIndex(item => item === selected);
// return this.alias[index];
}
//
goToEdit(id) {
this.router.navigate(["../queryedit/" + id], { relativeTo: this.route });
}
rowSelected: any = {};
modaldelete = false;
onDelete(row) {
this.rowSelected = row;
this.modaldelete = true;
}
delete(id) {
this.modaldelete = false;
console.log("in delete " + id);
this.reportBuilderService.deleteSqlModel(id).subscribe(
(data) => {
console.log(data);
this.listoddatabase();
if (data) {
this.toastr.success('Deleted successfully');
}
},
(error) => {
console.log('Error in adding data...', +error);
if (isNaN(error)) {
this.toastr.success('Deleted successfully');
} else {
this.toastr.error('Not Deleted Data Getting Some Error');
}
this.listoddatabase();
}
);
}
}

View File

@ -0,0 +1,75 @@
.s-info-bar {
display: flex;
flex-direction: row;
justify-content: space-between;
}
.s-info-bar button {
outline: none;
}
.entry-pg {
width: 750px;
}
.button1::after {
content: none;
}
.button1:hover::after {
content: "ADD ROWS";
}
.section {
background-color: #dddddd;
height: 40px;
}
.section p {
font-weight: bold;
padding: 10px;
font-size: 18px;
}
.clr-input {
color: #212529;
border: 1px solid #ced4da;
border-radius: 0.25rem;
padding: 0.75rem 0.75rem;
margin-top: 3px;
width: 100%;
margin-bottom: 10px;
}
.clr-file {
color: #212529;
border: 1px solid #ced4da;
border-radius: 0.25rem;
margin-top: 3px;
width: 100%;
margin-bottom: 10px;
}
.center {
text-align: center;
}
input[type=text], [type=date], textarea {
width: 100%;
padding: 15px 15px;
background-color: rgb(255, 255, 255);
display: inline-block;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box;
}
.required-field {
color: red;
}
select {
width: 100%;
padding: 5px 5px;
border: 1px solid #ccc;
border-radius: 4px;
}/*# sourceMappingURL=queryadd.component.css.map */

View File

@ -0,0 +1 @@
{"version":3,"sources":["queryadd.component.scss","queryadd.component.css"],"names":[],"mappings":"AACA;EACI,aAAA;EACA,mBAAA;EACA,8BAAA;ACAJ;ADCI;EACE,aAAA;ACCN;;ADGE;EACE,YAAA;ACAJ;;ADGE;EACE,aAAA;ACAJ;;ADEE;EACE,mBAAA;ACCJ;;ADIE;EACE,yBAHS;EAIT,YAAA;ACDJ;;ADIE;EAEE,iBAAA;EACA,aAAA;EACA,eAAA;ACFJ;;ADKE;EACE,cAAA;EACA,yBAAA;EACA,sBAAA;EACA,wBAAA;EACA,eAAA;EACA,WAAA;EACA,mBAAA;ACFJ;;ADKE;EACE,cAAA;EACA,yBAAA;EACA,sBAAA;EAEA,eAAA;EACA,WAAA;EACA,mBAAA;ACHJ;;ADME;EACE,kBAAA;ACHJ;;ADKE;EACE,WAAA;EACA,kBAAA;EAED,oCAAA;EACC,qBAAA;EACA,sBAAA;EACA,kBAAA;EACA,sBAAA;ACHJ;;ADME;EACE,UAAA;ACHJ;;ADME;EACE,WAAA;EACA,gBAAA;EACA,sBAAA;EACA,kBAAA;ACHJ","file":"queryadd.component.css"}

View File

@ -0,0 +1,130 @@
<h4 style="font-weight: 300;display: inline;"><b> Add Database</b></h4>
<span class="label label-light-blue" style="display: inline;margin-left: 10px;">Add Mode</span><br>
<hr>
<div class="container">
<!-- entry form-->
<form [formGroup]="entryForm"><!-- (ngSubmit)="onSubmit()"-->
<div class="clr-row">
<div class="clr-col-md-4 clr-col-sm-12">
<label for="projectName">Name</label>
<input id="projectName" type="text" formControlName="name" placeholder="Enter Name"
class="clr-input" required>
</div>
<div class="clr-col-md-4 clr-col-sm-12">
<label for="technologyStack">Type</label>
<select formControlName="type" class="clr-dropdown">
<option [ngValue]="null">Choose Technology</option>
<option *ngFor="let item of type" [ngValue]="item">{{item}}</option>
</select>
</div>
</div>
<div class="clr-row">
<div class="clr-col-md-4 clr-col-sm-12">
<label for="description">Description (optional)</label>
<textarea id="" cols="10" rows="2" name=" remarks" formControlName="description" placeholder="Enter Description">
</textarea>
</div>
<div class="clr-col-md-4 clr-col-sm-12">
<label for="workflow_name">Active</label>
<input type="checkbox" formControlName="active" clrToggle value="billable" name="billable" />
</div>
</div>
<div style="margin-top: 40px;">
<h4 style="font-weight: 300;display: inline;"> Configurations</h4>
</div>
<!-- <div class="clr-row">
<div class="clr-col-6">These configurations default to repositories setups.</div>
<div class="clr-col-6" style=" display: flex; justify-content: flex-end;"><button (click)="testConnection()" class="btn btn-primary">Test Connection</button></div>
</div> -->
<hr>
<div class="clr-row">
<div class="clr-col-md-4 clr-col-sm-12">
<label for="projectPrefix">Driver class Name</label>
<input type="text" formControlName="driver_class_name" placeholder="Enter Driver class Name" class="clr-input">
</div>
<div class="clr-col-md-4 clr-col-sm-12">
<label for="projectPrefix">Connection String</label>
<input type="text" formControlName="conn_string" placeholder="Enter connection string" class="clr-input">
</div>
<!-- <div class="clr-col-md-4 clr-col-sm-12">
<label for="portNumber">Port Number</label>
<input colspan="2" type="text" formControlName="portnumber" readonly class="clr-input">
</div> -->
<div class="clr-col-md-4 clr-col-sm-12">
<label for="projectPrefix">Username</label>
<input type="text" formControlName="username" placeholder="Enter Username" class="clr-input">
</div>
<div class="clr-col-md-4 clr-col-sm-12">
<label for="dbPassword">Password</label>
<input type="text" formControlName="password" placeholder="Enter Password" class="clr-input">
</div>
<!-- <div class="clr-col-md-4 clr-col-sm-12">
<label for="workflow_name">Connect Through SSH</label>
<input type="checkbox" formControlName="connectssh" clrToggle value="billable" name="billable" />
</div>
<div class="clr-col-md-4 clr-col-sm-12">
<label for="projectPrefix">SSH Host Name</label>
<input type="text" formControlName="ssh_host_name" placeholder="Enter Host Name" class="clr-input">
</div>
<div class="clr-col-md-4 clr-col-sm-12">
<label for="projectPrefix">SSH User Name</label>
<input type="text" formControlName="ssh_user_name" placeholder="Enter SSH Username" class="clr-input">
</div>
<div class="clr-col-md-4 clr-col-sm-12">
<label for="dbPassword">SSH Password</label>
<input type="text" formControlName="ssh_password" placeholder="Enter SSH Password" class="clr-input">
</div>
<div class="clr-col-md-4 clr-col-sm-12">
<label for="dbPassword">SSH Key File</label><br>
<input type="file" formControlName="ssh_file_key" (change)="onFileChanged($event)" placeholder="Enter Database Password" required>
</div> -->
</div>
<div class="center">
<div class="btn-group">
<div class="checkbox btn">
<input type="checkbox" id="btn-demo-check-1" (click)="goback()"/>
<label for="btn-demo-check-1">Cancel</label>
</div>
<!-- <div class="checkbox btn">
<input type="checkbox" id="btn-demo-check-2" checked (click)="onSubmit()"/>
<label for="btn-demo-check-2">Submit</label>
</div> -->
</div>
<button type="submit" class="btn btn-primary" [disabled]="!entryForm.valid" (click)="onSubmit()">SUBMIT</button>
</div>
</form>
</div>

View File

@ -0,0 +1,80 @@
//@import "../../../../assets/scss/var";
.s-info-bar {
display: flex;
flex-direction: row;
justify-content: space-between;
button {
outline: none;
}
}
.entry-pg {
width: 750px;
}
.button1::after {
content: none;
}
.button1:hover::after {
content: "ADD ROWS";
}
$bg-color: #dddddd;
.section {
background-color: $bg-color;
height: 40px;
}
.section p {
//color: white;
font-weight: bold;
padding: 10px;
font-size: 18px;
}
.clr-input {
color: #212529;
border: 1px solid #ced4da;
border-radius: 0.25rem;
padding: 0.75rem 0.75rem;
margin-top: 3px;
width: 100%;
margin-bottom: 10px;
}
.clr-file {
color: #212529;
border: 1px solid #ced4da;
border-radius: 0.25rem;
//padding: 0.6rem 0.75rem;
margin-top: 3px;
width: 100%;
margin-bottom: 10px;
}
.center {
text-align: center;
}
input[type=text],[type=date],textarea {
width: 100%;
padding: 15px 15px;
// margin: 8px 0;
background-color:rgb(255, 255, 255);
display: inline-block;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box;
}
.required-field{
color: red;
}
select{
width: 100%;
padding: 5px 5px;
border: 1px solid #ccc;
border-radius: 4px;
}

View File

@ -0,0 +1,25 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { QueryaddComponent } from './queryadd.component';
describe('QueryaddComponent', () => {
let component: QueryaddComponent;
let fixture: ComponentFixture<QueryaddComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [ QueryaddComponent ]
})
.compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(QueryaddComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@ -0,0 +1,92 @@
import { HttpErrorResponse, HttpHeaderResponse } from '@angular/common/http';
import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup } from '@angular/forms';
import { ActivatedRoute, Router } from '@angular/router';
import { ToastrService } from 'ngx-toastr';
import { ReportBuilderService } from 'src/app/services/api/report-builder.service';
@Component({
selector: 'app-queryadd',
templateUrl: './queryadd.component.html',
styleUrls: ['./queryadd.component.scss']
})
export class QueryaddComponent implements OnInit {
public entryForm: FormGroup;
selectedFile: File[] = [];
type = ["MYSQL", "postgresql", "mysqllite", "oracle", "Snowflake", "BigQuery", "RedShift", "microsoft sql server", "redis", "maria_db", "MongoDB", "firebase", "dynamodb", "ibm DB2", "couchbase", "ElasticSearch", "Casandra", "OrientDB", "Neo4j", "FireBird"];
constructor(private _fb: FormBuilder, private router: Router, private toastr: ToastrService,
private route: ActivatedRoute, private reportBuilderService: ReportBuilderService,) { }
ngOnInit(): void {
this.entryForm = this._fb.group({
name: [null],
type: [null],
description: [null],
active: [null],
driver_class_name: [null],
conn_string: [null],
username: [null],
password: [null],
});
}
public onFileChanged(event) {
//Select File
console.log(event);
this.selectedFile = event.target.files[0];
//for (var i = 0; i < event.target.files.length; i++) {
// var name = event.target.files[i].name;
// var type = event.target.files[i].type;
// var size = event.target.files[i].size;
// var modifiedDate = event.target.files[i].lastModifiedDate;
// this.selectedFile.push(event.target.files[i]);
//}
}
toastrShown: boolean = false;
onSubmit() {
console.log(this.entryForm.value);
this.reportBuilderService.createdb(this.entryForm.value).subscribe((data) => {
console.log(data);
if (data) {
if (!this.toastrShown) {
this.toastrShown = true; // Set the flag to indicate that the toastr message has been shown
this.toastr.success("Added Successfully");
setTimeout(() => {
// this.router.navigate(["../query"], { relativeTo: this.route });
this.router.navigate([".."], { relativeTo: this.route });
}, 500);
}
}
}, (error: HttpErrorResponse) => {
console.log(error);
if (error.status === 202) {
this.toastr.success("Added Succesfully");
}
if (error.status === 404) {
this.toastr.error("Not Added");
}
if (error.status === 400) {
this.toastr.error("Not Added");
}
});
setTimeout(() => {
// this.router.navigate(["../query"], { relativeTo: this.route });
this.router.navigate([".."], { relativeTo: this.route });
}, 500);
}
goback() {
this.router.navigate(["../query"], { relativeTo: this.route });
}
// testConnection(){
// this.dataservice.testConnection(this.entryForm.value.data_source_type, this.entryForm.value.user_name, this.entryForm.value.password, this.entryForm.value.portnumber, this.entryForm.value.db_host_name).subscribe((data)=> {
// console.log(data);
// this.toastr.success('Test Connection successfully');
// },(err) => {
// console.log(err);
// this.toastr.error('Test Connection Failed');
// });
// }
}

View File

@ -0,0 +1,75 @@
.s-info-bar {
display: flex;
flex-direction: row;
justify-content: space-between;
}
.s-info-bar button {
outline: none;
}
.entry-pg {
width: 750px;
}
.button1::after {
content: none;
}
.button1:hover::after {
content: "ADD ROWS";
}
.section {
background-color: #dddddd;
height: 40px;
}
.section p {
font-weight: bold;
padding: 10px;
font-size: 18px;
}
.clr-input {
color: #212529;
border: 1px solid #ced4da;
border-radius: 0.25rem;
padding: 0.75rem 0.75rem;
margin-top: 3px;
width: 100%;
margin-bottom: 10px;
}
.clr-file {
color: #212529;
border: 1px solid #ced4da;
border-radius: 0.25rem;
margin-top: 3px;
width: 100%;
margin-bottom: 10px;
}
.center {
text-align: center;
}
input[type=text], [type=date], textarea {
width: 100%;
padding: 15px 15px;
background-color: rgb(255, 255, 255);
display: inline-block;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box;
}
.required-field {
color: red;
}
select {
width: 100%;
padding: 5px 5px;
border: 1px solid #ccc;
border-radius: 4px;
}/*# sourceMappingURL=queryedit.component.css.map */

View File

@ -0,0 +1 @@
{"version":3,"sources":["queryedit.component.scss","queryedit.component.css"],"names":[],"mappings":"AACA;EACI,aAAA;EACA,mBAAA;EACA,8BAAA;ACAJ;ADCI;EACE,aAAA;ACCN;;ADGE;EACE,YAAA;ACAJ;;ADGE;EACE,aAAA;ACAJ;;ADEE;EACE,mBAAA;ACCJ;;ADIE;EACE,yBAHS;EAIT,YAAA;ACDJ;;ADIE;EAEE,iBAAA;EACA,aAAA;EACA,eAAA;ACFJ;;ADKE;EACE,cAAA;EACA,yBAAA;EACA,sBAAA;EACA,wBAAA;EACA,eAAA;EACA,WAAA;EACA,mBAAA;ACFJ;;ADKE;EACE,cAAA;EACA,yBAAA;EACA,sBAAA;EAEA,eAAA;EACA,WAAA;EACA,mBAAA;ACHJ;;ADME;EACE,kBAAA;ACHJ;;ADKE;EACE,WAAA;EACA,kBAAA;EAED,oCAAA;EACC,qBAAA;EACA,sBAAA;EACA,kBAAA;EACA,sBAAA;ACHJ;;ADME;EACE,UAAA;ACHJ;;ADME;EACE,WAAA;EACA,gBAAA;EACA,sBAAA;EACA,kBAAA;ACHJ","file":"queryedit.component.css"}

View File

@ -0,0 +1,127 @@
<h4 style="font-weight: 300;display: inline;"><b>Database</b></h4>
<span class="label label-light-blue" style="display: inline;margin-left: 10px;">Edit Mode</span><br>
<hr>
<div class="container">
<!-- entry form-->
<form>
<div class="clr-row">
<div class="clr-col-md-4 clr-col-sm-12">
<label for="projectName">Name</label>
<input id="projectName" type="text" name="name" [(ngModel)]="tdata.name" placeholder="Enter Name"
class="clr-input" required>
</div>
<div class="clr-col-md-4 clr-col-sm-12">
<label for="technologyStack">Type</label>
<select name="type" class="clr-dropdown" [(ngModel)]="tdata.type">
<option [ngValue]="null">Choose Technology</option>
<option *ngFor="let item of type" [ngValue]="item">{{item}}</option>
</select>
</div>
</div>
<div class="clr-row">
<div class="clr-col-md-4 clr-col-sm-12">
<label for="description">Description (optional)</label>
<textarea id="" cols="10" rows="2" [(ngModel)]="tdata.description" name="description" placeholder="Enter Description">
</textarea>
</div>
<div class="clr-col-md-4 clr-col-sm-12">
<label for="workflow_name">Active</label>
<input type="checkbox" name="active" clrToggle [(ngModel)]="tdata.active"/>
</div>
</div>
<div style="margin-top: 40px;">
<h4 style="font-weight: 300;display: inline;"> Configurations</h4>
</div>
<!-- These configurations default to repositories setups. -->
<hr>
<div class="clr-row">
<div class="clr-col-md-4 clr-col-sm-12">
<label for="projectPrefix">Driver Class Name</label>
<input type="text" name="driver_class_name" placeholder="Enter Driver Class Name" class="clr-input" [(ngModel)]="tdata.driver_class_name">
</div>
<div class="clr-col-md-4 clr-col-sm-12">
<label for="projectPrefix">Connection String</label>
<input type="text" name="conn_string" placeholder="Enter Connection String Name" class="clr-input" [(ngModel)]="tdata.conn_string">
</div>
<!-- <div class="clr-col-md-4 clr-col-sm-12">
<label for="portNumber">Port Number</label>
<input colspan="2" type="text" name="portNumber" readonly class="clr-input" [(ngModel)]="tdata.portnumber">
</div> -->
<div class="clr-col-md-4 clr-col-sm-12">
<label for="projectPrefix">Username</label>
<input type="text" name="username" placeholder="Enter Username" class="clr-input" [(ngModel)]="tdata.username">
</div>
<div class="clr-col-md-4 clr-col-sm-12">
<label for="dbPassword">Password</label>
<input type="text" name="password" placeholder="Enter Password" class="clr-input" [(ngModel)]="tdata.password">
</div>
<!-- <div class="clr-col-md-4 clr-col-sm-12">
<label for="workflow_name">Connect Through SSH</label>
<input type="checkbox" name="connectssh" clrToggle [(ngModel)]="tdata.connectssh"/>
</div>
<div class="clr-col-md-4 clr-col-sm-12">
<label for="projectPrefix">SSH Host Name</label>
<input type="text" name="sshusername" placeholder="Enter Host Name" class="clr-input" [(ngModel)]="tdata.ssh_host_name">
</div>
<div class="clr-col-md-4 clr-col-sm-12">
<label for="projectPrefix">SSH User Name</label>
<input type="text" name="sshusername" placeholder="Enter SSH Username" class="clr-input"[(ngModel)]="tdata.ssh_user_name">
</div>
<div class="clr-col-md-4 clr-col-sm-12">
<label for="dbPassword">SSH Password</label>
<input type="text" name="sshpassword" placeholder="Enter SSH Password" class="clr-input"[(ngModel)]="tdata.ssh_password">
</div>
<div class="clr-col-md-4 clr-col-sm-12">
<label for="dbPassword">SSH Key File</label><br>
<input type="file" name="sshkeyfile" placeholder="Enter Database Password"(change)="onFileChanged($event)">
{{tdata.ssh_file_key}}
</div> -->
</div>
<div class="center">
<div class="btn-group">
<div class="checkbox btn">
<input type="checkbox" id="btn-demo-check-1" (click)="goback()"/>
<label for="btn-demo-check-1">Cancle</label>
</div>
<div class="checkbox btn">
<input type="checkbox" id="btn-demo-check-2" checked (click)="onSubmit()"/>
<label for="btn-demo-check-2">Update</label>
</div>
</div>
<!-- <button type="submit" class="btn btn-primary" [disabled]="!entryForm.valid">SUBMIT</button> -->
</div>
</form>
</div>

View File

@ -0,0 +1,80 @@
//@import "../../../../assets/scss/var";
.s-info-bar {
display: flex;
flex-direction: row;
justify-content: space-between;
button {
outline: none;
}
}
.entry-pg {
width: 750px;
}
.button1::after {
content: none;
}
.button1:hover::after {
content: "ADD ROWS";
}
$bg-color: #dddddd;
.section {
background-color: $bg-color;
height: 40px;
}
.section p {
//color: white;
font-weight: bold;
padding: 10px;
font-size: 18px;
}
.clr-input {
color: #212529;
border: 1px solid #ced4da;
border-radius: 0.25rem;
padding: 0.75rem 0.75rem;
margin-top: 3px;
width: 100%;
margin-bottom: 10px;
}
.clr-file {
color: #212529;
border: 1px solid #ced4da;
border-radius: 0.25rem;
//padding: 0.6rem 0.75rem;
margin-top: 3px;
width: 100%;
margin-bottom: 10px;
}
.center {
text-align: center;
}
input[type=text],[type=date],textarea {
width: 100%;
padding: 15px 15px;
// margin: 8px 0;
background-color:rgb(255, 255, 255);
display: inline-block;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box;
}
.required-field{
color: red;
}
select{
width: 100%;
padding: 5px 5px;
border: 1px solid #ccc;
border-radius: 4px;
}

View File

@ -0,0 +1,25 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { QueryeditComponent } from './queryedit.component';
describe('QueryeditComponent', () => {
let component: QueryeditComponent;
let fixture: ComponentFixture<QueryeditComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [ QueryeditComponent ]
})
.compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(QueryeditComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@ -0,0 +1,67 @@
import { HttpHeaderResponse } from '@angular/common/http';
import { Component, OnInit } from '@angular/core';
import { FormBuilder } from '@angular/forms';
import { ActivatedRoute, Router } from '@angular/router';
import { ToastrService } from 'ngx-toastr';
import { ReportBuilderService } from 'src/app/services/api/report-builder.service';
@Component({
selector: 'app-queryedit',
templateUrl: './queryedit.component.html',
styleUrls: ['./queryedit.component.scss']
})
export class QueryeditComponent implements OnInit {
id:any;
tdata:any={};
selectedFile: File[]=[];
type = ["MYSQL","postgresql","mysqllite","oracle","Snowflake","BigQuery","RedShift","microsoft sql server","redis","maria_db","MongoDB","firebase","dynamodb","ibm DB2","couchbase","ElasticSearch","Casandra","OrientDB","Neo4j","FireBird"];
constructor(private _fb: FormBuilder, private router: Router,
private toastr: ToastrService,private route: ActivatedRoute, private reportBuilderService: ReportBuilderService,) { }
ngOnInit(): void {
this.id = this.route.snapshot.params["id"];
console.log("update with id = ", this.id);
this.getById(this.id);
}
getById(id: number) {
this.reportBuilderService.getSqlModelById(id).subscribe((data) => {
this.tdata = data;
console.log(this.tdata)
},
(err) => {
console.log(err);
}
);
}
public onFileChanged(event) {
//Select File
console.log(event);
this.selectedFile = event.target.files[0];
}
onSubmit(){
this.reportBuilderService.updateSqlModel(this.id,this.tdata).subscribe((data)=>{
console.log(data);
if(data.status===202){
this.toastr.success("Updated Succesfully");
}
},(error: HttpHeaderResponse)=>{
console.log(error);
if(error.status===202){
this.toastr.success("Updated Successfully");
}
if(error.status===404){
this.toastr.error(" NotUpdated Successfully");
}
if(error.status===400){
this.toastr.error(" NotUpdated Successfully");
}
});
this.router.navigate(["../../query"], { relativeTo: this.route });
}
goback(){
this.router.navigate(["../../query"], { relativeTo: this.route });
}
}

View File

@ -1,4 +1,4 @@
{
{
"BREADCRUMB_HOME": "Home",
"USER_GROUP_MAINTENANCE": "User Group Maintenance",
"BREADCRUMB_ABOUT_US": "About Us",
@ -17,25 +17,23 @@
"IMPORT": "Import",
"EXPORT_XLSX": "Export as XLSX",
"ADD": "Add",
"MENU_ACCESS_CONTROL": "Menu Access Control",
"EDIT_MODE": "Edit Mode",
"FOR": "For",
"RELOAD": "Reload",
"SHOW_ALL": "Show All",
"ONLY_MAIN_MENU": "Only Main Menu",
"NO_DATA_AVAILABLE": "No data available",
"NO": "No",
"MENU_ITEM_NAME": "Menu Item Name",
"VIEW": "View",
"CREATE": "Create",
"EDIT": "Edit",
"DELETE": "Delete",
"QUERY": "Query",
"EXPORT": "Export",
"SYNC": "Sync",
"editMode": "Edit Mode",
"MENU_ACCESS_CONTROL": "Menu Access Control",
"EDIT_MODE": "Edit Mode",
"FOR": "For",
"RELOAD": "Reload",
"SHOW_ALL": "Show All",
"ONLY_MAIN_MENU": "Only Main Menu",
"NO_DATA_AVAILABLE": "No data available",
"NO": "No",
"MENU_ITEM_NAME": "Menu Item Name",
"VIEW": "View",
"CREATE": "Create",
"EDIT": "Edit",
"DELETE": "Delete",
"QUERY": "Query",
"EXPORT": "Export",
"SYNC": "Sync",
"editMode": "Edit Mode",
"setupCode": "Setup Code",
"value": "Value",
"schedulerTimer": "Scheduler Timer",
@ -62,11 +60,9 @@
"oidAdminUserTooltip": "Admin user for OID access",
"oidServerPort": "OID Server Port",
"oidServerPortTooltip": "Port number for the OID server",
"companyDisplayName": "Company Display Name",
"companyDisplayName": "Company Display Name",
"systemParameter": "System Parameter",
"userDefaultGroup": "User Default Group",
"userDefaultGroup": "User Default Group",
"defaultDepartment": "Default Department",
"defaultPosition": "Default Position",
"singleCharge": "Single Charge",
@ -97,49 +93,45 @@
"areYouSureDelete": "Are You Sure Want to delete?",
"updateAccessType": "Update Access Type",
"update": "Update",
"SEQ_GENERATOR": "Sequence Generator",
"CURRENT_NO": "Current No",
"NAME": "Name",
"PREFIX": "Prefix",
"SEPARATOR": "Separator",
"SEQUENCE_SIZE": "Sequence Size",
"REPORT": "Report",
"REPORT_RUNNER": "Report Runner",
"REPORT_NAME": "Report Name",
"REPORT_DESCRIPTION": "Report Description",
"ACTIVE": "Active",
"FOLDER_NAME": "Folder Name",
"ACTION": "Action",
"SET_UP": "Set Up",
"USERS_PER_PAGE": "Users per page",
"OF": "of",
"USERS": "users",
"ARE_YOU_SURE": "Are you sure you want to delete?",
"CANCEL": "Cancel",
"GO_TO": "Go To",
"ALL_REPORTS": "All Reports",
"ALL_REPORT": "All Report",
"REPORT_BUILDER_SQL": "Report Builder (SQL)",
"REPORT_BUILDER_URL": "Report Builder (URL)",
"LOADING_MESSAGE": "Dashboard could be found. Loading..",
"START_FROM_SCRATCH": "Start from scratch",
"IMPORT_TEMPLATE": "Import from a template",
"IMPORT_PUBLIC_PROJECT": "Import from public project",
"DELETE_CONFIRMATION": "Are You Sure Want to delete?",
"LAST_UPDATED_ON": "Last Updated On:",
"CREATE_NEW_REPORT": "Create New Report",
"ADD_MODE": "Add Mode",
"ENTER_NAME": "Enter name",
"DESCRIPTION": "Description",
"ENTER_DESCRIPTION": "Enter Description",
"SUBMIT": "Submit",
"home": "Home",
"SEQ_GENERATOR": "Sequence Generator",
"CURRENT_NO": "Current No",
"NAME": "Name",
"PREFIX": "Prefix",
"SEPARATOR": "Separator",
"SEQUENCE_SIZE": "Sequence Size",
"REPORT": "Report",
"REPORT_RUNNER": "Report Runner",
"REPORT_NAME": "Report Name",
"REPORT_DESCRIPTION": "Report Description",
"API_REGISTERY": "Api Registery",
"API_REGISTERY_DESCRIPTION": "Api Registery Description",
"ACTIVE": "Active",
"FOLDER_NAME": "Folder Name",
"ACTION": "Action",
"SET_UP": "Set Up",
"USERS_PER_PAGE": "Users per page",
"OF": "of",
"USERS": "users",
"ARE_YOU_SURE": "Are you sure you want to delete?",
"CANCEL": "Cancel",
"GO_TO": "Go To",
"ALL_REPORTS": "All Reports",
"ALL_REPORT": "All Report",
"REPORT_BUILDER_SQL": "Report Builder (SQL)",
"REPORT_BUILDER_URL": "Report Builder (URL)",
"LOADING_MESSAGE": "Dashboard could be found. Loading..",
"START_FROM_SCRATCH": "Start from scratch",
"IMPORT_TEMPLATE": "Import from a template",
"IMPORT_PUBLIC_PROJECT": "Import from public project",
"DELETE_CONFIRMATION": "Are You Sure Want to delete?",
"LAST_UPDATED_ON": "Last Updated On:",
"CREATE_NEW_REPORT": "Create New Report",
"ADD_MODE": "Add Mode",
"ENTER_NAME": "Enter name",
"DESCRIPTION": "Description",
"ENTER_DESCRIPTION": "Enter Description",
"SUBMIT": "Submit",
"home": "Home",
"dashboard": "Dashboard",
"all_dashboard": "All Dashboard",
"dashboard_builder": "Dashboard Builder",
@ -211,10 +203,8 @@
"GROUP_LEVEL": "Group Level",
"STATUS": "Status",
"UPDATED_DATE": "Updated Date",
"RECORDS_PER_PAGE": "Record per page",
"IMPORT_FILE": "Import File",
"UPDATE": "Update",
"ARE_YOU_SURE_DELETE": "Are You Sure Want to delete?",
"THIS_FIELD_REQUIRED": "*This field is Required",

View File

@ -0,0 +1,224 @@
{
"BREADCRUMB_HOME": "मुखपृष्ठ",
"BREADCRUMB_ABOUT_US": "हमारे बारे में",
"ABOUT_TITLE": "हमारे बारे में",
"SETUP": "सेटअप",
"SETUP_TOOLS": "सेटअप टूल्स",
"USER_MAINTENANCE": "उपयोगकर्ता रखरखाव",
"REPORTS": "रिपोर्ट्स",
"REPORTS_DESCRIPTION": "रिपोर्ट्स विवरण",
"USER_GROUP_MAINTENANCE": "उपयोगकर्ता समूह रखरखाव",
"ABOUT_DESCRIPTION": "यदि आपके पास पहुँच है, तो नए उपयोगकर्ताओं के लिए नया प्रोजेक्ट बनाएं। अगर आपके पास पहुँच नहीं है, तो कृपया व्यवस्थापक से संपर्क करें।",
"HOME": "मुख्य पृष्ठ",
"SECURITY": "सुरक्षा",
"MENU_MAINTENANCE": "मेनू रखरखाव",
"MAIN_MENU": "मुख्य मेनू",
"DOWNLOAD_TEMPLATE": "टेम्प्लेट डाउनलोड करें",
"IMPORT": "आयात करें",
"EXPORT_XLSX": "XLSX के रूप में निर्यात करें",
"ADD": "जोड़ें",
"MENU_ACCESS_CONTROL": "मेनू एक्सेस कंट्रोल",
"EDIT_MODE": "संपादन मोड",
"FOR": "के लिए",
"RELOAD": "रिलोड करें",
"SHOW_ALL": "सभी दिखाएं",
"ONLY_MAIN_MENU": "केवल मुख्य मेनू",
"NO_DATA_AVAILABLE": "कोई डेटा उपलब्ध नहीं है",
"NO": "संख्या",
"MENU_ITEM_NAME": "मेनू आइटम नाम",
"VIEW": "देखें",
"CREATE": "बनाएं",
"EDIT": "संपादित करें",
"DELETE": "हटाएं",
"QUERY": "क्वेरी",
"EXPORT": "निर्यात करें",
"SYNC": "सिंक करें",
"editMode": "संपादन मोड",
"setupCode": "सेटअप कोड",
"value": "मूल्य",
"schedulerTimer": "समय सारणी टाइमर",
"schedulerTimerTooltip": "समय सारणी के लिए समय अंतराल",
"leaseTaxCode": "लीज़ कर कोड",
"taxCodeTooltip": "लीज़ के लिए कर कोड",
"vesselConfProcessLimit": "जहाज कॉन्फ़िगरेशन प्रक्रिया सीमा",
"vesselConfProcessLimitTooltip": "जहाज कॉन्फ़िगरेशन प्रक्रिया के लिए सीमा",
"rowToDisplay": "दिखाने के लिए पंक्तियाँ",
"rowToDisplayTooltip": "यूआई में दिखाने के लिए पंक्तियों की संख्या",
"linkToDisplay": "दिखाने के लिए लिंक",
"linkToDisplayTooltip": "पृष्ठ पर दिखाने के लिए URL",
"rowToAdd": "जोड़ने के लिए पंक्तियाँ",
"rowToAddTooltip": "तालिका में जोड़ने के लिए पंक्तियों की संख्या",
"lovRowToDisplay": "LOV पंक्तियाँ दिखाने के लिए",
"lovRowToDisplayTooltip": "मूल्यों की सूची दिखाने के लिए पंक्तियाँ",
"lovLinkToDisplay": "LOV लिंक दिखाने के लिए",
"lovLinkToDisplayTooltip": "LOV लिंक के लिए URL",
"oidServerName": "OID सर्वर का नाम",
"oidServerNameTooltip": "OID सर्वर का नाम",
"oidBase": "OID बेस",
"oidBaseTooltip": "OID के लिए आधार URL",
"oidAdminUser": "OID एडमिन यूज़र",
"oidAdminUserTooltip": "OID एक्सेस के लिए एडमिन यूज़र",
"oidServerPort": "OID सर्वर पोर्ट",
"oidServerPortTooltip": "OID सर्वर के लिए पोर्ट संख्या",
"userDefaultGroup": "उपयोगकर्ता डिफ़ॉल्ट समूह",
"defaultDepartment": "डिफ़ॉल्ट विभाग",
"defaultPosition": "डिफ़ॉल्ट स्थिति",
"singleCharge": "एकल शुल्क",
"firstDayOftheWeek": "सप्ताह का पहला दिन",
"hourPerShift": "प्रति शिफ्ट घंटा",
"cnBillingFrequency": "सीएन बिलिंग आवृत्ति",
"billingDepartmentCode": "बिलिंग विभाग कोड",
"basePriceList": "बेस मूल्य सूची",
"nonContainerServiceOrder": "गैर-कंटेनर सेवा आदेश",
"ediMaeSchedulerONOFF": "ईडीआई एमएई शेड्यूलर ऑन/ऑफ़",
"ediSchedulerONOFF": "ईडीआई शेड्यूलर ऑन/ऑफ़",
"uploadLogo": "लोगो अपलोड करें",
"companyDisplayName": "कंपनी डिस्प्ले नाम",
"systemParameter": "सिस्टम पैरामीटर",
"accessType": "एक्सेस प्रकार",
"add": "जोड़ें",
"modules": "मॉड्यूल्स",
"loading": "लोड हो रहा है ...",
"name": "नाम",
"default": "डिफ़ॉल्ट",
"description": "विवरण",
"addModules": "मॉड्यूल जोड़ें",
"edit": "संपादित करें",
"delete": "हटाएं",
"usersPerPage": "प्रति पृष्ठ उपयोगकर्ता",
"of": "का",
"users": "उपयोगकर्ता",
"addAccessType": "अक्सेस प्रकार जोड़ें",
"cancel": "रद्द करें",
"areYouSureDelete": "क्या आप निश्चित हैं कि आप हटाना चाहते हैं?",
"updateAccessType": "एक्सेस प्रकार अपडेट करें",
"update": "अद्यतन करें",
"SEQ_GENERATOR": "क्रम जनरेटर",
"CURRENT_NO": "वर्तमान संख्या",
"NAME": "नाम",
"PREFIX": "प्रिफिक्स",
"SEPARATOR": "विभाजक",
"SEQUENCE_SIZE": "सीक्वेंस आकार",
"REPORT": "रिपोर्ट",
"REPORT_RUNNER": "रिपोर्ट रनर",
"REPORT_NAME": "रिपोर्ट नाम",
"REPORT_DESCRIPTION": "रिपोर्ट विवरण",
"API_REGISTERY": "एपीआई रजिस्ट्री",
"API_REGISTERY_DESCRIPTION": "एपीआई रजिस्ट्री विवरण",
"ACTIVE": "सक्रिय",
"FOLDER_NAME": "फ़ोल्डर नाम",
"ACTION": "क्रिया",
"SET_UP": "सेट अप",
"GO_TO": "जाएं",
"USERS_PER_PAGE": "प्रति पृष्ठ उपयोगकर्ता",
"OF": "का",
"USERS": "उपयोगकर्ता",
"ARE_YOU_SURE": "क्या आप वाकई इसे हटाना चाहते हैं?",
"CANCEL": "रद्द करें",
"ALL_REPORTS": "सभी रिपोर्ट्स",
"ALL_REPORT": "सभी रिपोर्ट",
"REPORT_BUILDER_SQL": "रिपोर्ट बिल्डर (SQL)",
"REPORT_BUILDER_URL": "रिपोर्ट बिल्डर (URL)",
"LOADING_MESSAGE": "डैशबोर्ड पाया जा सकता है। लोड हो रहा है..",
"START_FROM_SCRATCH": "शुरू से शुरू करें",
"IMPORT_TEMPLATE": "टेम्पलेट से आयात करें",
"IMPORT_PUBLIC_PROJECT": "सार्वजनिक परियोजना से आयात करें",
"DELETE_CONFIRMATION": "क्या आप वाकई हटाना चाहते हैं?",
"LAST_UPDATED_ON": "अंतिम अपडेट:",
"CREATE_NEW_REPORT": "नई रिपोर्ट बनाएं",
"ADD_MODE": "जोड़ने का मोड",
"NAME": "नाम",
"ENTER_NAME": "नाम दर्ज करें",
"DESCRIPTION": "विवरण",
"ENTER_DESCRIPTION": "विवरण दर्ज करें",
"ACTIVE": "सक्रिय",
"CANCEL": "रद्द करें",
"SUBMIT": "जमा करें",
"home": "होम",
"dashboard": "डैशबोर्ड",
"all_dashboard": "सभी डैशबोर्ड",
"dashboard_builder": "डैशबोर्ड बिल्डर",
"dashboard_found": "डैशबोर्ड मिल गया। लोड हो रहा है..",
"loading": "लोड हो रहा है ...",
"last_updated": "अंतिम अद्यतन",
"start_from_scratch": "शुरुआत से शुरू करें",
"import_template": "टेम्पलेट से आयात करें",
"import_public_project": "सार्वजनिक परियोजना से आयात करें",
"delete_confirmation": "क्या आप वाकई हटाना चाहते हैं?",
"cancel": "रद्द करें",
"delete": "हटाएं",
"Dashboard_builder": "डैशबोर्ड बिल्डर",
"Go_to": "जाएं",
"Dashboard_Name": "डैशबोर्ड का नाम",
"Description": "विवरण",
"Security_Profile": "सुरक्षा प्रोफ़ाइल",
"Add_to_home": "होम पर जोड़ें",
"Action": "क्रिया",
"Delete": "हटाएं",
"Who_Column": "कौन कॉलम",
"Account_ID": "खाता आईडी",
"Created_At": "बनाया गया",
"Created_By": "बनाने वाला",
"Updated_At": "अपडेट किया गया",
"Updated_By": "अपडेट करने वाला",
"Start_from_scratch": "शुरू से शुरू करें",
"Import_from_a_template": "टेम्पलेट से आयात करें",
"Import_from_public_project": "सार्वजनिक प्रोजेक्ट से आयात करें",
"Are_you_sure_to_delete": "क्या आप सच में हटाना चाहते हैं?",
"Dashboard_runner": "डैशबोर्ड रनर",
"define_dashboard": "डैशबोर्ड परिभाषित करें",
"add_mode": "जोड़ने का मोड",
"dashboard_name_label": "डैशबोर्ड का नाम",
"dashboard_name_placeholder": "डैशबोर्ड का नाम दर्ज करें",
"security_profile_label": "सुरक्षा प्रोफाइल",
"security_profile_placeholder": "सुरक्षा प्रोफाइल दर्ज करें",
"description_label": "विवरण",
"description_placeholder": "विवरण दर्ज करें",
"add_to_dashboard_label": "डैशबोर्ड में जोड़ें",
"back_button": "वापस",
"submit_button": "सबमिट",
"ACTIVITIES": "गतिविधियाँ",
"SUGGESTION_FOR_YOU": "आपके लिए सुझाव",
"LOADING": "लोड हो रहा है ...",
"NOTIFICATION_NOT_FOUND": "सूचना मिल सकती है।",
"SUGGESTION_NOT_FOUND": "सुझाव मिल सकता है।",
"SERVICE": "सेवा",
"Last Updated On": "आखरी बार अपडेट किया गया",
"REPORT_BUILDER_2": "रिपोर्ट बिल्डर 2",
"REPORT_RUNNER": "रिपोर्ट रनर",
"ADD": "जोड़ें",
"SET_UP": "सेट अप करें",
"REPORT_NAME": "रिपोर्ट का नाम",
"REPORT_DESCRIPTION": "रिपोर्ट विवरण",
"ACTIVE": "सक्रिय",
"ACTION": "क्रिया",
"DELETE": "हटाएँ",
"WHO_COLUMN": "कौन कॉलम",
"ACCOUNT_ID": "खाता आईडी",
"CREATED_AT": "बनाया गया",
"CREATED_BY": "द्वारा बनाया गया",
"UPDATED_AT": "अपडेट किया गया",
"UPDATED_BY": "द्वारा अपडेट किया गया",
"DELETE_CONFIRMATION": "क्या आप वाकई डिलीट करना चाहते हैं?",
"USERGROUP_NO": "उपयोगकर्ता समूह संख्या",
"GROUP_NAME": "समूह नाम",
"GROUP_DESC": "विवरण",
"GROUP_LEVEL": "समूह स्तर",
"STATUS": "स्थिति",
"UPDATED_DATE": "अद्यतन तिथि",
"RECORDS_PER_PAGE": "प्रति पृष्ठ रिकॉर्ड",
"IMPORT_FILE": "फ़ाइल आयात करें",
"UPDATE": "अद्यतन करें",
"ARE_YOU_SURE_DELETE": "क्या आप वाकई इसे हटाना चाहते हैं?",
"THIS_FIELD_REQUIRED": "*यह फ़ील्ड आवश्यक है",
"NO": "संख्या",
"MENU_ITEM_NAME": "मेनू आइटम नाम",
"ID": "आईडी",
"SEQUENCE": "क्रम",
"MODULE_NAME": "मॉड्यूल नाम",
"MENU_ACTION_LINK": "मेनू क्रिया लिंक",
"STATUS": "स्थिति",
"SUB_MENU": "उप मेनू",
"ACTION": "क्रिया",
"BUILDER ITem": ""
}