{{template "base/header" .}} {{template "base/alert" .}}
{{ if .Owner }}
{{ .Owner.Name }}
{{t .LangCode "vote.page.by"}}
{{ end }}
{{ if .NotStarted }}{{t .LangCode "vote.page.notStarted"}}{{ end }} {{ if .Ended }}{{t .LangCode "vote.page.ended"}}{{ end }} {{ if and .CanVote (not .Ended) }}{{t .LangCode "vote.page.active"}}{{ end }} {{ if and .HasVoted (not .Ended) }}{{t .LangCode "vote.page.participated"}}{{ end }}

{{ .Vote.Title }}

{{ if .Vote.Description }}

{{ .Vote.Description }}

{{ end }}
{{ if .PreviewMode }}
{{t .LangCode "vote.page.previewHint"}}
{{ end }} {{ if .FeatureClosedMessage }}
{{ .FeatureClosedMessage }}
{{ end }} {{ if and .NotStarted (not .Error) }}
{{t .LangCode "vote.page.notStartedHint"}}
{{ else if and .Ended (not .ShowResults) (not .Error) }}
{{t .LangCode "vote.page.endedHint"}}
{{ end }} {{ if .CanVote }} {{ if .VoteScopeRegisteredOnly }} {{ if not .IsLogged }}
{{t .LangCode "vote.page.loginRequired"}} {{t .LangCode "common.login"}}
{{ end }} {{ else }}
{{t .LangCode "vote.page.anonymousHint"}}
{{ end }}
{{ .CSRFTokenHTML }}
{{ if eq .Vote.Type "single" }} {{ range .Options }} {{ end }} {{ else if eq .Vote.Type "multiple" }}
{{t .LangCode "vote.page.multipleHintWithMax" .Vote.MaxChoices}}
{{ range .Options }} {{ end }}
{{ else if eq .Vote.Type "rating" }} {{ else if eq .Vote.Type "rank" }}
{{t .LangCode "vote.page.rankHint"}}
{{ range .Options }}
{{ .Content }}
{{ end }} {{ else if eq .Vote.Type "form" }} {{ range $fi, $f := .FormFields }}
{{ add $fi 1 }} {{ fieldTypeLabel $.LangCode $f.FieldType }}
{{ $f.Label }}{{ if $f.Required }} *{{ end }}
{{ if eq $f.FieldType "text" }} {{ else if eq $f.FieldType "textarea" }} {{ else if eq $f.FieldType "select" }} {{ if $f.AllowCustom }} {{ end }} {{ else if eq $f.FieldType "radio" }} {{ range parseOptions $f.Options }} {{ end }} {{ if $f.AllowCustom }} {{ end }} {{ else if eq $f.FieldType "checkbox" }} {{ range parseOptions $f.Options }} {{ end }} {{ if $f.AllowCustom }} {{ end }} {{ else if eq $f.FieldType "number" }} {{ else if eq $f.FieldType "rating" }} {{ else if eq $f.FieldType "rank" }}
{{ if $f.Required }}{{t $.LangCode "vote.page.rankHintRequired"}}{{ else }}{{t $.LangCode "vote.page.rankHintOptional"}}{{ end }}
{{ $opts := parseOptions $f.Options }} {{ range $oi, $opt := $opts }}
{{ $opt }}
{{ end }} {{ end }}
{{ end }} {{ end }} {{ if and .Vote.AllowCustom (or (eq .Vote.Type "single") (eq .Vote.Type "multiple") (eq .Vote.Type "rank")) }}
{{ end }}
{{ if .PreviewMode }} {{t .LangCode "vote.page.previewSubmitHint"}} {{ else if eq .CaptchaType "math" }} {{ else }} {{ end }}
{{ else if .HasVoted }} {{ if and (not .Success) (not .Error) }}
{{t .LangCode "vote.page.alreadyVoted"}}
{{ end }} {{ end }} {{ if .ShowResults }}

{{t .LangCode "vote.page.resultsTitle"}}

{{t .LangCode "vote.page.anonymousNotice"}}
{{ if .Results }} {{ if or (eq .Results.Type "single") (eq .Results.Type "multiple") }}
{{t .LangCode "vote.page.totalVotes"}}: {{ .Results.Total }}
{{ range .Results.Options }}
{{ .Option.Content }} {{ .Count }} {{t $.LangCode "vote.resultsVotes"}}({{ .Percent }}%)
{{ end }} {{ else if eq .Results.Type "rating" }}
{{t .LangCode "vote.page.totalVotes"}}: {{ .Results.Total }} · {{t .LangCode "vote.page.avgRating"}}: {{ printf "%.1f" .Results.AvgRating }}
{{ range .Results.Ratings }}
{{ .Score }} {{t $.LangCode "vote.page.ratingUnit"}} {{ .Count }} {{t $.LangCode "vote.resultsVotes"}}
{{ end }} {{ else if eq .Results.Type "rank" }}
{{t .LangCode "vote.page.totalVotes"}}: {{ .Results.Total }}
{{ range .Results.Rankings }} {{ end }}
{{t .LangCode "vote.page.optionColumn"}}{{t .LangCode "vote.page.avgRank"}}
{{ .Option.Content }}{{ if gt .AvgRank 0.0 }}{{ printf "%.2f" .AvgRank }}{{ else }}-{{ end }}
{{ else if eq .Results.Type "form" }}
{{t .LangCode "vote.page.formCount"}}: {{ .Results.FormCount }}
{{ range $si, $stat := .Results.FormFieldStats }}
{{ add $si 1 }} {{ fieldTypeLabel $.LangCode $stat.Field.FieldType }} {{ $stat.Field.Label }} {{t $.LangCode "vote.resultsAnswered"}}: {{ $stat.Total }}
{{ if or (eq $stat.Field.FieldType "radio") (eq $stat.Field.FieldType "select") (eq $stat.Field.FieldType "checkbox") }} {{ $denom := $stat.Total }} {{ if eq $stat.Field.FieldType "checkbox" }}{{ $denom = $stat.TotalSelections }}{{ end }} {{ range $o := $stat.OptionStats }}
{{ $o.Option.Content }} {{ $o.Count }} {{t $.LangCode "vote.resultsVotes"}}({{ if eq $denom 0 }}0{{ else }}{{ percentOf $o.Count $denom }}{{ end }}%)
{{ end }} {{ if $stat.CustomStats }}
{{t $.LangCode "vote.page.customStats"}}:
{{ range $c := $stat.CustomStats }}
{{ $c.Text }} {{ $c.Count }} {{t $.LangCode "vote.resultsVotes"}}
{{ end }}
{{ end }} {{ else if eq $stat.Field.FieldType "rating" }}
{{t $.LangCode "vote.page.avgRating"}}: {{ printf "%.1f" $stat.AvgRating }}({{ $stat.Total }} {{t $.LangCode "vote.resultsVotes"}})
{{ range $r := $stat.RatingCounts }}
{{ $r.Score }} {{t $.LangCode "vote.page.ratingUnit"}} {{ $r.Count }} {{t $.LangCode "vote.resultsVotes"}}({{ if eq $stat.Total 0 }}0{{ else }}{{ percentOf $r.Count $stat.Total }}{{ end }}%)
{{ end }} {{ else if eq $stat.Field.FieldType "rank" }}
{{t $.LangCode "vote.page.avgRank"}}: {{ printf "%.2f" $stat.AvgRank }}({{ $stat.Total }} {{t $.LangCode "vote.resultsVotes"}})
{{ range $o := $stat.OptionStats }}
{{ $o.Option.Content }} {{t $.LangCode "vote.page.avgRank"}}: {{ if gt $o.Count 0 }}{{ printf "%.2f" $o.AvgRank }}{{ else }}-{{ end }} · {{t $.LangCode "vote.page.rankedTimes"}}: {{ $o.Count }}
{{ end }} {{ else if eq $stat.Field.FieldType "number" }}
{{t $.LangCode "vote.page.avgNumber"}}: {{ printf "%.1f" $stat.AvgNumber }}({{ $stat.Total }} {{t $.LangCode "vote.resultsVotes"}})
{{ else }}
{{t $.LangCode "vote.page.fieldFilled"}}: {{ $stat.TextCount }}
{{ end }}
{{ end }} {{ end }} {{ if .Results.CustomStats }}
{{t .LangCode "vote.page.customStats"}}
{{ range .Results.CustomStats }}
{{ .Text }} {{ .Count }} {{t $.LangCode "vote.resultsVotes"}}
{{ end }}
{{ end }} {{ else }}
{{t .LangCode "vote.resultsEmpty"}}
{{ end }}
{{ end }} {{ if and .IsOwner (not .ShowResults) }}
{{t .LangCode "vote.page.ownerManage"}}
{{ end }} {{template "base/footer" .}}