File

src/app/pages/voting/voting-choice/voting-choice.component.ts

Index

Properties

Properties

answer
answer: "yes" | "no" | "maybe" | null
Type : "yes" | "no" | "maybe" | null
date
date: Date
Type : Date
Optional
false
false:
name
name: string
Type : string
Optional
simpleAnswer
simpleAnswer: boolean
Type : boolean
Optional
votes
votes: literal type
Type : literal type
Optional
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();
    }

}

result-matching ""

    No results matching ""