Say we have a list of records displayed like this:
Date Description Payer Amount
---------------------------------------
01/01 Rent Maxi $1000
12/01 Lunch with clients Bob $80
23/01 Cleaning Alice $60
Clicking (anywhere on) a row replaces the row with a form to edit the underlying record.
I want to introduce hashtags to the system. They will be entered in the description field (like Twitter, unlike SE) and displayed in the description column like this:
Date Description Payer Amount
-----------------------------------------
01/01 #Rent Maxi $1000
12/01 #Lunch with #clients Bob $80
23/01 #Cleaning Alice $60
The goal of the hashtags is to enable tagged searches ("how much have we spent on clients?"). So clicking the #clients hashtag (which is identified in the description field by being underlined and displayed in a different color) takes the user to a the results of a search query for "#clients".
This poses a problem however as clicking on different parts of the row does different things:
- clicking on a hashtag leads to a search results page for that tag
- clicking on anything which is not a hashtag opens the edit form for the record
- most (more than 70%) of the descriptions contain a single word which would also become a hashtag (generic stuff like "rent", "cleaning", etc.)
Heatmaps show that most users are clicking on the description to edit a row, not on the date, the payer, or the amount.
A few ideas on tackling this together with their respective drawback as I see them:
When a user clicks a hashtag, show her a choice (search for "#clients" or edit the record "Lunch with clients"). This introduces one more click to the process and will surprise users accustomed to the default click-to-edit behaviour.
Add a dedicated edit button at the far left (or right) of the row. Greatly reduces the click target.
Show the edit form for the record and in the form show links for the hashtags. This is the wrong place for the search links. Also, how can one display them there in a usable manner? As a list below the description field?
How would you handle this?