From 84ef33d8a4eaf79fce9a2fbb19c2fffd95155396 Mon Sep 17 00:00:00 2001 From: "venbatechnologies@gmail.com" Date: Fri, 6 Nov 2020 11:09:40 +0530 Subject: [PATCH] Fairoj : All templates are created and related save and fetching done. smc credit pd old removed --- ng6-seed/src/app/app.routing.ts | 8 +- .../dynamic-form/dynamic-form.component.html | 37 +- .../dynamic-form/dynamic-form.component.scss | 6 + .../dynamic-form/dynamic-form.component.ts | 63 +- .../dynamic-question-template.component.html | 15 +- .../dynamic-question-template.component.scss | 40 ++ .../dynamic-question-template.component.ts | 212 +++++- .../ques-form/ques-form.service.ts | 97 ++- .../start-pd/forms/form/form.component.html | 10 +- .../start-pd/forms/form/form.component.ts | 241 ++++++- .../menu-items/horizontal-menu-items.ts | 18 +- .../src/app/shared/menu-items/menu-items.ts | 18 +- .../assets/data/SMC_CREDIT_TEMPLATES/1.json | 5 + .../assets/data/SMC_CREDIT_TEMPLATES/10.json | 679 ++++++++++++++++++ .../assets/data/SMC_CREDIT_TEMPLATES/11.json | 396 ++++++++++ .../assets/data/SMC_CREDIT_TEMPLATES/12.json | 396 ++++++++++ .../assets/data/SMC_CREDIT_TEMPLATES/13.json | 188 +++++ .../assets/data/SMC_CREDIT_TEMPLATES/14.json | 104 +++ .../assets/data/SMC_CREDIT_TEMPLATES/15.json | 183 +++++ .../assets/data/SMC_CREDIT_TEMPLATES/16.json | 122 ++++ .../assets/data/SMC_CREDIT_TEMPLATES/18.json | 271 +++++++ .../assets/data/SMC_CREDIT_TEMPLATES/19.json | 53 ++ .../assets/data/SMC_CREDIT_TEMPLATES/20.json | 215 ++++++ .../assets/data/SMC_CREDIT_TEMPLATES/3.json | 9 +- .../assets/data/SMC_CREDIT_TEMPLATES/4.json | 139 ++++ .../assets/data/SMC_CREDIT_TEMPLATES/5.json | 248 +++++++ .../assets/data/SMC_CREDIT_TEMPLATES/6.json | 88 +++ .../assets/data/SMC_CREDIT_TEMPLATES/7.json | 138 ++++ .../assets/data/SMC_CREDIT_TEMPLATES/8.json | 677 +++++++++++++++++ .../assets/data/SMC_CREDIT_TEMPLATES/9.json | 163 +++++ 30 files changed, 4775 insertions(+), 64 deletions(-) create mode 100644 ng6-seed/src/assets/data/SMC_CREDIT_TEMPLATES/10.json create mode 100644 ng6-seed/src/assets/data/SMC_CREDIT_TEMPLATES/11.json create mode 100644 ng6-seed/src/assets/data/SMC_CREDIT_TEMPLATES/12.json create mode 100644 ng6-seed/src/assets/data/SMC_CREDIT_TEMPLATES/13.json create mode 100644 ng6-seed/src/assets/data/SMC_CREDIT_TEMPLATES/14.json create mode 100644 ng6-seed/src/assets/data/SMC_CREDIT_TEMPLATES/15.json create mode 100644 ng6-seed/src/assets/data/SMC_CREDIT_TEMPLATES/16.json create mode 100644 ng6-seed/src/assets/data/SMC_CREDIT_TEMPLATES/18.json create mode 100644 ng6-seed/src/assets/data/SMC_CREDIT_TEMPLATES/19.json create mode 100644 ng6-seed/src/assets/data/SMC_CREDIT_TEMPLATES/20.json create mode 100644 ng6-seed/src/assets/data/SMC_CREDIT_TEMPLATES/4.json create mode 100644 ng6-seed/src/assets/data/SMC_CREDIT_TEMPLATES/5.json create mode 100644 ng6-seed/src/assets/data/SMC_CREDIT_TEMPLATES/6.json create mode 100644 ng6-seed/src/assets/data/SMC_CREDIT_TEMPLATES/7.json create mode 100644 ng6-seed/src/assets/data/SMC_CREDIT_TEMPLATES/8.json create mode 100644 ng6-seed/src/assets/data/SMC_CREDIT_TEMPLATES/9.json diff --git a/ng6-seed/src/app/app.routing.ts b/ng6-seed/src/app/app.routing.ts index b275f26..a8da817 100755 --- a/ng6-seed/src/app/app.routing.ts +++ b/ng6-seed/src/app/app.routing.ts @@ -34,10 +34,10 @@ export const AppRoutes: Routes = [{ path:'sales-pd-list', component:SalesPdComponent }, - { - path:'credit_pd', - loadChildren:'./lender-credit-pd/lender-credit-pd.module#LenderCreditPdModule' - }, + // { + // path:'credit_pd', + // loadChildren:'./lender-credit-pd/lender-credit-pd.module#LenderCreditPdModule' + // }, // { // path:'reports', // loadChildren:'./reports/reports.module#ReportsModule' diff --git a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/dynamic-form/dynamic-form/dynamic-form.component.html b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/dynamic-form/dynamic-form/dynamic-form.component.html index c0f51dc..026b9b4 100644 --- a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/dynamic-form/dynamic-form/dynamic-form.component.html +++ b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/dynamic-form/dynamic-form/dynamic-form.component.html @@ -1,25 +1,32 @@
-
+ - +
+ +
-
- +
- - + + {{parent_ques.group_title}} {{g_i+1}} @@ -28,11 +35,15 @@ Type your name and age --> -
- + +
+ + +
-
+
+
- +
- +
\ No newline at end of file diff --git a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/dynamic-form/dynamic-form/dynamic-form.component.scss b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/dynamic-form/dynamic-form/dynamic-form.component.scss index e69de29..48a86b6 100644 --- a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/dynamic-form/dynamic-form/dynamic-form.component.scss +++ b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/dynamic-form/dynamic-form/dynamic-form.component.scss @@ -0,0 +1,6 @@ +::ng-deep { + .mat-expansion-panel-body{ + flex-flow: wrap; + place-content: space-between; + } +} \ No newline at end of file diff --git a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/dynamic-form/dynamic-form/dynamic-form.component.ts b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/dynamic-form/dynamic-form/dynamic-form.component.ts index 51d6239..c68885d 100644 --- a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/dynamic-form/dynamic-form/dynamic-form.component.ts +++ b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/dynamic-form/dynamic-form/dynamic-form.component.ts @@ -1,8 +1,10 @@ -import { Component, OnInit, Input } from '@angular/core'; +import { Component, OnInit, Input, ViewChild } from '@angular/core'; import { FormGroup, FormBuilder, FormArray } from '@angular/forms'; +import { MatExpansionPanel } from '@angular/material'; import { QuesFormService } from '../ques-form/ques-form.service'; + @Component({ selector: 'app-dynamic-form', templateUrl: './dynamic-form.component.html', @@ -14,16 +16,68 @@ export class DynamicFormComponent implements OnInit { @Input() questions_JSON:any; @Input() json_answers:any; step: number=0; + @ViewChild('mapanel') matExpansionPanel:MatExpansionPanel constructor(private _fb:FormBuilder,private questionService:QuesFormService) { } ngOnInit() { // this.form_group_name=new FormGroup({questions:this._fb.array([])}) console.log(this.questions_JSON,this.json_answers,this.questionService); this.form_group_name=this.questionService.assignFormControl_array(this.form_group_name,this.questions_JSON.questions) + // debugger + this.generateGroupControls(); + } + generateGroupControls() { + if(this.json_answers && this.json_answers != null ){ + this.questions_JSON.questions.forEach(parent_ques=>{ + console.log(parent_ques); + // debugger; + // FOR ADDING THE GROUP QUES TO DISPLAY WITHOUT CONSIDERING INDEX 0 + if(parent_ques.is_repeatable == '1'){ + if(this.json_answers[parent_ques.group_key] && this.json_answers[parent_ques.group_key].length > this.form_group_name.value[parent_ques.group_key].length) { + console.log(this.json_answers[parent_ques.group_key]); + + this.json_answers[parent_ques.group_key].forEach((group_ques,g_i)=>{ + console.log(parent_ques,g_i) + + if(g_i != 0){ + // let parent_control=this.form_group_name + + // if(parent_control.value.hasOwnProperty('questions_group')){ + this.addData(g_i,parent_ques) + // } + } +}) +} + } + }) + } } ngOnChanges() { console.log(this.questions_JSON,this.json_answers,this.questionService); + // debugger +// if(this.json_answers && this.json_answers != null ){ +// this.questions_JSON.questions.forEach(parent_ques=>{ +// console.log(parent_ques); +// // debugger; +// // FOR ADDING THE GROUP QUES TO DISPLAY WITHOUT CONSIDERING INDEX 0 +// if(parent_ques.is_repeatable == '1'){ +// console.log(this.json_answers[parent_ques.group_key]); +// debugger; +// this.json_answers[parent_ques.group_key].forEach((group_ques,g_i)=>{ +// console.log(parent_ques,g_i) +// debugger; +// if(g_i != 0){ +// // let parent_control=this.form_group_name + +// // if(parent_control.value.hasOwnProperty('questions_group')){ +// this.addData(g_i,parent_ques) +// // } +// } +// }) +// } +// }) +// } // this.form_group_name=new FormGroup({questions:this._fb.array([])}) console.log(this.form_group_name); @@ -40,6 +94,7 @@ export class DynamicFormComponent implements OnInit { control_names[val.question_key] = '' }) console.log(control,json_obj.group_key,control_names); + json_obj.group_questions.push(json_obj.question); control.push(this._fb.group(control_names)) @@ -64,5 +119,11 @@ export class DynamicFormComponent implements OnInit { this.step = control.length-1 console.log(json_obj) } + openMatExpansionPanel() { + console.log("opening expansion panek",this.matExpansionPanel) + if(this.matExpansionPanel!= undefined){ + this.matExpansionPanel.open() + } + } } diff --git a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/dynamic-form/dynamic-question-template/dynamic-question-template.component.html b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/dynamic-form/dynamic-question-template/dynamic-question-template.component.html index 406995e..c236e59 100644 --- a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/dynamic-form/dynamic-question-template/dynamic-question-template.component.html +++ b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/dynamic-form/dynamic-question-template/dynamic-question-template.component.html @@ -1,4 +1,10 @@
+
+ + {{parent_ques.sub_title}} + +
+
@@ -70,16 +76,17 @@ - + {{formGroupN.value[parent_ques.question_key] | json}} +
{{parent_ques.question}} diff --git a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/dynamic-form/dynamic-question-template/dynamic-question-template.component.scss b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/dynamic-form/dynamic-question-template/dynamic-question-template.component.scss index eec25d9..fc6d1d3 100644 --- a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/dynamic-form/dynamic-question-template/dynamic-question-template.component.scss +++ b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/dynamic-form/dynamic-question-template/dynamic-question-template.component.scss @@ -31,4 +31,44 @@ mat-form-field { // font-size: 12px; height: 28px; + } + + @-webkit-keyframes highlight-fade { + 0% { + background: orange; + } + 100% { + background: white; + } + } + @-moz-keyframes highlight-fade { + 0% { + background: orange; + } + 100% { + background: white; + } + } + @-ms-keyframes highlight-fade { + 0% { + background: orange; + } + 100% { + background: white; + } + } + @keyframes highlight-fade { + 0% { + background: orange; + } + 100% { + background: white; + } + } + .field_highlight { + -webkit-animation: highlight-fade 4s ease-out; + -moz-animation: highlight-fade 4s ease-out; + -o-animation: highlight-fade 4s ease-out; + animation: highlight-fade 4s ease-out; + // background: blue; } \ No newline at end of file diff --git a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/dynamic-form/dynamic-question-template/dynamic-question-template.component.ts b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/dynamic-form/dynamic-question-template/dynamic-question-template.component.ts index d47c7b5..f0b4b2c 100644 --- a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/dynamic-form/dynamic-question-template/dynamic-question-template.component.ts +++ b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/dynamic-form/dynamic-question-template/dynamic-question-template.component.ts @@ -1,5 +1,5 @@ -import { Component, OnInit, Input } from '@angular/core'; -import { FormGroup, FormArray, FormControl } from '@angular/forms'; +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; +import { FormGroup, FormArray, FormControl, FormBuilder } from '@angular/forms'; import { QuesFormService } from '../ques-form/ques-form.service'; import { startWith, map } from 'rxjs/operators'; import { Observable, ReplaySubject } from 'rxjs'; @@ -18,12 +18,14 @@ export class DynamicQuestionTemplateComponent implements OnInit { @Input() json_index:any; @Input() whole_form:FormGroup; @Input() json_answers:any; + @Input()group_key:any; + @Output() generateGroupControls= new EventEmitter() local_city: any; local_pincode: any; autoCompleteAns:Observable public commonFilterCtrl:FormControl = new FormControl(); public ngxFilteredValue:ReplaySubject = new ReplaySubject(1); - constructor(private quesService:QuesFormService) { } + constructor(private quesService:QuesFormService,private _fb:FormBuilder) { } ngOnInit() { if(this.parent_ques.type == '9' && this.parent_ques.answers && this.parent_ques.answers.length > 0) { @@ -32,24 +34,63 @@ export class DynamicQuestionTemplateComponent implements OnInit { map(value => this.autoCompleteFilter(value)) ) } + } ngOnChanges() { this.parent_ques = this.currFormArrayObj - console.log(this.parent_ques,this.formGroupN); if(this.json_answers!=null && this.json_answers != undefined && this.json_answers) { - console.log("ddddddddddddddd",this.json_answers[this.parent_ques.question_key],this.parent_ques) + // console.log("ddddddddddddddd",this.json_answers[this.parent_ques.question_key],this.parent_ques) setTimeout(()=>{ + console.clear() + console.log(this.json_answers,this.parent_ques.question_key) + if(this.json_answers!=null && this.json_answers != undefined && this.json_answers && !this.group_key) { this.formGroupN.get(this.parent_ques.question_key).patchValue((this.json_answers[this.parent_ques.question_key] || '')) this.onChangeProperty({value:this.json_answers[this.parent_ques.question_key]},this.parent_ques,'') + console + } + else if(this.json_answers!=null && this.json_answers != undefined && this.json_answers){ + // this.formGroupN.patchValue((this.json_answers[this.group_key] || '')) + console.log(this.json_answers,this.whole_form.get(this.group_key)) + // debugger; + this.whole_form.get(this.group_key).patchValue(this.json_answers) + if(this.json_answers.length > 1) { + this.generateGroupControls.emit() + } + this.json_answers.forEach((value,index)=>{ + let keys= Object.keys(value) + keys.forEach(vv=>{ + // console.log("ansssssssssssssssssssssssssssss",this.json_answers[vv],vv,this.whole_json.filter(vl=>vl.question_key == vv)) + if(this.whole_form.get(this.group_key)) { + + let curr_obj=this.whole_json.filter(vl=>vl.question_key == vv)[0] + this.onChangeProperty({value:value[vv]},curr_obj,'') + } + console.log("Repeatable ques",value,this.parent_ques.question_key) + }) }) + // debugger; + + } + // this.formGroupN.get(this.parent_ques.question_key).patchValue((this.json_answers[this.parent_ques.question_key] || '')) + // setTimeout(()=>{ + // console.log("last on change fun",this.json_answers[this.parent_ques.question_key],this.parent_ques.question_key) + // debugger; + // this.onChangeProperty({value:this.json_answers[this.parent_ques.question_key]},this.parent_ques,'') + // },1000) + // this.formGroupN.patchValue(this.json_answers) + }) + // this.formGroupN.get(this.parent_ques.question_key).patchValue(this.json_answers[this.parent_ques.question_key]) // this.onChangeProperty({value:this.json_answers[this.parent_ques.question_key]},this.parent_ques,'') setTimeout(()=>{ this.json_answers = null },700) } + // console.log(this.parent_ques,this.formGroupN,this.whole_json ,this.json_answers); + // debugger; + if(this.parent_ques.type == '8') { console.log("Initial",this.parent_ques.answers) if(this.parent_ques.answers && this.parent_ques.answers.length > 0){ @@ -261,9 +302,97 @@ export class DynamicQuestionTemplateComponent implements OnInit { // this.creteNewField(onChangeProperty,this.quesAnsForm,sec_control,sec_index) // } } + if(onChangeProperty.purpose == 'answer_value') { + this.setModifiedValuetoControl(onChangeProperty,this.formGroupN,sec_index) + } + // for calculation field from multiple arr values + if(onChangeProperty.purpose == 'answer_value_arr') { + let index = JSON.parse(JSON.stringify(this.json_index)) + this.setModifiedValuetoControl_frommultiple(onChangeProperty,this.whole_form.get(this.group_key),index) + } }) } } + setModifiedValuetoControl_frommultiple(curr_obj,formArray,curr_index ?) { + console.log(curr_obj,formArray,this.json_index); + if(curr_obj && curr_obj.value_keys.length > 0 && curr_obj.arr_include.length > 0 ) { + let expression_value=curr_obj.expression + for(let index_str of curr_obj.arr_include) { + let value_index; + if(index_str == 'py') { + if(curr_index == 0) { + formArray.controls[curr_index].controls[curr_obj.insert_control].setValue(0) + } + if(formArray.value.length < 2) { + return; + } + value_index = curr_index-1 + } + if(index_str == 'now'){ + value_index = curr_index + } + for(let value of curr_obj.value_keys) { + console.log("dsf",value_index,value,value+'['+index_str+']',index_str) + let control_value = formArray.value[value_index] ? formArray.value[value_index][value] : '' + if(control_value) { + expression_value = expression_value.split(value+'['+index_str+']').join(control_value) + } + else{ + return + } + } + } + if(expression_value) { + let calc_exp=eval(expression_value) + console.log(calc_exp) + if(calc_exp){ + if(typeof(calc_exp) == 'number'){ + calc_exp = calc_exp.toFixed(2) + } + if(curr_obj.insert_control) { + formArray.controls[curr_index].controls[curr_obj.insert_control].setValue(calc_exp) + if(formArray.value.length > curr_index+1) { + console.log("Current index",curr_index,this.json_index) + this.setModifiedValuetoControl_frommultiple(curr_obj,formArray,curr_index+1) + } + } + } + } + } + + } + // for setting the modified value to another or same control while field change + setModifiedValuetoControl(curr_obj,form_control_obj,curr_index) { + console.log(curr_obj,form_control_obj,curr_index) + if(curr_obj && curr_obj.value_keys.length > 0){ + let expression_value=curr_obj.expression + // curr_obj.value_keys.forEach(val=>{ + for(let val of curr_obj.value_keys) { + let control_value + control_value =form_control_obj.value[val] + if(control_value) { + expression_value = expression_value.replace(val,control_value) + } + else{ + return; + } + } + // }) + console.log(expression_value) + let calc_exp=eval(expression_value) + console.log(calc_exp) + if(calc_exp){ + if(typeof(calc_exp) == 'number'){ + calc_exp = calc_exp.toFixed(2) + } + if(curr_obj.insert_control) { + form_control_obj.controls[curr_obj.insert_control].setValue(calc_exp) + } + } + } + + } + creteNewField(form_control_obj_raw,group_ques,sec_control,sec_index,purpose?){ console.log(group_ques,form_control_obj_raw,sec_index); if(form_control_obj_raw.form_controls.length > 0){ @@ -312,10 +441,52 @@ export class DynamicQuestionTemplateComponent implements OnInit { console.log(form_control_obj,group_ques,question_index_after) let ques_control=this.whole_json let inserted_control_obj=form_control_obj - inserted_control_obj.questions.sort() - inserted_control_obj.questions.reverse() - inserted_control_obj.questions.forEach(val=>{ - if(options == 1){ + // inserted_control_obj.questions.sort() + // inserted_control_obj.questions.reverse() + console.log("check ddddddddddd",inserted_control_obj.questions.reverse(),inserted_control_obj.questions) + inserted_control_obj.questions.forEach((val,index)=>{ + if(val.hasOwnProperty('is_repeatable') && val.is_repeatable == '1') { + if(options == 1) { + let check_dup=ques_control.filter(control_key=>control_key.group_key == val.group_key) + console.log(check_dup,this.formGroupN); + if(check_dup.length == 0){ + this.formGroupN.addControl(val.group_key,this._fb.array([])) + // val.question.reverse() + let childControl: any = this.formGroupN.get(val.group_key) as FormArray + let control_names:any={} + inserted_control_obj.questions[index].group_questions = [] + inserted_control_obj.questions[index].group_questions.push(val.question) + this.whole_json.splice(question_index_after+1,0,val); + val.question.forEach(group_val=>{ + control_names[group_val.question_key] = '' + console.log("check ffffff",inserted_control_obj.questions.reverse(),inserted_control_obj.questions,group_val) + this.addOrRemoveControl(group_val,ques_control,question_index_after,options,val) + }) + const question_temp:any = JSON.parse(JSON.stringify(val.question)); + inserted_control_obj.questions[index].question = question_temp + childControl.push(this._fb.group(control_names)) + val.group_questions[0].forEach((group_indi,arr_index)=>{ + console.log("sd",childControl) + this.quesService.addAdditionalControl(group_indi, childControl.controls[0], arr_index) + }) + } + } + else{ + // let childControl: any = this.formGroupN.get(val.group_key) as FormArray + val.question.forEach(group_val=>{ + // control_names[group_val.question_key] = '' + console.log("check ffffff",inserted_control_obj.questions.reverse(),inserted_control_obj.questions,group_val) + this.addOrRemoveControl(group_val,ques_control,question_index_after,options,val) + }) + } + } + else{ + this.addOrRemoveControl(val,ques_control,question_index_after,options,val) + } + }) + } + addOrRemoveControl(val,ques_control,question_index_after,options,paren_ques) { + if(options == 1){ let check_dup=ques_control.filter(control_key=>control_key.question_key == val.question_key) console.log(check_dup,this.formGroupN); @@ -323,22 +494,39 @@ export class DynamicQuestionTemplateComponent implements OnInit { if(check_dup.length == 0){ val.raw_validations=val.validations // ques_control.insert(question_index_after+1,this.questionService.createValue(val)) - this.whole_json.splice(question_index_after+1,0,val); + if(paren_ques.hasOwnProperty('is_repeatable') && paren_ques.is_repeatable == '1') { + + // this.formGroupN.addControl(val.question_key,new FormControl('')) + } + else{ + this.whole_json.splice(question_index_after+1,0,val); this.formGroupN.addControl(val.question_key,new FormControl('')) - console.log("After adding control",this.whole_json,this.formGroupN,this.whole_form); this.quesService.addAdditionalControl(val, this.formGroupN, question_index_after+1,"") + } + console.log("After adding control",this.whole_json,this.formGroupN,this.whole_form); + } } else{ + console.log("Delete",ques_control) ques_control.forEach((control_key,index)=>{ + if(paren_ques.hasOwnProperty('is_repeatable') && paren_ques.is_repeatable == '1') { + if(control_key.group_key == paren_ques.group_key){ + this.whole_json.splice(index,1) + // this.formGroupN.controls[val.question_key].reset() + this.formGroupN.removeControl(paren_ques.group_key); + } + console.log(this.formGroupN,this.whole_json) + } + else{ if(control_key.question_key == val.question_key){ this.whole_json.splice(index,1) this.formGroupN.controls[val.question_key].reset() this.formGroupN.removeControl(val.question_key); } + } }) } - }) } setValidations_onChange(validation_obj_raw,group_ques,sec_control,sec_index){ diff --git a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/dynamic-form/ques-form/ques-form.service.ts b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/dynamic-form/ques-form/ques-form.service.ts index d3c7cdf..2efad49 100644 --- a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/dynamic-form/ques-form/ques-form.service.ts +++ b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/dynamic-form/ques-form/ques-form.service.ts @@ -2,6 +2,7 @@ import { Injectable } from '@angular/core'; import { FormGroup, FormArray, FormBuilder, FormControl, Validators } from '@angular/forms'; import { HttpClient } from '@angular/common/http'; import { environment } from 'environments/environment'; +import { DatePipe } from '@angular/common'; const apiUrl = environment.apiEndpoint @@ -11,7 +12,9 @@ const apiUrl = environment.apiEndpoint export class QuesFormService { pd_all_details:any= {} + datepipe: DatePipe; constructor(private _fb:FormBuilder,private http:HttpClient) { + this.datepipe=new DatePipe('en-US') // this.apiUrl = constantProvider.environment().url } // FOR CREATING A FORM CONTROL DYNAMICALLY @@ -102,7 +105,7 @@ export class QuesFormService { console.log(formgroup.value); // debugger; val.group_questions[0].forEach((group_indi,arr_index)=>{ - console.log("sd",childControl) + console.log("sd",childControl,group_indi) this.addAdditionalControl(group_indi, childControl.controls[0], arr_index) }) @@ -265,6 +268,58 @@ export class QuesFormService { } // END OF CONVERTARRAYNAMES FUN-- + setAnswerOptionsorValue(data_json,control) { + + let answer_value_loc=''; + let answers_from_client=[] + if(data_json.hasOwnProperty('answer_value') && data_json.answer_value != '' || null){ + console.log(data_json,control) + let values_for_cli:any = this.getAnswerValue(data_json) + if(values_for_cli.flag == 1){ + answer_value_loc=values_for_cli.values + } + else{ + answers_from_client=values_for_cli.values + } + data_json.answers = answers_from_client; + if(answer_value_loc){ + control.setValue(answer_value_loc) + } + } + } + + // --- FOR SETTING THE VALUE DEFAULT WITH DISABLED AND GENERATE THE ANSWERS FOR FIELDS(EX. refer 'GET_FY_YEARS' switch) + getAnswerValue(value_obj) { + if (value_obj != null && value_obj.hasOwnProperty('answer_value')) { + let return_value = { flag: 1, values: '' }; + let user_det: any = localStorage.getItem("user_details") + user_det = JSON.parse(user_det); + switch (value_obj.answer_value) { + case 'CURRENT_USER': + console.log("current user", user_det) + return_value.values = user_det.user_first_name + ' ' + user_det.user_last_name + break; + case "CURRENT_DESIGNATION": + return_value.values = user_det.designation_name != null ? user_det.designation_name : '' + break; + case "CURRENT_DATE": + let date = new Date() + return_value.values = this.datepipe.transform(date, 'dd-MM-yyyy, h:mm:ss a') + break; + case "GET_FY_YEARS": + return_value.values = this.getCurrentFyYears() + return_value.flag = 2 + break; + default: + return_value.values = '' + break + } + return return_value + } + return '' + } + // --END OF GETANSWERVALUE FUN + addAdditionalControl(data,curr_control,curr_index,purpose?){ console.log(curr_control); //FOR CHECKBOX CHANGE THE VALUE STORAGE AS ARRAY @@ -295,10 +350,30 @@ export class QuesFormService { curr_control.controls[curr_index].addControl('is_loader',new FormControl('')) curr_control.controls[curr_index].addControl('is_saved',new FormControl('')) curr_control.controls[curr_index].addControl('is_image_status',new FormControl(false)) + } + if (data.api_properties != null) { + if(data.api_properties.hasOwnProperty('purpose') && data.api_properties.purpose == 'answer_options_local') { + if(data.api_properties.master_name == 'pd_applicants') { + data.answers = (this.convertArrayNames( data.api_properties.fields,this.pd_all_details.pdapplicants_detials)) + // val.question[arr_index].answers = group_indi.answers + } + } + else{ + this.apiPropertiesCall(data).then(res => { + if (res != false) { + data.answers = [] + // group_indi.answers=this.convertArrayNames(val.api_properties.fields,res) + data.answers = (this.convertArrayNames(data.api_properties.fields, res)) + // val.question[arr_index].answers = group_indi.answers + + } + }) + } } //FOR SETTING THE VALIDATORS this.settingArrayofValidators(data,curr_control,curr_index) + this.setAnswerOptionsorValue(data,curr_control) } // FOR SETTING THE ARRAY OF VALIDATORS COMING FROM JSON Temp, @@ -356,6 +431,26 @@ export class QuesFormService { } // END OF GETVALIDATORVALUE FUN + + // FOR GENERATING THE FY YEAR FIELD ANSWERS + getCurrentFyYears(){ + let month=new Date().getMonth() + let year=new Date().getFullYear() + let fy:any=[]; + if(month >=3){ + fy.push({fy_year:year-1+'-'+(year),curr:year}) + } + else{ + fy.push({fy_year:year-2+'-'+(year-1),curr:year-1}) + } + console.log(fy) + for(let i=0;i<=2;i++){ + fy.push({fy_year:(fy[i].curr-2)+'-'+(fy[i].curr-1),curr:fy[i].curr-1}) + } + return fy.map(val=>({answer:val.fy_year,answer_id:val.fy_year})) + } + // END OF GETCURRFYYEARS FUN + // FOR CREATING THE CORRECT VALIDATION setValueForValidator(value_obj){ console.log("setvlaue of validator",value_obj.validator,typeof(value_obj.validator)) diff --git a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/form/form.component.html b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/form/form.component.html index e50e719..2f8360b 100644 --- a/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/form/form.component.html +++ b/ng6-seed/src/app/personal-discussion/manage-pd/list-pd/start-pd/forms/form/form.component.html @@ -1,9 +1,9 @@

-
+
{{main_applicant}} {{lender_applicant_id ? '('+lender_applicant_id+')' : ''}}, {{customer_segment_abbr}} - {{subproduct_abbr}}
{{questions_JSON.section_name}}
-
+