Skip to content

Commit c3aaa55

Browse files
committed
fix first section web app
1 parent 2559eac commit c3aaa55

File tree

2 files changed

+59
-19
lines changed

2 files changed

+59
-19
lines changed

src/web/index.html

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
</head>
1616

1717
<body>
18-
<main class="container mx-auto border lg:px-0 p-5 min-h-screen">
19-
<h1 class="font-bold text-2xl text-center flex items-baseline justify-center space-x-2 mx-auto">
18+
<main class="container mx-auto border lg:px-12 p-5 min-h-screen">
19+
<h1 class="font-bold text-2xl text-center flex items-baseline justify-center space-x-2 mx-auto my-4">
2020
<svg width="1.75em" height="1.75em" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
2121
<rect width="300" height="300" fill="#F7DF1E"/>
2222
<path d="M107 146L176.5 148.5L177 176.5L104.5 237H32L7.5 275.5C41.3333 277.833 109.6 282.5 112 282.5C114.4 282.5 168 243.833 194.5 224.5L223.5 122.5L134.5 92L92 104.5L107 146Z" fill="black"/>
@@ -30,29 +30,29 @@ <h1 class="font-bold text-2xl text-center flex items-baseline justify-center spa
3030
<section>
3131
<form id="data-form" class="mt-5">
3232
<div class="flex items-center justify-center">
33-
<label for="file-upload"
33+
<label for="input-file"
3434
class="cursor-pointer bg-indigo-100 text-indigo-600 py-2 px-4 rounded-md hover:bg-indigo-200 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2">
3535
Upload File
3636
</label>
37-
<input id="file-upload" type="file" class="hidden" name="data"/>
37+
<input id="input-file" type="file" class="hidden" name="data"/>
3838
</div>
3939

40+
<div id="file-name" class="mt-2 text-center text-gray-600 text-sm"></div>
4041

41-
<input type="submit" value="Process"
42-
class="w-full mt-5 bg-indigo-600 text-white py-2 px-4 rounded-md hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2">
42+
<div class="flex justify-center">
43+
<input type="submit" value="Preview data" id="btn-preview-data"
44+
class="w-auto mt-5 bg-indigo-600 text-white py-2 px-4 rounded-md hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 disabled:bg-gray-400 disabled:cursor-not-allowed">
45+
</div>
4346
</form>
4447

45-
<div id="preview-data-container" class="hidden mt-12">
48+
<div id="preview-data-container" class="hidden mt-12 overflow-x-auto">
4649

4750
</div>
4851

49-
<div class="section-controller flex justify-between mt-5">
50-
<button class="w-auto bg-indigo-600 text-white py-2 px-4 rounded-md hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2">
51-
Back
52-
</button>
52+
<div class="section-controller flex justify-end mt-5 fixed bottom-14 right-8">
5353
<button class="w-auto bg-indigo-600 text-white py-2 px-4 rounded-md hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2">
5454
Next
55-
</button>
55+
</button>
5656
</div>
5757
</section>
5858

@@ -68,6 +68,16 @@ <h1 class="font-bold text-2xl text-center flex items-baseline justify-center spa
6868
<option value="multi">Multi feature</option>
6969
</select>
7070
</div>
71+
72+
73+
<div class="section-controller flex justify-between mt-5 fixed bottom-14 right-8">
74+
<button class="w-auto bg-indigo-600 text-white py-2 px-4 rounded-md hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2">
75+
Back
76+
</button>
77+
<button class="w-auto bg-indigo-600 text-white py-2 px-4 rounded-md hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2">
78+
Next
79+
</button>
80+
</div>
7181
</section>
7282
</main>
7383

src/web/script.js

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,43 @@
11
const dataForm = document.getElementById('data-form')
2+
const inputFile = document.getElementById('input-file')
3+
const fileName = document.getElementById('file-name')
4+
const btnPreviewData = document.getElementById('btn-preview-data')
25
const previewData = document.getElementById('preview-data-container')
36

7+
8+
9+
10+
let currentSection = 1
11+
12+
413
dataForm.addEventListener('submit', function(e) {
514
e.preventDefault()
615

716
const formData = new FormData(this)
817
const file = formData.get('data')
918

19+
previewData.classList.remove('hidden')
20+
previewData.classList.add('block')
21+
22+
if (file.size === 0) {
23+
previewData.innerHTML = `<h4 class="text-center">No file selected</h4>`
24+
return
25+
}
26+
1027
const reader = new FileReader()
1128

1229
reader.onload = (e) => {
1330
const fileContent = e.target.result
1431
const rows = fileContent.split(/[\r\n]+/).map(row => row.split(','))
15-
previewData.style.display = 'block'
1632

1733
let previewedTable = `
18-
<table class="min-w-full table-auto bg-white shadow-md rounded-lg">
19-
<thead class="bg-gray-200 rounded-t-lg">
20-
<tr>
34+
<table class="min-w-full bg-white border border-gray-200 rounded-lg">
35+
<thead>
36+
<tr class="bg-gray-100 border-b border-gray-200">
2137
`
2238

2339
for (const item of rows.shift()) {
24-
previewedTable += `<td class="px-4 py-2 text-left text-sm font-semibold text-gray-700">${item}</td>`
40+
previewedTable += `<td class="py-2 px-4 text-left text-sm font-medium text-gray-600">${item}</td>`
2541
}
2642

2743
previewedTable += `
@@ -30,9 +46,9 @@ dataForm.addEventListener('submit', function(e) {
3046
`
3147

3248
for (const row of rows) {
33-
previewedTable += `<tr>`
49+
previewedTable += `<tr class="border-b hover:bg-gray-50">`
3450
for (const item of row) {
35-
previewedTable += `<td>${item}</td>`
51+
previewedTable += `<td class="py-2 px-4 text-sm text-gray-700">${item}</td>`
3652
}
3753
previewedTable += `</tr>`
3854

@@ -42,4 +58,18 @@ dataForm.addEventListener('submit', function(e) {
4258
}
4359

4460
reader.readAsText(file)
61+
62+
btnPreviewData.setAttribute('disabled', true)
63+
this.reset()
64+
})
65+
66+
67+
68+
inputFile.addEventListener('change', function() {
69+
const file = this.files[0]
70+
if (file) {
71+
fileName.textContent = file.name
72+
}
73+
74+
btnPreviewData.removeAttribute('disabled')
4575
})

0 commit comments

Comments
 (0)