Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions client/src/App.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ import EditIssue from './pages/EditIssue';
// Pages admin
const AuditIssues = React.lazy(() => import('./pages/adminPage/AuditIssues.jsx'))
const AssetManagement = React.lazy(() => import('./pages/adminPage/AssetManagement.jsx'))
const UserManagement = React.lazy(() => import('./pages/adminPage/UserManagement.jsx'))
const LocationManagement = React.lazy(() => import('./pages/adminPage/LocationManagement.jsx'))
const Categories = React.lazy(() => import('./pages/adminPage/Categories.jsx'))


function App() {
Expand Down Expand Up @@ -58,6 +61,15 @@ function App() {
<Route path="AssetManagement" element={
<Suspense fallback={<div>Loading...</div>}><AssetManagement /></Suspense>
} />
<Route path="UserManagement" element={
<Suspense fallback={<div>Loading...</div>}><UserManagement /></Suspense>
} />
<Route path="LocationManagement" element={
<Suspense fallback={<div>Loading...</div>}><LocationManagement /></Suspense>
} />
<Route path="Categories" element={
<Suspense fallback={<div>Loading...</div>}><Categories /></Suspense>
} />
</Route>
</Routes>
</div>
Expand Down
82 changes: 71 additions & 11 deletions client/src/components/CardPendingProblem.css
Original file line number Diff line number Diff line change
@@ -1,25 +1,30 @@
p,span{
}
.container-pending-card{
p,
span {}

.container-pending-card {
width: 100%;
height: 100%;
border-radius: 10px;
padding: 1rem;
background-color: var(--card-bg);
box-shadow: var(--shadow-md);
}
.header-card{

.header-card {
display: grid;
grid-template-columns: 150px 1fr;
gap: 5px;
}
.img-card,img{

.img-card,
img {
object-fit: cover;
object-position: center;
width: 150px;
height: 150px;
}
.ticketStatus{

.ticketStatus {
background-color: var(--status-yellow);
width: 120px;
padding: 2px;
Expand All @@ -30,30 +35,85 @@ p,span{
}

.ticketStatus.pending {
background-color: var(--status-pending-bg);
background-color: var(--status-pending-bg);
color: #000;
}

.ticketStatus.in_progress {
background-color: var(--status-in-progress-bg);
background-color: var(--status-in-progress-bg);
color: #000;
}

.ticketStatus.resolved {
background-color: var(--status-resolved-bg);
color: #000000;
}
.location{

.location {
color: var(--text-color-muted);
}
.floor-room{

.floor-room {
padding-top: 20px;
display: flex;
gap: 50px;
}
.description p{

.description p {
padding-top: 40px;
}

/* skleton-card */
.skleton-card-pending {
width: 100%;
border-radius: 10px;
padding: 1rem;
background-color: var(--card-bg, #ffffff); /* ใส่สีขาวสำรองไว้เผื่อตัวแปรไม่ทำงาน */
box-shadow: var(--shadow-md);
}

.header-skleton-card {
display: grid;
grid-template-columns: 150px 1fr;
gap: 15px; /* ปรับ gap ให้ห่างกันนิดนึงจะได้สวยๆ */
}

.skleton-img {
background-color: #e5e7eb; /* 💡 เปลี่ยนจากเงา เป็นสีเทาอ่อน */
width: 150px;
height: 150px;
border-radius: 8px; /* เพิ่มมุมมนให้รูป */
}

.skleton-text {
background-color: #e5e7eb; /* สีเทาอ่อน */
border-radius: 4px;
height: 16px; /* ❗ สำคัญมาก: ต้องมี height กล่องถึงจะโผล่ */
margin-bottom: 10px; /* ระยะห่างระหว่างบรรทัด */
width: 80%; /* ความยาวเส้นจำลอง */
}

/* ปรับความยาวให้แต่ละเส้นดูสมจริง */
.skleton-title-card h3.skleton-text {
height: 20px;
width: 60%;
background-color: #d1d5db; /* หัวข้อสีเข้มหน่อย */
}

.skleton-status {
background-color: #fef08a; /* จำลองสีป้ายสถานะ */
border-radius: 20px;
height: 26px; /* ❗ ต้องมี height */
width: 90px;
margin-bottom: 10px;
}

.skleton-description {
margin-top: 15px;
}

.skleton-description .skleton-text {
width: 100%; /* เส้นรายละเอียดด้านล่างให้ยาวเต็มกรอบ */
.action-badge-container {
position: absolute;
top: 10px;
Expand Down
24 changes: 23 additions & 1 deletion client/src/components/CardPendingProblem.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ export const CardPendingProblem = ({
</div>
<div className="title-card" key={data.id}>
<p style={{ color: 'gray' }}>{data.ticketId}</p>
<h3>เรื่อง : {data.title}</h3>
<p>แจ้ง : {formatDate(data.createdAt)}</p>
<div className={`ticketStatus ${data.ticketStatus}`}>
{statusLabels[data.ticketStatus] || data.ticketStatus}
Expand All @@ -82,7 +83,28 @@ export const CardPendingProblem = ({
</div>
<div className="description">
<p>รายละเอียด : {data.description}</p>
<p>ผู้ดำเนินการ : {data.admin}</p>
<p>ผู้ดำเนินการ : {data.admin}</p>
</div>
</div>
)
}

export const CardPendingSkeleton = () => {
return (
<div className="skleton-card-pending">
<div className="header-skleton-card">
<div className="skleton-img"></div>
<div className="skleton-title-card">
<p className="skleton-text"></p>
<h3 className="skleton-text"></h3>
<p className="skleton-text"></p>
<p className='skleton-text'></p>
<div className="skleton-text"></div>
</div>
</div>
<div className="skleton-description">
<p className="skleton-text"></p>
<p className="skleton-text"></p>
</div>
</div>
)
Expand Down
64 changes: 38 additions & 26 deletions client/src/components/FilterProblem.css
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,11 @@

.filter-btn {
border: 1px solid transparent;
padding: 10px 20px;
border-radius: 50px; /* ทรงแคปซูลแบบในรูปคุณ */
padding: 20px 25px;
border-radius: 50px;
cursor: pointer;
font-weight: 600;
font-size: 15px;
transition: all 0.2s ease;
box-shadow: 0 2px 4px rgba(0,0,0,0.05); /* เพิ่มเงาจางๆ ให้ดูไม่แบน */
display: flex;
Expand All @@ -25,51 +26,62 @@
}

.filter-btn[data-status="all"] {
background-color: #f1f2f6;
color: var(--text-muted);
border-color:var(--tbs-green);
background-color: var(--status-all-bg);
color: var(--status-all-text);
border: none;
}

/* รอรับเรื่อง */
.filter-btn[data-status="pending"] {
background-color: #fef9e7; /* เหลืองจาง */
color: var(--status-pending-bg);
border-color:var(--tbs-green);
background-color: var( --status-pending-bg); /* เหลืองอ่อนมากๆ */
color: var(--status-pending-text); /* สีตัวอักษรเป็นส้มอมน้ำตาลเพื่อให้ตัดกับสีเหลือง */
border: none;
}

/* กำลังดำเนินการ */
.filter-btn[data-status="in_progress"] {
background-color: #ebf5fb; /* ฟ้าจาง */
color: var(--status-in-progress-bg);
border-color:var(--tbs-green);
background-color: var(--status-in-progress-bg); /* ฟ้าอ่อนมากๆ */
color: var(--status-in-progress-text); /* สีตัวอักษรฟ้าเข้ม */
border: none;
}

/* เสร็จสิ้น */
.filter-btn[data-status="resolved"] {
background-color: var(--tbs-green-light); /* เขียวจางที่คุณมีใน root */
color: var(--status-resolved-bg);
border-color:var(--tbs-green);
background-color: var(--status-resolved-bg); /* เขียวอ่อนมากๆ */
color: var(--status-resolved-text); /* สีตัวอักษรเขียวเข้ม */
border: none;
}

/* --- เมื่อกดเลือก (Active) ให้ดึงสีหลักจาก Root มาใช้แบบเข้มๆ --- */

.filter-btn.active[data-status="all"] {
background-color: var(--status-all-bg);
color: var(--status-all-text);
border-color: var(--status-all-bg);
color: var(--text-color-main);
border: none;
font-weight: 600;
transform: translateY(-2px);
box-shadow: 0 4px 8px rgba(0,0,0,0.2);
}

.filter-btn.active[data-status="pending"] {
background-color: var(--status-pending-bg);
color: var(--status-pending-text);
border-color: var(--status-pending-bg);
color: var(--text-color-main);
border: none;
font-weight: 600;
transform: translateY(-2px);
box-shadow: 0 4px 8px rgba(0,0,0,0.2);
}

.filter-btn.active[data-status="in_progress"] {
background-color: var(--status-in-progress-bg);
color: var(--status-in-progress-text);
border-color: var(--status-in-progress-bg);
color: var(--text-color-main);
border: none;
font-weight: 600;
transform: translateY(-2px);
box-shadow: 0 4px 8px rgba(0,0,0,0.2);
}

.filter-btn.active[data-status="resolved"] {
background-color: var(--status-resolved-bg);
color: var(--status-resolved-text);
border-color: var(--status-resolved-bg);
color: var(--text-color-main);
border: none;
font-weight: 600;
transform: translateY(-2px);
box-shadow: 0 4px 8px rgba(0,0,0,0.2);
}
6 changes: 3 additions & 3 deletions client/src/components/componentsAdmin/AdminSidebar.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -35,17 +35,17 @@ export const AdminSidebar = () => {
<span>Asset Management</span>
</NavLink>

<NavLink to="/" className="nav-item">
<NavLink to="/adminPage/UserManagement" className="nav-item">
<FaUserCog className="nav-icon" />
<span>User Management</span>
</NavLink>

<NavLink to="/" className="nav-item">
<NavLink to="/adminPage/LocationManagement" className="nav-item">
<FaMapMarkedAlt className="nav-icon" />
<span>Location Management</span>
</NavLink>

<NavLink to="/" className="nav-item">
<NavLink to="/adminPage/Categories" className="nav-item">
<FaTags className="nav-icon" />
<span>Issue Categories</span>
</NavLink>
Expand Down
Loading