summaryrefslogtreecommitdiffstats
path: root/ecomp-sdk/epsdk-app-overlay/src/main/webapp/ngapp/src/app/pages/analytics/Report_List/Report/columns/columns-edit-component/edit-drill-down-link/edit-drill-down-link.component.ts
blob: 26e85c01a31343c0570d2455b93a98f116f2a158 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
import {Component, OnInit, Input, EventEmitter, Output} from '@angular/core';
import {trigger, transition, style, animate} from '@angular/animations';
import {HttpClient} from '@angular/common/http';
import {ColumnService} from '../../column.service';
import {DrillDownModel} from './drill-down-model';
import { FormFieldsService } from '../../../form-fields/form-fields.service';


@Component({
    selector: 'app-edit-drill-down-link',
    templateUrl: './edit-drill-down-link.component.html',
    styleUrls: ['./edit-drill-down-link.component.css']
})
export class EditDrillDownLinkComponent implements OnInit {


    @Input() closable = true;
    @Input() visible: boolean;

    @Input('reportId') reportId: number;
    @Input('drillDownObj') drillDownObj: {};

    @Output() completed = new EventEmitter<any>();

    drillDownColsList: {}[];
    valueOfColumnsList: {}[];
    showSpinner: boolean;

    valueOfColumns: string;
    valueOfColumnsArr: any[];
    valueOfFormFieldArr: any[];
    fixedValueArr: any[];

    noValueRadioArr: any[];
    valueValueArr: any[];
    radioButtonCheckedArr: boolean[];
    fieldValuesArr: string[];
    drillDownModel: DrillDownModel[] = [];

    postDrillDownObj: {};
    drillDownArray: any[];
    formFieldsListObj : any;

    constructor(private _http: HttpClient, private _columnService: ColumnService,private _formFieldsService : FormFieldsService) {
        this.drillDownColsList = [];
        this.valueOfColumnsList = [];
        this.showSpinner = true;
        this.valueOfColumnsArr = [];
        this.valueOfFormFieldArr = [];
        this.postDrillDownObj = {};
        this.noValueRadioArr = [];
        this.valueValueArr = [];
        this.radioButtonCheckedArr = [];
        this.fieldValuesArr = [];
        this.drillDownArray = [];
        this.formFieldsListObj = [];
    }

    ngOnInit() {
        console.log(this.drillDownObj);
        this._formFieldsService.getListOfFormFields()
        .subscribe((responseFormFields) => {
          for (let m = 0; m < responseFormFields.length; m++) {
            responseFormFields[m]["orderSeq"] = m + 1;
            this.formFieldsListObj.push(responseFormFields[m]);
          }
        });
        this._columnService.getDrillDownReportColumnDetails(this.drillDownObj['drillDownUrl'])
            .subscribe((response) => {
                console.log(response);
                let i = 0;
                while (response[i]) {
                    this.drillDownColsList.push(response[i]);
                    const model = new DrillDownModel(response[i]['id'], response[i]['name'], 'No Value');
                    this.drillDownModel.push(model);
                    i++;
                }
                console.log(this.drillDownColsList);
                this._columnService.getColumnList()
                    .subscribe((responseValueOfColumn) => {
                        console.log(responseValueOfColumn);
                        let k = 0;
                        while (responseValueOfColumn[k]) {
                            this.valueOfColumnsList.push(responseValueOfColumn[k]);
                            k++;
                        }
                        this.drillDownArray = this.generateDrillDownArray(this.drillDownObj['drillDownParams']) ;
                        let isFieldValue = false;
                        let dda_cntr = 0;
                        for (dda_cntr = 0; dda_cntr < this.drillDownArray.length; dda_cntr++) {
                            let isFixedValue = true;
                            let vcl_cntr = 0;
                            for (vcl_cntr = 0; vcl_cntr < this.valueOfColumnsList.length; vcl_cntr++) {
                                if (this.drillDownArray[dda_cntr]['value'] === this.valueOfColumnsList[vcl_cntr]['id']) {
                                    let ddm_cntr = 0;
                                    for (ddm_cntr = 0; ddm_cntr < this.drillDownModel.length; ddm_cntr++) {
                                        if (this.drillDownModel[ddm_cntr]['id'] === this.drillDownArray[dda_cntr]['id']) {
                                            this.drillDownModel[ddm_cntr].radioButtonValue = 'column';
                                            this.drillDownModel[ddm_cntr].valueOfColumnData = this.valueOfColumnsList[vcl_cntr]['name'];
                                            this.drillDownModel[ddm_cntr].selected = 'column';
                                            this.drillDownModel[ddm_cntr].columnID = this.valueOfColumnsList[vcl_cntr]['id'];
                                            isFixedValue = false;
                                        }
                                    }
                                }
                            }
                            let ddcl_cntr = 0;
                            for (ddcl_cntr = 0; ddcl_cntr < this.formFieldsListObj.length; ddcl_cntr++) {
                                if (this.drillDownArray[dda_cntr]['value'] === this.formFieldsListObj[ddcl_cntr]['id']) {
                                    let ddm_cntr = 0;
                                    for (ddm_cntr = 0; ddm_cntr < this.drillDownModel.length; ddm_cntr++) {
                                        if (this.drillDownModel[ddm_cntr]['id'] === this.drillDownArray[dda_cntr]['id']) {
                                            this.drillDownModel[ddm_cntr].radioButtonValue = 'field';
                                            this.drillDownModel[ddm_cntr].valueOfFormFieldData = this.formFieldsListObj[ddcl_cntr]['name'];
                                            this.drillDownModel[ddm_cntr].selected = 'field';
                                            isFixedValue = false;
                                            isFieldValue = true;
                                        }
                                    }
                                }
                            }
                            if (isFixedValue && this.drillDownArray[dda_cntr]['value'] !== null) {
                                let ddm_cntr = 0;
                                for (ddm_cntr = 0; ddm_cntr < this.drillDownModel.length; ddm_cntr++) {
                                    if (this.drillDownModel[ddm_cntr]['id'] === this.drillDownArray[dda_cntr]['id']) {
                                        this.drillDownModel[ddm_cntr].radioButtonValue = 'fixed';
                                        this.drillDownModel[ddm_cntr].fixedValueData = this.drillDownArray[dda_cntr]['value'];
                                        this.drillDownModel[ddm_cntr].selected = 'fixed';
                                    }
                                }
                            }
                        }
                        this.showSpinner = false;
                    });
            });
    }

    ngDoCheck() {
        let outPut = '';
        if (this.drillDownModel.length > 0) {
            let ddm_cntr = 0;
            for (ddm_cntr = 0; ddm_cntr < this.drillDownModel.length; ddm_cntr++) {
                const fixedValue = this.drillDownModel[ddm_cntr].fixedValueData;
                if (this.drillDownModel[ddm_cntr].radioButtonValue === 'fixed') {
                    outPut = outPut + this.drillDownModel[ddm_cntr].id + '=' +
                        fixedValue + '&;';
                }
                if (this.drillDownModel[ddm_cntr].radioButtonValue === 'column') {
                    let value_counter = 0;
                    let valueOut = '';
                    for (value_counter = 0; value_counter < this.valueOfColumnsList.length; value_counter++) {
                        if (this.valueOfColumnsList[value_counter]['name'] === this.drillDownModel[ddm_cntr].valueOfColumnData) {
                            valueOut = this.valueOfColumnsList[value_counter]['id'];
                        }
                    }
                    outPut = outPut + this.drillDownModel[ddm_cntr].id + '=' + '['
                        + valueOut + ']' + '&;';
                }
                if (this.drillDownModel[ddm_cntr].radioButtonValue === 'field') {
                    let fieldCntr = 0;
                    let fieldOut = '';
                    for (fieldCntr = 0; fieldCntr < this.formFieldsListObj.length; fieldCntr++) {
                        if (this.formFieldsListObj[fieldCntr]['name'] === this.drillDownModel[ddm_cntr].valueOfFormFieldData) {
                            fieldOut = this.formFieldsListObj[fieldCntr]['id'];
                        }
                    }
                    outPut = outPut + this.drillDownModel[ddm_cntr].id + '=' + '[!'
                        + fieldOut + ']' + '&;';
                }
            }
            if (outPut.endsWith('&;')) {
                outPut = outPut.substring(0, outPut.length - 2);
            }
        }
        this.completed.emit(outPut);
    }

    generateDrillDownArray(value: String) {
        const generatedArray = [];
        if (value != null) {
            value = value.replace(/\[/g, '').replace(/\]/g, '').replace(/;/g, '').replace(/\!/g, '');
            const firstSplit = value.split('&');
            for (let i = 0; i < firstSplit.length; i++) {
                const secondSplit = firstSplit[i].split('=');
                generatedArray.push({
                    id: secondSplit[0],
                    value: secondSplit[1]
                });
            }
        }
        return generatedArray;
    }

    save() {
        this.completed.emit('hello');
    }
}