penambahan form edit dan view
This commit is contained in:
parent
dc74154a27
commit
e3315bd761
|
@ -11,7 +11,15 @@
|
||||||
(reloadFunction)="reloadProjectInfo($event)"
|
(reloadFunction)="reloadProjectInfo($event)"
|
||||||
>
|
>
|
||||||
<ng-container mCardHeaderTitle>
|
<ng-container mCardHeaderTitle>
|
||||||
Project Info (Reactive Forms Validation)
|
<h2>
|
||||||
|
{{
|
||||||
|
isEditMode()
|
||||||
|
? "Edit Device"
|
||||||
|
: isViewMode()
|
||||||
|
? "View Device"
|
||||||
|
: "Add New Device"
|
||||||
|
}}
|
||||||
|
</h2>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<ng-container mCardBody>
|
<ng-container mCardBody>
|
||||||
<form
|
<form
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { Component, ViewChild } from "@angular/core";
|
import { Component, ViewChild } from "@angular/core";
|
||||||
import { FormBuilder, FormGroup, NgForm, Validators } from "@angular/forms";
|
import { FormBuilder, FormGroup, NgForm, Validators } from "@angular/forms";
|
||||||
import { Router } from "@angular/router";
|
import { ActivatedRoute, Router } from "@angular/router";
|
||||||
import { BlockUI, NgBlockUI } from "ng-block-ui";
|
import { BlockUI, NgBlockUI } from "ng-block-ui";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
@ -12,6 +12,7 @@ export class AddEditDeviceComponent {
|
||||||
@ViewChild("f", { read: true }) userProfileForm: NgForm;
|
@ViewChild("f", { read: true }) userProfileForm: NgForm;
|
||||||
|
|
||||||
model: any = {};
|
model: any = {};
|
||||||
|
mode: string;
|
||||||
|
|
||||||
@BlockUI("projectInfo") blockUIProjectInfo: NgBlockUI;
|
@BlockUI("projectInfo") blockUIProjectInfo: NgBlockUI;
|
||||||
@BlockUI("userProfile") blockUIUserProfile: NgBlockUI;
|
@BlockUI("userProfile") blockUIUserProfile: NgBlockUI;
|
||||||
|
@ -49,9 +50,17 @@ export class AddEditDeviceComponent {
|
||||||
priority = ["Low", "Medium", "High"];
|
priority = ["Low", "Medium", "High"];
|
||||||
status = ["Not Started", "Started", "Fixed"];
|
status = ["Not Started", "Started", "Fixed"];
|
||||||
|
|
||||||
constructor(private formBuilder: FormBuilder, private router: Router) {}
|
constructor(
|
||||||
|
private formBuilder: FormBuilder,
|
||||||
|
private router: Router,
|
||||||
|
private route: ActivatedRoute
|
||||||
|
) {}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
|
this.route.data.subscribe((data) => {
|
||||||
|
this.mode = data.mode;
|
||||||
|
console.log(this.mode);
|
||||||
|
});
|
||||||
this.breadcrumb = {
|
this.breadcrumb = {
|
||||||
mainlabel: "Basic Forms",
|
mainlabel: "Basic Forms",
|
||||||
links: [
|
links: [
|
||||||
|
@ -85,6 +94,18 @@ export class AddEditDeviceComponent {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isEditMode() {
|
||||||
|
return this.mode === "edit";
|
||||||
|
}
|
||||||
|
|
||||||
|
isViewMode() {
|
||||||
|
return this.mode === "view";
|
||||||
|
}
|
||||||
|
|
||||||
|
isAddMode() {
|
||||||
|
return this.mode === "add";
|
||||||
|
}
|
||||||
|
|
||||||
get f() {
|
get f() {
|
||||||
return this.projectInfo.controls;
|
return this.projectInfo.controls;
|
||||||
}
|
}
|
||||||
|
@ -122,9 +143,7 @@ export class AddEditDeviceComponent {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
addData(){
|
addData() {}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
cancel() {
|
cancel() {
|
||||||
this.router.navigate(["/device"]); // Adjust the path as per your routing setup
|
this.router.navigate(["/device"]); // Adjust the path as per your routing setup
|
||||||
|
|
|
@ -6,6 +6,25 @@
|
||||||
<div class="content-body">
|
<div class="content-body">
|
||||||
<!-- Add rows table -->
|
<!-- Add rows table -->
|
||||||
<section id="add-row">
|
<section id="add-row">
|
||||||
|
<div class="row mb-2">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="form-control"
|
||||||
|
placeholder="Search..."
|
||||||
|
[(ngModel)]="searchTerm"
|
||||||
|
(input)="filterRows()"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6 text-right">
|
||||||
|
<button
|
||||||
|
class="btn btn-secondary"
|
||||||
|
[routerLink]="['/device/add-row']"
|
||||||
|
>
|
||||||
|
<i class="feather ft-plus"></i> Add new row
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-12" *blockUI="'addRows'; message: 'Loading'">
|
<div class="col-12" *blockUI="'addRows'; message: 'Loading'">
|
||||||
<m-card
|
<m-card
|
||||||
|
@ -13,42 +32,30 @@
|
||||||
(reloadFunction)="reloadAddRows($event)"
|
(reloadFunction)="reloadAddRows($event)"
|
||||||
>
|
>
|
||||||
<ng-container mCardBody>
|
<ng-container mCardBody>
|
||||||
<button
|
|
||||||
id="addRow"
|
|
||||||
class="btn btn-secondary my-1 mb-2"
|
|
||||||
[routerLink]="['/device/add-row']"
|
|
||||||
>
|
|
||||||
<i class="feather ft-plus"></i> Add new row
|
|
||||||
</button>
|
|
||||||
<div class="table table-striped table-bordered add-rows">
|
<div class="table table-striped table-bordered add-rows">
|
||||||
<ngx-datatable
|
<ngx-datatable
|
||||||
class="bootstrap"
|
class="bootstrap"
|
||||||
[sortType]="'multi'"
|
[sortType]="'multi'"
|
||||||
[headerHeight]="50"
|
[headerHeight]="50"
|
||||||
[limit]="7"
|
[limit]="10"
|
||||||
[footerHeight]="40"
|
[footerHeight]="40"
|
||||||
[rowHeight]="40"
|
[rowHeight]="40"
|
||||||
[rows]="rows"
|
[rows]="filteredRows"
|
||||||
[columnMode]="'force'"
|
[columnMode]="'force'"
|
||||||
[loadingIndicator]="loadingIndicator"
|
[loadingIndicator]="loadingIndicator"
|
||||||
fxFlex="auto"
|
fxFlex="auto"
|
||||||
[perfectScrollbar]="config"
|
[perfectScrollbar]="config"
|
||||||
>
|
>
|
||||||
<ngx-datatable-column
|
<ngx-datatable-column
|
||||||
name="ID"
|
name="#"
|
||||||
[flexGrow]="1"
|
[flexGrow]="1"
|
||||||
[minWidth]="20"
|
[minWidth]="20"
|
||||||
>
|
>
|
||||||
<ng-template
|
<ng-template
|
||||||
ngx-datatable-cell-template
|
ngx-datatable-cell-template
|
||||||
let-rowIndex="rowIndex"
|
let-rowIndex="rowIndex"
|
||||||
*ngfor
|
|
||||||
let
|
|
||||||
element
|
|
||||||
of
|
|
||||||
rows
|
|
||||||
>
|
>
|
||||||
<b>{{ element.id }}</b>
|
<b>{{ rowIndex + 1 }}</b>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
</ngx-datatable-column>
|
</ngx-datatable-column>
|
||||||
<ngx-datatable-column
|
<ngx-datatable-column
|
||||||
|
@ -90,7 +97,6 @@
|
||||||
</span>
|
</span>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
</ngx-datatable-column>
|
</ngx-datatable-column>
|
||||||
|
|
||||||
<ngx-datatable-column
|
<ngx-datatable-column
|
||||||
name="Office"
|
name="Office"
|
||||||
[flexGrow]="1"
|
[flexGrow]="1"
|
||||||
|
@ -107,7 +113,6 @@
|
||||||
{{ element.office }}
|
{{ element.office }}
|
||||||
</ng-template>
|
</ng-template>
|
||||||
</ngx-datatable-column>
|
</ngx-datatable-column>
|
||||||
|
|
||||||
<ngx-datatable-column
|
<ngx-datatable-column
|
||||||
name="Age"
|
name="Age"
|
||||||
[flexGrow]="1"
|
[flexGrow]="1"
|
||||||
|
@ -156,6 +161,36 @@
|
||||||
{{ element.startdate }}
|
{{ element.startdate }}
|
||||||
</ng-template>
|
</ng-template>
|
||||||
</ngx-datatable-column>
|
</ngx-datatable-column>
|
||||||
|
<ngx-datatable-column
|
||||||
|
name="Actions"
|
||||||
|
[flexGrow]="1"
|
||||||
|
[minWidth]="150"
|
||||||
|
>
|
||||||
|
<ng-template
|
||||||
|
ngx-datatable-cell-template
|
||||||
|
let-rowIndex="rowIndex"
|
||||||
|
let-row="row"
|
||||||
|
>
|
||||||
|
<button
|
||||||
|
class="btn btn-sm btn-info mr-1"
|
||||||
|
(click)="viewRow(row)"
|
||||||
|
>
|
||||||
|
<i class="ficon feather ft-eye"></i>
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
class="btn btn-sm btn-warning mr-1"
|
||||||
|
(click)="editRow(row)"
|
||||||
|
>
|
||||||
|
<i class="ficon feather ft-edit"></i>
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
class="btn btn-sm btn-danger"
|
||||||
|
(click)="deleteRow(row)"
|
||||||
|
>
|
||||||
|
<i class="ficon feather ft-trash-2"></i>
|
||||||
|
</button>
|
||||||
|
</ng-template>
|
||||||
|
</ngx-datatable-column>
|
||||||
</ngx-datatable>
|
</ngx-datatable>
|
||||||
</div>
|
</div>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
|
|
@ -8,6 +8,7 @@ import {
|
||||||
} from "ngx-perfect-scrollbar";
|
} from "ngx-perfect-scrollbar";
|
||||||
import { TableApiService } from "src/app/_services/table-api.service";
|
import { TableApiService } from "src/app/_services/table-api.service";
|
||||||
import { ModalAddEditComponent } from "./modal-add-edit/modal-add-edit.component";
|
import { ModalAddEditComponent } from "./modal-add-edit/modal-add-edit.component";
|
||||||
|
import { ActivatedRoute, Router } from "@angular/router";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: "app-device",
|
selector: "app-device",
|
||||||
|
@ -16,6 +17,8 @@ import { ModalAddEditComponent } from "./modal-add-edit/modal-add-edit.component
|
||||||
})
|
})
|
||||||
export class DeviceComponent implements OnInit {
|
export class DeviceComponent implements OnInit {
|
||||||
data: any;
|
data: any;
|
||||||
|
filteredRows: any[];
|
||||||
|
searchTerm: string = '';
|
||||||
|
|
||||||
@BlockUI("addRows") blockUIAddRows: NgBlockUI;
|
@BlockUI("addRows") blockUIAddRows: NgBlockUI;
|
||||||
@BlockUI("rowSelection") blockUIRowSelection: NgBlockUI;
|
@BlockUI("rowSelection") blockUIRowSelection: NgBlockUI;
|
||||||
|
@ -43,46 +46,49 @@ export class DeviceComponent implements OnInit {
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private tableApiservice: TableApiService,
|
private tableApiservice: TableApiService,
|
||||||
private modalService: NgbModal
|
private modalService: NgbModal,
|
||||||
|
private router: Router
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.breadcrumb = {
|
this.fetchData();
|
||||||
mainlabel: "Device List",
|
}
|
||||||
links: [
|
|
||||||
{
|
|
||||||
name: "Home",
|
|
||||||
isLink: false,
|
|
||||||
link: "/dashboard/sales",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "Device",
|
|
||||||
isLink: false,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
};
|
|
||||||
this.tableApiservice.getTableApiData().subscribe((Response) => {
|
|
||||||
console.log(Response);
|
|
||||||
|
|
||||||
this.data = Response;
|
fetchData() {
|
||||||
this.getTabledata();
|
this.tableApiservice.getTableApiData().subscribe((response) => {
|
||||||
|
this.data = response;
|
||||||
|
this.filteredRows = this.data.rows;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getTabledata() {
|
filterRows() {
|
||||||
this.rows = this.data.rows;
|
if (!this.searchTerm) {
|
||||||
this.row = this.data.row;
|
this.filteredRows = [...this.data.rows];
|
||||||
|
} else {
|
||||||
|
this.filteredRows = this.data.rows.filter((row) =>
|
||||||
|
this.rowContainsSearchTerm(row)
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private newAttribute = {
|
rowContainsSearchTerm(row: any): boolean {
|
||||||
id: 15,
|
const searchTermLC = this.searchTerm.toLowerCase();
|
||||||
name: "Mark",
|
return Object.values(row).some(
|
||||||
position: "Otto",
|
(value) =>
|
||||||
office: "@mdo",
|
value !== null &&
|
||||||
age: "31",
|
value.toString().toLowerCase().includes(searchTermLC)
|
||||||
salary: "12000",
|
);
|
||||||
startdate: "16/05/2017",
|
}
|
||||||
};
|
|
||||||
|
// private newAttribute = {
|
||||||
|
// id: 15,
|
||||||
|
// name: "Mark",
|
||||||
|
// position: "Otto",
|
||||||
|
// office: "@mdo",
|
||||||
|
// age: "31",
|
||||||
|
// salary: "12000",
|
||||||
|
// startdate: "16/05/2017",
|
||||||
|
// };
|
||||||
|
|
||||||
// addFieldValue() {
|
// addFieldValue() {
|
||||||
// this.rows.push(this.newAttribute);
|
// this.rows.push(this.newAttribute);
|
||||||
|
@ -102,5 +108,20 @@ export class DeviceComponent implements OnInit {
|
||||||
console.log(`Dismissed: ${reason}`);
|
console.log(`Dismissed: ${reason}`);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
viewRow(row) {
|
||||||
|
console.log("View row:", row);
|
||||||
|
this.router.navigate(['/device/view', row.id]);
|
||||||
|
}
|
||||||
|
|
||||||
|
editRow(row) {
|
||||||
|
console.log("Edit row:", row);
|
||||||
|
this.router.navigate(['/device/edit', row.id]);
|
||||||
|
}
|
||||||
|
|
||||||
|
deleteRow(row) {
|
||||||
|
console.log("Delete row:", row);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,7 +43,18 @@ import { ModalAddEditComponent } from './modal-add-edit/modal-add-edit.component
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'add-row',
|
path: 'add-row',
|
||||||
component: AddEditDeviceComponent
|
component: AddEditDeviceComponent,
|
||||||
|
data: { mode: 'add' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'edit/:id',
|
||||||
|
component: AddEditDeviceComponent,
|
||||||
|
data: { mode: 'edit' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'view/:id',
|
||||||
|
component: AddEditDeviceComponent,
|
||||||
|
data: { mode: 'view' }
|
||||||
}
|
}
|
||||||
])
|
])
|
||||||
]
|
]
|
||||||
|
|
Loading…
Reference in New Issue