Set row indentation based on depth

This commit is contained in:
cryptogopher 2025-01-08 13:55:40 +01:00
parent 0d8e7c6c0e
commit fa7918f0e3
2 changed files with 6 additions and 3 deletions

View File

@ -379,7 +379,8 @@ table.items td {
}
/* For <a> to fill <td> completely, we use an ::after pseudoelement. */
table.items td.link {
padding: 0 0 0 1em;
padding: 0;
padding-inline-start: calc(1em + var(--depth) * 0.8em);
position: relative;
}
table.items td.link a {

View File

@ -19,11 +19,13 @@ class Quantity < ApplicationRecord
[
Arel::SelectManager.new.project(
numbered[Arel.star],
numbered.cast(numbered[:child_number], 'BINARY').as('path')
numbered.cast(numbered[:child_number], 'BINARY').as('path'),
Arel::Nodes.build_quoted(0).as('depth')
).from(numbered).where(numbered[:parent_id].eq(nil)),
Arel::SelectManager.new.project(
numbered[Arel.star],
cte[:path].concat(numbered[:child_number])
cte[:path].concat(numbered[:child_number]),
cte[:depth] + 1
).from(numbered).join(cte).on(numbered[:parent_id].eq(cte[:id]))
]
).select(cte[Arel.star]).from(cte).order(cte[:path])