Skip to content

Commit b5bbe5e

Browse files
drusepthclaude
andcommitted
Remember additional field selections and auto-expand when previously used
- Pre-select checkboxes for fields that were previously used (stored in guidance) - Restore saved importance values from @guidance instead of defaulting to 1 - Auto-expand additional fields section when user has previously selected fields - Toggle +/- icon between add_circle_outline and remove_circle_outline 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
1 parent 44aaee8 commit b5bbe5e

File tree

1 file changed

+22
-16
lines changed

1 file changed

+22
-16
lines changed

app/views/basil/content.html.erb

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -56,28 +56,30 @@ function commission_basil(style) {
5656
</ul>
5757

5858
<% if @additional_fields.any? %>
59+
<% has_previously_used_fields = @additional_fields.any? { |field, _| @guidance.key?(field.id.to_s) } %>
5960
<% if @relevant_fields.any? %>
60-
<%# Show collapsed when there ARE primary fields %>
61+
<%# Show collapsed when there ARE primary fields (unless user has previously selected additional fields) %>
6162
<div style="margin-top: 1.5rem; border-top: 1px solid #e0e0e0; padding-top: 1rem;">
6263
<a href="#" class="js-toggle-additional-fields-section grey-text text-darken-2" style="display: block; font-weight: bold;">
63-
<i class="material-icons tiny" style="vertical-align: middle;">add_circle_outline</i>
64+
<i class="material-icons tiny js-plus-minus" style="vertical-align: middle;"><%= has_previously_used_fields ? 'remove_circle_outline' : 'add_circle_outline' %></i>
6465
Show <%= pluralize(@additional_fields.count, 'more field') %> you can include
65-
<i class="material-icons tiny js-chevron" style="vertical-align: middle;">expand_more</i>
66+
<i class="material-icons tiny js-chevron" style="vertical-align: middle;"><%= has_previously_used_fields ? 'expand_less' : 'expand_more' %></i>
6667
</a>
6768

68-
<div class="js-additional-fields-container hide" style="margin-top: 0.5rem;">
69+
<div class="js-additional-fields-container<%= ' hide' unless has_previously_used_fields %>" style="margin-top: 0.5rem;">
6970
<ul style="margin-top: 0.5rem;">
7071
<% @additional_fields.each do |field, value| %>
71-
<li style="margin-bottom: 0.5em; opacity: 0.7;">
72+
<% field_previously_used = @guidance.key?(field.id.to_s) %>
73+
<li style="margin-bottom: 0.5em; opacity: <%= field_previously_used ? '1' : '0.7' %>;">
7274
<label>
73-
<%= check_box_tag "basil_commission[include_field][#{field.id}]", field.id, false, class: 'js-toggle-additional-field' %>
75+
<%= check_box_tag "basil_commission[include_field][#{field.id}]", field.id, field_previously_used, class: 'js-toggle-additional-field' %>
7476
<span class="grey-text"><%= field.label %></span>
7577
</label>
7678
<div class="grey-text text-darken-1" style="font-size: 0.85em; margin-left: 1.5rem;"><%= truncate(value, length: 140) %></div>
77-
<div class="js-additional-field-inputs hide" data-field-id="<%= field.id %>">
78-
<%= hidden_field_tag "basil_commission[field][#{field.id}][label]", field.label, disabled: true %>
79-
<%= hidden_field_tag "basil_commission[field][#{field.id}][value]", value, disabled: true %>
80-
<%= range_field_tag "basil_commission[field][#{field.id}][importance]", 1, { min: 0, max: 1.3, step: 0.1, style: 'width: 60%;', disabled: true, class: 'js-importance-slider hide' } %>
79+
<div class="js-additional-field-inputs <%= 'hide' unless field_previously_used %>" data-field-id="<%= field.id %>">
80+
<%= hidden_field_tag "basil_commission[field][#{field.id}][label]", field.label, disabled: !field_previously_used %>
81+
<%= hidden_field_tag "basil_commission[field][#{field.id}][value]", value, disabled: !field_previously_used %>
82+
<%= range_field_tag "basil_commission[field][#{field.id}][importance]", @guidance.fetch(field.id.to_s, 1), { min: 0, max: 1.3, step: 0.1, style: 'width: 60%;', disabled: !field_previously_used, class: 'js-importance-slider hide' } %>
8183
</div>
8284
</li>
8385
<% end %>
@@ -93,16 +95,17 @@ function commission_basil(style) {
9395
</div>
9496
<ul style="margin-top: 0.5rem;">
9597
<% @additional_fields.each do |field, value| %>
96-
<li style="margin-bottom: 0.5em; opacity: 0.7;">
98+
<% field_previously_used = @guidance.key?(field.id.to_s) %>
99+
<li style="margin-bottom: 0.5em; opacity: <%= field_previously_used ? '1' : '0.7' %>;">
97100
<label>
98-
<%= check_box_tag "basil_commission[include_field][#{field.id}]", field.id, false, class: 'js-toggle-additional-field' %>
101+
<%= check_box_tag "basil_commission[include_field][#{field.id}]", field.id, field_previously_used, class: 'js-toggle-additional-field' %>
99102
<span class="grey-text"><%= field.label %></span>
100103
</label>
101104
<div class="grey-text text-darken-1" style="font-size: 0.85em; margin-left: 1.5rem;"><%= truncate(value, length: 140) %></div>
102-
<div class="js-additional-field-inputs hide" data-field-id="<%= field.id %>">
103-
<%= hidden_field_tag "basil_commission[field][#{field.id}][label]", field.label, disabled: true %>
104-
<%= hidden_field_tag "basil_commission[field][#{field.id}][value]", value, disabled: true %>
105-
<%= range_field_tag "basil_commission[field][#{field.id}][importance]", 1, { min: 0, max: 1.3, step: 0.1, style: 'width: 60%;', disabled: true, class: 'js-importance-slider hide' } %>
105+
<div class="js-additional-field-inputs <%= 'hide' unless field_previously_used %>" data-field-id="<%= field.id %>">
106+
<%= hidden_field_tag "basil_commission[field][#{field.id}][label]", field.label, disabled: !field_previously_used %>
107+
<%= hidden_field_tag "basil_commission[field][#{field.id}][value]", value, disabled: !field_previously_used %>
108+
<%= range_field_tag "basil_commission[field][#{field.id}][importance]", @guidance.fetch(field.id.to_s, 1), { min: 0, max: 1.3, step: 0.1, style: 'width: 60%;', disabled: !field_previously_used, class: 'js-importance-slider hide' } %>
106109
</div>
107110
</li>
108111
<% end %>
@@ -365,12 +368,15 @@ $(document).ready(function() {
365368
e.preventDefault();
366369
var container = $(this).siblings('.js-additional-fields-container');
367370
var chevron = $(this).find('.js-chevron');
371+
var plusMinus = $(this).find('.js-plus-minus');
368372

369373
container.toggleClass('hide');
370374
if (container.hasClass('hide')) {
371375
chevron.text('expand_more');
376+
plusMinus.text('add_circle_outline');
372377
} else {
373378
chevron.text('expand_less');
379+
plusMinus.text('remove_circle_outline');
374380
}
375381
});
376382

0 commit comments

Comments
 (0)