From 8372e2686460407b7b65ebb1950fabbb92a3a6c0 Mon Sep 17 00:00:00 2001 From: Zach Gollwitzer Date: Tue, 11 Jun 2024 18:46:44 -0400 Subject: [PATCH] Allow optional import fields (#865) --- app/models/import.rb | 9 ++++++--- app/models/import/field.rb | 7 ++++++- app/views/imports/configure.html.erb | 3 ++- config/locales/views/imports/en.yml | 1 + 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/app/models/import.rb b/app/models/import.rb index c29ec6ab..cbe93697 100644 --- a/app/models/import.rb +++ b/app/models/import.rb @@ -148,15 +148,18 @@ class Import < ApplicationRecord name_field = Import::Field.new \ key: "name", - label: "Name" + label: "Name", + is_optional: true category_field = Import::Field.new \ key: "category", - label: "Category" + label: "Category", + is_optional: true tags_field = Import::Field.new \ key: "tags", - label: "Tags" + label: "Tags", + is_optional: true amount_field = Import::Field.new \ key: "amount", diff --git a/app/models/import/field.rb b/app/models/import/field.rb index aff9f186..45f7ee45 100644 --- a/app/models/import/field.rb +++ b/app/models/import/field.rb @@ -15,12 +15,17 @@ class Import::Field attr_reader :key, :label, :validator - def initialize(key:, label:, validator: nil) + def initialize(key:, label:, is_optional: false, validator: nil) @key = key.to_s @label = label + @is_optional = is_optional @validator = validator end + def optional? + @is_optional + end + def define_validator(validator = nil, &block) @validator = validator || block end diff --git a/app/views/imports/configure.html.erb b/app/views/imports/configure.html.erb index 78a186f0..a90158b7 100644 --- a/app/views/imports/configure.html.erb +++ b/app/views/imports/configure.html.erb @@ -14,7 +14,8 @@ <% @import.expected_fields.each do |field| %> <%= mappings.select field.key, options_for_select(@import.available_headers, @import.get_selected_header_for_field(field)), - label: field.label %> + label: field.label, + include_blank: field.optional? ? t(".optional") : false %> <% end %> <% end %> diff --git a/config/locales/views/imports/en.yml b/config/locales/views/imports/en.yml index 2cb90411..262e4623 100644 --- a/config/locales/views/imports/en.yml +++ b/config/locales/views/imports/en.yml @@ -18,6 +18,7 @@ en: confirm_title: Are you sure? invalid_csv: Please load a CSV first next: Next + optional: "(optional) No column selected" confirm: confirm_description: Preview your transactions below and check to see if there are any changes that are required.