Copy existing transaction to data entry form
- Dominant language
- Dart
- Stars
- 25
- Forks
- 8
- PR merge metrics
- No merged PRs in 30d
Description
I think this is ready, implemented and working, but filing the issue for visibility, and as a point of reference, as I haven't deployed it yet. Commit is on `master` branch, at https://github.com/bradyt/cone/commit/d91cf74b03432fc3c6a6521f5327d7a2aebb34e1.
In the version of cone after current, `v0.2.20+28`, there will be a new feature where if you tap on a transaction, the add button becomes a copy button. Pressing it will open the data entry form, pre-populated with the contents of the selected transaction.
```dart
child: (store.state.transactionIndex == -1)
? const Icon(Icons.add)
: const Icon(Icons.content_copy),
```
The pre-populated values actually appear as hintText, so that you can start typing a new value without needing to delete the current one, but maybe that is a strange idiom, and really we just need to add a clear button for text fields.
The idea was inspired in discussion on IRC, with hledger author, where I was trying to brainstorm on how to implement a way to add entries faster, such as described in the recently filed template issue. At one point, they mentioned a lot of their faster transaction adding is just copying previous transactions in their editor. And so that inspired this copy feature.
The great thing about a copy feature, is it starts to approximate templates, editing, deleting, without adding any state to the app. The UI is just a function of your ledger file.
Contributor guide
No contributing guide indexed for this repository
Research direction
The issue points to commit d91cf74 on the master branch rather than naming files or tests. Start by reviewing that commit and the transaction and data-entry flows it changes. Done means confirming the copy button opens the form with the selected transaction's values and verifying the behavior in a deployed version.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- dart, flutter
- Domain
- mobile
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100