feat: admin - system info
This commit is contained in:
		| @@ -7,7 +7,7 @@ | |||||||
|         v-layout.mt-3(row wrap) |         v-layout.mt-3(row wrap) | ||||||
|           v-flex(lg6 xs12) |           v-flex(lg6 xs12) | ||||||
|             v-card |             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-list(two-line, dense) | ||||||
|                 v-subheader Wiki.js |                 v-subheader Wiki.js | ||||||
|                 v-list-tile(avatar) |                 v-list-tile(avatar) | ||||||
| @@ -15,13 +15,13 @@ | |||||||
|                     v-icon.blue.white--text system_update_alt |                     v-icon.blue.white--text system_update_alt | ||||||
|                   v-list-tile-content |                   v-list-tile-content | ||||||
|                     v-list-tile-title Current Version |                     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-list-tile-avatar |                   v-list-tile-avatar | ||||||
|                     v-icon.blue.white--text open_in_browser |                     v-icon.blue.white--text open_in_browser | ||||||
|                   v-list-tile-content |                   v-list-tile-content | ||||||
|                     v-list-tile-title Latest Version |                     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 | ||||||
|                     v-list-tile-action-text Published 4 days ago |                     v-list-tile-action-text Published 4 days ago | ||||||
|  |  | ||||||
| @@ -33,31 +33,31 @@ | |||||||
|                     v-icon.blue-grey.white--text bubble_chart |                     v-icon.blue-grey.white--text bubble_chart | ||||||
|                   v-list-tile-content |                   v-list-tile-content | ||||||
|                     v-list-tile-title Operating System |                     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-list-tile-avatar |                   v-list-tile-avatar | ||||||
|                     v-icon.blue-grey.white--text computer |                     v-icon.blue-grey.white--text computer | ||||||
|                   v-list-tile-content |                   v-list-tile-content | ||||||
|                     v-list-tile-title Hostname |                     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-list-tile-avatar |                   v-list-tile-avatar | ||||||
|                     v-icon.blue-grey.white--text nfc |                     v-icon.blue-grey.white--text nfc | ||||||
|                   v-list-tile-content |                   v-list-tile-content | ||||||
|                     v-list-tile-title CPU Cores |                     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-list-tile-avatar |                   v-list-tile-avatar | ||||||
|                     v-icon.blue-grey.white--text memory |                     v-icon.blue-grey.white--text memory | ||||||
|                   v-list-tile-content |                   v-list-tile-content | ||||||
|                     v-list-tile-title Total RAM |                     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-list-tile-avatar |                   v-list-tile-avatar | ||||||
|                     v-icon.blue-grey.white--text last_page |                     v-icon.blue-grey.white--text last_page | ||||||
|                   v-list-tile-content |                   v-list-tile-content | ||||||
|                     v-list-tile-title Working Directory |                     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-flex(lg6 xs12) | ||||||
|             v-card.pb-3 |             v-card.pb-3 | ||||||
| @@ -68,7 +68,7 @@ | |||||||
|                     v-avatar.light-green(size='40') |                     v-avatar.light-green(size='40') | ||||||
|                       icon-node-js(fillColor='#FFFFFF') |                       icon-node-js(fillColor='#FFFFFF') | ||||||
|                   v-list-tile-content |                   v-list-tile-content | ||||||
|                     v-list-tile-title 8.9.4 |                     v-list-tile-title {{ info.nodeVersion }} | ||||||
|  |  | ||||||
|                 v-divider |                 v-divider | ||||||
|  |  | ||||||
| @@ -78,7 +78,10 @@ | |||||||
|                     v-avatar.red(size='40') |                     v-avatar.red(size='40') | ||||||
|                       icon-cube(fillColor='#FFFFFF') |                       icon-cube(fillColor='#FFFFFF') | ||||||
|                   v-list-tile-content |                   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 |                 v-divider | ||||||
|  |  | ||||||
| @@ -88,7 +91,16 @@ | |||||||
|                     v-avatar.indigo.darken-1(size='40') |                     v-avatar.indigo.darken-1(size='40') | ||||||
|                       icon-database(fillColor='#FFFFFF') |                       icon-database(fillColor='#FFFFFF') | ||||||
|                   v-list-tile-content |                   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> | </template> | ||||||
|  |  | ||||||
| @@ -97,6 +109,8 @@ import IconCube from 'mdi/cube' | |||||||
| import IconDatabase from 'mdi/database' | import IconDatabase from 'mdi/database' | ||||||
| import IconNodeJs from 'mdi/nodejs' | import IconNodeJs from 'mdi/nodejs' | ||||||
|  |  | ||||||
|  | /* global CONSTANTS */ | ||||||
|  |  | ||||||
| export default { | export default { | ||||||
|   components: { |   components: { | ||||||
|     IconCube, |     IconCube, | ||||||
| @@ -104,7 +118,22 @@ export default { | |||||||
|     IconNodeJs |     IconNodeJs | ||||||
|   }, |   }, | ||||||
|   data() { |   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> | </script> | ||||||
|   | |||||||
| @@ -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: { |   TRANSLATIONS: { | ||||||
|     QUERY_NAMESPACE: gql` |     QUERY_NAMESPACE: gql` | ||||||
|       query($locale: String!, $namespace: String!) { |       query($locale: String!, $namespace: String!) { | ||||||
|   | |||||||
							
								
								
									
										36
									
								
								server/graph/resolvers/system.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								server/graph/resolvers/system.js
									
									
									
									
									
										Normal file
									
								
							| @@ -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: { } | ||||||
|  | } | ||||||
| @@ -37,9 +37,13 @@ type SystemInfo { | |||||||
|   operatingSystem: String |   operatingSystem: String | ||||||
|   hostname: String |   hostname: String | ||||||
|   cpuCores: Int |   cpuCores: Int | ||||||
|   ramTotal: Int |   ramTotal: String | ||||||
|   workingDirectory: String |   workingDirectory: String | ||||||
|   nodeVersion: String |   nodeVersion: String | ||||||
|   redisVersion: String |   redisVersion: String | ||||||
|  |   redisUsedRAM: String | ||||||
|  |   redisTotalRAM: String | ||||||
|  |   redisHost: String | ||||||
|   postgreVersion: String |   postgreVersion: String | ||||||
|  |   postgreHost: String | ||||||
| } | } | ||||||
|   | |||||||
| @@ -27,8 +27,7 @@ html | |||||||
|  |  | ||||||
|     block head |     block head | ||||||
|  |  | ||||||
|     link(href="/css/client.css?c473342a20546c545ebc" rel="stylesheet") |     script(type="text/javascript" src="/js/runtime.js") | ||||||
|     script(type="text/javascript" src="/js/runtime.js?c473342a20546c545ebc") |     script(type="text/javascript" src="/js/client.js") | ||||||
|     script(type="text/javascript" src="/js/client.js?c473342a20546c545ebc" async) |  | ||||||
|   body |   body | ||||||
|     block body |     block body | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user