Fix: Explicitly import models in database.py to ensure table creation on Render

This commit is contained in:
2026-02-22 10:29:41 -05:00
parent d50020ade2
commit a111827d1f
4 changed files with 180 additions and 114 deletions

View File

@ -1,5 +1,6 @@
"""Database connection and session management.""" """Database connection and session management."""
from sqlmodel import SQLModel, create_engine, Session from sqlmodel import SQLModel, create_engine, Session
from app import models # Ensure all models are loaded for metadata
from typing import Generator from typing import Generator
from app.core.config import settings from app.core.config import settings

View File

@ -8,75 +8,75 @@ favicon.ico,1769464283903,553f734900a313ee735847c6fd3333a188e7d21f10efa11903d53c
favicon-32.png,1769464283900,4d0eeeadf9e051b36d2ad4cec4bb0d8135b7879a0323077d0b5e1e70e0f4445b favicon-32.png,1769464283900,4d0eeeadf9e051b36d2ad4cec4bb0d8135b7879a0323077d0b5e1e70e0f4445b
favicon-16.png,1769464283899,5fec82c563501c9fbed7e40b3878a908b91801b60f4fbbfab57cefb4fe78931a favicon-16.png,1769464283899,5fec82c563501c9fbed7e40b3878a908b91801b60f4fbbfab57cefb4fe78931a
default-coupon.png,1770001277723,ff8babdd3515989ffe44728488ea910e15d09dbf395fb5036141c520dbfe94a6 default-coupon.png,1770001277723,ff8babdd3515989ffe44728488ea910e15d09dbf395fb5036141c520dbfe94a6
index.html,1771773499205,f7bceccb8ab97a7db58e80bb6cfd6070b5afd7a06c0ff28bf3dba804ab77be7b registerSW.js,1771774059008,09e15d1438017c065a3281739cb5506aeaf7b3047bc3ada992da01d4497c2d43
manifest.webmanifest,1771773499205,87eb160150ca30a7cf3f3d6ca9af3a21fafe809e86023fa7de1315da036b5592 manifest.webmanifest,1771774059008,87eb160150ca30a7cf3f3d6ca9af3a21fafe809e86023fa7de1315da036b5592
registerSW.js,1771773499205,09e15d1438017c065a3281739cb5506aeaf7b3047bc3ada992da01d4497c2d43 sw.js,1771774061573,84a24f4026b54101452868ae9577c7ba285144657fe0ecade592b5d9383c4a14
sw.js,1771773500818,5385994b9e06f20276b6a8107397e02da8958e79bac2da4a65e594a303011490 assets/web-B7h17Bf6.js,1771774059008,e0febe859804fe4de7ed46c48b5f9bcaab93efea0b47a22860b6353b0e4acb4f
assets/web-CNSOTbgi.js,1771773499205,9efd3662e60d6505d156e84e364c5f0668916d166df3c7c73a55ab10a0fa354d index.html,1771774059008,f5917a041becc3af0243c201c0b49a8bcf5515f7cf3a33449c46c837e128dc2d
assets/useGoogleMaps-CBh3OAWo.js,1771773499205,3f71fdf6bbf54c28663d48b0e776350e97d7de52b22ef85063c88a4e34000910 assets/telemetryService-BH1f9V_M.js,1771774059008,5f45314d904169ee4f620f7f88caa7dff972e56ca96212385e5a48fd45ae893d
assets/timeFormatter-BjMQ8E0Y.js,1771773499205,659c6bddc1380663c70893da1bb2adc86d18101a122c196a75aaa1d76d9c382f assets/timeFormatter-BjMQ8E0Y.js,1771774059008,659c6bddc1380663c70893da1bb2adc86d18101a122c196a75aaa1d76d9c382f
workbox-1d305bb8.js,1771773500819,5e0e0f57e6b732b3a5dd91cb61f94f7d1d79775b680269e6b0a208a0f5f1bbd6 workbox-1d305bb8.js,1771774061574,5e0e0f57e6b732b3a5dd91cb61f94f7d1d79775b680269e6b0a208a0f5f1bbd6
assets/telemetryService-BLXv8VEL.js,1771773499205,a766ca5e704390ce4c48c35e69c2e52139f47f1a588e1bcb4a9dae1fe5ab5b00 assets/useGoogleMaps-Cez1Nb4p.js,1771774059008,4b16dc7dfb7b9ece731aa066d7edc9ba67416da61c07ee47a1f12a424b66d5ce
assets/StrategicAnalytics-Ck0SNJxh.css,1771773499204,69615149ccc2cd5e3eb7473d4af584f4bbd3bd2d08bbe3f74f7b453a413d5713 assets/StrategicAnalytics-Ck0SNJxh.css,1771774059007,69615149ccc2cd5e3eb7473d4af584f4bbd3bd2d08bbe3f74f7b453a413d5713
assets/TaxiView-DRR2bn-C.js,1771773499205,f9298170fca62a2f97d102c450a907172b01da40279b2483cea10498c8954ca7 assets/TaxiView-DUWzPddR.js,1771774059008,903f900ade1df715a7d7bca6b547bf202cc1619e02975bd39349f726fc95114e
assets/TaxiView-BycuFnLU.css,1771773499204,7f49c5e464c106c63ebd421272b13b65e12615e658d64add93404d58ca0b440d assets/TaxiView-BycuFnLU.css,1771774059007,7f49c5e464c106c63ebd421272b13b65e12615e658d64add93404d58ca0b440d
assets/SplashScreen-K-kyfAob.css,1771773499189,c01e5e1406d96f10dd4b5253f39453e880cb6f627a844b98b65169a1a5432bdc assets/SplashScreen-BOnJEt_V.js,1771774059007,773f1c2e0e548d49d628b585dbe4c083a40f0efb9d287791b53b7dc7c48ab515
assets/schedulesService-DSEyN1RI.js,1771773499205,ce8bb6d016141119ea60ec986d2b319cd76a31a3a2a2a9a9fa4aa01fac13805b assets/SplashScreen-K-kyfAob.css,1771774059006,c01e5e1406d96f10dd4b5253f39453e880cb6f627a844b98b65169a1a5432bdc
assets/SplashScreen-ES4i1TWV.js,1771773499204,067c770de2031ccd24d1ae94c09859fb412fba14879611400b3e1ea429e8f82c assets/SchedulesView-ponOCkTQ.js,1771774059007,d353b448fc70af9f69c7b810754447765312ac716de9118e37edf2e5fe4fd52d
assets/SchedulesView-mKoD6B4N.js,1771773499205,e15a1054ce85d5d72a39203893cdd1e152c1c788b74cdb70ecb049fa55110507 assets/schedulesService-CVrXGfOo.js,1771774059008,cce38ecb588c319fb0bb9a4628f54ef8ae33ec46be91f7545daf413edcff8bdf
assets/RoutesView-BQdZq3GS.css,1771773499204,eeca12c4566c78503b02cf8f764d849517ab81ed1f5077d3dd4c595dd04770d6 assets/SchedulesView-CYzHq-N2.css,1771774059006,8e963c1782155e8291b0bc68ee440c7ef7ec3b8dbca085e56562b0ba9a069afc
assets/RoutesView-mP3V3avf.js,1771773499205,7d2fcb1d79480b9a683d7c9ef5584298486f8ac1672ffdbe682f6e6f23cd7a1f assets/routesService-CGJV86qj.js,1771774059008,63daf381224c9cb482b98e9c1c7e0c37f65e491daa3ac07dce6b64ad5a1b5f88
assets/routesService-BDmUQuoX.js,1771773499205,3c8de27c67e60343dc5ed28db37b80456cd75f30b435ea15be05264a7ea41b2b assets/RoutesView-BQdZq3GS.css,1771774059006,eeca12c4566c78503b02cf8f764d849517ab81ed1f5077d3dd4c595dd04770d6
assets/route-CtjRFvtR.js,1771773499205,f98037adafe578febcf6ba0edcf8722c849a859b8301a97c2414de039bf1f331 assets/RoutesView-DVHMpV1b.js,1771774059007,6ffb9ec12cf8f945b90a9991d14459d4bdcdd29fba9afa805ebc98e11be8f02e
assets/PromoterDashboard-nSP6hhuP.css,1771773499204,d4c01a2f7ae984d0d7ad1ac7b575ab981d75dabfd2c3794ebc74ee43fcc96fb0 assets/PromoterDashboard-nSP6hhuP.css,1771774059007,d4c01a2f7ae984d0d7ad1ac7b575ab981d75dabfd2c3794ebc74ee43fcc96fb0
assets/SchedulesView-CRLKeJ_W.css,1771773499204,db6e487c60f4e5b6aaf9fe391974de116a2e5f5be5e81347e82291ea27a8272b assets/ProfileView-BkHBWLCw.js,1771774059008,57ebac67210008869e8a09805ac4ea7c0def0622a5a7ad33a80dc83132c1eb7c
assets/PromoterDashboard-Q_IR-3U4.js,1771773499205,768130f01d6f5f25167453298ddbef546c5622fb4c779eb32aa86175769dc3e4 assets/PromoterDashboard-C5hrPOyw.js,1771774059008,7ec0f4021cbb00cecf5203c3e7928d402b8a92501c291f0b97f30bde9a2d7c77
assets/ProfileView-BTy25q0X.js,1771773499205,2e1459a50917868ff34a9398241be05bad5403a3540bfebe5ab368fc5c348f03 assets/ProfileView-BhSlUAPK.css,1771774059007,17e1f8982ffd5bfde0721b5f9a23aca36a66900781e8b43d35dc26f403c2cf0a
assets/ProfileView-BhSlUAPK.css,1771773499204,17e1f8982ffd5bfde0721b5f9a23aca36a66900781e8b43d35dc26f403c2cf0a assets/purify.es-Bzr520pe.js,1771774059009,6ce952e09072ea544ebfdb257d3775ac9a6de76808b87d6fd0de467e24d1d8ad
assets/purify.es-Bzr520pe.js,1771773499205,6ce952e09072ea544ebfdb257d3775ac9a6de76808b87d6fd0de467e24d1d8ad assets/route-CuWxvzS8.js,1771774059007,61d88883b17c5d5c82133cc6870ccef738c04764bf855b35685de1f2c085766e
assets/MapView-RP9ACikm.css,1771773499203,f57ff2793eb3d610bb4b02e5d0aa63567cb3f1634e996d26abbb85a6c3df052e assets/MapView-RP9ACikm.css,1771774059006,f57ff2793eb3d610bb4b02e5d0aa63567cb3f1634e996d26abbb85a6c3df052e
assets/icon-192-cB8p-G7m.js,1771773499205,f41fd8e2adc5e413f2f83fa06bc5a5ad9759f6f28af06348e852d6b88839c20e assets/icon-192-cB8p-G7m.js,1771774059008,f41fd8e2adc5e413f2f83fa06bc5a5ad9759f6f28af06348e852d6b88839c20e
assets/index-DrDlRGsZ.css,1771773499204,ef45e52d665a23ba4dfba7bf8bf63e01b1efd6460a8d04ceb328e7ebbbbc5e66 assets/MapView-CTgzTYH9.js,1771774059007,99ac897ad64f8f8e406907a2202d10a0db4e2ad8618ce1ff0e8314aff2be0de8
assets/FavoritesView-CR-viOET.css,1771773499204,5d4fc48a791e14b691de4e2f5bfc7af9dec3563ab1845b503da0798682bbbdcc assets/FavoritesView-DwpX3o2u.js,1771774059008,15213fb20a93ddeedf9f778aa755f1f41b6c0e6a4e74dd50f57546ee09208e3d
assets/FavoritesView-DlR8BevK.js,1771773499205,1367788c9f3e1e2d3e74bf89ffd1099b96e5cfe2accbbb1e9a61dfe1c544c5d1 assets/index-DrDlRGsZ.css,1771774058994,ef45e52d665a23ba4dfba7bf8bf63e01b1efd6460a8d04ceb328e7ebbbbc5e66
assets/MapView-BuBfxe6_.js,1771773499204,5ef66de6a36fd8bd0287df4185158c137b710f0098d599fc662ee8c63c07bf2d assets/FavoritesView-CR-viOET.css,1771774059007,5d4fc48a791e14b691de4e2f5bfc7af9dec3563ab1845b503da0798682bbbdcc
assets/favorites-CuVPhYnv.js,1771773499205,76cd494d6085f4b2e7e31f2b94e8ed88a4994a9483d65581ed5ab0acc98d2a47 assets/favorites-D_GNvVFc.js,1771774059008,8862d0b63e5ae1e81bc4c829b58dde0077dc32ecc4249a061b62e4745cd68fc7
assets/FavoriteButton-x_eupA7E.css,1771773499204,e83a939e4e4ef837f8b9b5b1e0ed4df3ad37d131d3fd2fb2c0063d4b99235d43 assets/FavoriteButton-x_eupA7E.css,1771774059007,e83a939e4e4ef837f8b9b5b1e0ed4df3ad37d131d3fd2fb2c0063d4b99235d43
assets/FavoriteButton-CNaGsTc7.js,1771773499205,8d563fd65f8925ac4e2bd28c72e45b224ad11d020062f9f1187058c899043054 assets/FavoriteButton-ONa0GB9B.js,1771774059008,f75a51d9947aa155fb8c240f2ad516eb966cfce714a7f03895688a32c7271249
assets/DriverDashboard-DWfPJRR-.css,1771773499204,8411c7297f0aee41d3d32e4858fc38c0760659e7aa81867fb3e465dba9a236d7 assets/DriverDashboard-DWIwv032.js,1771774059008,838914b4cf7049d8d92d10097b19f3c4a8dee40acd2a153a43854df84f68b094
assets/DiscoverView-_tZVS0_s.css,1771773499203,50599cabae02d02a0ff2d4074f2238e38fd6c2fa9724a7c6308e29981ff59e4c assets/DiscoverView-_tZVS0_s.css,1771774059006,50599cabae02d02a0ff2d4074f2238e38fd6c2fa9724a7c6308e29981ff59e4c
assets/DriverDashboard-BTyEbdxO.js,1771773499205,e9acf48389cbf9b103c9d39881fa58634b501b2e83f48f85e9cf1beab920e3e6 assets/DriverDashboard-DWfPJRR-.css,1771774059007,8411c7297f0aee41d3d32e4858fc38c0760659e7aa81867fb3e465dba9a236d7
assets/DiscoverView-CwiGhK9b.js,1771773499205,587af2d965fe9b3040cab263950ca245619c6c3fa07399ebf3e29aaa9be494c6 assets/DiscoverView-CavX6N16.js,1771774059007,3a862ce9c859cc429c71354f068e450dc1d5c65a732ccb11c86d941a6e0cf499
assets/CouponsView-D8TyS2Q2.css,1771773499204,bfb1d6032738efa2153b0400dfd1271672bbafd326e601d074245e81d1364cca assets/CouponsView-DS6oLZeB.js,1771774059008,18954807ad1f624aa17fbaaced3e1488e8618890315497e24f25930d020713f0
assets/couponsService-BV5JCU-v.js,1771773499205,ba8a3dd72dd59a6f965f6fbc51d7f01cc7c1cbd120ffc5163332dfbc2945c9bc assets/couponsService-CM20HO0M.js,1771774059008,9f8a774dd106e75837e203d1c02fa71c4ad5e5b4b03d47ec42139b5f0fe21567
assets/CouponsView-D8H7L9eE.js,1771773499205,6d5f77177caf0615b88d868f79e53c2639845d89b15bb5828a94840718be1cbb assets/CouponsView-D8TyS2Q2.css,1771774059007,bfb1d6032738efa2153b0400dfd1271672bbafd326e601d074245e81d1364cca
assets/coupon-CktNBw28.js,1771773499205,b338964690077f4484469df4da28561d32df34a372bcf49141467a79d3c4c927 assets/coupon-C_DAzhk1.js,1771774059008,b2c344953b128c7adcfaaaf558fa2d22bf136848342ba1edce1be9883f0ac506
assets/busStopsService-DRZ-cyx8.js,1771773499205,02b1660ea661f30b6609f5ea2f71a35106169dd422ccdcc6aa36855a08b0a5c8 assets/busStopsService-Ias1tgng.js,1771774059008,4b701304be823274be58b0641d711a1d16cf3402eaf6b63139488791c7926045
assets/BusStopDetailsView-CbKW8-8y.js,1771773499205,4c5a78fc90058ff08abf8810157adc42294003b737194f09c955f7443c8fe5ec assets/BusStopDetailsView-BKby7DQ_.js,1771774059008,ac0a5b72834f9a5780808b600100443c2ea9635bb2e507432bcf6b20389f5c3e
assets/BusStopDetailsView-YPniKC_7.css,1771773499204,f485fb81a011121e0c779b173704f7c90c1868d0770ec43b473a037d09b0b537 assets/BusStopDetailsView-YPniKC_7.css,1771774059007,f485fb81a011121e0c779b173704f7c90c1868d0770ec43b473a037d09b0b537
assets/busStop-v8o1NhyU.js,1771773499205,bd5c75a7c271ba81c9702dd67ed18087eeaa4e3f6df311e61f5fcf6f86d9d705 assets/busStop-DBH9QXlQ.js,1771774059008,ad68080eee5494314554d411bcb3d314339e3e5a5ace78705320d490f7d11247
assets/BusinessDetailsView-C2EsI1Sp.js,1771773499205,16360c57b5435f6a74411aa990c7541fd7ca39466a951b3b4c9003e4c0bc514d assets/businessService-GQy5h7i6.js,1771774059008,43f384ec6a9d22b0c2a75a2ee3dd27f407e0b68548e672f70cc4afdbb960f197
assets/businessService-C0gc8WuH.js,1771773499205,f85bef75fa99b21f0c4854ee3381f389f478886d8371a3625a757bec9a9ac718 assets/BusinessDetailsView-C5R_Nm3k.js,1771774059007,9bce16477c2399b318114f4c0944f011d92442ce16e1e0355fbe8442b4631765
assets/BusinessDetailsView-B54egNo4.css,1771773499204,b98466538682838251a16af1c1fe6a7fe983a19b8e0594fd5f745d090e474599 assets/BusinessDetailsView-B54egNo4.css,1771774059006,b98466538682838251a16af1c1fe6a7fe983a19b8e0594fd5f745d090e474599
assets/AuthView-BfDSXMHM.css,1771773499204,a808f3dc76eaa54ad6f63c8dc7c9e284462d6c4744cd7dba4a655781d7b03d22 assets/AuthView-DRDdJ_mg.js,1771774059008,da0f563ba66a613e467823470149911fbe1bbcf91de202998e611a86a09ce914
assets/authService-C_6G_8Nt.js,1771773499205,ec70ad724b754a84d69986d5211bb74e22bd926c2777b48bdc50072895282428 assets/AuthView-BfDSXMHM.css,1771774059007,a808f3dc76eaa54ad6f63c8dc7c9e284462d6c4744cd7dba4a655781d7b03d22
assets/AuthView-A1vo6zWz.js,1771773499205,71ba2ea50eb9ce8b8ae492c0201453a58d741cb4381566d09ca67a98f5885262 assets/authService-9PgCjW4j.js,1771774059008,a8d012c314989ddc45dddbd20544c12e7d0ddd82702759695215c6961526497f
assets/AdminTaxis-D5tKQm5A.css,1771773499204,7fcc4c4a87d40432b931283cd8a8fe4665b6677ae68104be82d2052cd71512be assets/AdminTaxis-D5tKQm5A.css,1771774059007,7fcc4c4a87d40432b931283cd8a8fe4665b6677ae68104be82d2052cd71512be
assets/AdminTaxis-D2dDO8u6.js,1771773499205,afd6b001560874bb0751eb1c9e3c00b727a0769a2d62e889189be3b699221d43 assets/AdminShuttles-yF67L9qg.css,1771774059007,defef4c13ef89ec7236617046186f29c3d4fb08f022a78d469ce849eb36f516c
assets/AdminShuttles-yF67L9qg.css,1771773499204,defef4c13ef89ec7236617046186f29c3d4fb08f022a78d469ce849eb36f516c assets/AdminTaxis-B4hFBEyZ.js,1771774059008,e7577b312cba5345218486bd77732094df8ec70b7e44dc8d31b5bbfb6b217289
assets/AdminShuttles-DL_sR2jQ.js,1771773499205,359550f6e8ac57b95ce36df312beacd3332ee53d5730d32b5713515ec7842de5 assets/AdminShuttles-4Xd1fYWX.js,1771774059008,d6834d9649f9dce37babb871057628f94baf2570654c196021b6f557b7f8a1bc
assets/AdminSchedules-CSKZZPH8.js,1771773499205,aef33d9e4a4cadd5d0591815926104103b6c0bc4c736fef56456f27e9957234b assets/AdminSchedules-BOxr18pA.css,1771774059007,ab3196c8f27a0cf9b6579d3751c2e43ab4b846035060754c9a2ae9109da86ec0
assets/AdminSchedules-BOxr18pA.css,1771773499204,ab3196c8f27a0cf9b6579d3751c2e43ab4b846035060754c9a2ae9109da86ec0 assets/AdminRoutes-DeaMKjOB.js,1771774059008,1fb6cf4005c11f15df40c92fc52d639283c9456afc1b17b6039f798ace15fa60
assets/AdminRoutes-Cz8oNNEE.css,1771773499204,9e30d2bfdaea7996f84e95fcaebd67a79f0d5a89a0a861acae8e294b0e86a5b0 assets/AdminSchedules-15-oja_o.js,1771774059008,a78af23b2a5f1b47f5ab931c1e7288355e3ed282d42cfd6b51152506be2c5440
assets/AdminRoutes-CQI9kGPF.js,1771773499205,ad0fada40439002e3825115304c4d525224921762d8d78cf27b278461cbf3366 assets/AdminRoutes-Cz8oNNEE.css,1771774059007,9e30d2bfdaea7996f84e95fcaebd67a79f0d5a89a0a861acae8e294b0e86a5b0
assets/AdminReports-DQsuVOoh.js,1771773499205,6f05d8d78c8072d5f6e09754dd5ec01301aef7b6e57559e7ce5d63d3f78a71e7 assets/AdminReports-DC6CHt30.js,1771774059008,895eb3d70b14f3abbe7535cb99844928650ca045c937fbda518585f793ce451d
assets/AdminReports-B-dcDjo2.css,1771773499204,36d5447431cad2edc2a6218f65bc7d310d22ffbc151661a08ae1a52447969684 assets/AdminReports-B-dcDjo2.css,1771774059007,36d5447431cad2edc2a6218f65bc7d310d22ffbc151661a08ae1a52447969684
assets/AdminPanel-DOwcfQQZ.css,1771773499204,123dc97d83d33c8050b10aa70161d4f3a36237fc66a352ad94e4180c6cd1bb7f assets/AdminPanel-DrFXEkr-.js,1771774059008,d54e80c325dbfd4031de5c90cb39bcb5dd54d492b4bfb0ea57ce3ed733d172b4
assets/AdminPanel-CyfksMX3.js,1771773499205,648468e5dc97883977ab21b3d9272283cb1bcf4c92cd04b38dc7f1b75b8a2265 assets/AdminPanel-DOwcfQQZ.css,1771774059007,123dc97d83d33c8050b10aa70161d4f3a36237fc66a352ad94e4180c6cd1bb7f
assets/AdminDrivers-CuETipci.css,1771773499204,c1b8793aa0eb6c662e1c64899af466bfe79352e28b6fe9748627a4879089ec3b assets/AdminBusStops-BREqyMXj.css,1771774059007,9fde17317de1d24a70a3e37ea33886f77f8b87b4b1cc486070e4c98764016d8a
assets/AdminBusStops-BREqyMXj.css,1771773499204,9fde17317de1d24a70a3e37ea33886f77f8b87b4b1cc486070e4c98764016d8a assets/AdminDrivers-CuETipci.css,1771774059007,c1b8793aa0eb6c662e1c64899af466bfe79352e28b6fe9748627a4879089ec3b
assets/AdminBusStops-D_geOCdr.js,1771773499205,489fb2fafdb299b317acecd2f950c1aa1d57f0b5f5363e822550898aac1ed7ab assets/AdminBusStops-DslUKwPb.js,1771774059008,d67ffcd398f0590f567ca06bfa5b89b8c04a52a57c87d16a60b041fc5fb56596
assets/AdminDrivers-C1-STc1f.js,1771773499205,fefc186e637fd311757b8b810e558f607944534c2534722839c7a2e52ae49e08 assets/AdminDrivers-ernJms6E.js,1771774059008,41050ef1bd2f905c30d44d864fcbd5da23d7daa0c0b83add96f017aeea7ba7a2
assets/index.es-BQNbyFs6.js,1771773499206,bb2943f70fccbf70fa950753c1931636c9acba2e5d534cff0bf0726fa5fe39fc assets/index.es-92sPgS9w.js,1771774059009,17ba0b2c64139ccffc5067736625bc21b0b6f00bebdc835f90ebf2ef0993781e
assets/index-DS9pLnmm.js,1771773499205,101243f272d0549cd533f3af0966c220765358cf2da92d22f477a0fc94b889aa assets/index-CvBxtfeu.js,1771774059007,8dbeee9717f87d294bbd0c60814fdbefa459cd57d8c04a3eff84a6f9e6ee7fc2
assets/StrategicAnalytics-CJwtuVFx.js,1771773499207,406b5d038ed5fbd02cd4ec11f26799efbb47a58aaf8532d1d064c2c0d56a124f assets/StrategicAnalytics-Ce8UOfua.js,1771774059010,f03601a3ae98dfb57ad9f4bef083edb22da10772c87eea97726966f46b6be18d

View File

@ -31,17 +31,14 @@ onMounted(() => {
</template> </template>
<style> <style>
* { @import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&display=swap');
margin: 0;
padding: 0;
box-sizing: border-box;
}
:root { :root {
/* Common Variables */ /* Common Variables */
--safe-area-top: env(safe-area-inset-top, 0px); --safe-area-top: env(safe-area-inset-top, 0px);
--safe-area-bottom: env(safe-area-inset-bottom, 0px); --safe-area-bottom: env(safe-area-inset-bottom, 0px);
--transition-speed: 0.3s; --transition-speed: 0.4s;
--font-family: 'Space Grotesk', system-ui, -apple-system, sans-serif;
} }
/* DARK THEME (Default & .dark) */ /* DARK THEME (Default & .dark) */
@ -51,38 +48,38 @@ html.dark {
--bg-secondary: #020617; --bg-secondary: #020617;
--text-primary: #f8fafc; --text-primary: #f8fafc;
--text-secondary: #94a3b8; --text-secondary: #94a3b8;
--border-color: rgba(255, 255, 255, 0.12); --border-color: rgba(255, 255, 255, 0.1);
--shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.6); --shadow: 0 20px 50px rgba(0, 0, 0, 0.5);
--header-bg: rgba(15, 23, 42, 0.9); --header-bg: rgba(15, 23, 42, 0.8);
--header-text: #ffffff; --header-text: #ffffff;
--card-bg: rgba(30, 41, 59, 0.85); /* Increased opacity for better legibility */ --card-bg: rgba(30, 41, 59, 0.7);
--hover-bg: rgba(255, 255, 255, 0.08); --hover-bg: rgba(254, 231, 21, 0.08); /* SIBU Gold hint on hover */
--active-bg: rgba(254, 231, 21, 0.15); --active-bg: rgba(254, 231, 21, 0.15);
--active-color: #fee715; --active-color: #fee715;
--accent-color: #fee715; --accent-color: #fee715;
--accent-hover: #fde047; --accent-hover: #fde047;
--glass-bg: rgba(255, 255, 255, 0.05); --glass-bg: rgba(15, 23, 42, 0.6);
--glass-border: rgba(255, 255, 255, 0.15); --glass-border: rgba(254, 231, 21, 0.2);
} }
/* LIGHT THEME */ /* LIGHT THEME */
html.light-theme { html.light-theme {
--bg-primary: #f1f5f9; /* Slightly darker light background */ --bg-primary: #f8fafc;
--bg-secondary: #ffffff; --bg-secondary: #ffffff;
--text-primary: #0f172a; --text-primary: #0f172a;
--text-secondary: #475569; --text-secondary: #64748b;
--border-color: #cbd5e1; /* More visible borders */ --border-color: rgba(15, 23, 42, 0.08);
--header-bg: #ffffff; --header-bg: rgba(255, 255, 255, 0.8);
--header-text: #0f172a; --header-text: #0f172a;
--card-bg: #ffffff; --card-bg: rgba(255, 255, 255, 0.9);
--hover-bg: #f1f5f9; --hover-bg: rgba(15, 23, 42, 0.04);
--glass-bg: rgba(255, 255, 255, 0.9); --glass-bg: rgba(255, 255, 255, 0.7);
--glass-border: #e2e8f0; --glass-border: rgba(15, 23, 42, 0.1);
--shadow: 0 8px 30px rgba(0, 0, 0, 0.12); /* Stronger shadow in light mode */ --shadow: 0 10px 40px rgba(15, 23, 42, 0.08);
--active-bg: rgba(16, 24, 32, 0.1); --active-bg: rgba(15, 23, 42, 0.05);
--active-color: #101820; --active-color: #101820;
--accent-color: #101820; --accent-color: #101820;
} }
@ -96,9 +93,9 @@ body {
overflow-x: hidden; overflow-x: hidden;
background-color: var(--bg-primary); background-color: var(--bg-primary);
color: var(--text-primary); color: var(--text-primary);
transition: all 0.3s ease; transition: background-color 0.5s ease-in-out;
font-family: 'Inter', system-ui, -apple-system, sans-serif; font-family: var(--font-family);
letter-spacing: -0.01em; letter-spacing: -0.02em;
} }
body { body {

View File

@ -105,18 +105,30 @@ function clearRouteAndClose() {
</div> </div>
<div v-else> <div v-else>
<!-- Route selector card (same style as MapView) --> <!-- Quick Select Route Buttons (Nexus Style) -->
<div v-if="routeStore.allRoutes.length > 0" class="route-card" ref="routeCardRef"> <div class="quick-routes-container">
<div
v-for="route in routeStore.allRoutes"
:key="route.id"
class="route-chip-nexus"
:class="{ 'active': route.id === routeStore.selectedRouteId }"
@click="selectRouteAndClose(route.id, route.name)"
>
<span class="material-icons chip-icon">directions_bus</span>
<span class="chip-text">{{ route.name }}</span>
<div v-if="route.id === routeStore.selectedRouteId" class="active-dot"></div>
</div>
</div>
<!-- Route selector card (As backup/dropdown) -->
<div class="route-card" ref="routeCardRef">
<div class="route-card-content" @click.stop="showRouteDropdown = !showRouteDropdown"> <div class="route-card-content" @click.stop="showRouteDropdown = !showRouteDropdown">
<span class="material-icons route-icon">route</span> <span class="material-icons route-icon">search</span>
<div class="route-info"> <div class="route-info">
<div v-if="routeStore.selectedRouteId && routeStore.selectedRouteName" class="route-name"> <div v-if="routeStore.selectedRouteId && routeStore.selectedRouteName" class="route-name">
{{ t('schedules.route') }}: {{ routeStore.selectedRouteName }} {{ routeStore.selectedRouteName }}
</div>
<div v-else class="route-name">{{ t('schedules.selectRoute') }}</div>
<div v-if="routeStore.selectedRouteId && scheduleStore.schedules.length > 0" class="route-stops">
{{ scheduleStore.schedules.length }} {{ t('schedules.schedules') }}
</div> </div>
<div v-else class="route-name">Buscar otra ruta...</div>
</div> </div>
<span class="material-icons arrow-icon" :class="{ 'rotated': showRouteDropdown }"> <span class="material-icons arrow-icon" :class="{ 'rotated': showRouteDropdown }">
keyboard_arrow_down keyboard_arrow_down
@ -134,13 +146,6 @@ function clearRouteAndClose() {
> >
{{ route.name }} {{ route.name }}
</div> </div>
<div
v-if="routeStore.selectedRouteId"
class="route-option clear-option"
@click="clearRouteAndClose"
>
{{ t('common.clearSelection') }}
</div>
</div> </div>
</div> </div>
@ -208,9 +213,72 @@ function clearRouteAndClose() {
text-align: center; text-align: center;
} }
.quick-routes-container {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 12px;
margin-bottom: 24px;
max-width: 800px;
margin-left: auto;
margin-right: auto;
}
.route-chip-nexus {
background: rgba(255, 255, 255, 0.05);
border: 1px solid var(--border-color);
padding: 12px 20px;
border-radius: 16px;
display: flex;
align-items: center;
gap: 10px;
cursor: pointer;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
position: relative;
overflow: hidden;
}
.route-chip-nexus:hover {
background: rgba(254, 231, 21, 0.1);
border-color: var(--active-color);
transform: translateY(-2px);
}
.route-chip-nexus.active {
background: var(--active-color);
border-color: var(--active-color);
color: #101820;
box-shadow: 0 8px 20px rgba(254, 231, 21, 0.3);
}
.chip-icon {
font-size: 20px;
color: var(--active-color);
}
.route-chip-nexus.active .chip-icon {
color: #101820;
}
.chip-text {
font-weight: 800;
font-size: 0.9rem;
letter-spacing: 0.5px;
}
.active-dot {
position: absolute;
top: 6px;
right: 6px;
width: 6px;
height: 6px;
background: #101820;
border-radius: 50%;
}
.route-card { .route-card {
margin-bottom: 2rem; margin-bottom: 2rem;
max-width: 600px; max-width: 400px;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
} }