admin-system.vue 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  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.animated.fadeInUp(src='/svg/icon-tune.svg', alt='System Info', style='width: 80px;')
  7. .admin-header-title
  8. .headline.primary--text.animated.fadeInLeft {{ $t('admin:system.title') }}
  9. .subtitle-1.grey--text.animated.fadeInLeft.wait-p2s {{ $t('admin:system.subtitle') }}
  10. v-layout.mt-3(row wrap)
  11. v-flex(lg6 xs12)
  12. v-card.animated.fadeInUp
  13. v-btn.animated.fadeInLeft.wait-p2s.btn-animate-rotate(fab, absolute, :right='!$vuetify.rtl', :left='$vuetify.rtl', top, small, light, @click='refresh'): v-icon(color='grey') mdi-refresh
  14. v-subheader Wiki.js
  15. v-list(two-line, dense)
  16. v-list-item
  17. v-list-item-avatar
  18. v-icon.blue.white--text mdi-application-export
  19. v-list-item-content
  20. v-list-item-title {{ $t('admin:system.currentVersion') }}
  21. v-list-item-subtitle {{ info.currentVersion }}
  22. v-list-item
  23. v-list-item-avatar
  24. v-icon.blue.white--text mdi-inbox-arrow-up
  25. v-list-item-content
  26. v-list-item-title {{ $t('admin:system.latestVersion') }}
  27. v-list-item-subtitle {{ info.latestVersion }}
  28. v-list-item-action
  29. v-list-item-action-text {{ $t('admin:system.published') }} {{ info.latestVersionReleaseDate | moment('from') }}
  30. v-divider.mt-3
  31. v-subheader {{ $t('admin:system.hostInfo') }}
  32. v-list(two-line, dense)
  33. v-list-item
  34. v-list-item-avatar
  35. v-avatar.blue-grey(size='40')
  36. v-icon(color='white') {{platformLogo}}
  37. v-list-item-content
  38. v-list-item-title {{ $t('admin:system.os') }}
  39. v-list-item-subtitle {{ (info.platform === 'docker') ? 'Docker Container (Linux)' : info.operatingSystem }}
  40. v-list-item
  41. v-list-item-avatar
  42. v-icon.blue-grey.white--text mdi-desktop-classic
  43. v-list-item-content
  44. v-list-item-title {{ $t('admin:system.hostname') }}
  45. v-list-item-subtitle {{ info.hostname }}
  46. v-list-item
  47. v-list-item-avatar
  48. v-icon.blue-grey.white--text mdi-cpu-64-bit
  49. v-list-item-content
  50. v-list-item-title {{ $t('admin:system.cpuCores') }}
  51. v-list-item-subtitle {{ info.cpuCores }}
  52. v-list-item
  53. v-list-item-avatar
  54. v-icon.blue-grey.white--text mdi-memory
  55. v-list-item-content
  56. v-list-item-title {{ $t('admin:system.totalRAM') }}
  57. v-list-item-subtitle {{ info.ramTotal }}
  58. v-list-item
  59. v-list-item-avatar
  60. v-icon.blue-grey.white--text mdi-iframe-outline
  61. v-list-item-content
  62. v-list-item-title {{ $t('admin:system.workingDirectory') }}
  63. v-list-item-subtitle {{ info.workingDirectory }}
  64. v-list-item
  65. v-list-item-avatar
  66. v-icon.blue-grey.white--text mdi-card-bulleted-settings-outline
  67. v-list-item-content
  68. v-list-item-title {{ $t('admin:system.configFile') }}
  69. v-list-item-subtitle {{ info.configFile }}
  70. v-flex(lg6 xs12)
  71. v-card.pb-3.animated.fadeInUp.wait-p4s
  72. v-subheader Node.js
  73. v-list(dense)
  74. v-list-item
  75. v-list-item-avatar
  76. v-avatar.light-green(size='40')
  77. v-icon(color='white') mdi-nodejs
  78. v-list-item-content
  79. v-list-item-title {{ info.nodeVersion }}
  80. v-divider.mt-3
  81. v-subheader {{ info.dbType }}
  82. v-list(dense)
  83. v-list-item
  84. v-list-item-avatar
  85. v-avatar.indigo.darken-1(size='40')
  86. v-icon(color='white') mdi-database
  87. v-list-item-content
  88. v-list-item-title(v-html='dbVersion')
  89. v-list-item-subtitle {{ info.dbHost }}
  90. v-alert.mt-3.mx-4(:value='isDbLimited', color='deep-orange darken-2', icon='mdi-alert', dark) {{ $t('admin:system.dbPartialSupport') }}
  91. </template>
  92. <script>
  93. import _ from 'lodash'
  94. import systemInfoQuery from 'gql/admin/system/system-query-info.gql'
  95. export default {
  96. data() {
  97. return {
  98. info: {}
  99. }
  100. },
  101. computed: {
  102. dbVersion() {
  103. return _.get(this.info, 'dbVersion', '').replace(/(?:\r\n|\r|\n)/g, '<br />')
  104. },
  105. platformLogo() {
  106. switch (this.info.platform) {
  107. case 'docker':
  108. return 'mdi-docker'
  109. case 'darwin':
  110. return 'mdi-apple'
  111. case 'linux':
  112. if (this.info.operatingSystem.indexOf('Ubuntu')) {
  113. return 'mdi-ubuntu'
  114. } else {
  115. return 'mdi-linux'
  116. }
  117. case 'win32':
  118. return 'mdi-windows'
  119. default:
  120. return ''
  121. }
  122. },
  123. isDbLimited() {
  124. return this.info.dbType === 'MySQL' && this.dbVersion.indexOf('5.') === 0
  125. }
  126. },
  127. methods: {
  128. async refresh() {
  129. await this.$apollo.queries.info.refetch()
  130. this.$store.commit('showNotification', {
  131. message: this.$t('admin:system.refreshSuccess'),
  132. style: 'success',
  133. icon: 'cached'
  134. })
  135. }
  136. },
  137. apollo: {
  138. info: {
  139. query: systemInfoQuery,
  140. fetchPolicy: 'network-only',
  141. update: (data) => data.system.info,
  142. watchLoading (isLoading) {
  143. this.$store.commit(`loading${isLoading ? 'Start' : 'Stop'}`, 'admin-system-refresh')
  144. }
  145. }
  146. }
  147. }
  148. </script>
  149. <style lang='scss'>
  150. </style>