Filter only evoting polls, change filter options

Pre filters all analog polls from poll list.
Creates a filter to find thouse with open polls for the user
This commit is contained in:
Sean 2020-03-25 16:35:40 +01:00
parent 91be76a263
commit 14de67a09d
5 changed files with 27 additions and 17 deletions

View File

@ -80,7 +80,7 @@
</div>
<!-- The Vote -->
<os-assignment-poll-vote *ngIf="poll.canBeVotedFor" [poll]="poll"></os-assignment-poll-vote>
<os-assignment-poll-vote *ngIf="poll.canBeVotedFor()" [poll]="poll"></os-assignment-poll-vote>
<!-- More-Button -->
<div class="poll-detail-button-wrapper">

View File

@ -1,5 +1,5 @@
<os-head-bar>
<div class="title-slot" translate>List of votes</div>
<div class="title-slot" translate>List of electronic votes</div>
</os-head-bar>
<os-list-view-table
@ -30,11 +30,11 @@
<!-- Voted Indicator -->
<div *pblNgridCellDef="'votability'; row as poll" class="cell-slot fill">
<mat-icon *ngIf="poll.user_has_voted" color="accent" matTooltip="{{ 'You have already voted.' | translate }}">
<mat-icon *ngIf="poll.hasVote" color="accent" matTooltip="{{ 'You have already voted.' | translate }}">
check_circle
</mat-icon>
<mat-icon
*ngIf="!poll.user_has_voted && poll.canBeVotedFor"
*ngIf="!poll.hasVote && poll.hasVote !== null"
color="warn"
matTooltip="{{ 'Voting is currently in progress.' | translate }}"
>

View File

@ -96,6 +96,16 @@ export abstract class ViewBasePoll<
return MajorityMethodVerbose[this.majority_method];
}
public get hasVote(): boolean | null {
if (!this.user_has_voted && this.canBeVotedFor()) {
return false;
} else if (this.user_has_voted) {
return true;
} else {
return null;
}
}
public abstract get pollmethodVerbose(): string;
public abstract get percentBaseVerbose(): string;

View File

@ -53,7 +53,7 @@ export abstract class BasePollRepositoryService<
protected createViewModelWithTitles(model: M): V {
const viewModel = super.createViewModelWithTitles(model);
Object.defineProperty(viewModel, 'canBeVotedFor', {
get: () => this.votingService.canVote(viewModel)
value: () => this.votingService.canVote(viewModel)
});
return viewModel;
}

View File

@ -21,6 +21,14 @@ export class PollFilterListService extends BaseFilterListService<ViewBasePoll> {
super(store, OSStatus);
}
/**
* Filter out analog polls
* @param viewPoll All polls
*/
protected preFilter(viewPoll: ViewBasePoll[]): ViewBasePoll[] | void {
return viewPoll.filter(poll => !poll.isAnalog);
}
/**
* @returns the filter definition
*/
@ -37,19 +45,11 @@ export class PollFilterListService extends BaseFilterListService<ViewBasePoll> {
]
},
{
property: 'canBeVotedFor',
label: this.translate.instant('Vote'),
property: 'hasVote',
label: this.translate.instant('Voting'),
options: [
{ condition: true, label: this.translate.instant('Vote currently possible') },
{ condition: false, label: this.translate.instant('Vote not possible') }
]
},
{
property: 'user_has_voted',
label: this.translate.instant('Vote finished'),
options: [
{ condition: true, label: this.translate.instant('Has been voted for') },
{ condition: false, label: this.translate.instant('Has not been voted for') }
{ condition: false, label: this.translate.instant('Voting is currently in progress.') },
{ condition: true, label: this.translate.instant('You have already voted.') }
]
}
];