From 67c60735cbfcb6a5cf19b42673561eb961569087 Mon Sep 17 00:00:00 2001 From: Fabiane Souza <fabianesouza9.68@gmail.com> Date: Thu, 1 Sep 2022 18:29:26 -0300 Subject: [PATCH 1/4] =?UTF-8?q?Feature=20segmentar=20usu=C3=A1rios=20por?= =?UTF-8?q?=20ag=C3=AAncia?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GerenciamentoUsuarios.vue | 74 +++++++++++++------ 1 file changed, 53 insertions(+), 21 deletions(-) diff --git a/src/components/gerenciamento_usuarios/GerenciamentoUsuarios.vue b/src/components/gerenciamento_usuarios/GerenciamentoUsuarios.vue index d6f764a..0e5a524 100644 --- a/src/components/gerenciamento_usuarios/GerenciamentoUsuarios.vue +++ b/src/components/gerenciamento_usuarios/GerenciamentoUsuarios.vue @@ -1,25 +1,33 @@ <template> <div> - <titulo-principal titulo="Gerencimaneto de Usuários"></titulo-principal> - + <titulo-principal titulo="Gerenciamento de Usuários"></titulo-principal> + <span class="titulo_categoria" v-if="users_activates.length > 0">Usuários Ativos</span> - <md-card class="md-layout-item md-larger-size card" v-if="users_activates.length > 0"> - <md-list class="lista_usuarios"> - <md-list-item v-for="user in users_activates" :key="user.id" class="usuario"> + <md-list class="lista_usuarios" v-for="adOpsTeam in adOpsTeams_active"> + <md-list-item class="lista_adOpsTeam"> + <div class="name_adOpsTeam">{{adOpsTeam}}</div> + </md-list-item> + + <md-card class="md-layout-item md-larger-size card"> + <md-list-item v-for="user in users_activates" v-if="user.adOpsTeam === adOpsTeam" :key="user.id" class="usuario"> {{user.email}} ({{user.permission}}) - <md-icon class="md-size-2x desativar_usuario" @click.native="gerenciaUsuario(user.id, 'desativa')">toggle_on</md-icon> + <md-icon v-if="user.permission !== 'admin'" class="md-size-2x desativar_usuario" @click.native="gerenciaUsuario(user.id, 'desativa')">toggle_on</md-icon> </md-list-item> - </md-list> - </md-card> + </md-card> + </md-list> + <span class="titulo_categoria" v-if="users_deactivates.length > 0">Usuários Desativados</span> - <md-card class="md-layout-item md-larger-size card" v-if="users_deactivates.length > 0"> - <md-list class="lista_usuarios_desativados lista_usuarios"> - <md-list-item v-for="user in users_deactivates" :key="user.id" class="usuario"> - {{user.email}} ({{user.permission}}) - <md-icon class="md-size-2x ativar_usuario usuario" @click.native="gerenciaUsuario(user.id, 'ativa')">toggle_off</md-icon> - </md-list-item> - </md-list> - </md-card> + <md-list class="lista_usuarios" v-for="adOpsTeam in adOpsTeams_disabled"> + <md-list-item class="lista_adOpsTeam"> + <div class="name_adOpsTeam">{{adOpsTeam}}</div> + </md-list-item> + <md-card class="md-layout-item md-larger-size card"> + <md-list-item v-for="user in users_deactivates" v-if="user.adOpsTeam === adOpsTeam" :key="user.id" class="usuario"> + {{user.email}} ({{user.permission}}) + <md-icon v-if="user.permission !== 'admin'" class="md-size-2x ativar_usuario usuario" @click.native="gerenciaUsuario(user.id, 'ativa')">toggle_off</md-icon> + </md-list-item> + </md-card> + </md-list> <div class="load" v-show="show_load"> <md-progress-spinner md-mode="indeterminate"></md-progress-spinner> @@ -31,7 +39,7 @@ {{ apiErrorMessage }} </p> </div> - <md-snackbar :md-position="position" :md-duration="isInfinity ? Infinity : duration" :md-active.sync="showSnackbar" md-persistent> + <md-snackbar :md-position="position" :md-duration="6000" :md-active.sync="showSnackbar" md-persistent> <span>{{ snackbar_message }}</span> <md-button class="md-primary" @click="showSnackbar = false">OK</md-button> </md-snackbar> @@ -41,7 +49,6 @@ </template> <script> - import TituloAreaPrincipal from '../shared/titulo_area_principal/TituloAreaPrincipal.vue'; import InvalidUserAlert from '../shared/login/InvalidUser.vue'; import { validationMixin } from 'vuelidate' @@ -66,6 +73,10 @@ export default { downloadError: false, downloadErrorMessage: 'Erro no Download!', responseVisibility: false, + adOpsTeams_active: [], + adOpsTeams_disabled: [], + allUsers: [], + adOpsTeam: '', users_activates: [], users_deactivates: [], snackbar_message: '', @@ -92,6 +103,8 @@ export default { const allUsers = JSON.parse(response.responseText).filter(user => user.email !== localStorage.getItem('email')); this.users_activates = allUsers.filter(user => user.active == true); this.users_deactivates = allUsers.filter(user => user.active == false); + this.users_activates.forEach(user => {if(this.adOpsTeams_active.indexOf(user.adOpsTeam) === -1){this.adOpsTeams_active.push(user.adOpsTeam)}}); + this.users_deactivates.forEach(user => {if(this.adOpsTeams_disabled.indexOf(user.adOpsTeam) === -1){this.adOpsTeams_disabled.push(user.adOpsTeam)}}); }).catch((err) => { this.apiError = true; this.apiErrorMessage = err.message; @@ -108,6 +121,12 @@ export default { this.apiError = true; return false; }, + resetAdOpsTeams(){ + this.adOpsTeams_active = []; + this.adOpsTeams_disabled = []; + this.users_activates.forEach(user => {if(this.adOpsTeams_active.indexOf(user.adOpsTeam) === -1){this.adOpsTeams_active.push(user.adOpsTeam)}}); + this.users_deactivates.forEach(user => {if(this.adOpsTeams_disabled.indexOf(user.adOpsTeam) === -1){this.adOpsTeams_disabled.push(user.adOpsTeam)}}); + }, gerenciaUsuario(id, opcao) { let url; if(opcao === 'ativa') { @@ -148,6 +167,7 @@ export default { const allUsers = JSON.parse(response.responseText).filter(user => user.email !== localStorage.getItem('email')); this.users_activates = allUsers.filter(user => user.active == true); this.users_deactivates = allUsers.filter(user => user.active == false); + this.resetAdOpsTeams(); }).catch((err) => { this.showAuthAlert = this.isAuthError(this.statusCode); this.snackbar_message = 'Erro ao mudar status do usuário!'; @@ -164,7 +184,8 @@ export default { <style scoped> .card { - margin-left: 50px; + margin-top: 10px; + margin-left: 10px; } .load { @@ -186,7 +207,7 @@ export default { } .titulo_categoria { - font-size: 20px; + font-size: 22px; margin-left: 60px; padding-bottom: 20px; padding-top: 25px; @@ -194,7 +215,7 @@ export default { } .lista_usuarios { - margin-left: 0px!important; + margin-left: 40px!important; } .lista_usuarios_desativados { @@ -217,4 +238,15 @@ export default { color: green!important; } + .lista_adOpsTeam { + margin-left: 8px; + border-bottom: 1px solid #a8c0ff; + } + + .name_adOpsTeam{ + font-size: 16px; + font-weight: bold; + color: #3f2b96; + } + </style> \ No newline at end of file From beeb68627b092d4d087f9cf47c2fc24441b56237 Mon Sep 17 00:00:00 2001 From: Fabiane Souza <fabianesouza9.68@gmail.com> Date: Thu, 15 Sep 2022 17:33:07 -0300 Subject: [PATCH 2/4] feat_segmentar_usuarios_por_agencias --- .../GerenciamentoUsuarios.vue | 33 +++++-------------- 1 file changed, 9 insertions(+), 24 deletions(-) diff --git a/src/components/gerenciamento_usuarios/GerenciamentoUsuarios.vue b/src/components/gerenciamento_usuarios/GerenciamentoUsuarios.vue index 0e5a524..5ae505e 100644 --- a/src/components/gerenciamento_usuarios/GerenciamentoUsuarios.vue +++ b/src/components/gerenciamento_usuarios/GerenciamentoUsuarios.vue @@ -17,7 +17,7 @@ </md-list> <span class="titulo_categoria" v-if="users_deactivates.length > 0">Usuários Desativados</span> - <md-list class="lista_usuarios" v-for="adOpsTeam in adOpsTeams_disabled"> + <md-list class="lista_usuarios" v-for="adOpsTeam in adOpsTeams_deactivate"> <md-list-item class="lista_adOpsTeam"> <div class="name_adOpsTeam">{{adOpsTeam}}</div> </md-list-item> @@ -73,8 +73,8 @@ export default { downloadError: false, downloadErrorMessage: 'Erro no Download!', responseVisibility: false, - adOpsTeams_active: [], - adOpsTeams_disabled: [], + adOpsTeams_active: new Set(), + adOpsTeams_deactivate: new Set(), allUsers: [], adOpsTeam: '', users_activates: [], @@ -103,8 +103,8 @@ export default { const allUsers = JSON.parse(response.responseText).filter(user => user.email !== localStorage.getItem('email')); this.users_activates = allUsers.filter(user => user.active == true); this.users_deactivates = allUsers.filter(user => user.active == false); - this.users_activates.forEach(user => {if(this.adOpsTeams_active.indexOf(user.adOpsTeam) === -1){this.adOpsTeams_active.push(user.adOpsTeam)}}); - this.users_deactivates.forEach(user => {if(this.adOpsTeams_disabled.indexOf(user.adOpsTeam) === -1){this.adOpsTeams_disabled.push(user.adOpsTeam)}}); + this.users_activates.forEach(user => this.adOpsTeams_active.add(user.adOpsTeam)); + this.users_deactivates.forEach(user => this.adOpsTeams_deactivate.add(user.adOpsTeam)); }).catch((err) => { this.apiError = true; this.apiErrorMessage = err.message; @@ -122,10 +122,10 @@ export default { return false; }, resetAdOpsTeams(){ - this.adOpsTeams_active = []; - this.adOpsTeams_disabled = []; - this.users_activates.forEach(user => {if(this.adOpsTeams_active.indexOf(user.adOpsTeam) === -1){this.adOpsTeams_active.push(user.adOpsTeam)}}); - this.users_deactivates.forEach(user => {if(this.adOpsTeams_disabled.indexOf(user.adOpsTeam) === -1){this.adOpsTeams_disabled.push(user.adOpsTeam)}}); + this.adOpsTeams_active.clear(); + this.adOpsTeams_deactivate.clear(); + this.users_activates.forEach(user => this.adOpsTeams_active.add(user.adOpsTeam)); + this.users_deactivates.forEach(user => this.adOpsTeams_deactivate.add(user.adOpsTeam)); }, gerenciaUsuario(id, opcao) { let url; @@ -178,34 +178,27 @@ export default { } } } - </script> <style scoped> - .card { margin-top: 10px; margin-left: 10px; } - .load { margin-top: 50px; text-align: center; } - .respostas { width: 100%; } - p.response { margin-left: 60px; } - ul { margin-left: 15px; list-style: none; } - .titulo_categoria { font-size: 22px; margin-left: 60px; @@ -213,40 +206,32 @@ export default { padding-top: 25px; display: block; } - .lista_usuarios { margin-left: 40px!important; } - .lista_usuarios_desativados { background-color: #ececec; } - .usuario:hover { background-color: #ecf1fd; } - i.ativar_usuario { font-size: 20px; cursor: pointer; color: red!important; } - i.desativar_usuario { font-size: 20px; cursor: pointer; color: green!important; } - .lista_adOpsTeam { margin-left: 8px; border-bottom: 1px solid #a8c0ff; } - .name_adOpsTeam{ font-size: 16px; font-weight: bold; color: #3f2b96; } - </style> \ No newline at end of file From a37a5e7221614c7d6e38859e8947c14931f37a8c Mon Sep 17 00:00:00 2001 From: Fabiane Souza <fabianesouza9.68@gmail.com> Date: Tue, 20 Sep 2022 13:32:14 -0300 Subject: [PATCH 3/4] feat_segmentar_usuarios_por_agencia --- .../GerenciamentoUsuarios.vue | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/components/gerenciamento_usuarios/GerenciamentoUsuarios.vue b/src/components/gerenciamento_usuarios/GerenciamentoUsuarios.vue index 5ae505e..4f779c2 100644 --- a/src/components/gerenciamento_usuarios/GerenciamentoUsuarios.vue +++ b/src/components/gerenciamento_usuarios/GerenciamentoUsuarios.vue @@ -2,27 +2,27 @@ <div> <titulo-principal titulo="Gerenciamento de Usuários"></titulo-principal> - <span class="titulo_categoria" v-if="users_activates.length > 0">Usuários Ativos</span> - <md-list class="lista_usuarios" v-for="adOpsTeam in adOpsTeams_active"> + <span class="titulo_categoria" v-if="usersActivates.length > 0">Usuários Ativos</span> + <md-list class="lista_usuarios" v-for="adOpsTeam in adOpsTeams_active" :key="adOpsTeam"> <md-list-item class="lista_adOpsTeam"> <div class="name_adOpsTeam">{{adOpsTeam}}</div> </md-list-item> <md-card class="md-layout-item md-larger-size card"> - <md-list-item v-for="user in users_activates" v-if="user.adOpsTeam === adOpsTeam" :key="user.id" class="usuario"> + <md-list-item v-for="user in usersActivates.filter(activeUser => activeUser.adOpsTeam === adOpsTeam)" :key="user.id" class="usuario"> {{user.email}} ({{user.permission}}) <md-icon v-if="user.permission !== 'admin'" class="md-size-2x desativar_usuario" @click.native="gerenciaUsuario(user.id, 'desativa')">toggle_on</md-icon> </md-list-item> </md-card> </md-list> - <span class="titulo_categoria" v-if="users_deactivates.length > 0">Usuários Desativados</span> - <md-list class="lista_usuarios" v-for="adOpsTeam in adOpsTeams_deactivate"> + <span class="titulo_categoria" v-if="usersDeactivates.length > 0">Usuários Desativados</span> + <md-list class="lista_usuarios" v-for="adOpsTeam in adOpsTeams_deactivate" :key="adOpsTeam"> <md-list-item class="lista_adOpsTeam"> <div class="name_adOpsTeam">{{adOpsTeam}}</div> </md-list-item> <md-card class="md-layout-item md-larger-size card"> - <md-list-item v-for="user in users_deactivates" v-if="user.adOpsTeam === adOpsTeam" :key="user.id" class="usuario"> + <md-list-item v-for="user in usersDeactivates.filter(deactivateUser => deactivateUser.adOpsTeam === adOpsTeam)" :key="user.id" class="usuario"> {{user.email}} ({{user.permission}}) <md-icon v-if="user.permission !== 'admin'" class="md-size-2x ativar_usuario usuario" @click.native="gerenciaUsuario(user.id, 'ativa')">toggle_off</md-icon> </md-list-item> @@ -77,8 +77,8 @@ export default { adOpsTeams_deactivate: new Set(), allUsers: [], adOpsTeam: '', - users_activates: [], - users_deactivates: [], + usersActivates: [], + usersDeactivates: [], snackbar_message: '', position: 'center', showSnackbar: false @@ -101,10 +101,10 @@ export default { throw new Error(response.responseText || response.errorMessage); } const allUsers = JSON.parse(response.responseText).filter(user => user.email !== localStorage.getItem('email')); - this.users_activates = allUsers.filter(user => user.active == true); - this.users_deactivates = allUsers.filter(user => user.active == false); - this.users_activates.forEach(user => this.adOpsTeams_active.add(user.adOpsTeam)); - this.users_deactivates.forEach(user => this.adOpsTeams_deactivate.add(user.adOpsTeam)); + this.usersActivates = allUsers.filter(user => user.active == true); + this.usersDeactivates = allUsers.filter(user => user.active == false); + this.usersActivates.forEach(user => this.adOpsTeams_active.add(user.adOpsTeam)); + this.usersDeactivates.forEach(user => this.adOpsTeams_deactivate.add(user.adOpsTeam)); }).catch((err) => { this.apiError = true; this.apiErrorMessage = err.message; @@ -124,8 +124,8 @@ export default { resetAdOpsTeams(){ this.adOpsTeams_active.clear(); this.adOpsTeams_deactivate.clear(); - this.users_activates.forEach(user => this.adOpsTeams_active.add(user.adOpsTeam)); - this.users_deactivates.forEach(user => this.adOpsTeams_deactivate.add(user.adOpsTeam)); + this.usersActivates.forEach(user => this.adOpsTeams_active.add(user.adOpsTeam)); + this.usersDeactivates.forEach(user => this.adOpsTeams_deactivate.add(user.adOpsTeam)); }, gerenciaUsuario(id, opcao) { let url; @@ -165,8 +165,8 @@ export default { throw new Error(response.responseText || response.errorMessage); } const allUsers = JSON.parse(response.responseText).filter(user => user.email !== localStorage.getItem('email')); - this.users_activates = allUsers.filter(user => user.active == true); - this.users_deactivates = allUsers.filter(user => user.active == false); + this.usersActivates = allUsers.filter(user => user.active == true); + this.usersDeactivates = allUsers.filter(user => user.active == false); this.resetAdOpsTeams(); }).catch((err) => { this.showAuthAlert = this.isAuthError(this.statusCode); From 1f0e632c6fd56008374bfa2d715d999ff4d8d60b Mon Sep 17 00:00:00 2001 From: Fabiane Souza <fabianesouza9.68@gmail.com> Date: Wed, 28 Sep 2022 19:13:46 -0300 Subject: [PATCH 4/4] =?UTF-8?q?Feature=20segmentar=20usu=C3=A1rios=20por?= =?UTF-8?q?=20ag=C3=AAncia?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GerenciamentoUsuarios.vue | 38 ++++++++++++++----- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/src/components/gerenciamento_usuarios/GerenciamentoUsuarios.vue b/src/components/gerenciamento_usuarios/GerenciamentoUsuarios.vue index 4f779c2..4bd6092 100644 --- a/src/components/gerenciamento_usuarios/GerenciamentoUsuarios.vue +++ b/src/components/gerenciamento_usuarios/GerenciamentoUsuarios.vue @@ -29,8 +29,10 @@ </md-card> </md-list> - <div class="load" v-show="show_load"> - <md-progress-spinner md-mode="indeterminate"></md-progress-spinner> + <div class="load_block" v-show="show_load"> + <div class="load" v-show="show_load"> + <md-progress-spinner md-mode="indeterminate"></md-progress-spinner> + </div> </div> <div class="respostas" v-show="responseVisibility"> @@ -39,7 +41,7 @@ {{ apiErrorMessage }} </p> </div> - <md-snackbar :md-position="position" :md-duration="6000" :md-active.sync="showSnackbar" md-persistent> + <md-snackbar :md-position="position" :md-duration="isInfinity ? Infinity : duration" :md-active.sync="showSnackbar" md-persistent> <span>{{ snackbar_message }}</span> <md-button class="md-primary" @click="showSnackbar = false">OK</md-button> </md-snackbar> @@ -101,10 +103,17 @@ export default { throw new Error(response.responseText || response.errorMessage); } const allUsers = JSON.parse(response.responseText).filter(user => user.email !== localStorage.getItem('email')); - this.usersActivates = allUsers.filter(user => user.active == true); - this.usersDeactivates = allUsers.filter(user => user.active == false); - this.usersActivates.forEach(user => this.adOpsTeams_active.add(user.adOpsTeam)); - this.usersDeactivates.forEach(user => this.adOpsTeams_deactivate.add(user.adOpsTeam)); + allUsers.forEach(user => { + if(user.active === true) { + this.usersActivates.push(user); + this.adOpsTeams_active.add(user.adOpsTeam); + } else { + this.usersDeactivates.push(user); + this.adOpsTeams_deactivate.add(user.adOpsTeam); + } + }); + this.adOpsTeams_active.sort(); + console.log(this.adOpsTeams_active); }).catch((err) => { this.apiError = true; this.apiErrorMessage = err.message; @@ -186,8 +195,19 @@ export default { margin-left: 10px; } .load { - margin-top: 50px; - text-align: center; + position: fixed; + left:50%; + top:50%; + z-index:20; + } + .load_block { + background-color: rgba(0, 0, 0, 0.295); + position: fixed; + left:300px; + top:0px; + z-index:20; + width: 100%; + height: 100%; } .respostas { width: 100%;