Commit 5db02fbb authored by Wen Wei Li's avatar Wen Wei Li

add agent detail and rule view

parent 43056114
...@@ -18,7 +18,8 @@ import Navbar from './components/Navbar.vue' ...@@ -18,7 +18,8 @@ import Navbar from './components/Navbar.vue'
import Footer from './components/Footer.vue' import Footer from './components/Footer.vue'
import Form from './components/Form.vue' import Form from './components/Form.vue'
import Agents from './components/Agents.vue' import Agents from './components/Agents.vue'
import Agent from './components/Agent.vue' import AgentDetail from './components/AgentDetail.vue'
import Rules from './components/Rules.vue';
export default { export default {
name: 'App', name: 'App',
components: { components: {
...@@ -27,8 +28,8 @@ export default { ...@@ -27,8 +28,8 @@ export default {
Form, Form,
Footer, Footer,
Agents, Agents,
Agent, AgentDetail,
Rules
}, },
} }
......
<template> <template>
<CContainer> <CContainer>
<div> <div>
<h2>{{ agentId }}</h2> <h2>{{ $route.params.id }}</h2>
<CContainer> <CContainer>
<CTable hover> <CTable hover>
<CTableHead> <CTableHead>
<CTableRow> <CTableRow>
<CTableHeaderCell scope="col">#</CTableHeaderCell> <CTableHeaderCell scope="col">#</CTableHeaderCell>
<CTableHeaderCell scope="col">Name</CTableHeaderCell> <CTableHeaderCell scope="col">Name</CTableHeaderCell>
<CTableHeaderCell scope="col">Platform</CTableHeaderCell>
<CTableHeaderCell scope="col">Status</CTableHeaderCell>
</CTableRow> </CTableRow>
</CTableHead> </CTableHead>
<CTableBody> <CTableBody>
<CTableRow v-for="(agent, index) in agents" :key="agent.id"> <CTableRow v-for="(data, index) in agent_data" :key="index">
<CTableDataCell>{{ agent.id }}</CTableDataCell> <CTableDataCell>{{ data.id }}</CTableDataCell>
<CTableDataCell>{{ agent.name }}</CTableDataCell> <CTableDataCell>{{ data.name }}</CTableDataCell>
<CTableDataCell>{{ agent.platform }}</CTableDataCell>
<CTableDataCell>{{ agent.status }}</CTableDataCell>
</CTableRow> </CTableRow>
</CTableBody> </CTableBody>
</CTable> </CTable>
...@@ -27,20 +25,24 @@ ...@@ -27,20 +25,24 @@
</template> </template>
<script> <script>
import { ref, watch } from 'vue'; import { onMounted } from 'vue';
import { useRoute } from 'vue-router'
export default { export default {
name:"Agent", name:"AgentDetail",
data() { data() {
return { return {
agent_data: [{"id":"001"}] agentId: "000",
agent_data: []
}; };
}, },
mounted() { mounted() {
this.fetchAgentsData(); this.fetchAgentData();
}, },
methods: { methods: {
async fetchAgentsData() { async fetchAgentData() {
this.agent_data = [{"id":this.$route.params.id,"name":"test"}]
this.agentId = this.$route.params.id
/*
try { try {
console.log("`http://192.168.88.238:8080/api/v1/agent/${this.agentId}`"); console.log("`http://192.168.88.238:8080/api/v1/agent/${this.agentId}`");
const response = await fetch("`http://192.168.88.238:8080/api/v1/agent/${this.agentId}`"); const response = await fetch("`http://192.168.88.238:8080/api/v1/agent/${this.agentId}`");
...@@ -50,13 +52,9 @@ ...@@ -50,13 +52,9 @@
} catch (error) { } catch (error) {
console.error('Error fetching products:', error); console.error('Error fetching products:', error);
} }
*/
} }
}, },
watch: {
'$route'(to, from) {
// React to route changes and update the productId
this.agentId = to.params.agentId;
}
}
} }
</script> </script>
\ No newline at end of file
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<CTableBody> <CTableBody>
<CTableRow v-for="(agent, index) in agents" :key="agent.id"> <CTableRow v-for="(agent, index) in agents" :key="agent.id">
<CTableDataCell> <CTableDataCell>
<router-link :to="`/agents/${agent.id}`" > <router-link :to="`/agent/${agent.id}`" >
{{ agent.id }} {{ agent.id }}
</router-link> </router-link>
</CTableDataCell> </CTableDataCell>
......
...@@ -10,6 +10,9 @@ ...@@ -10,6 +10,9 @@
Home Home
</CNavLink> </CNavLink>
</CNavItem> </CNavItem>
<CNavItem>
<CNavLink href="/rules" active>Rules</CNavLink>
</CNavItem>
<CNavItem> <CNavItem>
<CNavLink href="/agents" active>Agents</CNavLink> <CNavLink href="/agents" active>Agents</CNavLink>
</CNavItem> </CNavItem>
...@@ -20,7 +23,7 @@ ...@@ -20,7 +23,7 @@
</template> </template>
<script> <script>
import { CContainer, CNavbarNav, CCollapse, CNavItem, CNavbar, CNavbarToggler, CNavbarBrand } from '@coreui/vue' import { CContainer, CNavbarNav, CCollapse, CNavItem, CNavbar, CNavbarToggler, CNavbarBrand, CNavLink } from '@coreui/vue'
export default { export default {
name: 'Navbar' name: 'Navbar'
} }
......
<template>
<CContainer>
<div>
<h2>Rule List</h2>
<CContainer>
<CTable hover>
<CTableHead>
<CTableRow>
<CTableHeaderCell scope="col">#</CTableHeaderCell>
<CTableHeaderCell scope="col">Attribute</CTableHeaderCell>
<CTableHeaderCell scope="col">Threshold</CTableHeaderCell>
</CTableRow>
</CTableHead>
<CTableBody>
<CTableRow v-for="(rule, index) in rules" :key="index">
<CTableDataCell>{{ index }}</CTableDataCell>
<CTableDataCell>{{ rule.attribute }}</CTableDataCell>
<CTableDataCell>{{ rule.threshold }}</CTableDataCell>
</CTableRow>
</CTableBody>
</CTable>
</CContainer>
</div>
</CContainer>
</template>
<script>
export default {
name:"Rules",
data() {
return {
rules: []
};
},
mounted() {
this.fetchAgentsData();
},
methods: {
async fetchAgentsData() {
this.rules = [{"attribute": "SCA", "threshold":"60"}]
}
}
}
</script>
\ No newline at end of file
...@@ -12,21 +12,15 @@ import * as icon from '@coreui/icons'; ...@@ -12,21 +12,15 @@ import * as icon from '@coreui/icons';
import { createRouter, createWebHistory } from 'vue-router'; import { createRouter, createWebHistory } from 'vue-router';
import Criteria from './components/Criteria.vue'; import Criteria from './components/Criteria.vue';
import Agents from './components/Agents.vue' import Agents from './components/Agents.vue'
import Agent from './components/Agents.vue' import AgentDetail from './components/AgentDetail.vue'
import Rules from './components/Rules.vue'
const router = createRouter({ const router = createRouter({
history: createWebHistory(), history: createWebHistory(),
routes: [ routes: [
{ path: '/', component: Criteria }, { path: '/', component: Criteria },
{ path: '/agents', component: Agents, { path: '/agents', component: Agents},
children: [ { path: '/agent/:id', component: AgentDetail },
{ { path: '/rules', component: Rules },
path: ':agentId',
name: 'agentId',
props: true,
component: Agent
}
]
},
] ]
}); });
export default router; export default router;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment