Select Git revision
flag-size-variants.mustache
Reel.vue 4.61 KiB
<script setup>
import { watch, ref } from "vue";
import COLORS from "../../colors";
import TEMPLATES from "../../templates";
import DEFAULT_CONTRACTOR from "../../contractors";
import {
loadFonts,
loadCanvasStorage,
setCanvasStorage,
updateAutoRedrawStorage,
} from "../../utils";
import Canvas from "../../components/canvas/Canvas.vue";
import redraw from "./canvas";
import Navbar from "../../components/Navbar.vue";
import MainContainer from "../../components/MainContainer.vue";
import ImageInput from "../../components/inputs/ImageInput.vue";
import LongTextInput from "../../components/inputs/text/LongTextInput.vue";
import ShortTextInput from "../../components/inputs/text/ShortTextInput.vue";
import MultipleColorPicker from "../../components/inputs/colors/MultipleColorPicker.vue";
import ReloadButton from "../../components/reload/ReloadButton.vue";
import AutoReloadCheckbox from "../../components/reload/AutoReloadCheckbox.vue";
</script>
<script>
await loadFonts(["12px Bebas Neue", "12px Roboto Condensed"]);
export default {
components: {
Canvas,
Navbar,
MainContainer,
LongTextInput,
ShortTextInput,
AutoReloadCheckbox,
ReloadButton,
},
data() {
const predefinedColors = {
whiteText: {
name: "Bílý text",
colors: {
background: COLORS.black,
mainText: COLORS.white,
highlightedText: COLORS.yellow1,
contractedByText: COLORS.white
},
},
blackText: {
name: "Černý text",
colors: {
background: COLORS.white,
mainText: COLORS.black,
highlightedText: COLORS.yellow1,
contractedByText: COLORS.black
},
},
};
return {
mainText: null,
nameText: null,
mainImage: null,
contractedBy: DEFAULT_CONTRACTOR,
gradientHeightMultiplier: 1,
colorLabels: {
background: "Pozadí",
},
predefinedColors: predefinedColors,
colors: predefinedColors.whiteText.colors,
autoRedraw: false,
};
},
async created() {
await loadCanvasStorage(this);
},
methods: {
async reloadCanvasProperties() {
const canvasProperties = {
mainImage: this.mainImage,
mainText: this.mainText,
nameText: this.nameText,
contractedBy: this.contractedBy,
colors: this.colors,
};
if (canvasProperties.mainText) {
window.fileName = canvasProperties.mainText;
}
await this.$refs.canvas.redraw(canvasProperties);
delete canvasProperties.colors;
setCanvasStorage(canvasProperties);
},
},
mounted() {
this.$watch(
(vm) => [vm.mainText, vm.nameText, vm.contractedBy, vm.colors],
async (value) => {
if (this.autoRedraw) {
await this.reloadCanvasProperties();
}
},
{
immediate: true,
deep: true,
},
);
this.$watch(
(vm) => [vm.autoRedraw],
async (value) => {
updateAutoRedrawStorage(this.autoRedraw);
if (this.autoRedraw) {
await this.reloadCanvasProperties();
}
},
);
},
};
</script>
<template>
<header>
<Navbar :defaultTemplate="TEMPLATES.reel"></Navbar>
</header>
<main>
<MainContainer>
<template v-slot:left>
<Canvas
ref="canvas"
:redrawFunction="redraw"
width="1080"
height="1920"
/>
</template>
<template v-slot:right>
<ReloadButton :parentRefs="$refs" @click="reloadCanvasProperties" />
<AutoReloadCheckbox v-model="autoRedraw" />
<ImageInput
name="Obrázek"
v-model="mainImage"
:important="true"
zIndex="10"
/>
<ShortTextInput
name="Jméno"
v-model="nameText"
:important="false"
zIndex="9"
/>
<LongTextInput
name="Text"
v-model="mainText"
:important="true"
:highlightable="true"
zIndex="8"
/>
<ShortTextInput
name="Zadavatel a zpracovatel"
v-model="contractedBy"
:defaultValue="DEFAULT_CONTRACTOR"
:important="false"
zIndex="4"
/>
<MultipleColorPicker
name="Barvy"
v-model="colors"
:important="false"
:colorLabels="colorLabels"
:predefinedColors="predefinedColors"
:defaultPredefinedColors="predefinedColors.base"
zIndex="5"
></MultipleColorPicker>
</template>
</MainContainer>
</main>
</template>
<style>
@import "vue-select/dist/vue-select.css";
</style>