import importTemplate from "../../utils/importTemplate.js"; import inlinesvg from "../../utils/inlinesvg.js"; export default { data() { return { patrolSpeed: 0, frontRadarSpeed: 0, frontRadarPlate: "", rearRadarSpeed: 0, rearRadarPlate: "", location: { street: "undefined", heading: "N" }, fwdMode: 'same', bwdMode: 'same', frontSpeedWarning: false, rearSpeedWarning: false, frontAllowRadarSpeed: "", frontLockedSpeed: false, rearLockedSpeed: false, lockedFrontVehicle: false, lockedRearVehicle: false, showFastActions: false, radarPower: true, keys: [], frontXMIT: true, rearXMIT: true, }; }, components: { inlinesvg }, computed: { ...Vuex.mapState({ Locales: state => state.Locales, isTabletActive: state => state.isTabletActive, radarPosition: state => state.radarPosition, radarFastActionsPosition: state => state.radarFastActionsPosition, radarScale : state => state.radarScale, }), getRadarStyle() { let scale = this.radarScale if (this.radarPosition.left && this.radarPosition.top) { return { left: this.radarPosition.left + 'px', top: this.radarPosition.top + 'px', transform : `scale(${scale})` } } return { right: "2rem", bottom: "0.5rem", transform : `scale(${scale})` } }, getRadarFastActionsStyle() { if (this.radarFastActionsPosition.left && this.radarFastActionsPosition.top) { return { left: this.radarFastActionsPosition.left + 'px', top: this.radarFastActionsPosition.top + 'px', } } return { right: "2rem", bottom: "25rem", } }, }, methods: { ...Vuex.mapMutations({ setElementPosition: 'setElementPosition', }), PlaySound() { let audio = new Audio(`./assets/btn.ogg`); audio.play(); audio.volume = 0.2; }, setShowFastActions(payload) { this.showFastActions = payload }, radarAction(type, payload) { postNUI("radarAction", { type, payload }); }, messageHandler(event) { switch (event.data.action) { case "SET_FRONT_RADAR_SPEED": this.frontRadarSpeed = event.data.payload.toFixed(0); break; case "ADD_KEY": this.keys.push(event.data.payload) break case "CLEAR_KEYS": this.keys = [] break case "TOGGLE_FAST_ACTIONS": this.setShowFastActions(event.data.payload) break case "SET_PATROL_SPEED": this.patrolSpeed = event.data.payload.toFixed(0); break; case "SET_FRONT_RADAR_PLATE": this.frontRadarPlate = event.data.payload; break; case "SET_REAR_RADAR_PLATE": this.rearRadarPlate = event.data.payload; break; case "SET_REAR_RADAR_SPEED": this.rearRadarSpeed = event.data.payload.toFixed(0); break; case "SET_LOCATION": this.location.street = event.data.payload.street; this.location.heading = event.data.payload.heading; break; case "FORCE_UPDATE": this.fwdMode = event.data.payload.fwdMode this.bwdMode = event.data.payload.bwdMode this.frontSpeedWarning = event.data.payload.frontSpeedWarning this.rearSpeedWarning = event.data.payload.rearSpeedWarning this.frontLockedSpeed = event.data.payload.frontLockedSpeed this.rearLockedSpeed = event.data.payload.rearLockedSpeed this.lockedFrontVehicle = event.data.payload.lockedFrontVehicle this.lockedRearVehicle = event.data.payload.lockedRearVehicle this.radarPower = event.data.payload.radarPower this.frontXMIT = event.data.payload.frontXMIT this.rearXMIT = event.data.payload.rearXMIT break default: break; } }, FormatSpeed(speed) { if (!speed) { speed = 0 } if (!isNaN(speed)) { speed = speed.toString() } if (speed.length == 1) { if (speed == 10) { } return `00${speed[0]}`; } if (speed.length == 2) { if (speed == 10) { } return `0${speed[0]}${speed[1]}`; } if (speed.length == 3) { if (speed == 10) { } return `${speed[0]}${speed[1]}${speed[2]}`; } return "000"; }, updateFromRadarSpeedValue(val) { if (val > 0 && val <= 300) { this.frontAllowRadarSpeed = val; } else { this.frontAllowRadarSpeed = ""; } }, draggableElement(classname, type) { if (!$(classname).data('ui-draggable')) { $(classname).draggable({ helper: "clone", revertDuration: 0, revert: false, containment: "body", scroll: false, containment: "body", start: (event, ui) => { this.PlaySound() }, drag: function (event, ui) { }, stop: (event, ui) => { let left = ui.position.left; let top = ui.position.top; this.setElementPosition({ type, value: { left, top, }, }) this.PlaySound() } }); } } }, mounted() { window.addEventListener("message", this.messageHandler); if (this.isTabletActive) { if (this.showFastActions) { this.draggableElement('.radar-fast-actions', 'radarFastActionsPosition') } this.draggableElement('.radar', 'radarPosition') } }, beforeDestroy() { window.removeEventListener("message", this.messageHandler); }, watch: { frontRadarSpeedValue(val) { if (val > 0 && val <= 300) { this.frontAllowRadarSpeed = val; } }, isTabletActive(val) { if (val) { if (this.showFastActions) { this.draggableElement('.radar-fast-actions', 'radarFastActionsPosition') } this.draggableElement('.radar', 'radarPosition') }else{ if ($('.radar-fast-actions').data('ui-draggable')) { $('.radar-fast-actions').draggable('destroy'); } if ($('.radar').data('ui-draggable')) { $('.radar').draggable('destroy'); } } }, showFastActions(val){ if (val && this.isTabletActive) { this.draggableElement('.radar-fast-actions', 'radarFastActionsPosition') }else{ if ($('.radar-fast-actions').data('ui-draggable')) { $('.radar-fast-actions').draggable('destroy'); } } } }, template: await importTemplate("./app/pages/radar/index.html") };