decidim-stratified_sortitions 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE-AGPLv3.txt +661 -0
- data/README.md +91 -0
- data/Rakefile +42 -0
- data/app/cells/decidim/stratified_sortitions/stratified_sortition_cell.rb +21 -0
- data/app/cells/decidim/stratified_sortitions/stratified_sortition_l_cell.rb +22 -0
- data/app/cells/decidim/stratified_sortitions/stratified_sortition_metadata_cell.rb +63 -0
- data/app/commands/decidim/stratified_sortitions/admin/create_stratified_sortition.rb +84 -0
- data/app/commands/decidim/stratified_sortitions/admin/destroy_stratified_sortition.rb +49 -0
- data/app/commands/decidim/stratified_sortitions/admin/duplicate_stratified_sortition.rb +74 -0
- data/app/commands/decidim/stratified_sortitions/admin/import_sample.rb +40 -0
- data/app/commands/decidim/stratified_sortitions/admin/remove_uploaded_samples.rb +53 -0
- data/app/commands/decidim/stratified_sortitions/admin/update_stratified_sortition.rb +174 -0
- data/app/controllers/concerns/decidim/stratified_sortitions/orderable_stratified_sortitions.rb +37 -0
- data/app/controllers/concerns/decidim/stratified_sortitions/strata_charts_data.rb +91 -0
- data/app/controllers/decidim/stratified_sortitions/admin/application_controller.rb +19 -0
- data/app/controllers/decidim/stratified_sortitions/admin/samples_controller.rb +143 -0
- data/app/controllers/decidim/stratified_sortitions/admin/stratified_sortitions_controller.rb +235 -0
- data/app/controllers/decidim/stratified_sortitions/application_controller.rb +13 -0
- data/app/controllers/decidim/stratified_sortitions/charts_pdf_controller_helper.rb +17 -0
- data/app/controllers/decidim/stratified_sortitions/stratified_sortitions_controller.rb +61 -0
- data/app/forms/decidim/stratified_sortitions/admin/sample_upload_form.rb +15 -0
- data/app/forms/decidim/stratified_sortitions/admin/stratified_sortitions_form.rb +155 -0
- data/app/forms/decidim/stratified_sortitions/admin/stratum_form.rb +69 -0
- data/app/forms/decidim/stratified_sortitions/admin/substratum_form.rb +26 -0
- data/app/helpers/decidim/stratified_sortitions/admin/stratified_sortitions_helper.rb +18 -0
- data/app/helpers/decidim/stratified_sortitions/application_helper.rb +85 -0
- data/app/helpers/decidim/stratified_sortitions/charts_pdf_helper.rb +73 -0
- data/app/helpers/decidim/stratified_sortitions/stratified_sortition_cells_helper.rb +56 -0
- data/app/javascript/channels/sample_import_progress.js +12 -0
- data/app/jobs/decidim/stratified_sortitions/admin/execute_sortition_job.rb +21 -0
- data/app/jobs/decidim/stratified_sortitions/admin/import_sample_job.rb +170 -0
- data/app/jobs/decidim/stratified_sortitions/admin/remove_samples_job.rb +19 -0
- data/app/jobs/decidim/stratified_sortitions/admin/sortition_results_export_job.rb +28 -0
- data/app/mailers/decidim/stratified_sortitions/admin/import_mailer.rb +26 -0
- data/app/models/decidim/stratified_sortitions/application_record.rb +9 -0
- data/app/models/decidim/stratified_sortitions/panel_portfolio.rb +165 -0
- data/app/models/decidim/stratified_sortitions/sample_import.rb +14 -0
- data/app/models/decidim/stratified_sortitions/sample_participant.rb +12 -0
- data/app/models/decidim/stratified_sortitions/sample_participant_stratum.rb +11 -0
- data/app/models/decidim/stratified_sortitions/stratified_sortition.rb +74 -0
- data/app/models/decidim/stratified_sortitions/stratum.rb +22 -0
- data/app/models/decidim/stratified_sortitions/substratum.rb +19 -0
- data/app/packs/entrypoints/decidim_stratified_sortitions.js +10 -0
- data/app/packs/entrypoints/decidim_stratified_sortitions_admin.js +9 -0
- data/app/packs/entrypoints/decidim_stratified_sortitions_admin.scss +1 -0
- data/app/packs/images/decidim/stratified_sortitions/icon.svg +1 -0
- data/app/packs/src/decidim/stratified_sortitions/application.js +3 -0
- data/app/packs/src/decidim/stratified_sortitions/results_tabs.js +59 -0
- data/app/packs/src/decidim/stratified_sortitions/stratum_fields.js +302 -0
- data/app/packs/src/decidim/stratified_sortitions/substratum_fields.js +165 -0
- data/app/packs/src/decidim/stratified_sortitions/upload_sample.js +16 -0
- data/app/packs/stylesheets/decidim/stratified_sortitions/admin/stratified_sortitions.scss +210 -0
- data/app/packs/stylesheets/decidim/stratified_sortitions/charts_pdf.scss +148 -0
- data/app/packs/stylesheets/stratified_sortitions.scss +56 -0
- data/app/permissions/decidim/stratified_sortitions/admin/permissions.rb +74 -0
- data/app/permissions/decidim/stratified_sortitions/permissions.rb +23 -0
- data/app/presenters/decidim/stratified_sortitions/admin_log/stratified_sortition_presenter.rb +35 -0
- data/app/queries/decidim/stratified_sortitions/filtered_stratified_sortitions.rb +39 -0
- data/app/serializers/decidim/stratified_sortitions/sortition_result_serializer.rb +116 -0
- data/app/services/decidim/stratified_sortitions/charts_pdf_generator.rb +96 -0
- data/app/services/decidim/stratified_sortitions/fair_sortition_service.rb +247 -0
- data/app/services/decidim/stratified_sortitions/leximin/constraint_builder.rb +180 -0
- data/app/services/decidim/stratified_sortitions/leximin/distribution_solver.rb +217 -0
- data/app/services/decidim/stratified_sortitions/leximin/feasibility_checker.rb +222 -0
- data/app/services/decidim/stratified_sortitions/leximin/panel_generator.rb +149 -0
- data/app/services/decidim/stratified_sortitions/leximin/panel_sampler.rb +125 -0
- data/app/services/decidim/stratified_sortitions/leximin_selector.rb +136 -0
- data/app/services/decidim/stratified_sortitions/sortition_results_exporter.rb +161 -0
- data/app/views/decidim/admin/components/index.html.erb +54 -0
- data/app/views/decidim/stratified_sortitions/admin/import_mailer/import.html.erb +22 -0
- data/app/views/decidim/stratified_sortitions/admin/stratified_sortitions/_confirm_execute_modal.html.erb +19 -0
- data/app/views/decidim/stratified_sortitions/admin/stratified_sortitions/_confirm_participants_modal.html.erb +20 -0
- data/app/views/decidim/stratified_sortitions/admin/stratified_sortitions/_form.html.erb +55 -0
- data/app/views/decidim/stratified_sortitions/admin/stratified_sortitions/_navigation_menu.html.erb +10 -0
- data/app/views/decidim/stratified_sortitions/admin/stratified_sortitions/_strata.html.erb +22 -0
- data/app/views/decidim/stratified_sortitions/admin/stratified_sortitions/_stratum.html.erb +75 -0
- data/app/views/decidim/stratified_sortitions/admin/stratified_sortitions/_substrata.html.erb +34 -0
- data/app/views/decidim/stratified_sortitions/admin/stratified_sortitions/_substratum.html.erb +54 -0
- data/app/views/decidim/stratified_sortitions/admin/stratified_sortitions/edit.html.erb +21 -0
- data/app/views/decidim/stratified_sortitions/admin/stratified_sortitions/execute.html.erb +155 -0
- data/app/views/decidim/stratified_sortitions/admin/stratified_sortitions/export_charts_pdf.html.erb +38 -0
- data/app/views/decidim/stratified_sortitions/admin/stratified_sortitions/index.html.erb +75 -0
- data/app/views/decidim/stratified_sortitions/admin/stratified_sortitions/new.html.erb +21 -0
- data/app/views/decidim/stratified_sortitions/admin/stratified_sortitions/upload_sample.html.erb +117 -0
- data/app/views/decidim/stratified_sortitions/shared/_strata_charts.html.erb +21 -0
- data/app/views/decidim/stratified_sortitions/stratified_sortitions/_results_count.html.erb +15 -0
- data/app/views/decidim/stratified_sortitions/stratified_sortitions/_stratified_sortition.html.erb +1 -0
- data/app/views/decidim/stratified_sortitions/stratified_sortitions/_stratified_sortitions.html.erb +13 -0
- data/app/views/decidim/stratified_sortitions/stratified_sortitions/_tags.html.erb +9 -0
- data/app/views/decidim/stratified_sortitions/stratified_sortitions/index.html.erb +22 -0
- data/app/views/decidim/stratified_sortitions/stratified_sortitions/index.js.erb +5 -0
- data/app/views/decidim/stratified_sortitions/stratified_sortitions/show.html.erb +142 -0
- data/app/views/layouts/decidim/admin/_sidebar_menu.html.erb +45 -0
- data/app/views/layouts/decidim/stratified_sortitions/charts_pdf.html.erb +14 -0
- data/config/assets.rb +24 -0
- data/config/locales/ca.yml +361 -0
- data/config/locales/en.yml +360 -0
- data/config/locales/es.yml +360 -0
- data/config/locales/oc.yml +2 -0
- data/config/routes.rb +1 -0
- data/db/migrate/20251023103900_create_decidim_stratified_sortitions_stratified_sortitions.rb +18 -0
- data/db/migrate/20251104120000_create_stratified_sortitions_strata_and_substrata.decidim_stratified_sortitions.rb +27 -0
- data/db/migrate/20251219120000_create_sample_imports.rb +17 -0
- data/db/migrate/20251219120100_create_sample_participants.rb +19 -0
- data/db/migrate/20251219120200_create_sample_participant_strata.rb +16 -0
- data/db/migrate/20251230130000_change_value_to_text_in_substrata.rb +11 -0
- data/db/migrate/20260102114744_add_status_to_stratified_sortitions.rb +11 -0
- data/db/migrate/20260109105643_allow_null_value_in_substrata.rb +10 -0
- data/db/migrate/20260113121726_add_position_to_strata_and_substrata.rb +8 -0
- data/db/migrate/20260127100000_rename_weighing_to_max_quota_percentage.rb +12 -0
- data/db/migrate/20260127120000_create_panel_portfolios.rb +46 -0
- data/db/migrate/20260518000000_add_foreign_key_to_stratified_sortitions_component.rb +10 -0
- data/db/migrate/20260521000000_add_cascade_to_stratified_sortitions_foreign_keys.rb +64 -0
- data/db/migrate/20260616000000_add_execution_error_to_stratified_sortitions.rb +11 -0
- data/lib/decidim/stratified_sortitions/admin.rb +10 -0
- data/lib/decidim/stratified_sortitions/admin_engine.rb +49 -0
- data/lib/decidim/stratified_sortitions/component.rb +41 -0
- data/lib/decidim/stratified_sortitions/engine.rb +34 -0
- data/lib/decidim/stratified_sortitions/seeds.rb +24 -0
- data/lib/decidim/stratified_sortitions/test/factories.rb +80 -0
- data/lib/decidim/stratified_sortitions/version.rb +13 -0
- data/lib/decidim/stratified_sortitions.rb +29 -0
- metadata +222 -0
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
---
|
|
2
|
+
ca:
|
|
3
|
+
activemodel:
|
|
4
|
+
attributes:
|
|
5
|
+
stratified_sortition:
|
|
6
|
+
created_at: Data de creació
|
|
7
|
+
title: Títol
|
|
8
|
+
description: Descripció
|
|
9
|
+
num_candidates: Nombre de persones candidates a seleccionar
|
|
10
|
+
selection_criteria: Criteris d'elegibilitat
|
|
11
|
+
selected_profiles_description: Descripció dels perfils a seleccionar
|
|
12
|
+
errors:
|
|
13
|
+
messages:
|
|
14
|
+
cannot_add_strata_with_sample_participants: "No es poden afegir estrats quan ja hi ha participants importats"
|
|
15
|
+
cannot_delete_strata_with_sample_participants: "No es poden eliminar estrats quan ja hi ha participants importats"
|
|
16
|
+
cannot_change_stratum_name_with_sample_participants: "No es pot canviar el nom de l'estrat quan ja hi ha participants importats"
|
|
17
|
+
cannot_change_stratum_kind_with_sample_participants: "No es pot canviar el tipus de l'estrat quan ja hi ha participants importats"
|
|
18
|
+
cannot_add_substrata_with_sample_participants: "No es poden afegir subestrats quan ja hi ha participants importats"
|
|
19
|
+
cannot_delete_substrata_with_sample_participants: "No es poden eliminar subestrats quan ja hi ha participants importats"
|
|
20
|
+
cannot_change_substratum_name_with_sample_participants: "No es pot canviar el nom del subestrat quan ja hi ha participants importats"
|
|
21
|
+
cannot_change_substratum_value_with_sample_participants: "No es pot canviar el valor del subestrat quan ja hi ha participants importats"
|
|
22
|
+
cannot_change_substratum_range_with_sample_participants: "No es pot canviar el rang del subestrat quan ja hi ha participants importats"
|
|
23
|
+
cannot_change_num_candidates_when_executed: "No es pot canviar el nombre de candidats després que el sorteig hagi estat executat"
|
|
24
|
+
decidim:
|
|
25
|
+
admin:
|
|
26
|
+
components:
|
|
27
|
+
index:
|
|
28
|
+
headers:
|
|
29
|
+
scope: Àmbit
|
|
30
|
+
components:
|
|
31
|
+
stratified_sortitions:
|
|
32
|
+
name: Sortejos estratificats
|
|
33
|
+
settings:
|
|
34
|
+
global:
|
|
35
|
+
announcement: Avís
|
|
36
|
+
publish_sortitions: Publicar gràfics comparatius dels sortejos
|
|
37
|
+
step:
|
|
38
|
+
announcement: Avís
|
|
39
|
+
stratified_sortitions:
|
|
40
|
+
admin:
|
|
41
|
+
actions:
|
|
42
|
+
configure: Configura
|
|
43
|
+
confirm_destroy: Segur que vols eliminar aquest %{name}?
|
|
44
|
+
destroy: Esborra
|
|
45
|
+
duplicate: Duplica
|
|
46
|
+
execute: Executar sorteig
|
|
47
|
+
new_stratified_sortition: "Nou sorteig estratificat"
|
|
48
|
+
title: "Accions"
|
|
49
|
+
census_management: Gestiona la mostra
|
|
50
|
+
models:
|
|
51
|
+
stratified_sortition:
|
|
52
|
+
fields:
|
|
53
|
+
created_at: Data de creació
|
|
54
|
+
title: Títol
|
|
55
|
+
description: Descripció
|
|
56
|
+
num_candidates: Nombre de candidates a seleccionar
|
|
57
|
+
selection_criteria: Criteris d'elegibilitat
|
|
58
|
+
selected_profiles_description: Descripció dels perfils a seleccionar
|
|
59
|
+
status: Estat
|
|
60
|
+
stratified_sortitions:
|
|
61
|
+
create:
|
|
62
|
+
error: S'ha produït un problema en crear aquest sorteig estratificat
|
|
63
|
+
success: Sorteig estratificat creat amb èxit
|
|
64
|
+
destroy:
|
|
65
|
+
error: S'ha produït un problema en eliminar aquest sorteig estratificat
|
|
66
|
+
has_problems: Aquest sorteig estratificat no s'ha pogut eliminar degut a problemes relacionats
|
|
67
|
+
success: Sorteig estratificat eliminat amb èxit
|
|
68
|
+
duplicate:
|
|
69
|
+
error: S'ha produït un problema en duplicar aquest sorteig estratificat
|
|
70
|
+
success: Sorteig estratificat duplicat amb èxit
|
|
71
|
+
execute:
|
|
72
|
+
candidates: Candidats
|
|
73
|
+
chart_results: Gràfics de distribució
|
|
74
|
+
tab_charts: Gràfics comparatius
|
|
75
|
+
tab_participants: Participants seleccionats
|
|
76
|
+
empty_sample_participants: No es pot executar el sorteig sense un cens carregat
|
|
77
|
+
execute_stratified_sortition: Executar sorteig estratificat
|
|
78
|
+
confirm_execute_title: Confirmació
|
|
79
|
+
confirm_execute_body: En executar el sorteig aquest quedarà registrat a la plataforma i l'acció serà irreversible. No es podran editar les dades, la configuració dels estrats ni la mostra.
|
|
80
|
+
confirm_execute_ok: Executar sorteig
|
|
81
|
+
confirm_execute_cancel: Cancel·lar
|
|
82
|
+
export: Exporta
|
|
83
|
+
export_results: Exporta els resultats
|
|
84
|
+
export_csv: Resultats del sorteig estratificat com a CSV
|
|
85
|
+
export_excel: Resultats del sorteig estratificat com a Excel
|
|
86
|
+
export_json: Resultats del sorteig estratificat com a JSON
|
|
87
|
+
export_charts_pdf: Exportar gràfics PDF
|
|
88
|
+
pdf_title: "Resultats del sorteig %{name}"
|
|
89
|
+
pdf_subtitle: Gràfics comparatius de distribució de la mostra
|
|
90
|
+
pdf_belongs_to: "Pertany a: %{space_name}"
|
|
91
|
+
pdf_algorithm: "Algorisme utilitzat: %{algorithm}"
|
|
92
|
+
pdf_executed_at: "Sorteig realitzat el: %{date}"
|
|
93
|
+
pdf_no_data: Sense dades
|
|
94
|
+
algorithm: Algorisme
|
|
95
|
+
generated_at: Generat el
|
|
96
|
+
generation_time: Temps de generació
|
|
97
|
+
total_participants: Total de participants
|
|
98
|
+
num_panels: Nombre de panels
|
|
99
|
+
selected_at: Seleccionat el
|
|
100
|
+
verification_seed: Llavor de verificació (seed)
|
|
101
|
+
random_value_used: Valor aleatori utilitzat
|
|
102
|
+
selected_panel_probability: Probabilitat del panel seleccionat
|
|
103
|
+
selected_participants_title: Participants seleccionats
|
|
104
|
+
selected_participants:
|
|
105
|
+
one: "1 participant seleccionat"
|
|
106
|
+
other: "%{count} participants seleccionats"
|
|
107
|
+
participant_id: ID
|
|
108
|
+
personal_data_1: "Dada personal 1 (identificador únic)"
|
|
109
|
+
personal_data_2: Dada personal 2
|
|
110
|
+
personal_data_3: Dada personal 3
|
|
111
|
+
personal_data_4: Dada personal 4
|
|
112
|
+
no_results_yet: El sorteig encara no s'ha executat.
|
|
113
|
+
confirm_participants_title: Mostra el llistat de les participants seleccionades
|
|
114
|
+
confirm_participants_body: Estàs accedint a informació i dades personals. Aquesta acció quedarà registrada.
|
|
115
|
+
confirm_participants_ok: Mostra
|
|
116
|
+
confirm_participants_cancel: Cancel·la
|
|
117
|
+
results: Resultats
|
|
118
|
+
executing_notice: El sorteig s'està processant en segon pla. Aquesta pàgina s'actualitzarà quan hagi finalitzat.
|
|
119
|
+
execution_failed: "L'execució del sorteig ha fallat:"
|
|
120
|
+
success: Sorteig estratificat executat amb èxit
|
|
121
|
+
executing: El sorteig ha estat encuat i s'està processant en segon pla.
|
|
122
|
+
target: Objectiu
|
|
123
|
+
title: Executar sorteig estratificat
|
|
124
|
+
export_results:
|
|
125
|
+
no_results: No hi ha resultats per exportar. Executeu el sorteig primer.
|
|
126
|
+
index:
|
|
127
|
+
selected: Sortejos estratificats seleccionats
|
|
128
|
+
title: Sortejos estratificats
|
|
129
|
+
new:
|
|
130
|
+
create: Crea
|
|
131
|
+
title: Nou sorteig estratificat
|
|
132
|
+
edit:
|
|
133
|
+
title: Edita el sorteig estratificat
|
|
134
|
+
update: Actualitza
|
|
135
|
+
form:
|
|
136
|
+
data: Informació general
|
|
137
|
+
description: Descripció
|
|
138
|
+
name: Nom
|
|
139
|
+
published: Publicat
|
|
140
|
+
selected_profiles_description_help: Pots indicar, si s'escau, els criteris d'estratificació utilitzats en el sorteig, i el motiu.
|
|
141
|
+
selection_criteria_help: Pots indicar, si s'escau, els criteris d'elegibilitat de les persones que han estat seleccionades per participar en el sorteig.
|
|
142
|
+
strata:
|
|
143
|
+
title: Estrats
|
|
144
|
+
add_stratum: Afegeix estrat
|
|
145
|
+
stratum:
|
|
146
|
+
up: Amunt
|
|
147
|
+
down: Avall
|
|
148
|
+
remove: Eliminar
|
|
149
|
+
name: Nom
|
|
150
|
+
kind:
|
|
151
|
+
numeric_range: Rang numèric
|
|
152
|
+
title: Tipus
|
|
153
|
+
value: Valor
|
|
154
|
+
substrata_title: Subestrats
|
|
155
|
+
title: Estrat
|
|
156
|
+
substrata:
|
|
157
|
+
add_substratum: Afegir subestrat
|
|
158
|
+
substratum:
|
|
159
|
+
up: Amunt
|
|
160
|
+
down: Avall
|
|
161
|
+
remove: Eliminar
|
|
162
|
+
name: Nom
|
|
163
|
+
value: Valor
|
|
164
|
+
value_placeholder: Valor
|
|
165
|
+
range: Rang
|
|
166
|
+
range_placeholder: Rang (p. ex. 0-18)
|
|
167
|
+
title: Subestrat
|
|
168
|
+
max_quota_percentage: Objectiu %
|
|
169
|
+
max_quota_percentage_placeholder: Objectiu %
|
|
170
|
+
update:
|
|
171
|
+
error: S'ha produït un problema en actualitzar aquest sorteig estratificat
|
|
172
|
+
success: Sorteig estratificat actualitzat amb èxit
|
|
173
|
+
upload_sample:
|
|
174
|
+
age: Grup d'edat
|
|
175
|
+
candidates: Candidats
|
|
176
|
+
census_file: Tria un fitxer
|
|
177
|
+
census_file_label: Arxiu excel.csv amb les dades del cens
|
|
178
|
+
configure_strata_first: Primer has de configurar els estrats i subestrats
|
|
179
|
+
confirm_remove_uploaded_samples: Estàs segur que vols eliminar totes les mostres carregades?
|
|
180
|
+
count_uploaded_files: "<b>%{count}</b> registres carregats."
|
|
181
|
+
description: "El fitxer de la mostra ha de ser un CSV i ha de tenir un format similar al de l'exemple següent:<br>Pots descarregar i utilitzar la plantilla."
|
|
182
|
+
download_template: "Descarregar plantilla"
|
|
183
|
+
download_template_csv: "Descarregar plantilla com a CSV"
|
|
184
|
+
download_template_xlsx: "Descarregar plantilla com a XLSX"
|
|
185
|
+
example: "Dada personal 1 (identificador únic)| Dada personal 2 | Dada personal 3 | Dada personal 4 | Gènere | Edat<br>11111111X | Nom exemple 1 | Telèfon Exemple 1 | correu1@exemple.com | Home | 45<br>22222222X | Nom exemple 2 | Telèfon Exemple 2 | correu2@exemple.com | Dona | 42<br>"
|
|
186
|
+
example_headers:
|
|
187
|
+
personal_data_1: "Dada personal 1 (identificador únic)"
|
|
188
|
+
personal_data_2: "Dada personal 2"
|
|
189
|
+
personal_data_3: "Dada personal 3"
|
|
190
|
+
personal_data_4: "Dada personal 4"
|
|
191
|
+
gender: Gènere
|
|
192
|
+
age: Edat
|
|
193
|
+
example_rows:
|
|
194
|
+
- - "11111111X"
|
|
195
|
+
- "Nom exemple 1"
|
|
196
|
+
- "Telèfon Exemple 1"
|
|
197
|
+
- "correu1@exemple.com"
|
|
198
|
+
- "Home"
|
|
199
|
+
- "45"
|
|
200
|
+
- - "22222222X"
|
|
201
|
+
- "Nom exemple 2"
|
|
202
|
+
- "Telèfon Exemple 2"
|
|
203
|
+
- "correu2@exemple.com"
|
|
204
|
+
- "Dona"
|
|
205
|
+
- "42"
|
|
206
|
+
execute_stratified_sortition: Executa el sorteig
|
|
207
|
+
execute_stratified_sortition_help: El sorteig no es pot executar fins que no es carreguin registres.
|
|
208
|
+
filename_data: "%{filename}, el dia %{date}, número de registres %{count}"
|
|
209
|
+
gender: Gènere
|
|
210
|
+
last_upload_date: La última càrrega va ser el dia %{date}
|
|
211
|
+
help: "La mostra ha de ser un fitxer CSV o Excel.<br> Cada fila respresenta un candidat/candidata."
|
|
212
|
+
no_data: Sense dades
|
|
213
|
+
place: Lloc de naixement
|
|
214
|
+
remove_uploaded_samples: Elimina tots els registres
|
|
215
|
+
confirm_remove_uploaded_samples: Estàs segur que vols eliminar totes les registres?
|
|
216
|
+
target: Objectiu
|
|
217
|
+
title: Gestionar mostra
|
|
218
|
+
upload_census: Puja una nova mostra
|
|
219
|
+
upload_file: Puja nova mostra
|
|
220
|
+
uploaded_file: Dades de la mostra carregada
|
|
221
|
+
uploaded_files: "S'han agregat els següents fitxers:"
|
|
222
|
+
no_uploaded_files: "No hi ha fitxers carregats."
|
|
223
|
+
help_csv: "<b>L'arxiu a carregar ha de seguir les següents instruccions:</b>
|
|
224
|
+
<ul><li>El format del fitxer ha de ser .csv. Pots descarregar una plantilla.</li>
|
|
225
|
+
<li>La primera columna és obligatòria. És l'identificador únic de cada participant i pot ser el DNI, un codi generat aleatòriament o qualsevol altra forma d'identificació que es vulgui fer servir.</li>
|
|
226
|
+
<li>Les columnes 2,3 i 4 (Dada personal 2, 3, 4) són opcionals i no s'utilitzen per fer el sorteig. Serveixen per afegir-hi les dades de contacte de cada participant.</li>
|
|
227
|
+
<li>Les columnes dels estrats són obligatòries i han de tenir el mateix ordre i nom que el que hàgim configurat en l'apartat anterior.</li>
|
|
228
|
+
<li>La informació a incloure a les columnes ha de coincidir amb algun dels Valors que hàgim indicat per cada estrat.</li>
|
|
229
|
+
<li>Si una participant no té dades en algun dels estrats o no coincideix amb algun dels valors configurats, serà exclosa del sorteig.</li></ul>"
|
|
230
|
+
help_submit: 'En "Desar" el sistema realitzarà la càrrega de les dades en segon pla. Pot trigar varis minuts depenent del volum de participants. En finalitzar la càrrega, el resultat es notificarà via email.'
|
|
231
|
+
import_mailer:
|
|
232
|
+
subject: "Resultat de la importació de la mostra"
|
|
233
|
+
import:
|
|
234
|
+
ready: "La importació de la mostra ha finalitzat correctament."
|
|
235
|
+
total_rows: "Total de files"
|
|
236
|
+
imported_rows: "Importades correctament"
|
|
237
|
+
failed_rows: "Files amb errors"
|
|
238
|
+
errors_summary: "Total de files: %{total}. Importades correctament: %{imported}. Files amb errors: %{failed}."
|
|
239
|
+
see_details: "Els identificadors dels participants que han tingut error són:"
|
|
240
|
+
participant_id: "Identificador del participant:"
|
|
241
|
+
samples:
|
|
242
|
+
template:
|
|
243
|
+
personal_data_1: "Dada personal 1 (identificador únic)"
|
|
244
|
+
personal_data_2: "Dada personal 2"
|
|
245
|
+
personal_data_3: "Dada personal 3"
|
|
246
|
+
personal_data_4: "Dada personal 4"
|
|
247
|
+
import_success: "La mostra s'ha importat correctament."
|
|
248
|
+
import_failed: "Hi ha hagut un error en importar la mostra: %{error}"
|
|
249
|
+
errors:
|
|
250
|
+
no_file: "No s'ha seleccionat cap fitxer."
|
|
251
|
+
no_strata: "Has de configurar els estrats i subestrats abans de pujar una mostra."
|
|
252
|
+
pending: "Només pots pujar mostres quan el sorteig estratificat està en estat pendent."
|
|
253
|
+
sample_imports:
|
|
254
|
+
create:
|
|
255
|
+
success: "La mostra s'està carregant en segon pla. Quan acabi rebràs un correu amb el resum de la importació."
|
|
256
|
+
remove_uploaded_samples:
|
|
257
|
+
enqueued: "L'eliminació de la mostra ha estat encuada i es processarà en segon pla."
|
|
258
|
+
success: "Les mostres carregades s'han eliminat correctament."
|
|
259
|
+
error: "Hi ha hagut un error en eliminar les mostres carregades."
|
|
260
|
+
stratified_sortitions:
|
|
261
|
+
count:
|
|
262
|
+
candidates_count:
|
|
263
|
+
one: 1 candidat
|
|
264
|
+
other: "%{count} candidats"
|
|
265
|
+
filters:
|
|
266
|
+
all: Tots
|
|
267
|
+
pending: Pendent
|
|
268
|
+
executing: Executant
|
|
269
|
+
executed: Executat
|
|
270
|
+
failed: Fallat
|
|
271
|
+
state: Estat
|
|
272
|
+
index:
|
|
273
|
+
empty: Encara no hi ha sortejos estratificats.
|
|
274
|
+
orders:
|
|
275
|
+
label: 'Ordenar sortejos estratificats per:'
|
|
276
|
+
random: Aleatori
|
|
277
|
+
recent: Recent
|
|
278
|
+
results_count:
|
|
279
|
+
count:
|
|
280
|
+
one: Candidat a seleccionar
|
|
281
|
+
other: Candidats a seleccionar
|
|
282
|
+
count_selected:
|
|
283
|
+
one: Candidat seleccionat
|
|
284
|
+
other: Candidats seleccionats
|
|
285
|
+
show:
|
|
286
|
+
introduction: "Aquesta pàgina conté els detalls del sorteig estratificat %{reference}. Mitjançant aquest sorteig, s'han seleccionat %{num_candidates} candidats utilitzant un algorisme de selecció aleatòria estratificada que garanteix la representació justa en tots els estrats definits."
|
|
287
|
+
description: Descripció
|
|
288
|
+
selection_criteria: Criteris d'elegibilitat
|
|
289
|
+
selected_profiles_description: Descripció dels perfils seleccionats
|
|
290
|
+
to_be_selected_profiles_description: Descripció dels perfils a seleccionar
|
|
291
|
+
strata: Estrats
|
|
292
|
+
max_quota: Quota màxima
|
|
293
|
+
selected_participants: Participants seleccionats
|
|
294
|
+
selected_participants_count:
|
|
295
|
+
one: S'ha seleccionat 1 participant
|
|
296
|
+
other: "S'han seleccionat %{count} participants"
|
|
297
|
+
sortition_details: Detalls del sorteig
|
|
298
|
+
num_candidates: Nombre de candidates a seleccionar
|
|
299
|
+
status: Estat
|
|
300
|
+
strata_count: Nombre d'estrats
|
|
301
|
+
algorithm: Algorisme
|
|
302
|
+
algorithm_name: LEXIMIN
|
|
303
|
+
algorithm_description: Algorisme de selecció aleatòria estratificada que garanteix la representació justa en tots els estrats definits
|
|
304
|
+
reproducibility_details: Reproductibilitat del sorteig
|
|
305
|
+
verification_seed: Llavor de verificació
|
|
306
|
+
random_value_used: Valor aleatori utilitzat
|
|
307
|
+
selected_panel_index: Índex del panell seleccionat
|
|
308
|
+
selected_at: Seleccionat el
|
|
309
|
+
strata_charts: Distribució dels perfils
|
|
310
|
+
target: Objectiu a assolir
|
|
311
|
+
candidates: Candidatures rebudes
|
|
312
|
+
no_data: Sense dades
|
|
313
|
+
results: Resultats del sorteig
|
|
314
|
+
statuses:
|
|
315
|
+
pending: Pendent
|
|
316
|
+
executing: Executant
|
|
317
|
+
executed: Executat
|
|
318
|
+
failed: Fallat
|
|
319
|
+
stratified_sortition:
|
|
320
|
+
num_candidates: candidats a seleccionar
|
|
321
|
+
strata_count: estrats
|
|
322
|
+
stratified_sortitions_count:
|
|
323
|
+
count:
|
|
324
|
+
one: 1 sorteig estratificat
|
|
325
|
+
other: "%{count} sortejos estratificats"
|
|
326
|
+
admin_log:
|
|
327
|
+
stratified_sortition:
|
|
328
|
+
create: "%{user_name} ha creat el sorteig estratificat %{resource_name} a %{space_name}"
|
|
329
|
+
update: "%{user_name} ha actualitzat el sorteig estratificat %{resource_name} a %{space_name}"
|
|
330
|
+
delete: "%{user_name} ha eliminat el sorteig estratificat %{resource_name} a %{space_name}"
|
|
331
|
+
duplicate: "%{user_name} ha duplicat el sorteig estratificat %{resource_name}"
|
|
332
|
+
import_sample: "%{user_name} ha importat una mostra al sorteig estratificat %{resource_name} a %{space_name}"
|
|
333
|
+
remove_samples: "%{user_name} ha eliminat els registres importats del sorteig estratificat %{resource_name} a %{space_name}"
|
|
334
|
+
execute: "%{user_name} ha executat el sorteig estratificat %{resource_name} a %{space_name}"
|
|
335
|
+
export_results: "%{user_name} ha exportat els resultats del sorteig estratificat %{resource_name} a %{space_name}"
|
|
336
|
+
view_participants: "%{user_name} ha consultat el llistat de participants seleccionades del sorteig estratificat %{resource_name} a %{space_name}"
|
|
337
|
+
errors:
|
|
338
|
+
panel_portfolio:
|
|
339
|
+
already_sampled: "La cartera ja ha estat mostrejada"
|
|
340
|
+
probabilities_size_mismatch: "han de tenir la mateixa mida que els panells (%{panels_count} panells, %{probabilities_count} probabilitats)"
|
|
341
|
+
probabilities_sum_invalid: "han de sumar 1.0 (actualment %{total})"
|
|
342
|
+
feasibility:
|
|
343
|
+
panel_size_positive: "La mida del panell (num_candidates) ha de ser un número positiu"
|
|
344
|
+
no_categories: "No hi ha categories (substrats) definides. Cal configurar els estrats i substrats abans d'executar l'algorisme"
|
|
345
|
+
no_volunteers: "No hi ha voluntaris al pool. Cal importar participants abans d'executar el sorteig"
|
|
346
|
+
pool_too_small: "El pool de voluntaris (%{volunteers_count}) és més petit que la mida del panell (%{panel_size}). Afegiu més participants o reduïu el nombre de candidats a seleccionar"
|
|
347
|
+
stratum_insufficient_quotas: "L'estrat '%{stratum_name}' té quotes màximes insuficients. La suma de quotes màximes (%{total_max}) és menor que la mida del panell (%{panel_size})"
|
|
348
|
+
stratum_percentages_exceed: "L'estrat '%{stratum_name}' té percentatges que sumen més del 100%% (%{total_percentage}%%)"
|
|
349
|
+
substratum_insufficient_volunteers: "El substrat '%{substratum_name}' de l'estrat '%{stratum_name}' requereix mínim %{min_quota} voluntaris però només n'hi ha %{volunteers_count}"
|
|
350
|
+
substratum_quota_exceeds_volunteers: "El substrat '%{substratum_name}' de l'estrat '%{stratum_name}' té una quota màxima de %{max_quota} (%{percentage}%%) però només %{volunteers_count} voluntari(s) pertanyen a aquesta categoria. Reduïu el percentatge de quota màxima o afegiu més participants en aquesta categoria"
|
|
351
|
+
volunteers_missing_strata: "Hi ha %{count} voluntari(s) que no tenen assignat un substrat per a cada estrat. Això pot causar problemes en l'algorisme de selecció"
|
|
352
|
+
no_name: "Sense nom"
|
|
353
|
+
fair_sortition:
|
|
354
|
+
already_performed: "El sorteig ja s'ha realitzat per aquest procés"
|
|
355
|
+
portfolio_generation_failed: "Error generant la cartera de panells: %{error}"
|
|
356
|
+
no_portfolio: "No hi ha cartera de panels. Executeu `generate_portfolio` primer"
|
|
357
|
+
sampling_failed: "Error en el mostreig: %{error}"
|
|
358
|
+
leximin:
|
|
359
|
+
no_feasible_panel: "No s'ha pogut trobar cap panell inicial vàlid. La combinació de restriccions de quota (percentatges màxims) i la mostra disponible fan impossible formar un panell. Possibles causes: (1) Els percentatges de quota màxima d'alguns substrats són massa restrictius per a la mida de la mostra disponible. (2) No hi ha prou participants en certes combinacions de substrats. (3) El nombre de candidats a seleccionar és massa gran en relació a la mostra. Proveu d'ajustar els percentatges de quota màxima o carregueu una mostra més gran."
|
|
360
|
+
internal_error: "Error intern en l'algorisme de selecció: %{error}. Si us plau, verifiqueu que la configuració dels estrats i els percentatges de quota màxima són compatibles amb la mostra carregada."
|
|
361
|
+
|