Refactor: Allow other import files (#1099)

* Rename stimulus controller

* feature: rename raw_csv_str to raw_file_str
This commit is contained in:
Pedro Carmona
2024-08-19 14:25:07 +01:00
committed by GitHub
parent e6528bafec
commit 0c1ff00c1e
16 changed files with 71 additions and 57 deletions

View File

@@ -2,6 +2,11 @@ import { Controller } from "@hotwired/stimulus"
export default class extends Controller {
static targets = ["input", "preview", "submit", "filename", "filesize"]
static values = {
acceptedTypes: Array, // ["text/csv", "application/csv", ".csv"]
acceptedExtension: String, // "csv"
unacceptableTypeLabel: String, // "Only CSV files are allowed."
};
connect() {
this.submitTarget.disabled = true
@@ -30,15 +35,19 @@ export default class extends Controller {
event.currentTarget.classList.remove("bg-gray-100")
const file = event.dataTransfer.files[0]
if (file && this._isCSVFile(file)) {
if (file && this._formatAcceptable(file)) {
this._setFileInput(file);
this._fileAdded(file)
} else {
this.previewTarget.classList.add("text-red-500")
this.previewTarget.textContent = "Only CSV files are allowed."
this.previewTarget.textContent = this.unacceptableTypeLabelValue
}
}
click() {
this.inputTarget.click();
}
// Private
_fetchFileSize(size) {
@@ -57,7 +66,7 @@ export default class extends Controller {
if (file) {
if (file.size > fileSizeLimit) {
this.previewTarget.classList.add("text-red-500")
this.previewTarget.textContent = "File size exceeds the limit of 5MB"
this.previewTarget.textContent = this.unacceptableTypeLabelValue
return
}
@@ -80,10 +89,9 @@ export default class extends Controller {
}
}
_isCSVFile(file) {
const acceptedTypes = ["text/csv", "application/csv", ".csv"]
_formatAcceptable(file) {
const extension = file.name.split('.').pop().toLowerCase()
return acceptedTypes.includes(file.type) || extension === "csv"
return this.acceptedTypesValue.includes(file.type) || extension === this.acceptedExtensionValue
}
_setFileInput(file) {