From cedaba4214bdb3a9beba48db0406891b583688e2 Mon Sep 17 00:00:00 2001 From: Gregor Lasnibat Date: Mon, 1 Apr 2024 15:36:00 +0200 Subject: [PATCH] (dev) Create a new column during import into inventory [SCI-10490] --- app/utilities/repository_import_parser/importer.rb | 8 ++++++++ app/views/repositories/_parse_records_modal.html.erb | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/utilities/repository_import_parser/importer.rb b/app/utilities/repository_import_parser/importer.rb index 05e2786d4..a701126ea 100644 --- a/app/utilities/repository_import_parser/importer.rb +++ b/app/utilities/repository_import_parser/importer.rb @@ -36,10 +36,18 @@ module RepositoryImportParser def fetch_columns @mappings.each_with_index do |(_, value), index| + value = JSON.parse(value) rescue value + value = value.to_s unless value.is_a?(Hash) + if value == '-1' # Fill blank space, so our indices stay the same @columns << nil @name_index = index + + # creating a custom option column + elsif value.is_a?(Hash) + new_repository_column = @repository.repository_columns.create!(created_by: @user, name: value['name']+rand(10000).to_s, data_type: "Repository#{value['type']}Value") + @columns << new_repository_column else @columns << @repository_columns.where(data_type: Extends::REPOSITORY_IMPORTABLE_TYPES) .preload(Extends::REPOSITORY_IMPORT_COLUMN_PRELOADS) diff --git a/app/views/repositories/_parse_records_modal.html.erb b/app/views/repositories/_parse_records_modal.html.erb index df2a0d056..13c771c5c 100644 --- a/app/views/repositories/_parse_records_modal.html.erb +++ b/app/views/repositories/_parse_records_modal.html.erb @@ -38,7 +38,7 @@ <% @import_data.header.each.with_index do |th, index| %> <%= f.select("mappings[#{index.to_s}]", - options_from_collection_for_select(@import_data.available_fields, + options_from_collection_for_select(@import_data.available_fields.merge({{name: 'new text option', type: 'Text'}.to_json => "new_text_option"}, {{name: 'new list option', type: 'List'}.to_json => "new_list_option"}), :first, :last), { include_blank: t('repositories.parse_sheet.do_not_include_column'), hide_label: true },