admin-utilities.vue 3.26 KB
Newer Older
1
<template lang='pug'>
2 3 4 5
  v-container(fluid, grid-list-lg)
    v-layout(row, wrap)
      v-flex(xs12)
        .admin-header
6
          img(src='/_assets/svg/icon-maintenance.svg', alt='Utilities', style='width: 80px;')
7
          .admin-header-title
8
            .headline.primary--text {{$t('admin:utilities.title')}}
9
            .subtitle-1.grey--text {{$t('admin:utilities.subtitle')}}
10

11 12 13
      v-flex(lg3, xs12)
        v-card.animated.fadeInUp
          v-toolbar(flat, color='primary', dark, dense)
14
            .subtitle-1 {{$t('admin:utilities.tools')}}
15 16
          v-list(two-line, dense).py-0
            template(v-for='(tool, idx) in tools')
17 18
              v-list-item(:key='tool.key', @click='selectedTool = tool.key', :disabled='!tool.isAvailable')
                v-list-item-avatar
19
                  v-icon(:color='!tool.isAvailable ? `grey lighten-1` : (selectedTool === tool.key ? `blue ` : `grey darken-1`)') {{ tool.icon }}
20 21
                v-list-item-content
                  v-list-item-title.body-2(:class='!tool.isAvailable ? `grey--text` : (selectedTool === tool.key ? `primary--text` : ``)') {{ $t('admin:utilities.' + tool.i18nKey + 'Title') }}
22
                  v-list-item-subtitle: .caption(:class='!tool.isAvailable ? `grey--text text--lighten-1` : (selectedTool === tool.key ? `blue--text ` : ``)') {{ $t('admin:utilities.' + tool.i18nKey + 'Subtitle') }}
23
                v-list-item-avatar(v-if='selectedTool === tool.key')
24
                  v-icon.animated.fadeInLeft(color='primary', large) mdi-chevron-right
25
              v-divider(v-if='idx < tools.length - 1')
26

27 28 29
      v-flex.animated.fadeInUp.wait-p2s(xs12, lg9)
        transition(name='admin-router')
          component(:is='selectedTool')
30

31 32 33
</template>

<script>
34

35
export default {
36
  components: {
37
    UtilityAuth: () => import(/* webpackChunkName: "admin" */ './admin-utilities-auth.vue'),
38
    UtilityContent: () => import(/* webpackChunkName: "admin" */ './admin-utilities-content.vue'),
39 40 41
    UtilityCache: () => import(/* webpackChunkName: "admin" */ './admin-utilities-cache.vue'),
    UtilityImportv1: () => import(/* webpackChunkName: "admin" */ './admin-utilities-importv1.vue'),
    UtilityTelemetry: () => import(/* webpackChunkName: "admin" */ './admin-utilities-telemetry.vue')
42
  },
43
  data() {
44
    return {
45 46 47 48
      selectedTool: 'UtilityAuth',
      tools: [
        {
          key: 'UtilityAuth',
49
          icon: 'mdi-lock-open-outline',
50 51 52
          i18nKey: 'auth',
          isAvailable: true
        },
53 54
        {
          key: 'UtilityContent',
55
          icon: 'mdi-content-duplicate',
56 57 58
          i18nKey: 'content',
          isAvailable: true
        },
59 60
        {
          key: 'UtilityCache',
61
          icon: 'mdi-database-refresh',
62 63 64
          i18nKey: 'cache',
          isAvailable: true
        },
NGPixel's avatar
NGPixel committed
65 66 67 68 69 70
        // {
        //   key: 'UtilityGraphEndpoint',
        //   icon: 'mdi-graphql',
        //   i18nKey: 'graphEndpoint',
        //   isAvailable: false
        // },
71 72
        {
          key: 'UtilityImportv1',
73
          icon: 'mdi-database-import',
74
          i18nKey: 'importv1',
75
          isAvailable: true
76 77 78
        },
        {
          key: 'UtilityTelemetry',
79
          icon: 'mdi-math-compass',
80 81 82 83
          i18nKey: 'telemetry',
          isAvailable: true
        }
      ]
84
    }
85 86 87 88 89 90 91
  }
}
</script>

<style lang='scss'>

</style>