mirror of
https://github.com/we-promise/sure.git
synced 2026-04-07 14:31:25 +00:00
* Add customizable menu order for user accounts Introduces a MenuOrder model and concern to allow users to select their preferred account ordering (by name or balance, ascending or descending). Adds a default_order field to users, updates user preferences UI, and applies the selected order to balance sheet account listings. * Rename MenuOrder to AccountOrder and update user order field Refactors the MenuOrder model to AccountOrder and updates all references accordingly. Replaces the user's default_order field with default_account_order, including migration changes, validations, and form fields. Updates localization and schema to reflect the new naming. * Update balance_sheet.rb * Fix for nil Current.user when rake runs in balance_sheet model --------- Signed-off-by: Aluisio Pereira <oaluiser@gmail.com> Co-authored-by: Juan José Mata <juanjo.mata@gmail.com>
61 lines
1.1 KiB
Ruby
61 lines
1.1 KiB
Ruby
class AccountOrder
|
|
include ActiveModel::Model
|
|
include ActiveModel::Attributes
|
|
|
|
ORDERS = {
|
|
"name_asc" => {
|
|
label: "Name (A-Z)",
|
|
label_short: "Name ↑",
|
|
sql_order: "name ASC"
|
|
},
|
|
"name_desc" => {
|
|
label: "Name (Z-A)",
|
|
label_short: "Name ↓",
|
|
sql_order: "name DESC"
|
|
},
|
|
"balance_asc" => {
|
|
label: "Balance (Low to High)",
|
|
label_short: "Balance ↑",
|
|
sql_order: "balance ASC"
|
|
},
|
|
"balance_desc" => {
|
|
label: "Balance (High to Low)",
|
|
label_short: "Balance ↓",
|
|
sql_order: "balance DESC"
|
|
}
|
|
}.freeze
|
|
|
|
attr_accessor :key
|
|
|
|
def initialize(key)
|
|
@key = key.to_s
|
|
raise ArgumentError, "Invalid order key: #{@key}" unless ORDERS.key?(@key)
|
|
end
|
|
|
|
def label
|
|
ORDERS.dig(key, :label)
|
|
end
|
|
|
|
def label_short
|
|
ORDERS.dig(key, :label_short)
|
|
end
|
|
|
|
def sql_order
|
|
ORDERS.dig(key, :sql_order)
|
|
end
|
|
|
|
class << self
|
|
def all
|
|
ORDERS.keys.map { |key| new(key) }
|
|
end
|
|
|
|
def find(key)
|
|
new(key) if ORDERS.key?(key.to_s)
|
|
end
|
|
|
|
def default
|
|
new("name_asc")
|
|
end
|
|
end
|
|
end
|