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` }]);