From 656f29018b50c3f6984d264949c30473180d4afb Mon Sep 17 00:00:00 2001 From: Gaurav Kumar Date: Thu, 27 Mar 2025 12:51:29 +0530 Subject: [PATCH] report --- .../reportbuildquery.component.ts | 916 +++++++++--------- .../setupicon/setupicon.component.html | 158 +-- .../builder/setupicon/setupicon.component.ts | 88 +- .../app/modules/main/main-routing.module.ts | 23 +- .../src/app/modules/main/main.module.ts | 106 +- .../main/superadmin/query/query.component.css | 146 +++ .../superadmin/query/query.component.css.map | 1 + .../superadmin/query/query.component.html | 637 ++++++++++++ .../superadmin/query/query.component.scss | 161 +++ .../superadmin/query/query.component.spec.ts | 25 + .../main/superadmin/query/query.component.ts | 536 ++++++++++ .../queryadd/queryadd.component.css | 75 ++ .../queryadd/queryadd.component.css.map | 1 + .../queryadd/queryadd.component.html | 130 +++ .../queryadd/queryadd.component.scss | 80 ++ .../queryadd/queryadd.component.spec.ts | 25 + .../superadmin/queryadd/queryadd.component.ts | 92 ++ .../queryedit/queryedit.component.css | 75 ++ .../queryedit/queryedit.component.css.map | 1 + .../queryedit/queryedit.component.html | 127 +++ .../queryedit/queryedit.component.scss | 80 ++ .../queryedit/queryedit.component.spec.ts | 25 + .../queryedit/queryedit.component.ts | 67 ++ .../src/assets/i18n/en.json | 128 ++- .../src/assets/i18n/hi.json | 224 +++++ 25 files changed, 3233 insertions(+), 694 deletions(-) create mode 100644 frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.css create mode 100644 frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.css.map create mode 100644 frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.html create mode 100644 frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.scss create mode 100644 frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.spec.ts create mode 100644 frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.ts create mode 100644 frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.css create mode 100644 frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.css.map create mode 100644 frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.html create mode 100644 frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.scss create mode 100644 frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.spec.ts create mode 100644 frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.ts create mode 100644 frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.css create mode 100644 frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.css.map create mode 100644 frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.html create mode 100644 frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.scss create mode 100644 frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.spec.ts create mode 100644 frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.ts create mode 100644 frontend/angular-clarity-master/src/assets/i18n/hi.json diff --git a/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildquery/reportbuildquery.component.ts b/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildquery/reportbuildquery.component.ts index 48aaa7c..3c23b53 100644 --- a/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildquery/reportbuildquery.component.ts +++ b/frontend/angular-clarity-master/src/app/modules/main/builder/report-build/reportbuildquery/reportbuildquery.component.ts @@ -12,34 +12,34 @@ import { ActivatedRoute, Router } from '@angular/router'; styleUrls: ['./reportbuildquery.component.scss'] }) export class ReportbuildqueryComponent implements OnInit { - searchtable:any; - searchcol:any; + searchtable: any; + searchcol: any; columns: any[]; - table:boolean=false; - database:boolean=false; - query:boolean=false; + table: boolean = false; + database: boolean = false; + query: boolean = false; public entryForm: FormGroup; public addForm: FormGroup; public saveReportForm: FormGroup; - addmodal:boolean =false; - query2:string; - rows:any[]; + addmodal: boolean = false; + query2: string; + rows: any[]; loading = false; tableList: TableList[]; - databaselist; + databaselist = []; collist; - search:any; - selectedtable:any[]; - selectedcol:any[]; - selectedcol1:any[]; - selectedParamter:any[]; + search: any; + selectedtable: any[]; + selectedcol: any[]; + selectedcol1: any[]; + selectedParamter: any[]; selectedtablequery; selectcolquery; selectedquery; backQuery = true; searchquery; - col:boolean=false; - col1:boolean=false; + col: boolean = false; + col1: boolean = false; searchdatabase; selecteddatabase; msg; @@ -48,22 +48,22 @@ export class ReportbuildqueryComponent implements OnInit { errorco; errortb; errorcl; - loadingIndicator = true; reorderable = true; + loadingIndicator = true; reorderable = true; columnModal = false; reportModal = false; filterModel = false; conditionData = []; stdParamters = []; columnData = []; - andor = ['AND', 'OR','NOT']; + andor = ['AND', 'OR', 'NOT']; fieldname = ['name1', 'name2']; - condition = ['=','!=','<','>','<=','>=','LIKE','BETWEEN','IN']; - alias = ['a','b','c','d','e','f']; + condition = ['=', '!=', '<', '>', '<=', '>=', 'LIKE', 'BETWEEN', 'IN']; + alias = ['a', 'b', 'c', 'd', 'e', 'f']; tabs = ['Tab', 'Tab',]; selected = new FormControl(0); - constructor( private _fb: FormBuilder,private router: Router, + constructor(private _fb: FormBuilder, private router: Router, private route: ActivatedRoute, - private reportBuilderService: ReportBuilderService,private toastr:ToastrService,) { } + private reportBuilderService: ReportBuilderService, private toastr: ToastrService,) { } ngOnInit(): void { this.id = this.route.snapshot.params["id"]; @@ -71,28 +71,28 @@ export class ReportbuildqueryComponent implements OnInit { 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.addForm = this._fb.group({ + conn_string: [null], + username: [null], + password: [null], + driver_class_name: [null], }) this.saveReportForm = this._fb.group({ - conn_name:[null], + conn_name: [null], // reportName: [null], - folderName:[null], + folderName: [null], // description:[null], // active:[null], - sql_str:[null], - date_param_req:[null], - column_str:[null], - adhoc_param_html:[null], - std_param_html:[null], + sql_str: [null], + date_param_req: [null], + column_str: [null], + adhoc_param_html: [null], + std_param_html: [null], }); // this.listofTables(); this.getById(this.id); - + } ReportBuilder_Header; ReportBuilder_Line; @@ -111,260 +111,262 @@ export class ReportbuildqueryComponent implements OnInit { } ); } - - -listoddatabase(){ - this.reportBuilderService.getdatabse().subscribe((data)=>{ - this.databaselist=data; - console.log(this.databaselist) - },(error) => { - console.log(error); - if(error){ - this.errorco="No data Available"; - } - }); -} + + listoddatabase() { + this.reportBuilderService.getdatabse().subscribe((data) => { + this.databaselist = data; + console.log('database 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(this.tableList); - },(error) => { + }, (error) => { console.log(error); - if(error){ - this.errortb="No data Available"; - } + if (error) { + this.errortb = "No data Available"; + } }) } msg1; finalColList: any[] = []; - listofcol(val){ + 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(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)=>{ + this.reportBuilderService.getAllColumnsFromAllTables(array).subscribe((data) => { console.log(data); - this.collist=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=""; + if (this.selectedtable == null) { + this.msg = 'Plz First Select Table' + } else { + this.msg = ""; } //console.log(this.collist); - },(error) => { + }, (error) => { console.log(error); - if(error){ - this.errorcl="No data Available"; - } + if (error) { + this.errorcl = "No data Available"; + } }) } - listofquery(){ - this.reportBuilderService.getall().subscribe((data)=>{ - this.querydata=data; + listofquery() { + this.reportBuilderService.getall().subscribe((data) => { + this.querydata = data; console.log(this.querydata) }) } rowdata; - onSubmit(){ + onSubmit() { // this.backQuery = false; - this.query2=this.entryForm.value.sql_query; + 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]; + this.rowdata = [this.rows]; console.log(typeof this.rows); - if(data){ + if (data) { this.toastr.success("Run Successfully") } - var j; - var cart = []; + 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) + 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) } + } + 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); }) + } - 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'); -//tab -addTab(selectAfterAdding: boolean) { - this.tabs.push('Tab'); - - if (selectAfterAdding) { - this.selected.setValue(this.tabs.length - 1); + 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(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; + 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(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 + 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);} } - - 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);} -} -opentcolmod1(){ - // this.col1=true; - this.listofcol(this.selectedtable) + opentcolmod1() { + // this.col1=true; + this.listofcol(this.selectedtable) -} -colname(){ - - this.columnModal = true; - - //column filter - const defaultObject = { - alias: "", } - const valuesOnly = this.selectedcol.map(item => item.split('.').pop()); -const objectArray = this.selectedcol.map((value, index) => ({ - // ...defaultObject, - alias: valuesOnly[index], - 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);} + colname() { + + this.columnModal = true; + + //column filter + const defaultObject = { + alias: "", + } + const valuesOnly = this.selectedcol.map(item => item.split('.').pop()); + const objectArray = this.selectedcol.map((value, index) => ({ + // ...defaultObject, + alias: valuesOnly[index], + 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); } -onAddColLines(){ - this.columnData.push({ - columns: "", - alias: "", - }); -} -deleteColRow(index) { - this.columnData.splice(index, 1); -} // console.log(col); // this.selectedcol=col; - onColSelected(){ + onColSelected() { // console.log(col); // this.selectedcol=col; - this.col=false; + this.col = false; this.columnModal = false; - if (Array.isArray(this.columnData)) { + if (Array.isArray(this.columnData)) { // const selectedColumns = this.columnData.join(','); //for column const selectedColumns = this.columnData.map(({ alias, columns }) => `${columns} as ${alias}`).join(','); @@ -376,10 +378,10 @@ deleteColRow(index) { 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 @@ -394,7 +396,7 @@ deleteColRow(index) { this.selectcolquery = `SELECT * FROM ${selectedTables} WHERE 1=1`; console.log(this.selectcolquery); // You can perform further actions with the generated SQL query - }else{ + } else { // if(this.selectedtable==null){ // this.msg1='Plz First Select Table' // }else{ @@ -404,253 +406,255 @@ deleteColRow(index) { this.selectedquery = this.selectcolquery; } -// onColSelected(){ -// this.col=false; -// this.columnModal = false; -// console.log(this.selectedcol); -// if (Array.isArray(this.selectedcol)) { -// const selectedColumns = this.selectedcol.join(','); -// this.selectcolquery = `SELECT ${selectedColumns} FROM ${this.selectedtable} WHERE 1=1`; -// console.log(this.selectcolquery); -// // You can perform further actions with the generated SQL query -// } else { -// this.selectcolquery = `SELECT * FROM ${this.selectedtable} WHERE 1=1`; -// console.log(this.selectcolquery); -// // You can perform further actions with the generated SQL query -// } -// this.selectedquery = this.selectcolquery; + // onColSelected(){ + // this.col=false; + // this.columnModal = false; + // console.log(this.selectedcol); + // if (Array.isArray(this.selectedcol)) { + // const selectedColumns = this.selectedcol.join(','); + // this.selectcolquery = `SELECT ${selectedColumns} FROM ${this.selectedtable} WHERE 1=1`; + // console.log(this.selectcolquery); + // // You can perform further actions with the generated SQL query + // } else { + // this.selectcolquery = `SELECT * FROM ${this.selectedtable} WHERE 1=1`; + // console.log(this.selectcolquery); + // // You can perform further actions with the generated SQL query + // } + // this.selectedquery = this.selectcolquery; -// //std pramameter -// const defaultObject = { -// label: "", -// dataType: "", -// list: "", -// } -// const objectArray = this.selectedcol.map(value => ({ -// ...defaultObject, -// column: value, -// })); -// console.log(objectArray); -// const data = JSON.stringify(objectArray); -// try { -// this.stdParamters = JSON.parse(data); -// console.log('Received data:', this.stdParamters ); -// } catch (e) { console.error('Invalid JSON:', data);} -// } -onAddstdLines(){ - this.stdParamters.push({ - column: "", - label: "", - dataType: "", - list: "" - }); -} -deletestdRow(index) { - this.stdParamters.splice(index, 1); -} -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 }); -} -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; + // //std pramameter + // const defaultObject = { + // label: "", + // dataType: "", + // list: "", + // } + // const objectArray = this.selectedcol.map(value => ({ + // ...defaultObject, + // column: value, + // })); + // console.log(objectArray); + // const data = JSON.stringify(objectArray); + // try { + // this.stdParamters = JSON.parse(data); + // console.log('Received data:', this.stdParamters ); + // } catch (e) { console.error('Invalid JSON:', data);} + // } + onAddstdLines() { + this.stdParamters.push({ + column: "", + label: "", + dataType: "", + list: "" + }); } - // 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; + deletestdRow(index) { + this.stdParamters.splice(index, 1); + } + 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(['cns-portal', 'reportbuild','reportQuery', this.id, 'queryadd']); + this.router.navigate(['queryadd'], { relativeTo: this.route }); } -} -// 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; -} - -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) => { + onCreate() { + console.log(this.addForm.value); + this.reportBuilderService.createdb(this.addForm.value).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(); + }) + } + + // 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; -workflow_Lines = { - model:{} -} -foldername; -dataParameter; + // } + // getConditionAfterColumn(selected: any){ + // return this.filtercondlvalue -saveReport(){ - // this.reportModal = true; - this.rpt_builder(); -} -rpt_builder(){ + // } + 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; + } + + 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(); + } + ); + } + + + workflow_Lines = { + model: {} + } + foldername; + dataParameter; + + saveReport() { + // this.reportModal = true; + this.rpt_builder(); + } + + rpt_builder() { - -this.onSaveBuidler(); -} -onSaveBuidler(){ - this.reportModal = false; - this.saveReportForm.value.sql_str = this.selectedquery; - this.saveReportForm.value.date_param_req = this.dataParameter; - this.saveReportForm.value.folderName = this.foldername; - this.saveReportForm.value.conn_name = this.databaseName; - const col_str = JSON.stringify(this.selectedcol); - this.saveReportForm.value.column_str = col_str; - const colList = JSON.stringify(this.collist); - this.saveReportForm.value.adhoc_param_html = colList; - const table_str = JSON.stringify(this.selectedtable); - // this.saveReportForm.value.std_param_html = table_str; - this.saveReportForm.value.std_param_html = col_str; - - console.log(this.saveReportForm.value); - let tmp = JSON.stringify(this.saveReportForm.value); //.replace(/\\/g, '') - this.workflow_Lines.model = tmp; + + this.onSaveBuidler(); + } + onSaveBuidler() { + this.reportModal = false; + this.saveReportForm.value.sql_str = this.selectedquery; + this.saveReportForm.value.date_param_req = this.dataParameter; + this.saveReportForm.value.folderName = this.foldername; + this.saveReportForm.value.conn_name = this.databaseName; + const col_str = JSON.stringify(this.selectedcol); + this.saveReportForm.value.column_str = col_str; + const colList = JSON.stringify(this.collist); + this.saveReportForm.value.adhoc_param_html = colList; + const table_str = JSON.stringify(this.selectedtable); + // this.saveReportForm.value.std_param_html = table_str; + this.saveReportForm.value.std_param_html = col_str; + + console.log(this.saveReportForm.value); + let tmp = JSON.stringify(this.saveReportForm.value); //.replace(/\\/g, '') + this.workflow_Lines.model = tmp; // this.ReportBuilder_Header.Rpt_builder2_lines[0].model = tmp -console.log( this.workflow_Lines); + console.log(this.workflow_Lines); - this.reportBuilderService.updaterbLineData(this.workflow_Lines, this.lineId).subscribe((data)=>{ - console.log(data); - if (data || data.status >= 200 && data.status <= 209) { - this.toastr.success('Report save successfully'); - this.router.navigate(["../../all"], { relativeTo: this.route }); - } - },(error:HttpErrorResponse) => { - console.log(error); - if(error.status==404){ - this.toastr.error(error.error); - } - if(error.status==200){ this.toastr.success('Report save successfully'); } - if(error.status==400){ this.toastr.error('Report Save Unsuccessful'); } - }); - // this.router.navigate(["../../all"], { relativeTo: this.route }); -} + this.reportBuilderService.updaterbLineData(this.workflow_Lines, this.lineId).subscribe((data) => { + console.log(data); + if (data || data.status >= 200 && data.status <= 209) { + this.toastr.success('Report save successfully'); + this.router.navigate(["../../all"], { relativeTo: this.route }); + } + }, (error: HttpErrorResponse) => { + console.log(error); + if (error.status == 404) { + this.toastr.error(error.error); + } + if (error.status == 200) { this.toastr.success('Report save successfully'); } + if (error.status == 400) { this.toastr.error('Report Save Unsuccessful'); } + }); + // this.router.navigate(["../../all"], { relativeTo: this.route }); + } } diff --git a/frontend/angular-clarity-master/src/app/modules/main/builder/setupicon/setupicon.component.html b/frontend/angular-clarity-master/src/app/modules/main/builder/setupicon/setupicon.component.html index 88efbd0..d025a47 100644 --- a/frontend/angular-clarity-master/src/app/modules/main/builder/setupicon/setupicon.component.html +++ b/frontend/angular-clarity-master/src/app/modules/main/builder/setupicon/setupicon.component.html @@ -1,79 +1,115 @@ - -
- -
-
-
- -
-
+
  • +
  • {{ 'SETUP' | translate }}
  • + + +
    + +
    +
    +
    + +
    +
    -
    +

    {{ 'SETUP_TOOLS' | translate }}

    -
    - -
    - -
    -
    +
    + +
    + +
    +
    -
    -
    -
    - +
    +
    +
    +
    -
    - -
    -

    -
    -
    +
    + +
    +

    +
    +
    {{item.menuItemDesc}}
    -
    - -
    -
    - {{item.menuItemDesc}} -
    -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - +
    +
    +
    + {{item.menuItemDesc}} +
    -

    -
    -
    +
    +
    +
    +
    + + +
    +
    + +
    +
    +
    + +
    +

    +
    +
    {{ 'REPORTS' | translate }}
    -
    - -
    -
    - {{ 'REPORTS_DESCRIPTION' | translate }} -
    -
    -
    + +
    +
    +
    + {{ 'REPORTS_DESCRIPTION' | translate }} +
    +
    +
    +
    -
    +
    - -
    \ No newline at end of file + + +
    +
    + +
    +
    +
    + +
    +

    +
    +
    + {{ 'API_REGISTERY' | translate + }} +
    +
    + +
    +
    +
    + {{ 'API_REGISTERY_DESCRIPTION' | translate }} +
    +
    +
    +
    +
    +
    + + + +
    \ No newline at end of file diff --git a/frontend/angular-clarity-master/src/app/modules/main/builder/setupicon/setupicon.component.ts b/frontend/angular-clarity-master/src/app/modules/main/builder/setupicon/setupicon.component.ts index 8f2f296..48d7d30 100644 --- a/frontend/angular-clarity-master/src/app/modules/main/builder/setupicon/setupicon.component.ts +++ b/frontend/angular-clarity-master/src/app/modules/main/builder/setupicon/setupicon.component.ts @@ -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; + } diff --git a/frontend/angular-clarity-master/src/app/modules/main/main-routing.module.ts b/frontend/angular-clarity-master/src/app/modules/main/main-routing.module.ts index fb9e70c..c7450e8 100644 --- a/frontend/angular-clarity-master/src/app/modules/main/main-routing.module.ts +++ b/frontend/angular-clarity-master/src/app/modules/main/main-routing.module.ts @@ -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 }, ] diff --git a/frontend/angular-clarity-master/src/app/modules/main/main.module.ts b/frontend/angular-clarity-master/src/app/modules/main/main.module.ts index cccc926..dacaf40 100644 --- a/frontend/angular-clarity-master/src/app/modules/main/main.module.ts +++ b/frontend/angular-clarity-master/src/app/modules/main/main.module.ts @@ -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, diff --git a/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.css b/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.css new file mode 100644 index 0000000..7964200 --- /dev/null +++ b/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.css @@ -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 */ \ No newline at end of file diff --git a/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.css.map b/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.css.map new file mode 100644 index 0000000..6fa4424 --- /dev/null +++ b/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.css.map @@ -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"} \ No newline at end of file diff --git a/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.html b/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.html new file mode 100644 index 0000000..ac98d15 --- /dev/null +++ b/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.html @@ -0,0 +1,637 @@ + + + +
    + + +
    +
    +

    SQL Worksheet- + connection name + {{databaseName}} + switch + Add New +

    + +
    + +
    + + +
    +
    + + + + + + +
    +
    + +
    +
    + + + + + + + + + {{selected}} {{ getAliasedColumn(selected) }} + + + + + + {{state}} + + + + + + +
    +

    +

    {{msg}}

    + +
    +
    +
    + + + + + + + + + {{ selected.substr(0, selected.indexOf('.')) }}{{ selected.substr(selected.indexOf('.')) }} + + + {{selected}} + + + + + {{state}} + + + + + + +
    +

    +

    {{msg1}}

    +
    +
    +
    + + + + + + + + + {{data.andor}}  + + {{ selected.substr(0, selected.indexOf('.')) }}{{ selected.substr(selected.indexOf('.')) }} + + + {{selected}} + + + {{data.condition}} {{data.value}} + + + + + {{state}} + + + + + + +
    +

    + +
    +
    + +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    + + + +
    +
    +

    Response

    +
    +
    +
    + + +
    +
    +

    +
    +
    +
    +
    + +
    + + + + + + + + + + + +
    {{co}}
    {{item[key]}}
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.scss b/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.scss new file mode 100644 index 0000000..3ee5c25 --- /dev/null +++ b/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.scss @@ -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'; diff --git a/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.spec.ts b/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.spec.ts new file mode 100644 index 0000000..fd0cf11 --- /dev/null +++ b/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { QueryComponent } from './query.component'; + +describe('QueryComponent', () => { + let component: QueryComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ QueryComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(QueryComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.ts b/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.ts new file mode 100644 index 0000000..a898324 --- /dev/null +++ b/frontend/angular-clarity-master/src/app/modules/main/superadmin/query/query.component.ts @@ -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(); + } + ); + } + +} \ No newline at end of file diff --git a/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.css b/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.css new file mode 100644 index 0000000..49864a0 --- /dev/null +++ b/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.css @@ -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 */ \ No newline at end of file diff --git a/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.css.map b/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.css.map new file mode 100644 index 0000000..355aae7 --- /dev/null +++ b/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.css.map @@ -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"} \ No newline at end of file diff --git a/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.html b/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.html new file mode 100644 index 0000000..428e92c --- /dev/null +++ b/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.html @@ -0,0 +1,130 @@ +

    Add Database

    +Add Mode
    +
    + + + + + + + + +
    + + + + + +
    +
    +
    + + +
    +
    + + +
    +
    + +
    +
    + + +
    +
    + + + +
    +
    + +
    +

    Configurations

    +
    + +
    + +
    + +
    + + + +
    +
    + + + +
    + +
    + + + +
    + +
    + + + +
    + +
    + + + +
    +
    +
    + + +
    + +
    + +
    +
    +
    diff --git a/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.scss b/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.scss new file mode 100644 index 0000000..39de1cb --- /dev/null +++ b/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.scss @@ -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; + } + \ No newline at end of file diff --git a/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.spec.ts b/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.spec.ts new file mode 100644 index 0000000..1af6a32 --- /dev/null +++ b/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { QueryaddComponent } from './queryadd.component'; + +describe('QueryaddComponent', () => { + let component: QueryaddComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ QueryaddComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(QueryaddComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.ts b/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.ts new file mode 100644 index 0000000..70680c8 --- /dev/null +++ b/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryadd/queryadd.component.ts @@ -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'); + // }); + // } + +} diff --git a/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.css b/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.css new file mode 100644 index 0000000..ef2c1a7 --- /dev/null +++ b/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.css @@ -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 */ \ No newline at end of file diff --git a/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.css.map b/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.css.map new file mode 100644 index 0000000..c9f1360 --- /dev/null +++ b/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.css.map @@ -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"} \ No newline at end of file diff --git a/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.html b/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.html new file mode 100644 index 0000000..56856c4 --- /dev/null +++ b/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.html @@ -0,0 +1,127 @@ +

    Database

    +Edit Mode
    +
    + + + + + + + + +
    + + + + + +
    +
    +
    + + +
    +
    + + +
    +
    + +
    +
    + + +
    +
    + + + +
    +
    + +
    +

    Configurations

    +
    + +
    + +
    + +
    + + + +
    +
    + + + +
    + +
    + + + +
    + +
    + + + +
    + +
    + + + +
    +
    +
    + + +
    +
    + + +
    +
    + +
    +
    +
    diff --git a/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.scss b/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.scss new file mode 100644 index 0000000..39de1cb --- /dev/null +++ b/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.scss @@ -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; + } + \ No newline at end of file diff --git a/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.spec.ts b/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.spec.ts new file mode 100644 index 0000000..9568943 --- /dev/null +++ b/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { QueryeditComponent } from './queryedit.component'; + +describe('QueryeditComponent', () => { + let component: QueryeditComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ QueryeditComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(QueryeditComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.ts b/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.ts new file mode 100644 index 0000000..e82ee75 --- /dev/null +++ b/frontend/angular-clarity-master/src/app/modules/main/superadmin/queryedit/queryedit.component.ts @@ -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 }); + } + +} diff --git a/frontend/angular-clarity-master/src/assets/i18n/en.json b/frontend/angular-clarity-master/src/assets/i18n/en.json index ae5b788..3d60440 100644 --- a/frontend/angular-clarity-master/src/assets/i18n/en.json +++ b/frontend/angular-clarity-master/src/assets/i18n/en.json @@ -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", diff --git a/frontend/angular-clarity-master/src/assets/i18n/hi.json b/frontend/angular-clarity-master/src/assets/i18n/hi.json new file mode 100644 index 0000000..8f6d890 --- /dev/null +++ b/frontend/angular-clarity-master/src/assets/i18n/hi.json @@ -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": "" +} \ No newline at end of file