2727 background : white;
2828 padding : 10px ;
2929 margin : 10px ;
30+ page-break-inside : avoid;
31+ }
32+
33+ .card-page {
34+ display : grid;
35+ grid-template-columns : repeat (3 , 1fr );
36+ gap : 20px ;
37+ padding : 20px ;
38+ page-break-after : always;
3039 }
3140
3241 .qr-container {
3342 display : flex;
3443 justify-content : center;
35- margin-bottom : 10px ;
44+ height : 100% ;
45+ align-items : center;
3646 }
3747
3848 .metadata {
3949 text-align : center;
50+ height : 100% ;
51+ display : flex;
52+ flex-direction : column;
53+ justify-content : center;
4054 }
4155
4256 .metadata .year {
159173 } ) ) ;
160174 }
161175
162- function createQRCard ( track ) {
176+ function createQRCard ( track , isQRSide ) {
163177 const card = document . createElement ( 'div' ) ;
164178 card . className = 'card' ;
165179
166- const qrContainer = document . createElement ( 'div' ) ;
167- qrContainer . className = 'qr-container' ;
168- qrContainer . id = `qr-${ track . id } ` ;
169-
170- const metadata = document . createElement ( 'div' ) ;
171- metadata . className = 'metadata' ;
172- metadata . innerHTML = `
180+ if ( isQRSide ) {
181+ const qrContainer = document . createElement ( 'div' ) ;
182+ qrContainer . className = 'qr-container' ;
183+ qrContainer . id = `qr-${ track . id } ` ;
184+ card . appendChild ( qrContainer ) ;
185+
186+ new QRCode ( qrContainer , {
187+ text : `https://www.gptgames.dev/tools/spotify_test.html?track=${ track . id } ` ,
188+ width : 220 ,
189+ height : 220 ,
190+ colorDark : "#000000" ,
191+ colorLight : "#ffffff" ,
192+ } ) ;
193+ } else {
194+ const metadata = document . createElement ( 'div' ) ;
195+ metadata . className = 'metadata' ;
196+ metadata . innerHTML = `
173197 <h3 class="title">${ track . name } </h3>
174198 <p class="artist">${ track . artist } </p>
175199 <p class="year">${ track . year } </p>
176200 ` ;
177-
178- card . appendChild ( qrContainer ) ;
179- card . appendChild ( metadata ) ;
180-
181- new QRCode ( qrContainer , {
182- text : `https://www.gptgames.dev/tools/spotify_test.html?track=${ track . id } ` ,
183- width : 220 ,
184- height : 220 ,
185- colorDark : "#000000" ,
186- colorLight : "#ffffff" ,
187- } ) ;
201+ card . appendChild ( metadata ) ;
202+ }
188203
189204 return card ;
190205 }
@@ -202,9 +217,21 @@ <h3 class="title">${track.name}</h3>
202217 const printArea = document . getElementById ( 'printArea' ) ;
203218 printArea . innerHTML = '' ;
204219
220+ // Create QR code page
221+ const qrPage = document . createElement ( 'div' ) ;
222+ qrPage . className = 'card-page' ;
223+ tracks . slice ( 0 , 21 ) . forEach ( track => {
224+ qrPage . appendChild ( createQRCard ( track , true ) ) ;
225+ } ) ;
226+ printArea . appendChild ( qrPage ) ;
227+
228+ // Create metadata page
229+ const metadataPage = document . createElement ( 'div' ) ;
230+ metadataPage . className = 'card-page' ;
205231 tracks . slice ( 0 , 21 ) . forEach ( track => {
206- printArea . appendChild ( createQRCard ( track ) ) ;
232+ metadataPage . appendChild ( createQRCard ( track , false ) ) ;
207233 } ) ;
234+ printArea . appendChild ( metadataPage ) ;
208235
209236 setTimeout ( ( ) => {
210237 window . print ( ) ;
0 commit comments