import React, { useState, useEffect } from 'react'; import Sidebar from './OCRSidebar'; import Header from './OCRHeader'; import { getTemplates, ocrProcess } from '../services/api'; import Quota from './OCRQuota'; import OCRTemplate from './OCRTemplate'; import Credentials from './ERPCredentials'; import InvoiceForm from './InvoiceForm'; const Dashboard = () => { const [selectedFiles, setSelectedFiles] = useState([]); const [templates, setTemplates] = useState([]); // Ensure templates is initialized as an array const [selectedTemplate, setSelectedTemplate] = useState(''); const [credentials, setCredentials] = useState({ sapUrl: '', clientId: '', clientSecret: '', username: '', password: '', companyCode: '', apiKey: '' }); const fetchTemplates = async (templateName = false) => { try { const response = await getTemplates(templateName); setTemplates(response); // Ensure response is directly set to templates } catch (error) { console.error('Error fetching templates:', error); } }; const handleFolderSelect = (event) => { const files = Array.from(event.target.files); const validFileTypes = ['application/pdf', 'image/png', 'image/jpeg', 'image/jpg', 'image/PNG', 'image/JPEG']; const filteredFiles = files.filter(file => validFileTypes.includes(file.type)); setSelectedFiles(filteredFiles); }; const handleTemplateChange = (event) => { const newValue = event.target.value; setSelectedTemplate(newValue); console.log("selectedTemplate:", newValue); // Fetch templates based on the selected template }; const handleCredentialsSave = (newCredentials) => { setCredentials(newCredentials); }; const handleSubmit = async (event) => { event.preventDefault(); // Prevent default form submission behavior if (selectedFiles.length === 0) { alert("Please select files containing PDF, PNG, or JPG files."); return; } if (!selectedTemplate) { alert("Please select a template."); return; } const formData = new FormData(); selectedFiles.forEach(file => formData.append("files", file)); formData.append("template_name", selectedTemplate); // Debugging formData for (let [key, value] of formData.entries()) { console.log(`${key}: ${value.name || value}`); } try { const response = await ocrProcess(formData); console.log("Response:", response); alert("Files processed successfully!"); } catch (error) { console.error("Error:", error); alert("There was an error processing the files."); } }; // Fetch templates on component mount useEffect(() => { fetchTemplates(); }, []); return (
AI services that allow you to extract information from any documents and automate data input to external applications.