import { Controller } from '@hotwired/stimulus'; export default class extends Controller { static targets = ['form', 'testForm', 'imageSelector', 'nextPageSelector', 'testResults', 'scrapingType'] connect() { } async saveConfiguration(event) { console.log('saveConfiguration called'); event.preventDefault(); this.formTarget.submit(); } async testConfiguration(event) { console.log('testConfiguration called'); event.preventDefault(); const formData = new FormData(this.formTarget); const testFormData = new FormData(this.testFormTarget); for (let [key, value] of formData.entries()) { const cleanKey = key.replace(/^content_source\[(.+)]$/, '$1'); testFormData.append(`content_source[${cleanKey}]`, value); } try { const response = await fetch(this.testFormTarget.action, { method: 'POST', body: testFormData }); const result = await response.json(); if (result.success) { this.displayTestResults(result.data); } else { this.displayError(result.message, result.errors); } } catch (error) { console.log(error) this.displayError('An error occurred while testing the configuration'); } } displayTestResults(data) { let html = '

Test Results

'; html += '
'; data.forEach(page => { html += `
Page ${page.page_number}

Page ${page.page_number}

`; }); html += '
'; this.testResultsTarget.innerHTML = html; } displayError(message, errors = []) { let errorHtml = ` '; this.testResultsTarget.innerHTML = errorHtml; } }