Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated:
1
00:00:01,609 --> 00:00:04,900
[Jonas Schmedtman] So we already have for HTML templates.
2
00:00:04,900 --> 00:00:07,790
Now comes the hardest part, which is to
3
00:00:07,790 --> 00:00:11,643
actually replace the placeholders with the content.
4
00:00:13,450 --> 00:00:16,610
So let's actually start with the overview.
5
00:00:16,610 --> 00:00:19,680
And let's give ourselves some breathing space here
6
00:00:19,680 --> 00:00:21,543
and add some comments.
7
00:00:21,543 --> 00:00:23,350
(typing on a keyboard)
8
00:00:23,350 --> 00:00:27,943
So overview page and some comments down here.
9
00:00:30,790 --> 00:00:35,790
So the product page, and there here we have the API.
10
00:00:39,079 --> 00:00:42,079
And then here we have the Not found.
11
00:00:45,650 --> 00:00:48,990
Alright, so that looks a bit better already.
12
00:00:48,990 --> 00:00:52,820
So again, we're starting with the overview page.
13
00:00:52,820 --> 00:00:54,100
And so the first step
14
00:00:54,100 --> 00:00:58,580
is to actually load the template overview.
15
00:00:58,580 --> 00:01:01,770
Okay, so each time there is a new request
16
00:01:01,770 --> 00:01:05,340
for this route, so the adjusted route
17
00:01:05,340 --> 00:01:08,180
or /Overview, the first thing that we're gonna do
18
00:01:08,180 --> 00:01:11,240
is to read the template overview.
19
00:01:11,240 --> 00:01:14,020
But, just like before, we can actually do that
20
00:01:14,020 --> 00:01:16,860
outside of this callback, okay?
21
00:01:16,860 --> 00:01:20,000
Because these templates, they will always be the same
22
00:01:20,000 --> 00:01:22,050
So you can actually read them to memory
23
00:01:22,050 --> 00:01:25,280
right in the beginning when we start the application.
24
00:01:25,280 --> 00:01:28,270
And then, when necessary, we simply go ahead
25
00:01:28,270 --> 00:01:31,460
and replace the contents in there.
26
00:01:31,460 --> 00:01:34,156
Okay, so just like we did with the data here,
27
00:01:34,156 --> 00:01:36,720
there's also no need to read the data
28
00:01:36,720 --> 00:01:38,528
each time there is a request
29
00:01:38,528 --> 00:01:41,403
and the same happens for the templates.
30
00:01:42,240 --> 00:01:43,120
Okay?
31
00:01:43,120 --> 00:01:44,510
So I'm actually going to to ahead
32
00:01:44,510 --> 00:01:47,090
and do it for all three templates here
33
00:01:47,090 --> 00:01:49,260
so we have that out of the way.
34
00:01:49,260 --> 00:01:54,260
So I'm gonna go ahead, and just to get this one, call it
35
00:01:55,610 --> 00:01:57,040
temp for template
36
00:01:59,000 --> 00:02:02,490
overview, and DAR name
37
00:02:03,670 --> 00:02:05,743
and here we have templates.
38
00:02:09,370 --> 00:02:13,213
And then /template-overview.
39
00:02:15,460 --> 00:02:18,390
Okay, then duplicate this here twice
40
00:02:19,510 --> 00:02:20,650
so we have one
41
00:02:22,320 --> 00:02:24,683
for the card, so template-card,
42
00:02:26,980 --> 00:02:29,983
and then one for template product.
43
00:02:35,460 --> 00:02:37,780
Product, alright.
44
00:02:37,780 --> 00:02:39,870
And again, keep in mind that we can do
45
00:02:39,870 --> 00:02:42,380
with the synchronized version because
46
00:02:42,380 --> 00:02:43,950
we are in the top level code.
47
00:02:43,950 --> 00:02:47,400
We just only executed once, right at the beginning
48
00:02:47,400 --> 00:02:50,080
when we load up these applications.
49
00:02:50,080 --> 00:02:53,156
So we could not do this inside of this
50
00:02:53,156 --> 00:02:55,970
createServer callback function, okay?
51
00:02:55,970 --> 00:02:59,350
Because this one is called each time there is a request.
52
00:02:59,350 --> 00:03:03,047
And if we have one million requests at the same time,
53
00:03:03,047 --> 00:03:06,330
then we could block the code one million times,
54
00:03:06,330 --> 00:03:08,040
once for each request.
55
00:03:08,040 --> 00:03:11,450
And that is something that we do not want.
56
00:03:11,450 --> 00:03:14,580
So, the overview, let's actually go ahead
57
00:03:14,580 --> 00:03:16,740
and first of all just to test it,
58
00:03:16,740 --> 00:03:21,010
send this tempOverview as the response.
59
00:03:21,010 --> 00:03:22,120
Now, before we can do that,
60
00:03:22,120 --> 00:03:26,853
we need to go ahead and set this content type to HTML.
61
00:03:27,740 --> 00:03:30,453
So let me actually copy this piece of code here.
62
00:03:32,400 --> 00:03:34,120
So the status code is 200
63
00:03:34,120 --> 00:03:37,063
and content type should be text/html.
64
00:03:42,250 --> 00:03:44,040
So restart the server here
65
00:03:45,010 --> 00:03:47,943
and let's now take a look,
66
00:03:49,070 --> 00:03:50,670
and indeed, here we go.
67
00:03:50,670 --> 00:03:52,650
So here's our styled page
68
00:03:53,710 --> 00:03:56,700
that we already know from this one.
69
00:03:56,700 --> 00:03:58,630
Now what's of course missing here
70
00:03:58,630 --> 00:04:01,031
is these rows, and that's because
71
00:04:01,031 --> 00:04:03,770
we still have our placeholder.
72
00:04:03,770 --> 00:04:08,110
And so the next task is to now replace this placeholder
73
00:04:08,110 --> 00:04:09,293
with the actual cards.
74
00:04:10,830 --> 00:04:12,560
And how will we do that?
75
00:04:12,560 --> 00:04:15,640
Well, remember that in data object,
76
00:04:15,640 --> 00:04:19,010
we have an array of all the objects
77
00:04:19,010 --> 00:04:20,572
that are in data.JSON.
78
00:04:21,620 --> 00:04:26,560
So, all of these five objects, all in JavaScript objects,
79
00:04:26,560 --> 00:04:31,000
because we already parsed this data with just a string.
80
00:04:31,000 --> 00:04:31,833
Okay?
81
00:04:31,833 --> 00:04:34,150
So data object again is an array of
82
00:04:34,150 --> 00:04:36,450
at this point, five objects.
83
00:04:36,450 --> 00:04:37,790
So what we have to do is
84
00:04:37,790 --> 00:04:40,192
to basically loop through this array,
85
00:04:40,192 --> 00:04:42,977
and for each of them, replace the placeholders
86
00:04:42,977 --> 00:04:45,770
in the template with the actual data
87
00:04:45,770 --> 00:04:48,500
from the current product, okay?
88
00:04:48,500 --> 00:04:49,333
Make sense?
89
00:04:50,210 --> 00:04:53,533
So, let's put that in code.
90
00:04:54,740 --> 00:04:59,740
So data object, we're gonna loop through it with a map
91
00:05:00,160 --> 00:05:02,930
because we want to return something
92
00:05:02,930 --> 00:05:06,243
and that something, we will save into a new array,
93
00:05:08,060 --> 00:05:11,637
so let's call that one the cardsHtml,
94
00:05:16,210 --> 00:05:17,140
Okay?
95
00:05:17,140 --> 00:05:22,140
And so I'm sure you are familiar with the map method, okay?
96
00:05:22,570 --> 00:05:26,147
So what map does is accepts a callback function
97
00:05:26,147 --> 00:05:30,290
and this callback function gets as an argument
98
00:05:30,290 --> 00:05:34,500
the current element, so the element of the current loop
99
00:05:34,500 --> 00:05:36,423
and whatever we return here
100
00:05:36,423 --> 00:05:39,880
will then be saved into an array, okay?
101
00:05:39,880 --> 00:05:44,240
So let's say we're looping over an array with five elements
102
00:05:44,240 --> 00:05:45,434
which is the case here,
103
00:05:45,434 --> 00:05:48,074
and for each element, we will return something,
104
00:05:48,074 --> 00:05:51,851
and that something will then be put into the same position
105
00:05:51,851 --> 00:05:55,990
but in this new cardsHtml array.
106
00:05:55,990 --> 00:05:59,970
So, what will we do in each of these iterations?
107
00:05:59,970 --> 00:06:03,048
Well, we want to replace the placeholders, right?
108
00:06:03,048 --> 00:06:05,200
And so I'm actually gonna go ahead
109
00:06:05,200 --> 00:06:06,843
and create a function for that
110
00:06:06,843 --> 00:06:09,787
and that will be called replaceTemplate.
111
00:06:13,881 --> 00:06:14,844
Okay?
112
00:06:14,844 --> 00:06:18,761
And replaceTemplate will take in the card HTML.
113
00:06:19,820 --> 00:06:22,203
So basically, the tempCard.
114
00:06:24,890 --> 00:06:28,713
And it will take in the current object, so element.
115
00:06:29,660 --> 00:06:30,493
Okay?
116
00:06:30,493 --> 00:06:33,703
So this element is what holds the data, right?
117
00:06:34,900 --> 00:06:38,511
So again, each of these is now an object
118
00:06:38,511 --> 00:06:42,423
which contains the data in each of these properties.
119
00:06:44,070 --> 00:06:44,903
Okay?
120
00:06:44,903 --> 00:06:49,430
And don't worry, if it doesn't make 100% sense now,
121
00:06:49,430 --> 00:06:54,130
it will once we create this replaceTemplate function, okay?
122
00:06:54,130 --> 00:06:56,993
So let's now actually do that up here as well.
123
00:06:59,610 --> 00:07:03,100
So replaceTemplate is a function
124
00:07:03,100 --> 00:07:07,420
which takes in a template, just gonna call it temp here
125
00:07:07,420 --> 00:07:09,673
and of course a product.
126
00:07:12,690 --> 00:07:13,523
Alright.
127
00:07:15,780 --> 00:07:18,520
So let's create a variable called output
128
00:07:19,500 --> 00:07:21,350
and that one will be
129
00:07:22,510 --> 00:07:27,510
template.replace in our placeholder.
130
00:07:29,620 --> 00:07:32,810
And we're gonna put here all of the placeholders
131
00:07:32,810 --> 00:07:36,343
that we have, starting with PRODUCTNAME, okay?
132
00:07:39,130 --> 00:07:43,963
And so that one will be replaced with product.PRODUCTNAME.
133
00:07:45,230 --> 00:07:48,300
So product, which is this argument
134
00:07:48,300 --> 00:07:50,997
that we passed into the function, .PRODUCTNAME
135
00:07:52,300 --> 00:07:54,890
because, well, that's the name of the field
136
00:07:54,890 --> 00:07:57,350
where the product name is.
137
00:07:57,350 --> 00:07:58,250
Alright?
138
00:07:58,250 --> 00:08:02,160
So, go ahead and copy that one, and alright.
139
00:08:02,160 --> 00:08:05,014
Now one small trick that we have to use here
140
00:08:05,014 --> 00:08:08,150
is to actually not use the quotes,
141
00:08:08,150 --> 00:08:11,730
but instead use a regular expression.
142
00:08:11,730 --> 00:08:13,380
And that's because there might be
143
00:08:13,380 --> 00:08:16,517
multiple instances of this placeholder
144
00:08:16,517 --> 00:08:21,517
and so the trick is to wrap this in a regular expression
145
00:08:22,660 --> 00:08:24,940
and use the g-flag then on it.
146
00:08:24,940 --> 00:08:27,010
Which means global and so this will make it
147
00:08:27,010 --> 00:08:31,920
so that all of these placeholders will get replaced
148
00:08:31,920 --> 00:08:34,530
and not just the first one that occurs.
149
00:08:34,530 --> 00:08:36,909
So this replaces the product name,
150
00:08:36,909 --> 00:08:39,663
now let's go ahead and replace all the other one.
151
00:08:41,049 --> 00:08:42,472
So output =
152
00:08:44,250 --> 00:08:48,140
output.replace,
153
00:08:48,140 --> 00:08:49,900
and now we'll just go ahead
154
00:08:49,900 --> 00:08:54,900
and copy this to make my life a bit easier.
155
00:08:56,360 --> 00:08:59,990
So image, and it is called image
156
00:09:01,538 --> 00:09:04,863
and not in uppercase, so just like this.
157
00:09:06,000 --> 00:09:07,020
Okay?
158
00:09:07,020 --> 00:09:09,070
Now up here, I created this variable
159
00:09:09,070 --> 00:09:13,520
because I wanted to replaced this product name in temp.
160
00:09:13,520 --> 00:09:16,785
So in the argument, and it's not a good practice to
161
00:09:16,785 --> 00:09:19,760
directly manipulate the arguments
162
00:09:19,760 --> 00:09:21,760
that we pass into a function.
163
00:09:21,760 --> 00:09:24,180
And so I created a new variable
164
00:09:24,180 --> 00:09:25,750
and from now on, I will then
165
00:09:25,750 --> 00:09:29,100
manipulate that first one, okay?
166
00:09:29,100 --> 00:09:31,820
And so that's why it's not a const, but a let.
167
00:09:31,820 --> 00:09:35,424
So a let, we can mutate after it's been created, okay?
168
00:09:35,424 --> 00:09:37,874
Now let me just go ahead, copy a couple of these.
169
00:09:40,720 --> 00:09:44,930
So price, and it's called price here as well,
170
00:09:44,930 --> 00:09:46,653
then we have from,
171
00:09:50,790 --> 00:09:52,613
then we have nutrients.
172
00:09:58,500 --> 00:10:00,290
Of course I could copy all of this,
173
00:10:00,290 --> 00:10:02,853
but I'm not gonna jump back and forth here.
174
00:10:06,930 --> 00:10:08,033
So quantity,
175
00:10:13,674 --> 00:10:14,703
description,
176
00:10:17,200 --> 00:10:19,990
and I'm probably gonna do some mistake here
177
00:10:19,990 --> 00:10:22,370
by writing all of this out manually
178
00:10:23,410 --> 00:10:26,920
but in a small product, that is no big deal at all.
179
00:10:26,920 --> 00:10:29,470
So actually this one we don't need,
180
00:10:29,470 --> 00:10:30,950
or actually we do need
181
00:10:30,950 --> 00:10:33,120
because for the organic,
182
00:10:33,120 --> 00:10:34,830
so the organic that's missing,
183
00:10:34,830 --> 00:10:37,870
but remember the organic was a bit special.
184
00:10:37,870 --> 00:10:41,743
So in this case, if product is not organic,
185
00:10:42,900 --> 00:10:44,890
so product.organic,
186
00:10:44,890 --> 00:10:45,883
if it's false,
187
00:10:47,450 --> 00:10:50,510
so remember, that is actually a bolding.
188
00:10:50,510 --> 00:10:53,130
So for example, we have organic true here,
189
00:10:53,130 --> 00:10:55,180
but we have false here.
190
00:10:55,180 --> 00:10:56,013
Okay?
191
00:10:56,013 --> 00:10:59,470
And so if it is false, well in that case,
192
00:10:59,470 --> 00:11:03,273
we then want to replace the NOT.ORGANIC.
193
00:11:08,340 --> 00:11:13,340
So the NOT.ORGANIC placeholder with simply not-organic.
194
00:11:17,630 --> 00:11:20,160
So not-organic because this is
195
00:11:20,160 --> 00:11:22,313
the class name that I showed you earlier.
196
00:11:24,070 --> 00:11:25,730
So,
197
00:11:25,730 --> 00:11:27,320
it is
198
00:11:27,320 --> 00:11:28,153
this one.
199
00:11:29,500 --> 00:11:30,520
Okay?
200
00:11:30,520 --> 00:11:35,100
So it will then be replaced here, okay?
201
00:11:35,100 --> 00:11:37,350
And so again, in case it's not organic,
202
00:11:37,350 --> 00:11:39,797
well, then the class name NOT_ORGANIC will be here
203
00:11:39,797 --> 00:11:44,043
and this entire batch will then be not displaced.
204
00:11:46,010 --> 00:11:47,623
Alright, make sense?
205
00:11:48,490 --> 00:11:49,760
So,
206
00:11:49,760 --> 00:11:52,410
let's see if it w--
207
00:11:52,410 --> 00:11:53,410
ah, sorry,
208
00:11:53,410 --> 00:11:55,143
the actual code is below it.
209
00:11:56,240 --> 00:11:59,890
So let's try to make more sense of it.
210
00:11:59,890 --> 00:12:03,910
So again, we loop over this data object already here
211
00:12:03,910 --> 00:12:06,840
which holds all the products
212
00:12:06,840 --> 00:12:10,095
and in each iteration, we will replace the placeholders
213
00:12:10,095 --> 00:12:13,890
in the template card with the current product
214
00:12:13,890 --> 00:12:16,236
which is element, right?
215
00:12:16,236 --> 00:12:20,580
And this arrow function will then implicitly return it here.
216
00:12:20,580 --> 00:12:24,150
So it's the same as having return here, okay?
217
00:12:24,150 --> 00:12:26,130
But it's not really necessary because
218
00:12:26,130 --> 00:12:29,341
in a arrow function, if you don't have the curly braces
219
00:12:29,341 --> 00:12:32,934
this value here automatically gets returned.
220
00:12:32,934 --> 00:12:35,782
Okay, so just in case you didn't know that,
221
00:12:35,782 --> 00:12:40,782
I just remembered that we forgot to actually
222
00:12:41,210 --> 00:12:43,383
return the output from here.
223
00:12:45,360 --> 00:12:46,193
Okay?
224
00:12:46,193 --> 00:12:49,870
So of course, we input the template and the product,
225
00:12:49,870 --> 00:12:53,533
but then of course we have to output the final HTML.
226
00:12:54,700 --> 00:12:55,533
Right?
227
00:12:55,533 --> 00:12:58,640
And so that then gets plugged in in here,
228
00:12:58,640 --> 00:13:01,420
and so then finally, all of this here
229
00:13:01,420 --> 00:13:05,850
will replace an array, with the five final HTML's,
230
00:13:05,850 --> 00:13:08,090
each for one of the five cards.
231
00:13:08,090 --> 00:13:12,580
So, each for one of the five products, alright?
232
00:13:12,580 --> 00:13:16,380
Now let's actually go ahead and log this to the console
233
00:13:16,380 --> 00:13:21,010
before we put it on the overview webpage.
234
00:13:21,010 --> 00:13:25,433
So cardsHtml just to make sure that everything works here.
235
00:13:28,090 --> 00:13:28,923
Okay?
236
00:13:30,190 --> 00:13:32,853
So we need to reload the server, don't forget that.
237
00:13:35,810 --> 00:13:37,370
This all works the same,
238
00:13:37,370 --> 00:13:39,940
but let's now take a look at the console.
239
00:13:39,940 --> 00:13:43,710
And I'm starting to see nice things here.
240
00:13:43,710 --> 00:13:45,500
So we have an array,
241
00:13:45,500 --> 00:13:48,350
and we actually have the stuff replaced.
242
00:13:48,350 --> 00:13:50,170
So we have some avocados here.
243
00:13:50,170 --> 00:13:52,720
It says here FreshAvocados.
244
00:13:52,720 --> 00:13:55,773
It has the four avocados per box, the price,
245
00:13:57,020 --> 00:13:59,940
and so yeah,
246
00:13:59,940 --> 00:14:02,500
that actually all looks very nice.
247
00:14:02,500 --> 00:14:03,840
And indeed it's also an array.
248
00:14:03,840 --> 00:14:05,860
So we have this first figure,
249
00:14:05,860 --> 00:14:09,140
then a comma and so here starts the next element
250
00:14:09,140 --> 00:14:12,380
so the next figure, alright?
251
00:14:12,380 --> 00:14:15,920
So we have right now an array of all these elements
252
00:14:15,920 --> 00:14:18,880
but what we want is actually not an array
253
00:14:18,880 --> 00:14:22,273
but we want one big string containing all of this HTML.
254
00:14:24,250 --> 00:14:27,020
So, that's actually very simple to achieve.
255
00:14:27,020 --> 00:14:30,910
All we have to do is at the end of this array,
256
00:14:30,910 --> 00:14:33,290
so we remember all of this here
257
00:14:33,290 --> 00:14:36,283
returns this array that we see down here,
258
00:14:37,550 --> 00:14:39,600
and so at the end all we do
259
00:14:39,600 --> 00:14:42,520
is join by an empty string,
260
00:14:42,520 --> 00:14:46,080
and so this will join all of these elements into a string.
261
00:14:46,080 --> 00:14:50,310
And so now cardsHtml is truly a string.
262
00:14:50,310 --> 00:14:51,143
Okay?
263
00:14:51,143 --> 00:14:54,070
And so now we have our cards ready
264
00:14:54,070 --> 00:14:56,790
and the last piece of the puzzle
265
00:14:56,790 --> 00:15:00,740
is to go ahead and replace that placeholder.
266
00:15:00,740 --> 00:15:04,110
So this here, actually copying it now,
267
00:15:04,110 --> 00:15:06,401
so now replacing this placeholder
268
00:15:06,401 --> 00:15:09,413
with the HTML that we just created.
269
00:15:11,050 --> 00:15:12,830
So let's call it output here
270
00:15:13,760 --> 00:15:15,150
and all we have to do
271
00:15:15,150 --> 00:15:16,343
is tempOverview
272
00:15:18,060 --> 00:15:22,423
with just a string that holds the overview HTML, right?
273
00:15:24,156 --> 00:15:25,553
.replace,
274
00:15:27,330 --> 00:15:30,253
and replace it with cardsHtml.
275
00:15:32,490 --> 00:15:33,750
Alright?
276
00:15:33,750 --> 00:15:34,583
That's it.
277
00:15:34,583 --> 00:15:38,620
Now all we have to do is to actually respond with the output
278
00:15:38,620 --> 00:15:41,933
and not with whatever we had before.
279
00:15:43,380 --> 00:15:44,730
Okay, cool.
280
00:15:44,730 --> 00:15:46,760
So that looked a bit complex,
281
00:15:46,760 --> 00:15:48,430
but if you think about it,
282
00:15:48,430 --> 00:15:51,563
I hope that it makes complete sense to you.
283
00:15:52,920 --> 00:15:55,200
And so let's go ahead and test this now
284
00:15:56,040 --> 00:15:58,395
and I hope I have no mistakes
285
00:15:58,395 --> 00:16:02,290
and something went wrong, alright.
286
00:16:02,290 --> 00:16:03,670
So what's that?
287
00:16:03,670 --> 00:16:07,000
Okay, so I just misspelled replace.
288
00:16:07,000 --> 00:16:10,863
That's one of the most common errors I get all the time.
289
00:16:12,310 --> 00:16:15,003
Like some small spelling mistake.
290
00:16:16,060 --> 00:16:18,740
Reload and bam, here we go.
291
00:16:18,740 --> 00:16:22,670
So here are our five rows.
292
00:16:22,670 --> 00:16:24,902
So beautiful, beautiful, beautiful.
293
00:16:24,902 --> 00:16:29,902
Now it doesn't quite look like the original one
294
00:16:30,050 --> 00:16:35,050
because what's missing is like these, this organic here.
295
00:16:36,190 --> 00:16:37,023
Okay?
296
00:16:37,023 --> 00:16:40,070
So let's see what's wrong there.
297
00:16:40,070 --> 00:16:44,570
Also for some reason, I don't see the quantity here
298
00:16:44,570 --> 00:16:48,300
but only if it's not organic.
299
00:16:48,300 --> 00:16:49,371
Well that's weird,
300
00:16:49,371 --> 00:16:53,420
so let's try to investigate what is happening here.
301
00:16:53,420 --> 00:16:55,620
So the error is probably somewhere here
302
00:16:55,620 --> 00:16:58,820
in this replaceTemplate function.
303
00:16:58,820 --> 00:17:02,210
But actually, everything looks kind of correct here.
304
00:17:02,210 --> 00:17:06,292
So also here on this not organic replacement.
305
00:17:07,220 --> 00:17:09,890
So let's take a look at our template card
306
00:17:11,410 --> 00:17:12,242
and,
307
00:17:13,890 --> 00:17:17,829
so I see here that when there's this NOT_ORGANIC,
308
00:17:17,829 --> 00:17:20,550
well, actually this entire box here,
309
00:17:20,550 --> 00:17:21,690
so also this H6
310
00:17:25,329 --> 00:17:26,782
will not be visible anymore.
311
00:17:27,910 --> 00:17:30,980
So something looks wrong here,
312
00:17:30,980 --> 00:17:33,080
let's take a look at the original one
313
00:17:34,870 --> 00:17:37,183
just to inspect the HTML here.
314
00:17:39,730 --> 00:17:43,330
So card detail is this one
315
00:17:43,330 --> 00:17:45,150
and so we, yeah,
316
00:17:45,150 --> 00:17:48,630
so we actually have three card details here
317
00:17:48,630 --> 00:17:51,773
while in the template, we only have one, okay?
318
00:17:52,670 --> 00:17:56,270
So let's go ahead and copy this one.
319
00:17:56,270 --> 00:17:59,160
So in the details you can actually copy an element
320
00:18:00,410 --> 00:18:01,260
and it will then,
321
00:18:03,300 --> 00:18:06,283
well just like that, copy the entire element.
322
00:18:07,400 --> 00:18:11,053
So this is what it's supposed to look like.
323
00:18:13,220 --> 00:18:14,840
And so here it should say organic
324
00:18:14,840 --> 00:18:18,193
and not quantity per box, okay?
325
00:18:18,193 --> 00:18:20,263
That one is probably the next one.
326
00:18:27,780 --> 00:18:29,193
So,
327
00:18:30,730 --> 00:18:32,290
let's quickly fix that.
328
00:18:32,290 --> 00:18:35,760
And here, of course we do not want that,
329
00:18:35,760 --> 00:18:38,920
and so yeah, that looks better,
330
00:18:38,920 --> 00:18:41,763
close it up, restart the server,
331
00:18:43,850 --> 00:18:48,143
and let's check that one out again.
332
00:18:49,550 --> 00:18:51,660
And now, bam, here we go.
333
00:18:51,660 --> 00:18:56,660
So now it's working and indeed, it works exactly the same.
334
00:18:57,150 --> 00:18:58,370
Beautiful.
335
00:18:58,370 --> 00:19:01,070
So that is, that is really nice.
336
00:19:01,070 --> 00:19:06,070
Let's just go ahead and delete, for example, the avocados
337
00:19:06,990 --> 00:19:08,680
just to see what happens.
338
00:19:08,680 --> 00:19:13,680
I'm just gonna do control, X to cut it,
339
00:19:13,900 --> 00:19:17,410
reload it here, and it's not changing
340
00:19:17,410 --> 00:19:20,040
and that's of course because remember
341
00:19:20,890 --> 00:19:21,723
that
342
00:19:22,770 --> 00:19:24,420
this, this data
343
00:19:24,420 --> 00:19:26,990
is actually only read in the beginning
344
00:19:26,990 --> 00:19:30,490
when we start the app, okay?
345
00:19:30,490 --> 00:19:32,250
So in order for this to take effect,
346
00:19:32,250 --> 00:19:36,635
we do effectively need to restart the application.
347
00:19:36,635 --> 00:19:38,853
Okay, so no big deal.
348
00:19:40,760 --> 00:19:43,200
And now it's gone, okay?
349
00:19:43,200 --> 00:19:45,900
Because it's no longer in the JSON file
350
00:19:45,900 --> 00:19:47,920
that it's read at the point of time
351
00:19:47,920 --> 00:19:49,630
when we start the application
352
00:19:52,050 --> 00:19:52,883
Okay?
353
00:19:52,883 --> 00:19:57,563
Let's put it back here, give it a save, restart,
354
00:19:58,450 --> 00:20:02,630
open this guy up, reload, and here it's back.
355
00:20:02,630 --> 00:20:05,580
So it's now really working dynamically
356
00:20:05,580 --> 00:20:09,660
by reading all this data right from the JSON file.
357
00:20:09,660 --> 00:20:12,860
So this one works, let's check the links also
358
00:20:12,860 --> 00:20:15,810
down there in the left-hand, bottom corner.
359
00:20:15,810 --> 00:20:18,600
You see that the ID changes from zero, one
360
00:20:18,600 --> 00:20:20,750
to, and so on and so forth,
361
00:20:20,750 --> 00:20:22,320
but if I click this here,
362
00:20:22,320 --> 00:20:25,310
well, when we get Page not found.
363
00:20:25,310 --> 00:20:29,170
And that's because our route is not yet ready for this.
364
00:20:29,170 --> 00:20:30,010
Okay?
365
00:20:30,010 --> 00:20:33,320
And so let's actually do that in the next video
366
00:20:33,320 --> 00:20:35,780
and implement the product detail page
367
00:20:35,780 --> 00:20:37,200
for each of these products.
368
00:20:37,200 --> 00:20:39,993
So, don't wait and let's move on now.
27436
Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.