From 8bf8a7fff00379fb526697699665f057d5b99c43 Mon Sep 17 00:00:00 2001 From: doprz <52579214+doprz@users.noreply.github.com> Date: Wed, 23 Oct 2024 12:38:23 -0500 Subject: [PATCH] feat: add working paths --- src/shared/types/MainCampusBuildings.ts | 1486 +++++++++++++++++++++++ src/views/components/map/CampusMap.tsx | 94 ++ src/views/components/map/Map.tsx | 3 +- src/views/components/map/mapUtils.tsx | 329 +++++ 4 files changed, 1911 insertions(+), 1 deletion(-) create mode 100644 src/shared/types/MainCampusBuildings.ts create mode 100644 src/views/components/map/CampusMap.tsx create mode 100644 src/views/components/map/mapUtils.tsx diff --git a/src/shared/types/MainCampusBuildings.ts b/src/shared/types/MainCampusBuildings.ts new file mode 100644 index 00000000..b8394fca --- /dev/null +++ b/src/shared/types/MainCampusBuildings.ts @@ -0,0 +1,1486 @@ +type None = 'None'; + +type Buildings = { + [key: string]: { + name: string; + number: string; + year: number | None; + zone: number | None | 'LBJ'; + }; +}; + +/** + * An object representing the main campus buildings with their respective details. + */ +export const MainCampusBuildings = { + // Building Code, Building Name, Building Number, Occupied, Zone + ADH: { + name: 'ALMETRIS DUREN RESIDENCE HALL', + number: '0347', + year: 2007, + zone: 2, + }, + AF1: { + name: 'ATHLETIC FIELDS PAVILION (REHAB)', + number: '0438', + year: 2012, + zone: 3, + }, + AF2: { + name: 'ATHLETIC FIELDS PAVILION (EASTSIDE)', + number: '0439', + year: 2012, + zone: 3, + }, + AFP: { + name: 'ATHLETIC FIELDS PAVILION', + number: '0423', + year: 1995, + zone: 3, + }, + AHG: { + name: 'ANNA HISS GYMNASIUM', + number: '0657', + year: 1930, + zone: 1, + }, + ANB: { + name: 'ARNO NOWOTNY BUILDING', + number: '0722', + year: 1859, + zone: 6, + }, + AND: { + name: 'ANDREWS RESIDENCE HALL', + number: '0009', + year: 1936, + zone: 2, + }, + ARC: { + name: 'ANIMAL RESOURCES CENTER', + number: '0135', + year: 1977, + zone: 1, + }, + ART: { + name: 'ART BUILDING AND MUSEUM', + number: '0049', + year: 1962, + zone: 3, + }, + ASE: { + name: 'AEROSPACE ENGINEERING BUILDING', + number: '0983', + year: 2002, + zone: 1, + }, + ATT: { + name: 'AT&T EXECUTIVE EDUC & CONF CENTER', + number: '0027', + year: 2008, + zone: 4, + }, + BAT: { + name: 'BATTS HALL', + number: '0073', + year: 1951, + zone: 4, + }, + BBR: { + name: 'BASKETBALL & ROWING TRAINING FAC', + number: '9717', + year: 2023, + zone: 3, + }, + BEL: { + name: 'L. THEO BELLMONT HALL', + number: '0418', + year: 1972, + zone: 3, + }, + BEN: { + name: 'BENEDICT HALL', + number: '0081', + year: 1951, + zone: 4, + }, + BGH: { + name: 'BIOLOGICAL SCIENCES GREENHOUSES', + number: '0100', + year: 1975, + zone: 1, + }, + BHD: { + name: 'BRACKENRIDGE RESIDENCE HALL', + number: '0105', + year: 1933, + zone: 4, + }, + BIO: { + name: 'BIOLOGICAL LABORATORIES', + number: '0089', + year: 1924, + zone: 1, + }, + BLD: { + name: 'BLANTON RESIDENCE HALL', + number: '0098', + year: 1955, + zone: 2, + }, + BMA: { + name: 'JACK S. BLANTON MUSEUM OF ART', + number: '0114', + year: 2006, + zone: 4, + }, + BME: { + name: 'BIOMEDICAL ENGINEERING BUILDING', + number: '0136', + year: 2008, + zone: 1, + }, + BMK: { + name: 'BLANTON MUSEUM ELLSWORTH KELLY', + number: '0117', + year: 2016, + zone: 4, + }, + BMS: { + name: 'BLANTON MUSEUM SMITH BUILDING', + number: '0115', + year: 2008, + zone: 4, + }, + BOT: { + name: 'BIOLOGICAL GREENHOUSE', + number: '0097', + year: 1926, + zone: 1, + }, + BRB: { + name: 'BERNARD AND AUDRE RAPOPORT BUILDING', + number: '0457', + year: 1941, + zone: 2, + }, + BRG: { + name: 'BRAZOS GARAGE', + number: '0600', + year: 1997, + zone: 4, + }, + BSB: { + name: 'BASKETBALL SUPPORT BLDG (REC SPORT)', + number: '0145', + year: 2000, + zone: 4, + }, + BTL: { + name: 'BATTLE HALL', + number: '0065', + year: 1911, + zone: 2, + }, + BUR: { + name: 'BURDINE HALL', + number: '0099', + year: 1970, + zone: 2, + }, + BWY: { + name: '2616 WICHITA (BRIDGEWAY)', + number: '0435', + year: 1968, + zone: 2, + }, + CAL: { + name: 'CALHOUN HALL', + number: '0954', + year: 1967, + zone: 4, + }, + CBA: { + name: 'COLLEGE OF BUSINESS ADMINISTRATION', + number: '0107', + year: 1962, + zone: 4, + }, + CCG: { + name: 'CONFERENCE CENTER GARAGE', + number: '0028', + year: 2008, + zone: 4, + }, + CCJ: { + name: 'CONNALLY CENTER FOR JUSTICE', + number: '0603', + year: 2000, + zone: 3, + }, + CDA: { + name: 'COMAL CHILD DEVELOPMENT CTR ANNEX', + number: '0167', + year: 1996, + zone: 3, + }, + CDL: { + name: 'COLLECTIONS DEPOSIT LIBRARY', + number: '0162', + year: 1968, + zone: 6, + }, + CEE: { + name: 'CONTINUING ENGINEERING EDUCATION', + number: '0986', + year: 1967, + zone: 1, + }, + CLK: { + name: 'CAVEN CLARK FIELD SUPPORT BUILDING', + number: '0452', + year: 2011, + zone: 4, + }, + CMA: { + name: 'JESSE H. JONES COMM. CTR. (BLDG. A)', + number: '0180', + year: 1973, + zone: 2, + }, + CMB: { + name: 'JESSE H. JONES COMM. CTR. (BLDG. B)', + number: '0182', + year: 1973, + zone: 2, + }, + CML: { + name: 'COMAL ST. CHILD DEVELOPMENT CENTER', + number: '0168', + year: 2005, + zone: 3, + }, + COM: { + name: 'COMPUTATION CENTER', + number: '0178', + year: 1961, + zone: 2, + }, + CPB: { + name: 'COMPACTOR BUILDING', + number: '0630', + year: 1982, + zone: 1, + }, + CPC: { + name: 'CPC FIELD STAFF OFFICE', + number: '9700', + year: 2005, + zone: 3, + }, + CPE: { + name: 'CHEMICAL AND PETROLEUM ENGINEERING', + number: '0231', + year: 1986, + zone: 1, + }, + CRB: { + name: 'COMPUTATIONAL RESOURCE BUILDING', + number: '0160', + year: 1973, + zone: 3, + }, + CRD: { + name: 'CAROTHERS RESIDENCE HALL', + number: '0129', + year: 1937, + zone: 2, + }, + CRH: { + name: 'CREEKSIDE RESIDENCE HALL', + number: '0562', + year: 1955, + zone: 2, + }, + CS3: { + name: 'CENTRAL CHILLING STATION NO. 3', + number: '0138', + year: 1970, + zone: 4, + }, + CS4: { + name: 'CENTRAL CHILLING STATION NO. 4', + number: '0140', + year: 1971, + zone: 3, + }, + CS5: { + name: 'CENTRAL CHILLING STATION NO. 5', + number: '0141', + year: 1986, + zone: 1, + }, + CS6: { + name: 'CENTRAL CHILLING STATION NO. 6', + number: '0142', + year: 2009, + zone: 2, + }, + CS7: { + name: 'CENTRAL CHILLING STATION NO. 7', + number: '0143', + year: 2014, + zone: 3, + }, + CSS: { + name: 'CAROTHERS DORM SUBSTATION', + number: '0608', + year: 2011, + zone: 2, + }, + CT1: { + name: 'COOLING TOWER 1', + number: '0487', + year: 2009, + zone: 2, + }, + CT2: { + name: 'UTM COOLING TOWER 2', + number: '0486', + year: 2017, + zone: 2, + }, + CT7: { + name: 'UTM COOLING TOWER 7', + number: '0144', + year: 2014, + zone: 3, + }, + D21: { + name: 'DOBIE TWENTY21', + number: '0003', + year: 2021, + zone: 4, + }, + DCG: { + name: 'DOBIE CENTER GARAGE', + number: '0004', + year: 2021, + zone: NaN, + }, + DEV: { + name: 'DEVELOPMENT OFFICE BUILDING', + number: '9008', + year: 1988, + zone: 3, + }, + DFA: { + name: 'E. WILLIAM DOTY FINE ARTS BUILDING', + number: '0130', + year: 1979, + zone: 3, + }, + DFF: { + name: 'UFCU DISCH-FALK FIELD', + number: '9822', + year: 1975, + zone: 3, + }, + DMC: { + name: 'G. B. DEALEY CENTER FOR NEW MEDIA', + number: '0185', + year: 2009, + zone: 2, + }, + DPI: { + name: 'DELL PEDIATRIC RESEARCH INSTITUTE', + number: '3355', + year: 2009, + zone: 6, + }, + DTB: { + name: 'DINOSAUR TRACKWAY BLDG.', + number: '0594', + year: 1980, + zone: 3, + }, + E11: { + name: 'EQUIPMENT STOREHOUSE # 11', + number: '0691', + year: 1980, + zone: 3, + }, + E13: { + name: 'EQUIPMENT STOREHOUSE # 13', + number: '0693', + year: 1980, + zone: 3, + }, + E15: { + name: 'EQUIPMENT STOREHOUSE # 15', + number: '0695', + year: 1980, + zone: 3, + }, + E23: { + name: 'EQUIPMENT STOREHOUSE # 23', + number: 'E023', + year: 1955, + zone: 2, + }, + E24: { + name: 'EQUIPMENT STOREHOUSE # 24', + number: 'E024', + year: 2005, + zone: 3, + }, + E25: { + name: 'EQUIPMENT STOREHOUSE # 25', + number: 'E025', + year: 2015, + zone: 3, + }, + E26: { + name: 'EQUIPMENT STOREHOUSE #26', + number: '0563', + year: 1982, + zone: 1, + }, + E27: { + name: 'EQUIPMENT STOREHOUSE #27', + number: '0684', + year: 2023, + zone: 1, + }, + ECG: { + name: 'EAST CAMPUS GARAGE', + number: '9820', + year: 2017, + zone: 3, + }, + ECJ: { + name: 'ERNEST COCKRELL JR. HALL', + number: '0227', + year: 1974, + zone: 2, + }, + EER: { + name: 'ENGR EDUCATION AND RESEARCH CENTER', + number: '0223', + year: 2017, + zone: 1, + }, + EHZ: { + name: 'ETC HAZ-MAT STORAGE BUILDING', + number: '0232', + year: 2004, + zone: 1, + }, + EPS: { + name: 'E.P. SCHOCH BUILDING', + number: '0153', + year: 1941, + zone: 2, + }, + ETC: { + name: 'ENGINEERING TEACHING CENTER II', + number: '0230', + year: 1983, + zone: 1, + }, + F8A: { + name: 'FC8 CHEMICAL STORAGE BUILDING', + number: '0568', + year: 2020, + zone: 3, + }, + FAC: { + name: 'PETER T. FLAWN ACADEMIC CENTER', + number: '0605', + year: 1962, + zone: 2, + }, + FC1: { + name: 'FACILITIES COMPLEX BLDG. 1', + number: '0550', + year: 1988, + zone: 3, + }, + FC2: { + name: 'FACILITIES COMPLEX BLDG. 2', + number: '0565', + year: 1988, + zone: 3, + }, + FC3: { + name: 'FACILITIES COMPLEX BLDG. 3', + number: '0552', + year: 1988, + zone: 3, + }, + FC4: { + name: 'FACILITIES COMPLEX BLDG. 4', + number: '0558', + year: 1988, + zone: 3, + }, + FC5: { + name: 'FACILITIES COMPLEX BLDG. 5', + number: '0560', + year: 1988, + zone: 3, + }, + FC6: { + name: 'FACILITIES COMPLEX BLDG. 6', + number: '0564', + year: 1988, + zone: 3, + }, + FC7: { + name: 'FACILITIES COMPLEX BLDG. 7', + number: '0553', + year: 1983, + zone: 3, + }, + FC8: { + name: 'FACILITIES COMPLEX BLDG. 8', + number: '0566', + year: 1988, + zone: 3, + }, + FC9: { + name: 'CUSTODIAL SERVICES TRAINING FAC', + number: '0554', + year: 2012, + zone: 3, + }, + FCS: { + name: 'FOUNTAIN CONTROL STRUCTURE', + number: '0571', + year: 1968, + zone: 4, + }, + FDG: { + name: 'J. FRANK DOBIE GARAGE', + number: '0610', + year: 1995, + zone: 3, + }, + FDH: { + name: 'J. FRANK DOBIE HOUSE', + number: '0606', + year: 1995, + zone: 3, + }, + FNT: { + name: 'LARRY R. FAULKNER NANO SCI AND TECH', + number: '0242', + year: 2006, + zone: 1, + }, + FSB: { + name: 'FLAMMABLE STORAGE BUILDING', + number: '0234', + year: 2012, + zone: 1, + }, + G17: { + name: 'TRAFFIC KIOSK - 214 1/2 W 24TH ST', + number: 'PK17', + year: 2019, + zone: 2, + }, + GAR: { + name: 'GARRISON HALL', + number: '0249', + year: 1926, + zone: 2, + }, + GDC: { + name: 'GATES DELL COMPLEX', + number: '0152', + year: 2010, + zone: 1, + }, + GEA: { + name: 'MARY E. GEARING HALL', + number: '0305', + year: 1932, + zone: 2, + }, + GEB: { + name: 'DOROTHY L. GEBAUER BUILDING', + number: '0569', + year: 1904, + zone: 2, + }, + GHA: { + name: 'GRADUATE HOUSING, UNIT A', + number: '0586', + year: NaN, + zone: NaN, + }, + GHB: { + name: 'GRADUATE HOUSING, UNIT B', + number: '0587', + year: NaN, + zone: NaN, + }, + GHC: { + name: 'GRADUATE HOUSING, UNIT C', + number: '0588', + year: NaN, + zone: NaN, + }, + GHD: { + name: 'GRADUATE HOUSING, UNIT D', + number: '0589', + year: NaN, + zone: NaN, + }, + GHE: { + name: 'GRADUATE HOUSING, UNIT E', + number: '0590', + year: NaN, + zone: NaN, + }, + GHF: { + name: 'GRADUATE HOUSING, UNIT F', + number: '0591', + year: NaN, + zone: NaN, + }, + GLT: { + name: 'GARY L THOMAS ENERGY ENGR BLDG', + number: '0222', + year: 2021, + zone: 1, + }, + GOL: { + name: 'GOLDSMITH HALL', + number: '0017', + year: 1932, + zone: 2, + }, + GRC: { + name: 'GREGORY AQUATIC POOL CONTROL BLDG.', + number: '0275', + year: 2005, + zone: 4, + }, + GRE: { + name: 'GREGORY GYMNASIUM', + number: '0273', + year: 1930, + zone: 4, + }, + GRF: { + name: 'GREGORY AQUATIC FOOD SERVICE BLDG.', + number: '0274', + year: 2005, + zone: 4, + }, + GRP: { + name: 'GREGORY AQUATIC POOL EQUIP. BLDG.', + number: '0277', + year: 2005, + zone: 4, + }, + GRS: { + name: 'GREGORY AQUATIC POOL STORAGE BLDG.', + number: '0276', + year: 2005, + zone: 4, + }, + GSB: { + name: 'GRADUATE SCHOOL OF BUSINESS BLDG.', + number: '0106', + year: 1975, + zone: 4, + }, + GSM: { + name: 'GRADUATE HOUSING, MAINTENANCE BLDG', + number: '0592', + year: NaN, + zone: NaN, + }, + GUG: { + name: 'GUADALUPE GARAGE', + number: '0031', + year: 2006, + zone: 3, + }, + GWB: { + name: 'GORDON-WHITE BUILDING', + number: '0645', + year: 1951, + zone: 2, + }, + HCG: { + name: 'HEALTH CENTER GARAGE', + number: '0703', + year: 2016, + zone: 6, + }, + HDB: { + name: 'HEALTH DISCOVERY BUILDING', + number: '0700', + year: 2016, + zone: 6, + }, + HLB: { + name: 'HEALTH LEARNING BUILDING', + number: '0702', + year: 2016, + zone: 6, + }, + HMA: { + name: 'HOGG MEMORIAL AUDITORIUM', + number: '0297', + year: 1933, + zone: 2, + }, + HRC: { + name: 'HARRY RANSOM CENTER', + number: '0310', + year: 1972, + zone: 4, + }, + HRH: { + name: 'RAINEY HALL', + number: '0433', + year: 1941, + zone: 4, + }, + HSM: { + name: 'WILLIAM RANDOLPH HEARST BLDG', + number: '0183', + year: 1973, + zone: 2, + }, + HTB: { + name: 'HEALTH TRANSFORMATION BUILDING', + number: '0701', + year: 2016, + zone: 6, + }, + IC2: { + name: '2815 SAN GABRIEL (IC2 INSTITUTE)', + number: '9021', + year: 1983, + zone: 3, + }, + ICB: { + name: 'INTRAMURAL CONTROL BLDG.', + number: '0446', + year: 1982, + zone: 3, + }, + IMA: { + name: 'INTRAMURAL MAINT BLDG A', + number: '0443', + year: 1967, + zone: 3, + }, + IMB: { + name: 'INTRAMURAL MAINT BLDG B', + number: '0444', + year: 1967, + zone: 3, + }, + IPF: { + name: 'INDOOR PRACTICE FACILITY', + number: '9714', + year: 2002, + zone: 3, + }, + JCD: { + name: 'JESTER RESIDENCE HALL', + number: '0599', + year: 1969, + zone: 4, + }, + JES: { + name: 'BEAUFORD H. JESTER CENTER', + number: '0598', + year: 1969, + zone: 4, + }, + JGB: { + name: 'JACKSON GEOLOGICAL SCIENCES BLDG.', + number: '0950', + year: 1967, + zone: 2, + }, + JHH: { + name: 'JOHN W. HARGIS HALL', + number: '0737', + year: 1888, + zone: 6, + }, + JON: { + name: 'JESSE H. JONES HALL', + number: '0602', + year: 1976, + zone: 3, + }, + KIN: { + name: 'KINSOLVING RESIDENCE HALL', + number: '0346', + year: 1958, + zone: 2, + }, + LAC: { + name: 'LAKE AUSTIN CENTRE', + number: '0738', + year: 1993, + zone: 3, + }, + LBJ: { + name: 'LYNDON B JOHNSON LIBRARY', + number: '0113', + year: 1971, + zone: 'LBJ', + }, + LCH: { + name: 'LITTLEFIELD CARRIAGE HOUSE', + number: '0521', + year: 1939, + zone: 2, + }, + LDH: { + name: 'LONGHORN DINING FACILITY', + number: '0597', + year: 1971, + zone: 4, + }, + LFH: { + name: 'LITTLEFIELD HOME', + number: '0377', + year: 1894, + zone: 2, + }, + LLA: { + name: 'LIVING LEARNING HALL A', + number: '0669', + year: 1969, + zone: 2, + }, + LLB: { + name: 'LIVING LEARNING HALL B', + number: '0670', + year: 1969, + zone: 2, + }, + LLC: { + name: 'LIVING LEARNING HALL C', + number: '0671', + year: 1969, + zone: 2, + }, + LLD: { + name: 'LIVING LEARNING HALL D', + number: '0666', + year: 1953, + zone: 2, + }, + LLE: { + name: 'LIVING LEARNING HALL E', + number: '0667', + year: 1953, + zone: 2, + }, + LLF: { + name: 'LIVING LEARNING HALL F', + number: '0668', + year: 1953, + zone: 2, + }, + LNA: { + name: 'LEONA ST. CHILD DEVELOPMENT CENTER', + number: '0170', + year: 2023, + zone: NaN, + }, + LS1: { + name: 'LANDSCAPE SERVICES STORAGE BLDG.', + number: '0632', + year: 1980, + zone: 1, + }, + LTD: { + name: 'LITTLEFIELD RESIDENCE HALL', + number: '0369', + year: 1927, + zone: 2, + }, + LTH: { + name: 'LABORATORY THEATER BLDG.', + number: '0665', + year: 1959, + zone: 2, + }, + MAG: { + name: 'MANOR GARAGE', + number: '0415', + year: 1998, + zone: 3, + }, + MAI: { + name: 'MAIN BUILDING', + number: '0393', + year: 1932, + zone: 2, + }, + MBB: { + name: 'MOFFETT MOLECULAR BIOLOGY BLDG.', + number: '0740', + year: 1997, + zone: 1, + }, + MCA: { + name: 'MOODY CENTER', + number: '9713', + year: 2022, + zone: 'None', + }, + MEZ: { + name: 'MEZES HALL', + number: '0425', + year: 1951, + zone: 4, + }, + MFH: { + name: 'RICHARD MITHOFF TRK/SCR FIELDHOUSE', + number: '0416', + year: 1999, + zone: 3, + }, + MHD: { + name: 'MOORE-HILL RESIDENCE HALL', + number: '0427', + year: 1956, + zone: 4, + }, + MMS: { + name: 'MIKE A.MYERS TRACK & SOCCER STADIUM', + number: '9712', + year: 1999, + zone: 3, + }, + MNC: { + name: 'MONCRIEF-NEUHAUS ATHLETIC CENTER', + number: '0421', + year: 1986, + zone: 3, + }, + MRH: { + name: 'MUSIC BUILDING & RECITAL HALL', + number: '0131', + year: 1969, + zone: 3, + }, + MSB: { + name: '2207 COMAL (MAIL SERVICE BUILDING)', + number: '0163', + year: 1989, + zone: 3, + }, + MTC: { + name: 'MATERIAL TRANSFER CENTER', + number: '0235', + year: 2015, + zone: 3, + }, + N24: { + name: '2400 NUECES', + number: '9001', + year: 2013, + zone: 2, + }, + NEZ: { + name: 'NORTH END ZONE BUILDING', + number: '9716', + year: 2008, + zone: 3, + }, + NHB: { + name: 'NORMAN HACKERMAN BUILDING', + number: '0470', + year: 2008, + zone: 1, + }, + NMS: { + name: 'NEURAL AND MOLECULAR SCIENCE BLDG.', + number: '0741', + year: 2005, + zone: 1, + }, + NUG: { + name: 'NUECES GARAGE', + number: '9091', + year: 2019, + zone: 2, + }, + NUR: { + name: 'NURSING SCHOOL', + number: '8008', + year: 1973, + zone: 6, + }, + PA1: { + name: 'POWER PLANT ANNEX STOREHOUSE # 1', + number: '0493', + year: 1970, + zone: 2, + }, + PA3: { + name: 'POWER PLANT ANNEX STOREHOUSE #3-WD', + number: '0501', + year: 1988, + zone: 2, + }, + PA4: { + name: 'POWER PLANT ANNEX STOREHOUSE #4-MET', + number: '0494', + year: 1981, + zone: 2, + }, + PAC: { + name: 'PERFORMING ARTS CENTER', + number: '0132', + year: 1980, + zone: 3, + }, + PAI: { + name: 'T.S. PAINTER HALL', + number: '0473', + year: 1933, + zone: 1, + }, + PAR: { + name: 'PARLIN HALL', + number: '0233', + year: 1955, + zone: 4, + }, + PAT: { + name: 'J.T. PATTERSON LABS.BLDG.', + number: '0952', + year: 1967, + zone: 1, + }, + PB2: { + name: 'POWER PLANT AUX. BLDG.# 2', + number: '0492', + year: 1966, + zone: 2, + }, + PB5: { + name: 'POWER PLANT AUX. BLDG.# 5', + number: '0495', + year: 1976, + zone: 2, + }, + PB6: { + name: 'POWER PLANT AUX. BLDG.# 6', + number: '0496', + year: 1976, + zone: 2, + }, + PCL: { + name: 'PERRY-CASTANEDA LIBRARY', + number: '0559', + year: 1977, + zone: 4, + }, + PH1: { + name: 'ATHLETIC FIELDS PUMP HOUSE (NORTH)', + number: '0440', + year: 1995, + zone: 3, + }, + PH2: { + name: 'ATHLETIC FIELDS PUMP HOUSE (SOUTH)', + number: '0441', + year: 1995, + zone: 3, + }, + PHD: { + name: 'PRATHER RESIDENCE HALL', + number: '0497', + year: 1937, + zone: 4, + }, + PHR: { + name: 'PHARMACY BUILDING', + number: '0465', + year: 1951, + zone: 1, + }, + PMA: { + name: 'PHYSICS, MATH, & ASTRONOMY BUILDING', + number: '0116', + year: 1972, + zone: 2, + }, + POB: { + name: "PETER O'DONNELL JR. BUILDING", + number: '0224', + year: 2000, + zone: 1, + }, + PPA: { + name: 'HAL C. WEAVER POWER PLANT ANNEX', + number: '0490', + year: 1968, + zone: 2, + }, + PPE: { + name: 'HAL C WEAVER POWER PLANT EXPANSION', + number: '0448', + year: 1988, + zone: 2, + }, + PPL: { + name: 'HAL C. WEAVER POWER PLANT', + number: '0489', + year: 1927, + zone: 2, + }, + PRH: { + name: 'DOBIE PAISANO RANCH HOUSE', + number: '0979', + year: 1966, + zone: 3, + }, + RHD: { + name: 'ROBERTS RESIDENCE HALL', + number: '0537', + year: 1936, + zone: 4, + }, + RHG: { + name: 'ROWLING HALL GARAGE', + number: '0111', + year: 2017, + zone: 4, + }, + RLP: { + name: 'PATTON HALL', + number: '0540', + year: 2012, + zone: 4, + }, + RRH: { + name: 'ROBERT B. ROWLING HALL', + number: '0108', + year: 2017, + zone: 4, + }, + RSC: { + name: 'RECREATIONAL SPORTS CENTER', + number: '0422', + year: 1990, + zone: 4, + }, + SAG: { + name: 'SAN ANTONIO GARAGE', + number: '0739', + year: 1994, + zone: 2, + }, + SBS: { + name: 'RED AND CHARLINE MCCOMBS FIELD', + number: '9832', + year: 1997, + zone: 3, + }, + SEA: { + name: 'SARAH M. & CHARLES E. SEAY BUILDING', + number: '0985', + year: 2002, + zone: 2, + }, + SEZ: { + name: 'SOUTH END ZONE', + number: '9715', + year: 2021, + zone: 3, + }, + SJG: { + name: 'SAN JACINTO GARAGE', + number: '0551', + year: 1986, + zone: 3, + }, + SJH: { + name: 'SAN JACINTO RESIDENCE HALL', + number: '0502', + year: 2000, + zone: 4, + }, + SMC: { + name: 'DELL SETON MEDICAL CENTER AT UT', + number: '0704', + year: 2017, + zone: 'None', + }, + SOF: { + name: 'TELECOMM.SVC.SATELLITE OPS FACILITY', + number: '0638', + year: 1995, + zone: 3, + }, + SRH: { + name: 'SID RICHARDSON HALL', + number: '0118', + year: 1970, + zone: 3, + }, + SSB: { + name: 'STUDENT SERVICES BUILDING', + number: '0980', + year: 1997, + zone: 2, + }, + SSW: { + name: 'SCHOOL OF SOCIAL WORK BUILDING', + number: '0625', + year: 1933, + zone: 3, + }, + STD: { + name: 'DARRELL K ROYAL TX MEMORIAL STADIUM', + number: '9710', + year: 1988, + zone: 3, + }, + SUT: { + name: 'SUTTON HALL', + number: '0585', + year: 1917, + zone: 4, + }, + SW7: { + name: '2617 SPEEDWAY (OFC.BLDG.)', + number: '0988', + year: 1966, + zone: 1, + }, + SWG: { + name: 'SPEEDWAY GARAGE', + number: '0982', + year: 2000, + zone: 1, + }, + SZB: { + name: 'GEORGE I. SANCHEZ BUILDING', + number: '0025', + year: 1975, + zone: 4, + }, + TCC: { + name: 'JOE C THOMPSON CONFERENCE CENTER', + number: '0119', + year: 1970, + zone: 3, + }, + TCP: { + name: 'TEXAS COWBOYS PAVILION', + number: '0994', + year: 2004, + zone: 4, + }, + TLB: { + name: 'TEXAS LONGHORNS BOATHOUSE', + number: '2230', + year: 1999, + zone: 3, + }, + TMM: { + name: 'TEXAS MEMORIAL MUSEUM', + number: '0593', + year: 1937, + zone: 3, + }, + TNH: { + name: 'TOWNES HALL', + number: '0601', + year: 1952, + zone: 3, + }, + TRG: { + name: 'TRINITY GARAGE', + number: '0424', + year: 2002, + zone: 6, + }, + TS1: { + name: 'THERMAL ENERGY STORAGE', + number: '0503', + year: 2011, + zone: 3, + }, + TS2: { + name: 'UTM THERMAL STORAGE 2', + number: '0146', + year: 2014, + zone: 3, + }, + TSB: { + name: 'TENNIS SUPPORT BUILDING', + number: '0445', + year: 1976, + zone: 3, + }, + TSC: { + name: 'LEE & JOE JAMAIL TEXAS SWIMMING CTR', + number: '0419', + year: 1977, + zone: 3, + }, + TSG: { + name: '27TH STREET GARAGE', + number: '0981', + year: 1999, + zone: 2, + }, + TSP: { + name: 'TEXAS SWIMMING CENTER PUMP HOUSE', + number: '0414', + year: 2020, + zone: 3, + }, + TTC: { + name: 'TEXAS TENNIS CENTER', + number: '9825', + year: 2018, + zone: 3, + }, + UA9: { + name: '2609 UNIVERSITY AVENUE', + number: '0984', + year: 1968, + zone: 2, + }, + UIL: { + name: 'UNIV. INTERSCHOLASTIC LEAGUE BLDG.', + number: '0164', + year: 1998, + zone: 3, + }, + UNB: { + name: 'UNION BUILDING', + number: '0609', + year: 1933, + zone: 2, + }, + UPB: { + name: 'UNIVERSITY POLICE BUILDING', + number: '0634', + year: 1960, + zone: 3, + }, + UTA: { + name: 'UT ADMINISTRATION BUILDING', + number: '0030', + year: 2007, + zone: 3, + }, + UTC: { + name: 'UNIVERSITY TEACHING CENTER', + number: '0500', + year: 1984, + zone: 4, + }, + UTX: { + name: 'ETTER-HARBIN ALUMNI CENTER', + number: '0990', + year: 1964, + zone: 4, + }, + VRX: { + name: 'KVRX TRANSMITTER TWR & CNTRL BLDG', + number: '0184', + year: 1994, + zone: 3, + }, + WAG: { + name: 'WAGGENER HALL', + number: '0649', + year: 1931, + zone: 2, + }, + WAT: { + name: 'ARTHUR P. WATSON HOUSE', + number: '0165', + year: 1993, + zone: 6, + }, + WCH: { + name: 'WILL C. HOGG BLDG.', + number: '0257', + year: 1932, + zone: 2, + }, + WCP: { + name: 'WILLIAM C. POWERS, JR. SAC', + number: '0278', + year: 2010, + zone: 4, + }, + WCS: { + name: 'WALLER CREEK CONTROL STATION', + number: '0614', + year: 1980, + zone: 2, + }, + WEL: { + name: 'ROBERT A. WELCH HALL', + number: '0161', + year: 1930, + zone: 1, + }, + WGB: { + name: 'WHITAKER GATEWAY BUILDING', + number: '0447', + year: 2017, + zone: 3, + }, + WIN: { + name: 'F.L. WINSHIP DRAMA BLDG.', + number: '0201', + year: 1961, + zone: 2, + }, + WMB: { + name: 'WEST MALL OFFICE BLDG.', + number: '0652', + year: 1962, + zone: 2, + }, + WWH: { + name: 'WALTER WEBB HALL', + number: '0040', + year: 1973, + zone: 2, + }, + Z02: { + name: '2007 GUADALUPE', + number: '9012', + year: 2018, + zone: 'None', + }, + Z18: { + name: '1504 E MLK JR BLVD', + number: '9096', + year: 'None', + zone: 'None', + }, +} as const satisfies Buildings; + +/** + * Represents the type for the keys of the `MainCampusBuildings` object. + */ +export type MainCampusBuildingsCode = keyof typeof MainCampusBuildings; diff --git a/src/views/components/map/CampusMap.tsx b/src/views/components/map/CampusMap.tsx new file mode 100644 index 00000000..77d9fc33 --- /dev/null +++ b/src/views/components/map/CampusMap.tsx @@ -0,0 +1,94 @@ +import React, { useState } from 'react'; + +import { generateAllBuildingPaths, graphNodes, PathSegment } from './mapUtils'; + +const UTMapURL = new URL('/src/assets/UT-Map.png', import.meta.url).href; + +/** + * CampusMap component renders an interactive map of the UT campus. + * + * The map includes: + * - An image of the campus map. + * - An SVG overlay to draw paths and nodes. + * - Building selection controls to highlight specific paths. + */ +export default function CampusMap() { + const [highlightedPath, setHighlightedPath] = useState([]); + + return ( +
+ {/* Map Image: 784x754 */} + UT Campus Map + + {/* SVG Overlay */} + + {/* Draw all building-to-building paths */} + {generateAllBuildingPaths().map(path => ( + + {path.points.slice(0, -1).map((startNode, index) => ( + + ))} + + ))} + + {/* Draw nodes */} + {Object.entries(graphNodes).map(([id, node]) => ( + + + + {/* Only label buildings */} + {node.type === 'building' && ( + + {id} + + )} + + ))} + + + {/* Building Selection Controls */} +
+
+
+
+ Buildings +
+
+
+ Path Intersections +
+
+
+ Walking Paths +
+
+ +
+

Building Paths:

+ {generateAllBuildingPaths().map(path => ( + + ))} +
+
+
+ ); +} diff --git a/src/views/components/map/Map.tsx b/src/views/components/map/Map.tsx index 0654d757..1547a450 100644 --- a/src/views/components/map/Map.tsx +++ b/src/views/components/map/Map.tsx @@ -11,6 +11,7 @@ import CalendarFooter from '../calendar/CalendarFooter'; import { CalendarSchedules } from '../calendar/CalendarSchedules'; import ImportantLinks from '../calendar/ImportantLinks'; import TeamLinks from '../calendar/TeamLinks'; +import CampusMap from './CampusMap'; const manifest = chrome.runtime.getManifest(); const LDIconURL = new URL('/src/assets/LD-icon.png', import.meta.url).href; @@ -52,7 +53,7 @@ export default function Map(): JSX.Element {
- LD Icon +
diff --git a/src/views/components/map/mapUtils.tsx b/src/views/components/map/mapUtils.tsx new file mode 100644 index 00000000..7d063535 --- /dev/null +++ b/src/views/components/map/mapUtils.tsx @@ -0,0 +1,329 @@ +import type { MainCampusBuildingsCode } from '@shared/types/MainCampusBuildings'; +import React from 'react'; + +// Type definitions +type NodeType = 'building' | 'intersection'; + +interface Node { + x: number; + y: number; + // connections: string[]; + type: NodeType; +} + +interface GraphNodes { + [key: string]: Node; +} + +interface Path { + id: string; + points: string[]; // Array of node IDs representing the path +} + +// Helper functions for path finding +export const findNearestIntersection = (buildingId: string, graph: GraphNodes): string => { + const building = graph[buildingId]; + let nearestIntersection = ''; + let shortestDistance = Infinity; + + Object.entries(graph).forEach(([nodeId, node]) => { + if (node.type === 'intersection' && building) { + const distance = Math.sqrt((node.x - building.x) ** 2 + (node.y - building.y) ** 2); + if (distance < shortestDistance) { + shortestDistance = distance; + nearestIntersection = nodeId; + } + } + }); + + return nearestIntersection; +}; + +// Get all buildings from the graph +export const getAllBuildings = (graph: GraphNodes): string[] => + Object.entries(graph) + .filter(([_key, node]) => node.type === 'building') + .map(([id]) => id); + +// Generate all possible building-to-building paths +export const generateAllBuildingPaths = (): Path[] => { + const buildings = getAllBuildings(graphNodes); + const paths: Path[] = []; + + for (let i = 0; i < buildings.length; i++) { + for (let j = i + 1; j < buildings.length; j++) { + const building1 = buildings[i]; + const building2 = buildings[j]; + + if (building1 && building2) { + // Get nearest intersections for both buildings + const int1 = findNearestIntersection(building1, graphNodes); + const int2 = findNearestIntersection(building2, graphNodes); + + paths.push({ + id: `${building1}-${building2}`, + points: [building1, int1, int2, building2], + }); + } + } + } + + return paths; +}; + +// Draw a single path segment +export const PathSegment = ({ + start, + end, + isHighlighted, +}: { + start: string; + end: string; + isHighlighted?: boolean; +}): JSX.Element | null => { + const startNode = graphNodes[start]; + const endNode = graphNodes[end]; + + if (!startNode || !endNode) return null; + + return ( + + ); +}; + +export const graphNodes: GraphNodes = { + // Building nodes + GDC: { + x: 257, + y: 283, + type: 'building', + }, + PCL: { + x: 222, + y: 430, + type: 'building', + }, + JES: { + x: 260, + y: 420, + type: 'building', + }, + GRE: { + x: 260, + y: 375, + type: 'building', + }, + MAI: { + x: 167, + y: 310, + type: 'building', + }, + WEL: { + x: 216, + y: 268, + type: 'building', + }, + BEL: { + x: 365, + y: 377, + type: 'building', + }, + WCP: { + x: 260, + y: 343, + type: 'building', + }, + RLP: { + x: 300, + y: 335, + type: 'building', + }, + UTC: { + x: 197, + y: 410, + type: 'building', + }, + CBA: { + x: 232, + y: 363, + type: 'building', + }, + GSB: { + x: 208, + y: 382, + type: 'building', + }, + PMA: { + x: 255, + y: 185, + type: 'building', + }, + PAT: { + x: 258, + y: 222, + type: 'building', + }, + EER: { + x: 289, + y: 208, + type: 'building', + }, + ECJ: { + x: 289, + y: 280, + type: 'building', + }, + UNB: { + x: 105, + y: 288, + type: 'building', + }, + FAC: { + x: 133, + y: 298, + type: 'building', + }, + HRC: { + x: 112, + y: 380, + type: 'building', + }, + COM: { + x: 195, + y: 318, + type: 'building', + }, + + // Intersection nodes + 'speedway-24th': { + x: 241, + y: 250, + type: 'intersection', + }, + 'speedway-21st': { + x: 241, + y: 400, + type: 'intersection', + }, + 'speedway-e-mai-stairs': { + x: 241, + y: 315, + type: 'intersection', + }, + 'speedway-w-eer': { + x: 241, + y: 208, + type: 'intersection', + }, + 'guad-24th': { + x: 89, + y: 250, + type: 'intersection', + }, + 'guad-21st': { + x: 89, + y: 400, + type: 'intersection', + }, + 'guad-icd': { + x: 89, + y: 353, + type: 'intersection', + }, + 'uni-ave-21st': { + x: 166, + y: 400, + type: 'intersection', + }, + 'wichita-21st': { + x: 187, + y: 400, + type: 'intersection', + }, + 'n-mai-24th': { + x: 167, + y: 250, + type: 'intersection', + }, + 's-mai-stairs': { + x: 167, + y: 347, + type: 'intersection', + }, + 'e-mai-stairs': { + x: 215, + y: 315, + type: 'intersection', + }, + 'guad-w-mai': { + x: 89, + y: 317, + type: 'intersection', + }, + 'n-mai-turtle-pond': { + x: 167, + y: 282, + type: 'intersection', + }, + 'icd-ne': { + x: 207, + y: 289, + type: 'intersection', + }, + 'icd-nne': { + x: 190, + y: 282, + type: 'intersection', + }, + 'icd-se': { + x: 212, + y: 338, + type: 'intersection', + }, + 'icd-sse': { + x: 190, + y: 347, + type: 'intersection', + }, + 'san-jac-21th': { + x: 354, + y: 400, + type: 'intersection', + }, + 'san-jac-24th': { + x: 357, + y: 250, + type: 'intersection', + }, + 'san-jac-23rd': { + x: 358, + y: 318, + type: 'intersection', + }, + 'mlk-jr-statue': { + x: 280, + y: 318, + type: 'intersection', + }, + 'pcl-nw-21st-walkway': { + x: 208, + y: 400, + type: 'intersection', + }, + 'pcl-w-speedway': { + x: 241, + y: 425, + type: 'intersection', + }, +};