11<template >
22 <div v-if =" hasRegistrations" >
3- <div data-cy =" select-quilts-header" class =" text-h4" >Select your quilts</div >
4- <table width =" 100%" >
5- <thead >
6- <tr >
7- <th >
8- <v-checkbox
9- id =" SelectAll"
10- ref =" selectAll"
11- v-model =" allSelected"
12- autofocus
13- label =" Select All"
14- @update:model-value =" toggleAll"
15- ></v-checkbox >
16- </th >
17-
18- <th >
19- Reviews
20- <!-- <v-icon>info</v-icon> -->
21- </th >
22- </tr >
23- </thead >
24- <tbody >
25- <tr v-for =" classroom in activeClasses" :key =" classroom.classID" >
26- <td >
27- <v-checkbox v-model =" classroom.selected" :label =" `Class: ${classroom.name}`" @click.capture =" update" />
28- </td >
29- <td >-</td >
30- </tr >
31- <tr v-for =" course in activeCourses" :key =" course.courseID" >
32- <td >
33- <v-checkbox
34- v-model =" course.selected"
35- data-cy =" course-checkbox"
36- :label =" `q/${course.name}`"
37- @click.capture =" update"
3+ <div data-cy =" select-quilts-header" class =" text-h4 mb-4" >Study Session Setup</div >
4+
5+ <div class =" session-layout" >
6+ <!-- Left Column: Time Configuration and Start Button -->
7+ <div class =" fixed-controls-container" >
8+ <div class =" fixed-controls" >
9+ <div class =" text-h6 mb-3" >Session Settings</div >
10+
11+ <div class =" mb-5" >
12+ <v-text-field
13+ ref =" numberField"
14+ v-model =" timeLimit"
15+ class =" time-limit-field"
16+ variant =" outlined"
17+ label =" Study Session Timelimit"
18+ prepend-inner-icon =" mdi-clock-outline"
19+ prepend-icon =" mdi-minus"
20+ append-icon =" mdi-plus"
21+ :suffix =" timeLimit > 1 ? 'minutes' : 'minute'"
22+ mask =" ##"
23+ type =" number"
24+ @click:prepend =" dec"
25+ @click:append =" inc"
3826 />
39- </td >
40- <td >{{ course.reviews }}</td >
41- </tr >
42- </tbody >
43- </table >
44- <!-- <v-text-field
45- label="Card Limit for this Session"
46- hint="Study as much or as little as you like by adjusting this"
47- type="number"
48- ref="numberField"
49- v-model="cardCount"
50- /> -->
51- <v-text-field
52- ref =" numberField"
53- v-model =" timeLimit"
54- class =" col-12 col-sm-6 col-md-4 col-lg-3 text-h5"
55- variant =" solo"
56- prepend-inner-icon =" mdi-clock-outline"
57- prepend-icon =" mdi-minus"
58- append-icon =" mdi-plus"
59- :suffix =" timeLimit > 1 ? '(minutes)' : '(minute)'"
60- hint =" Time Limit for this Session"
61- mask =" ##"
62- type =" number"
63- @click:prepend =" dec"
64- @click:append =" inc"
65- />
66- <v-btn data-cy =" start-studying-button" color =" success" @click =" startSession" >Start Studying!</v-btn >
27+ </div >
28+
29+ <v-btn
30+ data-cy =" start-studying-button"
31+ color =" success"
32+ size =" large"
33+ block
34+ class =" start-btn"
35+ @click =" startSession"
36+ >
37+ <v-icon start >mdi-play</v-icon >
38+ Start!
39+ </v-btn >
40+ </div >
41+ </div >
42+
43+ <!-- Right Column: Course Selection -->
44+ <div class =" course-selection-container" >
45+ <div class =" text-h6 mb-3" >Select Quilts to Study</div >
46+ <table width =" 100%" >
47+ <thead >
48+ <tr >
49+ <th >
50+ <v-checkbox
51+ id =" SelectAll"
52+ ref =" selectAll"
53+ v-model =" allSelected"
54+ autofocus
55+ label =" Select All"
56+ @update:model-value =" toggleAll"
57+ ></v-checkbox >
58+ </th >
59+
60+ <th >
61+ Reviews
62+ <!-- <v-icon>info</v-icon> -->
63+ </th >
64+ </tr >
65+ </thead >
66+ <tbody >
67+ <tr v-for =" classroom in activeClasses" :key =" classroom.classID" >
68+ <td >
69+ <v-checkbox v-model =" classroom.selected" :label =" `Class: ${classroom.name}`" @click.capture =" update" />
70+ </td >
71+ <td >-</td >
72+ </tr >
73+ <tr v-for =" course in activeCourses" :key =" course.courseID" >
74+ <td >
75+ <v-checkbox
76+ v-model =" course.selected"
77+ data-cy =" course-checkbox"
78+ :label =" `q/${course.name}`"
79+ @click.capture =" update"
80+ />
81+ </td >
82+ <td >{{ course.reviews }}</td >
83+ </tr >
84+ </tbody >
85+ </table >
86+ </div >
87+ </div >
6788 </div >
6889 <div v-else class =" text-h4" >
6990 <p >You don't have anything to study!</p >
@@ -229,14 +250,14 @@ export default defineComponent({
229250 SkldrMouseTrap .reset ();
230251 SkldrMouseTrap .bind ([
231252 {
232- hotkey: ' up ' ,
253+ hotkey: ' right ' ,
233254 callback : () => {
234255 this .timeLimit ++ ;
235256 },
236257 command: ' ' ,
237258 },
238259 {
239- hotkey: ' down ' ,
260+ hotkey: ' left ' ,
240261 callback : () => {
241262 this .timeLimit -- ;
242263 },
@@ -263,4 +284,61 @@ td {
263284 align-content : center !important ;
264285 text-align : center !important ;
265286}
287+
288+ /* Layout for session configuration */
289+ .session-layout {
290+ display : flex ;
291+ flex-direction : column ;
292+ }
293+
294+ /* Fixed controls container */
295+ .fixed-controls-container {
296+ width : 100% ;
297+ margin-bottom : 20px ;
298+ }
299+
300+ .fixed-controls {
301+ display : flex ;
302+ flex-direction : column ;
303+ }
304+
305+ .time-limit-field {
306+ width : 100% ;
307+ margin-bottom : 16px ;
308+ }
309+
310+ .start-btn {
311+ margin-top : 8px ;
312+ max-height : 150px ;
313+ }
314+
315+ /* Course selection styles */
316+ .course-selection-container {
317+ width : 100% ;
318+ }
319+
320+ /* Media queries for desktop layout */
321+ @media (min-width : 960px ) {
322+ .session-layout {
323+ flex-direction : row ;
324+ gap : 40px ;
325+ }
326+
327+ .fixed-controls-container {
328+ width : 300px ;
329+ flex-shrink : 0 ;
330+ }
331+
332+ .fixed-controls {
333+ position : sticky ;
334+ top : 20px ;
335+ padding-right : 20px ;
336+ }
337+
338+ .course-selection-container {
339+ flex-grow : 1 ;
340+ border-left : 1px solid rgba (0 , 0 , 0 , 0.12 );
341+ padding-left : 20px ;
342+ }
343+ }
266344 </style >
0 commit comments