#134 [pl] polski cenzus płci [wip]
This commit is contained in:
parent
1c8a72488b
commit
307f7185ca
|
@ -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' }
|
||||
|
|
|
@ -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'
|
||||
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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"
|
||||
|
|
Reference in New Issue