framadate-responsive/mocks/old-stuff/pages/voting/voting-choice/voting-choice.component.ts

65 lines
1.7 KiB
TypeScript
Raw Normal View History

import { Component, ElementRef, Input } from '@angular/core';
import { ConfigService } from '../../../services/config.service';
2019-08-21 14:28:50 +02:00
interface VoteChoice {
2020-04-21 10:50:26 +02:00
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.
2020-11-03 15:44:08 +01:00
* this component is used to select a date choice, or a choice_label answer
*/
2019-08-21 14:28:50 +02:00
@Component({
2020-04-22 12:56:18 +02:00
selector: 'app-voting-choice',
2020-04-21 10:50:26 +02:00
templateUrl: './voting-choice.component.html',
styleUrls: ['./voting-choice.component.scss'],
2019-08-21 14:28:50 +02:00
})
export class VotingChoiceComponent {
2020-04-21 10:50:26 +02:00
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;
2019-08-21 14:28:50 +02:00
2020-04-21 10:50:26 +02:00
constructor(private el: ElementRef, private config: ConfigService) {
if (this.poll && this.poll.allowedAnswers) {
this.simpleAnswer = this.poll.allowedAnswers.length == 1;
}
}
2019-08-21 14:28:50 +02:00
2020-04-21 10:50:26 +02:00
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();
}
2019-08-21 14:28:50 +02:00
}