Tomislav Cvetic 5 роки тому
батько
коміт
d08875ff44

+ 14 - 8
backend/src/system.js

@@ -30,7 +30,7 @@ const typeDefs = `
     addresses: [ NetworkAddress ]!
   }
 
-  extend type Query {
+  type System {
     apiVersion: String!
     hostname: String!
     type: String!
@@ -44,15 +44,15 @@ const typeDefs = `
     cpus: [ CPU! ]!
     networkInterfaces: [ NetworkInterface ]!
   }
-  
-  extend type Mutation {
-    hello: String!
+
+  extend type Query {
+    system: System!
   }
   `
 
-const resolvers = {
-  Query: {
-    apiVersion: (_) => '0.1',
+function system () {
+  return {
+    apiVersion: '0.1',
     hostname: os.hostname,
     type: os.type,
     platform: os.platform,
@@ -63,7 +63,7 @@ const resolvers = {
     totalmem: os.totalmem,
     freemem: os.freemem,
     cpus: os.cpus,
-    networkInterfaces: (_) => {
+    networkInterfaces: () => {
       const interfaces = os.networkInterfaces()
       const ifaceArray = []
       for (let key in interfaces) {
@@ -77,4 +77,10 @@ const resolvers = {
   }
 }
 
+const resolvers = {
+  Query: {
+    system
+  }
+}
+
 module.exports = { typeDefs, resolvers }

+ 6 - 0
frontend/components/Header.js

@@ -32,6 +32,12 @@ const Header = props => {
       <Link href='/characterization'>
         <a>Characterization</a>
       </Link>
+      <Link href='/system'>
+        <a>System</a>
+      </Link>
+      <Link href='/projects'>
+        <a>Projects</a>
+      </Link>
       <Link href='/user'>
         <a>{user ? user.name : 'User'}</a>
       </Link>

+ 63 - 0
frontend/components/System.js

@@ -0,0 +1,63 @@
+import gql from 'graphql-tag'
+import { Query } from 'react-apollo'
+
+const QUERY_SYSTEM = gql`
+  query QUERY_SYSTEM {
+    system {
+      apiVersion
+      hostname
+      type
+      platform
+      arch
+      release
+      uptime
+      loadavg
+      totalmem
+      freemem
+      cpus {
+        model
+        speed
+        times {
+          user
+          nice
+          sys
+          idle
+          irq
+        }
+      }
+      networkInterfaces {
+        name
+        addresses {
+          address
+          netmask
+          family
+          mac
+          internal
+          cidr
+          scopied
+        }
+      }
+    }
+  }
+`
+
+const System = props => (
+  <Query query={QUERY_SYSTEM}>
+    {(data, loading, error) => (
+      <div>
+        <h1>System</h1>
+        <p>API Version:</p><p>{data.apiVersion}</p>
+        <p>Hostname:</p><p>{data.hostname}</p>
+        <p>Type:</p><p>{data.type}</p>
+        <p>Platform:</p><p>{data.platform}</p>
+        <p>Architecture:</p><p>{data.arch}</p>
+        <p>Release:</p><p>{data.release}</p>
+        <p>Uptime:</p><p>{data.uptime}</p>
+        <p>Total memory:</p><p>{data.totalmem}</p>
+        <p>Free memory:</p><p>{data.freemem}</p>
+      </div>
+    )}
+  </Query>
+)
+
+export default System

+ 7 - 0
frontend/pages/system.js

@@ -0,0 +1,7 @@
+import System from '../components/System'
+
+const SystemPage = props => (
+  <System />
+)
+
+export default SystemPage