Download static/script/script.js from bariumc/NepaliCNN: direct link, hf CLI and curl.
- Browser
- Download file 7.03 kB
-
https://huggingface.co/spaces/bariumc/NepaliCNN/resolve/main/static/script/script.js
- Command line
-
hf download hf://spaces/bariumc/NepaliCNN/static/script/script.js
-
curl -L -o script.js https://huggingface.co/spaces/bariumc/NepaliCNN/resolve/main/static/script/script.js
7.03 kB
| const fileInput = document.getElementById('file-input'); | |
| const button = document.getElementById('button'); | |
| const errorMessage = document.getElementById('error-message'); | |
| const container = document.getElementById('container'); | |
| const imageContainer = document.getElementById('image-container'); | |
| const previewImage = document.getElementById('file-image'); | |
| const resultImage = document.getElementById('result-image'); | |
| const fileTitle = document.querySelector(".title"); | |
| const predInfo = document.querySelector(".pred-info"); | |
| const predictedValue = document.querySelector(".pred-info h3 span"); | |
| const topPred = document.querySelector(".pred-info ul"); | |
| const sendByCanvas = document.getElementById("canvas-send"); | |
| function createBlobFromImageData(imageData, mimeType = "image/jpeg") { | |
| const buffer = new ArrayBuffer(imageData.length); | |
| const view = new Uint8Array(buffer); | |
| for (let i = 0; i < imageData.length; i++) { | |
| view[i] = imageData.charCodeAt(i); | |
| } | |
| return new Blob([buffer], { type: mimeType }); | |
| } | |
| function initialState() { | |
| button.textContent = 'Choose file'; | |
| predInfo.style.display = 'none'; | |
| fileTitle.textContent = "Upload your file here"; | |
| imageContainer.style.display = 'none'; | |
| } | |
| function displayError(message, timeout = 3000) { // Set default timeout if needed | |
| errorMessage.textContent = message; | |
| errorMessage.style.display = 'block'; | |
| initialState(); | |
| setTimeout(() => { | |
| errorMessage.style.display = 'none'; | |
| }, timeout); | |
| } | |
| async function sendImageToServer(image, filename) { | |
| // Send the file to the server using Fetch API | |
| try { | |
| const formData = new FormData(); | |
| console.log(image) | |
| const base64Data = image.split(',')[1]; | |
| formData.append('file-input-64', base64Data); | |
| // formData.append('file-name', filename); | |
| // console.log(`form data ${formData}`); | |
| predInfo.style.display = 'none'; | |
| button.textContent = 'Processing....'; | |
| fileTitle.textContent = filename; | |
| console.log("Submit button is clicked"); | |
| const response = await fetch('/upload', { | |
| method: 'POST', | |
| body: formData | |
| }); | |
| topPred.innerHTML = ""; | |
| console.log('I am here') | |
| const jsonData = await response.json(); | |
| console.log(jsonData) | |
| console.log(typeof (jsonData)) | |
| const jsonObject = JSON.parse(jsonData); | |
| if (!response.ok) { | |
| throw new Error(`Error uploading file: ${jsonData.error}`); | |
| } | |
| resultImage.src = `data:image/jpeg;base64,` + jsonObject["ig"]; | |
| predInfo.style.display = 'flex'; | |
| predictedValue.textContent = `${jsonObject.item[0]} ( ${(jsonObject.prob[0] * 100).toFixed(3)}%)`; | |
| for (let index = 0; index < jsonObject.item.length; index++) { | |
| const newItem = document.createElement("li"); | |
| newItem.textContent = `${jsonObject.item[index]} ( ${(jsonObject.prob[index] * 100).toFixed(3)}%)` | |
| topPred.appendChild(newItem); | |
| } | |
| // Handle successful upload response (e.g., display message) | |
| console.log('File uploaded successfully!'); | |
| } catch (error) { | |
| // errorMessage.textContent = `Error uploading file: ${error.message}`; | |
| displayError(error.message); | |
| } finally { | |
| // Hide progress message (optional) | |
| button.textContent = 'Choose file'; | |
| } | |
| } | |
| async function sentImageDataToSeverViaImage(event) { | |
| const file = event.target.files[0]; | |
| const allowedExtensions = ['jpeg', 'jpg']; | |
| const extension = file.name.split('.').pop().toLowerCase(); | |
| // console.log(extension); | |
| if (!allowedExtensions.includes(extension)) { | |
| event.target.value = ''; // Clear file selection | |
| displayError('Invalid file format. Please upload a JPG or JPEG image.') | |
| } else { | |
| const reader = new FileReader(); | |
| reader.onload = function (event) { | |
| previewImage.src = event.target.result; | |
| resultImage.src = ''; | |
| imageContainer.style.display = 'flex'; | |
| }; | |
| reader.readAsDataURL(file); // Read the file and convert it to a data URL | |
| // Send the file to the server using Fetch API | |
| try { | |
| const formData = new FormData(); | |
| formData.append('file-input', file); | |
| button.textContent = 'Processing....'; | |
| fileTitle.textContent = file.name; | |
| predInfo.style.display = 'none'; | |
| const response = await fetch('/upload', { | |
| method: 'POST', | |
| body: formData | |
| }); | |
| if (!response.ok) { | |
| throw new Error(`Error uploading file: ${response.statusText}`); | |
| } | |
| topPred.innerHTML = ""; | |
| const jsonData = await response.json(); | |
| console.log(jsonData) | |
| console.log(typeof (jsonData)) | |
| const jsonObject = JSON.parse(jsonData); | |
| resultImage.src = `data:image/jpeg;base64,` + jsonObject["ig"]; | |
| predInfo.style.display = 'flex'; | |
| predictedValue.textContent = `${jsonObject.item[0]} ( ${(jsonObject.prob[0] * 100).toFixed(3)}%)`; | |
| for (let index = 0; index < jsonObject.item.length; index++) { | |
| const newItem = document.createElement("li"); | |
| newItem.textContent = `${jsonObject.item[index]} ( ${(jsonObject.prob[index] * 100).toFixed(3)}%)` | |
| topPred.appendChild(newItem); | |
| } | |
| // Handle successful upload response (e.g., display message) | |
| console.log('File uploaded successfully!'); | |
| } catch (error) { | |
| errorMessage.textContent = `Error uploading file: ${error.message}`; | |
| } finally { | |
| // Hide progress message (optional) | |
| button.textContent = 'Choose file'; | |
| } | |
| errorMessage.style.display = 'none'; // Hide the error message | |
| } | |
| } | |
| async function sentImageDataToSeverViaCanvas() { | |
| const canvas = document.getElementById('drawing-board'); // Replace with your canvas ID | |
| var dataURL = canvas.toDataURL("image/jpeg"); | |
| previewImage.src = dataURL; | |
| resultImage.src = ''; | |
| imageContainer.style.display = 'flex'; | |
| // // Create a dummy link text | |
| // var a = document.createElement('a'); | |
| // // Set the link to the image so that when clicked, the image begins downloading | |
| // a.href = dataURL | |
| // // Specify the image filename | |
| // a.download = 'canvas-download.jpeg'; | |
| // // Click on the link to set off download | |
| // a.click(); | |
| closeDialog(); | |
| await sendImageToServer(dataURL, 'canvas_image.jpeg'); | |
| } | |
| button.addEventListener('click', () => { | |
| errorMessage.style.display = 'none'; | |
| fileInput.click(); | |
| }); | |
| sendByCanvas.addEventListener('click', async () => { | |
| sentImageDataToSeverViaCanvas(); | |
| }); | |
| fileInput.addEventListener('change', async (event) => { | |
| sentImageDataToSeverViaImage(event); | |
| }); |