Skip to content

Commit 97f84c7

Browse files
Fix strata position (#26)
* Fix strata position * Extract create stratum and substratum methods
1 parent 4acbe5e commit 97f84c7

File tree

7 files changed

+39
-47
lines changed

7 files changed

+39
-47
lines changed

app/commands/decidim/stratified_sortitions/admin/create_stratified_sortition.rb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@ def create_strata(stratified_sortition)
6262
stratum = Decidim::StratifiedSortitions::Stratum.create!(
6363
stratified_sortition:,
6464
name: stratum_form.name,
65-
kind: stratum_form.kind
65+
kind: stratum_form.kind,
66+
position: stratum_form.position
6667
)
6768

6869
stratum_form.substrata_to_persist.each do |substratum_form|
@@ -71,7 +72,8 @@ def create_strata(stratified_sortition)
7172
name: substratum_form.name,
7273
value: substratum_form.value,
7374
range: substratum_form.range,
74-
max_quota_percentage: substratum_form.max_quota_percentage
75+
max_quota_percentage: substratum_form.max_quota_percentage,
76+
position: substratum_form.position
7577
)
7678
end
7779
end

app/commands/decidim/stratified_sortitions/admin/update_stratified_sortition.rb

Lines changed: 26 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -91,21 +91,11 @@ def update_strata(stratified_sortition)
9191
position: stratum_form.position
9292
)
9393
else
94-
stratum_object = Decidim::StratifiedSortitions::Stratum.create!(
95-
stratified_sortition:,
96-
name: stratum_form.name,
97-
kind: stratum_form.kind,
98-
position: stratum_form.position
99-
)
94+
stratum_object = create_stratum(stratified_sortition, stratum_form)
10095
end
10196
update_substrata(stratum_object, stratum_form)
10297
else
103-
stratum_object = Decidim::StratifiedSortitions::Stratum.create!(
104-
stratified_sortition:,
105-
name: stratum_form.name,
106-
kind: stratum_form.kind,
107-
position: stratum_form.position
108-
)
98+
stratum_object = create_stratum(stratified_sortition, stratum_form)
10999
create_substrata(stratum_object, stratum_form)
110100
end
111101
end
@@ -129,29 +119,15 @@ def update_substrata(stratum, stratum_form)
129119
value: substratum_form.value,
130120
range: substratum_form.range,
131121
max_quota_percentage: substratum_form.max_quota_percentage,
132-
position: stratum_form.position
122+
position: substratum_form.position
133123
)
134124
updated_or_created_ids << substratum.id
135125
else
136-
Decidim::StratifiedSortitions::Substratum.create!(
137-
stratum:,
138-
name: substratum_form.name,
139-
value: substratum_form.value,
140-
range: substratum_form.range,
141-
max_quota_percentage: substratum_form.max_quota_percentage,
142-
position: stratum_form.position
143-
)
126+
new_substratum = create_substratum(stratum, substratum_form)
144127
updated_or_created_ids << new_substratum.id
145128
end
146129
else
147-
new_substratum = Decidim::StratifiedSortitions::Substratum.create!(
148-
stratum:,
149-
name: substratum_form.name,
150-
value: substratum_form.value,
151-
range: substratum_form.range,
152-
max_quota_percentage: substratum_form.max_quota_percentage,
153-
position: stratum_form.position
154-
)
130+
new_substratum = create_substratum(stratum, substratum_form)
155131
updated_or_created_ids << new_substratum.id
156132
end
157133
end
@@ -167,17 +143,31 @@ def update_substrata(stratum, stratum_form)
167143
end
168144
end
169145

146+
def create_stratum(stratified_sortition, stratum_form)
147+
Decidim::StratifiedSortitions::Stratum.create!(
148+
stratified_sortition:,
149+
name: stratum_form.name,
150+
kind: stratum_form.kind,
151+
position: stratum_form.position
152+
)
153+
end
154+
170155
def create_substrata(stratum, stratum_form)
171156
stratum_form.substrata_to_persist.each do |substratum_form|
172-
Decidim::StratifiedSortitions::Substratum.create!(
173-
stratum:,
174-
name: substratum_form.name,
175-
value: substratum_form.value,
176-
range: substratum_form.range,
177-
max_quota_percentage: substratum_form.max_quota_percentage
178-
)
157+
create_substratum(stratum, substratum_form)
179158
end
180159
end
160+
161+
def create_substratum(stratum, substratum_form)
162+
Decidim::StratifiedSortitions::Substratum.create!(
163+
stratum:,
164+
name: substratum_form.name,
165+
value: substratum_form.value,
166+
range: substratum_form.range,
167+
max_quota_percentage: substratum_form.max_quota_percentage,
168+
position: substratum_form.position
169+
)
170+
end
181171
end
182172
end
183173
end

app/controllers/concerns/decidim/stratified_sortitions/strata_charts_data.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ module StrataChartsData
1212
private
1313

1414
def strata_data(stratified_sortition)
15-
stratified_sortition.strata.map do |stratum|
16-
chart_data = stratum.substrata.map do |substratum|
15+
stratified_sortition.strata.order(:position).map do |stratum|
16+
chart_data = stratum.substrata.order(:position).map do |substratum|
1717
quota_value = substratum.max_quota_percentage.present? ? substratum.max_quota_percentage.to_f : 0.0
1818
label_with_percentage = "#{translated_attribute(substratum.name)} (#{quota_value}%)"
1919
[label_with_percentage, quota_value]
@@ -32,7 +32,7 @@ def candidates_data(stratified_sortition)
3232
end
3333

3434
def results_data(stratified_sortition)
35-
return stratified_sortition.strata.map { |stratum| { stratum:, chart_data: [] } } unless stratified_sortition.panel_portfolio&.sampled?
35+
return stratified_sortition.strata.order(:position).map { |stratum| { stratum:, chart_data: [] } } unless stratified_sortition.panel_portfolio&.sampled?
3636

3737
selected_ids = stratified_sortition.panel_portfolio.selected_panel
3838
participants_distribution_data(stratified_sortition, selected_ids)
@@ -43,7 +43,7 @@ def participants_distribution_data(stratified_sortition, participant_ids)
4343
by_stratum = group_by_stratum(sample_candidates_stratum)
4444
by_stratum_and_substratum = group_by_stratum_and_substratum(sample_candidates_stratum)
4545

46-
stratified_sortition.strata.map do |stratum|
46+
stratified_sortition.strata.order(:position).map do |stratum|
4747
build_stratum_chart(stratum, by_stratum, by_stratum_and_substratum)
4848
end
4949
end
@@ -69,7 +69,7 @@ def group_by_stratum_and_substratum(sample_candidates_stratum)
6969
end
7070

7171
def build_stratum_chart(stratum, by_stratum, by_stratum_and_substratum)
72-
substrata = stratum.substrata
72+
substrata = stratum.substrata.order(:position)
7373
total = by_stratum[stratum.id]&.map(&:decidim_stratified_sortitions_sample_participant_id)&.uniq&.count || 0
7474
chart_data = substrata.map do |substratum|
7575
build_substratum_chart_row(stratum, substratum, by_stratum_and_substratum, total)

app/controllers/decidim/stratified_sortitions/admin/samples_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ def generate_template_sample
102102
I18n.t("decidim.stratified_sortitions.admin.samples.template.personal_data_3"),
103103
I18n.t("decidim.stratified_sortitions.admin.samples.template.personal_data_4"),
104104
]
105-
strata = stratified_sortition.strata.order(:id)
105+
strata = stratified_sortition.strata.order(:position)
106106
strata_headers = strata.map do |stratum|
107107
translated_attribute(stratum.name)
108108
end

app/forms/decidim/stratified_sortitions/admin/stratified_sortitions_form.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ class StratifiedSortitionsForm < Decidim::Form
3737

3838
def map_model(model)
3939
super
40-
self.strata = model.strata.map do |stratum|
40+
self.strata = model.strata.order(:position).map do |stratum|
4141
Decidim::StratifiedSortitions::Admin::StratumForm.from_model(stratum)
4242
end
4343
end

app/forms/decidim/stratified_sortitions/admin/stratum_form.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ def substrata=(value)
4747

4848
def map_model(model)
4949
super
50-
self.substrata = model.substrata.map do |substratum|
50+
self.substrata = model.substrata.order(:position).map do |substratum|
5151
Decidim::StratifiedSortitions::Admin::SubstratumForm.from_model(substratum)
5252
end
5353
end

app/packs/src/decidim/stratified_sortitions/stratum_fields.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ $(() => {
1313
listSelector: ".stratified-sortition-stratum:not(.hidden)",
1414
labelSelector: ".card-title span:first",
1515
onPositionComputed: (el, idx) => {
16-
$(el).find("input[name$=\\[position\\]]").val(idx);
16+
$(el).find("input[name$=\\[position\\]]").not("[name*=substrata]").first().val(idx);
1717
}
1818
});
1919

0 commit comments

Comments
 (0)