summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUdo Walter2019-04-13 15:33:51 +0200
committerUdo Walter2019-04-13 15:33:51 +0200
commit53028fd8498c7b7ea997c1af51162d26d972ba05 (patch)
treefcf8dbedb382f95aee4f00fc2ea8fc3b64f1c5f5
parent[datatable] fix values with comma in csv copy (diff)
downloadbas-53028fd8498c7b7ea997c1af51162d26d972ba05.tar.gz
bas-53028fd8498c7b7ea997c1af51162d26d972ba05.tar.xz
bas-53028fd8498c7b7ea997c1af51162d26d972ba05.zip
[groups,clients] include config as association
-rw-r--r--server/api/clients.js2
-rw-r--r--server/api/groups.js2
-rw-r--r--server/models/client.js2
-rw-r--r--server/models/group.js2
-rw-r--r--webapp/src/assets/styles.css6
-rw-r--r--webapp/src/components/DataTable.vue2
-rw-r--r--webapp/src/components/GroupModuleClientView.vue5
-rw-r--r--webapp/src/components/GroupModuleGroupView.vue5
-rw-r--r--webapp/src/store/groups.js10
9 files changed, 11 insertions, 25 deletions
diff --git a/server/api/clients.js b/server/api/clients.js
index 3152e10..a6d151a 100644
--- a/server/api/clients.js
+++ b/server/api/clients.js
@@ -18,7 +18,7 @@ router.getAsync('', async (req, res) => {
router.getAsync('/:id', async (req, res) => {
if (!(req.params.id > 0)) return HttpResponse.invalidId().send(res)
- const client = await db.client.findOne({ where: { id: req.params.id }, include: ['groups'] })
+ const client = await db.client.findOne({ where: { id: req.params.id }, include: ['groups', 'config'] })
if (client) res.status(200).send(client)
else HttpResponse.notFound(req.params.id).send(res)
})
diff --git a/server/api/groups.js b/server/api/groups.js
index 7cab3d8..a19c231 100644
--- a/server/api/groups.js
+++ b/server/api/groups.js
@@ -20,7 +20,7 @@ router.getAsync('', async (req, res) => {
router.getAsync('/:id', async (req, res) => {
const all = req.query.all !== undefined && req.query.all !== 'false'
if (req.params.id > 0) {
- let group = await db.group.findOne({ where: { id: req.params.id }, include: ['parents', 'ipranges', 'subgroups', 'clients'] })
+ let group = await db.group.findOne({ where: { id: req.params.id }, include: ['parents', 'ipranges', 'subgroups', 'clients', 'config'] })
if (group) {
// Convert ipranges in readable strings.
group.ipranges.forEach(iprange => {
diff --git a/server/models/client.js b/server/models/client.js
index 502f668..a7c9d4b 100644
--- a/server/models/client.js
+++ b/server/models/client.js
@@ -19,7 +19,7 @@ module.exports = (sequelize, DataTypes) => {
client.associate = function (models) {
var GroupXClient = sequelize.define('group_x_client', {}, { timestamps: false, freezeTableName: true })
client.belongsToMany(models.group, { as: 'groups', through: GroupXClient, foreignKey: 'clientId', otherKey: 'groupId' })
- client.belongsTo(models.config)
+ client.belongsTo(models.config, { as: 'config' })
var ClientXEvent = sequelize.define('client_x_event', { blacklist: DataTypes.BOOLEAN }, { timestamps: false, freezeTableName: true })
client.belongsToMany(models.event, { as: 'events', through: ClientXEvent, foreignKey: 'clientId', otherKey: 'eventId' })
}
diff --git a/server/models/group.js b/server/models/group.js
index 0582970..16fd2f1 100644
--- a/server/models/group.js
+++ b/server/models/group.js
@@ -20,7 +20,7 @@ module.exports = (sequelize, DataTypes) => {
group.belongsToMany(group, { as: 'subgroups', through: GroupXGroup, foreignKey: 'parentId', otherKey: 'childId' })
group.belongsToMany(models.client, { as: 'clients', through: GroupXClient, foreignKey: 'groupId', otherKey: 'clientId' })
group.belongsToMany(models.event, { as: 'events', through: GroupXEvent, foreignKey: 'groupId', otherKey: 'eventId' })
- group.belongsTo(models.config)
+ group.belongsTo(models.config, { as: 'config' })
group.hasMany(models.iprange, { as: 'ipranges' })
}
return group
diff --git a/webapp/src/assets/styles.css b/webapp/src/assets/styles.css
index 451d146..83556ca 100644
--- a/webapp/src/assets/styles.css
+++ b/webapp/src/assets/styles.css
@@ -10,9 +10,9 @@ html {
}
.selectable {
- -webkit-user-select: auto; /* Safari 3.1+ */
- -moz-user-select: auto; /* Firefox 2+ */
- -ms-user-select: auto; /* IE 10+ */
+ -webkit-user-select: text; /* Safari 3.1+ */
+ -moz-user-select: text; /* Firefox 2+ */
+ -ms-user-select: text; /* IE 10+ */
user-select: text; /* Standard syntax */
}
diff --git a/webapp/src/components/DataTable.vue b/webapp/src/components/DataTable.vue
index eade3fc..61c9d6d 100644
--- a/webapp/src/components/DataTable.vue
+++ b/webapp/src/components/DataTable.vue
@@ -162,7 +162,7 @@
<v-icon style="cursor: pointer" :color="item.selected ? 'primary' : ''">{{ selectedIconMap[item.selected] }}</v-icon>
</div>
<div v-for="header in headers" :key="header.key" :style="{ width: header.width }" :class="{ 'auto-width': header.width === undefined }">
- <span style="user-select: text" v-if="$scopedSlots[header.key] === undefined">{{ item.data[header.key] }}</span>
+ <span v-if="$scopedSlots[header.key] === undefined" class="selectable">{{ item.data[header.key] }}</span>
<slot v-else :name="header.key" :item="item.data" />
</div>
</div>
diff --git a/webapp/src/components/GroupModuleClientView.vue b/webapp/src/components/GroupModuleClientView.vue
index e5e3630..c8f0bb1 100644
--- a/webapp/src/components/GroupModuleClientView.vue
+++ b/webapp/src/components/GroupModuleClientView.vue
@@ -75,7 +75,7 @@
v-model="info.configId"
:items="configList"
></v-select>
- <div v-else>{{ configName || '-' }}</div>
+ <div v-else>{{ client.config ? (client.config.name || client.config.id) : '-' }}</div>
</div>
</div>
</v-flex>
@@ -177,9 +177,6 @@ export default {
},
computed: {
...mapState('groups', ['groupList', 'configList']),
- configName () {
- return this.$store.state.groups.configNames[this.client.configId]
- },
headers () {
return [
{ key: 'name', text: this.$t('name') }
diff --git a/webapp/src/components/GroupModuleGroupView.vue b/webapp/src/components/GroupModuleGroupView.vue
index ebbcfbc..2f79911 100644
--- a/webapp/src/components/GroupModuleGroupView.vue
+++ b/webapp/src/components/GroupModuleGroupView.vue
@@ -114,7 +114,7 @@
v-model="info.configId"
:items="configList"
></v-select>
- <div v-else>{{ configName || '-' }}</div>
+ <div v-else>{{ group.config ? (group.config.name || group.config.id) : '-' }}</div>
</div>
</div>
</v-flex>
@@ -228,9 +228,6 @@ export default {
},
computed: {
...mapState('groups', ['groupList', 'configList']),
- configName () {
- return this.$store.state.groups.configNames[this.group.configId]
- },
headers () {
return [
{ key: 'name', text: this.$t('name') }
diff --git a/webapp/src/store/groups.js b/webapp/src/store/groups.js
index 28dc0fd..8d97bd7 100644
--- a/webapp/src/store/groups.js
+++ b/webapp/src/store/groups.js
@@ -7,7 +7,6 @@ export default {
groupList: [],
clientList: [],
configList: [],
- configNames: {},
tabChain: [],
activeTab: 0,
dialog: {
@@ -18,14 +17,7 @@ export default {
mutations: {
setGroupList: (state, list) => { state.groupList = list },
setClientList: (state, list) => { state.clientList = list },
- setConfigList: (state, list) => {
- state.configList = list
- var names = {}
- list.forEach(config => {
- names[config.id] = config.name
- })
- state.configNames = names
- },
+ setConfigList: (state, list) => { state.configList = list },
setActiveTab (state, index) { state.activeTab = index },
setShowAll (state, { index, value }) { state.tabChain[index].tabShowAll = value },
deleteFromTabChain (state, { index, count }) { state.tabChain.splice(index, count) },