forked from fixin.me/fixin.me
Replace the toggle-view approach and hidden DOM data carrier with a proper dedicated Charts page: - Move Charts out of Measurements view toggles into its own nav tab and route (GET /charts) - ChartsController serializes readout data as JSON (ordered by taken_at); the view embeds it in a <script type="application/json"> element instead of rendering a hidden copy of the measurements partial just to ferry data attributes to JS - buildCharts() reads from the JSON element directly — no DOM parsing, no sorting in JS (server already orders the data) - Turbo load handler detects the charts page via #charts-data presence - Add controller tests (authentication, data shape, ordering, data isolation between users) and system tests Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
41 lines
1.5 KiB
Plaintext
41 lines
1.5 KiB
Plaintext
<%# TODO: show hint when no quantities/units defined %>
|
|
<div class="rightside-area buttongrid">
|
|
<% if current_user.at_least(:active) %>
|
|
<%= image_link_to t('.new_measurement'), 'plus-outline', new_measurement_path,
|
|
id: :new_measurement_link, onclick: 'this.blur();',
|
|
data: {turbo_stream: true} %>
|
|
<% end %>
|
|
<%= image_button_tag '', 'view-rows', name: nil, type: 'button',
|
|
class: 'view-toggle', title: t('.view_compact'),
|
|
data: {view: 'compact'}, onclick: "setMeasurementsView('compact')" %>
|
|
<%= image_button_tag '', 'view-columns', name: nil, type: 'button',
|
|
class: 'view-toggle', title: t('.view_wide'),
|
|
data: {view: 'wide'}, onclick: "setMeasurementsView('wide')" %>
|
|
|
|
</div>
|
|
|
|
<div class="main-area measurements-section">
|
|
<%= tag.div id: :measurement_edit_form %>
|
|
<table class="items-table measurements-compact">
|
|
<thead>
|
|
<tr>
|
|
<th><%= Quantity.model_name.human %></th>
|
|
<th><%= Readout.human_attribute_name(:value) %></th>
|
|
<th><%= Unit.model_name.human %></th>
|
|
<th><%= Readout.human_attribute_name(:taken_at) %></th>
|
|
<th><%= Readout.human_attribute_name(:created_at) %></th>
|
|
<% if current_user.at_least(:active) %>
|
|
<th></th>
|
|
<% end %>
|
|
</tr>
|
|
</thead>
|
|
<tbody id="measurements">
|
|
<%= render(partial: 'readout', collection: @measurements, as: :readout) || render_no_items %>
|
|
</tbody>
|
|
</table>
|
|
|
|
<div id="measurements-wide" class="measurements-wide"></div>
|
|
|
|
</div>
|
|
|