Pagina usuarios titulo y añadir

pull/3/head
Alvaro Puente Mella 2024-05-29 11:05:46 +02:00
parent ffb417aaca
commit ecd232f7fc
5 changed files with 78 additions and 71 deletions

View File

@ -24,7 +24,7 @@ import { MatInputModule } from '@angular/material/input';
import { MatListModule } from '@angular/material/list'; import { MatListModule } from '@angular/material/list';
import { UsersComponent } from './components/pages/admin/users/users/users.component'; import { UsersComponent } from './components/pages/admin/users/users/users.component';
import { RolesComponent } from './components/pages/admin/roles/roles/roles.component'; import { RolesComponent } from './components/pages/admin/roles/roles/roles.component';
import { MatCell, MatHeaderCell, MatHeaderCellDef, MatHeaderRow, MatHeaderRowDef, MatRow, MatTable } from '@angular/material/table'; import {MatTableModule} from '@angular/material/table';
@NgModule({ declarations: [ @NgModule({ declarations: [
AppComponent, AppComponent,
@ -51,13 +51,7 @@ import { MatCell, MatHeaderCell, MatHeaderCellDef, MatHeaderRow, MatHeaderRowDef
MatFormFieldModule, MatFormFieldModule,
MatInputModule, MatInputModule,
MatListModule, MatListModule,
MatTable, MatTableModule],
MatHeaderRow,
MatHeaderCell,
MatCell,
MatRow,
MatHeaderRowDef,
MatHeaderCellDef],
providers: [ providers: [
{ {
provide: HTTP_INTERCEPTORS, provide: HTTP_INTERCEPTORS,

View File

@ -9,4 +9,5 @@
.content-wrapper{ .content-wrapper{
display: block; display: block;
grid-area: content; grid-area: content;
margin: 20px;
} }

View File

@ -1,43 +1,16 @@
.users-table { table {
width: 100%; width: 100%;
border-collapse: collapse; margin-top: 50px;
overflow-x: auto;
} }
.users-table th, .users-table td { .header-container {
padding: 12px; margin-top: 16px;
text-align: left; display: flex;
border-bottom: 1px solid #ddd; justify-content: space-between;
align-items: center;
margin-bottom: 16px;
} }
.users-table th { .header-container h1 {
background-color: #f2f2f2; margin: 0;
color: #333;
} }
.users-table tbody tr:nth-child(even) {
background-color: #f2f2f2;
}
.users-table tbody tr:hover {
background-color: #ddd;
}
.action-cell {
text-align: right;
}
.edit-button, .delete-button {
padding: 6px 12px;
margin-right: 5px;
border: none;
border-radius: 4px;
cursor: pointer;
background-color: #4CAF50;
color: white;
}
.edit-button:hover, .delete-button:hover {
background-color: #45a049;
}

View File

@ -1,19 +1,24 @@
<table class="users-table"> <div class="header-container">
<thead> <h1>Gestión de usuarios</h1>
<tr> <button mat-flat-button color="primary">+ Añadir</button>
<th>ID</th> </div>
<th>Usuario</th> <table mat-table [dataSource]="dataSource" class="mat-elevation-z8 demo-table">
<th>Acciones</th>
</tr> <ng-container *ngFor="let column of columns" [matColumnDef]="column.columnDef">
</thead> <th mat-header-cell *matHeaderCellDef> {{ column.header }} </th>
<tbody> <td mat-cell *matCellDef="let user"> {{ column.cell(user) }} </td>
<tr *ngFor="let user of users"> </ng-container>
<td>{{ user.id }}</td>
<td>{{ user.username }}</td> <!-- Botones Column -->
<td class="action-cell"> <ng-container matColumnDef="actions">
<button mat-flat-button color="primary">Editar</button> <th mat-header-cell *matHeaderCellDef> Acciones </th>
<button mat-flat-button color="warn">Eliminar</button> <td mat-cell *matCellDef="let user">
<button mat-button color="primary" (click)="editUser(user)">Editar</button>
<button mat-button color="warn" (click)="deleteUser(user)">Eliminar</button>
</td> </td>
</tr> </ng-container>
</tbody>
<!-- Row definition -->
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
</table> </table>

View File

@ -1,6 +1,7 @@
// users.component.ts // users.component.ts
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { UserService } from './users.service'; import { UserService } from './users.service';
import { MatTableDataSource } from '@angular/material/table';
@Component({ @Component({
selector: 'app-users', selector: 'app-users',
@ -8,13 +9,46 @@ import { UserService } from './users.service';
styleUrls: ['./users.component.css'] styleUrls: ['./users.component.css']
}) })
export class UsersComponent implements OnInit { export class UsersComponent implements OnInit {
users: any[] = []; dataSource = new MatTableDataSource<any>();
columns = [
{
columnDef: 'id',
header: 'ID',
cell: (user: any) => `${user.id}`
},
{
columnDef: 'username',
header: 'Nombre de Usuario',
cell: (user: any) => `${user.username}`
},
{
columnDef: 'allowedOrganizationalUnits',
header: 'Unidades Organizacionales Permitidas',
cell: (user: any) => `${user.allowedOrganizationalUnits.join(', ')}`
},
{
columnDef: 'roles',
header: 'Roles',
cell: (user: any) => `${user.roles.join(', ')}`
}
];
displayedColumns = [...this.columns.map(column => column.columnDef), 'actions'];
constructor(private userService: UserService) {} constructor(private userService: UserService) {}
ngOnInit() { ngOnInit() {
this.userService.getUsers().subscribe(response => { this.userService.getUsers().subscribe(response => {
this.users = response['hydra:member']; this.dataSource.data = response['hydra:member'];
}); });
} }
editUser(user: any) {
// Implementar la lógica de edición
console.log('Editar usuario:', user);
}
deleteUser(user: any) {
// Implementar la lógica de eliminación
console.log('Eliminar usuario:', user);
}
} }