1 import {ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit, ViewChild} 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 {ColumnService} from '../column.service';
8 import {SemaphoreList} from '../model/semaphore-list';
9 import {Semaphore} from '../model/semaphore';
12 selector: 'app-column-list',
13 templateUrl: './column-list.component.html',
14 styleUrls: ['./column-list.component.css'],
16 export class ColumnListComponent implements OnInit {
17 @ViewChild(MatPaginator, {static: false} as any) paginator: MatPaginator;
18 @ViewChild(MatSort, {static: false} as any) sort: MatSort;
19 @ViewChild(MatTable, {static: false} as any) table: MatTable<DataTableItem>;
20 @Input('reportId') reportId: number;
21 dataSource: DataTableDataSource;
23 finalEditRowGetObj: {};
24 finalObjArr: DataTableItem[];
34 dependsOnFormFields: string;
37 customTextForSubTotal: string;
38 hideRepeatedValues: boolean;
39 multiGroupColumnLevel;
42 displayWidthInPixel: string;
44 displayAlignment: string;
45 displayHeaderAlignment: string;
50 URLListObjArray: {}[];
52 TotalColListObjArray: {}[];
55 showConfirmButton: boolean;
56 displayedColumns = ['no', 'id', 'name', 'edit'];
59 showSaveColDialog: boolean;
61 EditColmessage: string;
62 EditColstatus: string;
63 showEditDrillDownPage: boolean;
64 showAdvancedDisplayPage = false;
65 drillDownReportId: string;
66 drilldownParams: string;
67 drilldownType: string;
71 displayTable: boolean;
72 semaphoreList: SemaphoreList;
73 semaphoreName: String;
75 incomingDrillDownParams: string;
76 isIncomingDrillDownParams: boolean;
78 private newSemaphoreList: any;
79 private addDisplay = false;
82 constructor(private _http: HttpClient,
83 private _columnService: ColumnService,
84 private changeDetectorRefs: ChangeDetectorRef) {
86 this.showEditDrillDownPage = false;
87 this.showAdvancedDisplayPage = false;
88 this.showConfirmButton = false;
89 this.addDisplay = false;
90 this.dataSource = new DataTableDataSource();
91 this.finalGetObj = {};
92 this.finalObjArr = [];
93 this.finalEditRowGetObj = {};
94 this.URLListObjArray = [];
95 this.TotalColListObjArray = [];
96 this.finalPOSTObj = {};
97 this.drillDownObj = {};
99 this.showSpinner = false;
100 this.semaphoreList = new class implements SemaphoreList {
101 semaphore: Semaphore[];
103 this.semaphoreName = 'No Display';
104 this.semaphoreId = '';
105 this.incomingDrillDownParams = '';
106 this.isIncomingDrillDownParams = false;
110 this.displayTable = true;
111 this._columnService.getColumnList()
112 .subscribe((response) => {
113 this.showSpinner = true;
114 this.finalGetObj = response;
115 this.columnList = response;
117 while (this.finalGetObj[fgo_counter]) {
118 this.finalGetObj[fgo_counter]['no'] = fgo_counter + 1;
119 this.finalGetObj[fgo_counter]['edit'] = '';
120 this.finalObjArr.push(this.finalGetObj[fgo_counter]);
123 this.dataSource.data = this.finalObjArr;
124 this.dataSource.sort = this.sort;
125 this.dataSource.paginator = this.paginator;
126 this.table.dataSource = this.dataSource;
127 this.dataSource.data = this.finalObjArr;
128 this.showSpinner = false;
130 this.showDialog = false;
131 this.showSaveColDialog = false;
136 this.drillDownReportId = this.drilldownURL;
137 this.drillDownObj['drillDownUrl'] = this.drilldownURL;
138 this.drillDownObj['drillDownParams'] = this.drilldownParams;
139 this.drillDownObj['drillDownType'] = this.drilldownType;
143 editRecord(id: string) {
144 this.showSpinner = true;
145 this.semaphoreList = new class implements SemaphoreList {
146 semaphore: Semaphore[];
148 this.semaphoreName = 'No Display';
149 this.semaphoreId = '';
151 this._columnService.getIndividualColumnData(id)
152 .subscribe((response) => {
153 this.finalEditRowGetObj = response;
154 this.id = this.finalEditRowGetObj['colId'];
155 this.name = this.finalEditRowGetObj['colName'];
156 this.noWrap = (this.finalEditRowGetObj['noWrap'] === 'Y' ? true : false);
157 this.visible = this.finalEditRowGetObj['visible'];
158 this.dependsOnFormFields = this.finalEditRowGetObj['depeondsOnForField'];
159 this.dataType = this.finalEditRowGetObj['dataType'];
160 this.groupByPos = (this.finalEditRowGetObj['groupByPos'] == null ? 0 : this.finalEditRowGetObj['groupByPos']);
161 this.customTextForSubTotal = this.finalEditRowGetObj['subTotalCustomText'];
162 this.hideRepeatedValues = this.finalEditRowGetObj['hideRepeatedKey'];
163 this.multiGroupColumnLevel = (this.finalEditRowGetObj['level'] == null ? 0 : this.finalEditRowGetObj['level']);
164 this.colspan = (this.finalEditRowGetObj['colspan'] == null ? 0 : this.finalEditRowGetObj['colspan']);
165 this.displayName = this.finalEditRowGetObj['displayName'];
166 this.displayWidthInPixel = (this.finalEditRowGetObj['displayWidthInPixel'] == null ? 0 : this.finalEditRowGetObj['displayWidthInPixel']);
167 this.indentation = (this.finalEditRowGetObj['indentation'] == null ? 0 : this.finalEditRowGetObj['indentation']);
168 this.displayAlignment = this.finalEditRowGetObj['displayAlignment'];
169 this.displayHeaderAlignment = (this.finalEditRowGetObj['displayHeaderAlignment'] == null ? '' : this.finalEditRowGetObj['displayHeaderAlignment']);
170 this.sortable = this.finalEditRowGetObj['sortable'];
171 this.drilldownURL = this.finalEditRowGetObj['drilldownURL'];
172 this.drilldownParams = this.finalEditRowGetObj['drilldownParams'];
173 this.drilldownType = this.finalEditRowGetObj['drilldownType'];
174 this.drillDownObj['drillDownUrl'] = this.drilldownURL;
175 this.drillDownObj['drillDownParams'] = this.drilldownParams;
176 this.drillDownObj['drillDownType'] = this.drilldownType;
177 this.semaphoreList = this.finalEditRowGetObj['semaphoreList'];
178 this.semaphoreId = this.finalEditRowGetObj['semaphoreId'];
179 if (this.semaphoreId === '') {
180 this.semaphoreName = 'No Display';
182 if(this.semaphoreList && this.semaphoreList.semaphore){
183 for (let semCtr = 0; semCtr < this.semaphoreList.semaphore.length; semCtr++) {
184 if (this.semaphoreId === this.semaphoreList.semaphore[semCtr]['semaphoreId']) {
185 this.semaphoreName = this.semaphoreList.semaphore[semCtr]['semaphoreName'];
190 this.displayTotal = (this.finalEditRowGetObj['displayTotal'] == null ? '' : this.finalEditRowGetObj['displayTotal']);
191 this._columnService.getDrillDownReportList()
192 .subscribe((responseURLList) => {
193 this.URLListObj = responseURLList;
196 while (this.URLListObj[listCtr]) {
197 this.URLListObjArray.push(this.URLListObj[listCtr]);
201 this._columnService.getResponseTotalColsList()
202 .subscribe((responseTotalColList) => {
203 this.TotalColListObj = responseTotalColList;
205 while (this.TotalColListObj[colCtr]) {
206 this.TotalColListObjArray.push(this.TotalColListObj[colCtr]);
210 this.status = 'Success!';
211 this.message = 'Report Column - Edit';
212 this.showDialog = !this.showDialog;
213 this.closable = true;
214 this.showSpinner = false;
224 this.changeDetectorRefs.detectChanges();
225 this._columnService.getColumnList()
226 .subscribe((response) => {
227 this.showSpinner = true;
228 this.dataSource = new DataTableDataSource();
229 this.finalObjArr = [];
230 this.finalGetObj = response;
232 while (this.finalGetObj[fgo_counter]) {
233 this.finalGetObj[fgo_counter]['no'] = fgo_counter + 1;
234 this.finalGetObj[fgo_counter]['edit'] = '';
235 this.finalObjArr.push(this.finalGetObj[fgo_counter]);
238 this.dataSource.data = this.finalObjArr;
239 this.dataSource.sort = this.sort;
240 this.dataSource.paginator = this.paginator;
241 this.table.dataSource = this.dataSource;
242 this.dataSource.data = this.finalObjArr;
243 this.showSpinner = false;
245 this.showDialog = false;
246 this.showSaveColDialog = false;
247 this.closable = false;
248 this.showEditDrillDownPage = false;
249 this.showAdvancedDisplayPage = false;
250 this.addDisplay = false;
251 this.Colclosable = false;
252 this.showConfirmButton = false;
256 this.showEditDrillDownPage = !this.showEditDrillDownPage;
257 this.showConfirmButton = false;
258 this.isIncomingDrillDownParams = true;
261 onCompleted(drilldownParamsArr: any) {
262 this.incomingDrillDownParams = drilldownParamsArr;
267 this.changeDetectorRefs.detectChanges();
268 this.showSpinner = true;
269 this.finalPOSTObj['tabId'] = 'ColEdit';
270 this.finalPOSTObj['tabName'] = 'Column Edit';
271 this.finalPOSTObj['colId'] = this.id;
272 this.finalPOSTObj['colName'] = this.name;
273 this.finalPOSTObj['colType'] = '';
274 this.finalPOSTObj['colspan'] = this.colspan;
275 this.finalPOSTObj['dataType'] = this.dataType;
276 this.finalPOSTObj['depeondsOnForField'] = this.dependsOnFormFields;
277 this.finalPOSTObj['displayAlignment'] = this.displayAlignment;
278 this.finalPOSTObj['displayHeaderAlignment'] = this.displayHeaderAlignment;
279 this.finalPOSTObj['displayName'] = this.displayName;
280 this.finalPOSTObj['displayTotal'] = this.displayTotal;
281 this.finalPOSTObj['displayWidth'] = 10;
282 this.finalPOSTObj['displayWidthInPixel'] = this.displayWidthInPixel;
283 if (this.isIncomingDrillDownParams) {
284 this.finalPOSTObj['drilldownParams'] = this.incomingDrillDownParams;
286 this.finalPOSTObj['drilldownParams'] = this.drilldownParams;
288 this.finalPOSTObj['drilldownType'] = '';
289 this.finalPOSTObj['drilldownURL'] = this.drilldownURL;
290 this.finalPOSTObj['errorMessage'] = '';
291 this.finalPOSTObj['errorStackTrace'] = '';
292 this.finalPOSTObj['groupByPos'] = this.groupByPos;
293 this.finalPOSTObj['hideRepeatedKey'] = this.hideRepeatedValues;
294 this.finalPOSTObj['indentation'] = this.indentation;
295 this.finalPOSTObj['level'] = this.multiGroupColumnLevel;
296 this.finalPOSTObj['noWrap'] = (this.noWrap === true ? 'Y' : 'N');
297 this.finalPOSTObj['sortable'] = this.sortable;
298 this.finalPOSTObj['subTotalCustomText'] = this.displayTotal;
299 this.finalPOSTObj['visible'] = this.visible;
300 if (this.semaphoreName === 'No Display') {
301 this.semaphoreId = '';
303 if(this.semaphoreList && this.semaphoreList.semaphore){
304 for (let slcount = 0; slcount < this.semaphoreList.semaphore.length; slcount++) {
305 if (this.semaphoreName === this.semaphoreList.semaphore[slcount].semaphoreName) {
306 this.semaphoreId = this.semaphoreList.semaphore[slcount].semaphoreId;
307 this.semaphoreList.semaphore[slcount].comment = this.id;
312 this.finalPOSTObj['semaphoreId'] = this.semaphoreId;
313 this.finalPOSTObj['semaphoreList'] = this.semaphoreList;
315 this._columnService.postColumnChanges(this.finalPOSTObj)
316 .subscribe((finalPOSTResponse) => {
317 if (finalPOSTResponse) {
318 this.EditColstatus = 'Success!';
319 this.EditColmessage = 'Your change has been saved! Row definition is updated.';
320 this.showSaveColDialog = !this.showSaveColDialog;
321 this.Colclosable = true;
323 this.EditColstatus = 'Failure!';
324 this.EditColmessage = 'Row definition could not be updated.';
325 this.showSaveColDialog = !this.showSaveColDialog;
326 this.Colclosable = true;
328 this.showEditDrillDownPage = false;
329 this.showAdvancedDisplayPage = false;
330 this.isIncomingDrillDownParams = false;
331 this.addDisplay = false;
332 this.showSpinner = false;
338 drillDownLinkPage() {
339 this.showEditDrillDownPage = !this.showEditDrillDownPage;
340 this.showConfirmButton = true;
344 this.showAdvancedDisplayPage = true;
348 finishAdvancedDisplay(displayObj: any) {
349 this.addDisplay = false;
350 this.semaphoreName = displayObj['semName'];
351 this.semaphoreList = displayObj['semList'];
352 this.semaphoreId = displayObj['semId'];
353 this.showAdvancedDisplayPage = displayObj['setCloseDisplay'];
357 this.showAdvancedDisplayPage = true;
358 this.addDisplay = true;