From 4f4dde0d076f12623a38e9b9f10af1cc1aa7d0ca Mon Sep 17 00:00:00 2001 From: Fuzi_fauzia Date: Sun, 21 Apr 2024 15:09:49 +0700 Subject: [PATCH] penambahan page cost management --- .../cost-management.component.css | 190 +++++++++++++++++ .../cost-management.component.html | 192 +++++++++++++++++- .../cost-management.component.ts | 78 ++++++- .../cost-management/cost-management.module.ts | 11 + .../hemat-app/device/device-routing.module.ts | 0 .../hemat-app/device/device.component.html | 119 ++++++++--- .../hemat-app/device/device.component.ts | 15 +- 7 files changed, 563 insertions(+), 42 deletions(-) create mode 100644 src/app/content/hemat-app/device/device-routing.module.ts diff --git a/src/app/content/hemat-app/cost-management/cost-management.component.css b/src/app/content/hemat-app/cost-management/cost-management.component.css index e69de29..bd893c0 100644 --- a/src/app/content/hemat-app/cost-management/cost-management.component.css +++ b/src/app/content/hemat-app/cost-management/cost-management.component.css @@ -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; +} + diff --git a/src/app/content/hemat-app/cost-management/cost-management.component.html b/src/app/content/hemat-app/cost-management/cost-management.component.html index d266170..ca8def1 100644 --- a/src/app/content/hemat-app/cost-management/cost-management.component.html +++ b/src/app/content/hemat-app/cost-management/cost-management.component.html @@ -1 +1,191 @@ -

cost-management works!

+
+
+
+ +
+
+
+
+
+ + + Cost Management Table + + +
+
+ +
+
+ +
+
+
+ + + + {{ rowIndex + 1 }} + + + + + Device Name + + + {{ value }} + + + + + Category + + + {{ value }} + + + + + Location + + + {{ value }} + + + + + Location Room + + + {{ value }} + + + + + Duration Use + + + {{ value }} + + + + + Status + + + {{ value }} + + + + + + + + + + +
+
+
+
+
+
+
+
+
diff --git a/src/app/content/hemat-app/cost-management/cost-management.component.ts b/src/app/content/hemat-app/cost-management/cost-management.component.ts index cf3a18c..694835b 100644 --- a/src/app/content/hemat-app/cost-management/cost-management.component.ts +++ b/src/app/content/hemat-app/cost-management/cost-management.component.ts @@ -1,10 +1,84 @@ -import { Component } from '@angular/core'; +import { Component, OnInit } from '@angular/core'; +import { Router } from '@angular/router'; +import { BlockUI, NgBlockUI } from 'ng-block-ui'; +import { TableApiService } from 'src/app/_services/table-api.service'; @Component({ selector: 'app-cost-management', templateUrl: './cost-management.component.html', styleUrls: ['./cost-management.component.css'] }) -export class CostManagementComponent { +export class CostManagementComponent implements OnInit{ + public breadcrumb: any; + data: any; + filteredRows: any[]; + searchTerm: string = ""; + rows: any = []; + @BlockUI("zeroConfiguration") blockUIZeroConfiguration: NgBlockUI; + constructor( + private tableApiservice: TableApiService, + private router: Router + ) {} + + ngOnInit() { + this.breadcrumb = { + mainlabel: "Cost Management", + links: [ + { + name: "Home", + isLink: false, + }, + { + name: "Cost Management", + 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 + } } diff --git a/src/app/content/hemat-app/cost-management/cost-management.module.ts b/src/app/content/hemat-app/cost-management/cost-management.module.ts index ab16937..0a1e053 100644 --- a/src/app/content/hemat-app/cost-management/cost-management.module.ts +++ b/src/app/content/hemat-app/cost-management/cost-management.module.ts @@ -2,6 +2,11 @@ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { CostManagementComponent } from './cost-management.component'; import { RouterModule } from '@angular/router'; +import { BreadcrumbModule } from 'src/app/_layout/breadcrumb/breadcrumb.module'; +import { NgxDatatableModule } from '@swimlane/ngx-datatable'; +import { BlockUIModule } from 'ng-block-ui'; +import { BlockTemplateComponent } from 'src/app/_layout/blockui/block-template.component'; +import { CardModule } from '../../partials/general/card/card.module'; @@ -11,6 +16,12 @@ import { RouterModule } from '@angular/router'; ], imports: [ CommonModule, + CardModule, + BreadcrumbModule, + NgxDatatableModule, + BlockUIModule.forRoot({ + template: BlockTemplateComponent + }), RouterModule.forChild([ { path: '', diff --git a/src/app/content/hemat-app/device/device-routing.module.ts b/src/app/content/hemat-app/device/device-routing.module.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/app/content/hemat-app/device/device.component.html b/src/app/content/hemat-app/device/device.component.html index 3cf7eb1..e204cd4 100644 --- a/src/app/content/hemat-app/device/device.component.html +++ b/src/app/content/hemat-app/device/device.component.html @@ -6,9 +6,15 @@
-
- +
+ + Device Table + +
@@ -28,68 +35,124 @@
-
-
- - - - {{rowIndex+1}} + + + + {{ rowIndex + 1 }} - + Device Name - - {{value}} + + {{ value }} - + Category - - {{value}} + + {{ value }} - + Location - - {{value}} + + {{ value }} - + Location Room - - {{value}} + + {{ value }} - + Duration Use - - {{value}} + + {{ value }} - + Status - - {{value}} + + {{ value }}