diff --git a/package-lock.json b/package-lock.json
index 3aa9cee..4301bd0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,7 +9,8 @@
"version": "0.0.0",
"dependencies": {
"@fontsource/roboto": "^5.2.9",
- "@material/web": "^2.4.1"
+ "@material/web": "^2.4.1",
+ "leaflet": "^1.9.4"
},
"devDependencies": {
"vite": "^8.0.0-beta.13"
@@ -104,9 +105,9 @@
}
},
"node_modules/@oxc-project/runtime": {
- "version": "0.112.0",
- "resolved": "https://registry.npmjs.org/@oxc-project/runtime/-/runtime-0.112.0.tgz",
- "integrity": "sha512-4vYtWXMnXM6EaweCxbJ6bISAhkNHeN33SihvuX3wrpqaSJA4ZEoW35i9mSvE74+GDf1yTeVE+aEHA+WBpjDk/g==",
+ "version": "0.113.0",
+ "resolved": "https://registry.npmjs.org/@oxc-project/runtime/-/runtime-0.113.0.tgz",
+ "integrity": "sha512-apRWH/gXeAsl/sQiblIZnLu7f8P/C9S2fJIicuHV9KOK9J7Hv1JPyTwB8WAcOrDBfjs+cbzjMOGe9UR2ue4ZQg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -114,9 +115,9 @@
}
},
"node_modules/@oxc-project/types": {
- "version": "0.112.0",
- "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.112.0.tgz",
- "integrity": "sha512-m6RebKHIRsax2iCwVpYW2ErQwa4ywHJrE4sCK3/8JK8ZZAWOKXaRJFl/uP51gaVyyXlaS4+chU1nSCdzYf6QqQ==",
+ "version": "0.113.0",
+ "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.113.0.tgz",
+ "integrity": "sha512-Tp3XmgxwNQ9pEN9vxgJBAqdRamHibi76iowQ38O2I4PMpcvNRQNVsU2n1x1nv9yh0XoTrGFzf7cZSGxmixxrhA==",
"dev": true,
"license": "MIT",
"funding": {
@@ -124,9 +125,9 @@
}
},
"node_modules/@rolldown/binding-android-arm64": {
- "version": "1.0.0-rc.3",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.3.tgz",
- "integrity": "sha512-0T1k9FinuBZ/t7rZ8jN6OpUKPnUjNdYHoj/cESWrQ3ZraAJ4OMm6z7QjSfCxqj8mOp9kTKc1zHK3kGz5vMu+nQ==",
+ "version": "1.0.0-rc.4",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.4.tgz",
+ "integrity": "sha512-vRq9f4NzvbdZavhQbjkJBx7rRebDKYR9zHfO/Wg486+I7bSecdUapzCm5cyXoK+LHokTxgSq7A5baAXUZkIz0w==",
"cpu": [
"arm64"
],
@@ -141,9 +142,9 @@
}
},
"node_modules/@rolldown/binding-darwin-arm64": {
- "version": "1.0.0-rc.3",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.3.tgz",
- "integrity": "sha512-JWWLzvcmc/3pe7qdJqPpuPk91SoE/N+f3PcWx/6ZwuyDVyungAEJPvKm/eEldiDdwTmaEzWfIR+HORxYWrCi1A==",
+ "version": "1.0.0-rc.4",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.4.tgz",
+ "integrity": "sha512-kFgEvkWLqt3YCgKB5re9RlIrx9bRsvyVUnaTakEpOPuLGzLpLapYxE9BufJNvPg8GjT6mB1alN4yN1NjzoeM8Q==",
"cpu": [
"arm64"
],
@@ -158,9 +159,9 @@
}
},
"node_modules/@rolldown/binding-darwin-x64": {
- "version": "1.0.0-rc.3",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.3.tgz",
- "integrity": "sha512-MTakBxfx3tde5WSmbHxuqlDsIW0EzQym+PJYGF4P6lG2NmKzi128OGynoFUqoD5ryCySEY85dug4v+LWGBElIw==",
+ "version": "1.0.0-rc.4",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.4.tgz",
+ "integrity": "sha512-JXmaOJGsL/+rsmMfutcDjxWM2fTaVgCHGoXS7nE8Z3c9NAYjGqHvXrAhMUZvMpHS/k7Mg+X7n/MVKb7NYWKKww==",
"cpu": [
"x64"
],
@@ -175,9 +176,9 @@
}
},
"node_modules/@rolldown/binding-freebsd-x64": {
- "version": "1.0.0-rc.3",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.3.tgz",
- "integrity": "sha512-jje3oopyOLs7IwfvXoS6Lxnmie5JJO7vW29fdGFu5YGY1EDbVDhD+P9vDihqS5X6fFiqL3ZQZCMBg6jyHkSVww==",
+ "version": "1.0.0-rc.4",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.4.tgz",
+ "integrity": "sha512-ep3Catd6sPnHTM0P4hNEvIv5arnDvk01PfyJIJ+J3wVCG1eEaPo09tvFqdtcaTrkwQy0VWR24uz+cb4IsK53Qw==",
"cpu": [
"x64"
],
@@ -192,9 +193,9 @@
}
},
"node_modules/@rolldown/binding-linux-arm-gnueabihf": {
- "version": "1.0.0-rc.3",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.3.tgz",
- "integrity": "sha512-A0n8P3hdLAaqzSFrQoA42p23ZKBYQOw+8EH5r15Sa9X1kD9/JXe0YT2gph2QTWvdr0CVK2BOXiK6ENfy6DXOag==",
+ "version": "1.0.0-rc.4",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.4.tgz",
+ "integrity": "sha512-LwA5ayKIpnsgXJEwWc3h8wPiS33NMIHd9BhsV92T8VetVAbGe2qXlJwNVDGHN5cOQ22R9uYvbrQir2AB+ntT2w==",
"cpu": [
"arm"
],
@@ -209,9 +210,9 @@
}
},
"node_modules/@rolldown/binding-linux-arm64-gnu": {
- "version": "1.0.0-rc.3",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.3.tgz",
- "integrity": "sha512-kWXkoxxarYISBJ4bLNf5vFkEbb4JvccOwxWDxuK9yee8lg5XA7OpvlTptfRuwEvYcOZf+7VS69Uenpmpyo5Bjw==",
+ "version": "1.0.0-rc.4",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.4.tgz",
+ "integrity": "sha512-AC1WsGdlV1MtGay/OQ4J9T7GRadVnpYRzTcygV1hKnypbYN20Yh4t6O1Sa2qRBMqv1etulUknqXjc3CTIsBu6A==",
"cpu": [
"arm64"
],
@@ -226,9 +227,9 @@
}
},
"node_modules/@rolldown/binding-linux-arm64-musl": {
- "version": "1.0.0-rc.3",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.3.tgz",
- "integrity": "sha512-Z03/wrqau9Bicfgb3Dbs6SYTHliELk2PM2LpG2nFd+cGupTMF5kanLEcj2vuuJLLhptNyS61rtk7SOZ+lPsTUA==",
+ "version": "1.0.0-rc.4",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.4.tgz",
+ "integrity": "sha512-lU+6rgXXViO61B4EudxtVMXSOfiZONR29Sys5VGSetUY7X8mg9FCKIIjcPPj8xNDeYzKl+H8F/qSKOBVFJChCQ==",
"cpu": [
"arm64"
],
@@ -243,9 +244,9 @@
}
},
"node_modules/@rolldown/binding-linux-x64-gnu": {
- "version": "1.0.0-rc.3",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.3.tgz",
- "integrity": "sha512-iSXXZsQp08CSilff/DCTFZHSVEpEwdicV3W8idHyrByrcsRDVh9sGC3sev6d8BygSGj3vt8GvUKBPCoyMA4tgQ==",
+ "version": "1.0.0-rc.4",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.4.tgz",
+ "integrity": "sha512-DZaN1f0PGp/bSvKhtw50pPsnln4T13ycDq1FrDWRiHmWt1JeW+UtYg9touPFf8yt993p8tS2QjybpzKNTxYEwg==",
"cpu": [
"x64"
],
@@ -260,9 +261,9 @@
}
},
"node_modules/@rolldown/binding-linux-x64-musl": {
- "version": "1.0.0-rc.3",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.3.tgz",
- "integrity": "sha512-qaj+MFudtdCv9xZo9znFvkgoajLdc+vwf0Kz5N44g+LU5XMe+IsACgn3UG7uTRlCCvhMAGXm1XlpEA5bZBrOcw==",
+ "version": "1.0.0-rc.4",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.4.tgz",
+ "integrity": "sha512-RnGxwZLN7fhMMAItnD6dZ7lvy+TI7ba+2V54UF4dhaWa/p8I/ys1E73KO6HmPmgz92ZkfD8TXS1IMV8+uhbR9g==",
"cpu": [
"x64"
],
@@ -277,9 +278,9 @@
}
},
"node_modules/@rolldown/binding-openharmony-arm64": {
- "version": "1.0.0-rc.3",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.3.tgz",
- "integrity": "sha512-U662UnMETyjT65gFmG9ma+XziENrs7BBnENi/27swZPYagubfHRirXHG2oMl+pEax2WvO7Kb9gHZmMakpYqBHQ==",
+ "version": "1.0.0-rc.4",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.4.tgz",
+ "integrity": "sha512-6lcI79+X8klGiGd8yHuTgQRjuuJYNggmEml+RsyN596P23l/zf9FVmJ7K0KVKkFAeYEdg0iMUKyIxiV5vebDNQ==",
"cpu": [
"arm64"
],
@@ -294,9 +295,9 @@
}
},
"node_modules/@rolldown/binding-wasm32-wasi": {
- "version": "1.0.0-rc.3",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.3.tgz",
- "integrity": "sha512-gekrQ3Q2HiC1T5njGyuUJoGpK/l6B/TNXKed3fZXNf9YRTJn3L5MOZsFBn4bN2+UX+8+7hgdlTcEsexX988G4g==",
+ "version": "1.0.0-rc.4",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.4.tgz",
+ "integrity": "sha512-wz7ohsKCAIWy91blZ/1FlpPdqrsm1xpcEOQVveWoL6+aSPKL4VUcoYmmzuLTssyZxRpEwzuIxL/GDsvpjaBtOw==",
"cpu": [
"wasm32"
],
@@ -311,9 +312,9 @@
}
},
"node_modules/@rolldown/binding-win32-arm64-msvc": {
- "version": "1.0.0-rc.3",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.3.tgz",
- "integrity": "sha512-85y5JifyMgs8m5K2XzR/VDsapKbiFiohl7s5lEj7nmNGO0pkTXE7q6TQScei96BNAsoK7JC3pA7ukA8WRHVJpg==",
+ "version": "1.0.0-rc.4",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.4.tgz",
+ "integrity": "sha512-cfiMrfuWCIgsFmcVG0IPuO6qTRHvF7NuG3wngX1RZzc6dU8FuBFb+J3MIR5WrdTNozlumfgL4cvz+R4ozBCvsQ==",
"cpu": [
"arm64"
],
@@ -328,9 +329,9 @@
}
},
"node_modules/@rolldown/binding-win32-x64-msvc": {
- "version": "1.0.0-rc.3",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.3.tgz",
- "integrity": "sha512-a4VUQZH7LxGbUJ3qJ/TzQG8HxdHvf+jOnqf7B7oFx1TEBm+j2KNL2zr5SQ7wHkNAcaPevF6gf9tQnVBnC4mD+A==",
+ "version": "1.0.0-rc.4",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.4.tgz",
+ "integrity": "sha512-p6UeR9y7ht82AH57qwGuFYn69S6CZ7LLKdCKy/8T3zS9VTrJei2/CGsTUV45Da4Z9Rbhc7G4gyWQ/Ioamqn09g==",
"cpu": [
"x64"
],
@@ -345,9 +346,9 @@
}
},
"node_modules/@rolldown/pluginutils": {
- "version": "1.0.0-rc.3",
- "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.3.tgz",
- "integrity": "sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==",
+ "version": "1.0.0-rc.4",
+ "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.4.tgz",
+ "integrity": "sha512-1BrrmTu0TWfOP1riA8uakjFc9bpIUGzVKETsOtzY39pPga8zELGDl8eu1Dx7/gjM5CAz14UknsUMpBO8L+YntQ==",
"dev": true,
"license": "MIT"
},
@@ -411,6 +412,12 @@
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
+ "node_modules/leaflet": {
+ "version": "1.9.4",
+ "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz",
+ "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==",
+ "license": "BSD-2-Clause"
+ },
"node_modules/lightningcss": {
"version": "1.31.1",
"resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.31.1.tgz",
@@ -773,14 +780,14 @@
}
},
"node_modules/rolldown": {
- "version": "1.0.0-rc.3",
- "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.3.tgz",
- "integrity": "sha512-Po/YZECDOqVXjIXrtC5h++a5NLvKAQNrd9ggrIG3sbDfGO5BqTUsrI6l8zdniKRp3r5Tp/2JTrXqx4GIguFCMw==",
+ "version": "1.0.0-rc.4",
+ "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.4.tgz",
+ "integrity": "sha512-V2tPDUrY3WSevrvU2E41ijZlpF+5PbZu4giH+VpNraaadsJGHa4fR6IFwsocVwEXDoAdIv5qgPPxgrvKAOIPtA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@oxc-project/types": "=0.112.0",
- "@rolldown/pluginutils": "1.0.0-rc.3"
+ "@oxc-project/types": "=0.113.0",
+ "@rolldown/pluginutils": "1.0.0-rc.4"
},
"bin": {
"rolldown": "bin/cli.mjs"
@@ -789,19 +796,19 @@
"node": "^20.19.0 || >=22.12.0"
},
"optionalDependencies": {
- "@rolldown/binding-android-arm64": "1.0.0-rc.3",
- "@rolldown/binding-darwin-arm64": "1.0.0-rc.3",
- "@rolldown/binding-darwin-x64": "1.0.0-rc.3",
- "@rolldown/binding-freebsd-x64": "1.0.0-rc.3",
- "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.3",
- "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.3",
- "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.3",
- "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.3",
- "@rolldown/binding-linux-x64-musl": "1.0.0-rc.3",
- "@rolldown/binding-openharmony-arm64": "1.0.0-rc.3",
- "@rolldown/binding-wasm32-wasi": "1.0.0-rc.3",
- "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.3",
- "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.3"
+ "@rolldown/binding-android-arm64": "1.0.0-rc.4",
+ "@rolldown/binding-darwin-arm64": "1.0.0-rc.4",
+ "@rolldown/binding-darwin-x64": "1.0.0-rc.4",
+ "@rolldown/binding-freebsd-x64": "1.0.0-rc.4",
+ "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.4",
+ "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.4",
+ "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.4",
+ "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.4",
+ "@rolldown/binding-linux-x64-musl": "1.0.0-rc.4",
+ "@rolldown/binding-openharmony-arm64": "1.0.0-rc.4",
+ "@rolldown/binding-wasm32-wasi": "1.0.0-rc.4",
+ "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.4",
+ "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.4"
}
},
"node_modules/source-map-js": {
@@ -838,18 +845,18 @@
"license": "0BSD"
},
"node_modules/vite": {
- "version": "8.0.0-beta.13",
- "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.0-beta.13.tgz",
- "integrity": "sha512-7s/rfpYOAo7WUHh9irzaGjhhKb12hGv0BpDegAMV5A391wdyvM45WtX6VMV7hvEtZF2j/QtpDpR6ldXI3GgARQ==",
+ "version": "8.0.0-beta.14",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.0-beta.14.tgz",
+ "integrity": "sha512-oLW66oi8tZcoxu6+1HFXb+5hLHco3OnEVu2Awmj5NqEo7vxaqybjBM0BXHcq+jAFhzkMGXJl8xcO5qDBczgKLg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@oxc-project/runtime": "0.112.0",
+ "@oxc-project/runtime": "0.113.0",
"fdir": "^6.5.0",
"lightningcss": "^1.31.1",
"picomatch": "^4.0.3",
"postcss": "^8.5.6",
- "rolldown": "1.0.0-rc.3",
+ "rolldown": "1.0.0-rc.4",
"tinyglobby": "^0.2.15"
},
"bin": {
@@ -866,7 +873,7 @@
},
"peerDependencies": {
"@types/node": "^20.19.0 || >=22.12.0",
- "@vitejs/devtools": "^0.0.0-alpha.24",
+ "@vitejs/devtools": "^0.0.0-alpha.31",
"esbuild": "^0.27.0",
"jiti": ">=1.21.0",
"less": "^4.0.0",
diff --git a/package.json b/package.json
index 0404741..501e055 100644
--- a/package.json
+++ b/package.json
@@ -16,6 +16,7 @@
},
"dependencies": {
"@fontsource/roboto": "^5.2.9",
- "@material/web": "^2.4.1"
+ "@material/web": "^2.4.1",
+ "leaflet": "^1.9.4"
}
}
diff --git a/public/audio/alemania_plaza_toros.wav b/public/audio/alemania_plaza_toros.wav
new file mode 100644
index 0000000..0adb1c8
Binary files /dev/null and b/public/audio/alemania_plaza_toros.wav differ
diff --git a/public/audio/alemania_ruiz_alda.wav b/public/audio/alemania_ruiz_alda.wav
new file mode 100644
index 0000000..2596e38
Binary files /dev/null and b/public/audio/alemania_ruiz_alda.wav differ
diff --git a/public/audio/atencion_saldo.wav b/public/audio/atencion_saldo.wav
new file mode 100644
index 0000000..49a554d
Binary files /dev/null and b/public/audio/atencion_saldo.wav differ
diff --git a/public/audio/bda_carmen.wav b/public/audio/bda_carmen.wav
new file mode 100644
index 0000000..38a5cdc
Binary files /dev/null and b/public/audio/bda_carmen.wav differ
diff --git a/public/audio/bda_navidad.wav b/public/audio/bda_navidad.wav
new file mode 100644
index 0000000..464206d
Binary files /dev/null and b/public/audio/bda_navidad.wav differ
diff --git a/public/audio/cardenas.wav b/public/audio/cardenas.wav
new file mode 100644
index 0000000..24a40ae
Binary files /dev/null and b/public/audio/cardenas.wav differ
diff --git a/public/audio/caro_baroja.wav b/public/audio/caro_baroja.wav
new file mode 100644
index 0000000..24dba66
Binary files /dev/null and b/public/audio/caro_baroja.wav differ
diff --git a/public/audio/don_bosco.wav b/public/audio/don_bosco.wav
new file mode 100644
index 0000000..4f4e599
Binary files /dev/null and b/public/audio/don_bosco.wav differ
diff --git a/public/audio/exterior/destino_orden_baja.wav b/public/audio/exterior/destino_orden_baja.wav
new file mode 100644
index 0000000..fc1bae5
Binary files /dev/null and b/public/audio/exterior/destino_orden_baja.wav differ
diff --git a/public/audio/exterior/linea_L1.wav b/public/audio/exterior/linea_1.wav
similarity index 100%
rename from public/audio/exterior/linea_L1.wav
rename to public/audio/exterior/linea_1.wav
diff --git a/public/audio/exterior/linea_L2.wav b/public/audio/exterior/linea_2.wav
similarity index 100%
rename from public/audio/exterior/linea_L2.wav
rename to public/audio/exterior/linea_2.wav
diff --git a/public/audio/exterior/linea_3.wav b/public/audio/exterior/linea_3.wav
new file mode 100644
index 0000000..e0ff62b
Binary files /dev/null and b/public/audio/exterior/linea_3.wav differ
diff --git a/public/audio/exterior/linea_3CE.wav b/public/audio/exterior/linea_3CE.wav
new file mode 100644
index 0000000..d981602
Binary files /dev/null and b/public/audio/exterior/linea_3CE.wav differ
diff --git a/public/audio/exterior/linea_4.wav b/public/audio/exterior/linea_4.wav
new file mode 100644
index 0000000..67ac098
Binary files /dev/null and b/public/audio/exterior/linea_4.wav differ
diff --git a/public/audio/exterior/linea_4CE.wav b/public/audio/exterior/linea_4CE.wav
new file mode 100644
index 0000000..9c23461
Binary files /dev/null and b/public/audio/exterior/linea_4CE.wav differ
diff --git a/public/audio/exterior/linea_5.wav b/public/audio/exterior/linea_5.wav
new file mode 100644
index 0000000..b7e62aa
Binary files /dev/null and b/public/audio/exterior/linea_5.wav differ
diff --git a/public/audio/exterior/linea_6.wav b/public/audio/exterior/linea_6.wav
new file mode 100644
index 0000000..eb17dfa
Binary files /dev/null and b/public/audio/exterior/linea_6.wav differ
diff --git a/public/audio/exterior/linea_7.wav b/public/audio/exterior/linea_7.wav
new file mode 100644
index 0000000..3e2b3b9
Binary files /dev/null and b/public/audio/exterior/linea_7.wav differ
diff --git a/public/audio/exterior/linea_7HP.wav b/public/audio/exterior/linea_7HP.wav
new file mode 100644
index 0000000..948c7a5
Binary files /dev/null and b/public/audio/exterior/linea_7HP.wav differ
diff --git a/public/audio/exterior/linea_8.wav b/public/audio/exterior/linea_8.wav
new file mode 100644
index 0000000..e6ed032
Binary files /dev/null and b/public/audio/exterior/linea_8.wav differ
diff --git a/public/audio/hora_salida.wav b/public/audio/hora_salida.wav
new file mode 100644
index 0000000..c4962fd
Binary files /dev/null and b/public/audio/hora_salida.wav differ
diff --git a/public/audio/humilladero.wav b/public/audio/humilladero.wav
new file mode 100644
index 0000000..3c59ab1
Binary files /dev/null and b/public/audio/humilladero.wav differ
diff --git a/public/audio/linea_2_alto.wav b/public/audio/linea_2_alto.wav
new file mode 100644
index 0000000..dff864c
Binary files /dev/null and b/public/audio/linea_2_alto.wav differ
diff --git a/public/audio/linea_L1_alto.wav b/public/audio/linea_L1_alto.wav
new file mode 100644
index 0000000..561ddf0
Binary files /dev/null and b/public/audio/linea_L1_alto.wav differ
diff --git a/public/audio/linea_L1_bajo.wav b/public/audio/linea_L1_bajo.wav
new file mode 100644
index 0000000..ed4d2c6
Binary files /dev/null and b/public/audio/linea_L1_bajo.wav differ
diff --git a/public/audio/linea_L2.wav b/public/audio/linea_L2.wav
new file mode 100644
index 0000000..0d81cd2
Binary files /dev/null and b/public/audio/linea_L2.wav differ
diff --git a/public/audio/linea_L2_alto.wav b/public/audio/linea_L2_alto.wav
new file mode 100644
index 0000000..cde678a
Binary files /dev/null and b/public/audio/linea_L2_alto.wav differ
diff --git a/public/audio/linea_L2_bajo.wav b/public/audio/linea_L2_bajo.wav
new file mode 100644
index 0000000..0517cab
Binary files /dev/null and b/public/audio/linea_L2_bajo.wav differ
diff --git a/public/audio/linea_L3.wav b/public/audio/linea_L3.wav
new file mode 100644
index 0000000..cb82a85
Binary files /dev/null and b/public/audio/linea_L3.wav differ
diff --git a/public/audio/linea_L3_alto.wav b/public/audio/linea_L3_alto.wav
new file mode 100644
index 0000000..cb82a85
Binary files /dev/null and b/public/audio/linea_L3_alto.wav differ
diff --git a/public/audio/linea_L3_bajo.wav b/public/audio/linea_L3_bajo.wav
new file mode 100644
index 0000000..203d8ff
Binary files /dev/null and b/public/audio/linea_L3_bajo.wav differ
diff --git a/public/audio/linea_L4.wav b/public/audio/linea_L4.wav
new file mode 100644
index 0000000..b0ffc47
Binary files /dev/null and b/public/audio/linea_L4.wav differ
diff --git a/public/audio/linea_L4_alto.wav b/public/audio/linea_L4_alto.wav
new file mode 100644
index 0000000..b0ffc47
Binary files /dev/null and b/public/audio/linea_L4_alto.wav differ
diff --git a/public/audio/linea_L4_bajo.wav b/public/audio/linea_L4_bajo.wav
new file mode 100644
index 0000000..62fbe5b
Binary files /dev/null and b/public/audio/linea_L4_bajo.wav differ
diff --git a/public/audio/linea_L5_alto.wav b/public/audio/linea_L5_alto.wav
new file mode 100644
index 0000000..511bfd2
Binary files /dev/null and b/public/audio/linea_L5_alto.wav differ
diff --git a/public/audio/linea_L5_bajo.wav b/public/audio/linea_L5_bajo.wav
new file mode 100644
index 0000000..b39a185
Binary files /dev/null and b/public/audio/linea_L5_bajo.wav differ
diff --git a/public/audio/linea_L6_alto.wav b/public/audio/linea_L6_alto.wav
new file mode 100644
index 0000000..a4a11d6
Binary files /dev/null and b/public/audio/linea_L6_alto.wav differ
diff --git a/public/audio/linea_L6_bajo.wav b/public/audio/linea_L6_bajo.wav
new file mode 100644
index 0000000..a1605b9
Binary files /dev/null and b/public/audio/linea_L6_bajo.wav differ
diff --git a/public/audio/linea_L7_alto.wav b/public/audio/linea_L7_alto.wav
new file mode 100644
index 0000000..2b0fcdc
Binary files /dev/null and b/public/audio/linea_L7_alto.wav differ
diff --git a/public/audio/linea_L7_bajo.wav b/public/audio/linea_L7_bajo.wav
new file mode 100644
index 0000000..01dd892
Binary files /dev/null and b/public/audio/linea_L7_bajo.wav differ
diff --git a/public/audio/linea_L8.wav b/public/audio/linea_L8.wav
new file mode 100644
index 0000000..cbda9c2
Binary files /dev/null and b/public/audio/linea_L8.wav differ
diff --git a/public/audio/linea_L8_alto.wav b/public/audio/linea_L8_alto.wav
new file mode 100644
index 0000000..6db763c
Binary files /dev/null and b/public/audio/linea_L8_alto.wav differ
diff --git a/public/audio/linea_L8_bajo.wav b/public/audio/linea_L8_bajo.wav
new file mode 100644
index 0000000..c6df651
Binary files /dev/null and b/public/audio/linea_L8_bajo.wav differ
diff --git a/public/audio/lineas_orden_baja_L1.wav b/public/audio/lineas_orden_baja_L1.wav
new file mode 100644
index 0000000..a66505e
Binary files /dev/null and b/public/audio/lineas_orden_baja_L1.wav differ
diff --git a/public/audio/orden_baja.wav b/public/audio/orden_baja.wav
new file mode 100644
index 0000000..3f8c713
Binary files /dev/null and b/public/audio/orden_baja.wav differ
diff --git a/public/audio/plaza_dolores.wav b/public/audio/plaza_dolores.wav
new file mode 100644
index 0000000..aacf033
Binary files /dev/null and b/public/audio/plaza_dolores.wav differ
diff --git a/public/audio/saldo_insuficiente.mp3.wav b/public/audio/saldo_insuficiente.mp3.wav
new file mode 100644
index 0000000..a76aa27
Binary files /dev/null and b/public/audio/saldo_insuficiente.mp3.wav differ
diff --git a/public/audio/saldo_insuficiente.wav b/public/audio/saldo_insuficiente.wav
new file mode 100644
index 0000000..a76aa27
Binary files /dev/null and b/public/audio/saldo_insuficiente.wav differ
diff --git a/public/audio/y.wav b/public/audio/y.wav
new file mode 100644
index 0000000..6bd3194
Binary files /dev/null and b/public/audio/y.wav differ
diff --git a/public/data/exterior.json b/public/data/exterior.json
index e7e2e0e..9325942 100644
--- a/public/data/exterior.json
+++ b/public/data/exterior.json
@@ -11,6 +11,38 @@
"L3": {
"nombre": "Línea 3",
"destinos": ["Zafra", "Orden Baja"]
+ },
+ "L3CE": {
+ "nombre": "Línea 3CE",
+ "destinos": ["Zafra", "Orden Baja"]
+ },
+ "L4": {
+ "nombre": "Línea 4",
+ "destinos": ["Zafra", "Orden Baja"]
+ },
+ "L4CE": {
+ "nombre": "Línea 4CE",
+ "destinos": ["Zafra", "Orden Baja"]
+ },
+ "L5": {
+ "nombre": "Línea 5",
+ "destinos": ["Zafra", "Hospital JRJ"]
+ },
+ "L6": {
+ "nombre": "Línea 6",
+ "destinos": ["Zafra", "Hospital JRJ"]
+ },
+ "L7": {
+ "nombre": "Línea 7",
+ "destinos": ["Zafra", "Hospital JRJ"]
+ },
+ "L7HP": {
+ "nombre": "Línea 7HP",
+ "destinos": ["Zafra", "Hospital JRJ"]
+ },
+ "L8": {
+ "nombre": "Línea 8",
+ "destinos": ["Zafra", "Orden Baja"]
}
}
}
\ No newline at end of file
diff --git a/public/vite.svg b/public/vite.svg
deleted file mode 100644
index e7b8dfb..0000000
--- a/public/vite.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/counter.js b/src/counter.js
deleted file mode 100644
index 881e2d7..0000000
--- a/src/counter.js
+++ /dev/null
@@ -1,9 +0,0 @@
-export function setupCounter(element) {
- let counter = 0
- const setCounter = (count) => {
- counter = count
- element.innerHTML = `count is ${counter}`
- }
- element.addEventListener('click', () => setCounter(counter + 1))
- setCounter(0)
-}
diff --git a/src/javascript.svg b/src/javascript.svg
deleted file mode 100644
index f9abb2b..0000000
--- a/src/javascript.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/main.js b/src/main.js
index 78cf84c..046555b 100644
--- a/src/main.js
+++ b/src/main.js
@@ -1,148 +1,172 @@
import 'https://cdn.jsdelivr.net/npm/@material/web/all.js/+esm';
+import L from 'leaflet';
let dbInt = {};
-let dbExt = { lineas: {} }; // Base de datos exterior inicializada
+let dbExt = { lineas: {} };
let audioActual = null;
+let mapa = null;
+
const get = (id) => document.getElementById(id);
-// --- 1. INICIO DEL SISTEMA ---
-async function init() {
- try {
- const [resInt, resExt] = await Promise.all([
- fetch('data/lineas.json'),
- fetch('data/exterior.json')
- ]);
-
- if (!resInt.ok || !resExt.ok) throw new Error("Error cargando archivos JSON");
-
- dbInt = await resInt.json();
- dbExt = await resExt.json();
-
- const lineasHTML = Object.keys(dbInt).map(id =>
- `${id}
`
- ).join('');
-
- if (get('int-linea')) get('int-linea').innerHTML = lineasHTML;
- if (get('ext-linea')) get('ext-linea').innerHTML = lineasHTML;
-
- // Generar números de coche de Huelva (315-334 y 400-409)
- const coches = [...Array(20).keys()].map(i => i + 315).concat([...Array(10).keys()].map(i => i + 400));
- if (get('ext-coche')) {
- get('ext-coche').innerHTML = coches.map(c =>
- `${c}
`
- ).join('');
- }
-
- } catch (err) {
- console.error("Error cargando DB:", err);
- } finally {
- const splash = get('loading-screen');
- if (splash) {
- splash.style.opacity = '0';
- setTimeout(() => {
- splash.style.display = 'none';
- get('app').style.display = 'flex';
- }, 500);
- }
- }
-}
-
-// --- 2. MOTOR DE AUDIO ---
+// --- 1. MOTOR DE AUDIO ---
function play(cola, volId = 'vol') {
- if (audioActual) { audioActual.pause(); audioActual.currentTime = 0; }
+ if (audioActual) {
+ audioActual.pause();
+ audioActual.currentTime = 0;
+ }
if (!cola || cola.length === 0) return;
const item = cola.shift();
- audioActual = new Audio(`${item.file}?cb=${Date.now()}`);
-
- // Usar el slider correspondiente (interior o exterior)
+ const sonido = new Audio(`${item.file}?cb=${Date.now()}`);
const slider = get(volId);
- audioActual.volume = slider ? slider.value : 0.8;
-
- audioActual.play().catch(e => console.warn("Audio no encontrado:", item.file));
- audioActual.onended = () => setTimeout(() => play(cola, volId), item.gap || 400);
+ sonido.volume = slider ? slider.value : 0.8;
+ audioActual = sonido;
+
+ sonido.onended = () => {
+ if (item.gap && item.gap > 0) {
+ setTimeout(() => play(cola, volId), item.gap);
+ } else {
+ play(cola, volId);
+ }
+ };
+
+ sonido.play().catch(e => {
+ console.warn("Audio no encontrado:", item.file);
+ play(cola, volId);
+ });
}
-// --- 3. EVENTOS PANEL INTERIOR ---
+// --- 2. INICIO Y MAPA ---
+function inicializarMapa() {
+ if (get('map') && !mapa) {
+ mapa = L.map('map', { zoomControl: false }).setView([37.2614, -6.9447], 14);
+ L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(mapa);
+ L.control.zoom({ position: 'bottomright' }).addTo(mapa);
+ }
+}
+
+async function init() {
+ try {
+ const [resInt, resExt] = await Promise.all([
+ fetch('data/lineas.json'),
+ fetch('data/exterior.json')
+ ]);
+ dbInt = await resInt.json();
+ dbExt = await resExt.json();
+
+ // Rellenar selector de línea INTERIOR (desde lineas.json)
+ const lineasIntHTML = Object.keys(dbInt).map(id =>
+ `${id}
`).join('');
+ if (get('int-linea')) get('int-linea').innerHTML = lineasIntHTML;
+
+ // Rellenar selector de línea EXTERIOR (desde exterior.json exclusivamente)
+ // Esto arregla que no se lean las líneas L3, L3CE, etc.
+ if (get('ext-linea')) {
+ const lineasExtHTML = Object.keys(dbExt.lineas).map(id =>
+ `${id}
`).join('');
+ get('ext-linea').innerHTML = lineasExtHTML;
+ }
+
+ // Rellenar números de coche (Huelva)
+ const coches = [...Array(20).keys()].map(i => i + 315).concat([...Array(10).keys()].map(i => i + 400));
+ if (get('ext-coche')) {
+ get('ext-coche').innerHTML = coches.map(c =>
+ `${c}
`).join('');
+ }
+
+ inicializarMapa();
+ } catch (e) {
+ console.error("Error cargando archivos JSON:", e);
+ } finally {
+ get('loading-screen').style.display = 'none';
+ get('app').style.display = 'flex';
+ if (mapa) mapa.invalidateSize();
+ }
+}
+
+// --- 3. LÓGICA DE INTERIOR ---
get('int-linea')?.addEventListener('change', (e) => {
const linea = dbInt[e.target.value];
- const selParada = get('int-parada');
- if (linea && selParada) {
- selParada.innerHTML = linea.paradas.map(p =>
- `${p.nombre}
`
- ).join('');
- selParada.disabled = false;
- selParada.value = "";
+ if (linea && get('int-parada')) {
+ get('int-parada').innerHTML = linea.paradas.map(p =>
+ `${p.nombre}
`).join('');
+ get('int-parada').disabled = false;
}
- get('container-regulacion').style.display = 'none';
-});
-
-get('int-parada')?.addEventListener('change', (e) => {
- const paradasReg = ['zafra', 'orden_baja', 'hospital_jrj'];
- const esReg = paradasReg.includes(e.target.value);
- get('container-regulacion').style.display = esReg ? 'flex' : 'none';
- if (!esReg) get('chk-regulacion').checked = false;
});
get('btn-int')?.addEventListener('click', () => {
- const lId = get('int-linea').value, pId = get('int-parada').value;
+ const lId = get('int-linea').value;
+ const pId = get('int-parada').value;
if (!lId || !pId) return;
const paradaData = dbInt[lId].paradas.find(p => p.id === pId);
- const tipo = document.querySelector('md-radio[value="siguiente"]')?.checked ? "siguiente" : "actual";
+ const tipo = document.querySelector('md-radio[name="tipo"][checked]')?.value || "actual";
let cola = [
- { file: `audio/parada_${tipo}.wav`, gap: 400 },
- { file: `audio/${pId}.wav`, gap: 600 }
+ { file: `audio/parada_${tipo}.wav`, gap: 150 },
+ { file: `audio/${pId}.wav`, gap: 350 }
];
- if (paradaData.enlaces?.length > 0) {
- const enlaces = paradaData.enlaces.filter(en => en.trim() !== "");
- if (enlaces.includes("todas")) {
- cola.push({ file: `audio/correspondencia_todas_las_lineas.wav`, gap: 400 });
- } else if (enlaces.length > 0) {
- cola.push({ file: `audio/${enlaces.length === 1 ? 'correspondencia_linea' : 'correspondencia_lineas'}.wav`, gap: 300 });
- enlaces.forEach(en => cola.push({ file: `audio/linea_${en}.wav`, gap: 300 }));
+ if (paradaData.enlaces && paradaData.enlaces.length > 0) {
+ if (paradaData.enlaces.includes("todas")) {
+ cola.push({ file: `audio/correspondencia_todas_las_lineas.wav`, gap: 0 });
+ } else {
+ const enlacesFiltrados = paradaData.enlaces.filter(en => en !== lId);
+ if (enlacesFiltrados.length > 0) {
+ const esVarios = enlacesFiltrados.length > 1;
+ cola.push({ file: `audio/correspondencia_linea${esVarios ? 's' : ''}.wav`, gap: 0 });
+ cola.push({ file: `audio/lineas_${pId}_${lId}.wav`, gap: 400 });
+ }
}
}
- if (get('chk-regulacion')?.checked) cola.push({ file: `audio/parada_regulacion.wav`, gap: 400 });
+ if (get('chk-regulacion')?.checked) cola.push({ file: `audio/parada_regulacion.wav`, gap: 0 });
play(cola, 'vol');
});
-// --- 4. LÓGICA EXTERIOR (RESTAURADA) ---
-get('btn-abrir-exterior').onclick = () => get('dialog-exterior').show();
+// --- 4. LÓGICA DE EXTERIOR ---
get('ext-linea')?.addEventListener('change', (e) => {
- const lineaId = e.target.value;
- const destinos = dbExt.lineas[lineaId]?.destinos || [];
+ const lineaId = e.target.value; // Ejemplo: "L3"
+ // Buscamos directamente en el objeto lineas del exterior.json
+ const datosLinea = dbExt.lineas[lineaId];
const selDest = get('ext-destino');
- if (selDest) {
- selDest.innerHTML = destinos.map(d => `${d}
`).join('');
+
+ if (selDest && datosLinea) {
+ selDest.innerHTML = datosLinea.destinos.map(d =>
+ `${d}
`).join('');
selDest.disabled = false;
+ } else {
+ if (selDest) {
+ selDest.innerHTML = "";
+ selDest.disabled = true;
+ }
}
});
get('btn-reproducir-ext')?.addEventListener('click', () => {
- const linea = get('ext-linea').value;
+ const linea = get('ext-linea').value; // Ejemplo: "L1"
const destino = get('ext-destino').value;
const coche = get('ext-coche').value;
- if (!linea || !destino || !coche) return;
+ if (!linea || !destino || !coche) {
+ alert("Por favor, selecciona línea, destino y coche");
+ return;
+ }
const destFile = destino.toLowerCase().replace(/ /g, "_");
-
- // Cola exterior: Línea X -> Autobús XXX -> Destino YYY
- const colaExt = [
- { file: `audio/exterior/linea_${linea}.wav`, gap: 300 },
- { file: `audio/exterior/autobus_${coche}.wav`, gap: 500 },
- { file: `audio/exterior/destino_${destFile}.wav`, gap: 300 }
- ];
+ // Quitamos la 'L' para el nombre del audio si tus audios son "linea_1.wav"
+ const lineaNum = linea.replace('L', '');
- play(colaExt, 'vol-ext');
+ play([
+ { file: `audio/exterior/linea_${lineaNum}.wav`, gap: 100 },
+ { file: `audio/exterior/autobus_${coche}.wav`, gap: 100 },
+ { file: `audio/exterior/destino_${destFile}.wav`, gap: 0 }
+ ], 'vol-ext');
});
-// --- 5. ESPECIALES ---
+// --- 5. BOTONES ESPECIALES ---
+get('btn-abrir-exterior').onclick = () => get('dialog-exterior').show();
get('btn-colision').onclick = () => play([{ file: `audio/colision.wav` }]);
get('btn-hora').onclick = () => play([{ file: `audio/hora_salida.wav` }]);
get('btn-saldo').onclick = () => play([{ file: `audio/atencion_saldo.wav` }]);