penambahan icon pada master category
This commit is contained in:
		
							parent
							
								
									fc9947da15
								
							
						
					
					
						commit
						89203b9984
					
				| @ -2,6 +2,7 @@ | |||||||
|   [items]="icons" |   [items]="icons" | ||||||
|   bindLabel="name" |   bindLabel="name" | ||||||
|   (change)="onSelect($event)" |   (change)="onSelect($event)" | ||||||
|  |   [(ngModel)]="selectedIcon" | ||||||
|   bindValue="icon" |   bindValue="icon" | ||||||
|   placeholder="Select an icon" |   placeholder="Select an icon" | ||||||
| > | > | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| import { Component, EventEmitter, Output } from "@angular/core"; | import { Component, EventEmitter, Input, Output } from "@angular/core"; | ||||||
| import { MasterService } from "../../service/master-api.service"; | import { MasterService } from "../../service/master-api.service"; | ||||||
| interface Icon { | interface Icon { | ||||||
|   name: string; |   name: string; | ||||||
| @ -10,7 +10,9 @@ interface Icon { | |||||||
|   styleUrls: ["./select-icon.component.css"], |   styleUrls: ["./select-icon.component.css"], | ||||||
| }) | }) | ||||||
| export class SelectIconComponent { | export class SelectIconComponent { | ||||||
|   @Output() iconSelected: EventEmitter<string> = new EventEmitter<string>(); |   // @Output() iconSelected: EventEmitter<string> = new EventEmitter<string>();
 | ||||||
|  |   @Output() iconSelected = new EventEmitter<string>(); | ||||||
|  |   @Input() selectedIcon: string; | ||||||
|   icons: any[] = []; |   icons: any[] = []; | ||||||
|   constructor(private masterService: MasterService) {} |   constructor(private masterService: MasterService) {} | ||||||
|   ngOnInit(): void { |   ngOnInit(): void { | ||||||
| @ -20,6 +22,12 @@ export class SelectIconComponent { | |||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   onSelect(icon: Icon): void { |   onSelect(icon: Icon): void { | ||||||
|     this.iconSelected.emit(icon.icon); |     console.log(icon); | ||||||
|  |     if (icon) { | ||||||
|  |       this.iconSelected.emit(icon.icon); | ||||||
|  |     } else { | ||||||
|  |       this.iconSelected.emit(undefined); | ||||||
|  |     } | ||||||
|  |      | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -16,9 +16,10 @@ | |||||||
|           formControlName="name" |           formControlName="name" | ||||||
|         /> |         /> | ||||||
|       </div> |       </div> | ||||||
|       <div class="form-group col-md-6"> |       <div class="form-group col-md-6" *ngIf="category"> | ||||||
|         <label for="status" style="color: #ffffff">Icon:</label> |         <label for="status" style="color: #ffffff">Icon:</label> | ||||||
|         <app-select-icon (iconSelected)="onIconSelected($event)"></app-select-icon> |         <app-select-icon [selectedIcon]="selectedIcon" (iconSelected)="onIconSelected($event)"></app-select-icon> | ||||||
|  |         <!-- <input type="hidden" formControlName="icon"> --> | ||||||
|       </div> |       </div> | ||||||
|        |        | ||||||
|       <div class="form-group col-md-6"> |       <div class="form-group col-md-6"> | ||||||
|  | |||||||
| @ -12,6 +12,7 @@ export class AddEditMasterComponent implements OnInit { | |||||||
|   @Input() headerId: number; |   @Input() headerId: number; | ||||||
|   @Input() dataRow: any; |   @Input() dataRow: any; | ||||||
|   @Input() mode: any; |   @Input() mode: any; | ||||||
|  |   @Input() category: boolean = false; | ||||||
|   myForm: FormGroup; |   myForm: FormGroup; | ||||||
|   dataMasterStatus: any; |   dataMasterStatus: any; | ||||||
|   selectedIcon: string = ''; |   selectedIcon: string = ''; | ||||||
| @ -25,26 +26,41 @@ export class AddEditMasterComponent implements OnInit { | |||||||
|   ngOnInit() { |   ngOnInit() { | ||||||
|     this.createForm(); |     this.createForm(); | ||||||
|     this.dataListMaster(); |     this.dataListMaster(); | ||||||
|  |     console.log(this.dataRow); | ||||||
|  |      | ||||||
|     if (this.dataRow) { |     if (this.dataRow) { | ||||||
|       this.editForm(); |       this.editForm(); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   createForm() { |   createForm() { | ||||||
|     this.myForm = this.fb.group({ |     const formControls = { | ||||||
|       name: ["", Validators.required], |       name: ["", Validators.required], | ||||||
|       status: [2, Validators.required], |       status: [2, Validators.required], | ||||||
|       headerId: this.headerId, |       headerId: this.headerId | ||||||
|     }); |     }; | ||||||
|  | 
 | ||||||
|  |     if (this.category) { | ||||||
|  |       formControls['icon'] = [undefined, Validators.required]; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     this.myForm = this.fb.group(formControls); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   editForm() { |   editForm() { | ||||||
|     this.myForm = this.fb.group({ |     const formControls = { | ||||||
|       id: this.dataRow.id, |       id: this.dataRow.id, | ||||||
|       name: this.dataRow.name, |       name: this.dataRow.name, | ||||||
|       status: this.dataRow.status, |       status: this.dataRow.status, | ||||||
|       headerId: this.dataRow.headerId, |       headerId: this.dataRow.headerId, | ||||||
|     }); |     }; | ||||||
|  | 
 | ||||||
|  |     if (this.category) { | ||||||
|  |       formControls['icon'] = this.dataRow.icon || ""; | ||||||
|  |       this.selectedIcon = this.dataRow.icon || ""; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     this.myForm = this.fb.group(formControls); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   dataListMaster() { |   dataListMaster() { | ||||||
| @ -70,7 +86,9 @@ export class AddEditMasterComponent implements OnInit { | |||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   onIconSelected(icon: string): void { |   onIconSelected(icon: string): void { | ||||||
|  |     console.log(icon); | ||||||
|  |      | ||||||
|     this.selectedIcon = icon; |     this.selectedIcon = icon; | ||||||
|     this.myForm.get('selectedIcon').setValue(icon);  // Set nilai selectedIcon ke dalam form
 |     this.myForm.get('icon').setValue(icon);  // Set nilai icon ke dalam form
 | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -78,6 +78,21 @@ | |||||||
|                         <p style="color: #ffffff">{{ value }}</p> |                         <p style="color: #ffffff">{{ value }}</p> | ||||||
|                         </ng-template> |                         </ng-template> | ||||||
|                       </ngx-datatable-column> |                       </ngx-datatable-column> | ||||||
|  |                       <ngx-datatable-column | ||||||
|  |                         name="icon" | ||||||
|  |                         [flexGrow]="1" | ||||||
|  |                         [minWidth]="90" | ||||||
|  |                       > | ||||||
|  |                         <ng-template ngx-datatable-header-template> | ||||||
|  |                           <span style="color: #ffffff">Icon</span> | ||||||
|  |                         </ng-template> | ||||||
|  |                         <ng-template | ||||||
|  |                           let-value="value" | ||||||
|  |                           ngx-datatable-cell-template | ||||||
|  |                         > | ||||||
|  |                         <p style="color: #ffffff">{{ value }}</p> | ||||||
|  |                         </ng-template> | ||||||
|  |                       </ngx-datatable-column> | ||||||
|                       <ngx-datatable-column |                       <ngx-datatable-column | ||||||
|                         name="Status" |                         name="Status" | ||||||
|                         [flexGrow]="1" |                         [flexGrow]="1" | ||||||
|  | |||||||
| @ -54,6 +54,8 @@ export class MasterCategoryComponent implements OnInit { | |||||||
|         (item) => item.name === "master_category" |         (item) => item.name === "master_category" | ||||||
|       ); |       ); | ||||||
|       this.filteredRows = this.dataMasterCategori.headerDetailParam; |       this.filteredRows = this.dataMasterCategori.headerDetailParam; | ||||||
|  |       console.log(this.filteredRows); | ||||||
|  |        | ||||||
|     }); |     }); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| @ -85,6 +87,7 @@ export class MasterCategoryComponent implements OnInit { | |||||||
| 
 | 
 | ||||||
|     modalRef.componentInstance.headerId = this.dataMasterCategori.id; |     modalRef.componentInstance.headerId = this.dataMasterCategori.id; | ||||||
|     modalRef.componentInstance.mode = "add"; |     modalRef.componentInstance.mode = "add"; | ||||||
|  |     modalRef.componentInstance.category = true; | ||||||
|     modalRef.result.then( |     modalRef.result.then( | ||||||
|       (result) => { |       (result) => { | ||||||
|         console.log(result); |         console.log(result); | ||||||
| @ -121,6 +124,7 @@ export class MasterCategoryComponent implements OnInit { | |||||||
|     modalRef.componentInstance.headerId = this.dataMasterCategori.id; |     modalRef.componentInstance.headerId = this.dataMasterCategori.id; | ||||||
|     modalRef.componentInstance.dataRow = row; |     modalRef.componentInstance.dataRow = row; | ||||||
|     modalRef.componentInstance.mode = "edit"; |     modalRef.componentInstance.mode = "edit"; | ||||||
|  |     modalRef.componentInstance.category = true; | ||||||
|     modalRef.result.then( |     modalRef.result.then( | ||||||
|       (result) => { |       (result) => { | ||||||
|         console.log(result); |         console.log(result); | ||||||
|  | |||||||
| @ -16,6 +16,18 @@ | |||||||
|           formControlName="name" |           formControlName="name" | ||||||
|         /> |         /> | ||||||
|       </div> |       </div> | ||||||
|  |       <div class="form-group col-md-6"> | ||||||
|  |         <label for="statusId" style="color: #ffffff">Building:</label> | ||||||
|  |         <select | ||||||
|  |           id="projectinput5" | ||||||
|  |           class="form-control" | ||||||
|  |           formControlName="buildingId" | ||||||
|  |         > | ||||||
|  |           <option *ngFor="let data of filteredDataBuilding" [value]="data.id"> | ||||||
|  |             {{ data.name }} | ||||||
|  |           </option> | ||||||
|  |         </select> | ||||||
|  |       </div> | ||||||
|       <div class="form-group col-md-6"> |       <div class="form-group col-md-6"> | ||||||
|         <label for="description" style="color: #ffffff">Description:</label> |         <label for="description" style="color: #ffffff">Description:</label> | ||||||
|         <input |         <input | ||||||
| @ -25,8 +37,8 @@ | |||||||
|           formControlName="description" |           formControlName="description" | ||||||
|         /> |         /> | ||||||
|       </div> |       </div> | ||||||
|       <!-- <div class="form-group col-md-6"> |       <div class="form-group col-md-6"> | ||||||
|           <label for="statusId">Status:</label> |           <label for="statusId" style="color: #ffffff">Status:</label> | ||||||
|           <select |           <select | ||||||
|             id="projectinput5" |             id="projectinput5" | ||||||
|             class="form-control" |             class="form-control" | ||||||
| @ -36,7 +48,7 @@ | |||||||
|               {{ data.name }} |               {{ data.name }} | ||||||
|             </option> |             </option> | ||||||
|           </select> |           </select> | ||||||
|         </div> --> |         </div> | ||||||
|     </div> |     </div> | ||||||
|   </form> |   </form> | ||||||
| </div> | </div> | ||||||
|  | |||||||
| @ -15,7 +15,9 @@ export class AddEditMasterRoomComponent { | |||||||
| 
 | 
 | ||||||
|   data: any; |   data: any; | ||||||
|   dataStatus: any[]; |   dataStatus: any[]; | ||||||
|  |   dataBuilding: any[]; | ||||||
|   filteredDataStatus: any[]; |   filteredDataStatus: any[]; | ||||||
|  |   filteredDataBuilding: any[]; | ||||||
|   dataMasterStatus: any; |   dataMasterStatus: any; | ||||||
| 
 | 
 | ||||||
|   constructor( |   constructor( | ||||||
| @ -27,6 +29,7 @@ export class AddEditMasterRoomComponent { | |||||||
|   ngOnInit() { |   ngOnInit() { | ||||||
|     this.createForm(); |     this.createForm(); | ||||||
|     this.listDataStatus(); |     this.listDataStatus(); | ||||||
|  |     this.listDataBuilding(); | ||||||
| 
 | 
 | ||||||
|     if (this.dataRow) { |     if (this.dataRow) { | ||||||
|       this.editForm(); |       this.editForm(); | ||||||
| @ -36,7 +39,8 @@ export class AddEditMasterRoomComponent { | |||||||
|   createForm() { |   createForm() { | ||||||
|     this.myForm = this.fb.group({ |     this.myForm = this.fb.group({ | ||||||
|       name: ["", Validators.required], |       name: ["", Validators.required], | ||||||
|       // statusId: [0, Validators.required],
 |       statusId: [0, Validators.required], | ||||||
|  |       buildingId: [0, Validators.required], | ||||||
|       description: ["", Validators.required], |       description: ["", Validators.required], | ||||||
|     }); |     }); | ||||||
|   } |   } | ||||||
| @ -45,7 +49,8 @@ export class AddEditMasterRoomComponent { | |||||||
|     this.myForm = this.fb.group({ |     this.myForm = this.fb.group({ | ||||||
|       id: this.dataRow.id, |       id: this.dataRow.id, | ||||||
|       name: this.dataRow.name, |       name: this.dataRow.name, | ||||||
|       // statusId: this.dataRow.statusId,
 |       statusId: this.dataRow.statusId, | ||||||
|  |       buildingId: this.dataRow.buildingId, | ||||||
|       description: this.dataRow.description, |       description: this.dataRow.description, | ||||||
|     }); |     }); | ||||||
|   } |   } | ||||||
| @ -58,8 +63,19 @@ export class AddEditMasterRoomComponent { | |||||||
|       ); |       ); | ||||||
|       this.dataStatus = this.dataMasterStatus.headerDetailParam; |       this.dataStatus = this.dataMasterStatus.headerDetailParam; | ||||||
|       this.filteredDataStatus = this.dataStatus.filter( |       this.filteredDataStatus = this.dataStatus.filter( | ||||||
|         (item) => item.status === "1" |         (item) => item.status === "2" | ||||||
|       ); |       ); | ||||||
|  |        | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   listDataBuilding(){ | ||||||
|  |     this.monitoringApiService.getMasterBuildingData().subscribe((res) => { | ||||||
|  |       this.dataBuilding = res.results.data; | ||||||
|  |       this.filteredDataBuilding = this.dataBuilding.filter( | ||||||
|  |         (item) => item.statusId === 2 | ||||||
|  |       ); | ||||||
|  |        | ||||||
|     }); |     }); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| @ -68,11 +84,4 @@ export class AddEditMasterRoomComponent { | |||||||
|       this.activeModal.close(this.myForm.value); |       this.activeModal.close(this.myForm.value); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 |  | ||||||
|   addDepartment() { |  | ||||||
|     let newDept = prompt("Enter new department name:"); |  | ||||||
|     if (newDept) { |  | ||||||
|       alert(`Department ${newDept} added! (simulated)`); |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -64,23 +64,55 @@ | |||||||
|                         </ng-template> |                         </ng-template> | ||||||
|                       </ngx-datatable-column> |                       </ngx-datatable-column> | ||||||
|                       <ngx-datatable-column |                       <ngx-datatable-column | ||||||
|                         name="Name" |                         name="roomEntity" | ||||||
|                         [flexGrow]="1" |                         [flexGrow]="1" | ||||||
|                         [minWidth]="90" |                         [minWidth]="90" | ||||||
|                       > |                       > | ||||||
|                         <ng-template ngx-datatable-header-template> |                         <ng-template ngx-datatable-header-template> | ||||||
|                           <span style="color: #ffffff">Room Name</span> |                           <span style="color: #ffffff">Room</span> | ||||||
|                         </ng-template> |                         </ng-template> | ||||||
|                         <ng-template |                         <ng-template | ||||||
|                           let-value="value" |                           let-value="value" | ||||||
|                           ngx-datatable-cell-template |                           ngx-datatable-cell-template | ||||||
|                         > |                         > | ||||||
|                         <p style="color: #ffffff">{{ value }}</p> |                         <p style="color: #ffffff">{{ value.name }}</p> | ||||||
|                         </ng-template> |                         </ng-template> | ||||||
|                       </ngx-datatable-column> |                       </ngx-datatable-column> | ||||||
| 
 | 
 | ||||||
|                       <ngx-datatable-column |                       <ngx-datatable-column | ||||||
|                         name="statusId" |                         name="buildingEntity" | ||||||
|  |                         [flexGrow]="1" | ||||||
|  |                         [minWidth]="90" | ||||||
|  |                       > | ||||||
|  |                         <ng-template ngx-datatable-header-template> | ||||||
|  |                           <span style="color: #ffffff">Building</span> | ||||||
|  |                         </ng-template> | ||||||
|  |                         <ng-template | ||||||
|  |                           let-value="value" | ||||||
|  |                           ngx-datatable-cell-template | ||||||
|  |                         > | ||||||
|  |                         <p style="color: #ffffff">{{ value.name }}</p> | ||||||
|  |                         </ng-template> | ||||||
|  |                       </ngx-datatable-column> | ||||||
|  | 
 | ||||||
|  |                       <ngx-datatable-column | ||||||
|  |                         name="roomEntity" | ||||||
|  |                         [flexGrow]="1" | ||||||
|  |                         [minWidth]="90" | ||||||
|  |                       > | ||||||
|  |                         <ng-template ngx-datatable-header-template> | ||||||
|  |                           <span style="color: #ffffff">Description</span> | ||||||
|  |                         </ng-template> | ||||||
|  |                         <ng-template | ||||||
|  |                           ngx-datatable-cell-template | ||||||
|  |                           let-value="value" | ||||||
|  |                         > | ||||||
|  |                         <p style="color: #ffffff">{{ value.description }}</p> | ||||||
|  |                         </ng-template> | ||||||
|  |                       </ngx-datatable-column> | ||||||
|  | 
 | ||||||
|  |                       <ngx-datatable-column | ||||||
|  |                         name="statusEntity" | ||||||
|                         [flexGrow]="1" |                         [flexGrow]="1" | ||||||
|                         [minWidth]="90" |                         [minWidth]="90" | ||||||
|                       > |                       > | ||||||
| @ -91,7 +123,7 @@ | |||||||
|                           ngx-datatable-cell-template |                           ngx-datatable-cell-template | ||||||
|                           let-value="value" |                           let-value="value" | ||||||
|                         > |                         > | ||||||
|                         <p style="color: #ffffff">{{ value === 2 ? "Aktif" : "Tidak Aktif" }}</p> |                         <p style="color: #ffffff">{{ value.name }}</p> | ||||||
|                         </ng-template> |                         </ng-template> | ||||||
|                       </ngx-datatable-column> |                       </ngx-datatable-column> | ||||||
|                       <ngx-datatable-column |                       <ngx-datatable-column | ||||||
|  | |||||||
| @ -1,14 +1,14 @@ | |||||||
| import { Component } from '@angular/core'; | import { Component } from "@angular/core"; | ||||||
| import { AddEditMasterRoomComponent } from './add-edit-master-room/add-edit-master-room.component'; | import { AddEditMasterRoomComponent } from "./add-edit-master-room/add-edit-master-room.component"; | ||||||
| import { TableApiService } from 'src/app/_services/table-api.service'; | import { TableApiService } from "src/app/_services/table-api.service"; | ||||||
| import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; | import { NgbModal } from "@ng-bootstrap/ng-bootstrap"; | ||||||
| import { Router } from '@angular/router'; | import { Router } from "@angular/router"; | ||||||
| import { BuildingService } from '../../service/monitoring-api.service'; | import { BuildingService } from "../../service/monitoring-api.service"; | ||||||
| 
 | 
 | ||||||
| @Component({ | @Component({ | ||||||
|   selector: 'app-master-room', |   selector: "app-master-room", | ||||||
|   templateUrl: './master-room.component.html', |   templateUrl: "./master-room.component.html", | ||||||
|   styleUrls: ['./master-room.component.css'] |   styleUrls: ["./master-room.component.css"], | ||||||
| }) | }) | ||||||
| export class MasterRoomComponent { | export class MasterRoomComponent { | ||||||
|   data: any; |   data: any; | ||||||
| @ -18,9 +18,7 @@ export class MasterRoomComponent { | |||||||
|   public breadcrumb: any; |   public breadcrumb: any; | ||||||
| 
 | 
 | ||||||
|   constructor( |   constructor( | ||||||
|     private tableApiservice: TableApiService, |  | ||||||
|     private modalService: NgbModal, |     private modalService: NgbModal, | ||||||
|     private router: Router, |  | ||||||
|     private monitoringApiService: BuildingService |     private monitoringApiService: BuildingService | ||||||
|   ) {} |   ) {} | ||||||
| 
 | 
 | ||||||
| @ -42,9 +40,9 @@ export class MasterRoomComponent { | |||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   fetchData() { |   fetchData() { | ||||||
|     this.monitoringApiService.getMasterRoomData().subscribe((res) => { |     this.monitoringApiService.getBuildingRoomList().subscribe((res) => { | ||||||
|       this.data = res.results.data; |       this.data = res; | ||||||
|       this.filteredRows = this.data; |       this.filteredRows = this.data.results.data; | ||||||
|     }); |     }); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| @ -75,10 +73,23 @@ export class MasterRoomComponent { | |||||||
|     modalRef.result.then( |     modalRef.result.then( | ||||||
|       (result) => { |       (result) => { | ||||||
|         if (result) { |         if (result) { | ||||||
|  |           const filteredData = { | ||||||
|  |             name: result.name, | ||||||
|  |             description: result.description, | ||||||
|  |           }; | ||||||
|           this.monitoringApiService |           this.monitoringApiService | ||||||
|             .postMasterRoomParam(result) |             .postMasterRoomParam(filteredData) | ||||||
|             .subscribe((res) => { |             .subscribe((res) => { | ||||||
|               this.fetchData(); |               const transformedData = { | ||||||
|  |                 buildingId: result.buildingId, | ||||||
|  |                 roomId: res.data.id, | ||||||
|  |                 statusId: result.statusId, | ||||||
|  |               }; | ||||||
|  |               this.monitoringApiService | ||||||
|  |                 .postBatchBuilding(transformedData) | ||||||
|  |                 .subscribe((res) => { | ||||||
|  |                   this.fetchData(); | ||||||
|  |                 }); | ||||||
|             }); |             }); | ||||||
|         } |         } | ||||||
|       }, |       }, | ||||||
|  | |||||||
| @ -16,6 +16,14 @@ | |||||||
|       "name": "Plug Line", |       "name": "Plug Line", | ||||||
|       "icon": "ri-plug-2-line" |       "icon": "ri-plug-2-line" | ||||||
|     }, |     }, | ||||||
|  |     { | ||||||
|  |       "name": "Camera Line", | ||||||
|  |       "icon": "ri-dv-line" | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       "name": "Camera Fill", | ||||||
|  |       "icon": "ri-dv-fill" | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|       "name": "Airplay Fill", |       "name": "Airplay Fill", | ||||||
|       "icon": "ri-airplay-fill" |       "icon": "ri-airplay-fill" | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user