Browse Source

feat: admin - system info

pull/621/head
NGPixel 6 years ago
parent
commit
8462e18fc5
5 changed files with 109 additions and 16 deletions
  1. 53
      client/components/admin-system.vue
  2. 25
      client/constants/graphql.js
  3. 36
      server/graph/resolvers/system.js
  4. 6
      server/graph/schemas/system.graphql
  5. 5
      server/views/master.pug

53
client/components/admin-system.vue

@ -7,7 +7,7 @@
v-layout.mt-3(row wrap)
v-flex(lg6 xs12)
v-card
v-btn(fab, absolute, right, top, small, light): v-icon refresh
v-btn(fab, absolute, right, top, small, light, @click='refresh'): v-icon refresh
v-list(two-line, dense)
v-subheader Wiki.js
v-list-tile(avatar)
@ -15,13 +15,13 @@
v-icon.blue.white--text system_update_alt
v-list-tile-content
v-list-tile-title Current Version
v-list-tile-sub-title 2.0.0
v-list-tile-sub-title {{ info.currentVersion }}
v-list-tile(avatar)
v-list-tile-avatar
v-icon.blue.white--text open_in_browser
v-list-tile-content
v-list-tile-title Latest Version
v-list-tile-sub-title 2.0.0
v-list-tile-sub-title {{ info.latestVersion }}
v-list-tile-action
v-list-tile-action-text Published 4 days ago
@ -33,31 +33,31 @@
v-icon.blue-grey.white--text bubble_chart
v-list-tile-content
v-list-tile-title Operating System
v-list-tile-sub-title Linux (linux) 4.4.0-116-generic x64
v-list-tile-sub-title {{ info.operatingSystem }}
v-list-tile(avatar)
v-list-tile-avatar
v-icon.blue-grey.white--text computer
v-list-tile-content
v-list-tile-title Hostname
v-list-tile-sub-title wikijs
v-list-tile-sub-title {{ info.hostname }}
v-list-tile(avatar)
v-list-tile-avatar
v-icon.blue-grey.white--text nfc
v-list-tile-content
v-list-tile-title CPU Cores
v-list-tile-sub-title 8
v-list-tile-sub-title {{ info.cpuCores }}
v-list-tile(avatar)
v-list-tile-avatar
v-icon.blue-grey.white--text memory
v-list-tile-content
v-list-tile-title Total RAM
v-list-tile-sub-title 16.0 Gb
v-list-tile-sub-title {{ info.ramTotal }}
v-list-tile(avatar)
v-list-tile-avatar
v-icon.blue-grey.white--text last_page
v-list-tile-content
v-list-tile-title Working Directory
v-list-tile-sub-title /var/wiki
v-list-tile-sub-title {{ info.workingDirectory }}
v-flex(lg6 xs12)
v-card.pb-3
@ -68,7 +68,7 @@
v-avatar.light-green(size='40')
icon-node-js(fillColor='#FFFFFF')
v-list-tile-content
v-list-tile-title 8.9.4
v-list-tile-title {{ info.nodeVersion }}
v-divider
@ -78,7 +78,10 @@
v-avatar.red(size='40')
icon-cube(fillColor='#FFFFFF')
v-list-tile-content
v-list-tile-title 4.0.8
v-list-tile-title {{ info.redisVersion }}
v-list-tile-sub-title {{ info.redisHost }}
v-list-tile-action
v-list-tile-action-text RAM Usage: {{ info.redisUsedRAM }} / {{ info.redisTotalRAM }}
v-divider
@ -88,7 +91,16 @@
v-avatar.indigo.darken-1(size='40')
icon-database(fillColor='#FFFFFF')
v-list-tile-content
v-list-tile-title 9.6.8
v-list-tile-title {{ info.postgreVersion }}
v-list-tile-sub-title {{ info.postgreHost }}
v-snackbar(
color='success'
top
v-model='refreshCompleted'
)
v-icon.mr-3(dark) cached
| System Info has been refreshed.
</template>
@ -97,6 +109,8 @@ import IconCube from 'mdi/cube'
import IconDatabase from 'mdi/database'
import IconNodeJs from 'mdi/nodejs'
/* global CONSTANTS */
export default {
components: {
IconCube,
@ -104,7 +118,22 @@ export default {
IconNodeJs
},
data() {
return {}
return {
info: {},
refreshCompleted: false
}
},
apollo: {
info: {
query: CONSTANTS.GRAPH.SYSTEM.QUERY_INFO,
update: (data) => data.system.info
}
},
methods: {
async refresh() {
await this.$apollo.queries.info.refetch()
this.refreshCompleted = true
}
}
}
</script>

25
client/constants/graphql.js

@ -65,6 +65,31 @@ export default {
}
`
},
SYSTEM: {
QUERY_INFO: gql`
query {
system {
info {
currentVersion
latestVersion
latestVersionReleaseDate
operatingSystem
hostname
cpuCores
ramTotal
workingDirectory
nodeVersion
redisVersion
redisUsedRAM
redisTotalRAM
redisHost
postgreVersion
postgreHost
}
}
}
`
},
TRANSLATIONS: {
QUERY_NAMESPACE: gql`
query($locale: String!, $namespace: String!) {

36
server/graph/resolvers/system.js

@ -0,0 +1,36 @@
const _ = require('lodash')
const os = require('os')
const filesize = require('filesize')
/* global WIKI */
module.exports = {
Query: {
async system() { return {} }
},
Mutation: {
async system() { return {} }
},
SystemQuery: {
async info(obj, args, context, info) {
return {
currentVersion: WIKI.version,
latestVersion: WIKI.version, // TODO
latestVersionReleaseDate: new Date(), // TODO
operatingSystem: `${os.type()} (${os.platform()}) ${os.release()} ${os.arch()}`,
hostname: os.hostname(),
cpuCores: os.cpus().length,
ramTotal: filesize(os.totalmem()),
workingDirectory: process.cwd(),
nodeVersion: process.version.substr(1),
redisVersion: WIKI.redis.serverInfo.redis_version,
redisUsedRAM: WIKI.redis.serverInfo.used_memory_human,
redisTotalRAM: _.get(WIKI.redis.serverInfo, 'total_system_memory_human', 'N/A'),
redisHost: WIKI.redis.options.host,
postgreVersion: WIKI.db.inst.options.databaseVersion,
postgreHost: WIKI.db.inst.options.host
}
}
},
SystemMutation: { }
}

6
server/graph/schemas/system.graphql

@ -37,9 +37,13 @@ type SystemInfo {
operatingSystem: String
hostname: String
cpuCores: Int
ramTotal: Int
ramTotal: String
workingDirectory: String
nodeVersion: String
redisVersion: String
redisUsedRAM: String
redisTotalRAM: String
redisHost: String
postgreVersion: String
postgreHost: String
}

5
server/views/master.pug

@ -27,8 +27,7 @@ html
block head
link(href="/css/client.css?c473342a20546c545ebc" rel="stylesheet")
script(type="text/javascript" src="/js/runtime.js?c473342a20546c545ebc")
script(type="text/javascript" src="/js/client.js?c473342a20546c545ebc" async)
script(type="text/javascript" src="/js/runtime.js")
script(type="text/javascript" src="/js/client.js")
body
block body
Loading…
Cancel
Save