#100DaysOfWeb in Python Transcripts
Chapter: Day 52: Anvil - Full Stack Web Apps
Lecture: All docs form
0:00 Let's go mess with the old documents,
0:02 recall what we had before we had a little filter thing,
0:04 and I'll go ahead and put the text of it up here.
0:09 This isn't going to do anything yet, but we'll have our little
0:11 filter there, and let's put a spacer.
0:13 And then what we need is,
0:14 we want a list of all of the documents.
0:17 How do you do that?
0:18 So far we've set like the text value and so on,
0:20 so what we need for the next thing is actually
0:23 called a linear panel or a repeating panel,
0:26 we'll go for repeating panel.
0:29 Now, there's an item template
0:31 that we've got created right here,
0:32 and I don't like that name, so let me rename this
0:34 to doc_list_item_template.
0:40 If you go down here, we'll see that we have
0:42 the doc_list_item_template, right there, sorry.
0:44 And let's set the name to docs, like that.
0:50 Now, if we actually want to edit that item template,
0:52 we can double click here or just go there,
0:54 we'll double click there and it says
0:56 what items would you like to display?
0:57 Right on the table, how about documents.
1:01 And that means there'll be a little item property
1:03 for each one that comes through here.
1:05 Alright, so within this, how do you want to show it?
1:09 Well, let's go do some more stuff,
1:10 let's set into this thing, we're going to put the title,
1:18 make that bold and go left.
1:22 Put another one right there,
1:31 that's when it's created, and then let's put a link in here,
1:33 so you can click the link to say navigate over and edit it,
1:36 and this is going to be details.
1:47 Alright, make that smaller at that side,
1:49 that created we can make it a little smaller,
1:51 leave some room for the title,
1:53 which is going to be the main thing.
1:55 This is pretty interesting,
1:56 but how do I get the data wired into this?
1:59 Now, we get a little data binding here,
2:01 check that bad boy out right there.
2:03 Self.item of what?
2:04 Well, that is the scheme of our database.
2:08 How cool is that?
2:10 Okay, this should be name,
2:13 and that's looking good. Oops, I don't want this one.
2:15 Self.name and the created,
2:17 we're going to set that up a little bit different,
2:18 but let's just see what we can do to make this work.
2:23 Come into code here,
2:26 go to our utilities, remember it's already loaded the data
2:29 so we shouldn't have to download anything, this is all
2:32 a single paid app, it's amazing.
2:35 So all we have to do is say
2:36 self.repeating_panel.items = utility.docs.
2:42 Let's see if this works.
2:45 Alright, moment of truth, wow,
2:49 it doesn't look like much,
2:50 but that is out of our database right there.
2:52 Super, super cool.
2:54 Let's work on our created date right here.
2:58 Now, if you look over here at the bindings,
2:59 I could try to add a binding,
3:01 and I could have created,
3:03 but I really wanted something like,
3:04 kind of complicated for how I do this,
3:06 like stuff that's happening here.
3:09 So, instead of doing it this way, let's remove that,
3:12 and let's actually go and write
3:13 some code for our doc template.
3:16 Right, so we come over here, and this little item
3:18 thing has been set, actually, I believe it's not set yet.
3:21 We got to be a little careful when the thing is shown,
3:24 or the doc list is shown, then the item has been set,
3:27 so we come down here and say self dot label,
3:31 created dot text, and then we want to use this nice little
3:36 expression here, where we say item.created,
3:39 this is the document, that's it's created field,
3:41 actually, sorry, we got to do it like this.
3:44 Created, and then store format for the friendly
3:48 month, then the day, then the year, let's try that.
3:52 Try all the docs, there you go, March fourth,
3:56 that's today, that's when I created these things.
3:58 Super, super cool, I mean we could make those fonts
4:00 a little bit bigger.
4:01 Last thing is what happens when we click this?
4:03 Right now, nothing.
4:06 So, inside our template,
4:08 when we double click on these details,
4:11 something is going to happen.
4:13 What we want to do is, again tell the home form to navigate
4:17 somewhere, so what we're going to do is we're going to
4:19 write one more function here, kind of like the go_home.
4:35 And we'll tell the home_form to do this thing
4:38 we're calling go_details,
4:39 and what is that?
4:40 Well it's going to show this details form.
4:42 We haven't put that in place yet,
4:43 because it's not a top level navigation item you can do,
4:47 but we'll write it now.
4:53 It's almost the same,
4:58 going to add the doc_details_form.
5:02 Let's pass the doc along,
5:07 and to kind of keep with the pattern
5:08 when you do this binding
5:09 or something is associated with it,
5:11 it's typically item, so I'm going to say item equals this.
5:16 Alright, in our doc_details_form, let's just
5:19 do something like this,
5:20 print self.item name, just to make sure
5:24 that we got the name here, so,
5:29 like that, let's see if the details now work.
5:39 It doesn't, what are we missing?
5:40 Let me check.
5:45 Why didn't it work?
5:46 Well, it doesn't take a genius to figure that
5:49 out does it, look at this, forgot to call it, alright, so let's do our import again.
5:57 Go to details and pass the document that they clicked.
6:02 Remember, the one I clicked was self.item,
6:04 that's the thing that's bound to this particular row
6:07 of our repeating table, so self.item,
6:10 pass that along.
6:14 Click it, what happens?
6:15 Run demo ReadMe,
6:18 oh we didn't pass enough, what's happening here?
6:23 I forgot to put the self parameter.
6:25 Okay, one more time.
6:29 Ready, let's go see the demo ReadMe.
6:32 Boom, we loaded the document demo ReadMe,
6:34 want to try the other, live doc, loaded live doc.
6:37 Yes, it's working.
6:38 So we pretty much have our app all in place,
6:41 the last thing we need to do is sort of replicate this
6:44 view over here on the home,
6:45 as well as filter the documents.
6:47 So what I'm going to do is,
6:48 I'm going to go add a bunch of documents
6:50 so we have things to work with, and then,
6:52 we'll finish out these last two small pieces.