import {Component, ElementRef, Input} from '@angular/core'; import {ConfigService} from "../../../services/config.service"; interface VoteChoice { votes?: { yes: number no: number maybe: number notAnswered: number }; name?: string; date?: Date; answer: 'yes' | 'no' | 'maybe' | null; simpleAnswer?: boolean false; // enable if we display only a togglable "yes" } /** * each vote choice takes a configuration from the container of all choices. * this component is used to select a date choice, or a name answer */ @Component({ selector: 'framadate-voting-choice', templateUrl: './voting-choice.component.html', styleUrls: ['./voting-choice.component.scss'] }) export class VotingChoiceComponent { public showChangeChoicebutton = false; @Input() public choice: any; @Input() public choices_count: any; @Input() public choice_id: any; @Input() public poll: any; @Input() public simpleAnswer: boolean = true; @Input() public pollIsSpecialDate: boolean = false; constructor(private el: ElementRef, private config: ConfigService) { if (this.poll && this.poll.allowedAnswers) { this.simpleAnswer = this.poll.allowedAnswers.length == 1 } } setAnswserTo(newAnswer: 'yes' | 'no' | 'maybe' | null) { if (this.simpleAnswer) { // only toggle yes to no if (this.choice.answer && this.choice.answer === 'yes') { this.choice.answer = 'no'; this.config.myTempVoteStack--; } else { this.choice.answer = newAnswer; this.config.myTempVoteStack++; } } else { this.choice.answer = newAnswer; if (this.choice.answer !== newAnswer) { if (newAnswer == 'maybe' || newAnswer == 'yes') { this.config.myTempVoteStack++; } } else { console.info('same answer as before') } } this.el.nativeElement.blur(); } }