Inizio versione segnapunti con vue3 vite e PWA.

per adesso permette solo di aggiungere e togliere punti.
tiene conto delle formazioni ma non le fisualizza.
il fullscreen e il landscape devono essere fatti manualmente
sto guardando come poterlo fare con PWA o javascript.
This commit is contained in:
Attilio Grilli
2023-06-01 15:25:21 +02:00
commit f6c50954f0
14 changed files with 5342 additions and 0 deletions

7
src/App.vue Normal file
View File

@@ -0,0 +1,7 @@
<script setup>
import HomePage from './components/HomePage.vue'
</script>
<template>
<HomePage />
</template>

1
src/assets/vue.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="37.07" height="36" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 198"><path fill="#41B883" d="M204.8 0H256L128 220.8L0 0h97.92L128 51.2L157.44 0h47.36Z"></path><path fill="#41B883" d="m0 0l128 220.8L256 0h-51.2L128 132.48L50.56 0H0Z"></path><path fill="#35495E" d="M50.56 0L128 133.12L204.8 0h-47.36L128 51.2L97.92 0H50.56Z"></path></svg>

After

Width:  |  Height:  |  Size: 496 B

View File

@@ -0,0 +1,40 @@
<script setup>
import { ref } from 'vue'
defineProps({
msg: String,
})
const count = ref(0)
</script>
<template>
<h1>{{ msg }}</h1>
<div class="card">
<button type="button" @click="count++">count is {{ count }}</button>
<p>
Edit
<code>components/HelloWorld.vue</code> to test HMR
</p>
</div>
<p>
Check out
<a href="https://vuejs.org/guide/quick-start.html#local" target="_blank"
>create-vue</a
>, the official Vue + Vite starter
</p>
<p>
Install
<a href="https://github.com/vuejs/language-tools" target="_blank">Volar</a>
in your IDE for a better DX
</p>
<p class="read-the-docs">Click on the Vite and Vue logos to learn more</p>
</template>
<style scoped>
.read-the-docs {
color: #888;
}
</style>

View File

@@ -0,0 +1,76 @@
<script>
import NoSleep from "nosleep.js";
export default {
name: "HomePage",
components: {},
data() {
return {
sp: {
punt: { home: 0, guest: 0 },
set: { home: 0, guest: 0 },
form: {
home: ["1", "2", "3", "4", "5", "6"],
guest: ["1", "2", "3", "4", "5", "6"],
},
},
}
},
mounted () {
if (this.isMobile()) {
var noSleep = new NoSleep();
noSleep.enable();
}
},
methods: {
fullScreen() {
document.documentElement.requestFullscreen();
},
isMobile() {
if (
/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(
navigator.userAgent
)
) {
return true;
} else {
return false;
}
},
resetta() {
if (confirm("Confermi il reset del punteggio ?")) {
this.sp.punt.home = 0;
this.sp.punt.guest = 0;
this.sp.form = {
home: ["1", "2", "3", "4", "5", "6"],
guest: ["1", "2", "3", "4", "5", "6"],
}
}
},
incPunt(team) {
this.sp.punt[team]++;
this.sp.form[team].push(this.sp.form[team].shift());
},
decPunt(team) {
if (this.sp.punt[team] > 0) {
this.sp.punt[team]--;
this.sp.form[team].unshift(this.sp.form[team].pop());
}
}
}
};
</script>
<template>
<div class="campo">
<div class="hea home" @click="decPunt('home')">HOME</div>
<div class="hea guest" @click="decPunt('guest')">GUEST</div>
<div class="col home" @click="incPunt('home')">{{ sp.punt.home }}</div>
<div class="col guest" @click="incPunt('guest')">{{ sp.punt.guest }}</div>
<div class="bot tal">
<button @click="fullScreen">Fullscreen</button>
</div>
<div class="bot tar">
<button @click="resetta">RESET</button>
</div>
</div>
</template>

5
src/main.js Normal file
View File

@@ -0,0 +1,5 @@
import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
createApp(App).mount('#app')

77
src/style.css Normal file
View File

@@ -0,0 +1,77 @@
:root {
font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
touch-action: pan-x pan-y;
height: 100%
}
body {
margin: 0;
place-items: center;
min-width: 320px;
width: 100%;
min-height: 100vh;
background-color: #000;
}
button {
margin-left: 10px;
margin-right: 10px;
border-radius: 8px;
border: 1px solid #fff;
padding: 0.6em 1.2em;
font-size: 1em;
font-weight: 500;
font-family: inherit;
color: #fff;
background-color: #000;
cursor: pointer;
transition: border-color 0.25s;
}
button:hover {
border-color: #646cff;
background-color: #333;
}
button:focus,
button:focus-visible {
outline: 4px auto -webkit-focus-ring-color;
}
#app {
margin: 0 auto;
text-align: center;
}
.campo {
user-select: none;
width: 100%;
display: table;
color: #fff;
}
.hea {
float: left;
width: 50%;
font-size: xx-large;
}
.tal {
text-align: left;
}
.tar {
text-align: right;
}
.bot {
float: left;
width: 50%;
margin-top: 10px;
background-color: #000;
}
.col {
float: left;
font-size: 60vh;
width: 50%;
}
.home {
background-color: #00f;
}
.guest {
background-color: #f00;
}