All language subtitles for 012 HTML Templating_ Filling the Templates_Downloadly.ir_en

af Afrikaans
sq Albanian
am Amharic
ar Arabic
hy Armenian
az Azerbaijani
eu Basque
be Belarusian
bn Bengali
bs Bosnian
bg Bulgarian
ca Catalan
ceb Cebuano
ny Chichewa
zh-CN Chinese (Simplified)
zh-TW Chinese (Traditional)
co Corsican
hr Croatian
cs Czech
da Danish
nl Dutch
en English
eo Esperanto
et Estonian
tl Filipino
fi Finnish
fr French
fy Frisian
gl Galician
ka Georgian
de German
el Greek
gu Gujarati
ht Haitian Creole
ha Hausa
haw Hawaiian
iw Hebrew
hi Hindi
hmn Hmong
hu Hungarian
is Icelandic
ig Igbo
id Indonesian
ga Irish
it Italian
ja Japanese
jw Javanese
kn Kannada
kk Kazakh
km Khmer
ko Korean
ku Kurdish (Kurmanji)
ky Kyrgyz
lo Lao
la Latin
lv Latvian
lt Lithuanian
lb Luxembourgish
mk Macedonian
mg Malagasy
ms Malay
ml Malayalam
mt Maltese
mi Maori
mr Marathi
mn Mongolian
my Myanmar (Burmese)
ne Nepali
no Norwegian
ps Pashto
fa Persian Download
pl Polish
pt Portuguese
pa Punjabi
ro Romanian
ru Russian
sm Samoan
gd Scots Gaelic
sr Serbian
st Sesotho
sn Shona
sd Sindhi
si Sinhala
sk Slovak
sl Slovenian
so Somali
es Spanish
su Sundanese
sw Swahili
sv Swedish
tg Tajik
ta Tamil
te Telugu
th Thai
tr Turkish
uk Ukrainian
ur Urdu
uz Uzbek
vi Vietnamese
cy Welsh
xh Xhosa
yi Yiddish
yo Yoruba
zu Zulu
or Odia (Oriya)
rw Kinyarwanda
tk Turkmen
tt Tatar
ug Uyghur
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.