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