Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
T
training-seat-booking
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Manivasagam S
training-seat-booking
Commits
ee405c45
Commit
ee405c45
authored
Jun 17, 2025
by
Manivasagam S
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
code changes
parent
912f0c05
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
70 additions
and
32 deletions
+70
-32
SeatLayout.jsx
src/Components/Top-level/SeatLayout/SeatLayout.jsx
+38
-25
Selectseat.jsx
src/Components/Top-level/Seatselect/Selectseat.jsx
+4
-4
db.json
src/db.json
+28
-3
No files found.
src/Components/Top-level/SeatLayout/SeatLayout.jsx
View file @
ee405c45
...
...
@@ -4,25 +4,22 @@ import { Seat } from '../Seat/Seat.jsx';
import
styles
from
'./SeatLayout.module.css'
;
import
{
seatsData
}
from
'./SeatsData.js'
;
const
populateSeatsArray
=
(
selectedSeats
,
reservedSeats
,
localSelect
edSeats
)
=>
{
const
populateSeatsArray
=
(
selectedSeats
,
reservedSeats
,
currentReserv
edSeats
)
=>
{
return
seatsData
.
map
(({
row
,
seats
})
=>
seats
.
map
((
number
)
=>
{
const
seatNo
=
row
+
number
;
if
(
number
===
'/'
)
{
return
{
seatNo
,
status
:
'none'
};
}
else
if
(
localSelectedSeats
.
includes
(
seatNo
))
{
if
(
selectedSeats
.
includes
(
seatNo
))
{
return
{
seatNo
,
status
:
'mine'
};
}
else
{
return
{
seatNo
,
status
:
'mine-unselected'
};
}
}
else
if
(
reservedSeats
.
includes
(
seatNo
))
{
return
{
seatNo
,
status
:
'reserved'
};
}
else
if
(
selectedSeats
.
includes
(
seatNo
))
{
return
{
seatNo
,
status
:
'selected'
};
}
else
{
return
{
seatNo
,
status
:
'available'
};
}
if
(
number
===
'/'
)
return
{
seatNo
,
status
:
'none'
};
const
isMine
=
currentReservedSeats
.
includes
(
seatNo
);
const
isSelected
=
selectedSeats
.
includes
(
seatNo
);
const
isReserved
=
reservedSeats
.
includes
(
seatNo
);
if
(
isMine
&&
isSelected
)
return
{
seatNo
,
status
:
'selected'
};
if
(
isMine
&&
!
isSelected
)
return
{
seatNo
,
status
:
'mine-unselected'
};
if
(
isReserved
)
return
{
seatNo
,
status
:
'reserved'
};
if
(
isSelected
)
return
{
seatNo
,
status
:
'selected'
};
return
{
seatNo
,
status
:
'available'
};
})
);
};
...
...
@@ -42,22 +39,38 @@ export const SeatLayout = ({
useEffect
(()
=>
{
onSelectionChange
?.(
localSelectedSeats
);
},
[
localSelectedSeats
,
onSelectionChange
]);
},
[
localSelectedSeats
]);
const
seatClickHandler
=
(
seat
)
=>
{
const
{
seatNo
,
status
}
=
seat
;
if
(
status
===
'reserved'
)
return
;
const
isMine
=
currentReservedSeats
.
includes
(
seatNo
);
const
isSelected
=
localSelectedSeats
.
includes
(
seatNo
);
const
hasExisting
=
currentReservedSeats
.
length
>
0
;
const
maxLimit
=
hasExisting
?
Infinity
:
Number
(
limit
);
if
(
status
===
'reserved'
)
return
;
setLocalSelectedSeats
((
prev
)
=>
{
if
(
prev
.
includes
(
seatNo
))
{
return
prev
.
filter
((
s
)
=>
s
!==
seatNo
);
}
else
if
(
prev
.
length
<
maxLimit
)
{
return
[...
prev
,
seatNo
];
const
updated
=
[...
prev
];
if
(
isSelected
)
{
return
updated
.
filter
((
s
)
=>
s
!==
seatNo
);
// unselect
}
else
{
const
newlySelected
=
updated
.
filter
(
(
s
)
=>
!
currentReservedSeats
.
includes
(
s
)
);
const
unselectedMine
=
currentReservedSeats
.
filter
(
(
s
)
=>
!
updated
.
includes
(
s
)
);
const
totalAllowed
=
limit
+
unselectedMine
.
length
;
if
(
newlySelected
.
length
<
totalAllowed
)
{
return
[...
updated
,
seatNo
];
}
else
{
return
updated
;
// reject selection
}
}
return
prev
;
});
};
...
...
src/Components/Top-level/Seatselect/Selectseat.jsx
View file @
ee405c45
...
...
@@ -41,10 +41,10 @@ export const Selectseat = ({ onLogout }) => {
const
available
=
totalSeats
-
allReserved
.
length
;
setAvailableSeats
(
available
);
if
(
userSeats
.
length
>
0
)
{
setSeatCount
(
userSeats
.
length
);
setShowSelect
(
false
);
}
//
if (userSeats.length > 0) {
//
setSeatCount(userSeats.length);
//
setShowSelect(false);
//
}
if
(
currentUser
?.
name
&&
!
hasWelcomed
.
current
)
{
toast
.
success
(
`Welcome,
${
currentUser
.
name
}
`
);
hasWelcomed
.
current
=
true
;
...
...
src/db.json
View file @
ee405c45
...
...
@@ -7,10 +7,12 @@
"reservedSeats"
:
[
"G3"
,
"F3"
,
"F4"
,
"G2"
,
"C2"
,
"C8"
"C8"
,
"F4"
,
"F7"
,
"F8"
]
},
{
...
...
@@ -18,7 +20,18 @@
"phoneNumber"
:
"9361775481"
,
"name"
:
"mani"
,
"reservedSeats"
:
[
"E5"
"F5"
,
"E5"
,
"G5"
,
"F6"
,
"E6"
,
"E7"
,
"E8"
,
"G6"
,
"G7"
,
"G8"
,
"D7"
,
"D8"
]
},
{
...
...
@@ -152,6 +165,17 @@
"email"
:
"mani@gmail.com"
,
"phoneNumber"
:
"8976543210"
,
"reservedSeats"
:
[]
},
{
"id"
:
"c921"
,
"name"
:
"sakilesh J"
,
"email"
:
"sakilesh.j@krds.fr"
,
"phoneNumber"
:
"9080296978"
,
"reservedSeats"
:
[
"D3"
,
"C3"
,
"C4"
]
}
]
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment