2cd6802093c09a2c90f1407e329ca8e318262305
[portal/sdk.git] /
1 import { AfterViewInit, Component, OnInit, ViewChild, SimpleChange, Input, Output } from '@angular/core';
2 import { MatPaginator } from '@angular/material/paginator';
3 import { MatSort } from '@angular/material/sort';
4 import { MatTable } from '@angular/material/table';
5 import { DataTableDataSource, DataTableItem } from './column-list-datasource';
6 import { HttpClient } from '@angular/common/http';
7 import { environment } from '../../../../../../../environments/environment';
8 import { ColumnService } from '../column.service';
9
10 @Component({
11   selector: 'app-column-list',
12   templateUrl: './column-list.component.html',
13   styleUrls: ['./column-list.component.css']
14 })
15 export class ColumnListComponent implements OnInit {
16   @ViewChild(MatPaginator, {static: false} as any) paginator: MatPaginator;
17   @ViewChild(MatSort, {static: false} as any) sort: MatSort;
18   @ViewChild(MatTable, {static: false} as any) table: MatTable<DataTableItem>;
19
20   @Input("reportId") reportId : number;
21
22
23   
24   dataSource: DataTableDataSource;
25   finalGetObj : {};
26   finalEditRowGetObj : {};
27   finalObjArr: DataTableItem[];
28   status : string;
29   message : string;
30   showDialog : boolean;
31   closable : boolean;
32
33   columnId : string;
34   id : string;
35   name : string;
36   noWrap : boolean;
37   visible : boolean;
38   dependsOnFormFields : string;
39   dataType : string;
40   groupByPos : string;
41   customTextForSubTotal : string;
42   hideRepeatedValues : boolean;
43   multiGroupColumnLevel;
44   colspan : string;
45   displayName : string;
46   displayWidthInPixel : string;
47   indentation : string;
48   displayAlignment : string;
49   displayHeaderAlignment : string;
50   sortable : boolean;
51   drilldownURL : string;
52   displayTotal : string;
53   URLListObj : {};
54   URLListObjArray : {}[];
55   TotalColListObj : {};
56   TotalColListObjArray : {}[];
57   finalPOSTObj : {};
58   isDisabled: boolean;
59   showConfirmButton: boolean;
60
61   /** Columns displayed in the table. Columns IDs can be added, removed, or reordered. */
62   displayedColumns = ['no', 'id', 'name', 'edit'];
63   SQLstatus: string;
64   SQLmessage: string;
65   showSaveColDialog: boolean;
66   Colclosable: boolean;
67   EditColmessage: string;
68   EditColstatus: string;
69
70   showEditDrillDownPage : boolean;
71   drillDownReportId : string;
72   drilldownParams : string;
73   drilldownType : string;
74   drillDownObj : {};
75   checkCnt : number;
76   showSpinner : boolean;
77   displayTable : boolean;
78
79   constructor(private _http : HttpClient, private _columnService : ColumnService){
80
81     this.showEditDrillDownPage = false;
82     this.showConfirmButton = false;
83
84     this.dataSource = new DataTableDataSource();
85
86     this.finalGetObj = new Object();
87     this.finalObjArr = new Array();
88     this.finalEditRowGetObj = new Object();
89   this.URLListObjArray = new Array();
90   this.TotalColListObjArray = new Array();
91     this.finalPOSTObj = new Object();
92     this.drillDownObj = new Object();
93     this.checkCnt = 0;
94     this.showSpinner = false;
95
96   }
97
98   ngOnInit() {
99
100     this.displayTable = true;
101
102     this._columnService.getColumnList()
103     .subscribe((response) => {
104      this.showSpinner = true;
105      this.finalGetObj = response;
106
107      let k=0;
108      while(this.finalGetObj[k])
109      {
110       this.finalGetObj[k]["no"] = k+1;
111       this.finalGetObj[k]["edit"] = "";
112
113       this.finalObjArr.push(this.finalGetObj[k]);
114     
115       k++;
116      }
117
118
119      
120
121       this.dataSource.data = this.finalObjArr;
122       
123       this.dataSource.sort = this.sort;
124     this.dataSource.paginator = this.paginator;
125     this.table.dataSource = this.dataSource;
126     this.dataSource.data = this.finalObjArr;
127       //this.dataSource.data = [{id:"1", no:1, name:"1", edit:""}];
128       this.showSpinner = false;
129     });
130     this.showDialog = false;
131     this.showSaveColDialog =false;
132     
133     
134   }
135
136
137   ngDoCheck()
138   {
139     this.drillDownReportId = this.drilldownURL;
140     this.drillDownObj["drillDownUrl"] = this.drilldownURL;
141     this.drillDownObj["drillDownParams"] = this.drilldownParams;
142     this.drillDownObj["drillDownType"] = this.drilldownType;
143   }
144
145
146   editRecord(id : string)
147   {
148     this.showSpinner = true;
149
150     this.columnId = id;
151     this._columnService.getIndividualColumnData(id)
152     .subscribe((response) => {
153       this.finalEditRowGetObj = response;
154
155       this.id = this.finalEditRowGetObj["colId"];
156       this.name = this.finalEditRowGetObj["colName"];
157
158       this.noWrap = (this.finalEditRowGetObj["noWrap"] === "Y" ? true : false);
159       this.visible = this.finalEditRowGetObj["visible"];
160
161       this.dependsOnFormFields = this.finalEditRowGetObj["depeondsOnForField"];
162       this.dataType = this.finalEditRowGetObj["dataType"];
163       this.groupByPos = (this.finalEditRowGetObj["groupByPos"] == null ? 0 : this.finalEditRowGetObj["groupByPos"] );
164       this.customTextForSubTotal = this.finalEditRowGetObj["subTotalCustomText"];
165       this.hideRepeatedValues = this.finalEditRowGetObj["hideRepeatedKey"];
166       this.multiGroupColumnLevel = (this.finalEditRowGetObj["level"] == null ? 0 : this.finalEditRowGetObj["level"]);
167       this.colspan  = (this.finalEditRowGetObj["colspan"] == null ? 0 : this.finalEditRowGetObj["colspan"]);
168       this.displayName = this.finalEditRowGetObj["displayName"];
169       this.displayWidthInPixel = (this.finalEditRowGetObj["displayWidthInPixel"] == null ? 0 : this.finalEditRowGetObj["displayWidthInPixel"] );
170       this.indentation = (this.finalEditRowGetObj["indentation"] == null ? 0 : this.finalEditRowGetObj["indentation"]);
171       this.displayAlignment = this.finalEditRowGetObj["displayAlignment"];
172       this.displayHeaderAlignment = (this.finalEditRowGetObj["displayHeaderAlignment"] == null ? "" : this.finalEditRowGetObj["displayHeaderAlignment"]);
173       this.sortable = this.finalEditRowGetObj["sortable"];
174       this.drilldownURL = this.finalEditRowGetObj["drilldownURL"];
175       this.drilldownParams = this.finalEditRowGetObj["drilldownParams"];
176       this.drilldownType = this.finalEditRowGetObj["drilldownType"];
177       this.drillDownObj["drillDownUrl"] = this.drilldownURL;
178       this.drillDownObj["drillDownParams"] = this.drilldownParams;
179       this.drillDownObj["drillDownType"] = this.drilldownType;
180
181
182
183       this. displayTotal = (this.finalEditRowGetObj["displayTotal"] == null ? "" : this.finalEditRowGetObj["displayTotal"]);
184
185
186       this._columnService.getDrillDownReportList()
187       .subscribe((responseURLList) => {
188         
189         this.URLListObj = responseURLList;
190
191         let l=0;
192         while(this.URLListObj[l])
193         {
194             this.URLListObjArray.push(this.URLListObj[l]);
195             l++;
196         }
197       });
198
199
200       this._columnService.getResponseTotalColsList()
201       .subscribe((responseTotalColList) => {
202
203         this.TotalColListObj = responseTotalColList;
204
205         let l=0;
206         while(this.TotalColListObj[l])
207         {
208             this.TotalColListObjArray.push(this.TotalColListObj[l]);
209             l++;
210         }
211       });
212
213       this.status = "Success!";
214       this.message = "Report Column - Edit";
215         this.showDialog = !this.showDialog;
216         this.closable = true; 
217
218
219
220         this.showSpinner = false;
221     });
222
223
224     
225   }
226
227   ngOnChanges()
228   {
229     console.log("Hit");
230   }
231
232   
233   close() {
234     
235     
236
237     this._columnService.getColumnList()
238     .subscribe((response) => {
239       this.showSpinner = true;
240       this.dataSource = new DataTableDataSource();
241       this.finalObjArr = [];
242       
243      this.finalGetObj = response;
244
245      let k=0;
246      while(this.finalGetObj[k])
247      {
248       this.finalGetObj[k]["no"] = k+1;
249       this.finalGetObj[k]["edit"] = "";
250
251       this.finalObjArr.push(this.finalGetObj[k]);
252     
253       k++;
254      }
255
256
257      
258
259       this.dataSource.data = this.finalObjArr;
260
261       this.dataSource.sort = this.sort;
262     this.dataSource.paginator = this.paginator;
263     this.table.dataSource = this.dataSource;
264     this.dataSource.data = this.finalObjArr;
265       //this.dataSource.data = [{id:"1", no:1, name:"1", edit:""}];
266
267       this.showSpinner = false;
268     });
269     this.showDialog = false;
270     this.showSaveColDialog =false;
271
272     // this.showDialog = !this.showDialog;
273     this.closable = false;
274
275     // this.showSaveColDialog =false;
276     this.showEditDrillDownPage = false;
277     this.Colclosable = false;
278     this.showConfirmButton = false;
279   }
280
281   complete()
282   {
283     this.showEditDrillDownPage = !this.showEditDrillDownPage;
284     this.showConfirmButton = false;
285   }
286
287   onCompleted(drilldownParamsArr : any)
288   {
289       this.drilldownParams = drilldownParamsArr["drilldownParams"];
290   }
291
292
293   save()
294   {
295
296     this.showSpinner = true;
297
298     this.finalPOSTObj["tabId"] = "ColEdit";
299     this.finalPOSTObj["tabName"] = "Column Edit";
300
301     this.finalPOSTObj["colId"] = this.id;
302     this.finalPOSTObj["colName"] = this.name;
303
304     this.finalPOSTObj["colType"] = "";
305     this.finalPOSTObj["colspan"] = this.colspan;
306     this.finalPOSTObj["dataType"] = this.dataType;
307     this.finalPOSTObj["depeondsOnForField"] = this.dependsOnFormFields;
308     this.finalPOSTObj["displayAlignment"] = this.displayAlignment;
309     this.finalPOSTObj["displayHeaderAlignment"] = this.displayHeaderAlignment;
310     this.finalPOSTObj["displayName"] = this.displayName;
311     this.finalPOSTObj["displayTotal"] = this.displayTotal;
312     this.finalPOSTObj["displayWidth"] = 10;
313     this.finalPOSTObj["displayWidthInPixel"] = this.displayWidthInPixel;
314     this.finalPOSTObj["drilldownParams"] = this.drilldownParams;
315     this.finalPOSTObj["drilldownType"] = "";
316     this.finalPOSTObj["drilldownURL"] = this.drilldownURL;
317     this.finalPOSTObj["errorMessage"] = "";
318     this.finalPOSTObj["errorStackTrace"] = "";
319     this.finalPOSTObj["groupByPos"] = this.groupByPos;
320     this.finalPOSTObj["hideRepeatedKey"] = this.hideRepeatedValues;
321     this.finalPOSTObj["indentation"] = this.indentation;
322     this.finalPOSTObj["level"] = this.multiGroupColumnLevel;
323     this.finalPOSTObj["noWrap"] = (this.noWrap === true? "Y" : "N");
324     this.finalPOSTObj["sortable"] = this.sortable;
325     this.finalPOSTObj["subTotalCustomText"] = this.displayTotal;
326     this.finalPOSTObj["visible"] = this.visible;
327
328     this._columnService.postColumnChanges(this.finalPOSTObj)
329     .subscribe((finalPOSTResponse) => {
330
331       if(finalPOSTResponse)
332       {
333         this.EditColstatus = "Success!";
334         this.EditColmessage = "Your change has been saved! Row definition is updated.";
335           this.showSaveColDialog = !this.showSaveColDialog;
336           
337           this.Colclosable = true; 
338     
339       }
340       else
341       {
342         this.EditColstatus = "Failure!";
343         this.EditColmessage = "Row definition could not be updated.";
344           this.showSaveColDialog = !this.showSaveColDialog;
345           
346           this.Colclosable = true;
347       }
348
349       this.showEditDrillDownPage = false;
350       this.showSpinner = false;
351     });
352
353   }
354
355
356   drillDownLinkPage()
357   {
358       this.showEditDrillDownPage = !this.showEditDrillDownPage;
359       this.showConfirmButton = true;
360   }
361
362
363 }