Skip to content

Improve column selection in CSV import window #458

@jwatt

Description

@jwatt

Thanks so much to @seatedscribe for the work to implement CSV import! I just built from source to try it out and managed to successfully import a CSV file exported from Firefox. This is a really great step forward to lowering the barrier to switching to KeePassXC. :)

I have one piece of feedback: I found the way that columns are selected to be really quite frustrating in practice since in my case I had to reorder multiple columns and the whole thing became a bit of a memory game. The crux of the issue is that when a column is changed, the data it contains is replaced with the contents that should be under that header, making it necessary to memorize what used to be in that column for when you need to specify that column later. The more columns you update, the harder it becomes to remember. Maybe it was because I was tired, maybe it's because I'm dumb, but I personally had to start over a couple of times before getting it right, which was a bit frustrating. ;)

In case the preceding description of the problem isn't clear, here's a walk through to hopefully make the issue more concrete:

Say I start out with:

 Group             Title   Username   Password                      URL         Notes
 --------------------------------------------------------------------------------------------
 https://foo.com   jwatt   pass1      https://foo.com/form-target   Foo Login   usernameField
 https://bar.com   jwatt   pass2      https://bar.com/form-target   Bar Login   userField
 ...

Now say I update the "Group" dropdown to select "Not present in the CSV file", the display now changes to:

 Group           Title   Username   Password                      URL         Notes
 ------------------------------------------------------------------------------------------
                 jwatt   pass1      https://foo.com/form-target   Foo Login   usernameField
                 jwatt   pass2      https://bar.com/form-target   Bar Login   userField
 ...

Then I update the "Title" dropdown to select "Column 5", and the display changes to:

 Group     Title       Username   Password                      URL         Notes
 ----------------------------------------------------------------------------------------
           Foo Login   pass1      https://foo.com/form-target   Foo Login   usernameField
           Bar Login   pass2      https://bar.com/form-target   Bar Login   userField
 ...

Now I switch to the "Username" dropdown and look for that data in the table, but it's gone. Since I was paying attention to what data I needed, not what data I was hiding, I've already forgotten which column in the source data contained the usernames. I reset the columns and start over and the next time round I remember that it's column 2 that contains the usernames, so I set the "Usernames" dropdown to "Column 2":

 Group     Title       Username   Password                      URL         Notes
 ----------------------------------------------------------------------------------------
           Foo Login   jwatt      https://foo.com/form-target   Foo Login   usernameField
           Bar Login   jwatt      https://bar.com/form-target   Bar Login   userField
 ...

Moving on to the "Password" dropdown I manage to remember that that's the column I just hid, so I set the dropdown to "Column 3":

 Group     Title       Username   Password   URL         Notes
 ---------------------------------------------------------------------
           Foo Login   jwatt      pass1      Foo Login   usernameField
           Bar Login   jwatt      pass2      Bar Login   userField
 ...

Now I'm at the "URL" dropdown and, since that was a column I hid several steps ago, I've again completely forgotten which source column I need.

Frustrated, I start over from the beginning once again, telling myself there has to be a better system for users to specify which columns contain which data in the CSV.

This time I write out what each column in the source data contains on a piece of paper in advance and, yay, succeed. :)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions