4
4
<meta charset =" UTF-8" >
5
5
<meta name =" viewport" content =" width=device-width, initial-scale=1.0" >
6
6
<title >Select Seats</title >
7
+ <link rel =" stylesheet" href =" https://unpkg.com/leaflet/dist/leaflet.css" />
8
+ <script src =" https://unpkg.com/leaflet/dist/leaflet.js" ></script >
9
+ <link rel =" icon" href =" logo.png" type =" image/png" >
10
+ <style >
11
+ * {box-sizing : border-box ;}
12
+ .container {
13
+ width : 75vw ;
14
+ margin-left : 12.5vw ;
15
+ display : flex ;
16
+ justify-content : space-between ;
17
+ margin-top : 5vw ;
18
+ }
19
+ .seatsContainer {
20
+ width : 25vw ;
21
+ border : 1px solid white ;
22
+ border-radius : 2.5vw ;
23
+ padding-bottom : 1.5vw ;
24
+ height : 53.5vw ;
25
+ }
26
+ .seatsKaStampPolygonThingy {
27
+ clip-path : polygon (0% 0% , 0% 100% , 75% 100% , 100% 0% );
28
+ border-top-left-radius : 2.5vw ;
29
+ width : 15vw ;
30
+ height : 10vw ;
31
+ background-color : #ccc ;
32
+ padding : 1px ;
33
+ transform : translate (-0.56px , -0.56px )
34
+ }
35
+ .seatContainer {
36
+ position : relative ;
37
+ width : 4.5vw ;
38
+ height : 4.5vw ;
39
+ border : 0.1vw solid white ;
40
+ border-radius : 0.8vw ;
41
+ display : flex ;
42
+ align-items : flex-end ;
43
+ }
44
+ .seatsRow {
45
+ display : flex ;
46
+ justify-content : space-around ;
47
+ }
48
+ .seatGola {
49
+ border : 0.1vw solid white ;
50
+ border-radius : 1.3vw ;
51
+ height : 1.5vw ;
52
+ width : 100% ;
53
+ transform : translateY (0.048vw );
54
+ }
55
+ .right {
56
+ width : 35vw ;
57
+ }
58
+ .right h1 {
59
+ margin : 0.5vw 0px 1.5vw 0px ;
60
+ font-size : 2.3vw ;
61
+ }
62
+ .rightBox {
63
+ border-radius : 1.7vw ;
64
+ height : 17.5vw ;
65
+ background-color : #18181b ;
66
+ padding : 1.6vw 2vw ;
67
+ }
68
+ .boxKaHead {
69
+ display : flex ;
70
+ justify-content : space-between ;
71
+ align-items : center ;
72
+ }
73
+ .boxKaHead p {
74
+ font-size : 1.15vw ;
75
+ text-align : right ;
76
+ }
77
+ .boxKaHead p :nth-child (2 ) {
78
+ color : #53faaa ;
79
+ font-size : 1vw ;
80
+ margin-top : 0.33vw ;
81
+ }
82
+ .driverInfo img {
83
+ border-radius : 3vw ;
84
+ width : 3.2vw ;
85
+ height : 3.2vw ;
86
+ object-fit : cover ;
87
+ margin-right : 0.8vw ;
88
+ }
89
+ .driverInfo {
90
+ display : flex ;
91
+ align-items : center ;
92
+ font-size : 1.15vw ;
93
+ }
94
+ p .driverInfoTextInfo {
95
+ font-size : 1vw ;
96
+ color : #53faaa ;
97
+ display : flex ;
98
+ align-items : center ;
99
+ gap : 0.45vw ;
100
+ margin-top : 0.33vw ;
101
+ }
102
+ .dot {
103
+ width : 0.2vw ;
104
+ height : 0.2vw ;
105
+ background-color : rgba (255 , 255 , 255 , 0.3 );
106
+ border-radius : 0.2vw ;
107
+ }
108
+ .busIcon {
109
+ color : black ;
110
+ background-color : #466eff ;
111
+ padding : 0.23vw 1.2vw ;
112
+ font-size : 1vw ;
113
+ border-radius : 0.5vw ;
114
+ }
115
+ .pickupInfoContainer {
116
+ display : flex ;
117
+ height : 100% ;
118
+ gap : 1.5vw ;
119
+ margin-left : 0.5vw ;
120
+ margin-top : 1.9vw ;
121
+ }
122
+ .pickupInfoContainer img {
123
+ height : 7.5vw ;
124
+ }
125
+ .pickupInfo {
126
+ flex : 1 ;
127
+ }
128
+ .pickupItem {
129
+ display : flex ;
130
+ justify-content : space-between ;
131
+ align-items : center ;
132
+ }
133
+ .pickupItem p {
134
+ font-size : 1vw ;
135
+ line-height : 1.4 ;
136
+ }
137
+ .pickupItem p :nth-child (1 ) {
138
+ color : rgba (255 , 255 , 255 , 0.3 );
139
+ }
140
+ .pickupItem :nth-child (2 ) {
141
+ margin-top : 3.2vw ;
142
+ }
143
+ .leaflet-container {
144
+ width : 35vw ;
145
+ height : 29.35vw ;
146
+ border-radius : 1.7vw ;
147
+ margin-top : 1.9vw ;
148
+ border : 2px solid #131316 ;
149
+ background : none ;
150
+ outline : none ;
151
+ }
152
+ .continue {
153
+ border : none ;
154
+ outline : none ;
155
+ cursor : pointer ;
156
+ transition : 0.3s ;
157
+ border-radius : 0.5vw ;
158
+ color : black ;
159
+ background-color : #53faaa ;
160
+ font-size : 0.95vw ;
161
+ height : fit-content ;
162
+ padding : 0.6vw 1.8vw ;
163
+ }
164
+ </style >
7
165
</head >
8
166
<body >
9
167
<% - include (' ./partials/cursor.ejs' ) %>
168
+ <div class =" container" >
169
+ <div class =" seatsContainer" >
170
+ <div class =" seatsKaStampPolygonThingy" >
171
+ <div class =" seatsKaStampPolygonThingy" style =" width : 100% ; height : 100% ; background-color : #131316 ;" ></div >
172
+ </div >
173
+ <div class =" seatsRow" style =" margin-top : 3.5vw ;" >
174
+ <div class =" seatContainer selectableSeats" data-cursor =" pointer" data-value =" a1" >
175
+ <div class =" seatGola" ></div >
176
+ </div >
177
+ <div class =" seatContainer selectableSeats" data-cursor =" pointer" data-value =" a2" >
178
+ <div class =" seatGola" ></div >
179
+ </div >
180
+ <div class =" seatContainer" style =" visibility : hidden " >
181
+ <div class =" seatGola" ></div >
182
+ </div >
183
+ <div class =" seatContainer selectableSeats" data-cursor =" pointer" data-value =" a3" >
184
+ <div class =" seatGola" ></div >
185
+ </div >
186
+ </div >
187
+ <div class =" seatsRow" style =" margin-top : 1.5vw ;" >
188
+ <div class =" seatContainer selectableSeats" data-cursor =" pointer" data-value =" b1" >
189
+ <div class =" seatGola" ></div >
190
+ </div >
191
+ <div class =" seatContainer selectableSeats" data-cursor =" pointer" data-value =" b2" >
192
+ <div class =" seatGola" ></div >
193
+ </div >
194
+ <div class =" seatContainer" style =" visibility : hidden " >
195
+ <div class =" seatGola" ></div >
196
+ </div >
197
+ <div class =" seatContainer selectableSeats" style =" transform : rotate (180deg )" data-cursor =" pointer" data-value =" b3" >
198
+ <div class =" seatGola" ></div >
199
+ </div >
200
+ </div >
201
+ <div class =" seatsRow" style =" margin-top : 3.5vw ;" >
202
+ <div class =" seatContainer selectableSeats" style =" transform : rotate (90deg )" data-cursor =" pointer" data-value =" c1" >
203
+ <div class =" seatGola" ></div >
204
+ </div >
205
+ <div class =" seatContainer" style =" visibility : hidden ;" >
206
+ <div class =" seatGola" ></div >
207
+ </div >
208
+ <div class =" seatContainer" style =" visibility : hidden ;" >
209
+ <div class =" seatGola" ></div >
210
+ </div >
211
+ <div class =" seatContainer selectableSeats" style =" transform : rotate (270deg )" data-cursor =" pointer" data-value =" c2" >
212
+ <div class =" seatGola" ></div >
213
+ </div >
214
+ </div >
215
+ <div class =" seatsRow" style =" margin-top : 1.5vw ;" >
216
+ <div class =" seatContainer selectableSeats" style =" transform : rotate (90deg )" data-cursor =" pointer" data-value =" d1" >
217
+ <div class =" seatGola" ></div >
218
+ </div >
219
+ <div class =" seatContainer" style =" visibility : hidden ;" >
220
+ <div class =" seatGola" ></div >
221
+ </div >
222
+ <div class =" seatContainer" style =" visibility : hidden ;" >
223
+ <div class =" seatGola" ></div >
224
+ </div >
225
+ <div class =" seatContainer selectableSeats" style =" transform : rotate (270deg )" data-cursor =" pointer" data-value =" d2" >
226
+ <div class =" seatGola" ></div >
227
+ </div >
228
+ </div >
229
+ <div class =" seatsRow" style =" margin-top : 3.5vw ;" >
230
+ <div class =" seatContainer selectableSeats" data-cursor =" pointer" data-value =" e1" >
231
+ <div class =" seatGola" ></div >
232
+ </div >
233
+ <div class =" seatContainer selectableSeats" data-cursor =" pointer" data-value =" e2" >
234
+ <div class =" seatGola" ></div >
235
+ </div >
236
+ <div class =" seatContainer" style =" visibility : hidden ; transform : rotate (180deg )" >
237
+ <div class =" seatGola" ></div >
238
+ </div >
239
+ <div class =" seatContainer selectableSeats" data-cursor =" pointer" data-value =" e3" >
240
+ <div class =" seatGola" ></div >
241
+ </div >
242
+ </div >
243
+ <div class =" seatsRow" style =" margin-top : 1.5vw ;" >
244
+ <div class =" seatContainer selectableSeats" data-cursor =" pointer" data-value =" f1" >
245
+ <div class =" seatGola" ></div >
246
+ </div >
247
+ <div class =" seatContainer selectableSeats" data-cursor =" pointer" data-value =" f2" >
248
+ <div class =" seatGola" ></div >
249
+ </div >
250
+ <div class =" seatContainer" style =" visibility : hidden ;" >
251
+ <div class =" seatGola" ></div >
252
+ </div >
253
+ <div class =" seatContainer selectableSeats" data-cursor =" pointer" data-value =" f3" >
254
+ <div class =" seatGola" ></div >
255
+ </div >
256
+ </div >
257
+ </div >
258
+ <div class =" right" >
259
+ <h1 ><span style =" color : #466eff " >Select</span > Seat</h1 >
260
+ <div class =" rightBox" >
261
+ <div class =" boxKaHead" >
262
+ <div class =" driverInfo" >
263
+ <img src =" <%= pfp %>" >
264
+ <div class =" driverInfoText" >
265
+ <p ><%= driver %>   ; <span class =" busIcon" >Bus</span ></p >
266
+ <p class =" driverInfoTextInfo" ><%= time %> Mins <span class =" dot" ></span > <%= distance %> Km</p >
267
+ </div >
268
+ </div >
269
+ <div class =" prices" >
270
+ <p >₹<%= price %> </p >
271
+ <p >+30.00</p >
272
+ </div >
273
+ </div >
274
+ <div class =" pickupInfoContainer" >
275
+ <img src =" pickup.png" >
276
+ <div class =" pickupInfo" >
277
+ <div class =" pickupItem" >
278
+ <div >
279
+ <p >Pickup</p >
280
+ <p ><%= pickup %> </p >
281
+ </div >
282
+ </div >
283
+ <div class =" pickupItem" >
284
+ <div >
285
+ <p >Drop Off</p >
286
+ <p ><%= dropoff %> </p >
287
+ </div >
288
+ <div class =" continue" data-cursor =" pointer" onclick =" window.location.href = '/status'" >Continue</div >
289
+ </div >
290
+ </div >
291
+ </div >
292
+ </div >
293
+ <div id =" map" style =" position : relative " ></div >
294
+ </div >
295
+ </div >
296
+ <script >
297
+ var foundOverallSeat, currentlySelected
298
+ < % for (let i = 0 ; i < seats .length ; i++ ) { % >
299
+ if (' <%= seats[i] %>' != ' noseatfound' ) {
300
+ foundOverallSeat = document .querySelector (' [data-value="<%= seats[i] %>"]' )
301
+ foundOverallSeat .children [0 ].style .border = ' 0.1vw solid rgba(255, 255, 255, 0.4)'
302
+ foundOverallSeat .style .border = ' 0.1vw solid rgba(255, 255, 255, 0.4)'
303
+ foundOverallSeat .children [0 ].style .borderRadius = ' 1.3vw'
304
+ foundOverallSeat .style .borderRadius = ' 0.8vw'
305
+ foundOverallSeat .setAttribute (' data-disabled' , ' true' )
306
+ }
307
+ < % } % >
308
+ < % if (mySeat != ' noseatfound' ) { % >
309
+ const foundSeat = document .querySelector (' [data-value="<%= mySeat %>"]' )
310
+ foundSeat .children [0 ].style .border = ' 0.1vw solid #466eff'
311
+ foundSeat .style .border = ' 0.1vw solid #466eff'
312
+ foundSeat .children [0 ].style .borderRadius = ' 1.3vw'
313
+ foundSeat .style .borderRadius = ' 0.8vw'
314
+ foundSeat .setAttribute (' data-disabled' , ' false' )
315
+ currentlySelected = ' <%= mySeat %>'
316
+ < % } % >
317
+ function showPosition () {
318
+ var redMarker = L .icon ({
319
+ iconUrl: ' /marker.png' ,
320
+ iconSize: [80 , 80 ],
321
+ iconAnchor: [40 , 40 ],
322
+ popupAnchor: [1 , - 34 ],
323
+ shadowSize: [41 , 41 ]
324
+ });
325
+ console .log (' called' )
326
+ var map = L .map (' map' , {zoomControl: false , attributionControl: false }).setView ([< %= latitude % > , < %= longitude % > ], 16 );
327
+ L .tileLayer (' https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}{r}.png' , {
328
+ subdomains: ' abcd' ,
329
+ maxZoom: 19
330
+ }).addTo (map);
331
+ const mapContainer = document .querySelector (' .leaflet-container' )
332
+ var marker = L .marker ([< %= latitude % > , < %= longitude % > ], {icon: redMarker}).addTo (map);
333
+ }
334
+ showPosition ()
335
+ const allSelectableSeats = document .getElementsByClassName (' selectableSeats' )
336
+ for (let i = 0 ; i < allSelectableSeats .length ; i++ ) {
337
+ allSelectableSeats[i].addEventListener (' click' , () => {
338
+ if (allSelectableSeats[i].getAttribute (' data-disabled' ) == ' true' ) return
339
+ const selectedSeat = allSelectableSeats[i].getAttribute (' data-value' )
340
+ console .log (selectedSeat)
341
+ fetch (' /select' , {
342
+ method: ' POST' ,
343
+ body: JSON .stringify ({
344
+ seat: selectedSeat
345
+ }),
346
+ headers: {
347
+ ' Content-Type' : ' application/json'
348
+ }
349
+ })
350
+ .then (async response => {
351
+ if (response .ok ) {
352
+ window .location .reload ()
353
+ } else {
354
+ console .log (' bhosdike' )
355
+ }
356
+ })
357
+ .catch (err => {
358
+ console .log (' Error: ' + err)
359
+ })
360
+ })
361
+ }
362
+ </script >
10
363
</body >
11
364
</html >
0 commit comments