to do
This commit is contained in:
		
							parent
							
								
									0b738ca7ca
								
							
						
					
					
						commit
						4c135c4901
					
				| @ -298,10 +298,10 @@ | |||||||
|     <tr> |     <tr> | ||||||
|         <td></td> |         <td></td> | ||||||
|         <td> |         <td> | ||||||
|           <input [(ngModel)]="todo" placeholder="Add Todo" class="clr-input todo-input"> |           <input [(ngModel)]="todo" (keyup.enter)="addTodo(todo)" placeholder="Add Todo" class="clr-input todo-input"> | ||||||
|         </td> |         </td> | ||||||
|         <td style="text-align:right"> |         <td style="text-align:right"> | ||||||
|             <a  routerLink="." color='primary' (click)="addTodo(todo)"> |             <a color='primary' (click)="addTodo(todo)" class="add-button"> | ||||||
|                 <clr-icon shape="plus"></clr-icon> |                 <clr-icon shape="plus"></clr-icon> | ||||||
|             </a> |             </a> | ||||||
|         </td> |         </td> | ||||||
|  | |||||||
| @ -1,4 +1,5 @@ | |||||||
| import { Component, OnInit, Input, OnChanges, SimpleChanges } from '@angular/core'; | import { Component, OnInit, Input, OnChanges, SimpleChanges } from '@angular/core'; | ||||||
|  | import { Dashboard3Service } from 'src/app/services/builder/dashboard3.service'; | ||||||
| import { FilterService } from '../../common-filter/filter.service'; | import { FilterService } from '../../common-filter/filter.service'; | ||||||
| import { Subscription } from 'rxjs'; | import { Subscription } from 'rxjs'; | ||||||
| 
 | 
 | ||||||
| @ -39,16 +40,22 @@ export class ToDoChartComponent implements OnInit, OnChanges { | |||||||
|   currentDrilldownLevel: number = 0; // Current drilldown level (0 = base level)
 |   currentDrilldownLevel: number = 0; // Current drilldown level (0 = base level)
 | ||||||
|   originalTodoList: string[] = []; |   originalTodoList: string[] = []; | ||||||
| 
 | 
 | ||||||
|   constructor(private filterService: FilterService) { } |   constructor( | ||||||
|  |     private dashboardService: Dashboard3Service, | ||||||
|  |     private filterService: FilterService | ||||||
|  |   ) { } | ||||||
|    |    | ||||||
|   ngOnInit(): void { |   ngOnInit(): void { | ||||||
|     // Subscribe to filter changes
 |     // Subscribe to filter changes
 | ||||||
|     this.subscriptions.push( |     this.subscriptions.push( | ||||||
|       this.filterService.filterState$.subscribe(filters => { |       this.filterService.filterState$.subscribe(filters => { | ||||||
|         // When filters change, refresh the chart data
 |         // When filters change, refresh the chart data
 | ||||||
|         // For To Do chart, this would trigger a refresh of the todo list
 |         this.fetchToDoData(); | ||||||
|       }) |       }) | ||||||
|     ); |     ); | ||||||
|  |      | ||||||
|  |     // Initialize with default data
 | ||||||
|  |     this.fetchToDoData(); | ||||||
|   } |   } | ||||||
|    |    | ||||||
|   ngOnChanges(changes: SimpleChanges): void { |   ngOnChanges(changes: SimpleChanges): void { | ||||||
| @ -76,7 +83,7 @@ export class ToDoChartComponent implements OnInit, OnChanges { | |||||||
|    |    | ||||||
|   data: any; |   data: any; | ||||||
|   todo: string; |   todo: string; | ||||||
|   todoList = ['todo 1']; |   todoList: string[] = []; | ||||||
|    |    | ||||||
|   // Add properties for filter functionality
 |   // Add properties for filter functionality
 | ||||||
|   private openMultiselects: Map<string, string> = new Map(); // Map of filterId -> context
 |   private openMultiselects: Map<string, string> = new Map(); // Map of filterId -> context
 | ||||||
| @ -88,22 +95,107 @@ export class ToDoChartComponent implements OnInit, OnChanges { | |||||||
|    |    | ||||||
|   fetchToDoData(): void { |   fetchToDoData(): void { | ||||||
|     // If we have the necessary data, fetch to-do data from the service
 |     // If we have the necessary data, fetch to-do data from the service
 | ||||||
|     if (this.table) { |     if (this.table && this.xAxis) { | ||||||
|       console.log('Fetching to-do data for:', { table: this.table }); |       console.log('Fetching to-do data for:', { table: this.table, xAxis: this.xAxis, connection: this.connection }); | ||||||
|        |        | ||||||
|       // For to-do chart, we might want to fetch data differently
 |       // Convert baseFilters to filter parameters
 | ||||||
|       // This is a placeholder implementation - you may need to adjust based on your API
 |       let filterParams = ''; | ||||||
|       console.log('To-do chart would fetch data from table:', this.table); |       if (this.baseFilters && this.baseFilters.length > 0) { | ||||||
|  |         const filterObj = {}; | ||||||
|  |         this.baseFilters.forEach(filter => { | ||||||
|  |           if (filter.field && filter.value) { | ||||||
|  |             filterObj[filter.field] = filter.value; | ||||||
|  |           } | ||||||
|  |         }); | ||||||
|  |         if (Object.keys(filterObj).length > 0) { | ||||||
|  |           filterParams = JSON.stringify(filterObj); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|        |        | ||||||
|       // In a real implementation, you would connect to your service here
 |       // Add common filters to filter parameters
 | ||||||
|       // For now, we'll just keep the default to-do list
 |       const commonFilters = this.filterService.getFilterValues(); | ||||||
|  |       console.log('Common filters from service:', commonFilters); | ||||||
|  |        | ||||||
|  |       if (Object.keys(commonFilters).length > 0) { | ||||||
|  |         // Merge common filters with base filters
 | ||||||
|  |         const mergedFilterObj = {}; | ||||||
|  |          | ||||||
|  |         // Add base filters first
 | ||||||
|  |         if (filterParams) { | ||||||
|  |           try { | ||||||
|  |             const baseFilterObj = JSON.parse(filterParams); | ||||||
|  |             Object.assign(mergedFilterObj, baseFilterObj); | ||||||
|  |           } catch (e) { | ||||||
|  |             console.warn('Failed to parse base filter parameters:', e); | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |          | ||||||
|  |         // Add common filters using the field name as the key, not the filter id
 | ||||||
|  |         Object.keys(commonFilters).forEach(filterId => { | ||||||
|  |           const filterValue = commonFilters[filterId]; | ||||||
|  |           // Find the filter definition to get the field name
 | ||||||
|  |           const filterDef = this.filterService.getFilters().find(f => f.id === filterId); | ||||||
|  |           if (filterDef && filterDef.field) { | ||||||
|  |             const fieldName = filterDef.field; | ||||||
|  |             if (filterValue !== undefined && filterValue !== null && filterValue !== '') { | ||||||
|  |               mergedFilterObj[fieldName] = filterValue; | ||||||
|  |             } | ||||||
|  |           } else { | ||||||
|  |             // Fallback to using filterId as field name if no field is defined
 | ||||||
|  |             if (filterValue !== undefined && filterValue !== null && filterValue !== '') { | ||||||
|  |               mergedFilterObj[filterId] = filterValue; | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |         }); | ||||||
|  |          | ||||||
|  |         if (Object.keys(mergedFilterObj).length > 0) { | ||||||
|  |           filterParams = JSON.stringify(mergedFilterObj); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |        | ||||||
|  |       console.log('Final filter parameters:', filterParams); | ||||||
|  |        | ||||||
|  |       // Fetch data from the dashboard service
 | ||||||
|  |       this.dashboardService.getChartData(this.table, 'todo', this.xAxis, '', this.connection, '', '', filterParams).subscribe( | ||||||
|  |         (data: any) => { | ||||||
|  |           console.log('Received to-do chart data:', data); | ||||||
|  |           if (data === null) { | ||||||
|  |             console.warn('To-do chart API returned null data. Check if the API endpoint is working correctly.'); | ||||||
|  |             this.todoList = []; | ||||||
|  |             return; | ||||||
|  |           } | ||||||
|  |            | ||||||
|  |           // Handle the actual data structure returned by the API
 | ||||||
|  |           if (data && data.chartLabels) { | ||||||
|  |             // Use chartLabels as the todo items
 | ||||||
|  |             this.todoList = data.chartLabels; | ||||||
|  |           } else if (data && data.labels) { | ||||||
|  |             // Fallback to labels if chartLabels is not available
 | ||||||
|  |             this.todoList = data.labels; | ||||||
|  |           } else { | ||||||
|  |             console.warn('To-do chart received data does not have expected structure', data); | ||||||
|  |             this.todoList = []; | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         (error) => { | ||||||
|  |           console.error('Error fetching to-do chart data:', error); | ||||||
|  |           this.todoList = []; | ||||||
|  |         } | ||||||
|  |       ); | ||||||
|     } else { |     } else { | ||||||
|       console.log('Missing required data for to-do chart:', { table: this.table }); |       console.log('Missing required data for to-do chart:', { table: this.table, xAxis: this.xAxis }); | ||||||
|  |       // Initialize with default data if no table is specified
 | ||||||
|  |       if (this.todoList.length === 0) { | ||||||
|  |         this.todoList = ['Sample Task 1', 'Sample Task 2', 'Sample Task 3']; | ||||||
|  |       } | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   public addTodo(todo: string) { |   public addTodo(todo: string) { | ||||||
|     this.todoList.push(todo); |     if (todo && todo.trim() !== '') { | ||||||
|  |       this.todoList.push(todo.trim()); | ||||||
|  |       this.todo = ''; // Clear the input field
 | ||||||
|  |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   public removeTodo(todoIx: number) { |   public removeTodo(todoIx: number) { | ||||||
| @ -112,6 +204,37 @@ export class ToDoChartComponent implements OnInit, OnChanges { | |||||||
|     } |     } | ||||||
|   } |   } | ||||||
|    |    | ||||||
|  |   // Navigate back to previous drilldown level
 | ||||||
|  |   navigateBack(): void { | ||||||
|  |     console.log('Navigating back, current stack:', this.drilldownStack); | ||||||
|  |     console.log('Current level:', this.currentDrilldownLevel); | ||||||
|  |      | ||||||
|  |     if (this.drilldownStack.length > 0) { | ||||||
|  |       // Remove the last entry from the stack
 | ||||||
|  |       const removedEntry = this.drilldownStack.pop(); | ||||||
|  |       console.log('Removed entry from stack:', removedEntry); | ||||||
|  |        | ||||||
|  |       // Update the current drilldown level
 | ||||||
|  |       this.currentDrilldownLevel = this.drilldownStack.length; | ||||||
|  |       console.log('New level after pop:', this.currentDrilldownLevel); | ||||||
|  |       console.log('Stack after pop:', this.drilldownStack); | ||||||
|  |        | ||||||
|  |       if (this.drilldownStack.length > 0) { | ||||||
|  |         // Fetch data for the previous level
 | ||||||
|  |         console.log('Fetching data for previous level'); | ||||||
|  |         this.fetchToDoData(); | ||||||
|  |       } else { | ||||||
|  |         // Back to base level
 | ||||||
|  |         console.log('Back to base level, resetting to original data'); | ||||||
|  |         this.todoList = [...this.originalTodoList]; | ||||||
|  |       } | ||||||
|  |     } else { | ||||||
|  |       // Already at base level, reset to original data
 | ||||||
|  |       console.log('Already at base level, resetting to original data'); | ||||||
|  |       this.todoList = [...this.originalTodoList]; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |    | ||||||
|   // Initialize filter values with proper default values based on type
 |   // Initialize filter values with proper default values based on type
 | ||||||
|   private initializeFilterValues(): void { |   private initializeFilterValues(): void { | ||||||
|     console.log('Initializing filter values'); |     console.log('Initializing filter values'); | ||||||
| @ -249,21 +372,21 @@ export class ToDoChartComponent implements OnInit, OnChanges { | |||||||
|   onBaseFilterChange(filter: any): void { |   onBaseFilterChange(filter: any): void { | ||||||
|     console.log('Base filter changed:', filter); |     console.log('Base filter changed:', filter); | ||||||
|     // Refresh data when filter changes
 |     // Refresh data when filter changes
 | ||||||
|     // For To Do chart, this would trigger a refresh of the todo list
 |     this.fetchToDoData(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   // Handle drilldown filter changes
 |   // Handle drilldown filter changes
 | ||||||
|   onDrilldownFilterChange(filter: any): void { |   onDrilldownFilterChange(filter: any): void { | ||||||
|     console.log('Drilldown filter changed:', filter); |     console.log('Drilldown filter changed:', filter); | ||||||
|     // Refresh data when filter changes
 |     // Refresh data when filter changes
 | ||||||
|     // For To Do chart, this would trigger a refresh of the todo list
 |     this.fetchToDoData(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   // Handle layer filter changes
 |   // Handle layer filter changes
 | ||||||
|   onLayerFilterChange(filter: any): void { |   onLayerFilterChange(filter: any): void { | ||||||
|     console.log('Layer filter changed:', filter); |     console.log('Layer filter changed:', filter); | ||||||
|     // Refresh data when filter changes
 |     // Refresh data when filter changes
 | ||||||
|     // For To Do chart, this would trigger a refresh of the todo list
 |     this.fetchToDoData(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   // Handle multiselect changes
 |   // Handle multiselect changes
 | ||||||
| @ -286,21 +409,21 @@ export class ToDoChartComponent implements OnInit, OnChanges { | |||||||
|     } |     } | ||||||
|      |      | ||||||
|     // Refresh data when filter changes
 |     // Refresh data when filter changes
 | ||||||
|     // For To Do chart, this would trigger a refresh of the todo list
 |     this.fetchToDoData(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   // Handle date range changes
 |   // Handle date range changes
 | ||||||
|   onDateRangeChange(filter: any, dateRange: { start: string | null, end: string | null }): void { |   onDateRangeChange(filter: any, dateRange: { start: string | null, end: string | null }): void { | ||||||
|     filter.value = dateRange; |     filter.value = dateRange; | ||||||
|     // Refresh data when filter changes
 |     // Refresh data when filter changes
 | ||||||
|     // For To Do chart, this would trigger a refresh of the todo list
 |     this.fetchToDoData(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   // Handle toggle changes
 |   // Handle toggle changes
 | ||||||
|   onToggleChange(filter: any, checked: boolean): void { |   onToggleChange(filter: any, checked: boolean): void { | ||||||
|     filter.value = checked; |     filter.value = checked; | ||||||
|     // Refresh data when filter changes
 |     // Refresh data when filter changes
 | ||||||
|     // For To Do chart, this would trigger a refresh of the todo list
 |     this.fetchToDoData(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   // Toggle multiselect dropdown visibility
 |   // Toggle multiselect dropdown visibility
 | ||||||
| @ -419,7 +542,7 @@ export class ToDoChartComponent implements OnInit, OnChanges { | |||||||
|     this.openMultiselects.clear(); |     this.openMultiselects.clear(); | ||||||
|      |      | ||||||
|     // Refresh data
 |     // Refresh data
 | ||||||
|     // For To Do chart, this would trigger a refresh of the todo list
 |     this.fetchToDoData(); | ||||||
|   } |   } | ||||||
|    |    | ||||||
|   ngOnDestroy(): void { |   ngOnDestroy(): void { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user