const { ref, onBeforeUnmount } = Vue const app = Vue.createApp({ data: function() { return { isOutMapChecked: this.initIsOutMapChecked(), isOutCompassChecked: this.initIsOutCompassChecked(), isCompassFollowChecked: this.initIsCompassFollowChecked(), isMapNotifChecked: this.initIsMapNotifChecked(), isLowFuelChecked: this.initIsLowFuelChecked(), isCinematicNotifChecked: this.initIsCinematicNotifChecked(), isDynamicHealthChecked: this.initIsDynamicHealthChecked(), isDynamicArmorChecked: this.initIsDynamicArmorChecked(), isDynamicHungerChecked: this.initIsDynamicHungerChecked(), isDynamicThirstChecked: this.initIsDynamicThirstChecked(), isDynamicStressChecked: this.initIsDynamicStressChecked(), isDynamicOxygenChecked: this.initIsDynamicOxygenChecked(), isChangeFPSChecked: this.initIsChangeFPSChecked(), isToggleMapShapeChecked: this.initIsToggleMapShapeChecked(), isHideMapChecked: this.initIsHideMapChecked(), isToggleMapBordersChecked: this.initIsToggleMapBordersChecked(), isDynamicEngineChecked: this.initIsDynamicEngineChecked(), isDynamicNitroChecked: this.initIsDynamicNitroChecked(), isChangeCompassFPSChecked: this.initIsChangeCompassFPSChecked(), isShowCompassChecked: this.initIsShowCompassChecked(), isShowStreetsChecked: this.initIsShowStreetsChecked(), isPointerShowChecked: this.initIsPointerShowChecked(), isDegreesShowChecked: this.initIsDegreesShowChecked(), isCineamticModeChecked: this.initIsCineamticModeChecked(), }; }, setup () { const progress = ref([ { loading: false, percentage: 0 }, { loading: false, percentage: 0 }, { loading: false, percentage: 0 } ]) const intervals = [ null, null, null ] function startComputing (id) { progress.value[ id ].loading = true progress.value[ id ].percentage = 0 intervals[ id ] = setInterval(() => { progress.value[ id ].percentage += Math.floor(Math.random() * 8 + 10) if (progress.value[ id ].percentage >= 100) { clearInterval(intervals[ id ]) progress.value[ id ].loading = false } }, 700) } onBeforeUnmount(() => { intervals.forEach(val => { clearInterval(val) }) }) return { framework: { plugins: [ 'LocalStorage', 'SessionStorage' ] }, tab: ref('hud'), splitterModel: ref(20), selection: ref([]), progress, startComputing, } }, watch: { isOutMapChecked: function() { localStorage.setItem("isOutMapChecked", this.isOutMapChecked); }, isOutCompassChecked: function() { localStorage.setItem("isOutCompassChecked", this.isOutCompassChecked); }, isCompassFollowChecked: function() { localStorage.setItem("isCompassFollowChecked", this.isCompassFollowChecked); }, isMapNotifChecked: function() { localStorage.setItem("isMapNotifChecked", this.isMapNotifChecked); }, isLowFuelChecked: function() { localStorage.setItem("isLowFuelChecked", this.isLowFuelChecked); }, isCinematicNotifChecked: function() { localStorage.setItem("isCinematicNotifChecked", this.isCinematicNotifChecked); }, isDynamicHealthChecked: function() { localStorage.setItem("isDynamicHealthChecked", this.isDynamicHealthChecked); }, isDynamicArmorChecked: function() { localStorage.setItem("isDynamicArmorChecked", this.isDynamicArmorChecked); }, isDynamicHungerChecked: function() { localStorage.setItem("isDynamicHungerChecked", this.isDynamicHungerChecked); }, isDynamicThirstChecked: function() { localStorage.setItem("isDynamicThirstChecked", this.isDynamicThirstChecked); }, isDynamicStressChecked: function() { localStorage.setItem("isDynamicStressChecked", this.isDynamicStressChecked); }, isDynamicOxygenChecked: function() { localStorage.setItem("isDynamicOxygenChecked", this.isDynamicOxygenChecked); }, isChangeFPSChecked: function() { localStorage.setItem("isChangeFPSChecked", this.isChangeFPSChecked); }, isToggleMapShapeChecked: function() { localStorage.setItem("isToggleMapShapeChecked", this.isToggleMapShapeChecked); }, isHideMapChecked: function() { localStorage.setItem("isHideMapChecked", this.isHideMapChecked); }, isToggleMapBordersChecked: function() { localStorage.setItem("isToggleMapBordersChecked", this.isToggleMapBordersChecked); }, isDynamicEngineChecked: function() { localStorage.setItem("isDynamicEngineChecked", this.isDynamicEngineChecked); }, isDynamicNitroChecked: function() { localStorage.setItem("isDynamicNitroChecked", this.isDynamicNitroChecked); }, isChangeCompassFPSChecked: function() { localStorage.setItem("isChangeCompassFPSChecked", this.isChangeCompassFPSChecked); }, isShowCompassChecked: function() { localStorage.setItem("isShowCompassChecked", this.isShowCompassChecked); }, isShowStreetsChecked: function() { localStorage.setItem("isShowStreetsChecked", this.isShowStreetsChecked); }, isPointerShowChecked: function() { localStorage.setItem("isPointerShowChecked", this.isPointerShowChecked); }, isDegreesShowChecked: function() { localStorage.setItem("isDegreesShowChecked", this.isDegreesShowChecked); }, isCineamticModeChecked: function() { localStorage.setItem("isCineamticModeChecked", this.isCineamticModeChecked); }, }, methods: { initIsOutMapChecked: function() { const stored = localStorage.getItem("isOutMapChecked"); if (stored === null) { return true; } else { return stored == 'true'; } }, initIsOutCompassChecked: function() { const stored = localStorage.getItem("isOutCompassChecked"); if (stored === null) { return true; } else { return stored == 'true'; } }, initIsCompassFollowChecked: function() { const stored = localStorage.getItem("isCompassFollowChecked"); if (stored === null) { return true; } else { return stored == 'true'; } }, initIsMapNotifChecked: function() { const stored = localStorage.getItem("isMapNotifChecked"); if (stored === null) { return true; } else { return stored == 'true'; } }, initIsLowFuelChecked: function() { const stored = localStorage.getItem("isLowFuelChecked"); if (stored === null) { return true; } else { return stored == 'true'; } }, initIsCinematicNotifChecked: function() { const stored = localStorage.getItem("isCinematicNotifChecked"); if (stored === null) { return true; } else { return stored == 'true'; } }, initIsDynamicHealthChecked: function() { const stored = localStorage.getItem("isDynamicHealthChecked"); if (stored === null) { return false; } else { return stored == 'true'; } }, initIsDynamicArmorChecked: function() { const stored = localStorage.getItem("isDynamicArmorChecked"); if (stored === null) { return false; } else { return stored == 'true'; } }, initIsDynamicHungerChecked: function() { const stored = localStorage.getItem("isDynamicHungerChecked"); if (stored === null) { return false; } else { return stored == 'true'; } }, initIsDynamicThirstChecked: function() { const stored = localStorage.getItem("isDynamicThirstChecked"); if (stored === null) { return false; } else { return stored == 'true'; } }, initIsDynamicStressChecked: function() { const stored = localStorage.getItem("isDynamicStressChecked"); if (stored === null) { return false; } else { return stored == 'true'; } }, initIsDynamicOxygenChecked: function() { const stored = localStorage.getItem("isDynamicOxygenChecked"); if (stored === null) { return false; } else { return stored == 'true'; } }, initIsChangeFPSChecked: function() { const stored = localStorage.getItem("isChangeFPSChecked"); if (stored === null) { return 'Optimized'; } else { return stored; } }, initIsToggleMapShapeChecked: function() { const stored = localStorage.getItem("isToggleMapShapeChecked"); if (stored === null) { return 'Circle'; } else { return stored; } }, initIsHideMapChecked: function() { const stored = localStorage.getItem("isHideMapChecked"); if (stored === null) { return true; } else { return stored == 'true'; } }, initIsToggleMapBordersChecked: function() { const stored = localStorage.getItem("isToggleMapBordersChecked"); if (stored === null) { return true; } else { return stored == 'true'; } }, initIsDynamicEngineChecked: function() { const stored = localStorage.getItem("isDynamicEngineChecked"); if (stored === null) { return false; } else { return stored == 'true'; } }, initIsDynamicNitroChecked: function() { const stored = localStorage.getItem("isDynamicNitroChecked"); if (stored === null) { return false; } else { return stored == 'true'; } }, initIsChangeCompassFPSChecked: function() { const stored = localStorage.getItem("isChangeCompassFPSChecked"); if (stored === null) { return 'Optimized'; } else { return stored; } }, initIsShowCompassChecked: function() { const stored = localStorage.getItem("isShowCompassChecked"); if (stored === null) { return true; } else { return stored == 'true'; } }, initIsShowStreetsChecked: function() { const stored = localStorage.getItem("isShowStreetsChecked"); if (stored === null) { return true; } else { return stored == 'true'; } }, initIsPointerShowChecked: function() { const stored = localStorage.getItem("isPointerShowChecked"); if (stored === null) { return true; } else { return stored == 'true'; } }, initIsDegreesShowChecked: function() { const stored = localStorage.getItem("isDegreesShowChecked"); if (stored === null) { return true; } else { return stored == 'true'; } }, initIsCineamticModeChecked: function() { const stored = localStorage.getItem("isCineamticModeChecked"); if (stored === null) { return false; } else { return stored == 'true'; } }, resetStorage: function(event) { targetId = event.currentTarget.id; localStorage.clear(); resetStorage() }, restartHud: function(event) { targetId = event.currentTarget.id; restartHud() }, showOutMap: function(event) { targetId = event.currentTarget.id; showOutMap() }, showOutCompass: function(event) { targetId = event.currentTarget.id; showOutCompass() }, showFollowCompass: function(event) { targetId = event.currentTarget.id; showFollowCompass() }, showMapNotif: function(event) { targetId = event.currentTarget.id; showMapNotif() }, showFuelAlert: function(event) { targetId = event.currentTarget.id; showFuelAlert() }, showCinematicNotif: function(event) { targetId = event.currentTarget.id; showCinematicNotif() }, dynamicHealth: function(event) { targetId = event.currentTarget.id; dynamicHealth() }, dynamicArmor: function(event) { targetId = event.currentTarget.id; dynamicArmor() }, dynamicHunger: function(event) { targetId = event.currentTarget.id; dynamicHunger() }, dynamicThirst: function(event) { targetId = event.currentTarget.id; dynamicThirst() }, dynamicStress: function(event) { targetId = event.currentTarget.id; dynamicStress() }, dynamicOxygen: function(event) { targetId = event.currentTarget.id; dynamicOxygen() }, changeFPS: function(event) { targetId = event.currentTarget.id; changeFPS() }, ToggleMapShape: function(event) { targetId = event.currentTarget.id; ToggleMapShape() }, HideMap: function(event) { targetId = event.currentTarget.id; HideMap() }, ToggleMapBorders: function(event) { targetId = event.currentTarget.id; ToggleMapBorders() }, dynamicEngine: function(event) { targetId = event.currentTarget.id; dynamicEngine() }, dynamicNitro: function(event) { targetId = event.currentTarget.id; dynamicNitro() }, changeCompassFPS: function(event) { targetId = event.currentTarget.id; changeCompassFPS() }, showCompassBase: function(event) { targetId = event.currentTarget.id; showCompassBase() }, showStreetsNames: function(event) { targetId = event.currentTarget.id; showStreetsNames() }, showPointerIndex: function(event) { targetId = event.currentTarget.id; showPointerIndex() }, showDegreesNum: function(event) { targetId = event.currentTarget.id; showDegreesNum() }, cinematicMode: function(event) { targetId = event.currentTarget.id; cinematicMode() }, }, mounted() { this.listener = window.addEventListener("message", (event) => { if (event.data.event === 'isToggleMapShapeChecked' || event.data.event === 'isChangeFPSChecked') { eval(`this.${event.data.event} = "${event.data.toggle}"`) } }); }, }) app.use(Quasar, { config: {} }) app.mount('#menu') document.onkeyup = function (data) { if (data.key == 'Escape') { closeMenu() } }; function closeMenu() { $("#openmenu").fadeOut(550); $.post(`https://${GetParentResourceName()}/closeMenu`); } function restartHud() { closeMenu() $.post(`https://${GetParentResourceName()}/restartHud`); } function resetStorage() { closeMenu() $.post(`https://${GetParentResourceName()}/resetStorage`); } function showOutMap() { $.post(`https://${GetParentResourceName()}/showOutMap`); } function showOutCompass() { $.post(`https://${GetParentResourceName()}/showOutCompass`); } function showFollowCompass() { $.post(`https://${GetParentResourceName()}/showFollowCompass`); } function showMapNotif() { $.post(`https://${GetParentResourceName()}/showMapNotif`); } function showFuelAlert() { $.post(`https://${GetParentResourceName()}/showFuelAlert`); } function showCinematicNotif() { $.post(`https://${GetParentResourceName()}/showCinematicNotif`); } function dynamicHealth() { $.post(`https://${GetParentResourceName()}/dynamicHealth`); } function dynamicArmor() { $.post(`https://${GetParentResourceName()}/dynamicArmor`); } function dynamicHunger() { $.post(`https://${GetParentResourceName()}/dynamicHunger`); } function dynamicThirst() { $.post(`https://${GetParentResourceName()}/dynamicThirst`); } function dynamicStress() { $.post(`https://${GetParentResourceName()}/dynamicStress`); } function dynamicOxygen() { $.post(`https://${GetParentResourceName()}/dynamicOxygen`); } function dynamicEngine() { $.post(`https://${GetParentResourceName()}/dynamicEngine`); } function dynamicNitro() { $.post(`https://${GetParentResourceName()}/dynamicNitro`); } function ToggleMapShape() { $.post(`https://${GetParentResourceName()}/ToggleMapShape`); } function changeFPS() { $.post(`https://${GetParentResourceName()}/changeFPS`); } function ToggleMapBorders() { $.post(`https://${GetParentResourceName()}/ToggleMapBorders`); } function HideMap() { $.post(`https://${GetParentResourceName()}/HideMap`); } function changeCompassFPS() { $.post(`https://${GetParentResourceName()}/changeCompassFPS`); } function showCompassBase() { $.post(`https://${GetParentResourceName()}/showCompassBase`); } function showStreetsNames() { $.post(`https://${GetParentResourceName()}/showStreetsNames`); } function showPointerIndex() { $.post(`https://${GetParentResourceName()}/showPointerIndex`); } function showDegreesNum() { $.post(`https://${GetParentResourceName()}/showDegreesNum`); } function cinematicMode() { $.post(`https://${GetParentResourceName()}/cinematicMode`); } $(document).ready(function () { window.addEventListener("message", function (event) { switch (event.data.action) { case "open": Open(event.data); break; } }); }); Open = function (data) { $("#openmenu").fadeIn(150); } $('.closeMenu').click(() => { closeMenu() }); // MONEY HUD const moneyHud = Vue.createApp({ data() { return { cash: 0, bank: 0, amount: 0, plus: false, minus: false, showCash: false, showBank: false, showUpdate: false, }; }, destroyed() { window.removeEventListener("message", this.listener); }, mounted() { this.listener = window.addEventListener("message", (event) => { switch (event.data.action) { case "showconstant": this.showConstant(event.data); break; case "updatemoney": this.update(event.data); break; case "show": this.showAccounts(event.data); break; } }); }, methods: { // CONFIGURE YOUR CURRENCY HERE // https://www.w3schools.com/tags/ref_language_codes.asp LANGUAGE CODES // https://www.w3schools.com/tags/ref_country_codes.asp COUNTRY CODES formatMoney(value) { const formatter = new Intl.NumberFormat("en-US", { style: "currency", currency: "USD", minimumFractionDigits: 0, }); return formatter.format(value); }, showConstant(data) { this.showCash = true; this.showBank = true; this.cash = data.cash; this.bank = data.bank; }, update(data) { this.showUpdate = true; this.amount = data.amount; this.bank = data.bank; this.cash = data.cash; this.minus = data.minus; this.plus = data.plus; if (data.type === "cash") { if (data.minus) { this.showCash = true; this.minus = true; setTimeout(() => (this.showUpdate = false), 1000); setTimeout(() => (this.showCash = false), 2000); } else { this.showCash = true; this.plus = true; setTimeout(() => (this.showUpdate = false), 1000); setTimeout(() => (this.showCash = false), 2000); } } if (data.type === "bank") { if (data.minus) { this.showBank = true; this.minus = true; setTimeout(() => (this.showUpdate = false), 1000); setTimeout(() => (this.showBank = false), 2000); } else { this.showBank = true; this.plus = true; setTimeout(() => (this.showUpdate = false), 1000); setTimeout(() => (this.showBank = false), 2000); } } }, showAccounts(data) { if (data.type === "cash" && !this.showCash) { this.showCash = true; this.cash = data.cash; setTimeout(() => (this.showCash = false), 3500); } else if (data.type === "bank" && !this.showBank) { this.showBank = true; this.bank = data.bank; setTimeout(() => (this.showBank = false), 3500); } }, }, }).mount("#money-container"); // PLAYER HUD const playerHud = { data() { return { dynamicHealth: 0, dynamicHunger: 0, dynamicThirst: 0, dynamicStress: 0, dynamicOxygen: 0, dynamicEngine: 0, dynamicNitro: 0, nos: 0, static: 100, health: 0, playerDead: 0, armor: 0, hunger: 0, thirst: 0, stress: 0, voice: 0, radio: 0, harness: 0, nitroActive: 0, cruise: 0, parachute: 0, oxygen: 0, hp: 0, armed: 0, speed: 0, engine: 0, cinematic: 0, dev: 0, show: false, talking: false, showVoice: true, showHealth: false, showArmor: true, showHunger: true, showThirst: true, showNos: true, showStress: true, showOxygen: false, showArmed: true, showEngine: false, showCruise: false, showHarness: false, showParachute: false, showDev: false, voiceIcon: "fas fa-microphone", talkingColor: "#FFFFFF", nosColor: "", engineColor: "", armorColor: "", hungerColor: "", healthColor: "", thirstColor: "", }; }, destroyed() { window.removeEventListener("message", this.listener); }, mounted() { this.listener = window.addEventListener("message", (event) => { if (event.data.action === "hudtick") { this.hudTick(event.data); } // else if(event.data.update) { // eval(event.data.action + "(" + event.data.show + ')') // } }); Config = {}; }, methods: { hudTick(data) { this.show = data.show; this.health = data.health; this.armor = data.armor; this.hunger = data.hunger; this.thirst = data.thirst; this.stress = data.stress; this.voice = data.voice; this.talking = data.talking; this.radio = data.radio; this.nos = data.nos; this.oxygen = data.oxygen; this.cruise = data.cruise; this.nitroActive = data.nitroActive; this.harness = data.harness; this.speed = data.speed; this.armed = data.armed; this.parachute = data.parachute; this.hp = data.hp*5; this.engine = data.engine; this.cinematic = data.cinematic; this.dev = data.dev; this.playerDead = data.playerDead; this.dynamicHealth = data.dynamicHealth; this.dynamicArmor = data.dynamicArmor; this.dynamicHunger = data.dynamicHunger; this.dynamicThirst = data.dynamicThirst; this.dynamicStress = data.dynamicStress; this.dynamicOxygen = data.dynamicOxygen; this.dynamicEngine = data.dynamicEngine; this.dynamicNitro = data.dynamicNitro; if (data.dynamicHealth == true) { if (data.health >= 100) { this.showHealth = false; } else{ this.showHealth = true; } } else if (data.dynamicHealth == false){ this.showHealth = true; } if (data.playerDead === false) { this.healthColor = "#3FA554"; } else { this.healthColor = "#ff0000"; this.health = 100; } if (data.dynamicArmor == true) { if (data.armor == 0) { this.showArmor = false; } else { this.showArmor = true; } } else if (data.dynamicArmor == false){ this.showArmor = true; } if (data.armor <= 0) { this.armorColor = "#FF0000"; } else { this.armorColor = "#326dbf"; } if (data.dynamicHunger == true) { if (data.hunger >= 100) { this.showHunger = false; } else{ this.showHunger = true; } } else if (data.dynamicHunger == false){ this.showHunger = true; } if (data.hunger >= 100) { this.hungerColor = "#dd6e14"; } else if(data.hunger <= 30){ this.hungerColor = "#ff0000"; } else{ this.hungerColor = "#dd6e14"; } if (data.dynamicThirst == true) { if (data.thirst >= 100) { this.showThirst = false; } else{ this.showThirst = true; } } else if (data.dynamicThirst == false){ this.showThirst = true; } if (data.thirst >= 100) { this.thirstColor = "#1a7cad"; } else if(data.thirst <= 30){ this.thirstColor = "#ff0000"; } else{ this.thirstColor = "#1a7cad"; } if (data.dynamicStress == true) { if (data.stress == 0) { this.showStress = false; } else { this.showStress = true; } } else if (data.dynamicStress == false){ this.showStress = true; } if (data.dynamicOxygen == true) { if (data.oxygen >= 100) { this.showOxygen = false; } else{ this.showOxygen = true; } } else if (data.dynamicOxygen == false){ this.showOxygen = true; } if (data.dynamicEngine == true) { if (data.engine >= 95) { this.showEngine = false; } else if (data.engine < 0){ this.showEngine = false;} else {this.showEngine = true;} } else if (data.dynamicEngine == false){ if (data.engine < 0) { this.showEngine = false;} else {this.showEngine = true;} } if (data.engine <= 45) { this.engineColor = "#ff0000"; } else if (data.engine <= 75 && data.engine >= 46 ) { this.engineColor = "#dd6e14"; } else if(data.engine<=100) { this.engineColor = "#3FA554"; } if (data.dynamicNitro == true) { if (data.nos === 0 || data.nos === undefined) { this.showNos = false; } else if (data.nos < 0){ this.showNos = false;} else {this.showNos = true;} } else if (data.dynamicNitro == false) { if (data.nos < 0){ this.showNos = false; } else {this.showNos = true;} } if (data.nitroActive) { this.nosColor = "#D64763"; } else { this.nosColor = "#FFFFFF"; } if (data.talking && data.radio) { this.talkingColor = "#D64763"; } else if (data.talking) { this.talkingColor = '#FFFF3E'; } else { this.talkingColor = "#FFFFFF"; } if (data.radio != 0 && data.radio != undefined) { this.voiceIcon = 'fas fa-headset'; } else if (data.radio == 0 || data.radio == undefined) { this.voiceIcon = 'fas fa-microphone'; } if (data.cruise === true) { this.cruise = 1; this.showCruise = true; } else { this.cruise = 0; this.showCruise = false; } if (data.harness === true) { this.showHarness = true; } else { this.showHarness = false; } if (data.armed === true) { this.showArmed = true; } else { this.showArmed = false; } if (data.parachute >= 0 ) { this.showParachute = true; } else { this.showParachute = false; } if (data.dev === true ) { this.showDev = true; } else { this.showDev = false; } if (data.isPaused === 1) { this.show = false; } }, }, }; const app2 = Vue.createApp(playerHud); app2.use(Quasar); app2.mount("#ui-container"); // VEHICLE HUD const vehHud = { data() { return { speedometer: 66, fuelgauge: 69, altitudegauge: 75, fuel: 0, speed: 0, seatbelt: 0, showSquareB: 0, show: false, showAltitude: true, showSeatbelt: true, showSquare: false, showCircle: false, seatbeltColor: "", }; }, destroyed() { window.removeEventListener("message", this.listener); }, mounted() { this.listener = window.addEventListener("message", (event) => { if (event.data.action === "car") { this.vehicleHud(event.data); } }); }, methods: { vehicleHud(data) { this.show = data.show; this.speed = data.speed; this.altitude = data.altitude; this.fuel = (data.fuel * 0.71); this.showSeatbelt = data.showSeatbelt; this.showAltitude = data.showAltitude; this.showSquareB = data.showSquareB; this.showCircleB = data.showCircleB; if (data.seatbelt === true) { this.seatbelt = 1; this.seatbeltColor = "transparent"; } else { this.seatbelt = 0; this.seatbeltColor = "#FF5100"; } if (data.showSeatbelt === true) { this.showSeatbelt = true; } else { this.showSeatbelt = false; } if (data.showAltitude === true) { this.showAltitude = true; } else { this.showAltitude = false; } if (data.fuel <= 20) { this.fuelColor = "#ff0000"; } else if (data.fuel <= 30) { this.fuelColor = "#dd6e14"; } else { this.fuelColor = "#FFFFFF"; } if (data.showSquareB === true) { this.showSquare = true; } else { this.showSquare = false; } if (data.showCircleB === true) { this.showCircle = true; } else { this.showCircle = false; } if (data.isPaused === 1) { this.show = false; } }, }, }; const app3 = Vue.createApp(vehHud); app3.use(Quasar); app3.mount("#veh-container"); // COMPASS HUD const baseplateHud = { data() { return { show: false, street1: "", street2: "", showCompass: true, showStreets: true, showPointer: true, showDegrees: true, }; }, destroyed() { window.removeEventListener("message", this.listener); }, mounted() { this.listener = window.addEventListener("message", (event) => { if (event.data.action == "update") { type = event.data.type value = event.data.value if (value !== undefined) { $('.degrees').html(value); bar = document.getElementsByTagName("svg")[0]; bar.setAttribute("viewBox", ''+ (value - 90) + ' 0 180 5'); heading = document.getElementsByTagName("svg")[1]; heading.setAttribute("viewBox", ''+ (value - 90) + ' 0 180 1.5'); } } if (event.data.action === "baseplate") { this.baseplateHud(event.data); } }); }, methods: { baseplateHud(data) { this.show = data.show; this.street1 = data.street1; this.street2 = data.street2; this.showCompass = data.showCompass; this.showStreets = data.showStreets; this.showPointer = data.showPointer; this.showDegrees = data.showDegrees; if (data.showCompass == true) { this.showCompass = true; } else { this.showCompass = false; } if (data.showStreets == true) { this.showStreets = true; } else { this.showStreets = false; } if (data.showPointer == true) { this.showPointer = true; } else { this.showPointer = false; } if (data.showDegrees == true) { this.showDegrees = true; } else { this.showDegrees = false; } }, }, }; const app4 = Vue.createApp(baseplateHud); app4.use(Quasar); app4.mount("#baseplate-container");