UNPKG

ws-form-builder

Version:
131 lines (100 loc) 3.4 kB
import { Component, Input, Output, EventEmitter } from '@angular/core'; import { FormBuilderProvider } from '../../providers/form-builder/form-builder'; @Component({ selector: 'ws-punchcard', template: ` <div class="ws-punchard-container"> <ion-grid> <ion-row> <ion-col></ion-col> <!-- add blank col for spacing --> <ion-col *ngFor="let col of question.xAxis; let i = index;"> <div class="xAxis-col col-{{col.field}}" id="col-{{col.field}}"> <ion-icon name="md-star"></ion-icon> <span class="col-label">{{col.label}}</span> </div> </ion-col> </ion-row> <span *ngFor="let row of question.yAxis; let r = index;"> <ion-row> <ion-col>{{row.label}}</ion-col> <ion-col *ngFor="let col of question.xAxis; let c = index;"> <div class="body-col"> <ion-checkbox (ionChange)="updateCheckbox($event,row,col,question)"></ion-checkbox> </div> </ion-col> </ion-row> </span> </ion-grid> </div> <pre style="max-height:150px;" *ngIf="isDebug"> {{fieldAnswers | json}} </pre> `, styles: [` .ws-punchard-container .xAxis-col{text-align:center}.ws-punchard-container .xAxis-col .icon{display:block;font-size:30px}.ws-punchard-container .body-col{text-align:center} `] }) export class WsPunchcardComponent { @Input('question') question; @Output() answerGiven = new EventEmitter(); fieldValue:string = ''; isFieldValid:boolean = false; showError:boolean = false; fieldAnswers:object = {}; isDebug:boolean = false; constructor(public formBuilder: FormBuilderProvider){ this.fieldValue = ''; } ngOnInit() { if(typeof this.question.xAxis !== 'undefined' && typeof this.question.yAxis !== 'undefined'){ this.generateFields(); } if(typeof this.question.isDebug !== 'undefined' && this.question.isDebug === true){ this.isDebug = true; } } generateFields(){ let data = {}; for(let i=0; i < Object.keys(this.question.yAxis).length; i++){ //string = string+this.fieldAnswers[i]; let rowField = this.question.yAxis[i]['field']; if(typeof data[rowField] === 'undefined'){ data[rowField] = {}; } for(let x=0; x < Object.keys(this.question.xAxis).length; x++){ let colField = this.question.xAxis[x]['field']; data[rowField][colField] = false; } } this.fieldAnswers = data; //this.getFieldData(''); } getFieldData(key){ if(typeof this.question.data !== 'undefined'){ } } setAnswer(event,question){ let isStringValid = this.validateAnswer(question,event.value); if(!isStringValid){ this.isFieldValid = false; this.showError = true; }else{ this.isFieldValid = true; this.showError = false; } if(this.isFieldValid){ question.value = event.value; question.valid = true; this.answerGiven.emit(question); } } validateAnswer(question,string){ return this.formBuilder.validateAnswer(question,string); } updateCheckbox(event,row,col,question){ question.valid = true; this.fieldAnswers[row.field][col.field] = event.value; question.data = this.fieldAnswers; this.answerGiven.emit(question); } }