feat: UuidGenerator

Signed-off-by: Corentin Thomasset <corentin.thomasset74@gmail.com>
This commit is contained in:
Corentin Thomasset 2020-06-01 22:16:23 +02:00 committed by Corentin THOMASSET
parent 407669def2
commit 77a6f20b2b
2 changed files with 55 additions and 0 deletions

View file

@ -9,6 +9,7 @@ import FileToBase64 from "./routes/tools/FileToBase64";
import TextCypher from "./routes/tools/TextCypher"; import TextCypher from "./routes/tools/TextCypher";
import TextStats from "./routes/tools/TextStats"; import TextStats from "./routes/tools/TextStats";
import BaseConverter from "./routes/tools/BaseConverter"; import BaseConverter from "./routes/tools/BaseConverter";
import UuidGenerator from "./routes/tools/UuidGenerator";
Vue.use(VueRouter) Vue.use(VueRouter)
@ -24,6 +25,13 @@ const toolsComponents = [
component: TokenGenerator, component: TokenGenerator,
keywords: ['token', 'random', 'string', 'alphanumeric'] keywords: ['token', 'random', 'string', 'alphanumeric']
}, },
{
icon: 'fa-key',
text: 'Uuid generator',
path: '/uuid-generator',
component: UuidGenerator,
keywords: ['token', 'v4', 'string', 'alphanumeric']
},
{ {
icon: 'fa-font', icon: 'fa-font',
text: 'Hash text', text: 'Hash text',

View file

@ -0,0 +1,47 @@
<template>
<v-card class="single-card">
<v-card-title>Uuid v4 generator</v-card-title>
<v-card-text>
<v-text-field outlined v-model="token" class="centered-input"/>
<div class="text-center">
<v-btn @click="refreshBool = !refreshBool" depressed class="mr-4">Refresh</v-btn>
<v-btn @click="copyToken()" depressed>Copy token</v-btn>
</div>
</v-card-text>
</v-card>
</template>
<script>
import {copyToClipboard} from "../../utils/helpers";
const noop = () => {
};
export default {
name: "UuidGenerator",
data: () => ({
refreshBool: true
}),
methods: {
copyToken() {
copyToClipboard(this.token);
this.$toast.success('Copied to clipboard.')
}
},
computed: {
token() {
if (this.refreshBool) noop(); // To force recomputation
return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16));
}
}
}
</script>
<style scoped>
::v-deep .centered-input input {
text-align: center
}
</style>