| const dropArea = document.getElementById("dropArea"); |
| const dragText = dropArea.querySelector("h6"); |
| const input = dropArea.querySelector("input"); |
| const form = document.querySelector("form"); |
| const ocrResult = document.getElementById("ocr-result"); |
| const categoryResult = document.getElementById("category-result") |
| const reset = document.getElementById("reset"); |
| const imagePreview = dropArea.querySelector("#image-preview"); |
| const currentClassProbabilitiesList = document.getElementById("class-probabilities"); |
| const currentClassProbabilitiesList_resultSection = document.getElementById("class-probabilities-result-section"); |
| const currentPredictedClass = document.getElementById('predicted-class'); |
| const currentPredictedClass_resultSection = document.getElementById('predicted-class-result-section'); |
| const sentencePredictions = document.getElementById('classifiedText') |
| const staticDiv = document.getElementById("static"); |
| const dynamicDiv = document.getElementById("dynamic"); |
| const sentenceResultDiv = document.getElementById("dynamicResult"); |
| var chartData; |
| let file; |
|
|
|
|
|
|
| |
| dropArea.addEventListener("click", () => { |
| |
| const input = document.getElementById("file-input"); |
| input.click(); |
| }); |
|
|
| |
| const fileInput = document.getElementById("file-input"); |
| fileInput.addEventListener("change", function () { |
| file = this.files[0]; |
| dropArea.classList.add("active"); |
| viewFile(); |
| }); |
|
|
|
|
| input.addEventListener("change", function () { |
| file = this.files[0]; |
| dropArea.classList.add("active"); |
| viewFile(); |
| }); |
|
|
| dropArea.addEventListener("dragover", (event) => { |
| event.preventDefault(); |
| dropArea.classList.add("active"); |
| dragText.textContent = "Release to Upload File"; |
| }); |
|
|
| dropArea.addEventListener("dragleave", () => { |
| dropArea.classList.remove("active"); |
| dragText.textContent = "Drag & Drop or Click to Upload File"; |
| }); |
|
|
| dropArea.addEventListener("drop", (event) => { |
| event.preventDefault(); |
| file = event.dataTransfer.files[0]; |
| viewFile(); |
| }); |
|
|
| |
| function initializeChart(data, backgroundColor, borderColor, labels) { |
| |
| data = data.map(function (element) { |
| return parseFloat(element).toFixed(2); |
| }); |
| document.querySelectorAll('.bestSellers').forEach(function (canvas) { |
| |
| new Chart(canvas, { |
| type: 'doughnut', |
| data: { |
| datasets: [{ |
| data: data, |
| backgroundColor: backgroundColor, |
| borderColor: borderColor, |
| }], |
| labels: labels |
| }, |
| options: { |
| responsive: true, |
| cutoutPercentage: 80, |
| legend: { |
| display: false, |
| }, |
| animation: { |
| animateScale: true, |
| animateRotate: true |
| }, |
| plugins: { |
| datalabels: { |
| display: false, |
| align: 'center', |
| anchor: 'center' |
| } |
| } |
| } |
| }); |
| }); |
| } |
|
|
| form.addEventListener("submit", (event) => { |
| event.preventDefault(); |
| if (!file) { |
| alert("Please select a file!"); |
| return; |
| } |
| const formData = new FormData(); |
| formData.append("file", file); |
| fetch("/pdf/upload", { |
| method: "POST", |
| body: formData, |
| }) |
| .then((response) => response.text()) |
| .then((html) => { |
| const responseDOM = new DOMParser().parseFromString(html, "text/html"); |
| const resultTextArea = responseDOM.getElementById("ocr-result"); |
| ocrResult.value = resultTextArea.value; |
| const classProbabilitiesList = responseDOM.getElementById("class-probabilities"); |
| currentClassProbabilitiesList.innerHTML = classProbabilitiesList.innerHTML; |
| currentClassProbabilitiesList_resultSection.innerHTML = classProbabilitiesList.innerHTML; |
| const PredictedClass = responseDOM.getElementById("predicted-class") |
| currentPredictedClass.innerHTML = PredictedClass.innerHTML; |
| currentPredictedClass_resultSection.innerHTML = PredictedClass.innerHTML; |
| document.getElementById('transcribedText').innerHTML = responseDOM.getElementById('transcribedText').innerHTML; |
| const sentencePredictionsResponse= responseDOM.getElementById('classifiedText').innerHTML; |
| sentencePredictions.innerHTML = sentencePredictionsResponse; |
| dynamicDiv.classList.remove('d-none'); |
| staticDiv.classList.add('d-none'); |
| sentenceResultDiv.classList.remove('d-none'); |
| setTimeout(() => { |
| const resultsDiv = document.getElementById('dynamicResult'); |
| if (resultsDiv) { |
| resultsDiv.scrollIntoView({ behavior: 'smooth', block: 'start' }); |
| } |
| }, 100); |
| if (resultsHeading) { |
| resultsHeading.scrollIntoView({ behavior: 'smooth' }); |
| } |
| var canvasElement = responseDOM.querySelector('.bestSellers'); |
| chartData = canvasElement.getAttribute('data-chart'); |
| var data = JSON.parse(chartData).datasets[0].data.slice(0, 5); |
| var backgroundColor = JSON.parse(chartData).datasets[0].backgroundColor.slice(0, 5); |
| var borderColor = JSON.parse(chartData).datasets[0].borderColor.slice(0, 5); |
| var labels = JSON.parse(chartData).labels.slice(0, 5); |
|
|
| |
| loadDashboardScript(data, backgroundColor, borderColor, labels); |
| }) |
| .catch((error) => console.error(error)); |
| }); |
|
|
| function destroyPreviousCharts() { |
| |
| document.querySelectorAll('.bestSellers').forEach(function (canvas) { |
| |
| var chartInstance = Chart.getChart(canvas); |
| |
| if (chartInstance) { |
| chartInstance.destroy(); |
| } |
| }); |
| } |
|
|
| function loadDashboardScript(data, backgroundColor, borderColor, labels) { |
| var scriptElement = document.createElement('script'); |
| scriptElement.type = 'text/javascript'; |
| scriptElement.src = '../static/js/dashboard_pdf.js'; |
| |
| scriptElement.onload = function () { |
| initializeChart(data, backgroundColor, borderColor, labels); |
| }; |
| document.body.appendChild(scriptElement); |
| } |
|
|
|
|
| |
| const originalDropAreaHTML = ` |
| <h6 class="text-white-50">Drag and Drop File Here</h6> |
| <span class="text-white-50">OR</span> |
| <h6 class="text-white-50">Click here</h6> |
| <input id="file-input" type="file" name="image" accept=".pdf" hidden> |
| `; |
|
|
| function deleteCurrentFile() { |
| |
| window.location.reload(); |
| file = null; |
|
|
| |
| dropArea.innerHTML = originalDropAreaHTML; |
|
|
| |
| dropArea.classList.remove("active"); |
|
|
| |
| const fileInput = document.getElementById("file-input"); |
|
|
| fileInput.addEventListener("change", function () { |
| file = this.files[0]; |
| dropArea.classList.add("active"); |
| viewFile(); |
| }); |
| } |
|
|
|
|
| function viewFile() { |
| let fileType = file.type; |
| let validExtensions = ["application/pdf"]; |
| if (validExtensions.includes(fileType)) { |
| let fileURL = URL.createObjectURL(file); |
| let pdfTag = `<iframe src="${fileURL}" style="width:100%;height:100%;"></iframe>`; |
| dropArea.innerHTML = pdfTag; |
| } else { |
| alert("This is not a PDF File!"); |
| dropArea.classList.remove("active"); |
| dragText.textContent = "Drag & Drop or Click to Upload File"; |
| } |
| } |
|
|
| const copyBtn = document.getElementById("copy-btn"); |
|
|
| copyBtn.addEventListener("click", () => { |
| ocrResult.select(); |
| document.execCommand("copy"); |
| }); |
|
|
| function createResponseElement(response) { |
| var pdfResponseElement = document.createElement('ul'); |
| pdfResponseElement.classList.add('graph-legend-rectangle'); |
| pdfResponseElement.innerHTML = response; |
| return pdfResponseElement; |
| } |
|
|
| |
| function reloadDashboardScript(data, backgroundColor, borderColor, labels) { |
| var scriptElement = document.createElement('script'); |
| scriptElement.type = 'text/javascript'; |
| scriptElement.src = `../static/js/dashboard_pdf.js?data=${encodeURIComponent(JSON.stringify(data))}&backgroundColor=${encodeURIComponent(JSON.stringify(backgroundColor))}&borderColor=${encodeURIComponent(JSON.stringify(borderColor))}&labels=${encodeURIComponent(JSON.stringify(labels))}`; |
| document.body.appendChild(scriptElement); |
| } |
|
|