#134 [pl] polski cenzus płci [wip]

This commit is contained in:
Avris 2021-01-02 13:58:17 +01:00
parent 1c8a72488b
commit 307f7185ca
5 changed files with 166 additions and 24 deletions

View File

@ -1,5 +1,8 @@
locale: 'pl'
format:
timezone: 'Europe/Warsaw'
header: true
pronouns:
@ -512,22 +515,21 @@ profile:
census:
enabled: false
route: 'cenzus'
open: true
edition: '2021'
start: '2021-03-01'
end: '2021-03-31'
start: '2021-01-01T00:00:00+01:00' # TODO
end: '2021-03-31T23:59:59+02:00'
questions:
-
type: 'number'
min: 12
max: 120
question: 'Ile masz lat?'
-
type: 'radio'
question: 'Gdzie obecnie mieszkasz?'
options:
- 'w Polsce'
- 'za granicą'
-
type: 'number'
min: 12
max: 120
question: 'Ile masz lat?'
-
type: 'checkbox'
question: 'Jakimi słowami opisujesz swoją płeć?'
@ -535,13 +537,71 @@ census:
writein: true
options:
- 'niebinarn_'
- 'agender'
- 'agenderow_'
- 'bigender'
- 'bigenderow_'
- 'enby'
- 'niebinie'
- 'apłciow_'
- 'agenderow_'
- 'bigenderow_'
- 'kłir'
- 'andogyniczn_'
- 'aporapłciow_'
- 'aporagenderow_'
- 'autypłciow_'
- 'autygenderow_'
- 'demipłciow_'
- 'demigenderow_'
- 'demidziewczę'
- 'demichłopię'
- 'maweryczn_'
- 'ksenopłciow_'
- 'ksenogenderow_'
- 'neutralnopłciow_'
- 'neutralnogenderow_'
- 'nienormatywn_ płciowo'
- 'panpłciow_'
- 'pangenderow_'
- 'płynnopłciow_'
- 'płynnogenderow_'
- 'zmiennopłciow_'
- 'zmiennogenderow_'
- 'rozważając_ swoją płeć'
- 'transkobiec_'
- 'trans kobieta'
- 'transmęsk_'
- 'trans mężczyzna'
- 'transgenderow_'
- 'transpłciow_'
- 'transneutraln_'
- 'tripłciow_'
- 'trigenderow_'
- 'kobiec_'
- 'kobieta'
- 'męsk_'
- 'mężczyzna'
- 'nonbinary'
- 'enby'
- 'agender'
- 'bigender'
- 'queer'
- 'androgyne'
- 'aporagender'
- 'autygender'
- 'demigender'
- 'demigirl'
- 'demiboy'
- 'maverique'
- 'xenogender'
- 'neutrois'
- 'genderqueer'
- 'pangender'
- 'genderfluid'
- 'genderflux'
- 'gender questioning'
- 'transfeminine'
- 'transgender'
- 'trans'
- 'transneutral'
- 'trigender'
-
type: 'checkbox'
question: 'Jakich zaimków i innych form nacechowanych płciowo używasz?'
@ -550,14 +610,59 @@ census:
options:
- 'on/jego'
- 'ona/jej'
- 'ono/jego'
- 'ono/jej'
- 'ono/jejgo'
- 'ono/jeno'
- 'ono/jenu'
- 'vono/vego'
- 'ono/eno'
- 'onu/jenu'
- 'onu/jejo'
- 'ne/nego'
- 'oni/ich'
- 'one/ich'
- 'oni/e/ich'
- 'ona/ich'
- 'ony/ich'
- 'onie/ich'
- 'onæ/jæ'
- 'on/a/jego/jej'
- 'onx/jex'
- 'on_/je_'
- 'on*/je*'
- 'onø/jenø'
- 'ony/jegy'
- '''n''/je'
-
type: 'checkbox'
question: 'Jakich form rzeczownikowych używasz?'
randomise: true
writein: true
options:
- 'maskulatywy'
- 'feminatywy'
- 'neutratywy'
- 'dukatywy'
- 'osobatywy'
-
type: 'checkbox'
question: 'Jakich form grzecznościowych i tytułów używasz?'
randomise: true
writein: true
options:
- 'per ty'
- 'per wy'
- 'pan'
- 'pani'
- 'państwo'
- 'pań'
- 'panu'
redirects:
- { from: '^/neutratywy$', to: '/s%C5%82owniki' }

View File

@ -943,7 +943,7 @@ census:
To super, bo nas też! Dlatego chcemy co roku przeprowadzać cenzus, w którym to zbadamy.
Serdecznie zapraszamy do udziału <strong>wszystkie osoby niebinarne posługujące się językiem polskim</strong>.
- >
Ankieta składa się z <strong>%questions% pytań</strong> i jest otwarta <strong>od %start% do %end%</strong>.
Ankieta składa się z <strong>%questions% pytań</strong> i jest otwarta od %start% do %end%.
W pytaniach wielokrotnego wyboru można zaznaczyć wiele odpowiedzi, jak również dopisać własne.
By uniknąć tendencyjności, kolejność propozycji jest losowa.
agree: >
@ -960,6 +960,7 @@ census:
prev: 'Poprzednie pytanie'
next: 'Następne pytanie'
replies: 'odpowiedzi'
writein: 'Jeśli Twojej odpowiedzi nie ma powyżej, możesz ją wpisać tutaj.'
share: 'Udostępnij'

View File

@ -27,6 +27,7 @@
"js-md5": "^0.7.3",
"jsonwebtoken": "^8.5.1",
"lodash": "^4.17.20",
"luxon": "^1.25.0",
"mailer": "^0.6.7",
"markdown-loader": "^6.0.0",
"nuxt": "^2.14.7",

View File

@ -16,8 +16,8 @@
<section>
<T :params='{
questions: questions.length,
start: config.census.start,
end: config.census.end,
start: start.setLocale(config.locale).toLocaleString(DateTime.DATE_SHORT),
end: end.setLocale(config.locale).toLocaleString(DateTime.DATE_SHORT),
}'>census.description</T>
</section>
@ -25,7 +25,7 @@
<Share :title="$t('census.headerLong')"/>
</section>
<section v-if="config.census.open">
<section v-if="open">
<div v-if="finished" class="alert alert-success">
<Icon v="badge-check"/>
<T>census.finished</T>
@ -40,7 +40,7 @@
</div>
</div>
<div class="form-group">
<button class="btn btn-primary btn-lg" :disabled="!agreement" @click="start">
<button class="btn btn-primary btn-lg" :disabled="!agreement" @click="startSurvey">
<T>census.start</T>
</button>
</div>
@ -56,7 +56,7 @@
</div>
<p class="h4">{{q+1}}. {{question.question}}</p>
<form>
<div v-if="question.type === 'radio'" class="form-group">
<div v-if="question.type === 'radio'" :class="['form-group', question.options.length > 10 ? 'multi-column' : '']">
<div class="form-check" v-for="option in question.options">
<label class="form-check-label small">
<input type="radio" class="form-check-input" v-model="answers[q]" :name="'question' + q" :value="option" required/>
@ -64,7 +64,7 @@
</label>
</div>
</div>
<div v-else-if="question.type === 'checkbox'" class="form-group">
<div v-else-if="question.type === 'checkbox'" :class="['form-group', question.options.length > 10 ? 'multi-column' : '']">
<div class="form-check" v-for="option in question.options">
<label class="form-check-label small">
<input type="checkbox" class="form-check-input" v-model="answers[q]" :value="option"/>
@ -72,7 +72,7 @@
</label>
</div>
</div>
<div v-else-if="question.type === 'etxt'" class="form-group">
<div v-else-if="question.type === 'text'" class="form-group">
<input type="text" class="form-control" v-model="answers[q]" required/>
</div>
<div v-else-if="question.type === 'number'" class="form-group">
@ -80,7 +80,7 @@
</div>
<div v-if="question.writein" class="form-group">
<input type="text" class="form-control form-control-sm" v-model="writins[q]"/>
<input type="text" class="form-control form-control-sm" v-model="writins[q]" :placeholder="$t('census.writein')"/>
</div>
</form>
@ -97,6 +97,11 @@
</template>
<template v-else>
<div class="progress my-3">
<div class="progress-bar" role="progressbar" :style="`width: ${progress}%`" :aria-valuenow="q" aria-valuemin="0" :aria-valuemax="questions.length">
{{q}}/{{questions.length}}
</div>
</div>
<div class="alert alert-success">
<Icon v="badge-check"/>
<T>census.finished</T>
@ -107,6 +112,7 @@
<script>
import {buildDict, head, shuffle} from "../src/helpers";
import {DateTime} from "luxon";
export default {
data() {
@ -134,6 +140,7 @@
i++;
}
}),
DateTime,
}
},
async asyncData({ app, store }) {
@ -146,7 +153,7 @@
};
},
methods: {
start() {
startSurvey() {
this.q = 0;
}
},
@ -178,7 +185,17 @@
return this.answers[this.q] !== '';
}
return true;
}
},
start() {
return DateTime.fromISO(this.config.census.start).toLocal();
},
end() {
return DateTime.fromISO(this.config.census.end).toLocal();
},
open() {
const now = DateTime.utc().setZone(this.config.format.timezone);
return now >= this.start && now <= this.end;
},
},
watch: {
async q() {
@ -198,3 +215,16 @@
},
};
</script>
<style lang="scss">
@import "../assets/style";
.multi-column {
columns: 2;
}
@include media-breakpoint-up('md', $grid-breakpoints) {
.multi-column {
columns: 3;
}
}
</style>

View File

@ -5542,6 +5542,11 @@ lru-cache@^5.1.1:
dependencies:
yallist "^3.0.2"
luxon@^1.25.0:
version "1.25.0"
resolved "https://registry.yarnpkg.com/luxon/-/luxon-1.25.0.tgz#d86219e90bc0102c0eb299d65b2f5e95efe1fe72"
integrity sha512-hEgLurSH8kQRjY6i4YLey+mcKVAWXbDNlZRmM6AgWDJ1cY3atl8Ztf5wEY7VBReFbmGnwQPz7KYJblL8B2k0jQ==
mailer@^0.6.7:
version "0.6.7"
resolved "https://registry.yarnpkg.com/mailer/-/mailer-0.6.7.tgz#012d69b2554864976d9d77f5326b35097653f653"