diff --git a/src/components/ace/AgentEditor.vue b/src/components/ace/AgentEditor.vue
new file mode 100644
index 000000000..748faa639
--- /dev/null
+++ b/src/components/ace/AgentEditor.vue
@@ -0,0 +1,48 @@
+
+
+ {{activeAgent}}
+
+
+
+
+
+
+
diff --git a/src/components/ace/AgentSelector.vue b/src/components/ace/AgentSelector.vue
new file mode 100644
index 000000000..eb0926846
--- /dev/null
+++ b/src/components/ace/AgentSelector.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/ace/index.js b/src/components/ace/index.js
new file mode 100644
index 000000000..422382a9e
--- /dev/null
+++ b/src/components/ace/index.js
@@ -0,0 +1,2 @@
+export {default as AgentEditor} from './AgentEditor.vue'
+export {default as AgentSelector} from './AgentSelector.vue'
diff --git a/src/components/entry/Menu.vue b/src/components/entry/Menu.vue
index 357da8d42..48852b715 100644
--- a/src/components/entry/Menu.vue
+++ b/src/components/entry/Menu.vue
@@ -11,6 +11,7 @@
+
@@ -93,6 +94,9 @@ export default {
* this Menu, but in live mode that menu is bypassed and they must be manually set here
* before the Dashboard components can be rendered.
*/
+ toAce() {
+ this.$router.push('ace')
+ },
toLiveDashboard() {
// duplicated in Login.vue
this.currentMode = 'live' // set 'live' mode
diff --git a/src/router.js b/src/router.js
index 0a8f04631..a676180a9 100644
--- a/src/router.js
+++ b/src/router.js
@@ -36,13 +36,11 @@ export default createRouter({
name: 'menuconfig',
component: () => import('@/components/entry/MenuConfig.vue'),
},
- /*
{
path: '/ace',
name: 'ace',
- conponent: () => import('@/views/AceView.vue'),
+ component: () => import('@/views/AceView.vue'),
},
- */
{
path: '/configuration',
name: 'configuration',
diff --git a/src/store/modules/AceStore.js b/src/store/modules/AceStore.js
new file mode 100644
index 000000000..7501522f6
--- /dev/null
+++ b/src/store/modules/AceStore.js
@@ -0,0 +1,42 @@
+import {defineStore} from 'pinia'
+import axios from 'axios'
+
+export const useAceStore = defineStore('AceStore', {
+ state: () => ({
+ defaultAgentDesc: {},
+ userAgentDesc: {},
+ }),
+ actions: {
+ loadDefaultAgentDesc() {
+ axios.get('/get_agent_desc').then(response => {
+ this.defaultAgentDesc = response.data
+ })
+ },
+ getAgentClasses() {
+ // Return combined keys of defaultAgentDesc and userAgentDesc
+ const defaultClasses = Object.keys(this.defaultAgentDesc)
+ const userClasses = Object.keys(this.userAgentDesc)
+ return defaultClasses.concat(userClasses)
+ },
+ getAgentsInClass(agentClass) {
+ // Return combined keys of defaultAgentDesc and userAgentDesc
+ let agents = []
+ if (this.defaultAgentDesc[agentClass]) {
+ agents = agents.concat(this.defaultAgentDesc[agentClass])
+ }
+ if (this.userAgentDesc[agentClass]) {
+ agents = agents.concat(this.userAgentDesc[agentClass])
+ }
+ return agents
+ },
+ getAgentData(agentName) {
+ if (this.defaultAgentDesc[agentName]) {
+ return this.defaultAgentDesc[agentName]
+ } else if (this.userAgentDesc[agentName]) {
+ return this.userAgentDesc[agentName]
+ } else {
+ return null
+ }
+ },
+ },
+})
diff --git a/src/views/AceView.vue b/src/views/AceView.vue
new file mode 100644
index 000000000..df7738c6b
--- /dev/null
+++ b/src/views/AceView.vue
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+