templates edit screens added : kdk

This commit is contained in:
dineshkumarkannan 2018-10-17 15:54:04 +05:30
parent 4a66e305c0
commit 6154d876e4
17 changed files with 1250 additions and 243 deletions

View File

@ -4273,8 +4273,7 @@
"ansi-regex": { "ansi-regex": {
"version": "2.1.1", "version": "2.1.1",
"bundled": true, "bundled": true,
"dev": true, "dev": true
"optional": true
}, },
"aproba": { "aproba": {
"version": "1.2.0", "version": "1.2.0",
@ -4295,14 +4294,12 @@
"balanced-match": { "balanced-match": {
"version": "1.0.0", "version": "1.0.0",
"bundled": true, "bundled": true,
"dev": true, "dev": true
"optional": true
}, },
"brace-expansion": { "brace-expansion": {
"version": "1.1.11", "version": "1.1.11",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"balanced-match": "^1.0.0", "balanced-match": "^1.0.0",
"concat-map": "0.0.1" "concat-map": "0.0.1"
@ -4317,20 +4314,17 @@
"code-point-at": { "code-point-at": {
"version": "1.1.0", "version": "1.1.0",
"bundled": true, "bundled": true,
"dev": true, "dev": true
"optional": true
}, },
"concat-map": { "concat-map": {
"version": "0.0.1", "version": "0.0.1",
"bundled": true, "bundled": true,
"dev": true, "dev": true
"optional": true
}, },
"console-control-strings": { "console-control-strings": {
"version": "1.1.0", "version": "1.1.0",
"bundled": true, "bundled": true,
"dev": true, "dev": true
"optional": true
}, },
"core-util-is": { "core-util-is": {
"version": "1.0.2", "version": "1.0.2",
@ -4447,8 +4441,7 @@
"inherits": { "inherits": {
"version": "2.0.3", "version": "2.0.3",
"bundled": true, "bundled": true,
"dev": true, "dev": true
"optional": true
}, },
"ini": { "ini": {
"version": "1.3.5", "version": "1.3.5",
@ -4460,7 +4453,6 @@
"version": "1.0.0", "version": "1.0.0",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"number-is-nan": "^1.0.0" "number-is-nan": "^1.0.0"
} }
@ -4475,7 +4467,6 @@
"version": "3.0.4", "version": "3.0.4",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"brace-expansion": "^1.1.7" "brace-expansion": "^1.1.7"
} }
@ -4483,14 +4474,12 @@
"minimist": { "minimist": {
"version": "0.0.8", "version": "0.0.8",
"bundled": true, "bundled": true,
"dev": true, "dev": true
"optional": true
}, },
"minipass": { "minipass": {
"version": "2.2.4", "version": "2.2.4",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"safe-buffer": "^5.1.1", "safe-buffer": "^5.1.1",
"yallist": "^3.0.0" "yallist": "^3.0.0"
@ -4509,7 +4498,6 @@
"version": "0.5.1", "version": "0.5.1",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"minimist": "0.0.8" "minimist": "0.0.8"
} }
@ -4590,8 +4578,7 @@
"number-is-nan": { "number-is-nan": {
"version": "1.0.1", "version": "1.0.1",
"bundled": true, "bundled": true,
"dev": true, "dev": true
"optional": true
}, },
"object-assign": { "object-assign": {
"version": "4.1.1", "version": "4.1.1",
@ -4603,7 +4590,6 @@
"version": "1.4.0", "version": "1.4.0",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"wrappy": "1" "wrappy": "1"
} }
@ -4689,8 +4675,7 @@
"safe-buffer": { "safe-buffer": {
"version": "5.1.1", "version": "5.1.1",
"bundled": true, "bundled": true,
"dev": true, "dev": true
"optional": true
}, },
"safer-buffer": { "safer-buffer": {
"version": "2.1.2", "version": "2.1.2",
@ -4726,7 +4711,6 @@
"version": "1.0.2", "version": "1.0.2",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"code-point-at": "^1.0.0", "code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0", "is-fullwidth-code-point": "^1.0.0",
@ -4746,7 +4730,6 @@
"version": "3.0.1", "version": "3.0.1",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"ansi-regex": "^2.0.0" "ansi-regex": "^2.0.0"
} }
@ -4790,14 +4773,12 @@
"wrappy": { "wrappy": {
"version": "1.0.2", "version": "1.0.2",
"bundled": true, "bundled": true,
"dev": true, "dev": true
"optional": true
}, },
"yallist": { "yallist": {
"version": "3.0.2", "version": "3.0.2",
"bundled": true, "bundled": true,
"dev": true, "dev": true
"optional": true
} }
} }
}, },

View File

@ -1,9 +1,121 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { HttpClient, HttpParams } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
import { catchError } from 'rxjs/operators';
import { of } from 'rxjs';
import 'rxjs/add/operator/map';
/** Imported Service Files Are., */
import { AwsService } from '../../../AwsService/aws.service';
/** Consant Value For Created Date And Updated Date */
const currentdate = new Date().toJSON().slice(0, 19).replace('T', ' ');
@Injectable({ @Injectable({
providedIn: 'root' providedIn: 'root'
}) })
export class TemplatesService { export class TemplatesService {
private apiUrl = "http://ssa.sineedge.com/sparqapi/api/";
constructor(private _http: HttpClient,
private _aws: AwsService) { }
// get templates master details list
getTemplatesMasterListDetails(cid: any): Observable<any> {
// Add safe, URL encoded search parameter if there is a search term
const options = cid ?
{ params: new HttpParams().set('cid', cid) } : {};
return this._http.get<any[]>(this.apiUrl + "listAllTemplates/any", options);
}
getTemplateIDNameDetails(temp_id: number): Observable<any>{
// Add safe, URL encoded search parameter if there is a search term
return this._http.post<any[]>(this.apiUrl + "getTemplateMaster", {'template_id': temp_id });
}
updateTempateIDNameDetails(Records: any): Observable<any>{
Records.fk_updatedby = this._aws.getlocale();//to get user id for who is created the Record
Records.updatedon = currentdate;//to get Current date and Time for when the Record is created
return this._http.post<any[]>(this.apiUrl + "saveNewTemplateName", {'records': Records });
}
getTemplateIDLenderDetails(temp_id: number): Observable<any>{
// Add safe, URL encoded search parameter if there is a search term
return this._http.post<any[]>(this.apiUrl + "getTemplateLenders", {'template_id': temp_id });
}
updateTempateIDLenderDetails(Records: any): Observable<any>{
let records = Records.map(item=>{
item.fk_updatedby = this._aws.getlocale();//to get user id for who is created the Record
item.updatedon = currentdate;//to get Current date and Time for when the Record is created
return item;
});
return this._http.post<any[]>(this.apiUrl + "saveTemplateLenderDetails", {'records': records });
}
getTemplateIDCategoryDetails(temp_id: number): Observable<any>{
// Add safe, URL encoded search parameter if there is a search term
return this._http.post<any[]>(this.apiUrl + "getTemplateCategories", {'template_id': temp_id });
}
updateTempateIDCategoryDetails(Records: any): Observable<any>{
let records = Records.map(item=>{
item.fk_updatedby = this._aws.getlocale();//to get user id for who is created the Record
item.updatedon = currentdate;//to get Current date and Time for when the Record is created
return item;
});
return this._http.post<any[]>(this.apiUrl + "saveTemplateCategoryDetails", {'records': records });
}
getTemplateIDQuesAnsDetails(temp_id: number): Observable<any>{
// Add safe, URL encoded search parameter if there is a search term
return this._http.post<any[]>(this.apiUrl + "getTemplateQuestionAnswers", {'template_id': temp_id });
}
updateTempateIDQuesAnsDetails(Records: any): Observable<any>{
let records = Records.map(item=>{
item.fk_updatedby = this._aws.getlocale();//to get user id for who is created the Record
item.updatedon = currentdate;
// item.answers = item.answers.map(subItem=>{
// subItem.fk_updatedby = this._aws.getlocale();//to get user id for who is created the Record
// subItem.updatedon = currentdate;
// })//to get Current date and Time for when the Record is created
return item;
});
return this._http.post<any[]>(this.apiUrl + "saveTemplateQuestionAnswers", {'records': records });
}
getRemaningQuestionCategory(data: any): Observable<any>{
// Add safe, URL encoded search parameter if there is a search term
return this._http.post<any[]>(this.apiUrl + "getQuestionsForTemplateCreation", {"template_id": data.template_id, "category_id": data.category_id});
}
// get Master Details ==============================
// get templates master details list
getLenderMasterListDetails(): Observable<any> {
return this._http.get<any[]>(this.apiUrl + "getListOfLenders");
}
getProductsMasterListDetails(): Observable<any> {
return this._http.get<any[]>(this.apiUrl + "getListOfProducts ");
}
getCustomerSegmentsMasterListDetails(): Observable<any> {
return this._http.get<any[]>(this.apiUrl + "getListOfCustomerSegments");
}
getCategoryMasterListDetails(): Observable<any> {
return this._http.get<any[]>(this.apiUrl + "getListOfCategories");
}
constructor() { }
} }

View File

@ -1,16 +1,20 @@
<!--<pre>{{ templateCategoryRecord | json }}</pre>
<pre> {{ m_category | json}}</pre>-->
<form [formGroup]="_editTempCategoryFrom" (submit)="onSubmit()"> <form [formGroup]="_editTempCategoryFrom" (submit)="onSubmit()">
<div formArrayName="temp_category" class="example-full-width"> <div formArrayName="temp_category" class="example-full-width">
<mat-list role="list"> <table>
<mat-list-item style="margin: 2px 0;" *ngFor="let answ of _editTempCategoryFrom.controls.temp_category['controls']; let i=index ; let last = last;" <tr *ngFor="let answ of _editTempCategoryFrom.controls.temp_category['controls']; let i=index ; let last = last;">
role="listitem"> <td>
<div [formGroupName]="i"> <div [formGroupName]="i">
<div fxLayout="row" fxLayoutWrap fxLayoutGap="5%" fxLayoutAlign="start center"> <div fxLayout="row" fxLayoutWrap fxLayoutGap="5%" fxLayoutAlign="start center">
<div fxFlex="0 1 auto" class="ml-xs"> <div fxFlex="0 1 auto" class="ml-xs">
<mat-form-field> <mat-form-field>
<mat-select placeholder="Category" formControlName="fk_category_id"> <mat-select placeholder="Category" formControlName="fk_question_category_id">
<mat-option *ngFor="let category of m_categoryList" [value]="category.fk_category_id">{{ category.name }}</mat-option> <mat-option *ngFor="let category of m_category" [value]="category.question_category_id">{{ category.category_name }}</mat-option>
</mat-select> </mat-select>
<!--<mat-error *ngIf="submitted && f.fk_category_id.hasError('required')" class="mat-text-warn">You must Select Lender Type.</mat-error>--> <mat-error *ngIf="submitted && i == dublicateRerdIndex "> This Category Already Exist.!</mat-error>
</mat-form-field> </mat-form-field>
</div> </div>
<div fxFlex="0 1 auto" class="ml-xs"> <div fxFlex="0 1 auto" class="ml-xs">
@ -23,13 +27,46 @@
</div> </div>
<div fxFlex="0 1 auto" class="ml-xs"> <div fxFlex="0 1 auto" class="ml-xs">
<button *ngIf="last" mat-button mat-icon-button class="mr-1 mb-1 hover-icon" matTooltip="Add More" matTooltipPosition="above" (click)="addLanguage($event); false"><mat-icon>add</mat-icon></button> <button *ngIf="last" mat-button mat-icon-button class="mr-1 mb-1 hover-icon" matTooltip="Add More" matTooltipPosition="above" (click)="addLanguage(null, $event); false"><mat-icon>add</mat-icon></button>
</div> </div>
</div> </div>
</div> </div>
</mat-list-item> <mat-error *ngIf="submitted && i == dublicateRerdIndex "> This Category Already Exist.!</mat-error>
</mat-list> </td>
</tr>
</table>
<!--<mat-card role="list">-->
<!--<mat-card style="width: 70%;" *ngFor="let answ of _editTempCategoryFrom.controls.temp_category['controls']; let i=index ; let last = last;"
role="listitem">
<div [formGroupName]="i">
<div fxLayout="row" fxLayoutWrap fxLayoutGap="5%" fxLayoutAlign="start center">
<div fxFlex="0 1 auto" class="ml-xs">
<mat-form-field>
<mat-select placeholder="Category" formControlName="fk_question_category_id">
<mat-option *ngFor="let category of m_category" [value]="category.question_category_id">{{ category.category_name }}</mat-option>
</mat-select>
<mat-error *ngIf="submitted && i == dublicateRerdIndex "> This Category Already Exist.!</mat-error>
</mat-form-field>
</div>
<div fxFlex="0 1 auto" class="ml-xs">
<mat-form-field style="width: 25%; text-align: center" appearance="outline">
<input matInput formControlName="weightage">
</mat-form-field> <span>%</span>
</div>
<div fxFlex="0 1 auto" class="ml-xs">
<button *ngIf="_editTempCategoryFrom.controls.temp_category.controls.length > 1" (click)="removeLanguage(i)" mat-button mat-icon-button class="mr-1 mb-1 hover-icon" matTooltip="Delete" matTooltipPosition="above"><mat-icon>delete</mat-icon></button>
</div>
<div fxFlex="0 1 auto" class="ml-xs">
<button *ngIf="last" mat-button mat-icon-button class="mr-1 mb-1 hover-icon" matTooltip="Add More" matTooltipPosition="above" (click)="addLanguage(null, $event); false"><mat-icon>add</mat-icon></button>
</div>
</div>
</div>
<mat-error *ngIf="submitted && i == dublicateRerdIndex "> This Category Already Exist.!</mat-error>
</mat-card>-->
<!--</mat-card>-->
</div> </div>
<div class="row" style="text-align:right;"> <div class="row" style="text-align:right;">
<!--<button mat-raised-button mat-icon-button class="mr-1 mb-1 hover-icon" matTooltip="Reset" matTooltipPosition="above" type="reset"><mat-icon>settings_backup_restore</mat-icon></button>--> <!--<button mat-raised-button mat-icon-button class="mr-1 mb-1 hover-icon" matTooltip="Reset" matTooltipPosition="above" type="reset"><mat-icon>settings_backup_restore</mat-icon></button>-->

View File

@ -1,85 +1,191 @@
import { Component, ViewChild, OnInit, OnDestroy, Input } from '@angular/core'; import { Component, ViewChild, OnInit, OnDestroy, Input, AfterViewInit } from '@angular/core';
import { MatPaginator, MatSort, MatTableDataSource, MatDialog, PageEvent } from '@angular/material'; import { MatPaginator, MatSort, MatTableDataSource, MatDialog, PageEvent } from '@angular/material';
import { FormGroup, FormControl, FormBuilder, Validators , FormArray} from '@angular/forms'; import { FormGroup, FormControl, FormBuilder, Validators, FormArray } from '@angular/forms';
import { ActivatedRoute, Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
import { DataSource } from '@angular/cdk/table'; import { DataSource } from '@angular/cdk/table';
import { Observable } from 'rxjs/Observable'; import { Observable } from 'rxjs/Observable';
import { NotifierService } from 'angular-notifier';
import { TemplatesService } from './../../../../service/templates/templates.service';
import { MastersService } from './../../../../service/masters/masters.service';
@Component({ @Component({
selector: 'app-template-edit-category', selector: 'app-template-edit-category',
templateUrl: './edit-category.component.html', templateUrl: './edit-category.component.html',
styleUrls: ['./edit-category.component.scss'] styleUrls: ['./edit-category.component.scss']
}) })
export class EditCategoryComponent implements OnInit, OnDestroy { export class EditCategoryComponent implements OnInit, OnDestroy, AfterViewInit {
@Input() questionId: number; @Input() questionId: number;
public _editTempCategoryFrom: FormGroup; public _editTempCategoryFrom: FormGroup;
public submitted = false; public submitted = false;
public templateCategoryRecord: any;
public m_category: any;
/**
* Notifier service
*/
private notifier: NotifierService;
constructor( constructor(
private _formBuilder: FormBuilder, notifier: NotifierService,
public dialog: MatDialog) { private templatesService: TemplatesService,
private mastersService: MastersService,
private _formBuilder: FormBuilder) {
this.notifier = notifier;
} }
ngOnInit() { ngOnInit() {
this.initalLoadFormData(); this.initalLoadFormData();
if(this.categoryList.length > 0){ this.getCategoryMasters();
for (let val of this.categoryList) { this.getTemplateCategoryDetails();
// alert(JSON.stringify(val));
let vals = val; this._editTempCategoryFrom = this._formBuilder.group({
this.addLanguage(vals['fk_category_id'], vals['name'], vals['weightage'], null); temp_category: this._formBuilder.array([
} // this.initAnswers(),
} ])
})
// if(this.categoryList.length > 0){
// for (let val of this.categoryList) {
// // alert(JSON.stringify(val));
// let vals = val;
// this.addLanguage(vals['fk_category_id'], vals['name'], vals['weightage'], null);
// }
// }
} }
initalLoadFormData(){ ngAfterViewInit() {
// this.getTemplateCategoryDetails();
}
setFormDatas(record) {
if (record.length > 0) {
for (let val of record) {
let vals = {
template_category_weightage_id: val.template_category_weightage_id,
fk_question_category_id: val.fk_question_category_id,
fk_template_id: val.fk_template_id,
weightage: val.weightage,
isactive: val.isactive,
};
this.addLanguage(vals, null);
}
}
}
// Dynamic Form field creation Functionality : START ===>
initAnswers(data) {
return this._formBuilder.group({
template_category_weightage_id: [data.template_category_weightage_id],
fk_question_category_id: [data.fk_question_category_id, Validators.compose([Validators.required])],
fk_template_id: [data.fk_template_id],
weightage: [data.weightage, Validators.compose([Validators.required])],
isactive: [data.isactive],
});
}
addLanguage(data, e) {
if (data == null) {
let newDate = {
template_category_weightage_id: null,
fk_template_id: this.questionId,
fk_question_category_id: null,
weightage: null,
isactive: 1,
}
const control = <FormArray>this._editTempCategoryFrom.controls['temp_category'];
control.push(this.initAnswers(newDate));
} else {
const control = <FormArray>this._editTempCategoryFrom.controls['temp_category'];
control.push(this.initAnswers(data));
}
}
getTemplateCategoryDetails() {
this.templatesService.getTemplateIDCategoryDetails(this.questionId).subscribe(
data => {
if (data) {
if (data.records) {
this.templateCategoryRecord = data.records;
this.setFormDatas(this.templateCategoryRecord);
// this.templateListData = data.records;
// this.dataLength = data.records.length;
// this.dataSource.data = this.templateListData;
} else {
// this.noTemplateLendersFound = true;
}
} else {
// this.noTemplateLendersFound = true;
}
}
);
}
getCategoryMasters() {
this.templatesService.getCategoryMasterListDetails().subscribe(
data => {
this.m_category = data.records;
},
error => {
this.notifier.notify('warning', 'No Category Master Records Found.!');
// this.m_category = "No Category Master Records Found.";
}
);
}
initalLoadFormData() {
this._editTempCategoryFrom = this._formBuilder.group({ this._editTempCategoryFrom = this._formBuilder.group({
temp_category: this._formBuilder.array([ temp_category: this._formBuilder.array([
// this.initAnswers(), // this.initAnswers(),
]) ])
}) })
} }
// convenience getter for easy access to form fields // convenience getter for easy access to form fields
get f() { return this._editTempCategoryFrom.controls; } get f() { return this._editTempCategoryFrom.controls; }
public m_categoryList = [{ public m_categoryList = [{
fk_category_id: 1, fk_category_id: 1,
name: 'Category List 1', name: 'Category List 1',
weightage: 2, weightage: 2,
},{ }, {
fk_category_id: 2, fk_category_id: 2,
name: 'Category List 2', name: 'Category List 2',
weightage: 5, weightage: 5,
},{ }, {
fk_category_id: 3, fk_category_id: 3,
name: 'Category List 2', name: 'Category List 2',
weightage: 5, weightage: 5,
}]; }];
public categoryList = [{ public categoryList = [{
fk_category_id: 1, fk_category_id: 1,
name: 'Category List 1', name: 'Category List 1',
weightage: 2, weightage: 2,
},{ }, {
fk_category_id: 2, fk_category_id: 2,
name: 'Category List 2', name: 'Category List 2',
weightage: 5, weightage: 5,
}]; }];
// Dynamic Form field creation Functionality : START ===> // Dynamic Form field creation Functionality : START ===>
initAnswers(fk_cat_id, name, weightage) { // initAnswers(fk_cat_id, name, weightage) {
return this._formBuilder.group({ // return this._formBuilder.group({
fk_category_id: [fk_cat_id, Validators.compose([Validators.required])], // fk_category_id: [fk_cat_id, Validators.compose([Validators.required])],
name: [name, Validators.compose([Validators.required])], // name: [name, Validators.compose([Validators.required])],
weightage: [weightage, Validators.compose([Validators.required])], // weightage: [weightage, Validators.compose([Validators.required])],
}); // });
} // }
addLanguage(fk_cat_id, name, weightage, e) { // addLanguage(fk_cat_id, name, weightage, e) {
const control = <FormArray>this._editTempCategoryFrom.controls['temp_category']; // const control = <FormArray>this._editTempCategoryFrom.controls['temp_category'];
control.push(this.initAnswers(fk_cat_id, name, weightage)); // control.push(this.initAnswers(fk_cat_id, name, weightage));
} // }
removeLanguage(i: number) { removeLanguage(i: number) {
const control = <FormArray>this._editTempCategoryFrom.controls['temp_category']; const control = <FormArray>this._editTempCategoryFrom.controls['temp_category'];
control.removeAt(i); control.removeAt(i);
@ -87,11 +193,71 @@ export class EditCategoryComponent implements OnInit, OnDestroy {
// END ===> // END ===>
public errorMessage: string;
/** To Save/Edited Popup Data */ /** To Save/Edited Popup Data */
onSubmit() { onSubmit() {
this.submitted = true; this.submitted = true;
// stop here if form is invalid // stop here if form is invalid
if (this._editTempCategoryFrom.invalid) {
alert('no');
return;
} else {
var formValues = this._editTempCategoryFrom.value;
//To Remove The "Null" With Key also
Object.keys(formValues).forEach((key) => (formValues[key] == null) && delete formValues[key]);
let val = formValues.temp_category;
let totalScore = val.map(value => { return Number(value.weightage); }).reduce((acc, value) => { return acc + value; }, 0);
if (totalScore == 100) {
if (!this.checkDuplicateInObject(formValues.temp_category)) {
this.templatesService.updateTempateIDCategoryDetails(formValues.temp_category).subscribe(
dataresult => {
if (dataresult.status == 200) {
console.log(dataresult);
this.notifier.notify('success', 'Your Changes Updated.!');
const arr = <FormArray>this._editTempCategoryFrom.controls.temp_category;
arr.controls.splice(0);
this.getTemplateCategoryDetails();
}
else {
this.notifier.notify('warning', 'Something Wents Wrong Try Again.!');
this.errorMessage = "Something Wents Wrong Try Again.!";
}
}, error => {
this.notifier.notify('warning', 'Something Wents Wrong Try Again.!');
this.errorMessage = "Some Thing Wents Wrong Try Again.!";
});
} else {
alert("duplication records occured.!");
}
} else {
alert("value should equal to 100")
}
}
}
public dublicateRerdIndex = -1;
checkDuplicateInObject(inputArray) {
this.dublicateRerdIndex = -1;
let seenDuplicate = false;
inputArray.map((item, index) => {
let currentVal = inputArray[index];
for(let i = index+1 ; i < inputArray.length ; i++ ){
if(currentVal.fk_question_category_id === inputArray[i].fk_question_category_id){
console.log('duplication: ' + i);
this.dublicateRerdIndex = i;
seenDuplicate = true;
}
}
console.log(index);
});
return seenDuplicate;
} }
ngOnDestroy(): void { ngOnDestroy(): void {

View File

@ -1,3 +1,10 @@
<!--<pre>{{ templateLenderRecord | json}}</pre>
<pre> {{ m_lender | json}} </pre>
<pre> {{ m_product | json}} </pre>
<pre> {{ m_customerSegment | json}} </pre>-->
<form [formGroup]="_editTempLenderFrom" (submit)="onSubmit()"> <form [formGroup]="_editTempLenderFrom" (submit)="onSubmit()">
<div formArrayName="temp_lender" class="example-full-width"> <div formArrayName="temp_lender" class="example-full-width">
<div *ngFor="let answ of _editTempLenderFrom.controls.temp_lender['controls']; let i=index"> <div *ngFor="let answ of _editTempLenderFrom.controls.temp_lender['controls']; let i=index">
@ -5,39 +12,38 @@
<div fxLayout="row" fxLayoutWrap fxLayoutGap="0.5%" fxLayoutAlign="start center"> <div fxLayout="row" fxLayoutWrap fxLayoutGap="0.5%" fxLayoutAlign="start center">
<mat-form-field fxFlex="0 1 auto" class="ml-xs"> <mat-form-field fxFlex="0 1 auto" class="ml-xs">
<mat-select placeholder="Lender" formControlName="fk_lender_id"> <mat-select placeholder="Lender" formControlName="fk_lender_id">
<mat-option *ngFor="let enti of entityOptions" [value]="enti.fk_lender_id">{{ enti.name }}</mat-option> <mat-option *ngFor="let lend of m_lender" [value]="lend.entity_id">{{ lend.full_name }}</mat-option>
</mat-select> </mat-select>
<mat-error *ngIf="submitted && f.fk_lender_id.hasError('required')" class="mat-text-warn">You must Select Lender Type.</mat-error> <!--<mat-error *ngIf="submitted && fk_lender_id.hasError('required')" class="mat-text-warn">You must Select Lender Type.</mat-error>-->
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="0 1 auto" class="ml-xs"> <mat-form-field fxFlex="0 1 auto" class="ml-xs">
<mat-select placeholder="Product" formControlName="fk_product_id"> <mat-select placeholder="Product" formControlName="fk_product_id">
<mat-option *ngFor="let enti of entityOptions" [value]="enti.fk_product_id">{{ enti.name }}</mat-option> <mat-option *ngFor="let prcd of m_product" [value]="prcd.product_id">{{ prcd.product_name }}</mat-option>
</mat-select> </mat-select>
<mat-error *ngIf="submitted && f.fk_product_id.hasError('required')" class="mat-text-warn">You must Select Product.</mat-error> <!--<mat-error *ngIf="submitted && fk_product_id.hasError('required')" class="mat-text-warn">You must Select Product.</mat-error>-->
</mat-form-field> </mat-form-field>
<mat-form-field fxFlex="0 1 auto" class="ml-xs"> <mat-form-field fxFlex="0 1 auto" class="ml-xs">
<mat-select placeholder="Catergory Segment" formControlName="fk_category_segment_id"> <mat-select placeholder="Customer Segment" formControlName="fk_customer_segment">
<mat-option *ngFor="let enti of entityOptions" [value]="enti.fk_category_segment_id">{{ enti.name }}</mat-option> <mat-option *ngFor="let cusSeg of m_customerSegment" [value]="cusSeg.customer_segment_id">{{ cusSeg.customer_segment }}</mat-option>
</mat-select> </mat-select>
<mat-error *ngIf="submitted && f.fk_category_segment_id.hasError('required')" class="mat-text-warn">You must Select Category Segment.</mat-error> <!--<mat-error *ngIf="submitted && fk_customer_segment.hasError('required')" class="mat-text-warn">You must Select Customer Segment.</mat-error>-->
</mat-form-field> </mat-form-field>
<!--<mat-form-field fxFlex="0 1 auto" class="ml-xs"> <div>
<input matInput placeholder="Email" formControlName="contact_email"> <mat-checkbox *ngIf="answ.get('template_lender_map_id').value != null" formControlName="isactive" [ngModel]="answ.get('isactive').value == 1 ? true : answ.get('isactive').value == 0 ? false : null"
</mat-form-field> (ngModelChange)="answ.get('isactive').value = $event ? 1 : 0"></mat-checkbox>
<mat-form-field fxFlex="0 1 auto" class="ml-xs">
<input matInput placeholder="Mobile Number" formControlName="contact_mobile_no">
</mat-form-field>-->
<span *ngIf="_editTempLenderFrom.controls.temp_lender.controls.length > 1" (click)="removeLanguage(i)"> <span *ngIf="_editTempLenderFrom.controls.temp_lender.controls.length > 1" (click)="removeLanguage(i)">
<button mat-button mat-icon-button class="mr-1 mb-1 hover-icon" matTooltip="Delete" matTooltipPosition="above"><mat-icon>delete</mat-icon></button> <button *ngIf="answ.get('template_lender_map_id').value == null" mat-button mat-icon-button class="mr-1 mb-1 hover-icon" matTooltip="Delete" matTooltipPosition="above"><mat-icon>delete</mat-icon></button>
</span> </span>
</div>
</div> </div>
</div> </div>
</div> </div>
<button mat-fab class="mr-1 mb-1" color="primary" matTooltip="Add More Contact Person" matTooltipPosition="above" (click)="addLanguage($event); false"><mat-icon>add</mat-icon></button> <button mat-fab class="mr-1 mb-1" color="primary" matTooltip="Add More Contact Person" matTooltipPosition="above" (click)="addLanguage(null, $event); false"><mat-icon>add</mat-icon></button>
</div> </div>
<div class="row" style="text-align:right;"> <div class="row" style="text-align:right;">
<button mat-raised-button mat-icon-button class="mr-1 mb-1 hover-icon" matTooltip="Reset" matTooltipPosition="above" type="reset"><mat-icon>settings_backup_restore</mat-icon></button> <button mat-raised-button mat-icon-button class="mr-1 mb-1 hover-icon" matTooltip="Reset" matTooltipPosition="above" type="reset"><mat-icon>settings_backup_restore</mat-icon></button>

View File

@ -5,6 +5,11 @@ import { ActivatedRoute, Router } from '@angular/router';
import { DataSource } from '@angular/cdk/table'; import { DataSource } from '@angular/cdk/table';
import { Observable } from 'rxjs/Observable'; import { Observable } from 'rxjs/Observable';
import { NotifierService } from 'angular-notifier';
import { TemplatesService } from './../../../../service/templates/templates.service';
import { MastersService } from './../../../../service/masters/masters.service';
@Component({ @Component({
selector: 'app-template-edit-lender', selector: 'app-template-edit-lender',
templateUrl: './edit-lender.component.html', templateUrl: './edit-lender.component.html',
@ -14,20 +19,115 @@ export class EditLenderComponent implements OnInit {
@Input() questionId: number; @Input() questionId: number;
public noTemplateLendersFound: boolean;
public templateLenderRecord: any;
public errorMessage;
public m_lender : any;
public m_product: any;
public m_customerSegment : any;
public _editTempLenderFrom: FormGroup; public _editTempLenderFrom: FormGroup;
public submitted = false; public submitted = false;
/**
* Notifier service
*/
private notifier : NotifierService;
constructor( constructor(
notifier: NotifierService,
private templatesService: TemplatesService,
private mastersService: MastersService,
private _formBuilder: FormBuilder) { private _formBuilder: FormBuilder) {
this.notifier = notifier;
} }
ngOnInit() { ngOnInit() {
this._editTempLenderFrom = this._formBuilder.group({ this.getTemplateLenderDetails();
this.getLenderMasters();
this.getProductsMasters();
this.getCustomerSegmentMasters();
this._editTempLenderFrom = this._formBuilder.group({
temp_lender: this._formBuilder.array([ temp_lender: this._formBuilder.array([
this.initAnswers(), // this.initAnswers(),
]) ])
}) })
} }
setFormDatas(record){
if (record.length > 0) {
for (let val of record) {
let vals = {
template_lender_map_id: val.template_lender_map_id,
fk_template_id: val.fk_template_id,
fk_lender_id: val.fk_lender_id,
fk_product_id: val.fk_product_id,
fk_customer_segment: val.fk_customer_segment,
isactive: val.isactive,
};
this.addLanguage(vals, null);
}
}
}
getTemplateLenderDetails(){
this.templatesService.getTemplateIDLenderDetails(this.questionId).subscribe(
data => {
if (data) {
if (data.records) {
this.noTemplateLendersFound = false;
this.templateLenderRecord = data.records;
this.setFormDatas(this.templateLenderRecord);
// this.templateListData = data.records;
// this.dataLength = data.records.length;
// this.dataSource.data = this.templateListData;
} else {
this.noTemplateLendersFound = true;
}
} else {
this.noTemplateLendersFound = true;
}
}
);
}
getLenderMasters(){
this.templatesService.getLenderMasterListDetails().subscribe(
data => {
this.m_lender = data.records;
},
error => {
this.notifier.notify('warning', 'No Lender Master Records Found.!');
this.errorMessage = "No Lender Master Record Found.";
}
);
}
getProductsMasters(){
this.templatesService.getProductsMasterListDetails().subscribe(
data => {
this.m_product = data.records;
},
error => {
this.notifier.notify('warning', 'No Products Master Records Found.!');
this.errorMessage = "No Products Master Record Found.";
}
);
}
getCustomerSegmentMasters() {
this.templatesService.getCustomerSegmentsMasterListDetails().subscribe(
data => {
this.m_customerSegment = data.records;
},
error => {
this.notifier.notify('warning', 'No Customer Segment Master Records Found.!');
this.errorMessage = "No Customer Segment Master Record Found.";
}
);
}
// convenience getter for easy access to form fields // convenience getter for easy access to form fields
get f() { return this._editTempLenderFrom.controls; } get f() { return this._editTempLenderFrom.controls; }
@ -42,16 +142,32 @@ export class EditLenderComponent implements OnInit {
}]; }];
// Dynamic Form field creation Functionality : START ===> // Dynamic Form field creation Functionality : START ===>
initAnswers() { initAnswers(data) {
return this._formBuilder.group({ return this._formBuilder.group({
fk_lender_id: ['', Validators.compose([Validators.required])], template_lender_map_id: [data.template_lender_map_id],
fk_product_id: ['', Validators.compose([Validators.required])], fk_template_id: [data.fk_template_id],
fk_category_segment_id: ['', Validators.compose([Validators.required])], fk_lender_id: [data.fk_lender_id, Validators.compose([Validators.required])],
fk_product_id: [data.fk_product_id , Validators.compose([Validators.required])],
fk_customer_segment: [data.fk_customer_segment, Validators.compose([Validators.required])],
isactive: [data.isactive],
}); });
} }
addLanguage(e) { addLanguage(data, e) {
const control = <FormArray>this._editTempLenderFrom.controls['temp_lender']; if(data == null){
control.push(this.initAnswers()); let newDate = {
template_lender_map_id: null,
fk_template_id: this.questionId,
fk_lender_id: null,
fk_product_id: null,
fk_customer_segment: null,
isactive: 1,
}
const control = <FormArray>this._editTempLenderFrom.controls['temp_lender'];
control.push(this.initAnswers(newDate));
} else {
const control = <FormArray>this._editTempLenderFrom.controls['temp_lender'];
control.push(this.initAnswers(data));
}
} }
removeLanguage(i: number) { removeLanguage(i: number) {
const control = <FormArray>this._editTempLenderFrom.controls['temp_lender']; const control = <FormArray>this._editTempLenderFrom.controls['temp_lender'];
@ -65,6 +181,57 @@ export class EditLenderComponent implements OnInit {
onSubmit() { onSubmit() {
this.submitted = true; this.submitted = true;
// stop here if form is invalid // stop here if form is invalid
if (this._editTempLenderFrom.invalid) {
this.errorMessage = "Please Fill All Mandate Fields.";
return;
} else {
var formValues = this._editTempLenderFrom.value;
//To Remove The "Null" With Key also
Object.keys(formValues).forEach((key) => (formValues[key] == null) && delete formValues[key]);
// alert(JSON.stringify(formValues.temp_lender));
if(!this.checkDuplicateInObject(formValues.temp_lender)) {
this.templatesService.updateTempateIDLenderDetails(formValues.temp_lender).subscribe(
dataresult => {
if (dataresult.status == 200) {
console.log(dataresult);
this.notifier.notify('success', 'Your Changes Updated.!');
const arr = <FormArray>this._editTempLenderFrom.controls.temp_lender;
arr.controls.splice(0);
this.getTemplateLenderDetails();
}
else {
this.notifier.notify('warning', 'Something Wents Wrong Try Again.!');
this.errorMessage = "Something Wents Wrong Try Again.!";
}
}, error => {
this.notifier.notify('warning', 'Something Wents Wrong Try Again.!');
this.errorMessage = "Some Thing Wents Wrong Try Again.!";
});
} else {
alert("duplication records occured.!");
}
}
}
checkDuplicateInObject(inputArray) {
let seenDuplicate = false;
inputArray.map(function(item, index) {
let currentVal = inputArray[index];
for(let i = index+1 ; i < inputArray.length ; i++ ){
if(currentVal.fk_lender_id === inputArray[i].fk_lender_id
&& currentVal.fk_product_id === inputArray[i].fk_product_id
&& currentVal.fk_customer_segment === inputArray[i].fk_customer_segment){
console.log('duplication: ' + i);
seenDuplicate = true;
}
}
console.log(index);
});
return seenDuplicate;
} }
ngOnDestroy(): void { ngOnDestroy(): void {

View File

@ -0,0 +1,102 @@
<!--<mat-card>
<form [formGroup]="_editquestionAnswerForm" (submit)="onSubmit()">
<div formArrayName="temp_category" class="example-full-width">
<mat-accordion>
<mat-expansion-panel *ngFor="let data of CaterogyQuesAns">
<mat-expansion-panel-header>
<mat-panel-title>
{{ data.category_name }}
</mat-panel-title>
<mat-panel-description>
{{ data.weightage }}
</mat-panel-description>
</mat-expansion-panel-header>
<app-category-question-answer [CaterogyQuesAns]="data">
</app-category-question-answer>
</mat-expansion-panel>
</mat-accordion>
</div>
</form>
</mat-card>-->
<!--<pre>{{ templateCategoryRecord | json }}</pre>-->
<!--<pre> {{ CaterogyQuesAns | json}}</pre>-->
<div fxLayout="row" fxLayoutAlign="end">
<button mat-fab class="mr-1 mb-1" color="primary" matTooltip="Add More Contact Person" matTooltipPosition="above" (click)="openDialog(); false"><mat-icon>add</mat-icon></button>
</div>
<form [formGroup]="_editquestionAnswerForm" (submit)="onSubmit()">
<div formArrayName="temp_questions" class="example-full-width">
<table>
<tr *ngFor="let ques of _editquestionAnswerForm.controls.temp_questions['controls']; let i=index ; let last = last;">
<td>
<div [formGroupName]="i">
<mat-card>
<div fxLayout="row" fxLayout.xs="column" fxLayoutWrap fxLayoutGap="5%" fxLayoutAlign="start center">
<div fxFlex="1 1 auto" class="ml-xs" fxFlex="60%">
<label>{{ques.get('question').value}}</label>
</div>
<div fxFlex="1 1 auto" class="ml-xs" fxFlex="20%">
<mat-form-field style="width: 25%; text-align: center" appearance="outline">
<input matInput formControlName="question_weightage">
</mat-form-field> <span>%</span>
</div>
<div fxFlex="0 1 auto" class="ml-xs" fxFlex="20%">
<button (click)="removeLanguage(i)" mat-button mat-icon-button class="mr-1 mb-1 hover-icon" matTooltip="Delete" matTooltipPosition="above" type="button"><mat-icon>delete</mat-icon></button>
</div>
</div>
</mat-card>
<div formArrayName="answers" class="example-full-width">
<!--<div class="container" fxLayout="row" fxLayout.xs="column" fxLayoutWrap fxLayoutGap="0.5%" fxLayoutAlign="center">-->
<div fxLayout="row" fxLayoutWrap fxLayoutGap="0.5%" fxLayoutAlign="center"
*ngFor="let answ of ques['controls'].answers['controls']; let i_ans = index ; let Ans_last = last;">
<div [formGroupName]="i_ans">
<div fxLayout="row" fxLayoutWrap fxLayoutGap="5%" fxLayoutAlign="start center">
<div fxFlex="0 1 auto" class="ml-xs">
<mat-form-field>
<!--<label>{{answ.get('answer').value}}</label>-->
<input matInput formControlName="answer">
</mat-form-field>
</div>
<div fxFlex="0 1 auto" class="ml-xs">
<mat-form-field style="width: 25%; text-align: center" appearance="outline">
<input matInput formControlName="template_answer_weightage">
</mat-form-field>
</div>
</div>
</div>
</div>
<!--</div>-->
<!--<div class="container" fxLayout="row" fxLayout.xs="column" fxLayoutWrap fxLayoutGap="0.5%" fxLayoutAlign="center"
*ngFor="let answ of ques['controls'].answers['controls']; let i_ans = index ; let Ans_last = last;">
<div [formGroupName]="i_ans">
<div fxLayout="row" fxLayoutWrap fxLayoutGap="5%" fxLayoutAlign="start center">
<div fxFlex="0 1 auto" class="ml-xs">
<mat-form-field>
<input matInput formControlName="answer">
</mat-form-field>
</div>
<div fxFlex="0 1 auto" class="ml-xs">
<mat-form-field style="width: 25%; text-align: center" appearance="outline">
<input matInput formControlName="template_answer_weightage">
</mat-form-field>
</div>
</div>
</div>
</div>-->
</div>
</div>
<mat-error *ngIf="submitted && i == dublicateRerdIndex "> This Category Already Exist.!</mat-error>
</td>
</tr>
</table>
</div>
<div class="row" style="text-align:right;">
<button mat-raised-button mat-icon-button class="mr-1 mb-1 hover-icon" matTooltip="Save" matTooltipPosition="above" type="submit"><mat-icon>save</mat-icon></button>
</div>
</form>

View File

@ -0,0 +1,8 @@
.container {
min-height: 100%;
width: 100%;
}
.card-picture {
width: 23%;
margin-bottom: 2%;
}

View File

@ -0,0 +1,25 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { CategoryQuestionAnswerComponent } from './category-question-answer.component';
describe('CategoryQuestionAnswerComponent', () => {
let component: CategoryQuestionAnswerComponent;
let fixture: ComponentFixture<CategoryQuestionAnswerComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ CategoryQuestionAnswerComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(CategoryQuestionAnswerComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@ -0,0 +1,316 @@
import { Component, ViewChild, OnInit, OnDestroy, Input, Inject } from '@angular/core';
import { MatPaginator, MatSort, MatTableDataSource, MatDialog, MatDialogRef, MAT_DIALOG_DATA, PageEvent } from '@angular/material';
import { FormGroup, FormControl, FormBuilder, Validators , FormArray} from '@angular/forms';
import { ActivatedRoute, Router } from '@angular/router';
import { DataSource } from '@angular/cdk/table';
import { Observable } from 'rxjs/Observable';
import { NotifierService } from 'angular-notifier';
import { TemplatesService } from './../../../../../service/templates/templates.service';
import { MastersService } from './../../../../../service/masters/masters.service';
export interface DialogData {
animal: string;
name: string;
}
@Component({
selector: 'app-category-question-answer',
templateUrl: './category-question-answer.component.html',
styleUrls: ['./category-question-answer.component.scss']
})
export class CategoryQuestionAnswerComponent implements OnInit {
@Input() CaterogyQuesAns: any;
_editquestionAnswerForm: FormGroup;
public panelOpenState : boolean;
// secondFormGroup: FormGroup;
/**
* Notifier service
*/
private notifier: NotifierService;
constructor(
notifier: NotifierService,
private templatesService: TemplatesService,
private mastersService: MastersService,
private _formBuilder: FormBuilder,
public dialog: MatDialog) {
this.notifier = notifier;
this._editquestionAnswerForm = this._formBuilder.group({
temp_questions: this._formBuilder.array([
// this.initAnswers(),
])
});
// this.secondFormGroup = this._formBuilder.group({
// secondCtrl: ''
// });
}
ngOnInit() {
this.setFirstFormDate(this.CaterogyQuesAns.questions);
}
// setFirstFormDate(records){
// alert(JSON.stringify(records));
// }
animal: string;
name: string;
openDialog(): void {
const dialogRef = this.dialog.open(DialogOverviewExampleDialog, {
data: {category_id: this.CaterogyQuesAns.fk_question_category_id, template_id: this.CaterogyQuesAns.fk_template_id}
});
dialogRef.afterClosed().subscribe(result => {
console.log('The dialog was closed');
this.animal = result;
this.setModelFirstFormDate(result);
// alert(result);
});
}
setModelFirstFormDate(record){
let val = record;
let vals = {
question_id: val.question_id,
question: val.question,
template_question_id: val.template_question_id,
fk_template_id: val.fk_template_id == null ? this.CaterogyQuesAns.fk_template_id : val.fk_template_id,
fk_question_id: val.fk_question_id == null ? val.question_id: val.fk_question_id,
question_weightage: val.question_weightage,
fk_template_question_category_id: val.fk_template_question_category_id == null ? this.CaterogyQuesAns.fk_question_category_id : val.fk_template_question_category_id,
question_answerable_by:val.question_answerable_by,
isactive: val.isactive == null? 1 : val.isactive,
answers: val.answers
};
this.addLanguage(vals, null);
}
setFirstFormDate(record) {
if (record.length > 0) {
for (let val of record) {
let vals = {
question_id: val.question_id,
question: val.question,
template_question_id: val.template_question_id,
fk_template_id: val.fk_template_id == null ? this.CaterogyQuesAns.fk_template_id : val.fk_template_id,
fk_question_id: val.fk_question_id == null ? val.question_id: val.fk_question_id,
question_weightage: val.question_weightage,
fk_template_question_category_id: val.fk_template_question_category_id == null ? this.CaterogyQuesAns.fk_template_question_category_id : val.fk_template_question_category_id,
question_answerable_by:val.question_answerable_by,
isactive: val.isactive == null? 1 : val.isactive,
answers: val.answers
};
this.addLanguage(vals, null);
}
}
}
setAnswers(record, i){
for (let val of record) {
let vals = {
question_answer_id: val.question_answer_id,
answer: val.answer,
template_answer_weightage_id: val.template_answer_weightage_id,
fk_template_question_id: val.fk_template_question_id,
fk_question_answer_id: val.fk_question_answer_id == null ? val.question_answer_id : val.fk_question_answer_id ,
template_answer_weightage: val.template_answer_weightage,
template_answer_remark: val.template_answer_remark,
isactive: val.isactive
};
this.addAnswerData(vals, null, i);
}
}
// ================== Dynamic Form set for Answers
addAnswerData(data, e, ix) {
// const control = <FormArray>this._editquestionAnswerForm.controls['temp_questions'].get('answers');
// let id = 0;
const control = (<FormArray>this._editquestionAnswerForm.controls['temp_questions']).at(ix).get('answers') as FormArray;
// alert(control);
control.push(this.initAnswerData(data));
}
initAnswerData(data){
return this._formBuilder.group({
answer:[data.answer],
template_answer_weightage_id: [data.template_answer_weightage_id],
fk_template_question_id: [data.fk_template_question_id],
fk_question_answer_id: [data.fk_question_answer_id],
template_answer_weightage: [data.template_answer_weightage, Validators.compose([Validators.required])],
template_answer_remark: [data.template_answer_remark],
isactive: [data.isactive]
});
}
// =============================================
// Dynamic Form field creation Functionality : START ===>
initAnswers(data) {
return this._formBuilder.group({
question_id: [data.question_id],
question: [data.question],
template_question_id: [data.template_question_id],
fk_template_id: [data.fk_template_id],
fk_question_id: [data.fk_question_id],
question_weightage: [data.question_weightage, Validators.compose([Validators.required])],
fk_template_question_category_id: [data.fk_template_question_category_id],
isactive: [data.isactive],
question_answerable_by: [data.question_answerable_by],
answers: this._formBuilder.array([
// this.setAnswers(data.answers)
])
});
}
addLanguage(data, e) {
if (data == null) {
let newDate = {
question:null,
template_question_id: null,
fk_template_id: null,
fk_question_category_id: null,
question_weightage: null,
isactive: 1,
}
const control = <FormArray>this._editquestionAnswerForm.controls['temp_questions'];
control.push(this.initAnswers(newDate));
} else {
// alert(JSON.stringify(data));
const control = <FormArray>this._editquestionAnswerForm.controls['temp_questions'];
control.push(this.initAnswers(data));
// alert(control.length);
// alert(JSON.stringify(this._editquestionAnswerForm.controls.temp_questions['controls']));
this.setAnswers(data.answers, control.length - 1);
}
}
// =========== : END
removeLanguage(inx) {
// let value = <FormArray>this._editquestionAnswerForm.controls['temp_questions'].indexOf(inx);
let value = (<FormArray>this._editquestionAnswerForm.controls['temp_questions']).at(inx).get('template_question_id').value;
if(value == null){
const control = <FormArray>this._editquestionAnswerForm.controls['temp_questions'];
control.removeAt(inx);
} else {
alert();
}
// alert(JSON.stringify(value));
}
submitted: boolean;
onSubmit() {
this.submitted = true;
// stop here if form is invalid
if (this._editquestionAnswerForm.invalid) {
alert('no');
return;
} else {
var formValues = this._editquestionAnswerForm.value;
//To Remove The "Null" With Key also
Object.keys(formValues).forEach((key) => (formValues[key] == null) && delete formValues[key]);
let val = formValues.temp_questions;
let totalScore = val.map(value => { return Number(value.question_weightage); }).reduce((acc, value) => { return acc + value; }, 0);
if (totalScore == 100) {
if (!this.checkDuplicateInObject(formValues.temp_questions)) {
this.templatesService.updateTempateIDQuesAnsDetails(formValues.temp_questions).subscribe(
dataresult => {
if (dataresult.status == 200) {
console.log(dataresult);
this.notifier.notify('success', 'Your Changes Updated.!');
// const arr = <FormArray>this._editquestionAnswerForm.controls.temp_questions;
// arr.controls.splice(0);
// this.getTemplateCategoryDetails();
}
else {
this.notifier.notify('warning', 'Something Wents Wrong Try Again.!');
// this.errorMessage = "Something Wents Wrong Try Again.!";
}
}, error => {
this.notifier.notify('warning', 'Something Wents Wrong Try Again.!');
// this.errorMessage = "Some Thing Wents Wrong Try Again.!";
});
} else {
alert("duplication records occured.!");
}
} else {
alert("value should equal to 100")
}
}
}
public dublicateRerdIndex = -1;
checkDuplicateInObject(inputArray) {
this.dublicateRerdIndex = -1;
let seenDuplicate = false;
inputArray.map((item, index) => {
let currentVal = inputArray[index];
for(let i = index+1 ; i < inputArray.length ; i++ ){
if(currentVal.question_id === inputArray[i].question_id){
console.log('duplication: ' + i);
this.dublicateRerdIndex = i;
seenDuplicate = true;
}
}
console.log(index);
});
return seenDuplicate;
}
}
@Component({
selector: 'dialog-overview-example-dialog',
templateUrl: './dialog-category-question-list.html'
})
export class DialogOverviewExampleDialog {
// typesOfShoes: string[] = [
// 'It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, ',
// 'It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, ',
// 'It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, ',
// 'It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, ',
// 'It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, '
// ];
public m_questions:any;
constructor(
public dialogRef: MatDialogRef<DialogOverviewExampleDialog>,
@Inject(MAT_DIALOG_DATA) public data: DialogData,
private templatesService: TemplatesService,
private mastersService: MastersService,) {
this.getCategoryRemainingQuesMasters();
}
onNoClick(ques): void {
this.dialogRef.close(ques);
}
getCategoryRemainingQuesMasters() {
this.templatesService.getRemaningQuestionCategory(this.data).subscribe(
data => {
this.m_questions = data.records;
},
error => {
// this.notifier.notify('warning', 'No Category Master Records Found.!');
// this.m_category = "No Category Master Records Found.";
}
);
}
}

View File

@ -0,0 +1,5 @@
<div style="max-height: 480px;">
<mat-card style="width: 580px; padding: 6px;" *ngFor="let question of m_questions">
<span (click)="onNoClick(question)">{{question.question}}</span>
</mat-card>
</div>

View File

@ -1,91 +1,20 @@
<!--<form [formGroup]="_editTempCategoryFrom" (submit)="onSubmit()">
<div formArrayName="temp_category" class="example-full-width">
<mat-list role="list">
<mat-list-item style="margin: 2px 0;" *ngFor="let answ of _editTempCategoryFrom.controls.temp_category['controls']; let i=index ; let last = last;"
role="listitem">
<div [formGroupName]="i">
<div fxLayout="row" fxLayoutWrap fxLayoutGap="5%" fxLayoutAlign="start center">
<div fxFlex="0 1 auto" class="ml-xs">
<mat-form-field>
<mat-select placeholder="Category" formControlName="fk_category_id">
<mat-option *ngFor="let category of m_categoryList" [value]="category.fk_category_id">{{ category.name }}</mat-option>
</mat-select>
</mat-form-field>
</div>
<div fxFlex="0 1 auto" class="ml-xs">
<mat-form-field style="width: 25%; text-align: center" appearance="outline">
<input matInput formControlName="weightage">
</mat-form-field> <span>%</span>
</div>
<div fxFlex="0 1 auto" class="ml-xs">
<button *ngIf="_editTempCategoryFrom.controls.temp_category.controls.length > 1" (click)="removeLanguage(i)" mat-button mat-icon-button class="mr-1 mb-1 hover-icon" matTooltip="Delete" matTooltipPosition="above"><mat-icon>delete</mat-icon></button>
</div>
<div fxFlex="0 1 auto" class="ml-xs">
<button *ngIf="last" mat-button mat-icon-button class="mr-1 mb-1 hover-icon" matTooltip="Add More" matTooltipPosition="above" (click)="addLanguage($event); false"><mat-icon>add</mat-icon></button>
</div>
</div>
</div>
</mat-list-item>
</mat-list>
</div>
<div class="row" style="text-align:right;">
<button mat-raised-button mat-icon-button class="mr-1 mb-1 hover-icon" matTooltip="Save" matTooltipPosition="above" type="submit"><mat-icon>save</mat-icon></button>
</div>
</form>-->
<mat-card> <mat-card>
<!--<pre>{{ templateQuesAnsRecord | json}}</pre>-->
<mat-accordion> <mat-accordion>
<mat-expansion-panel> <mat-expansion-panel *ngFor="let data of templateQuesAnsRecord">
<mat-expansion-panel-header> <mat-expansion-panel-header fxLayout="row" fxLayoutWrap fxLayoutGap="5%" fxLayoutAlign="start center">
<mat-panel-title> <mat-panel-title fxFlex="0 1" class="ml-xs">
Category 1 {{ data.category_name }}
</mat-panel-title> </mat-panel-title>
<mat-panel-description> <mat-panel-description fxFlex="0 1" class="ml-xs">
50% {{ data.weightage }}
</mat-panel-description> </mat-panel-description>
</mat-expansion-panel-header> </mat-expansion-panel-header>
<!--<p> {{ data.questions | json }}</p>-->
<!--<mat-horizontal-stepper [linear]="isLinear" #stepper> <app-category-question-answer [CaterogyQuesAns]="data">
<mat-step [stepControl]="firstFormGroup"> </app-category-question-answer>
<form [formGroup]="firstFormGroup">
<ng-template matStepLabel>Questions</ng-template>
<mat-list role="list">
<mat-list-item role="listitem">Item 1</mat-list-item>
<hr>
<mat-list-item role="listitem">Item 2</mat-list-item>
<hr>
<mat-list-item role="listitem">Item 3</mat-list-item>
<hr>
</mat-list>
<div>
<button mat-button matStepperNext>Next</button>
</div>
</form>
</mat-step>
<mat-step [stepControl]="secondFormGroup">
<form [formGroup]="secondFormGroup">
<ng-template matStepLabel>Answers</ng-template>
<mat-form-field>
<input matInput placeholder="Address" formControlName="secondCtrl" required>
</mat-form-field>
<div>
<button mat-button matStepperPrevious>Back</button>
<button mat-button matStepperNext>Next</button>
</div>
</form>
</mat-step>
<mat-step>
<ng-template matStepLabel>Done</ng-template>
You are now done.
<div>
<button mat-button matStepperPrevious>Back</button>
<button mat-button (click)="stepper.reset()">Reset</button>
</div>
</mat-step>
</mat-horizontal-stepper>-->
</mat-expansion-panel> </mat-expansion-panel>
<mat-expansion-panel (opened)="panelOpenState = true" (closed)="panelOpenState = false"> <!--<mat-expansion-panel (opened)="panelOpenState = true" (closed)="panelOpenState = false">
<mat-expansion-panel-header> <mat-expansion-panel-header>
<mat-panel-title> <mat-panel-title>
Category 2 Category 2
@ -95,6 +24,6 @@
</mat-panel-description> </mat-panel-description>
</mat-expansion-panel-header> </mat-expansion-panel-header>
<p>I'm visible because I am open</p> <p>I'm visible because I am open</p>
</mat-expansion-panel> </mat-expansion-panel>-->
</mat-accordion> </mat-accordion>
</mat-card> </mat-card>

View File

@ -5,6 +5,11 @@ import { ActivatedRoute, Router } from '@angular/router';
import { DataSource } from '@angular/cdk/table'; import { DataSource } from '@angular/cdk/table';
import { Observable } from 'rxjs/Observable'; import { Observable } from 'rxjs/Observable';
import { NotifierService } from 'angular-notifier';
import { TemplatesService } from './../../../../service/templates/templates.service';
import { MastersService } from './../../../../service/masters/masters.service';
@Component({ @Component({
selector: 'app-template-edit-question-answer', selector: 'app-template-edit-question-answer',
templateUrl: './edit-question-answer.component.html', templateUrl: './edit-question-answer.component.html',
@ -18,13 +23,29 @@ export class EditQuestionAnswerComponent implements OnInit {
public _editTempCategoryFrom: FormGroup; public _editTempCategoryFrom: FormGroup;
public submitted = false; public submitted = false;
public panelOpenState : boolean; public panelOpenState : boolean;
public templateQuesAnsRecord: any;
firstFormGroup: FormGroup;
secondFormGroup: FormGroup;
constructor( constructor(
notifier: NotifierService,
private templatesService: TemplatesService,
private mastersService: MastersService,
private _formBuilder: FormBuilder, private _formBuilder: FormBuilder,
public dialog: MatDialog) { public dialog: MatDialog) {
this.firstFormGroup = this._formBuilder.group({
temp_questions: this._formBuilder.array([
// this.initAnswers(),
])
});
this.secondFormGroup = this._formBuilder.group({
secondCtrl: ''
});
} }
ngOnInit() { ngOnInit() {
this.getTemplateQuesAnsDetails();
this.initalLoadFormData(); this.initalLoadFormData();
if(this.categoryList.length > 0){ if(this.categoryList.length > 0){
for (let val of this.categoryList) { for (let val of this.categoryList) {
@ -35,6 +56,10 @@ export class EditQuestionAnswerComponent implements OnInit {
} }
} }
setFormQuestionData(record) {
// alert(JSON.stringify(record));
}
initalLoadFormData(){ initalLoadFormData(){
this._editTempCategoryFrom = this._formBuilder.group({ this._editTempCategoryFrom = this._formBuilder.group({
temp_category: this._formBuilder.array([ temp_category: this._formBuilder.array([
@ -89,6 +114,26 @@ export class EditQuestionAnswerComponent implements OnInit {
// END ===> // END ===>
getTemplateQuesAnsDetails() {
this.templatesService.getTemplateIDQuesAnsDetails(this.questionId).subscribe(
data => {
if (data) {
if (data.records) {
this.templateQuesAnsRecord = data.records;
this.setFormQuestionData(this.templateQuesAnsRecord);
// this.templateListData = data.records;
// this.dataLength = data.records.length;
// this.dataSource.data = this.templateListData;
} else {
// this.noTemplateLendersFound = true;
}
} else {
// this.noTemplateLendersFound = true;
}
}
);
}
/** To Save/Edited Popup Data */ /** To Save/Edited Popup Data */
onSubmit() { onSubmit() {

View File

@ -7,31 +7,43 @@
<mat-card style="padding: 6px;"> <mat-card style="padding: 6px;">
<h6>Template Name</h6> <h6>Template Name</h6>
<hr> <hr>
<form (submit)="onSubmit()"> <!---->
<div *ngIf="templateNameRecord">
<form [formGroup]="_editTempNameFrom" (submit)="onSubmit()">
<div fxLayout="row" fxLayoutWrap fxLayoutGap="0.5%" fxLayoutAlign="start center"> <div fxLayout="row" fxLayoutWrap fxLayoutGap="0.5%" fxLayoutAlign="start center">
<mat-form-field class="ml-xs"> <mat-form-field class="ml-xs">
<input matInput placeholder="Template Name"> <input matInput placeholder="Template Name" formControlName="template_name">
<!--<mat-error *ngIf="submitted && f.pan.hasError('required')" class="mat-text-warn">You must Include Pan Number.</mat-error>--> <mat-error *ngIf="submitted && f.template_name.hasError('required')" class="mat-text-warn">You must Include Template Name.</mat-error>
</mat-form-field> </mat-form-field>
<div> <div>
<button mat-button mat-icon-button class="mr-1 mb-1 hover-icon" matTooltip="Reset" matTooltipPosition="above" type="reset"><mat-icon>settings_backup_restore</mat-icon></button> <button mat-button mat-icon-button class="mr-1 mb-1 hover-icon" matTooltip="Reset" matTooltipPosition="above" type="button" (click)="onReset()"><mat-icon>settings_backup_restore</mat-icon></button>
<button mat-button mat-icon-button class="mr-1 mb-1 hover-icon" matTooltip="Save" matTooltipPosition="above" type="submit"><mat-icon>save</mat-icon></button> <button mat-button mat-icon-button class="mr-1 mb-1 hover-icon" matTooltip="Save" matTooltipPosition="above" type="submit"><mat-icon>save</mat-icon></button>
</div> </div>
</div> </div>
</form> </form>
</div>
<div *ngIf="noTemplateNameFound"> No Template Name Found.</div>
</mat-card> </mat-card>
<mat-card> <mat-card>
<mat-tab-group> <mat-tab-group>
<mat-tab label="Lender Details"> <mat-tab label="Lender Details">
<ng-template matTabContent>
<app-template-edit-lender [questionId]="question_id"> <app-template-edit-lender [questionId]="question_id">
</app-template-edit-lender> </app-template-edit-lender>
</ng-template>
</mat-tab> </mat-tab>
<mat-tab label="Category"> <mat-tab label="Category">
<ng-template matTabContent>
<app-template-edit-category [questionId]="question_id"> <app-template-edit-category [questionId]="question_id">
</app-template-edit-category> </mat-tab> </app-template-edit-category>
</ng-template>
</mat-tab>
<mat-tab label="Questions / Answers"> <mat-tab label="Questions / Answers">
<ng-template matTabContent>
<app-template-edit-question-answer [questionId]="question_id"> <app-template-edit-question-answer [questionId]="question_id">
</app-template-edit-question-answer> </app-template-edit-question-answer>
</ng-template>
</mat-tab> </mat-tab>
</mat-tab-group> </mat-tab-group>
</mat-card> </mat-card>

View File

@ -1,14 +1,16 @@
import { Component, ViewChild, OnInit, OnDestroy } from '@angular/core'; import { Component, ViewChild, OnInit, OnDestroy } from '@angular/core';
import { MatPaginator, MatSort, MatTableDataSource, MatDialog, PageEvent } from '@angular/material'; import { MatPaginator, MatSort, MatTableDataSource, MatDialog, PageEvent } from '@angular/material';
import { FormGroup, FormControl, FormBuilder } from '@angular/forms'; import { FormGroup, FormControl, FormBuilder, Validators } from '@angular/forms';
import { ActivatedRoute, Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
import { DataSource } from '@angular/cdk/table'; import { DataSource } from '@angular/cdk/table';
import { Observable } from 'rxjs/Observable'; import { Observable } from 'rxjs/Observable';
import { NotifierService } from 'angular-notifier';
import { TemplateListComponent } from './../templates.list.component'; import { TemplateListComponent } from './../templates.list.component';
import { TemplatesService } from './../../../service/templates/templates.service';
/* /*
* Template Edit component * Edit Template Name component
* : kdk * : kdk
*/ */
@Component({ @Component({
@ -16,18 +18,70 @@ import { TemplateListComponent } from './../templates.list.component';
templateUrl: './templates.edit.component.html' templateUrl: './templates.edit.component.html'
}) })
export class TemplateEditComponent implements OnInit, OnDestroy { export class TemplateEditComponent implements OnInit, OnDestroy {
public pageTitle: string = "Edit Template"; public pageTitle: string = "Edit Template";
public question_id : number; public question_id : number;
public submitted: boolean = false; public submitted: boolean = false;
public _editTempNameFrom: FormGroup;
public templateNameRecord: any;
public noTemplateNameFound: boolean;
constructor( private route: ActivatedRoute, /**
* Notifier service
*/
private notifier : NotifierService;
constructor(
notifier: NotifierService,
private route: ActivatedRoute,
private router: Router, private router: Router,
private templateListComponent : TemplateListComponent) { private templateListComponent : TemplateListComponent,
private templatesService: TemplatesService,
private _formBuilder: FormBuilder,) {
this.notifier = notifier;
this.question_id = this.route.snapshot.params['question-id']; this.question_id = this.route.snapshot.params['question-id'];
this.getTemplateNameDetails(this.question_id);
} }
ngOnInit() { ngOnInit() {
this.templateListComponent.showListView(false); this.templateListComponent.showListView(false);
// this._editTempNameFrom = this._formBuilder.group({
// template_name: [this.templateNameDetails.template_name, Validators.compose([Validators.required]) ]
// })
}
setFormDatas(){
// alert(this.templateNameDetails.template_name);
this._editTempNameFrom = this._formBuilder.group({
template_id: [this.templateNameRecord.template_id],
template_name: [this.templateNameRecord.template_name, Validators.compose([Validators.required]) ],
isactive: [this.templateNameRecord.isactive]
})
}
// convenience getter for easy access to form fields
get f() { return this._editTempNameFrom.controls; }
// get Template name details
getTemplateNameDetails(q_id){
this.templatesService.getTemplateIDNameDetails(q_id).subscribe(
data => {
if (data) {
if (data.records) {
this.noTemplateNameFound = false;
this.templateNameRecord = data.records[0];
this.setFormDatas();
// this.templateListData = data.records;
// this.dataLength = data.records.length;
// this.dataSource.data = this.templateListData;
} else {
this.noTemplateNameFound = true;
}
} else {
this.noTemplateNameFound = true;
}
}
);
} }
backToList(){ backToList(){
@ -35,10 +89,41 @@ export class TemplateEditComponent implements OnInit, OnDestroy {
this.router.navigate([ '../../' ], { relativeTo: this.route }); this.router.navigate([ '../../' ], { relativeTo: this.route });
} }
public errorMessage;
/** To Save/Edited Popup Data */ /** To Save/Edited Popup Data */
onSubmit() { onSubmit() {
this.submitted = true; this.submitted = true;
// stop here if form is invalid // stop here if form is invalid
if (this._editTempNameFrom.invalid) {
this.errorMessage = "Please Fill All Mandate Fields.";
return;
} else {
var formValues = this._editTempNameFrom.value;
//To Remove The "Null" With Key also
Object.keys(formValues).forEach((key) => (formValues[key] == null) && delete formValues[key]);
this.templatesService.updateTempateIDNameDetails(formValues).subscribe(
dataresult => {
if (dataresult.status == 200) {
console.log(dataresult);
this.notifier.notify('success', 'Your Changes Updated.!');
this.getTemplateNameDetails(this.question_id);
}
else {
this.notifier.notify('warning', 'Something Wents Wrong Try Again.!');
this.errorMessage = "Something Wents Wrong Try Again.!";
}
}, error => {
this.notifier.notify('warning', 'Something Wents Wrong Try Again.!');
this.errorMessage = "Some Thing Wents Wrong Try Again.!";
});
}
}
/** To Reset Popup Data */
onReset() {
this.setFormDatas();
} }
ngOnDestroy(): void { ngOnDestroy(): void {

View File

@ -5,6 +5,8 @@ import { FormGroup, FormControl, FormBuilder } from '@angular/forms';
import { DataSource } from '@angular/cdk/table'; import { DataSource } from '@angular/cdk/table';
import { Observable } from 'rxjs/Observable'; import { Observable } from 'rxjs/Observable';
import { TemplatesService } from './../../service/templates/templates.service';
/* /*
* Template List component * Template List component
* : kdk * : kdk
@ -20,6 +22,7 @@ export class TemplateListComponent implements OnInit, OnDestroy {
public listView: boolean; public listView: boolean;
public names: string; public names: string;
public noTemplMasterRecrdFound: boolean = false; public noTemplMasterRecrdFound: boolean = false;
public search_cid : any;
// pagination variable details // pagination variable details
length = 50; length = 50;
@ -38,7 +41,8 @@ export class TemplateListComponent implements OnInit, OnDestroy {
constructor( constructor(
private route: ActivatedRoute, private route: ActivatedRoute,
private router: Router) { private router: Router,
private templatesService: TemplatesService) {
this.listView = true; this.listView = true;
// this.names = 'dinesh'; // this.names = 'dinesh';
} }
@ -51,34 +55,34 @@ export class TemplateListComponent implements OnInit, OnDestroy {
// get question master list details // get question master list details
getTemplateMastersListDetails() { getTemplateMastersListDetails() {
this.templateList = this.m_templateList.records; // this.templateList = this.m_templateList.records;
this.templateListData = this.m_templateList.records; // this.templateListData = this.m_templateList.records;
this.dataLength = this.m_templateList.records.length; // this.dataLength = this.m_templateList.records.length;
this.dataSource.data = this.templateListData;
// this.noTemplMasterRecrdFound = false;
// this.search_cid = this.filterFormGroupCtrl.controls.category.value;
// console.log(this.search_cid + ", " + this.filterFormGroupCtrl);
// this.questionsService.getQuestionMasterDetails(this.search_cid).subscribe(
// data => {
// if (data) {
// if (data.records) {
// this.templateList = data.records;
// this.templateListData = data.records;
// this.dataLength = data.records.length;
// this.dataSource.data = this.templateListData; // this.dataSource.data = this.templateListData;
// } else {
// this.templateList = []; this.noTemplMasterRecrdFound = false;
// this.dataLength = null; this.search_cid = '';
// this.noTemplMasterRecrdFound = true; // console.log(this.search_cid + ", " + this.filterFormGroupCtrl);
// } this.templatesService.getTemplatesMasterListDetails(this.search_cid).subscribe(
// } else { data => {
// this.templateList = []; if (data) {
// this.dataLength = null; if (data.records) {
// this.noTemplMasterRecrdFound = true; this.templateList = data.records;
// } this.templateListData = data.records;
// } this.dataLength = data.records.length;
// ) this.dataSource.data = this.templateListData;
} else {
this.templateList = [];
this.dataLength = null;
this.noTemplMasterRecrdFound = true;
}
} else {
this.templateList = [];
this.dataLength = null;
this.noTemplMasterRecrdFound = true;
}
}
)
} }

View File

@ -29,7 +29,11 @@ import { EditCategoryComponent } from './templates-list/edit/edit-category/edit-
import { EditLenderComponent } from './templates-list/edit/edit-lender/edit-lender.component'; import { EditLenderComponent } from './templates-list/edit/edit-lender/edit-lender.component';
import { EditQuestionAnswerComponent } from './templates-list/edit/edit-question-answer/edit-question-answer.component'; import { EditQuestionAnswerComponent } from './templates-list/edit/edit-question-answer/edit-question-answer.component';
// import { QuestionsService } from './../service/questions/questions.service';
import { TemplatesService } from './../service/templates/templates.service';
import { CategoryQuestionAnswerComponent } from './templates-list/edit/edit-question-answer/category-question-answer/category-question-answer.component';
import { DialogOverviewExampleDialog } from './templates-list/edit/edit-question-answer/category-question-answer/category-question-answer.component';
/* /*
* Question Master Module details * Question Master Module details
* : kdk * : kdk
@ -105,12 +109,15 @@ const customNotifierOptions: NotifierOptions = {
TemplateEditComponent, TemplateEditComponent,
EditCategoryComponent, EditCategoryComponent,
EditLenderComponent, EditLenderComponent,
EditQuestionAnswerComponent EditQuestionAnswerComponent,
CategoryQuestionAnswerComponent,
DialogOverviewExampleDialog
], ],
entryComponents: [ entryComponents: [
DialogOverviewExampleDialog
], ],
providers: [ providers: [
// QuestionsService TemplatesService
] ]
}) })
export class TemplatesModule { } export class TemplatesModule { }