penambahan page monitoring building dan master category
This commit is contained in:
		
							parent
							
								
									5187f4e29f
								
							
						
					
					
						commit
						fcdafc8aea
					
				| @ -1,29 +1,66 @@ | ||||
| <footer id="footer" class="footer footer-static footer-light navbar-border navbar-shadow" *ngIf="showFooter"> | ||||
|   <p class="clearfix blue-grey lighten-2 text-sm-center mb-0 px-2"><span | ||||
|       class="float-md-left d-block d-md-inline-block">Copyright © 2022 <a [routerLink]="" | ||||
|         class="text-bold-800 grey darken-2" href="https://themeforest.net/user/pixinvent/portfolio?ref=pixinvent" | ||||
|         target="_blank">PIXINVENT </a></span><span *ngIf="!hideMadeWithLove" | ||||
|       class="float-md-right d-block d-md-inline-block d-none d-lg-block">Hand-crafted & Made with <i | ||||
|         class="feather ft-heart pink"></i> | ||||
|       <span id="scroll-top"></span></span></p> | ||||
| <footer | ||||
|   id="footer" | ||||
|   class="footer footer-static footer-light navbar-border navbar-shadow" | ||||
|   *ngIf="showFooter" | ||||
| > | ||||
|   <p class="clearfix blue-grey lighten-2 text-sm-center mb-0 px-2"> | ||||
|     <span class="float-md-left d-block d-md-inline-block" | ||||
|       >Copyright © 2024 | ||||
|       <a | ||||
|         [routerLink]="" | ||||
|         class="text-bold-800 grey darken-2" | ||||
|         href="https://allbestsistem.com/" | ||||
|         target="_blank" | ||||
|         >Allbest Solusi Sistem | ||||
|       </a></span | ||||
|     > | ||||
|   </p> | ||||
| </footer> | ||||
| 
 | ||||
| <footer id="footer" class="footer fixed-bottom footer-light navbar-border navbar-shadow" *ngIf="fixedFooter"> | ||||
|   <p class="clearfix blue-grey lighten-2 text-sm-center mb-0 px-2"><span | ||||
|       class="float-md-left d-block d-md-inline-block">Copyright © 2022 <a [routerLink]="" | ||||
|         class="text-bold-800 grey darken-2" href="https://themeforest.net/user/pixinvent/portfolio?ref=pixinvent" | ||||
|         target="_blank">PIXINVENT </a></span><span *ngIf="!hideMadeWithLove" | ||||
|       class="float-md-right d-block d-md-inline-block d-none d-lg-block">Hand-crafted & Made with <i | ||||
|         class="feather ft-heart pink"></i> | ||||
|       <span id="scroll-top"></span></span></p> | ||||
| <footer | ||||
|   id="footer" | ||||
|   class="footer fixed-bottom footer-light navbar-border navbar-shadow" | ||||
|   *ngIf="fixedFooter" | ||||
| > | ||||
|   <p class="clearfix blue-grey lighten-2 text-sm-center mb-0 px-2"> | ||||
|     <span class="float-md-left d-block d-md-inline-block" | ||||
|       >Copyright © 2022 | ||||
|       <a | ||||
|         [routerLink]="" | ||||
|         class="text-bold-800 grey darken-2" | ||||
|         href="https://themeforest.net/user/pixinvent/portfolio?ref=pixinvent" | ||||
|         target="_blank" | ||||
|         >PIXINVENT | ||||
|       </a></span | ||||
|     ><span | ||||
|       *ngIf="!hideMadeWithLove" | ||||
|       class="float-md-right d-block d-md-inline-block d-none d-lg-block" | ||||
|       >Hand-crafted & Made with <i class="feather ft-heart pink"></i> | ||||
|       <span id="scroll-top"></span | ||||
|     ></span> | ||||
|   </p> | ||||
| </footer> | ||||
| 
 | ||||
| <footer id="footer" class="footer fixed-bottom footer-dark navbar-border navbar-shadow" *ngIf="darkFooter"> | ||||
|   <p class="clearfix blue-grey lighten-2 text-sm-center mb-0 px-2"><span | ||||
|       class="float-md-left d-block d-md-inline-block">Copyright © 2022 <a [routerLink]="" | ||||
|         class="text-bold-800 grey darken-2" href="https://themeforest.net/user/pixinvent/portfolio?ref=pixinvent" | ||||
|         target="_blank">PIXINVENT </a></span><span *ngIf="!hideMadeWithLove" | ||||
|       class="float-md-right d-block d-md-inline-block d-none d-lg-block">Hand-crafted & Made with <i | ||||
|         class="feather ft-heart pink"></i> | ||||
|       <span id="scroll-top"></span></span></p> | ||||
| <footer | ||||
|   id="footer" | ||||
|   class="footer fixed-bottom footer-dark navbar-border navbar-shadow" | ||||
|   *ngIf="darkFooter" | ||||
| > | ||||
|   <p class="clearfix blue-grey lighten-2 text-sm-center mb-0 px-2"> | ||||
|     <span class="float-md-left d-block d-md-inline-block" | ||||
|       >Copyright © 2022 | ||||
|       <a | ||||
|         [routerLink]="" | ||||
|         class="text-bold-800 grey darken-2" | ||||
|         href="https://themeforest.net/user/pixinvent/portfolio?ref=pixinvent" | ||||
|         target="_blank" | ||||
|         >PIXINVENT | ||||
|       </a></span | ||||
|     ><span | ||||
|       *ngIf="!hideMadeWithLove" | ||||
|       class="float-md-right d-block d-md-inline-block d-none d-lg-block" | ||||
|       >Hand-crafted & Made with <i class="feather ft-heart pink"></i> | ||||
|       <span id="scroll-top"></span | ||||
|     ></span> | ||||
|   </p> | ||||
| </footer> | ||||
|  | ||||
| @ -38,7 +38,7 @@ | ||||
|                 <div class="card-dashboard"> | ||||
|                   <ngx-datatable | ||||
|                     class="bootstrap table-bordered" | ||||
|                     [limit]="7" | ||||
|                     [limit]="10" | ||||
|                     [rows]="filteredRows" | ||||
|                     [columnMode]="'force'" | ||||
|                     [headerHeight]="50" | ||||
| @ -65,7 +65,7 @@ | ||||
|                       [minWidth]="90" | ||||
|                     > | ||||
|                       <ng-template ngx-datatable-header-template> | ||||
|                         <span>Device Name</span> | ||||
|                         <span>Estimasi Cost Name</span> | ||||
|                       </ng-template> | ||||
|                       <ng-template | ||||
|                         let-value="value" | ||||
|  | ||||
| @ -38,7 +38,7 @@ | ||||
|                 <div class="card-dashboard"> | ||||
|                   <ngx-datatable | ||||
|                     class="bootstrap table-bordered" | ||||
|                     [limit]="7" | ||||
|                     [limit]="10" | ||||
|                     [rows]="filteredRows" | ||||
|                     [columnMode]="'force'" | ||||
|                     [headerHeight]="50" | ||||
|  | ||||
| @ -0,0 +1,190 @@ | ||||
| :host ::ng-deep .ngx-datatable.bootstrap .datatable-header .datatable-header-cell .datatable-header-cell-label { | ||||
|     font-family: inherit; | ||||
|     font-size: medium; | ||||
|     font-weight: bold; | ||||
|     color: #6B6F82; | ||||
| } | ||||
| :host ::ng-deep .ngx-datatable .datatable-row-center, .ngx-datatable .datatable-row-group, .ngx-datatable .datatable-row-right { | ||||
|     position: relative; | ||||
|     height: 50px !important; | ||||
| } | ||||
| 
 | ||||
| :host ::ng-deep .datatable-icon-right:before { | ||||
|     font-family: 'icofont'; | ||||
|     font-style: normal; | ||||
| } | ||||
| 
 | ||||
| :host ::ng-deep .datatable-icon-skip:before { | ||||
|     font-family: 'icofont'; | ||||
|     font-style: normal; | ||||
| } | ||||
| 
 | ||||
| :host ::ng-deep .datatable-icon-left:before { | ||||
|     font-family: 'icofont'; | ||||
|     font-style: normal; | ||||
| } | ||||
| 
 | ||||
| :host ::ng-deep .datatable-icon-left:before { | ||||
|     content: "\2039"; | ||||
|     font-size: x-large; | ||||
| } | ||||
| 
 | ||||
| :host ::ng-deep .datatable-icon-prev:before { | ||||
|     content: "\00AB"; | ||||
|     font-size: x-large; | ||||
| } | ||||
| 
 | ||||
| :host ::ng-deep .datatable-icon-right:before { | ||||
|     content: "\203A"; | ||||
|     font-size: x-large; | ||||
| } | ||||
| 
 | ||||
| :host ::ng-deep .datatable-icon-skip:before { | ||||
|     content: "\00BB"; | ||||
|     font-size: x-large; | ||||
| } | ||||
| 
 | ||||
| :host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-left, | ||||
| .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-right, | ||||
| .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-prev { | ||||
|     font-size: 16px; | ||||
|     line-height: 22px; | ||||
|     padding: 0px 09px; | ||||
|     background-color: #d4d2e7; | ||||
| } | ||||
| 
 | ||||
| :host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-right, | ||||
| .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-right { | ||||
|     font-size: 16px; | ||||
|     line-height: 22px; | ||||
|     padding: 0px 09px; | ||||
|     background-color: #d4d2e7; | ||||
| } | ||||
| 
 | ||||
| :host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-skip { | ||||
|     font-size: 16px; | ||||
|     line-height: 22px; | ||||
|     padding: 0px 09px; | ||||
|     background-color: #d4d2e7; | ||||
| } | ||||
| 
 | ||||
| :host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-prev { | ||||
|     font-size: 16px; | ||||
|     line-height: 22px; | ||||
|     padding: 0px 09px; | ||||
|     background-color: #d4d2e7; | ||||
| } | ||||
| 
 | ||||
| :host ::ng-deep .datatable-footer .datatable-pager ul li:not(.disabled).active a, | ||||
| .ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] ul[_ngcontent-c11] li[_ngcontent-c11]:not(.disabled):hover a[_ngcontent-c11] { | ||||
|     background-color: #d4d2e7; | ||||
|     font-weight: bold; | ||||
|     font-size: larger; | ||||
| } | ||||
| 
 | ||||
| :host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager a { | ||||
|     height: 32px; | ||||
|     min-width: 34px; | ||||
|     line-height: 22px; | ||||
|     padding: 0; | ||||
|     border-radius: 3px; | ||||
|     margin: 0 3px; | ||||
|     text-align: center; | ||||
|     vertical-align: top; | ||||
|     padding-top: 3px; | ||||
|     text-decoration: none; | ||||
|     vertical-align: bottom; | ||||
|     color: #7c8091; | ||||
| } | ||||
| 
 | ||||
| :host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-left, | ||||
| .ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], | ||||
| .ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { | ||||
|     font-size: 14px; | ||||
|     line-height: 9px; | ||||
|     padding: 0px 08px; | ||||
|     background-color: #ffffff; | ||||
| } | ||||
| 
 | ||||
| :host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-left, | ||||
| .ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], | ||||
| .ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { | ||||
|     font-size: 0px; | ||||
|     line-height: 22px; | ||||
|     padding: 0px 09px; | ||||
|     background-color: #ffffff; | ||||
| } | ||||
| 
 | ||||
| :host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-right, | ||||
| .ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], | ||||
| .ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { | ||||
|     font-size: 0px; | ||||
|     line-height: 22px; | ||||
|     padding: 0px 09px; | ||||
|     background-color: #ffffff; | ||||
| } | ||||
| 
 | ||||
| :host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-skip, | ||||
| .ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], | ||||
| .ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { | ||||
|     font-size: 0px; | ||||
|     line-height: 22px; | ||||
|     padding: 0px 09px; | ||||
|     background-color: #ffffff; | ||||
| } | ||||
| 
 | ||||
| :host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager .datatable-icon-prev, | ||||
| .ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-right[_ngcontent-c11], | ||||
| .ngx-datatable.bootstrap[_ngcontent-c11] .datatable-footer[_ngcontent-c11] .datatable-pager[_ngcontent-c11] .datatable-icon-prev[_ngcontent-c11] { | ||||
|     font-size: 0px; | ||||
|     line-height: 22px; | ||||
|     padding: 0px 09px; | ||||
|     background-color: #ffffff; | ||||
| } | ||||
| 
 | ||||
| :host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager ul li:not(.disabled):hover a { | ||||
|     background-color: #545454; | ||||
|     font-weight: bold; | ||||
|     color: white; | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| :host ::ng-deep .ngx-datatable.bootstrap .datatable-footer .datatable-pager ul li:not(.disabled).active a, | ||||
| .ngx-datatable.bootstrap .datatable-footer .datatable-pager ul li:not(.disabled):hover a { | ||||
|     background-color: #545454; | ||||
|     font-weight: bold; | ||||
|     color: white; | ||||
| } | ||||
| 
 | ||||
| :host ::ng-deep .ngx-datatable.bootstrap .datatable-footer { | ||||
|     background: #727e8e; | ||||
|     color: #ededed; | ||||
|     margin-top: -1px; | ||||
|     overflow: inherit; | ||||
| } | ||||
| 
 | ||||
| :host ::ng-deep .ngx-datatable.bootstrap .datatable-header { | ||||
|     font-weight: bold; | ||||
|     height: unset !important; | ||||
|     overflow: inherit | ||||
| } | ||||
| 
 | ||||
| :host ::ng-deep .ngx-datatable .datatable-footer .datatable-pager { | ||||
|     flex: 0 0 0%; | ||||
| } | ||||
| 
 | ||||
| :host ::ng-deep .ngx-datatable .datatable-footer .datatable-pager .pager { | ||||
|     display: flex; | ||||
| } | ||||
| 
 | ||||
| :host ::ng-deep .block-ui-wrapper { | ||||
|     background: rgba(255, 249, 249, 0.5) !important; | ||||
| } | ||||
| :host ::ng-deep .ngx-datatable .datatable-footer .selected-count .datatable-pager { | ||||
|    flex: 0 0 0%; | ||||
| } | ||||
| 
 | ||||
| :host ::ng-deep .ngx-datatable { | ||||
|   display: -webkit-box; | ||||
| } | ||||
| 
 | ||||
| @ -1 +1,131 @@ | ||||
| <p>master-category works!</p> | ||||
| <div class="app-content content"> | ||||
|     <div class="content-wrapper"> | ||||
|       <div class="content-header row mb-1"> | ||||
|         <app-breadcrumb class="col-12" [breadcrumb]="breadcrumb"></app-breadcrumb> | ||||
|       </div> | ||||
|       <div class="content-body"> | ||||
|         <section id="configuration"> | ||||
|           <div class="row"> | ||||
|             <div | ||||
|               class="col-12" | ||||
|               *blockUI="'zeroConfiguration'; message: 'Loading'" | ||||
|             > | ||||
|               <m-card> | ||||
|                 <ng-container mCardHeaderTitle> | ||||
|                   Master Category Table | ||||
|                 </ng-container> | ||||
|                 <ng-container mCardBody> | ||||
|                   <div class="row mb-2"> | ||||
|                     <div class="col-md-6"> | ||||
|                       <input | ||||
|                         type="text" | ||||
|                         class="form-control" | ||||
|                         placeholder="Search..." | ||||
|                         [(ngModel)]="searchTerm" | ||||
|                         (input)="filterRows()" | ||||
|                         (touchstart)="onTouchStart($event)" | ||||
|                       /> | ||||
|                     </div> | ||||
|                     <div class="col-md-6 text-right"> | ||||
|                       <button | ||||
|                         class="btn btn-secondary" | ||||
|                       > | ||||
|                         <i class="feather ft-plus"></i>  Add new master | ||||
|                       </button> | ||||
|                     </div> | ||||
|                   </div> | ||||
|                   <div class="card-dashboard"> | ||||
|                     <ngx-datatable | ||||
|                       class="bootstrap table-bordered" | ||||
|                       [limit]="10" | ||||
|                       [rows]="filteredRows" | ||||
|                       [columnMode]="'force'" | ||||
|                       [headerHeight]="50" | ||||
|                       [footerHeight]="50" | ||||
|                       [rowHeight]="50" | ||||
|                       fxFlex="auto" | ||||
|                       [scrollbarH]="true" | ||||
|                     > | ||||
|                       <ngx-datatable-column | ||||
|                         name="#" | ||||
|                         [flexGrow]="1" | ||||
|                         [minWidth]="10" | ||||
|                       > | ||||
|                         <ng-template | ||||
|                           ngx-datatable-cell-template | ||||
|                           let-rowIndex="rowIndex" | ||||
|                         > | ||||
|                           {{ rowIndex + 1 }} | ||||
|                         </ng-template> | ||||
|                       </ngx-datatable-column> | ||||
|                       <ngx-datatable-column | ||||
|                         name="Name" | ||||
|                         [flexGrow]="1" | ||||
|                         [minWidth]="90" | ||||
|                       > | ||||
|                         <ng-template ngx-datatable-header-template> | ||||
|                           <span>Category Name</span> | ||||
|                         </ng-template> | ||||
|                         <ng-template | ||||
|                           let-value="value" | ||||
|                           ngx-datatable-cell-template | ||||
|                         > | ||||
|                           {{ value }} | ||||
|                         </ng-template> | ||||
|                       </ngx-datatable-column> | ||||
|                       <ngx-datatable-column | ||||
|                         name="Salary" | ||||
|                         [flexGrow]="1" | ||||
|                         [minWidth]="90" | ||||
|                       > | ||||
|                         <ng-template ngx-datatable-header-template> | ||||
|                           <span>Status</span> | ||||
|                         </ng-template> | ||||
|                         <ng-template | ||||
|                           ngx-datatable-cell-template | ||||
|                           let-value="value" | ||||
|                         > | ||||
|                           {{ value }} | ||||
|                         </ng-template> | ||||
|                       </ngx-datatable-column> | ||||
|                       <ngx-datatable-column | ||||
|                         name="Actions" | ||||
|                         [flexGrow]="1" | ||||
|                         [minWidth]="150" | ||||
|                       > | ||||
|                         <ng-template | ||||
|                           ngx-datatable-cell-template | ||||
|                           let-rowIndex="rowIndex" | ||||
|                           let-row="row" | ||||
|                         > | ||||
|                           <button | ||||
|                             class="btn btn-sm btn-info mr-1" | ||||
|                              | ||||
|                           > | ||||
|                             <i class="ficon feather ft-eye"></i> | ||||
|                           </button> | ||||
|                           <button | ||||
|                             class="btn btn-sm btn-warning mr-1" | ||||
|                              | ||||
|                           > | ||||
|                             <i class="ficon feather ft-edit"></i> | ||||
|                           </button> | ||||
|                           <button | ||||
|                             class="btn btn-sm btn-danger" | ||||
|                              | ||||
|                           > | ||||
|                             <i class="ficon feather ft-trash-2"></i> | ||||
|                           </button> | ||||
|                         </ng-template> | ||||
|                       </ngx-datatable-column> | ||||
|                     </ngx-datatable> | ||||
|                   </div> | ||||
|                 </ng-container> | ||||
|               </m-card> | ||||
|             </div> | ||||
|           </div> | ||||
|         </section> | ||||
|       </div> | ||||
|     </div> | ||||
|   </div> | ||||
|    | ||||
| @ -1,10 +1,87 @@ | ||||
| import { Component } from '@angular/core'; | ||||
| import { Component, OnInit } from '@angular/core'; | ||||
| import { Router } from '@angular/router'; | ||||
| import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; | ||||
| import { BlockUI, NgBlockUI } from 'ng-block-ui'; | ||||
| import { TableApiService } from 'src/app/_services/table-api.service'; | ||||
| 
 | ||||
| @Component({ | ||||
|   selector: 'app-master-category', | ||||
|   templateUrl: './master-category.component.html', | ||||
|   styleUrls: ['./master-category.component.css'] | ||||
| }) | ||||
| export class MasterCategoryComponent { | ||||
| export class MasterCategoryComponent implements OnInit{ | ||||
|   data: any; | ||||
|   filteredRows: any[]; | ||||
|   searchTerm: string = ""; | ||||
|   rows: any = []; | ||||
|   public breadcrumb: any; | ||||
| 
 | ||||
|   @BlockUI("zeroConfiguration") blockUIZeroConfiguration: NgBlockUI; | ||||
| 
 | ||||
|   constructor( | ||||
|     private tableApiservice: TableApiService, | ||||
|     private modalService: NgbModal, | ||||
|     private router: Router | ||||
|   ) {} | ||||
| 
 | ||||
|   ngOnInit() { | ||||
|     this.breadcrumb = { | ||||
|       mainlabel: "Master Category", | ||||
|       links: [ | ||||
|         { | ||||
|           name: "Home", | ||||
|           isLink: false, | ||||
|         }, | ||||
|         { | ||||
|           name: "Master Category", | ||||
|           isLink: false, | ||||
|         }, | ||||
|       ], | ||||
|     }; | ||||
|     this.fetchData(); | ||||
|   } | ||||
| 
 | ||||
|   fetchData() { | ||||
|     this.tableApiservice.getTableInitialisationData().subscribe((response) => { | ||||
|       this.data = response; | ||||
|       this.filteredRows = this.data.rows; | ||||
|     }); | ||||
|   } | ||||
| 
 | ||||
|   filterRows() { | ||||
|     if (!this.searchTerm) { | ||||
|       this.filteredRows = [...this.data.rows]; | ||||
|     } else { | ||||
|       this.filteredRows = this.data.rows.filter((row) => | ||||
|         this.rowContainsSearchTerm(row) | ||||
|       ); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   rowContainsSearchTerm(row: any): boolean { | ||||
|     const searchTermLC = this.searchTerm.toLowerCase(); | ||||
|     return Object.values(row).some( | ||||
|       (value) => | ||||
|         value !== null && | ||||
|         value.toString().toLowerCase().includes(searchTermLC) | ||||
|     ); | ||||
|   } | ||||
| 
 | ||||
|   viewRow(row) { | ||||
|     console.log("View row:", row); | ||||
|     this.router.navigate(["/device/view", row.name]); | ||||
|   } | ||||
| 
 | ||||
|   editRow(row) { | ||||
|     console.log("Edit row:", row); | ||||
|     this.router.navigate(["/device/edit", row.name]); | ||||
|   } | ||||
| 
 | ||||
|   deleteRow(row) { | ||||
|     console.log("Delete row:", row); | ||||
|   } | ||||
| 
 | ||||
|   onTouchStart(event: Event) { | ||||
|     event.preventDefault(); // Add this if necessary
 | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -16,6 +16,7 @@ import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; | ||||
| import { BlockTemplateComponent } from 'src/app/_layout/blockui/block-template.component'; | ||||
| import { CardModule } from '../../partials/general/card/card.module'; | ||||
| import { MatchHeightModule } from '../../partials/general/match-height/match-height.module'; | ||||
| import { BreadcrumbModule } from 'src/app/_layout/breadcrumb/breadcrumb.module'; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| @ -35,6 +36,7 @@ import { MatchHeightModule } from '../../partials/general/match-height/match-hei | ||||
|     MatchHeightModule, | ||||
|     NgxDatatableModule, | ||||
|     PerfectScrollbarModule, | ||||
|     BreadcrumbModule, | ||||
|     NgbModule, | ||||
|     BlockUIModule.forRoot({ | ||||
|       template: BlockTemplateComponent | ||||
|  | ||||
| @ -1,140 +1,8 @@ | ||||
| :host ::ng-deep .Likes .ct-series-a .ct-point { | ||||
|     stroke: #28d094; | ||||
| :host ::ng-deep .gap_fl_btn { | ||||
|     margin: 0 0.3rem; | ||||
| } | ||||
| :host ::ng-deep .Likes .ct-line { | ||||
|     fill: none; | ||||
|     stroke-width: 2px; | ||||
| } | ||||
| :host ::ng-deep .Likes .ct-point{ | ||||
|     stroke-width: 0px; | ||||
| } | ||||
| :host ::ng-deep .Likes .ct-series-a .ct-line { | ||||
|     stroke: #28d094; | ||||
| } | ||||
| :host ::ng-deep .Likes .ct-series-a .ct-area { | ||||
|     fill: #28d094; | ||||
| } | ||||
| :host ::ng-deep .Comments .ct-series-a .ct-point { | ||||
|     stroke: #FF9149; | ||||
| } | ||||
| :host ::ng-deep .Comments .ct-line { | ||||
|     fill: none; | ||||
|     stroke-width: 2px; | ||||
| } | ||||
| :host ::ng-deep .Comments .ct-point{ | ||||
|     stroke-width: 0px; | ||||
| } | ||||
| :host ::ng-deep .Comments .ct-series-a .ct-line { | ||||
|     stroke: #FF9149; | ||||
| } | ||||
| :host ::ng-deep .Comments .ct-series-a .ct-area { | ||||
|     fill: #FF9149; | ||||
| } | ||||
| :host ::ng-deep .Views .ct-series-a .ct-point { | ||||
|     stroke: #FF4961; | ||||
| } | ||||
| :host ::ng-deep .Views .ct-line { | ||||
|     fill: none; | ||||
|     stroke-width: 2px; | ||||
| } | ||||
| :host ::ng-deep .Views .ct-point{ | ||||
|     stroke-width: 0px; | ||||
| } | ||||
| :host ::ng-deep .Views .ct-series-a .ct-line { | ||||
|     stroke: #FF4961; | ||||
| } | ||||
| :host ::ng-deep .Views .ct-series-a .ct-area { | ||||
|     fill: #FF4961; | ||||
| } | ||||
| :host ::ng-deep .sp-line-total-cost .ct-series-a .ct-point{ | ||||
|     stroke: #ff9149; | ||||
| } | ||||
| :host ::ng-deep .sp-line-total-cost .ct-series-a .ct-line{ | ||||
|     stroke: #ff9149; | ||||
| 
 | ||||
| :host ::ng-deep .block-ui-wrapper { | ||||
|   background: rgba(255, 249, 249, 0.5) !important; | ||||
| } | ||||
| :host ::ng-deep .sp-line-total-cost .ct-series-a .ct-area{ | ||||
|     fill: #ff9149; | ||||
|     fill-opacity: 1; | ||||
| } | ||||
| :host ::ng-deep .sp-line-total-cost .ct-point{ | ||||
|     stroke-width: 0px; | ||||
| } | ||||
| :host ::ng-deep .sp-line-total-cost svg { | ||||
|     margin-left: 13px; | ||||
| } | ||||
| :host ::ng-deep .sp-line-total-sales .ct-series-a .ct-point{ | ||||
|     stroke: #28d094; | ||||
| } | ||||
| :host ::ng-deep .sp-line-total-sales .ct-series-a .ct-line{ | ||||
|     stroke: #28d094; | ||||
| 
 | ||||
| } | ||||
| :host ::ng-deep .sp-line-total-sales .ct-series-a .ct-area{ | ||||
|     fill: #28d094; | ||||
|     fill-opacity: 1; | ||||
| } | ||||
| :host ::ng-deep .sp-line-total-sales .ct-point{ | ||||
|     stroke-width: 0px; | ||||
| } | ||||
| :host ::ng-deep .sp-line-total-sales svg { | ||||
|     margin-left: 13px; | ||||
| } | ||||
| :host ::ng-deep .sp-line-total-revenue .ct-series-a .ct-point{ | ||||
|     stroke: #ff4961; | ||||
| } | ||||
| :host ::ng-deep .sp-line-total-revenue .ct-series-a .ct-line{ | ||||
|     stroke: #ff4961; | ||||
| 
 | ||||
| } | ||||
| :host ::ng-deep .sp-line-total-revenue .ct-series-a .ct-area{ | ||||
|     fill: #ff4961; | ||||
|     fill-opacity: 1; | ||||
| } | ||||
| :host ::ng-deep .sp-line-total-revenue .ct-point{ | ||||
|     stroke-width: 0px; | ||||
| } | ||||
| :host ::ng-deep .sp-line-total-revenue svg { | ||||
|     margin-left: 13px; | ||||
| } | ||||
| :host ::ng-deep .ct-bar { | ||||
|     fill: none; | ||||
|     stroke-width: 2px; | ||||
| } | ||||
| :host ::ng-deep  .sp-bar-total-cost .ct-series-a .ct-bar{ | ||||
|     stroke: #ff9148; | ||||
| } | ||||
| :host ::ng-deep  .sp-bar-total-sales .ct-series-a .ct-bar{ | ||||
|     stroke: #28d094; | ||||
| } | ||||
| :host ::ng-deep  .sp-bar-total-revenue .ct-series-a .ct-bar{ | ||||
|     stroke: #ff4961; | ||||
| } | ||||
| :host ::ng-deep  .sp-bar-total-cost { | ||||
|     margin-bottom: -90px; | ||||
| } | ||||
| :host ::ng-deep  .sp-bar-total-sales{ | ||||
|     margin-bottom: -90px; | ||||
| } | ||||
| :host ::ng-deep  .sp-bar-total-revenue{ | ||||
|     margin-bottom: -90px; | ||||
| } | ||||
| :host ::ng-deep .feedbacks .ct-series-a .ct-slice-donut { | ||||
|     stroke: #28d094; | ||||
|     stroke-width: 10px !important; | ||||
| } | ||||
| :host ::ng-deep .Subscribers .ct-series-a .ct-slice-donut { | ||||
|     stroke: #ff9149; | ||||
|     stroke-width: 10px !important; | ||||
| } | ||||
| :host ::ng-deep .Users .ct-series-a .ct-slice-donut { | ||||
|     stroke: #ff4961; | ||||
|     stroke-width: 10px !important; | ||||
| } | ||||
| :host ::ng-deep  .ct-series-b .ct-slice-donut { | ||||
|     stroke: #eeeeee; | ||||
|     stroke-width: 12px !important; | ||||
| } | ||||
| :host ::ng-deep  .text-muted { | ||||
|    position: absolute; | ||||
| } | ||||
|  | ||||
| @ -6,181 +6,130 @@ | ||||
|     <div class="content-body"> | ||||
|       <section id="social-cards"> | ||||
|         <div class="row mt-2"> | ||||
|           <div class="col-xl-4 col-md-6 col-12"> | ||||
|           <div class="col-xl-4 col-md-6 col-12" *ngFor="let data of dataArray"> | ||||
|             <div class="card"> | ||||
|               <div class="card-content"> | ||||
|                 <div class="card-body text-center"> | ||||
|                   <div class="card-header mb-2"> | ||||
|                     <span class="success">New Feedbacks</span> | ||||
|                     <h3 class="display-4 blue-grey darken-1">2,487</h3> | ||||
|                     <div class="row"> | ||||
|                       <div class="col-12 text-center"> | ||||
|                         <h4 | ||||
|                           class="text-muted mb-1 font-weight-bold" | ||||
|                           style="font-family: Montserrat, sans-serif" | ||||
|                         > | ||||
|                           Building Name | ||||
|                         </h4> | ||||
|                         <h3 | ||||
|                           class="text-muted mb-0" | ||||
|                           style="font-family: Montserrat, sans-serif" | ||||
|                         > | ||||
|                           {{data.build_name}} | ||||
|                         </h3> | ||||
|                       </div> | ||||
|                     </div> | ||||
|                     <hr style="border-top: 3px solid #100a0a" /> | ||||
|                   </div> | ||||
|                   <div class="card-content"> | ||||
|                     <i | ||||
|                       class="knob-center-icon icon-note knob hide-value responsive angle-offset" | ||||
|                       style=" | ||||
|                         width: 79px; | ||||
|                         height: 50px; | ||||
|                         position: absolute; | ||||
|                         vertical-align: middle; | ||||
|                         margin-top: 70px; | ||||
|                         margin-left: -30px; | ||||
|                         border: 0px; | ||||
|                         background: none; | ||||
|                         font: bold 30px Arial; | ||||
|                         text-align: center; | ||||
|                         color: rgb(225, 225, 225); | ||||
|                         padding: 0px; | ||||
|                         font-size: 50px; | ||||
|                       " | ||||
|                     ></i> | ||||
|                     <x-chartist | ||||
|                       *ngIf="feedbacksdonutChart" | ||||
|                       class="feedbacks" | ||||
|                       [data]="feedbacksdonutChart.data" | ||||
|                       [type]="feedbacksdonutChart.type" | ||||
|                       [options]="feedbacksdonutChart.options" | ||||
|                       [responsiveOptions]=" | ||||
|                         feedbacksdonutChart.responsiveOptions | ||||
|                       " | ||||
|                       [events]="feedbacksdonutChart.events" | ||||
|                       *ngIf="data" | ||||
|                       [data]="data.donut" | ||||
|                       [type]="donutChart1.type" | ||||
|                       [options]="donutChart1.options" | ||||
|                       [events]="donutChart1.events" | ||||
|                     > | ||||
|                     </x-chartist> | ||||
|                     <ul class="list-inline clearfix mt-2"> | ||||
|                       <li | ||||
|                         class="border-right-blue-grey border-right-lighten-2 pr-1" | ||||
|                       > | ||||
|                         <h1 class="blue-grey darken-1 text-bold-400">95%</h1> | ||||
|                         <span class="success" | ||||
|                           ><i class="la la-caret-up"></i> Positive</span | ||||
|                         > | ||||
|                       </li> | ||||
|                       <li> | ||||
|                         <h1 class="blue-grey darken-1 text-bold-400">5%</h1> | ||||
|                         <span class="danger darken-2" | ||||
|                           ><i class="la la-caret-down"></i> Negative</span | ||||
|                         > | ||||
|                       </li> | ||||
|                     </ul> | ||||
|                   </div> | ||||
|                 </div> | ||||
|               </div> | ||||
|             </div> | ||||
|           </div> | ||||
|           <div class="col-xl-4 col-md-6 col-12"> | ||||
|             <div class="card"> | ||||
|               <div class="card-content"> | ||||
|                 <div class="card-body text-center"> | ||||
|                   <div class="card-header mb-2"> | ||||
|                     <span class="success">New Feedbacks</span> | ||||
|                     <h3 class="display-4 blue-grey darken-1">2,487</h3> | ||||
|                   </div> | ||||
|                   <div class="card-content"> | ||||
|                     <i | ||||
|                       class="knob-center-icon icon-note knob hide-value responsive angle-offset" | ||||
| 
 | ||||
|                     <div | ||||
|                       class="text-center" | ||||
|                       style=" | ||||
|                         width: 79px; | ||||
|                         height: 50px; | ||||
|                         position: absolute; | ||||
|                         vertical-align: middle; | ||||
|                         margin-top: 70px; | ||||
|                         margin-left: -30px; | ||||
|                         border: 0px; | ||||
|                         background: none; | ||||
|                         font: bold 30px Arial; | ||||
|                         text-align: center; | ||||
|                         color: rgb(225, 225, 225); | ||||
|                         padding: 0px; | ||||
|                         font-size: 50px; | ||||
|                         top: 50%; | ||||
|                         left: 50%; | ||||
|                         transform: translate(-50%, -50%); | ||||
|                       " | ||||
|                     ></i> | ||||
|                     <x-chartist | ||||
|                       *ngIf="feedbacksdonutChart" | ||||
|                       class="feedbacks" | ||||
|                       [data]="feedbacksdonutChart.data" | ||||
|                       [type]="feedbacksdonutChart.type" | ||||
|                       [options]="feedbacksdonutChart.options" | ||||
|                       [responsiveOptions]=" | ||||
|                         feedbacksdonutChart.responsiveOptions | ||||
|                       " | ||||
|                       [events]="feedbacksdonutChart.events" | ||||
|                     > | ||||
|                     </x-chartist> | ||||
|                     <ul class="list-inline clearfix mt-2"> | ||||
|                       <li | ||||
|                         class="border-right-blue-grey border-right-lighten-2 pr-1" | ||||
|                       <h3 | ||||
|                         class="display-4 blue-grey darken-1" | ||||
|                         style="font-size: 2em" | ||||
|                       > | ||||
|                         <h1 class="blue-grey darken-1 text-bold-400">95%</h1> | ||||
|                         <span class="success" | ||||
|                           ><i class="la la-caret-up"></i> Positive</span | ||||
|                         {{data.total}} kWh | ||||
|                       </h3> | ||||
|                     </div> | ||||
|                     <div class="card-body" style="padding-top: 0"> | ||||
|                       <div class="row mb-3"> | ||||
|                         <div class="col Started"> | ||||
|                           <span class="mb-1 text-muted cardtext d-block" | ||||
|                             >23% - Lighning</span | ||||
|                           > | ||||
|                       </li> | ||||
|                       <li> | ||||
|                         <h1 class="blue-grey darken-1 text-bold-400">5%</h1> | ||||
|                         <span class="danger darken-2" | ||||
|                           ><i class="la la-caret-down"></i> Negative</span | ||||
|                           <div> | ||||
|                             <ngb-progressbar | ||||
|                               height="7px" | ||||
|                               type="success" | ||||
|                               [value]="23" | ||||
|                             ></ngb-progressbar> | ||||
|                           </div> | ||||
|                         </div> | ||||
|                         <div class="col Progress"> | ||||
|                           <span class="mb-1 text-muted cardtext d-block" | ||||
|                             >14% - In Progress</span | ||||
|                           > | ||||
|                       </li> | ||||
|                     </ul> | ||||
|                           <div> | ||||
|                             <ngb-progressbar | ||||
|                               height="7px" | ||||
|                               type="danger" | ||||
|                               [value]="14" | ||||
|                             ></ngb-progressbar> | ||||
|                           </div> | ||||
|                         </div> | ||||
|                       </div> | ||||
|                       <div class="row mb-3"> | ||||
|                         <div class="col Remaining"> | ||||
|                           <span class="mb-1 text-muted cardtext d-block" | ||||
|                             >35% - Remaining</span | ||||
|                           > | ||||
|                           <div> | ||||
|                             <ngb-progressbar | ||||
|                               height="7px" | ||||
|                               type="warning" | ||||
|                               [value]="35" | ||||
|                             ></ngb-progressbar> | ||||
|                           </div> | ||||
|                         </div> | ||||
|                         <div class="col Done"> | ||||
|                           <span class="mb-1 text-muted cardtext d-block" | ||||
|                             >28% - Started</span | ||||
|                           > | ||||
|                           <div> | ||||
|                             <ngb-progressbar | ||||
|                               height="7px" | ||||
|                               type="primary" | ||||
|                               [value]="28" | ||||
|                             ></ngb-progressbar> | ||||
|                           </div> | ||||
|                         </div> | ||||
|                       </div> | ||||
|                     </div> | ||||
| 
 | ||||
|                     <div class="form-group text-center"> | ||||
|                       <button | ||||
|                         type="button" | ||||
|                         class="btn btn-float btn-square btn-outline-secondary" | ||||
|                       > | ||||
|                         <i class="feather ft-layers"></i> | ||||
|                       </button> | ||||
|                       <button | ||||
|                         type="button" | ||||
|                         class="gap_fl_btn btn btn-float btn-square btn-float-lg btn-outline-primary" | ||||
|                       > | ||||
|                         <i class="la la-building"></i> | ||||
|                       </button> | ||||
|                       <button | ||||
|                         type="button" | ||||
|                         class="btn btn-float btn-square btn-outline-secondary" | ||||
|                       > | ||||
|                         <i class="feather ft-log-in"></i> | ||||
|                       </button> | ||||
|                     </div> | ||||
|           <div class="col-xl-4 col-md-6 col-12"> | ||||
|             <div class="card"> | ||||
|               <div class="card-content"> | ||||
|                 <div class="card-body text-center"> | ||||
|                   <div class="card-header mb-2"> | ||||
|                     <span class="success">New Feedbacks</span> | ||||
|                     <h3 class="display-4 blue-grey darken-1">2,487</h3> | ||||
|                   </div> | ||||
|                   <div class="card-content"> | ||||
|                     <i | ||||
|                       class="knob-center-icon icon-note knob hide-value responsive angle-offset" | ||||
|                       style=" | ||||
|                         width: 79px; | ||||
|                         height: 50px; | ||||
|                         position: absolute; | ||||
|                         vertical-align: middle; | ||||
|                         margin-top: 70px; | ||||
|                         margin-left: -30px; | ||||
|                         border: 0px; | ||||
|                         background: none; | ||||
|                         font: bold 30px Arial; | ||||
|                         text-align: center; | ||||
|                         color: rgb(225, 225, 225); | ||||
|                         padding: 0px; | ||||
|                         font-size: 50px; | ||||
|                       " | ||||
|                     ></i> | ||||
|                     <x-chartist | ||||
|                       *ngIf="feedbacksdonutChart" | ||||
|                       class="feedbacks" | ||||
|                       [data]="feedbacksdonutChart.data" | ||||
|                       [type]="feedbacksdonutChart.type" | ||||
|                       [options]="feedbacksdonutChart.options" | ||||
|                       [responsiveOptions]=" | ||||
|                         feedbacksdonutChart.responsiveOptions | ||||
|                       " | ||||
|                       [events]="feedbacksdonutChart.events" | ||||
|                     > | ||||
|                     </x-chartist> | ||||
|                     <ul class="list-inline clearfix mt-2"> | ||||
|                       <li | ||||
|                         class="border-right-blue-grey border-right-lighten-2 pr-1" | ||||
|                       > | ||||
|                         <h1 class="blue-grey darken-1 text-bold-400">95%</h1> | ||||
|                         <span class="success" | ||||
|                           ><i class="la la-caret-up"></i> Positive</span | ||||
|                         > | ||||
|                       </li> | ||||
|                       <li> | ||||
|                         <h1 class="blue-grey darken-1 text-bold-400">5%</h1> | ||||
|                         <span class="danger darken-2" | ||||
|                           ><i class="la la-caret-down"></i> Negative</span | ||||
|                         > | ||||
|                       </li> | ||||
|                     </ul> | ||||
|                   </div> | ||||
|                 </div> | ||||
|               </div> | ||||
| @ -188,7 +137,6 @@ | ||||
|           </div> | ||||
|         </div> | ||||
|       </section> | ||||
|       <!-- // Social cards section end --> | ||||
|     </div> | ||||
|   </div> | ||||
| </div> | ||||
|  | ||||
| @ -10,49 +10,55 @@ export class BuildingComponent { | ||||
|   Data: any; | ||||
|   public breadcrumb: any; | ||||
|   feedbacksdonutChart: any; | ||||
|   donutChart1: any; | ||||
| 
 | ||||
|   dataArray = [ | ||||
|     { | ||||
|       id: 1, | ||||
|       build_name: "PT Allbest Solusi Sistem", | ||||
|       total: "2345", | ||||
|       donut: { | ||||
|         series: [20, 80], | ||||
|         labels: [], | ||||
|       }, | ||||
|     }, | ||||
|     { | ||||
|       id: 2, | ||||
|       build_name: "PT Informa Media Pratama", | ||||
|       total: "342", | ||||
|       donut: { | ||||
|         series: [40, 60], | ||||
|         labels: [], | ||||
|       }, | ||||
|     }, | ||||
|   ]; | ||||
| 
 | ||||
|   constructor(private chartApiservice: ChartApiService) {} | ||||
| 
 | ||||
|   ngOnInit() { | ||||
|     this.breadcrumb = { | ||||
|       mainlabel: "Advance Social Cards", | ||||
|       mainlabel: "Dashboard", | ||||
|       links: [ | ||||
|         { | ||||
|           name: "Home", | ||||
|           isLink: true, | ||||
|           link: "/dashboard/sales", | ||||
|         }, | ||||
|         { | ||||
|           name: "Advance Cards", | ||||
|           isLink: true, | ||||
|           link: "#", | ||||
|         }, | ||||
|         { | ||||
|           name: "Social", | ||||
|           name: "Dashboard", | ||||
|           isLink: false, | ||||
|           link: "#", | ||||
|         }, | ||||
|       ], | ||||
|     }; | ||||
|     this.chartApiservice.getStatisticsData().subscribe((Response) => { | ||||
|       this.Data = Response; | ||||
|       this.getlineArea(); | ||||
|     }); | ||||
|   } | ||||
| 
 | ||||
|   getlineArea() { | ||||
|     const ChartData = this.Data; | ||||
|     this.feedbacksdonutChart = { | ||||
|     this.donutChart1 = { | ||||
|       type: "Pie", | ||||
|       data: ChartData["feedbacksdonutChart"], | ||||
|       options: { | ||||
|         showLabel: false, | ||||
|         chartPadding: 0, | ||||
|         fullwidth: true, | ||||
|         height: "200px", | ||||
|         height: "250px", | ||||
|         donut: true, | ||||
|         startAngle: 0, | ||||
|         donutWidth: 60, | ||||
|         startAngle: 270, | ||||
|         total: 200, | ||||
|         showLabel: false, | ||||
|       }, | ||||
|     }; | ||||
| 
 | ||||
|   } | ||||
| 
 | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user