195 lines
6.5 KiB
JavaScript
195 lines
6.5 KiB
JavaScript
const { createApp } = Vue;
|
|
import radar from "./pages/radar/index.js";
|
|
import tablet from "./pages/tablet/index.js";
|
|
|
|
const store = Vuex.createStore({
|
|
state: {
|
|
isRadarActive: false,
|
|
isTabletActive: false,
|
|
radarData: false,
|
|
selectedLanguage: "",
|
|
Locales: {},
|
|
radarPosition: {},
|
|
radarFastActionsPosition: {},
|
|
radarScale : 1.0,
|
|
},
|
|
mutations: {
|
|
setIsRadarActive(state, payload) {
|
|
state.isRadarActive = payload;
|
|
},
|
|
setElementPosition(state, payload) {
|
|
state[payload.type] = payload.value
|
|
localStorage.setItem(payload.type, JSON.stringify(payload.value));
|
|
},
|
|
setElementPositionFirstMount(state, payload) {
|
|
state[payload.type] = payload.value
|
|
},
|
|
setSelectedLanguage(state, payload) {
|
|
state.selectedLanguage = payload
|
|
localStorage.setItem("selectedLanguage", JSON.stringify(payload));
|
|
},
|
|
setSelectedLanguageFirstMount(state, payload) {
|
|
state.selectedLanguage = payload
|
|
},
|
|
setLocales(state, payload) {
|
|
state.Locales = payload
|
|
},
|
|
setIsTabletActive(state, payload) {
|
|
state.isTabletActive = payload;
|
|
},
|
|
getRadarData(state, payload) {
|
|
state.radarData = payload;
|
|
},
|
|
getProfile(state, payload) {
|
|
state.profile = payload;
|
|
}
|
|
},
|
|
actions: {}
|
|
});
|
|
|
|
const app = createApp({
|
|
data() {
|
|
return {};
|
|
},
|
|
methods: {
|
|
...Vuex.mapMutations({
|
|
setIsRadarActive: "setIsRadarActive",
|
|
setIsTabletActive: "setIsTabletActive",
|
|
getRadarData: "getRadarData",
|
|
getProfile: "getProfile",
|
|
setLocales: "setLocales",
|
|
setSelectedLanguageFirstMount: 'setSelectedLanguageFirstMount',
|
|
setSelectedLanguage: 'setSelectedLanguage',
|
|
setElementPositionFirstMount: 'setElementPositionFirstMount',
|
|
}),
|
|
|
|
messageHandler(event) {
|
|
switch (event.data.action) {
|
|
case "TOGGLE_RADAR":
|
|
this.setIsRadarActive(event.data.payload);
|
|
break;
|
|
case "TOGGLE_TABLET":
|
|
this.setIsTabletActive(event.data.payload);
|
|
break;
|
|
case "GET_RADAR_DATA":
|
|
this.getRadarData(event.data.payload);
|
|
break;
|
|
case "GET_PROFILE":
|
|
this.getProfile(event.data.payload);
|
|
break;
|
|
case "PLAY_SOUND":
|
|
let audio = new Audio(`./assets/${event.data.payload}.ogg`);
|
|
audio.play();
|
|
audio.volume = 0.2;
|
|
break
|
|
case "GET_LANGUAGE_VALUE":
|
|
const eventPayload = JSON.parse(event.data.payload)
|
|
if (this.selectedLanguage === "default") {
|
|
this.setLocales(eventPayload.DefaultLocales)
|
|
} else if (this.selectedLanguage === "en") {
|
|
this.setLocales(eventPayload.EnglishLocales)
|
|
|
|
} else if (this.selectedLanguage === "tr") {
|
|
this.setLocales(eventPayload.TurkishLocales)
|
|
} else if (this.selectedLanguage === "de") {
|
|
this.setLocales(eventPayload.DeutschLocales)
|
|
} else if (this.selectedLanguage === "es") {
|
|
this.setLocales(eventPayload.EspanolLocales)
|
|
} else if (this.selectedLanguage === "pr") {
|
|
this.setLocales(eventPayload.PortugalLocales)
|
|
} else if (this.selectedLanguage === "in") {
|
|
this.setLocales(eventPayload.HindiLocales)
|
|
}
|
|
|
|
break
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
},
|
|
components: { radar, tablet },
|
|
computed: {
|
|
...Vuex.mapState({
|
|
isRadarActive: state => state.isRadarActive,
|
|
isTabletActive: state => state.isTabletActive,
|
|
radarData: state => state.radarData,
|
|
profile: state => state.profile,
|
|
selectedLanguage: state => state.selectedLanguage,
|
|
})
|
|
},
|
|
mounted() {
|
|
window.addEventListener("message", this.messageHandler);
|
|
let stored = JSON.parse(localStorage.getItem("selectedLanguage"));
|
|
if (stored != null || stored != undefined) {
|
|
|
|
this.setSelectedLanguageFirstMount(stored)
|
|
} else {
|
|
this.setSelectedLanguage("default")
|
|
}
|
|
let radarPosition = JSON.parse(localStorage.getItem("radarPosition"));
|
|
if (radarPosition != null || radarPosition != undefined) {
|
|
|
|
this.setElementPositionFirstMount({
|
|
type:'radarPosition',
|
|
value: radarPosition
|
|
})
|
|
}
|
|
let radarFastActionsPosition = JSON.parse(localStorage.getItem("radarFastActionsPosition"));
|
|
if (radarFastActionsPosition != null || radarFastActionsPosition != undefined) {
|
|
|
|
this.setElementPositionFirstMount({
|
|
type:'radarFastActionsPosition',
|
|
value: radarFastActionsPosition
|
|
})
|
|
}
|
|
let radarScale = JSON.parse(localStorage.getItem("radarScale"));
|
|
if (radarScale != null || radarScale != undefined) {
|
|
|
|
this.setElementPositionFirstMount({
|
|
type:'radarScale',
|
|
value: radarScale
|
|
})
|
|
}
|
|
},
|
|
beforeDestroy() {
|
|
window.removeEventListener("message", this.messageHandler);
|
|
},
|
|
watch: {
|
|
selectedLanguage(val) {
|
|
|
|
|
|
postNUI("selectLanguage", {
|
|
language: val
|
|
})
|
|
}
|
|
},
|
|
});
|
|
app.use(store);
|
|
app.mount("#app");
|
|
|
|
var resourceName = "xRadar";
|
|
|
|
if (window.GetParentResourceName) {
|
|
resourceName = window.GetParentResourceName();
|
|
}
|
|
|
|
|
|
window.postNUI = async (name, data) => {
|
|
try {
|
|
const response = await fetch(`https://${resourceName}/${name}`, {
|
|
method: "POST",
|
|
mode: "cors",
|
|
cache: "no-cache",
|
|
credentials: "same-origin",
|
|
headers: {
|
|
"Content-Type": "application/json"
|
|
},
|
|
redirect: "follow",
|
|
referrerPolicy: "no-referrer",
|
|
body: JSON.stringify(data)
|
|
});
|
|
return !response.ok ? null : response.json();
|
|
} catch (error) {
|
|
// console.log(error)
|
|
}
|
|
};
|