|
|
|
<template>
|
|
|
|
<div class="">
|
|
|
|
<div v-if="loading" class="pr-4">
|
|
|
|
<v-skeleton-loader type="text" class="mx-2 mt-4 mr-14" />
|
|
|
|
<v-skeleton-loader type="text@10" class="mx-2 mt-4" />
|
|
|
|
<v-skeleton-loader type="text@2" class="mx-2 mt-4 mr-14" />
|
|
|
|
</div>
|
|
|
|
<template v-else>
|
|
|
|
<v-list dense>
|
|
|
|
<v-list-item dense>
|
|
|
|
<v-list-item-subtitle>
|
|
|
|
<span class="caption" @dblclick="counterLoc++">Categories</span>
|
|
|
|
</v-list-item-subtitle>
|
|
|
|
</v-list-item>
|
|
|
|
<v-list-item-group v-model="category">
|
|
|
|
<v-list-item v-for="c in categories" :key="c.category" :value="c.category" dense>
|
|
|
|
<v-list-item-title>
|
|
|
|
<span :class="{ 'font-weight-black': category === c.category }" class="body-1">
|
|
|
|
{{ c.category }}
|
|
|
|
</span>
|
|
|
|
<span class="grey--text">({{ c.count }})</span>
|
|
|
|
</v-list-item-title>
|
|
|
|
</v-list-item>
|
|
|
|
</v-list-item-group>
|
|
|
|
</v-list>
|
|
|
|
<!-- v-if="counter > 4"-->
|
|
|
|
<v-btn class="ml-4" color="grey" small outlined @click="showTemplateEditor">
|
|
|
|
<v-icon class="mr-1" small> mdi-plus </v-icon> New template
|
|
|
|
</v-btn>
|
|
|
|
|
|
|
|
<v-tooltip bottom>
|
|
|
|
<template #activator="{ on }">
|
|
|
|
<v-btn
|
|
|
|
class="ml-4 mt-4"
|
|
|
|
color="grey"
|
|
|
|
small
|
|
|
|
outlined
|
|
|
|
v-on="on"
|
|
|
|
@click="$toast.info('Happy hacking!').goAway(3000)"
|
|
|
|
>
|
|
|
|
<v-icon small class="mr-1"> mdi-file-excel-outline </v-icon>
|
|
|
|
Import
|
|
|
|
</v-btn>
|
|
|
|
</template>
|
|
|
|
<span class="caption">Create templates from multiple Excel files</span>
|
|
|
|
</v-tooltip>
|
|
|
|
|
|
|
|
<v-text-field
|
|
|
|
v-if="$store.state.templateE > 3"
|
|
|
|
v-model="t"
|
|
|
|
autocomplete="new-password"
|
|
|
|
name="nc"
|
|
|
|
outlined
|
|
|
|
dense
|
|
|
|
:full-width="false"
|
|
|
|
style="width: 135px"
|
|
|
|
type="password"
|
|
|
|
class="caption mt-4 ml-1 mr-3 ml-4"
|
|
|
|
hide-details
|
|
|
|
/>
|
|
|
|
</template>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
// import categories from './templates.categories'
|
|
|
|
export default {
|
|
|
|
name: 'Categories',
|
|
|
|
props: { value: String, counter: Number },
|
|
|
|
data: () => ({
|
|
|
|
categories: [],
|
|
|
|
loading: false,
|
|
|
|
}),
|
|
|
|
computed: {
|
|
|
|
counterLoc: {
|
|
|
|
get() {
|
|
|
|
return this.$store.state.templateE;
|
|
|
|
},
|
|
|
|
set(c) {
|
|
|
|
this.$store.commit('mutTemplateE', c);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
category: {
|
|
|
|
get() {
|
|
|
|
return this.value;
|
|
|
|
},
|
|
|
|
set(v) {
|
|
|
|
this.$emit('input', v);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
t: {
|
|
|
|
get() {
|
|
|
|
return this.$store.state.template;
|
|
|
|
},
|
|
|
|
set(t) {
|
|
|
|
this.$store.commit('mutTemplate', t);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
created() {
|
|
|
|
this.loadCategories();
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
async loadCategories() {
|
|
|
|
this.loading = true;
|
|
|
|
try {
|
|
|
|
const res = await this.$axios.get(`${process.env.NC_API_URL}/api/v1/nc/templates/categories`);
|
|
|
|
this.categories = res.data;
|
|
|
|
} catch (e) {
|
|
|
|
console.log(e);
|
|
|
|
}
|
|
|
|
this.loading = false;
|
|
|
|
},
|
|
|
|
showTemplateEditor() {
|
|
|
|
this.$emit('showTemplateEditor');
|
|
|
|
},
|
|
|
|
},
|
|
|
|
};
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<style scoped></style>
|