diff --git a/src/components/FormFields/ProtocolSelector/ProtocolSettingDialog.vue b/src/components/FormFields/ProtocolSelector/ProtocolSettingDialog.vue
index 7e6232f3a..f5d553579 100644
--- a/src/components/FormFields/ProtocolSelector/ProtocolSettingDialog.vue
+++ b/src/components/FormFields/ProtocolSelector/ProtocolSettingDialog.vue
@@ -48,7 +48,10 @@ export default {
return {
defaultSetting: {
sftp_enabled: true,
- sftp_home: '/tmp'
+ sftp_home: '/tmp',
+ username_selector: '#username',
+ password_selector: '#password',
+ submit_selector: '.btn-submit'
},
loading: true,
form: {},
@@ -88,6 +91,24 @@ export default {
type: 'input',
helpText: this.$t('assets.SFTPHelpMessage'),
hidden: (form) => this.item.name !== 'ssh' || !form['sftp_enabled']
+ },
+ {
+ id: 'username_selector',
+ label: '用户名输入框选择器',
+ type: 'input',
+ hidden: (form) => this.item.name !== 'http'
+ },
+ {
+ id: 'password_selector',
+ label: '密码输入框选择器',
+ type: 'input',
+ hidden: (form) => this.item.name !== 'http'
+ },
+ {
+ id: 'submit_selector',
+ label: '提交按钮选择器',
+ type: 'input',
+ hidden: (form) => this.item.name !== 'http'
}
]
}
diff --git a/src/views/assets/Asset/AssetList/components/BaseList.vue b/src/views/assets/Asset/AssetList/components/BaseList.vue
index a91ae2b46..633045818 100644
--- a/src/views/assets/Asset/AssetList/components/BaseList.vue
+++ b/src/views/assets/Asset/AssetList/components/BaseList.vue
@@ -82,15 +82,15 @@ export default {
defaultConfig: {
url: '/api/v1/assets/hosts/',
columns: [
- 'name', 'ip', 'category', 'type', 'platform',
+ 'name', 'address', 'category', 'type', 'platform',
'protocols', 'is_active', 'connectivity',
'created_by', 'date_created', 'comment',
'org_name', 'actions'
],
columnsShow: {
- min: ['name', 'ip', 'actions'],
+ min: ['name', 'address', 'actions'],
default: [
- 'name', 'ip', 'platform', 'category', 'type',
+ 'name', 'address', 'platform', 'category', 'type',
'connectivity', 'actions'
]
},
diff --git a/src/views/assets/Asset/AssetList/components/PlatformDialog.vue b/src/views/assets/Asset/AssetList/components/PlatformDialog.vue
index e5271cf02..464207e3b 100644
--- a/src/views/assets/Asset/AssetList/components/PlatformDialog.vue
+++ b/src/views/assets/Asset/AssetList/components/PlatformDialog.vue
@@ -5,33 +5,16 @@
:visible.sync="iVisible"
width="60%"
top="1vh"
- @confirm="onConfirm"
- @cancel="onConfirm"
+ :show-cancel="false"
+ :show-confirm="false"
>
-
- {{ this.$t('assets.RecentlyUsed') }}
-
-
- {{ item.name }}
-
-
-
-
+
{
- return ['all', 'host', 'networking', 'database', 'cloud', 'web'].includes(value)
- },
default: 'all'
}
},
data() {
return {
platforms: [],
- recentPlatforms: {},
- activePlatform: 'host',
+ recentPlatformIds: [],
+ activeType: 'host',
typeIconMapper: {
linux: 'fa-linux',
windows: 'fa-windows',
@@ -97,65 +77,52 @@ export default {
set(val) {
this.$emit('update:visible', val)
},
- get() {
- return this.visible
- }
+ get() { return this.visible }
},
sortedPlatforms() {
- const { category, platforms } = this
- const filterPlatforms = _.groupBy(platforms, (item) => item.category.value)
- return category === 'all' ? filterPlatforms : this.arrangePlatforms(filterPlatforms[category])
- },
- categoryMapper() {
- const mapper = {}
- for (const p of this.platforms) {
- if (this.category === 'all') {
- mapper[p.category.value] = p.category.label
- } else {
- mapper[p.type.value] = p.type.label
- }
+ const recentPlatforms = {}
+ if (this.category === 'all') {
+ recentPlatforms[this.$t('assets.RecentlyUsed')] = this.allRecentPlatforms
+ return { ...recentPlatforms, ...this.allSortedPlatforms }
+ } else {
+ recentPlatforms[this.$t('assets.RecentlyUsed')] = this.recentPlatforms
+ return { ...recentPlatforms, ...this.typeSortedPlatforms }
}
- return mapper
},
- showRecentPlatforms() {
- return this.category === 'all' ? this.recentPlatforms : this.typeRecentPlatforms()
+ allSortedPlatforms() {
+ return _.groupBy(this.platforms, (item) => item.category.label)
+ },
+ typeSortedPlatforms() {
+ const typedPlatforms = this.platforms.filter(item => item.category.value === this.category)
+ return _.groupBy(typedPlatforms, (item) => item.type.label)
+ },
+ recentPlatforms() {
+ return this.category === 'all' ? this.allRecentPlatforms : this.typeRecentPlatforms
+ },
+ allRecentPlatforms() {
+ return this.recentPlatformIds
+ .map(i => this.platforms.find(p => p.id === i))
+ .filter(p => p)
+ },
+ typeRecentPlatforms() {
+ return this.allRecentPlatforms.filter(item => item.category.value === this.category)
}
},
created() {
this.$axios.get('/api/v1/assets/platforms/').then(data => {
this.platforms = data
+ this.loadRecentPlatformIds()
+ this.activeType = Object.keys(this.sortedPlatforms)[0]
})
- this.getRecentPlatforms()
},
methods: {
- getRecentPlatforms() {
- this.recentPlatforms = JSON.parse(localStorage.getItem('RecentPlatforms')) || []
- },
- setRecentPlatforms(platform) {
- const recentPlatforms = this.recentPlatforms || []
- const item = {
- id: platform.id,
- name: platform.name,
- category: platform.category
- }
-
- if (!_.some(recentPlatforms, item)) {
- if (recentPlatforms.length >= 8) {
- recentPlatforms.pop()
- }
- recentPlatforms.unshift(item)
- localStorage.setItem('RecentPlatforms', JSON.stringify(recentPlatforms))
- }
- },
- typeRecentPlatforms() {
- const typePlatforms = []
- const { category, recentPlatforms } = this
- for (const item of recentPlatforms) {
- if (item.category.value === category) {
- typePlatforms.push(item)
- }
- }
- return typePlatforms
+ loadRecentPlatformIds() {
+ const recentPlatformIds = JSON.parse(localStorage.getItem('RecentPlatforms')) || []
+ this.recentPlatformIds = recentPlatformIds
+ .map(i => this.platforms.find(p => p.id === i))
+ .filter(p => p)
+ .map(p => p.id)
+ console.log('This. platform id: ', this.recentPlatformIds)
},
onConfirm() {
this.iVisible = false
@@ -166,34 +133,20 @@ export default {
const color = this.bottomColors[colorIndex]
return color
},
- createAsset(platform) {
- // debugger
- const mapper = {
- host: 'HostCreate',
- database: 'DatabaseCreate',
- cloud: 'CloudCreate',
- web: 'WebCreate',
- remote_app: 'RemoteAppCreate'
+ addToRecentPlatforms(platform) {
+ const recentPlatformIds = this.recentPlatformIds.filter(i => i !== platform.id)
+ recentPlatformIds.unshift(platform.id)
+ if (recentPlatformIds.length > 8) {
+ recentPlatformIds.pop()
}
- const route = mapper[platform.category.value] || 'HostCreate'
- this.$router.push({ name: route, query: { platform: platform.id }})
- this.iVisible = false
- this.setRecentPlatforms(platform)
+ this.recentPlatformIds = recentPlatformIds
+ localStorage.setItem('RecentPlatforms', JSON.stringify(recentPlatformIds))
},
- arrangePlatforms(data = []) {
- const filterField = {}
- data.length > 0 && data.forEach(el => {
- if (el.internal) {
- filterField[el.type.value] = [el]
- } else {
- filterField[el.type.value]?.push(el)
- }
- })
-
- const filterFieldKey = Object.keys(filterField)
- this.activePlatform = filterFieldKey.length > 0 ? filterFieldKey[0] : ''
-
- return filterField
+ createAsset(platform) {
+ const route = _.capitalize(platform.category.value) + 'Create' || 'HostCreate'
+ this.addToRecentPlatforms(platform)
+ this.iVisible = false
+ this.$router.push({ name: route, query: { platform: platform.id }})
}
}
}
diff --git a/src/views/assets/Asset/AssetList/index.vue b/src/views/assets/Asset/AssetList/index.vue
index cfbce989f..b5f48531a 100644
--- a/src/views/assets/Asset/AssetList/index.vue
+++ b/src/views/assets/Asset/AssetList/index.vue
@@ -27,31 +27,26 @@ export default {
{
title: this.$t('applications.host'),
name: 'hosts',
- hidden: () => false,
component: () => import('@/views/assets/Asset/AssetList/HostList.vue')
},
{
title: this.$t('route.Device'),
name: 'devices',
- hidden: () => false,
component: () => import('@/views/assets/Asset/AssetList/DeviceList.vue')
},
{
title: this.$t('route.Database'),
name: 'databases',
- hidden: () => false,
component: () => import('@/views/assets/Asset/AssetList/DatabaseList.vue')
},
{
title: this.$t('assets.Cloud'),
name: 'clouds',
- hidden: () => false,
component: () => import('@/views/assets/Asset/AssetList/CloudList.vue')
},
{
title: 'Web',
name: 'web',
- hidden: () => false,
component: () => import('@/views/assets/Asset/AssetList/WebList.vue')
}
]
diff --git a/src/views/assets/Platform/PlatformCreateUpdate.vue b/src/views/assets/Platform/PlatformCreateUpdate.vue
index 9096afe8d..eaed57ebd 100644
--- a/src/views/assets/Platform/PlatformCreateUpdate.vue
+++ b/src/views/assets/Platform/PlatformCreateUpdate.vue
@@ -83,7 +83,7 @@ export default {
}
}
},
- brand: {},
+ charset: {},
protocols_enabled: {
el: {
disabled: false
@@ -158,6 +158,11 @@ export default {
_.set(this.fieldsMeta, `${field}.el.disabled`, disabled)
}
this.fieldsMeta.protocols.el.choices = constraints['protocols'] || []
+
+ if (constraints['charset_enabled'] === false) {
+ this.fieldsMeta.charset.hidden = () => true
+ }
+
await this.setAutomations(constraints['automation'])
},
async setAutomations(automation) {
@@ -186,7 +191,6 @@ export default {
return { value: method['id'], label: method['name'] }
})
}
- console.log('Initial: ', initial)
}
}
}
diff --git a/src/views/assets/const.js b/src/views/assets/const.js
index d55f34f63..c3f47200a 100644
--- a/src/views/assets/const.js
+++ b/src/views/assets/const.js
@@ -6,7 +6,7 @@ import { Select2 } from '@/components/FormFields'
export const assetFieldsMeta = () => {
return {
- ip: {},
+ address: {},
protocols: {
component: ProtocolSelector,
on: {},