chenzhou/src/store/settings.js

73 lines
2.0 KiB
JavaScript
Raw Normal View History

2024-01-22 11:25:13 +08:00
import { defineStore } from "pinia";
2024-01-22 15:06:29 +08:00
import { ref, watch } from "vue";
2024-01-22 11:25:13 +08:00
export const useSettings = defineStore("settings", () => {
const settings = ref({
resolution: {
2024-01-22 14:23:50 +08:00
width: 1920,
height: 1080,
2024-01-22 11:25:13 +08:00
},
2024-01-22 14:23:50 +08:00
carousel: false,
2024-01-22 15:32:04 +08:00
carouselTime: 10000, // s
2024-01-22 11:25:13 +08:00
fullscreen: false,
2024-01-22 16:29:09 +08:00
eqStatus: true,
2024-01-22 11:25:13 +08:00
});
2024-01-22 14:23:50 +08:00
2024-01-22 15:06:29 +08:00
function changeScale(width, height) {
const xScale = width / 1920;
const yScale = height / 1080;
const style = {
transform: `scale(${xScale}, ${yScale})`,
transformOrigin: "top left",
};
document.documentElement.style.transform = style.transform;
document.documentElement.style.transformOrigin = style.transformOrigin;
}
function resetScale() {
document.documentElement.style.transform = "initial";
document.documentElement.style.transformOrigin = "initial";
}
watch(
() => settings.value.fullscreen,
(val) => {
if (val) {
document.documentElement.requestFullscreen().then(() => {
document.documentElement.style.width = "100vw";
document.documentElement.style.height = "100vh";
changeScale(
document.documentElement.clientWidth,
document.documentElement.clientHeight
);
});
return;
}
document.exitFullscreen().then(resetScale);
}
);
2024-01-22 14:23:50 +08:00
function rewriteSettings(payload) {
settings.value = payload;
}
function updateSettings({ type, value }) {
switch (type) {
case "carousel":
settings.value.carousel = !settings.value.carousel;
break;
case "fullscreen":
settings.value.fullscreen = !settings.value.fullscreen;
break;
case "eq":
settings.value.eqStatus = !settings.value.eqStatus;
break;
case "resolution":
settings.value.resolution.height = value.height;
settings.value.resolution.width = value.width;
break;
}
}
2024-01-22 15:06:29 +08:00
return { settings, updateSettings, rewriteSettings, changeScale };
2024-01-22 11:25:13 +08:00
});