Parcourir la source

feat: enhance task filtering options and improve local storage data handling

EmilianoChavarria il y a 1 mois
Parent
commit
6f5896875a

+ 3 - 3
Front/src/app/modules/Alumno/pages/tareas/tareas.component.ts

@@ -25,8 +25,8 @@ export class TareasComponent {
   public textColor: string = '';
   public columnas: string[] = ['titulo', 'materia', 'tipoTarea', 'fechaPub', 'fechaEntrega', 'enlaces' ,'adjuntos', 'acciones'];
   public dataSource = new MatTableDataSource<any>();
-  private userData = JSON.parse(localStorage.getItem('userData') || '');
-  private userDataS = JSON.parse(localStorage.getItem('userDataS') || '');
+  private userData = JSON.parse(localStorage.getItem('userData') || '[]');
+  private userDataS = JSON.parse(localStorage.getItem('userDataS') || '[]');
   @ViewChild(MatPaginator, { static: true }) paginator!: MatPaginator;
   @ViewChild('TABLE') table!: ElementRef;
 
@@ -102,7 +102,7 @@ export class TareasComponent {
   public urls: any = [];
   //Traer la información y mostrarla en la tabla
   getTareas() {
-    this.tareasService.getTareas(this.userDataS[0]).subscribe((response: any) => {
+    this.tareasService.getTareas(this.userDataS[0] ? this.userDataS[0] : this.userData[0] ).subscribe((response: any) => {
       this.isLoading = false;
 
       this.allInfo = response.map((tarea: any) => {

+ 21 - 8
Front/src/app/modules/Profesor/pages/tareas/tareas.component.html

@@ -23,18 +23,31 @@
                 </mat-form-field>
                 <mat-form-field style="width: 200px; margin-left: 20px; margin-right: 20px; margin-top: 5px;">
                     <mat-label>Filtrar por:</mat-label>
-                    <mat-select (selectionChange)="option($event.value)">
+                    <mat-select (selectionChange)="onFiltroChange($event.value)">
                         <mat-option value="FE">Fecha de entrega</mat-option>
-                        <mat-option value="FA">Fecha de asigación</mat-option>
+                        <mat-option value="FA">Fecha de asignación</mat-option>
                         <mat-option value="MAT">Materia</mat-option>
                     </mat-select>
                 </mat-form-field>
-                <mat-form-field class="input" style="width: 200px; margin-left: 20px; margin-right: 20px; margin-top: 5px;">
-                    <mat-label>Input disabled</mat-label>
-                    <input matInput [matDatepicker]="dp3" disabled>
-                    <mat-hint>MM/DD/YYYY</mat-hint>
-                    <mat-datepicker-toggle matIconSuffix [for]="dp3"></mat-datepicker-toggle>
-                    <mat-datepicker #dp3 disabled="false"></mat-datepicker>
+
+                <!-- Si se elige "Fecha de entrega" o "Fecha de asignación" -->
+                <mat-form-field *ngIf="filtroSeleccionado === 'FE' || filtroSeleccionado === 'FA'" class="input"
+                    style="width: 200px; margin-left: 20px; margin-right: 20px; margin-top: 5px;">
+                    <mat-label>Seleccionar fecha</mat-label>
+                    <input matInput [matDatepicker]="picker" (dateChange)="onFechaSeleccionada($event)">
+                    <mat-datepicker-toggle matIconSuffix [for]="picker"></mat-datepicker-toggle>
+                    <mat-datepicker #picker></mat-datepicker>
+                </mat-form-field>
+
+                <!-- Si se elige "Materia" -->
+                <mat-form-field *ngIf="filtroSeleccionado === 'MAT'"
+                    style="width: 200px; margin-left: 20px; margin-right: 20px; margin-top: 5px;">
+                    <mat-label>Seleccionar materia</mat-label>
+                    <mat-select (selectionChange)="onMateriaSeleccionada($event.value)">
+                        <mat-option *ngFor="let materia of materias" [value]="materia.id">
+                            {{ materia.nombre }}
+                        </mat-option>
+                    </mat-select>
                 </mat-form-field>
                 <button class="button-modal" [style.background-color]="color" (click)="openDialog()">
                     <mat-icon class="icon" [style.color]="textColor">add</mat-icon>

+ 30 - 2
Front/src/app/modules/Profesor/pages/tareas/tareas.component.ts

@@ -139,6 +139,33 @@ export class TareasComponent {
     });
   }
 
+  filtroSeleccionado: string = '';
+  materias: any[] = []; // Aquí se llenará el listado de materias
+
+
+
+  onFiltroChange(valor: string): void {
+    this.filtroSeleccionado = valor;
+  }
+
+  onFechaSeleccionada(event: any): void {
+    const fecha = event.value;
+    console.log('Fecha seleccionada:', fecha);
+    // Aquí puedes filtrar tus tareas según la fecha
+  }
+
+  onMateriaSeleccionada(idMateria: any): void {
+    console.log('Materia seleccionada:', idMateria);
+    // Aquí puedes aplicar tu filtro de tareas por materia
+  }
+
+  cargarMaterias(): void {
+    // this.materiaService.getMaterias().subscribe((response: any) => {
+    //   this.materias = response; // Ajusta según el formato de tu API
+    // });
+    console.log('Cargar materias - función llamada');
+  }
+
   buscarArchivo(ruta: string) {
     window.open(ruta, '_blank');
   }
@@ -304,8 +331,9 @@ export class ModalTarea {
   public modoEdicion: boolean = false; // <-- bandera
 
   public info: any;
-  private userData = JSON.parse(localStorage.getItem('userData') || '');
-  private userDataS = JSON.parse(localStorage.getItem('userDataS') || '');
+  private userData = JSON.parse(localStorage.getItem('userData') || '[]');
+  private userDataS = JSON.parse(localStorage.getItem('userDataS') || '[]');
+
   editor!: Editor;
   toolbar: Toolbar = [
     ['bold', 'italic'],