From 258d4f9cdbeab16acf468cd3e5cd2e4c8e44b4cd Mon Sep 17 00:00:00 2001 From: Fuzi_fauzia Date: Mon, 20 May 2024 19:30:10 +0700 Subject: [PATCH] integrasi master type, status dan duration use --- .../master-duration-use.component.css | 190 ++++++++++++++++++ .../master-duration-use.component.html | 129 +++++++++++- .../master-duration-use.component.ts | 127 ++++++++++++ .../master-status/master-status.component.css | 190 ++++++++++++++++++ .../master-status.component.html | 129 +++++++++++- .../master-status/master-status.component.ts | 127 ++++++++++++ .../master-type/master-type.component.css | 190 ++++++++++++++++++ .../master-type/master-type.component.html | 129 +++++++++++- .../master-type/master-type.component.ts | 127 ++++++++++++ 9 files changed, 1335 insertions(+), 3 deletions(-) diff --git a/src/app/content/hemat-app/master/master-duration-use/master-duration-use.component.css b/src/app/content/hemat-app/master/master-duration-use/master-duration-use.component.css index e69de29..bd893c0 100644 --- a/src/app/content/hemat-app/master/master-duration-use/master-duration-use.component.css +++ b/src/app/content/hemat-app/master/master-duration-use/master-duration-use.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-duration-use/master-duration-use.component.html b/src/app/content/hemat-app/master/master-duration-use/master-duration-use.component.html index d1600b9..026b494 100644 --- a/src/app/content/hemat-app/master/master-duration-use/master-duration-use.component.html +++ b/src/app/content/hemat-app/master/master-duration-use/master-duration-use.component.html @@ -1 +1,128 @@ -

master-duration-use works!

+
+
+
+ +
+
+
+
+
+ + + Master Duration Table + + +
+
+ +
+
+ +
+
+
+ + + + {{ rowIndex + 1 }} + + + + + Category Name + + + {{ value }} + + + + + Status + + + {{ value === '1' ? 'Aktif' : 'Tidak Aktif'}} + + + + + + + + + +
+
+
+
+
+
+
+
+
+ \ No newline at end of file diff --git a/src/app/content/hemat-app/master/master-duration-use/master-duration-use.component.ts b/src/app/content/hemat-app/master/master-duration-use/master-duration-use.component.ts index e129560..ace25e0 100644 --- a/src/app/content/hemat-app/master/master-duration-use/master-duration-use.component.ts +++ b/src/app/content/hemat-app/master/master-duration-use/master-duration-use.component.ts @@ -1,4 +1,9 @@ import { Component } from '@angular/core'; +import { AddEditMasterComponent } from '../add-edit-master/add-edit-master.component'; +import { TableApiService } from 'src/app/_services/table-api.service'; +import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; +import { Router } from '@angular/router'; +import { BuildingService } from '../../service/monitoring-api.service'; @Component({ selector: 'app-master-duration-use', @@ -6,5 +11,127 @@ import { Component } from '@angular/core'; styleUrls: ['./master-duration-use.component.css'] }) export class MasterDurationUseComponent { + data: any; + filteredRows: any[]; + searchTerm: string = ""; + rows: any = []; + public breadcrumb: any; + dataMasterCategori: any; + constructor( + private tableApiservice: TableApiService, + private modalService: NgbModal, + private router: Router, + private monitoringApiService: BuildingService + ) {} + + ngOnInit() { + this.breadcrumb = { + mainlabel: "Master Duration Use", + links: [ + { + name: "Home", + isLink: false, + }, + { + name: "Master Duration Use", + isLink: false, + }, + ], + }; + this.fetchData(); + } + + fetchData() { + this.monitoringApiService.getMasterData().subscribe((res) => { + this.data = res.results.data; + this.dataMasterCategori = res.results.data.find( + (item) => item.name === "master_duration" + ); + this.filteredRows = this.dataMasterCategori.headerDetailParam; + }); + } + + filterRows() { + if (!this.searchTerm) { + this.filteredRows = [ + ...this.data.find((item) => item.name === "master_duration") + .headerDetailParam, + ]; + } else { + this.filteredRows = this.data + .find((item) => item.name === "master_duration") + .headerDetailParam.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) + ); + } + + openAddMasterModal() { + const modalRef = this.modalService.open(AddEditMasterComponent, { + size: "lg", + }); + + modalRef.componentInstance.headerId = this.dataMasterCategori.id; + modalRef.componentInstance.mode = "add"; + modalRef.result.then( + (result) => { + console.log(result); + if (result) { + this.monitoringApiService + .postHeaderDetailParam(result) + .subscribe((res) => { + console.log(res); + this.fetchData(); + }); + } + }, + (reason) => { + console.log(`Dismissed: ${reason}`); + } + ); + } + + editRow(row) { + const modalRef = this.modalService.open(AddEditMasterComponent, { + size: "lg", + }); + + modalRef.componentInstance.headerId = this.dataMasterCategori.id; + modalRef.componentInstance.dataRow = row; + modalRef.componentInstance.mode = "edit"; + modalRef.result.then( + (result) => { + console.log(result); + if (result) { + this.monitoringApiService + .putHeaderDetailParam(result, row.id) + .subscribe((res) => { + console.log(res); + this.fetchData(); + }); + } + }, + (reason) => { + console.log(`Dismissed: ${reason}`); + } + ); + } + + deleteRow(row) { + const confirmDelete = confirm("Are you sure you want to delete this item?"); + if (confirmDelete) { + this.monitoringApiService + .deleteHeaderDetailParam(row.id) + .subscribe((res) => { + this.fetchData(); + }); + } + } } diff --git a/src/app/content/hemat-app/master/master-status/master-status.component.css b/src/app/content/hemat-app/master/master-status/master-status.component.css index e69de29..bd893c0 100644 --- a/src/app/content/hemat-app/master/master-status/master-status.component.css +++ b/src/app/content/hemat-app/master/master-status/master-status.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-status/master-status.component.html b/src/app/content/hemat-app/master/master-status/master-status.component.html index b15c5d3..c2b46fb 100644 --- a/src/app/content/hemat-app/master/master-status/master-status.component.html +++ b/src/app/content/hemat-app/master/master-status/master-status.component.html @@ -1 +1,128 @@ -

master-status works!

+
+
+
+ +
+
+
+
+
+ + + Master Status Table + + +
+
+ +
+
+ +
+
+
+ + + + {{ rowIndex + 1 }} + + + + + Category Name + + + {{ value }} + + + + + Status + + + {{ value === '1' ? 'Aktif' : 'Tidak Aktif'}} + + + + + + + + + +
+
+
+
+
+
+
+
+
+ \ No newline at end of file diff --git a/src/app/content/hemat-app/master/master-status/master-status.component.ts b/src/app/content/hemat-app/master/master-status/master-status.component.ts index 53bf732..bc2920d 100644 --- a/src/app/content/hemat-app/master/master-status/master-status.component.ts +++ b/src/app/content/hemat-app/master/master-status/master-status.component.ts @@ -1,4 +1,9 @@ import { Component } from '@angular/core'; +import { Router } from '@angular/router'; +import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; +import { TableApiService } from 'src/app/_services/table-api.service'; +import { BuildingService } from '../../service/monitoring-api.service'; +import { AddEditMasterComponent } from '../add-edit-master/add-edit-master.component'; @Component({ selector: 'app-master-status', @@ -6,5 +11,127 @@ import { Component } from '@angular/core'; styleUrls: ['./master-status.component.css'] }) export class MasterStatusComponent { + data: any; + filteredRows: any[]; + searchTerm: string = ""; + rows: any = []; + public breadcrumb: any; + dataMasterCategori: any; + constructor( + private tableApiservice: TableApiService, + private modalService: NgbModal, + private router: Router, + private monitoringApiService: BuildingService + ) {} + + ngOnInit() { + this.breadcrumb = { + mainlabel: "Master Status", + links: [ + { + name: "Home", + isLink: false, + }, + { + name: "Master Status", + isLink: false, + }, + ], + }; + this.fetchData(); + } + + fetchData() { + this.monitoringApiService.getMasterData().subscribe((res) => { + this.data = res.results.data; + this.dataMasterCategori = res.results.data.find( + (item) => item.name === "master_status" + ); + this.filteredRows = this.dataMasterCategori.headerDetailParam; + }); + } + + filterRows() { + if (!this.searchTerm) { + this.filteredRows = [ + ...this.data.find((item) => item.name === "master_status") + .headerDetailParam, + ]; + } else { + this.filteredRows = this.data + .find((item) => item.name === "master_status") + .headerDetailParam.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) + ); + } + + openAddMasterModal() { + const modalRef = this.modalService.open(AddEditMasterComponent, { + size: "lg", + }); + + modalRef.componentInstance.headerId = this.dataMasterCategori.id; + modalRef.componentInstance.mode = "add"; + modalRef.result.then( + (result) => { + console.log(result); + if (result) { + this.monitoringApiService + .postHeaderDetailParam(result) + .subscribe((res) => { + console.log(res); + this.fetchData(); + }); + } + }, + (reason) => { + console.log(`Dismissed: ${reason}`); + } + ); + } + + editRow(row) { + const modalRef = this.modalService.open(AddEditMasterComponent, { + size: "lg", + }); + + modalRef.componentInstance.headerId = this.dataMasterCategori.id; + modalRef.componentInstance.dataRow = row; + modalRef.componentInstance.mode = "edit"; + modalRef.result.then( + (result) => { + console.log(result); + if (result) { + this.monitoringApiService + .putHeaderDetailParam(result, row.id) + .subscribe((res) => { + console.log(res); + this.fetchData(); + }); + } + }, + (reason) => { + console.log(`Dismissed: ${reason}`); + } + ); + } + + deleteRow(row) { + const confirmDelete = confirm("Are you sure you want to delete this item?"); + if (confirmDelete) { + this.monitoringApiService + .deleteHeaderDetailParam(row.id) + .subscribe((res) => { + this.fetchData(); + }); + } + } } diff --git a/src/app/content/hemat-app/master/master-type/master-type.component.css b/src/app/content/hemat-app/master/master-type/master-type.component.css index e69de29..bd893c0 100644 --- a/src/app/content/hemat-app/master/master-type/master-type.component.css +++ b/src/app/content/hemat-app/master/master-type/master-type.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-type/master-type.component.html b/src/app/content/hemat-app/master/master-type/master-type.component.html index 64f099a..c61cf8c 100644 --- a/src/app/content/hemat-app/master/master-type/master-type.component.html +++ b/src/app/content/hemat-app/master/master-type/master-type.component.html @@ -1 +1,128 @@ -

master-type works!

+
+
+
+ +
+
+
+
+
+ + + Master Type Table + + +
+
+ +
+
+ +
+
+
+ + + + {{ rowIndex + 1 }} + + + + + Category Name + + + {{ value }} + + + + + Status + + + {{ value === '1' ? 'Aktif' : 'Tidak Aktif'}} + + + + + + + + + +
+
+
+
+
+
+
+
+
+ \ No newline at end of file diff --git a/src/app/content/hemat-app/master/master-type/master-type.component.ts b/src/app/content/hemat-app/master/master-type/master-type.component.ts index 5fb2554..7f36be3 100644 --- a/src/app/content/hemat-app/master/master-type/master-type.component.ts +++ b/src/app/content/hemat-app/master/master-type/master-type.component.ts @@ -1,4 +1,9 @@ import { Component } from '@angular/core'; +import { AddEditMasterComponent } from '../add-edit-master/add-edit-master.component'; +import { TableApiService } from 'src/app/_services/table-api.service'; +import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; +import { Router } from '@angular/router'; +import { BuildingService } from '../../service/monitoring-api.service'; @Component({ selector: 'app-master-type', @@ -6,5 +11,127 @@ import { Component } from '@angular/core'; styleUrls: ['./master-type.component.css'] }) export class MasterTypeComponent { + data: any; + filteredRows: any[]; + searchTerm: string = ""; + rows: any = []; + public breadcrumb: any; + dataMasterCategori: any; + constructor( + private tableApiservice: TableApiService, + private modalService: NgbModal, + private router: Router, + private monitoringApiService: BuildingService + ) {} + + ngOnInit() { + this.breadcrumb = { + mainlabel: "Master Type", + links: [ + { + name: "Home", + isLink: false, + }, + { + name: "Master Type", + isLink: false, + }, + ], + }; + this.fetchData(); + } + + fetchData() { + this.monitoringApiService.getMasterData().subscribe((res) => { + this.data = res.results.data; + this.dataMasterCategori = res.results.data.find( + (item) => item.name === "master_type" + ); + this.filteredRows = this.dataMasterCategori.headerDetailParam; + }); + } + + filterRows() { + if (!this.searchTerm) { + this.filteredRows = [ + ...this.data.find((item) => item.name === "master_type") + .headerDetailParam, + ]; + } else { + this.filteredRows = this.data + .find((item) => item.name === "master_type") + .headerDetailParam.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) + ); + } + + openAddMasterModal() { + const modalRef = this.modalService.open(AddEditMasterComponent, { + size: "lg", + }); + + modalRef.componentInstance.headerId = this.dataMasterCategori.id; + modalRef.componentInstance.mode = "add"; + modalRef.result.then( + (result) => { + console.log(result); + if (result) { + this.monitoringApiService + .postHeaderDetailParam(result) + .subscribe((res) => { + console.log(res); + this.fetchData(); + }); + } + }, + (reason) => { + console.log(`Dismissed: ${reason}`); + } + ); + } + + editRow(row) { + const modalRef = this.modalService.open(AddEditMasterComponent, { + size: "lg", + }); + + modalRef.componentInstance.headerId = this.dataMasterCategori.id; + modalRef.componentInstance.dataRow = row; + modalRef.componentInstance.mode = "edit"; + modalRef.result.then( + (result) => { + console.log(result); + if (result) { + this.monitoringApiService + .putHeaderDetailParam(result, row.id) + .subscribe((res) => { + console.log(res); + this.fetchData(); + }); + } + }, + (reason) => { + console.log(`Dismissed: ${reason}`); + } + ); + } + + deleteRow(row) { + const confirmDelete = confirm("Are you sure you want to delete this item?"); + if (confirmDelete) { + this.monitoringApiService + .deleteHeaderDetailParam(row.id) + .subscribe((res) => { + this.fetchData(); + }); + } + } }