Skip to content

Commit 52901ce

Browse files
committed
feat: show app version in the interface footer
1 parent ebf32c6 commit 52901ce

5 files changed

Lines changed: 32 additions & 9 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "influence-sensor",
3-
"version": "0.1.0",
3+
"version": "1.0.0",
44
"type": "module",
55
"scripts": {
66
"dev": "vite",

src/main.ts

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,18 @@ function dropzone(): HTMLElement {
1919
return zone
2020
}
2121

22-
async function handleFile(file: File): Promise<void> {
22+
function footer(): HTMLElement {
23+
const f = document.createElement('footer')
24+
f.className = 'app-footer'
25+
f.innerHTML = `influence-sensor <span class="version">v${__APP_VERSION__}</span>`
26+
return f
27+
}
28+
29+
async function handleFile(file: File, results: HTMLElement): Promise<void> {
30+
results.innerHTML = ''
2331
const status = document.createElement('p')
2432
status.textContent = 'Reading…'
25-
app.appendChild(status)
33+
results.appendChild(status)
2634
try {
2735
const zip = await JSZip.loadAsync(file)
2836
const adapter = detectAdapter(zip)
@@ -36,9 +44,6 @@ async function handleFile(file: File): Promise<void> {
3644
return
3745
}
3846
const report = analyze(data)
39-
const results = document.createElement('div')
40-
results.id = 'results'
41-
app.appendChild(results)
4247
status.remove()
4348
renderReport(results, report)
4449
} catch {
@@ -49,11 +54,14 @@ async function handleFile(file: File): Promise<void> {
4954
function init(): void {
5055
app.innerHTML = ''
5156
const zone = dropzone()
52-
app.appendChild(zone)
57+
const results = document.createElement('div')
58+
results.id = 'results'
59+
app.append(zone, results, footer())
60+
5361
const input = zone.querySelector<HTMLInputElement>('#file')!
5462
input.addEventListener('change', () => {
5563
const file = input.files?.[0]
56-
if (file) void handleFile(file)
64+
if (file) void handleFile(file, results)
5765
})
5866
const stop = (e: DragEvent) => {
5967
e.preventDefault()
@@ -62,7 +70,7 @@ function init(): void {
6270
zone.addEventListener('drop', (e) => {
6371
stop(e)
6472
const file = e.dataTransfer?.files?.[0]
65-
if (file) void handleFile(file)
73+
if (file) void handleFile(file, results)
6674
})
6775
}
6876

src/style.css

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
table { width: 100%; border-collapse: collapse; font-size: 0.9rem; }
1818
th, td { text-align: left; padding: 4px 8px; border-bottom: 1px solid #eee; white-space: nowrap; }
1919

20+
.app-footer { margin-top: 2.5rem; padding-top: 1rem; border-top: 1px solid #eee; text-align: center; color: #999; font-size: 0.8rem; }
21+
.app-footer .version { color: #bbb; }
22+
2023
@media (min-width: 560px) {
2124
#app { padding: 2rem 1rem; }
2225
.headline { font-size: 1.25rem; }

src/vite-env.d.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
/// <reference types="vite/client" />
2+
3+
declare const __APP_VERSION__: string

vite.config.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,17 @@
11
/// <reference types="vitest" />
22
import { defineConfig } from 'vite'
3+
import { readFileSync } from 'node:fs'
4+
import { resolve } from 'node:path'
5+
6+
const pkg = JSON.parse(readFileSync(resolve(__dirname, 'package.json'), 'utf8')) as {
7+
version: string
8+
}
39

410
export default defineConfig({
511
base: '/influence-sensor/',
12+
define: {
13+
__APP_VERSION__: JSON.stringify(pkg.version),
14+
},
615
test: {
716
globals: true,
817
environment: 'node',

0 commit comments

Comments
 (0)