From e894196ebd72476bdfe8252f899347388052959e Mon Sep 17 00:00:00 2001 From: Fuzi_fauzia Date: Fri, 26 Apr 2024 11:00:37 +0700 Subject: [PATCH] penambahan UI master location, location room dan user access --- .../master-category.component.ts | 4 - .../master-location-room.component.css | 190 ++++++++++++++++++ .../master-location-room.component.html | 132 +++++++++++- .../master-location-room.component.ts | 73 +++++++ .../master-location.component.css | 190 ++++++++++++++++++ .../master-location.component.html | 132 +++++++++++- .../master-location.component.ts | 73 +++++++ .../user-access/user-access.component.css | 190 ++++++++++++++++++ .../user-access/user-access.component.html | 120 ++++++++++- .../user-access/user-access.component.ts | 73 +++++++ .../user-access/user-access.module.ts | 23 +++ 11 files changed, 1193 insertions(+), 7 deletions(-) diff --git a/src/app/content/hemat-app/master/master-category/master-category.component.ts b/src/app/content/hemat-app/master/master-category/master-category.component.ts index d2ee9e5..dd0dd52 100644 --- a/src/app/content/hemat-app/master/master-category/master-category.component.ts +++ b/src/app/content/hemat-app/master/master-category/master-category.component.ts @@ -80,8 +80,4 @@ export class MasterCategoryComponent implements OnInit{ deleteRow(row) { console.log("Delete row:", row); } - - onTouchStart(event: Event) { - event.preventDefault(); // Add this if necessary - } } diff --git a/src/app/content/hemat-app/master/master-location-room/master-location-room.component.css b/src/app/content/hemat-app/master/master-location-room/master-location-room.component.css index e69de29..bd893c0 100644 --- a/src/app/content/hemat-app/master/master-location-room/master-location-room.component.css +++ b/src/app/content/hemat-app/master/master-location-room/master-location-room.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/master/master-location-room/master-location-room.component.html b/src/app/content/hemat-app/master/master-location-room/master-location-room.component.html index 6e291e5..f476cc3 100644 --- a/src/app/content/hemat-app/master/master-location-room/master-location-room.component.html +++ b/src/app/content/hemat-app/master/master-location-room/master-location-room.component.html @@ -1 +1,131 @@ -

master-location-room works!

+
+
+
+ +
+
+
+
+
+ + + Master Location Room Table + + +
+
+ +
+
+ +
+
+
+ + + + {{ rowIndex + 1 }} + + + + + Category Name + + + {{ value }} + + + + + Status + + + {{ value }} + + + + + + + + + + +
+
+
+
+
+
+
+
+
+ \ No newline at end of file diff --git a/src/app/content/hemat-app/master/master-location-room/master-location-room.component.ts b/src/app/content/hemat-app/master/master-location-room/master-location-room.component.ts index af307d5..7139de1 100644 --- a/src/app/content/hemat-app/master/master-location-room/master-location-room.component.ts +++ b/src/app/content/hemat-app/master/master-location-room/master-location-room.component.ts @@ -1,4 +1,8 @@ import { Component } 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-location-room', @@ -6,5 +10,74 @@ import { Component } from '@angular/core'; styleUrls: ['./master-location-room.component.css'] }) export class MasterLocationRoomComponent { + 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 Location Room", + links: [ + { + name: "Home", + isLink: false, + }, + { + name: "Master Location Room", + 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); + } } diff --git a/src/app/content/hemat-app/master/master-location/master-location.component.css b/src/app/content/hemat-app/master/master-location/master-location.component.css index e69de29..bd893c0 100644 --- a/src/app/content/hemat-app/master/master-location/master-location.component.css +++ b/src/app/content/hemat-app/master/master-location/master-location.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/master/master-location/master-location.component.html b/src/app/content/hemat-app/master/master-location/master-location.component.html index 671c695..daeefe1 100644 --- a/src/app/content/hemat-app/master/master-location/master-location.component.html +++ b/src/app/content/hemat-app/master/master-location/master-location.component.html @@ -1 +1,131 @@ -

master-location works!

+
+
+
+ +
+
+
+
+
+ + + Master Location Table + + +
+
+ +
+
+ +
+
+
+ + + + {{ rowIndex + 1 }} + + + + + Category Name + + + {{ value }} + + + + + Status + + + {{ value }} + + + + + + + + + + +
+
+
+
+
+
+
+
+
+ \ No newline at end of file diff --git a/src/app/content/hemat-app/master/master-location/master-location.component.ts b/src/app/content/hemat-app/master/master-location/master-location.component.ts index 9961d58..277e467 100644 --- a/src/app/content/hemat-app/master/master-location/master-location.component.ts +++ b/src/app/content/hemat-app/master/master-location/master-location.component.ts @@ -1,4 +1,8 @@ import { Component } 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-location', @@ -6,5 +10,74 @@ import { Component } from '@angular/core'; styleUrls: ['./master-location.component.css'] }) export class MasterLocationComponent { + 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 Location", + links: [ + { + name: "Home", + isLink: false, + }, + { + name: "Master Location", + 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); + } } diff --git a/src/app/content/hemat-app/user-access/user-access.component.css b/src/app/content/hemat-app/user-access/user-access.component.css index e69de29..bd893c0 100644 --- a/src/app/content/hemat-app/user-access/user-access.component.css +++ b/src/app/content/hemat-app/user-access/user-access.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/user-access/user-access.component.html b/src/app/content/hemat-app/user-access/user-access.component.html index f771098..d6e39fb 100644 --- a/src/app/content/hemat-app/user-access/user-access.component.html +++ b/src/app/content/hemat-app/user-access/user-access.component.html @@ -1 +1,119 @@ -

user-access works!

+
+
+
+ +
+
+
+
+
+ + + User Access Table + + +
+
+ +
+
+ +
+
+
+ + + + {{ rowIndex + 1 }} + + + + + Category Name + + + {{ value }} + + + + + Status + + + {{ value }} + + + + + + + + + + +
+
+
+
+
+
+
+
+
diff --git a/src/app/content/hemat-app/user-access/user-access.component.ts b/src/app/content/hemat-app/user-access/user-access.component.ts index a762f63..092da2c 100644 --- a/src/app/content/hemat-app/user-access/user-access.component.ts +++ b/src/app/content/hemat-app/user-access/user-access.component.ts @@ -1,4 +1,8 @@ import { Component } 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-user-access', @@ -6,5 +10,74 @@ import { Component } from '@angular/core'; styleUrls: ['./user-access.component.css'] }) export class UserAccessComponent { + 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: "User Access", + links: [ + { + name: "Home", + isLink: false, + }, + { + name: "User Access", + 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); + } } diff --git a/src/app/content/hemat-app/user-access/user-access.module.ts b/src/app/content/hemat-app/user-access/user-access.module.ts index e9a6a49..76817b2 100644 --- a/src/app/content/hemat-app/user-access/user-access.module.ts +++ b/src/app/content/hemat-app/user-access/user-access.module.ts @@ -2,6 +2,17 @@ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { UserAccessComponent } from './user-access.component'; import { RouterModule } from '@angular/router'; +import { ChartistModule } from 'ng-chartist'; +import { FormsModule } from '@angular/forms'; +import { NgChartsModule } from 'ng2-charts'; +import { CardModule } from '../../partials/general/card/card.module'; +import { MatchHeightModule } from '../../partials/general/match-height/match-height.module'; +import { NgxDatatableModule } from '@swimlane/ngx-datatable'; +import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; +import { BreadcrumbModule } from 'src/app/_layout/breadcrumb/breadcrumb.module'; +import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; +import { BlockTemplateComponent } from 'src/app/_layout/blockui/block-template.component'; +import { BlockUIModule } from 'ng-block-ui'; @@ -11,6 +22,18 @@ import { RouterModule } from '@angular/router'; ], imports: [ CommonModule, + ChartistModule, + FormsModule, + NgChartsModule, + CardModule, + MatchHeightModule, + NgxDatatableModule, + PerfectScrollbarModule, + BreadcrumbModule, + NgbModule, + BlockUIModule.forRoot({ + template: BlockTemplateComponent + }), RouterModule.forChild([ { path: '',