Users management enhancements and fixestags/v16.0.0alpha1
@@ -1413,7 +1413,7 @@ | |||
}, | |||
"util": { | |||
"version": "0.10.3", | |||
"resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", | |||
"resolved": "http://registry.npmjs.org/util/-/util-0.10.3.tgz", | |||
"integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", | |||
"dev": true, | |||
"requires": { | |||
@@ -1436,7 +1436,7 @@ | |||
}, | |||
"async": { | |||
"version": "1.5.2", | |||
"resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", | |||
"resolved": "http://registry.npmjs.org/async/-/async-1.5.2.tgz", | |||
"integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" | |||
}, | |||
"async-each": { | |||
@@ -2307,13 +2307,13 @@ | |||
"dependencies": { | |||
"jsesc": { | |||
"version": "0.5.0", | |||
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", | |||
"resolved": "http://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", | |||
"integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", | |||
"dev": true | |||
}, | |||
"regexpu-core": { | |||
"version": "1.0.0", | |||
"resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", | |||
"resolved": "http://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", | |||
"integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", | |||
"dev": true, | |||
"requires": { | |||
@@ -2324,13 +2324,13 @@ | |||
}, | |||
"regjsgen": { | |||
"version": "0.2.0", | |||
"resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", | |||
"resolved": "http://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", | |||
"integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", | |||
"dev": true | |||
}, | |||
"regjsparser": { | |||
"version": "0.1.5", | |||
"resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", | |||
"resolved": "http://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", | |||
"integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", | |||
"dev": true, | |||
"requires": { | |||
@@ -2779,7 +2779,7 @@ | |||
"dependencies": { | |||
"source-map": { | |||
"version": "0.5.0", | |||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.0.tgz", | |||
"resolved": "http://registry.npmjs.org/source-map/-/source-map-0.5.0.tgz", | |||
"integrity": "sha1-D+llA6yGpa213mP05BKuSHLNvoY=", | |||
"dev": true | |||
} | |||
@@ -3841,7 +3841,7 @@ | |||
}, | |||
"handlebars": { | |||
"version": "4.1.0", | |||
"resolved": "http://registry.npmjs.org/handlebars/-/handlebars-4.1.0.tgz", | |||
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.0.tgz", | |||
"integrity": "sha512-l2jRuU1NAWK6AW5qqcTATWQJvNPEwkM7NEKSiv/gqOsoSQbVoWyqVEY5GS+XPQ88zLNmqASRpzfdm8d79hJS+w==", | |||
"requires": { | |||
"async": "^2.5.0", | |||
@@ -3852,7 +3852,7 @@ | |||
"dependencies": { | |||
"async": { | |||
"version": "2.6.1", | |||
"resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", | |||
"resolved": "http://registry.npmjs.org/async/-/async-2.6.1.tgz", | |||
"integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", | |||
"requires": { | |||
"lodash": "^4.17.10" | |||
@@ -4510,7 +4510,7 @@ | |||
}, | |||
"json5": { | |||
"version": "0.5.1", | |||
"resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", | |||
"resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz", | |||
"integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", | |||
"dev": true | |||
}, | |||
@@ -4872,7 +4872,7 @@ | |||
}, | |||
"minimist": { | |||
"version": "0.0.8", | |||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", | |||
"resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", | |||
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" | |||
}, | |||
"mississippi": { | |||
@@ -6197,7 +6197,7 @@ | |||
"dependencies": { | |||
"jsesc": { | |||
"version": "0.5.0", | |||
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", | |||
"resolved": "http://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", | |||
"integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", | |||
"dev": true | |||
} | |||
@@ -7830,7 +7830,7 @@ | |||
}, | |||
"strip-ansi": { | |||
"version": "3.0.1", | |||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", | |||
"resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", | |||
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", | |||
"dev": true, | |||
"requires": { |
@@ -189,7 +189,7 @@ export default { | |||
* In case the user directly loaded the user list within a group | |||
* the watch won't be triggered. We need to initialize it. | |||
*/ | |||
this.setNewUserDefaultGroup(this.$route.params.selectedGroup); | |||
this.setNewUserDefaultGroup(this.selectedGroup); | |||
/** | |||
* Register search | |||
@@ -206,7 +206,7 @@ export default { | |||
if (disabledUsers.length===0 && this.$refs.infiniteLoading && this.$refs.infiniteLoading.isComplete) { | |||
// disabled group is empty, redirection to all users | |||
this.$router.push({name: 'users'}); | |||
this.$refs.infiniteLoading.$emit('$InfiniteLoading:reset'); | |||
this.$refs.infiniteLoading.stateChanger.reset() | |||
} | |||
return disabledUsers; | |||
} | |||
@@ -253,6 +253,9 @@ export default { | |||
usersLimit() { | |||
return this.$store.getters.getUsersLimit; | |||
}, | |||
usersCount() { | |||
return this.users.length | |||
}, | |||
/* LANGUAGES */ | |||
languages() { | |||
@@ -272,8 +275,22 @@ export default { | |||
// watch url change and group select | |||
selectedGroup: function (val, old) { | |||
this.$store.commit('resetUsers'); | |||
this.$refs.infiniteLoading.$emit('$InfiniteLoading:reset'); | |||
this.$refs.infiniteLoading.stateChanger.reset() | |||
this.setNewUserDefaultGroup(val); | |||
}, | |||
// make sure the infiniteLoading state is changed if we manually | |||
// add/remove data from the store | |||
usersCount: function(val, old) { | |||
// deleting the last user, reset the list | |||
if (val === 0 && old === 1) { | |||
this.$refs.infiniteLoading.stateChanger.reset() | |||
// adding the first user, warn the infiniteLoader that | |||
// the list is not empty anymore (we don't fetch the newly | |||
// added user as we already have all the info we need) | |||
} else if (val === 1 && old === 0) { | |||
this.$refs.infiniteLoading.stateChanger.loaded() | |||
} | |||
} | |||
}, | |||
methods: { | |||
@@ -313,7 +330,7 @@ export default { | |||
search(query) { | |||
this.searchQuery = query; | |||
this.$store.commit('resetUsers'); | |||
this.$refs.infiniteLoading.$emit('$InfiniteLoading:reset'); | |||
this.$refs.infiniteLoading.stateChanger.reset() | |||
}, | |||
resetSearch() { | |||
this.search(''); | |||
@@ -322,6 +339,8 @@ export default { | |||
resetForm() { | |||
// revert form to original state | |||
Object.assign(this.newUser, this.$options.data.call(this).newUser); | |||
// reset group | |||
this.setNewUserDefaultGroup(this.selectedGroup); | |||
this.loading.all = false; | |||
}, | |||
createUser() { | |||
@@ -336,7 +355,9 @@ export default { | |||
quota: this.newUser.quota.id, | |||
language: this.newUser.language.code, | |||
}) | |||
.then(() => this.resetForm()) | |||
.then(() => { | |||
this.resetForm() | |||
}) | |||
.catch((error) => { | |||
this.loading.all = false; | |||
if (error.response && error.response.data && error.response.data.ocs && error.response.data.ocs.meta) { |
@@ -21,7 +21,7 @@ | |||
--> | |||
<template> | |||
<AppContent app-name="settings" :navigation-class="{ 'icon-loading': loading }"> | |||
<AppContent app-name="settings" :navigation-class="{ 'icon-loading': loadingAddGroup }"> | |||
<template #navigation> | |||
<AppNavigationNew button-id="new-user-button" :text="t('settings','New user')" button-class="icon-add" @click="toggleNewUserMenu" /> | |||
<ul id="usergrouplist"> | |||
@@ -227,6 +227,12 @@ export default { | |||
.then(() => { | |||
this.showAddGroupEntry = false; | |||
this.loadingAddGroup = false; | |||
this.$router.push({ | |||
name: 'group', | |||
params: { | |||
selectedGroup: gid | |||
} | |||
}) | |||
}) | |||
.catch(() => { | |||
this.loadingAddGroup = false; | |||
@@ -237,9 +243,6 @@ export default { | |||
users() { | |||
return this.$store.getters.getUsers; | |||
}, | |||
loading() { | |||
return Object.keys(this.users).length === 0; | |||
}, | |||
usersOffset() { | |||
return this.$store.getters.getUsersOffset; | |||
}, | |||
@@ -422,6 +425,10 @@ export default { | |||
} else { | |||
Vue.set(addGroup, 'action', function() { | |||
self.showAddGroupEntry = true | |||
// focus input | |||
Vue.nextTick(() => { | |||
window.addgroup.querySelector('form > input[type="text"]').focus() | |||
}) | |||
}) | |||
} | |||
groups.unshift(addGroup); |