A forms/transactions.rb => forms/transactions.rb +9 -0
@@ 0,0 1,9 @@
+result!
+title "Transactions"
+
+table(
+ @transactions,
+ formatted_amount: "Amount",
+ note: "Note",
+ created_at: "Date"
+)
M lib/form_template.rb => lib/form_template.rb +11 -0
@@ 80,6 80,17 @@ class FormTemplate
open || regex || range
end
+ # Given a map of fields to labels, and a list of objects this will
+ # produce a table from calling each field's method on every object in the
+ # list. So, this list is value_semantics / OpenStruct style
+ def table(list, **fields)
+ keys = fields.keys
+ FormTable.new(
+ list.map { |x| keys.map { |k| x.public_send(k) } },
+ **fields
+ ).add_to_form(@__form)
+ end
+
def field(datatype: nil, open: false, regex: nil, range: nil, **kwargs)
f = Blather::Stanza::X::Field.new(kwargs)
if datatype || open || regex || range
M sgx_jmp.rb => sgx_jmp.rb +12 -0
@@ 473,6 473,18 @@ Command.new(
}.register(self).then(&CommandList.method(:register))
Command.new(
+ "transactions",
+ "Show Transactions",
+ list_for: ->(customer:, **) { !!customer&.currency }
+) {
+ Command.customer.then(&:transactions).then do |txs|
+ Command.finish do |reply|
+ reply.command << FormTemplate.render("transactions", transactions: txs)
+ end
+ end
+}.register(self).then(&CommandList.method(:register))
+
+Command.new(
"configure calls",
"Configure Calls",
customer_repo: CustomerRepo.new(sgx_repo: Bwmsgsv2Repo.new)