latest merge
All checks were successful
Build Docker Image / Preparing Dependecies (push) Successful in 5s

This commit is contained in:
2025-11-17 17:45:33 +07:00
parent a475265764
commit 21007f7bbc
10 changed files with 5460 additions and 1236 deletions

View File

@@ -21,7 +21,7 @@
"prefix": "app",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:application",
"builder": "@angular/build:application",
"options": {
"outputPath": "dist/ng-ttc-frontend",
"index": "src/index.html",
@@ -37,22 +37,33 @@
}
],
"styles": [
"node_modules/bootstrap/dist/css/bootstrap.min.css",
"node_modules/@fortawesome/fontawesome-free/css/all.min.css",
"src/styles.css"
],
"scripts": []
"scripts": [
"node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"
]
},
"configurations": {
"production": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.ts"
}
],
"optimization": true,
"budgets": [
{
"type": "initial",
"maximumWarning": "500kB",
"maximumError": "1MB"
"maximumWarning": "1MB",
"maximumError": "2MB"
},
{
"type": "anyComponentStyle",
"maximumWarning": "4kB",
"maximumError": "8kB"
"maximumWarning": "6kB",
"maximumError": "10kB"
}
],
"outputHashing": "all"
@@ -72,7 +83,11 @@
"defaultConfiguration": "production"
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"builder": "@angular/build:dev-server",
"options": {
"host": "0.0.0.0",
"allowedHosts": ["localhost"]
},
"configurations": {
"production": {
"buildTarget": "ng-ttc-frontend:build:production"
@@ -84,10 +99,10 @@
"defaultConfiguration": "development"
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n"
"builder": "@angular/build:extract-i18n"
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"builder": "@angular/build:karma",
"options": {
"polyfills": [
"zone.js",
@@ -101,9 +116,13 @@
}
],
"styles": [
"node_modules/bootstrap/dist/css/bootstrap.min.css",
"node_modules/@fortawesome/fontawesome-free/css/all.min.css",
"src/styles.css"
],
"scripts": []
"scripts": [
"node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"
]
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -70,6 +70,7 @@
"zone.js": "~0.15.0"
},
"devDependencies": {
"@angular-devkit/build-angular": "^20.3.10",
"@angular/build": "^20.3.9",
"@angular/cli": "^20.3.9",
"@angular/compiler-cli": "^20.3.10",

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

View File

@@ -1,221 +0,0 @@
@import "tailwindcss";
/* Global base styles for the app. Keep lightweight and self-contained so
the login component can reliably fill the viewport without producing
an outer page scrollbar. */
/* Force ngx-toastr container to be fixed to the viewport and positioned correctly */
.toast-container.toast-top-right {
position: fixed !important;
top: 12px !important;
right: 12px !important;
z-index: 999999 !important;
}
/* Make sure the page and app root occupy full height so 100vh aligns */
html, body, app-root {
height: 100%;
min-height: 100%;
}
/* เริ่มต้น: สำหรับ Desktop */
.login-mobile {
width: 415px;
}
/* ถ้าเป็น Mobile (<=768px) ให้ลบ width ออก */
@media (max-width: 768px) {
.login-mobile {
width: auto !important;
}
}
@media (max-width: 768px) {
.sidebar {
position: fixed;
top: 0;
left: 0;
height: 100%;
z-index: 50;
transition: transform 0.3s ease-in-out;
}
}
/* ✅ Toast Custom Style */
.ngx-toastr {
border-radius: 8px !important;
backdrop-filter: blur(6px);
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.12);
font-family: "Segoe UI", Roboto, sans-serif;
padding: 12px 16px !important;
min-width: 260px;
transition: all 0.3s ease-in-out;
}
.success-toast {
background: rgba(255, 255, 255, 0.8) !important;
color: #15803d !important;
border-left: 5px solid #16a34a;
}
.error-toast {
background: rgba(239, 68, 68, 0.8) !important;
color: #fff !important;
border-left: 5px solid #dc2626;
}
.toast-title {
font-weight: 600 !important;
margin-bottom: 2px;
}
.toast-message {
font-size: 14px;
}
/* sensible default box model */
*, *::before, *::after { box-sizing: border-box; }
body {
margin: 0;
font-family: "Kanit", sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
/* Prevent the browser from showing a scroll bar for the page itself;
the login card will scroll internally if needed. */
}
/* Simple utilities used by nested components in this workspace */
.content-box {
border: 2px solid black;
padding: 10px;
margin: 20px;
}
.comp-box {
border: 1px solid #555;
border-radius: 8px;
padding: 10px;
margin: 10px;
/* Use flex centering so nested components (like the login widget)
are centered without forcing the document to scroll. */
display: flex;
align-items: center;
justify-content: center;
min-height: 100vh;
}
/* If the project uses Bootstrap, the Bootstrap utilities will still apply.
These local utility rules only ensure a consistent appearance if Bootstrap
isn't available. */
.kanit-thin {
font-family: "Kanit", sans-serif;
font-weight: 100;
font-style: normal;
}
.kanit-extralight {
font-family: "Kanit", sans-serif;
font-weight: 200;
font-style: normal;
}
.kanit-light {
font-family: "Kanit", sans-serif;
font-weight: 300;
font-style: normal;
}
.kanit-regular {
font-family: "Kanit", sans-serif;
font-weight: 400;
font-style: normal;
}
.kanit-medium {
font-family: "Kanit", sans-serif;
font-weight: 500;
font-style: normal;
}
.kanit-semibold {
font-family: "Kanit", sans-serif;
font-weight: 600;
font-style: normal;
}
.kanit-bold {
font-family: "Kanit", sans-serif;
font-weight: 700;
font-style: normal;
}
.kanit-extrabold {
font-family: "Kanit", sans-serif;
font-weight: 800;
font-style: normal;
}
.kanit-black {
font-family: "Kanit", sans-serif;
font-weight: 900;
font-style: normal;
}
.kanit-thin-italic {
font-family: "Kanit", sans-serif;
font-weight: 100;
font-style: italic;
}
.kanit-extralight-italic {
font-family: "Kanit", sans-serif;
font-weight: 200;
font-style: italic;
}
.kanit-light-italic {
font-family: "Kanit", sans-serif;
font-weight: 300;
font-style: italic;
}
.kanit-regular-italic {
font-family: "Kanit", sans-serif;
font-weight: 400;
font-style: italic;
}
.kanit-medium-italic {
font-family: "Kanit", sans-serif;
font-weight: 500;
font-style: italic;
}
.kanit-semibold-italic {
font-family: "Kanit", sans-serif;
font-weight: 600;
font-style: italic;
}
.kanit-bold-italic {
font-family: "Kanit", sans-serif;
font-weight: 700;
font-style: italic;
}
.kanit-extrabold-italic {
font-family: "Kanit", sans-serif;
font-weight: 800;
font-style: italic;
}
.kanit-black-italic {
font-family: "Kanit", sans-serif;
font-weight: 900;
font-style: italic;
}

View File

@@ -1,18 +1,65 @@
import { NgModule } from '@angular/core';
import { NgModule, Component } from '@angular/core';
import { CommonModule } from '@angular/common';
import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { ToastrModule } from 'ngx-toastr';
import { AppRoutingModule } from './app-routing.module';
// import { RouterModule } from '@angular/router';
import { AppComponent } from './app.component';
// import { LayoutComponent } from './content/content/layout/layout.component';
import { SidebarContentComponent } from './content/sidebar-content/sidebar-content.component';
import { SidebarComponent } from './component/sidebar/sidebar.component';
// import { ReactiveFormsModule } from '@angular/forms';
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
import { HttpClientModule } from '@angular/common/http';
import { LicensePrivacyTermsComponent } from './component/license-privacy-terms/license-privacy-terms.component';
// import { MainDashboardContentComponent } from './content/main-dashboard-content/main-dashboard-content.component';
// import { MainDashboardComponent } from './component/main-dashboard/main-dashboard.component';
// import { LoginForgotComponent } from './component/login-forgot/login-forgot.component';
// import { LoginPageComponent } from './component/login-page/login-page.component';
// import { LoginContentComponent } from './content/login-content/login-content.component';
import { provideCharts, withDefaultRegisterables } from 'ng2-charts';
// import { AccDateFormatPipe } from './pipe/dtmtodatetime.pipe';
// import { DtmtodatetimePipe } from './dtmtodatetime.pipe';
@NgModule({
declarations: [
AppComponent
AppComponent,
// LayoutComponent,
SidebarContentComponent,
SidebarComponent,
LicensePrivacyTermsComponent,
// AccDateFormatPipe
// DtmtodatetimePipe,
// MainDashboardContentComponent,
// MainDashboardComponent,
// LoginForgotComponent,
// LoginPageComponent,
// LoginPageComponentComponent,
],
imports: [
BrowserModule,
AppRoutingModule
CommonModule,
ToastrModule.forRoot({
positionClass:'toast-top-right',
preventDuplicates: true,
maxOpened: 3,
autoDismiss: true
}),
// ReactiveFormsModule,
BrowserAnimationsModule,
AppRoutingModule,
HttpClientModule,
FontAwesomeModule
],
providers: [],
exports: [
// AccDateFormatPipe
],
providers: [provideCharts(withDefaultRegisterables())],
bootstrap: [AppComponent]
})
export class AppModule { }

View File

@@ -4,9 +4,9 @@
<div class="card modal-card" role="dialog" aria-labelledby="signin-title" aria-modal="true">
<div class="brand">
<!-- <img src="assets/logo.png" alt="Company logo" class="logo" /> -->
<img src="logo.png" alt="Company logo" class="logo mb-2"/>
<img src="/logo.png" alt="Company logo" class="logo mb-2"/>
<h1 id="signin-title" class='kanit-bold'>เข้าสู่ระบบ</h1>
<p class="subtitle">บัญชีโปรแกรมจัดการบัญชีของคุณ</p>
<p class="subtitle">บัญชีโปรแกรมจัดการแผนงานงบประมาณของท่าน</p>
</div>
<form [formGroup]="loginForm" (ngSubmit)="signIn()" class="form px-3 pb-3">
<label class="field">

View File

@@ -6,7 +6,7 @@ import { MainControlRoutingModule } from './main-control-routing.module';
import { ReactiveFormsModule } from '@angular/forms';
// import { MainDashboardComponent } from '../../component/main-dashboard/main-dashboard.component';
import { MainDashboardComponent } from '../../component/main-dashboard/main-dashboard.component';
import { MainDashboardContentComponent } from '../../content/main-dashboard-content/main-dashboard-content.component';
import { AccDateFormatPipe } from '../../pipe/dtmtodatetime.pipe';
import { MainReportComponent } from '../../component/main-report/main-report.component';
@@ -17,7 +17,7 @@ import { MainReportComponent } from '../../component/main-report/main-report.com
@NgModule({
declarations: [
// MainDashboardComponent,
MainDashboardComponent,
MainDashboardContentComponent,
MainReportComponent,
AccDateFormatPipe

View File

@@ -1,4 +1,4 @@
export const environment = {
production: false,
apiUrl: 'http://api.nuttakit.work'
apiBaseUrl: 'http://api.nuttakit.work'
};

View File

@@ -1,4 +1,4 @@
export const environment = {
production: true,
apiUrl: 'http://localhost:8000'
apiBaseUrl: 'http://localhost:8000'
};