Skip to content

Commit 3940435

Browse files
committed
Fix drag and drop
1 parent 9e0a3ef commit 3940435

File tree

2 files changed

+65
-2
lines changed

2 files changed

+65
-2
lines changed

go-rewrite/static/css/styles.css

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,13 +72,20 @@ h1 {
7272
.file-label {
7373
width: 100%;
7474
height: 100%;
75-
border: 1px dashed #1f77b4;
75+
border: 2px dashed #1f77b4;
7676
border-radius: 5px;
7777
display: flex;
7878
justify-content: center;
7979
align-items: center;
8080
cursor: pointer;
8181
text-align: center;
82+
transition: all 0.3s ease;
83+
background-size: cover;
84+
}
85+
86+
.file-label:hover {
87+
background-color: #e6f3ff;
88+
border-style: solid;
8289
}
8390

8491
.button {

go-rewrite/static/js/app.js

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,37 @@ function setupEventListeners() {
4747
toggleUnitsBtn.addEventListener('click', toggleUnits);
4848
sessionDropdownEl.addEventListener('change', handleSessionSelection);
4949

50+
// Set up drag and drop events for the upload container
51+
const uploadContainer = document.querySelector('.upload-container');
52+
const fileLabel = document.querySelector('.file-label');
53+
54+
if (uploadContainer && fileLabel) {
55+
// Prevent default behavior to allow drop
56+
['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => {
57+
uploadContainer.addEventListener(eventName, preventDefaults, false);
58+
});
59+
60+
// Add visual feedback for drag events
61+
['dragenter', 'dragover'].forEach(eventName => {
62+
uploadContainer.addEventListener(eventName, () => {
63+
fileLabel.style.backgroundColor = '#e6f3ff';
64+
fileLabel.style.borderStyle = 'solid';
65+
fileLabel.style.borderColor = '#1f77b4';
66+
}, false);
67+
});
68+
69+
['dragleave', 'drop'].forEach(eventName => {
70+
uploadContainer.addEventListener(eventName, () => {
71+
fileLabel.style.backgroundColor = '';
72+
fileLabel.style.borderStyle = 'dashed';
73+
fileLabel.style.borderColor = '#1f77b4';
74+
}, false);
75+
});
76+
77+
// Handle the dropped files
78+
uploadContainer.addEventListener('drop', handleDrop, false);
79+
}
80+
5081
// Function to adjust the similarity threshold
5182
window.setProviderSimilarityThreshold = function(threshold) {
5283
if (threshold >= 0 && threshold <= 1) {
@@ -60,13 +91,38 @@ function setupEventListeners() {
6091
};
6192
}
6293

63-
// Toggle debug mode and refresh data
94+
// Prevent default drag behaviors
95+
function preventDefaults(e) {
96+
e.preventDefault();
97+
e.stopPropagation();
98+
}
6499

100+
// Handle drop event
101+
async function handleDrop(event) {
102+
const dt = event.dataTransfer;
103+
const files = dt.files;
104+
105+
if (files.length) {
106+
const file = files[0];
107+
// Use the same upload process as the file input
108+
await uploadFile(file);
109+
}
110+
}
65111

66112
// Handle file upload
67113
async function handleFileUpload(event) {
68114
const file = event.target.files[0];
69115
if (!file) return;
116+
await uploadFile(file);
117+
}
118+
119+
// Generic file upload function
120+
async function uploadFile(file) {
121+
// Check if file name contains the expected pattern
122+
if (!file.name.includes('BMW-CarData-Ladehistorie_')) {
123+
const proceed = confirm("The file doesn't match the expected pattern 'BMW-CarData-Ladehistorie_*'. Are you sure you want to upload it?");
124+
if (!proceed) return;
125+
}
70126

71127
const formData = new FormData();
72128
formData.append('file', file);

0 commit comments

Comments
 (0)