You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.7 KiB
64 lines
1.7 KiB
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 choice_label answer |
|
*/ |
|
@Component({ |
|
selector: 'app-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 = true; |
|
@Input() public pollIsSpecialDate = 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(); |
|
} |
|
}
|
|
|