@@ -5,8 +5,11 @@ async function fetchData() {
5
5
return shipments ;
6
6
}
7
7
8
+ function generateBtnId ( cartId ) {
9
+ return `btn-${ cartId } ` ;
10
+ }
11
+
8
12
function renderData ( rows ) {
9
- const buttonIds = [ ] ;
10
13
document . getElementById ( "root" ) . innerHTML = `<div class="grid-container">
11
14
${ rows
12
15
. map ( ( row ) => {
@@ -15,12 +18,12 @@ ${rows
15
18
shipped,
16
19
paid,
17
20
} = row ;
18
- const curBtnId = `btn-${ cartId } ` ;
19
- buttonIds . push ( curBtnId ) ;
21
+
20
22
// TODO: do this from the backend
21
23
if ( shipped ) {
22
24
return "" ;
23
25
}
26
+
24
27
return `
25
28
<div id=${ cartId } class="grid-item">
26
29
<h2><code>${ cartId } </code>\t${ paid ? "Paid" : "Pending" } </h2>
@@ -37,16 +40,23 @@ ${rows
37
40
)
38
41
. join ( "" ) }
39
42
</ul>
40
- <button ${ paid ? "" : "disabled" } id="${ curBtnId } ">Ship it!</button>
43
+ <button ${ paid ? "" : "disabled" } id="${ generateBtnId (
44
+ cartId
45
+ ) } ">Ship it!</button>
41
46
</div>
42
47
` ;
43
48
} )
44
49
. join ( "" ) }
45
50
</div>` ;
46
- return buttonIds ;
47
51
}
48
52
49
- function attachBtnHandlers ( buttonIds ) {
53
+ function attachBtnHandlers ( rows ) {
54
+ const buttonIds = rows . map ( ( row ) => {
55
+ const {
56
+ cart : { cartId } ,
57
+ } = row ;
58
+ return generateBtnId ( cartId ) ;
59
+ } ) ;
50
60
buttonIds . forEach ( ( btnId ) => {
51
61
document . getElementById ( btnId ) . onclick = ( ) => alert ( `${ btnId } Clicked` ) ;
52
62
} ) ;
@@ -57,7 +67,8 @@ async function main() {
57
67
document . getElementById ( "root" ) . innerHTML = `<h4>Loading...</h4>` ;
58
68
const rows = await fetchData ( ) ;
59
69
console . log ( JSON . stringify ( rows ) ) ;
60
- attachBtnHandlers ( renderData ( rows ) ) ;
70
+ renderData ( rows ) ;
71
+ attachBtnHandlers ( rows ) ;
61
72
} catch ( err ) {
62
73
console . log ( err ) ;
63
74
document . getElementById ( "root" ) . innerHTML = `<h4>Failed to load data!</h4>` ;
0 commit comments