Commit 0ad76c64 by sawit

Datasource Table

parent b3348a7f
......@@ -93,6 +93,11 @@ export const admin: Routes = [
loadComponent: () =>
import('./myportal/set-excel-reports/excel-list/excel-list.component').then((m) => m.ExcelListComponent),
},
{
path: 'datasource-table',
loadComponent: () =>
import('./myportal/datasource-table/datasource-table.component').then((m) => m.DatasourceTableComponent),
},
//////////////emp/////////////////
{
path: 'emp/department',
......
<app-page-header [title]="'Datasource Table'" [activeTitle]="'ผู้ดูแลระบบ'" [title1]="'Datasource Table'"></app-page-header>
<div class="grid grid-cols-12 gap-6">
<div class="xl:col-span-12 col-span-12">
<div class="box">
<div class="box-header justify-between">
<div class="box-title">
{{ 'All List' | translate}} <span
class="badge bg-light text-default rounded-full ms-1 text-[0.75rem] align-middle">{{itemsList.length}}</span>
</div>
<div class="flex flex-wrap gap-2">
<a href="javascript:void(0);" class="hs-dropdown-toggle ti-btn ti-btn-primary-full me-2" (click)="new()"
data-hs-overlay="#modal-detail"><i
class="ri-add-line font-semibold align-middle"></i>{{ 'Create' |
translate}}
</a>
<a href="javascript:void(0);" class="hs-dropdown-toggle ti-btn ti-btn-danger-full me-2" *ngIf="someSelected"
(click)="deleteSelect()"><i class="ri-delete-bin-line font-semibold align-middle"></i>{{ 'Delete' | translate}}</a>
<div>
<input class="form-control form-control" type="text" placeholder="ค้นหา..."
aria-label=".form-control-sm example" [(ngModel)]='searchTerm'>
</div>
</div>
</div>
<div class="box-body">
<div class="table-responsive">
<table class="table whitespace-nowrap min-w-full ti-custom-table-hover">
<thead>
<tr class="border-b border-defaultborder">
<th scope="col" class="!text-start">
<input class="form-check-input check-all" type="checkbox" id="all-products"
(change)="toggleAll($event)" [checked]="allSelected" aria-label="...">
</th>
<th scope="col" class="text-start">{{'รหัสบริษัท' | translate}}</th>
<th scope="col" class="text-start">{{ 'Company Name' | translate}}</th>
<th scope="col" class="text-start">{{ 'Database Type' | translate}}</th>
<th scope="col" class="text-start">{{ 'Port Number' | translate}}</th>
<th scope="col" class="text-start">{{ 'Database Name' | translate}}</th>
<th scope="col" class="text-start">{{ 'Server Name' | translate}}</th>
<th scope="col" class="text-start">{{ 'Status' | translate}}</th>
<th scope="col" class="text-start">{{ 'User Name' | translate}}</th>
<th scope="col" class="text-start">{{ 'Password' | translate}}</th>
<th scope="col" class="text-start">{{ 'Action' | translate}}</th>
</tr>
</thead>
<tbody>
@if (filterList.length > 0) {
@for (item of filterList; track item.companyId) {
<tr class="border border-defaultborder dark:border-defaultborder/10">
<td class="product-checkbox">
<input class="form-check-input" type="checkbox" [checked]="selectedItems.get(item.companyId) || false"
(change)="onCheckboxChange(item.companyId)" aria-label="...">
</td>
<td>
<span class="block mb-1">
{{item.companyId}}
</span>
</td>
<td>
<div>
<span class="block mb-1">
{{item.companyName}}
</span>
</div>
</td>
<td>
<div>
<span class="block mb-1">
{{item.dbType}}
</span>
</div>
</td>
<td>
<div>
<span class="block mb-1">
{{item.portNumber}}
</span>
</div>
</td>
<td>
<div>
<span class="block mb-1">
{{item.databaseName}}
</span>
</div>
</td>
<td>
<div>
<span class="block mb-1">
{{item.serverName}}
</span>
</div>
</td>
<td>
<div>
<span class="block mb-1">
{{item.status}}
</span>
</div>
</td>
<td>
<div>
<span class="block mb-1">
{{item.userName}}
</span>
</div>
</td>
<td class="text-center" style="white-space: normal !important;word-break: break-word;">
<span class="cursor-pointer" (click)="selectData(item)">
{{tableShowPassword.get(item.companyId)?item.password : '*'.repeat(item.password?.length || 0) }}</span>&nbsp;
<i class="cursor-pointer fa fa-eye" *ngIf="tableShowPassword.get(item.companyId)" (click)="tableShowPassword.set(item.companyId,false)"></i>
<i class="cursor-pointer fa fa-eye-slash" *ngIf="!tableShowPassword.get(item.companyId)" (click)="tableShowPassword.set(item.companyId,true)"></i>
</td>
<td>
<div class="flex flex-row items-center !gap-2 ">
<a aria-label="anchor" (click)="view(item)" data-hs-overlay="#modal-detail"
class="ti-btn ti-btn-wave !gap-0 !m-0 bg-info/10 text-info hover:bg-info hover:text-white hover:border-info">
<i class="ri-pencil-line"></i>
</a>
<a aria-label="anchor" href="javascript:void(0);" (click)="delete(item)"
class="ti-btn ti-btn-wave product-btn !gap-0 !m-0 bg-danger/10 text-danger hover:bg-danger hover:text-white hover:border-danger">
<i class="ri-delete-bin-line"></i>
</a>
</div>
</td>
</tr>
}
} @else {
<tr>
<td [attr.colspan]="6" class="text-center py-4">
<ng-container *ngIf="itemsList.length === 0 && !searchTerm">
<p>กำลังโหลดข้อมูล หรือไม่มีข้อมูลเลย...</p>
</ng-container>
<ng-container *ngIf="itemsList.length > 0 && filterList.length === 0 && searchTerm">
<p>ไม่พบข้อมูลที่ค้นหา...</p>
</ng-container>
</td>
</tr>
}
</tbody>
</table>
</div>
</div>
<div class="box-footer">
<div class="flex items-center flex-wrap overflow-auto" *ngIf="filterList.length > 0">
<div class="mb-2 sm:mb-0">
<div>
{{'Showing' | translate}} {{filterList.length}} {{'entries'
| translate}} <i class="bi bi-arrow-right ms-2 font-semibold"></i>
</div>
</div>
<div class="ms-auto">
<nav aria-label="Page navigation">
<ul class="ti-pagination mb-0">
<li *ngIf="pageIndex>0" class="page-item {{pageIndex==0 ? 'disabled' : ''}}"><a
class="page-link px-3 py-[0.375rem] cursor-pointer"
(click)="pageIndex = pageIndex-1;updatePagedItems()">{{'Previous' | translate}}</a></li>
<li class="page-item"><a class="page-link px-3 py-[0.375rem]" href="javascript:void(0);"
*ngIf="pageIndex-1>0" (click)="pageIndex = pageIndex-2;updatePagedItems()">{{pageIndex-1}}</a></li>
<li class="page-item"><a class="page-link px-3 py-[0.375rem]" href="javascript:void(0);"
*ngIf="pageIndex>0 && ((pageIndex-1)*10 < (searchTerm == '' ? itemsList.length : filterList.length))"
(click)="pageIndex = pageIndex-1;updatePagedItems()">{{pageIndex}}</a></li>
<li class="page-item"><a class="page-link active px-3 py-[0.375rem]"
href="javascript:void(0);">{{pageIndex +1}}</a>
</li>
<li class="page-item"><a class="page-link px-3 py-[0.375rem]" href="javascript:void(0);"
*ngIf="(pageIndex+1)*10 < (searchTerm == '' ? itemsList.length : filterList.length)"
(click)="pageIndex = pageIndex+1;updatePagedItems()">{{pageIndex +2}}</a></li>
<li class="page-item"><a class="page-link px-3 py-[0.375rem]" href="javascript:void(0);"
*ngIf="(pageIndex+2)*10 < (searchTerm == '' ? itemsList.length : filterList.length)"
(click)="pageIndex = pageIndex+2;updatePagedItems()">{{pageIndex +3}}</a></li>
<li *ngIf="(pageIndex+1)*10 < (searchTerm == '' ? itemsList.length : filterList.length)"
class="page-item"><a class="page-link px-3 py-[0.375rem] cursor-pointer"
(click)="pageIndex = pageIndex+1;updatePagedItems()">{{'Next' |
translate}}</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Start:: Create Contact -->
<div id="modal-detail" class="hs-overlay hidden ti-modal [--overlay-backdrop:static]">
<div class="hs-overlay-open:mt-7 ti-modal-box mt-0 ease-out">
<div class="ti-modal-content">
<div class="ti-modal-header">
<h6 class="modal-title text-[1rem] font-semibold text-defaulttextcolor" id="mail-ComposeLabel">
<!-- {{ (modalStatus == 'add' ? ('Create' | translate) : ('Edit' | translate)) + ' ' + ('Datasource Table Information' | translate) }} -->
{{('Datasource Table Information' | translate)}}
</h6>
<button type="button" class="hs-dropdown-toggle !text-[1rem] !font-semibold !text-defaulttextcolor"
data-hs-overlay="#modal-detail" #closeModal>
<span class="sr-only">{{'Close' | translate}}</span>
<i class="ri-close-line"></i>
</button>
</div>
<div class="ti-modal-body px-4">
<div class="grid grid-cols-12 gap-4">
<div class="xl:col-span-12 col-span-12" *ngIf="action == 'edit'">
<label for="companyId" class="form-label">{{'รหัสบริษัท' | translate}}</label>
<input type="text" class="form-control !bg-input-readonly" id="companyId" placeholder="" [(ngModel)]="selectModel.companyId"
[disabled]="action === 'edit'" >
<!-- <div class="text-danger" *ngIf="!selectModel.companyId && action === 'add'">
{{'Please fill in information' | translate}}
</div> -->
</div>
<div class="xl:col-span-12 col-span-12" *ngIf="modalStatus=='add'">
<label for="deal-title" class="form-label">{{ 'Company Name' | translate}}</label>
<input type="text" class="form-control" id="deal-title" placeholder=""
[(ngModel)]="selectModel.companyName">
<div class="text-danger" *ngIf="!selectModel.companyName">
{{'Please fill in information' | translate}}
</div>
</div>
</div>
<div class="xl:col-span-12 col-span-12" *ngIf="modalStatus=='add'">
<label for="deal-title" class="form-label">{{ 'Database Type' | translate}}</label>
<!-- <input type="text" class="form-control" id="deal-title" placeholder=""
[(ngModel)]="selectModel.dbType"> -->
<select class="form-control" [(ngModel)]="selectModel.dbType">
<option style="color: red" [class.d-none]="selectModel.dbType==''" [value]="''">
{{selectModel.dbType!=''?'ยกเลิก':''}}</option>
<option value="MSSQL">MSSQL</option>
<option value="PGSQL">PGSQL</option>
</select>
<div class="text-danger" *ngIf="!selectModel.dbType">
{{'Please fill in information' | translate}}
</div>
</div>
<div class="xl:col-span-12 col-span-12" *ngIf="modalStatus=='add'">
<label for="deal-title" class="form-label">{{ 'Port Number' | translate}}</label>
<input type="text" class="form-control" id="deal-title" placeholder=""
[(ngModel)]="selectModel.portNumber">
<div class="text-danger" *ngIf="!selectModel.portNumber">
{{'Please fill in information' | translate}}
</div>
</div>
<div class="xl:col-span-12 col-span-12" *ngIf="modalStatus=='add'">
<label for="deal-title" class="form-label">{{ 'Database Name' | translate}}</label>
<input type="text" class="form-control" id="deal-title" placeholder="" [(ngModel)]="selectModel.databaseName">
<div class="text-danger" *ngIf="!selectModel.databaseName">
{{'Please fill in information' | translate}}
</div>
<div class="xl:col-span-12 col-span-12" *ngIf="modalStatus=='add'">
<label for="deal-title" class="form-label">{{ 'Server Name' | translate}}</label>
<input type="text" class="form-control" id="deal-title" placeholder=""
[(ngModel)]="selectModel.serverName">
<div class="text-danger" *ngIf="!selectModel.serverName">
{{'Please fill in information' | translate}}
</div>
</div>
<div class="xl:col-span-12 col-span-12" *ngIf="modalStatus=='add'">
<label for="deal-title" class="form-label">{{ 'Status' | translate}}</label>
<!-- <input type="text" class="form-control" id="deal-title" placeholder=""
[(ngModel)]="selectModel.status"> -->
<select class="form-control" [(ngModel)]="selectModel.status">
<option style="color: red" [class.d-none]="selectModel.status==''" [value]="''">
{{selectModel.status!=''?'ยกเลิก':''}}</option>
<option value="online">online</option>
<option value="offline">offline</option>
</select>
<div class="text-danger" *ngIf="!selectModel.status">
{{'Please fill in information' | translate}}
</div>
</div>
<div class="xl:col-span-12 col-span-12" *ngIf="modalStatus=='add'">
<label for="deal-title" class="form-label">{{ 'User Name' | translate}}</label>
<input type="text" class="form-control" id="deal-title" placeholder=""
[(ngModel)]="selectModel.userName">
<div class="text-danger" *ngIf="!selectModel.userName">
{{'Please fill in information' | translate}}
</div>
</div>
<div class="xl:col-span-12 col-span-12" *ngIf="modalStatus=='add'">
<label for="deal-title" class="form-label">{{ 'Password' | translate}}</label><br>
<input type="text" class="form-control" style="width: 95%" id="deal-title" placeholder=""
[(ngModel)]="selectModel.password" [class.secure-input]="!showPassword">
<i class="fa fa-eye cursor-pointer" *ngIf="showPassword" (click)="showPassword=false"></i>
<i class="fa fa-eye-slash cursor-pointer" *ngIf="!showPassword" (click)="showPassword=true"></i>
<div class="text-danger" *ngIf="!selectModel.password">
{{'Please fill in information' | translate}}
</div>
</div>
</div>
</div>
<div class="ti-modal-footer">
<button type="button" class="hs-dropdown-toggle ti-btn ti-btn-light align-middle"
data-hs-overlay="#modal-detail">
{{'Cancel' | translate}}
</button>
<button type="button" (click)="save()" class="ti-btn bg-primary text-white !font-medium"
[class.ti-btn-disabled]="!selectModel.companyName||!selectModel.dbType||!selectModel.portNumber||!selectModel.databaseName||!selectModel.serverName||!selectModel.status||!selectModel.userName||!selectModel.password"
[disabled]="!selectModel.companyName||!selectModel.dbType||!selectModel.portNumber||!selectModel.databaseName||!selectModel.serverName||!selectModel.status||!selectModel.userName||!selectModel.password">
{{'Save' | translate}}</button>
</div>
</div>
</div>
</div>
\ No newline at end of file
.secure-input {
-webkit-text-security: disc;
text-security: disc;
}
\ No newline at end of file
import { Component, ElementRef, ViewChild } from '@angular/core';
import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
import { Router, RouterModule } from '@angular/router';
import { SharedModule } from '../../../../shared/shared.module';
import { TranslateModule, TranslateService } from '@ngx-translate/core';
import swal from 'sweetalert';
import { MatPaginator } from '@angular/material/paginator';
import { FormsModule } from '@angular/forms';
import { NgSelectModule } from '@ng-select/ng-select';
import { CommonModule } from '@angular/common';
import { FileUploadModule } from 'ng2-file-upload';
import { FileItem, FileUploader, ParsedResponseHeaders } from "ng2-file-upload";
import { environment } from '../../../../../environments/environment';
import { TokenService } from '../../../../shared/services/token.service'
import { QuillModule } from 'ngx-quill';
import { MatDialog, MatDialogModule } from '@angular/material/dialog';
import { DatasourseTableService } from '../../../services/datasourse-table.service';
import { NgbPagination } from '@ng-bootstrap/ng-bootstrap';
import { DatasourceTableModel, MyDatasourceTableModel } from '../../../models/datasource-table.model';
@Component({
selector: 'app-datasource-table',
templateUrl: './datasource-table.component.html',
styleUrls: ['./datasource-table.component.scss'],
standalone: true,
imports: [
CommonModule,
FormsModule,
RouterModule,
NgSelectModule,
SharedModule,
MatDialogModule,
TranslateModule,
]
})
export class DatasourceTableComponent {
quillConfig = {
toolbar: [
['link'], // เพิ่มปุ่มลิงก์
['bold', 'italic', 'underline', 'strike'], // toggled buttons
['blockquote', 'code-block'],
[{ 'header': 1 }, { 'header': 2 }], // custom button values
[{ 'list': 'ordered' }, { 'list': 'bullet' }],
[{ 'script': 'sub' }, { 'script': 'super' }], // superscript/subscript
[{ 'indent': '-1' }, { 'indent': '+1' }], // outdent/indent
[{ 'direction': 'rtl' }], // text direction
[{ 'size': ['small', false, 'large', 'huge'] }], // custom dropdown
[{ 'header': [1, 2, 3, 4, 5, 6, false] }],
[{ 'color': [] }, { 'background': [] }], // dropdown with defaults from theme
[{ 'align': [] }],
['clean'], // remove formatting button
]
};
@ViewChild('closeModal') public childModal?: ElementRef;
@ViewChild('modalDetail') public modalDetail?: ElementRef;
@ViewChild("CareerClusterModel") CareerClusterModel: any;
@ViewChild('profileChangeInput') profileChangeInputRef!: ElementRef;
dialogRef: any
currentContentTab: number = 1;
currentExcerptTab: number = 1;
action = "new";
allSelected = false;
someSelected = false;
itemsList: DatasourceTableModel[] = [];
filterList: DatasourceTableModel[] = [];
selectModel: DatasourceTableModel = new MyDatasourceTableModel();
selectedItems = new Map<string, boolean>();
// empList: DatasourceTableModel[] = [];
// descName = 'engName';
pageIndex = 0;
uploaderProfile: FileUploader | undefined;
uploadErrorMsg: string = "";
modalStatus: "add" | "edit" = "add"
showPassword = false
tableShowPassword: Map<string, boolean> = new Map<string, boolean>()
get searchTerm(): string {
return this._searchTerm;
}
set searchTerm(val: string) {
this.pageIndex = 0;
this.allSelected = false;
this._searchTerm = val;
if (val != '') {
this.filterList = this.filter(val);
} else {
this.updatePagedItems();
}
}
_searchTerm = "";
constructor(
private datasourceTable: DatasourseTableService,
public translate: TranslateService,
private tokenService: TokenService,
private router: Router,
private dialog: MatDialog,
) {
}
getData() {
this.datasourceTable.getList().subscribe({
next: (response: DatasourceTableModel[]) => {
this.itemsList = response.map((x: any) => new MyDatasourceTableModel(x));
console.log('ข้อมูล (itemsList)', this.itemsList);
this.updatePagedItems();
},
error: (error) => {
console.error('error cant get position', error);
swal("ข้อผิดพลาด", "ไม่สามารถดึงข้อมูลได้", "error");
}
});
}
ngOnInit(): void {
this.getData();
}
filter(v: string) {
return this.itemsList?.filter(
(x) =>
x.companyId?.toLowerCase().indexOf(v.toLowerCase()) !== -1 ||
x.companyName?.toLowerCase().indexOf(v.toLowerCase()) !== -1 ||
x.databaseName?.toLowerCase().indexOf(v.toLowerCase()) !== -1 ||
x.dbType?.toLowerCase().indexOf(v.toLowerCase()) !== -1 ||
x.password?.toLowerCase().indexOf(v.toLowerCase()) !== -1 ||
x.portNumber?.toLowerCase().indexOf(v.toLowerCase()) !== -1 ||
x.serverName?.toLowerCase().indexOf(v.toLowerCase()) !== -1 ||
x.status?.toLowerCase().indexOf(v.toLowerCase()) !== -1 ||
x.userName?.toLowerCase().indexOf(v.toLowerCase()) !== -1
// x.getStatus().toLowerCase().indexOf(v.toLowerCase()) !== -1
);
}
delete(item: DatasourceTableModel) {
swal({
title: "คุณแน่ใจหรือไม่?",
text: "คุณจะไม่สามารถกู้คืนข้อมูลนี้ได้!",
icon: "warning",
dangerMode: true,
buttons: ["ยกเลิก", "ใช่, ลบเลย!"],
})
.then((willDelete: any) => {
if (willDelete) {
const newData = new MyDatasourceTableModel(item)
this.datasourceTable.delete(newData).subscribe(result => {
swal("ลบสำเร็จ!!", "ลบข้อมูลสำเร็จ", "success");
this.ngOnInit();
}, error => {
console.error("เกิดข้อผิดพลาดในการลบ:", error);
swal("ข้อผิดพลาด!!", "ไม่สามารถลบข้อมูลได้", "error");
});
}
});
}
new() {
this.action = 'add';
this.selectModel = new MyDatasourceTableModel();
// this.selectModel.status = 1;
this.selectModel.companyId = "";
this.selectModel.companyName = "";
this.selectModel.databaseName = "";
this.selectModel.dbType = "";
this.selectModel.password = "";
this.selectModel.portNumber = "";
this.selectModel.serverName = "";
this.selectModel.status = "";
this.selectModel.userName = "";
}
view(item: DatasourceTableModel) {
this.action = 'edit';
this.selectModel = new MyDatasourceTableModel(item);
console.log(this.selectModel);
}
save() {
console.log('Before Save, selectModel is:', this.selectModel);
swal({
title: "คุณแน่ใจหรือไม่?",
text: "คุณต้องการบันทึกหรือไม่",
icon: "warning",
dangerMode: false,
buttons: ["ยกเลิก", "ยืนยัน"],
})
.then((willSave: any) => {
if (willSave) {
this.datasourceTable.post(this.selectModel).subscribe(result => {
console.log(result);
swal("บันทึกสำเร็จ!!", "บันทึกข้อมูลสมาชิก", "success");
this.ngOnInit();
this.childModal?.nativeElement.click();
}, error => {
console.error("เกิดข้อผิดพลาดในการบันทึก/อัปเดต:", error);
swal("ข้อผิดพลาด!!", "ไม่สามารถบันทึก/อัปเดตข้อมูลได้", "error");
});
}
});
}
updatePagedItems() {
const startIndex = this.pageIndex * 10;
const endIndex = startIndex + 10;
this.filterList = this.itemsList.slice(startIndex, endIndex);
}
toggleAll(event: any) {
this.allSelected = event.target.checked;
this.selectedItems.clear();
this.itemsList.forEach(item => {
this.selectedItems.set(item.companyId, this.allSelected);
});
this.someSelected = this.itemsList.some(item => this.selectedItems.get(item.companyId));
}
onCheckboxChange(companyId: string) {
const isSelected = this.selectedItems.get(companyId) || false;
this.selectedItems.set(companyId, !isSelected);
this.allSelected = this.itemsList.every(item => this.selectedItems.get(item.companyId));
this.someSelected = this.itemsList.some(item => this.selectedItems.get(item.companyId));
}
deleteSelect() {
let employeeInfo = '';
this.selectedItems.forEach((isSelected, companyId) => {
if (isSelected) {
const user = this.itemsList.find(user => user.companyId === companyId);
if (user) {
employeeInfo += `${this.translate.instant('companyName')}: ${user.companyName}\n`;
}
}
});
swal({
title: "Are you sure?",
text: employeeInfo,
icon: "warning",
dangerMode: true,
buttons: ["Cancel", "Yes, Delete it!"],
})
.then((willDelete: any) => {
if (willDelete) {
this.selectedItems.forEach((isSelected, companyId) => {
if (isSelected) {
const user = this.itemsList.find(user => user.companyId === companyId);
if (user) {
const newData = new MyDatasourceTableModel(user)
this.datasourceTable.delete(newData).subscribe(result => {
swal("Save Success!!", "บันทึกข้อมูลสำเร็จ", "success");
this.ngOnInit();
});
}
}
});
}
});
}
selectData(data: DatasourceTableModel) {
this.selectModel = new MyDatasourceTableModel(data)
this.scrollTop()
}
scrollTop() {
window.scrollTo({ top: 0, behavior: 'smooth' });
}
}
export interface DatasourceTableModel {
companyId: string
companyName: string
databaseName: string
dbType: string
password: string
portNumber: string
serverName: string
status: string
userName: string
}
export class MyDatasourceTableModel implements DatasourceTableModel {
companyId: string
companyName: string
databaseName: string
dbType: string
password: string
portNumber: string
serverName: string
status: string
userName: string
constructor(data?: Partial<DatasourceTableModel>) {
this.companyId = data?.companyId || ''
this.companyName = data?.companyName || ''
this.databaseName = data?.databaseName || ''
this.dbType = data?.dbType || ''
this.password = data?.password || ''
this.portNumber = data?.portNumber || ''
this.serverName = data?.serverName || ''
this.status = data?.status || ''
this.userName = data?.userName || ''
}
}
\ No newline at end of file
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { TranslateService } from '@ngx-translate/core';
import { Observable } from 'rxjs';
import { DatasourceTableModel } from '../models/datasource-table.model';
import { environment } from '../../../environments/environment';
import { AlertModel } from '../models/alert.model';
@Injectable({
providedIn: 'root'
})
export class DatasourseTableService {
constructor(private http: HttpClient,
private translateService: TranslateService
) { }
getid(companyid: string): Observable<DatasourceTableModel> {
return this.http.get<DatasourceTableModel>(environment.url + "datasource/" + companyid)
}
getList(): Observable<DatasourceTableModel[]> {
return this.http.get<DatasourceTableModel[]>(environment.url + "datasource/lists")
}
post(body: DatasourceTableModel): Observable<AlertModel> {
return this.http.post<AlertModel>(environment.url + "datasource", body)
}
delete(body: DatasourceTableModel): Observable<AlertModel> {
let option = {
headers: new HttpHeaders({
"Content-Type": "application/json",
}),
body: body
}
return this.http.delete<AlertModel>(environment.url + "datasource", option)
}
}
\ No newline at end of file
......@@ -144,8 +144,8 @@ export class NavService implements OnDestroy {
},
{
icon: 'receipt',
path: '/admin/manage-articles',
title: 'DataSource Tabel',
path: '/admin/datasource-table',
title: 'DataSource Table',
type: 'link',
},
{
......
......@@ -107,5 +107,7 @@
"Career Cluster ID":"Career Cluster ID",
"Invalid email format @":"May be you forgot @ [ Ex. ] username@hostname.com",
"Invalid email format .":"Why after @ have not dot [ Ex. ] username@hostname.com",
"This email already exists":"This email already exists"
"This email already exists":"This email already exists",
"Datasource Table Information":"Datasource Table",
"Company Name":"Company Name"
}
......@@ -107,5 +107,7 @@
"Career Cluster ID":"รหัสกลุ่มอาชีพ",
"Invalid email format @":"ไม่ได้ใส่ @ [ ตัวอย่าง ] username@hostname.com",
"Invalid email format .":"หลัง @ ไม่ได้ใส่ . หลังชื่อ [ ตัวอย่าง ] username@hostname.com",
"This email already exists":"อีเมลนี้มีอยู่แล้ว"
"This email already exists":"อีเมลนี้มีอยู่แล้ว",
"Datasource Table Information":"Datasource Table",
"Company Name":"ชื่อบริษัท"
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment