admin-utilities.vue 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <template lang='pug'>
  2. v-container(fluid, grid-list-lg)
  3. v-layout(row, wrap)
  4. v-flex(xs12)
  5. .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. v-flex(lg3, xs12)
  11. v-card.animated.fadeInUp
  12. v-toolbar(flat, color='primary', dark, dense)
  13. .subtitle-1 {{$t('admin:utilities.tools')}}
  14. v-list(two-line, dense).py-0
  15. template(v-for='(tool, idx) in tools')
  16. v-list-item(:key='tool.key', @click='selectedTool = tool.key', :disabled='!tool.isAvailable')
  17. v-list-item-avatar
  18. v-icon(:color='!tool.isAvailable ? `grey lighten-1` : (selectedTool === tool.key ? `blue ` : `grey darken-1`)') {{ tool.icon }}
  19. v-list-item-content
  20. v-list-item-title.body-2(:class='!tool.isAvailable ? `grey--text` : (selectedTool === tool.key ? `primary--text` : ``)') {{ $t('admin:utilities.' + tool.i18nKey + 'Title') }}
  21. v-list-item-subtitle: .caption(:class='!tool.isAvailable ? `grey--text text--lighten-1` : (selectedTool === tool.key ? `blue--text ` : ``)') {{ $t('admin:utilities.' + tool.i18nKey + 'Subtitle') }}
  22. v-list-item-avatar(v-if='selectedTool === tool.key')
  23. v-icon.animated.fadeInLeft(color='primary', large) mdi-chevron-right
  24. v-divider(v-if='idx < tools.length - 1')
  25. v-flex.animated.fadeInUp.wait-p2s(xs12, lg9)
  26. transition(name='admin-router')
  27. component(:is='selectedTool')
  28. </template>
  29. <script>
  30. export default {
  31. components: {
  32. UtilityAuth: () => import(/* webpackChunkName: "admin" */ './admin-utilities-auth.vue'),
  33. UtilityContent: () => import(/* webpackChunkName: "admin" */ './admin-utilities-content.vue'),
  34. UtilityCache: () => import(/* webpackChunkName: "admin" */ './admin-utilities-cache.vue'),
  35. UtilityExport: () => import(/* webpackChunkName: "admin" */ './admin-utilities-export.vue'),
  36. UtilityImportv1: () => import(/* webpackChunkName: "admin" */ './admin-utilities-importv1.vue'),
  37. UtilityTelemetry: () => import(/* webpackChunkName: "admin" */ './admin-utilities-telemetry.vue')
  38. },
  39. data() {
  40. return {
  41. selectedTool: 'UtilityAuth',
  42. tools: [
  43. {
  44. key: 'UtilityAuth',
  45. icon: 'mdi-lock-open-outline',
  46. i18nKey: 'auth',
  47. isAvailable: true
  48. },
  49. {
  50. key: 'UtilityContent',
  51. icon: 'mdi-content-duplicate',
  52. i18nKey: 'content',
  53. isAvailable: true
  54. },
  55. {
  56. key: 'UtilityExport',
  57. icon: 'mdi-database-export',
  58. i18nKey: 'export',
  59. isAvailable: true
  60. },
  61. {
  62. key: 'UtilityCache',
  63. icon: 'mdi-database-refresh',
  64. i18nKey: 'cache',
  65. isAvailable: true
  66. },
  67. // {
  68. // key: 'UtilityGraphEndpoint',
  69. // icon: 'mdi-graphql',
  70. // i18nKey: 'graphEndpoint',
  71. // isAvailable: false
  72. // },
  73. {
  74. key: 'UtilityImportv1',
  75. icon: 'mdi-database-import',
  76. i18nKey: 'importv1',
  77. isAvailable: true
  78. },
  79. {
  80. key: 'UtilityTelemetry',
  81. icon: 'mdi-math-compass',
  82. i18nKey: 'telemetry',
  83. isAvailable: true
  84. }
  85. ]
  86. }
  87. }
  88. }
  89. </script>
  90. <style lang='scss'>
  91. </style>