diff --git a/app/controllers/import/configurations_controller.rb b/app/controllers/import/configurations_controller.rb index f943a0852..e17aa138e 100644 --- a/app/controllers/import/configurations_controller.rb +++ b/app/controllers/import/configurations_controller.rb @@ -7,11 +7,11 @@ class Import::ConfigurationsController < ApplicationController end def update - @import.update!(import_params) - if params[:refresh_only] + @import.update!(rows_to_skip: params.dig(:import, :rows_to_skip).to_i) redirect_to import_configuration_path(@import) else + @import.update!(import_params) @import.generate_rows_from_csv @import.reload.sync_mappings diff --git a/app/javascript/controllers/import_controller.js b/app/javascript/controllers/import_controller.js index 7db06634a..b75d4cd6a 100644 --- a/app/javascript/controllers/import_controller.js +++ b/app/javascript/controllers/import_controller.js @@ -46,14 +46,22 @@ export default class extends Controller { } refreshForm(event) { - const form = event.target.closest("form"); - const input = document.createElement("input"); - input.type = "hidden"; - input.name = "refresh_only"; - input.value = "true"; - form.appendChild(input); + clearTimeout(this.refreshTimeout); - form.requestSubmit(); + const form = event.target.closest("form"); + + this.refreshTimeout = setTimeout(() => { + const input = document.createElement("input"); + input.type = "hidden"; + input.name = "refresh_only"; + input.value = "true"; + form.appendChild(input); + + // Temporarily disable validation for refresh-only submission + form.setAttribute("novalidate", ""); + form.requestSubmit(); + form.removeAttribute("novalidate"); + }, 500); } #showAmountTypeValueTargets(amountTypeColumnKey) {