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();
+ });
+ }
+ }
}