100 lines
1.9 KiB
HTML
100 lines
1.9 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>Scrabble calculator</title>
|
|
<meta charset="UTF-8" />
|
|
<link
|
|
rel="stylesheet"
|
|
href="https://unpkg.com/spectre.css/dist/spectre.min.css"
|
|
/>
|
|
<style>
|
|
body {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
main {
|
|
padding: 3em;
|
|
}
|
|
.number {
|
|
width: 3em;
|
|
}
|
|
p {
|
|
padding: 1em 0;
|
|
}
|
|
</style>
|
|
</head>
|
|
|
|
<body>
|
|
<main id="app">
|
|
<input type="text" placeholder="Oggetto" v-model="text" />
|
|
<input
|
|
type="text"
|
|
placeholder="Quanti slot hai"
|
|
class="number"
|
|
v-model="maxslot"
|
|
/>
|
|
<p>
|
|
Risultato: <b>{{ score }}</b> % {{ maxslot }} => <b>{{ slot }}</b>
|
|
</p>
|
|
</main>
|
|
<script type="module">
|
|
import Vue from "https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.esm.browser.js";
|
|
|
|
let points = {
|
|
A: 1,
|
|
O: 1,
|
|
I: 1,
|
|
E: 1,
|
|
C: 2,
|
|
R: 2,
|
|
S: 2,
|
|
T: 2,
|
|
L: 3,
|
|
M: 3,
|
|
N: 3,
|
|
U: 3,
|
|
W: 4,
|
|
Y: 4,
|
|
B: 5,
|
|
D: 5,
|
|
F: 5,
|
|
P: 5,
|
|
V: 5,
|
|
K: 5,
|
|
G: 8,
|
|
H: 8,
|
|
Z: 8,
|
|
J: 8,
|
|
X: 8,
|
|
Q: 10
|
|
};
|
|
|
|
const app = new Vue({
|
|
el: "#app",
|
|
data: {
|
|
text: "",
|
|
maxslot: 10
|
|
},
|
|
computed: {
|
|
score: function() {
|
|
const letters = this.text
|
|
.toUpperCase()
|
|
.trim()
|
|
.split("");
|
|
return letters.reduce((total, letter) => {
|
|
if (letter in points) {
|
|
total += points[letter];
|
|
}
|
|
return total;
|
|
}, 0);
|
|
},
|
|
|
|
slot: function() {
|
|
return (this.score % this.maxslot) + 1;
|
|
}
|
|
}
|
|
});
|
|
</script>
|
|
</body>
|
|
</html>
|