[E07] You & I Builder Live! Question triage application
[Music] [Applause] [Music] [Music] thank you foreign [Music] [Music] hello and welcome everybody to week two of gabapalooza this is you and I Builder live where you and I try to do something live uh I am here joined today by my lovely co-host Brad who apparently was muted hey everybody my name is Brad I'm the co-host I work on the UI Builder outbound product management team is what we'll call it awesome I also work on the UI Builder outbound product management team I'm a next experienced PM so welcome everybody uh it's a great time for you guys to ask questions uh thanks Earl in the chat uh we're gonna have lots of chat interaction as always and Brad what are we going to do today because I forgot yeah so uh sorry I I joined like three minutes ago um I know everybody was nervous uh we today uh we are going to uh do some question triage so I did uh a lot of us did a webinar uh Tuesday and Wednesday of this week uh Target of Partners uh we had like more than 2 000 people on this webinar uh which was kind of crazy so we got like seven or eight hundred questions I think uh we answered a lot of them uh but part of my job is to go through and triage and dedupe uh these questions and answer the ones we didn't answer and then we're gonna send them all out and then we'll post them and we're also going to use these questions to drive product feedback and things so uh it was a really great uh webinar but uh I gotta figure out how to triage these things and that I wanted to not do it in an Excel spreadsheet so I thought what if there was a way for me to create some sort of interface to triage questions about the thing that I use to build the interface so if only there was a platform we could use that is very extensible very customizable you can do awesome things with it I've heard if only all right should we get into it let's go ahead and get into it oh we're gonna build it on Roblox let's go it's Roblox up what oh Roblox I see in the chat now uh all right so I I did spend a little time earlier today and I took this spreadsheet of questions and I turned that spreadsheet of questions into an app using App engine studio and then I created a workspace and are you if you're asking like did you create an app in a workspace just to like do a thing one time I I did do that so uh let's look at the question data model here so we've got a couple of tables question table in the category table we're going to categorize all the questions and so let's look at this table real quick so we know what the data model looks like before we open up UI Builder all right so this is that new uh is this a Utah thing the uh I'm not an app engine Studio as much as I used to be um but I do like this little Excel view um so we can see we have lots of uh 660 questions um so if we look at our data model here we've got a question and answer so we didn't answer all of them and then state is one of the big things that we're going to look at I've got pending unanswered answered duplicate and not applicable so we got questions like is the recording going to be available and while those were fine questions at the time those are questions that at this point we don't really care about so we're just going to say not applicable and uh not follow up with it so Lisa says look at the schema under data let's see oh that is kind of nice oh fancy here we go yes I'm in app engine studio all the time no not really so am I uh no yeah this is cool so we have parents I like that it relates to itself so what we're gonna what we want to do is I'm going to go through every question and I'm going to uh I need to categorize it I need to say like what what is this question related to and then uh is it a duplicate and if it's a duplicate I'm going to make it a parent of another question because it's important to us if we get let's say we got 20 questions on when is ATF going to be available for work workspace that's kind of an indicator that that's important and we should make it happen so we want to know that sort of thing and then if there was an answer that's not correct there are a few of those I'll correct the answer and then if there's not an answer obviously we need to answer it so that's kind of what we're doing here and instead of just doing this all in one spreadsheet we're going to build something to make it faster which may take more time overall but you know this is a developer Focus thing and that's what developers do so let's open up UI Builder I wonder One Day later on when when you get to when you get to the next phase in the afterlife I wonder if someone's going to come up with a tally of how much time you spent building a thing to make a thing go faster versus the amount of time I would have just taken to do the thing I I hope that doesn't happen because I'm actually fairly good at like okay it's gonna take me longer to do this I'm just gonna do the thing if it's gonna take me an hour but uh I still you're powerful I still probably spend too much time on it all right it's my it's my hobby it's my number one hobby trying to find solutions for problems that don't need it and trying to do it in the most complicated way yeah and then not quite finish never finish it and then you have to register a domain name also that's just far from the course oh my God can you zoom in a little bit and also about domain names at my Peak I owned 86. nice I've trimmed it down to about 20. all right so I have a page set up already uh it's got a couple of data resources on it we've got a data resource uh where we're going to look up all of our records I'm limiting this since there are 700-ish records I'm limiting to 20 at a time I don't think I'm going to be able to do more than 20 at a time anyway and then I also have an aggregation query because I wanted to give myself the number of questions that I have left and so we're gonna do that first and I want to do something fun with the stylized text here I think so actually what I want to do is I'm going to add this component after I'm going to add a container in here and then we're going to move this up into the container there we go and then I'm going to make this go sideways all right so stylized text one of the things I love using with a stylized text is I like using the concat formula is what we're calling it yeah that sounds right so we're going to say Brad you have space comma and then we're going to go at data dot aggregation query dot output Dot data all right we're just going to keep hitting dots till we get to count there we go so would we put a hang on you're outside of the parentheses yeah so I am would we put a filter on the data resource itself yes so this data resource has a condition on it uh where it's looking at status pending so I've got that State field that has a bunch of options and so for now all all questions are set to pending right now until I do something to them so that should if I click out of it does that give me something uh uh I don't know let's let's save it and see if I get a value there that looks right you got it there we go I want to preview and then the other the other thing that I want to do is how we don't how do we want it let's do it let's do it like this um so I'm going to add an icon and I want it to be when I have a happy face if it's less than 50. [Laughter] so that's what we're gonna do this happier does anybody know what the name of the smile oh there we go we're gonna have that there and then we're going to set some visibility on it we're gonna hide uh oh can you do math we can do math I think we can just do it like this so I think we can go add data oh so many dots [Laughter] count wow is let's say if it's less than 50. that it's not working and then I think that uh we're hiding the component we should go the other way there we go there we go and then we're gonna do another one except this one will just reverse the thing and we need to change the is it smile oh um sad sad put emoji negative do a negative outline here we go yeah perfect all right now let's see how that looks um all right I I don't like that can we make it bigger yeah we can extra large and then let's add some padding and see if that helps I think you might have to fix the alignment oh there we go that sometimes if you make something bigger and add the large padding it just it's magic that's that that doesn't sound right that doesn't sound right but okay let's do the same to the smiley face now so so let's see how let's see if we can make the smiley face show up uh uh how would I change this but we'll do this so if we just change this instead of pending unanswered so there's no unanswered so if I do that and Save we should get the smiley face oh but I didn't do the patterns yeah so extra large and padding and it's magic Magic yay except that's not right so zero questions left no I mean it says zero questions so I think we're good to end for the day so thanks everybody for coming to UNI Builder live be sure to tune in uh in two weeks [Laughter] his intern day well played man if I had known the intern joke would have knowledge for years I don't think I could have made it like this is amazing all right so we're going to add a repeater and I want all those questions in the repeater oh uh here we go so data array we have that data resource set up already so we're gonna go data look up records if I was good or had more time I would have uh I think we just made results yeah that's right I would have renamed that lookup records to be something that made more sense just no you wouldn't have free name well I'm I might have probably not so Brad what are you drinking oh this is a uh kroger cranberry lime flavored seltzer and I'm drinking a Sprite let's rate our drinks at the end I do like gimmick infringement I do like combining lime with another flavor okay so there's a few things we want to do let's put a container in the repeater it's not gonna work wow today we learned how to spell container y'all I never spell container correctly all right and then in that container I think I want two columns no three let's do three I'm going to make it a grid and part of me really wishes this was a week from now and we could do this on Vancouver especially when I'm laying out a page for the first time but uh We're Not Gonna We're not gonna do that and then in a week if you're not RTP you'll know what I'm talking about oh so this is so we're gonna have what I want is the question and then the answer and then some buttons that are going to help me work with that and so what's the we're gonna have a whole bunch of lines here and I'm going to want it to word wrap and I don't know if I do paragraph if that's going to work but let's see if I'm in a repeater I'm going to go item.value and then we're gonna go question still undefined sure what's going on I'm going to duplicate this it's going to show up next to it and we're going to just change that to answer duh don't you need display value uh you know what I probably do that's why it's undefined good call thanks I learned from the best and the beardest okay there we go it worked yay all right well one of them worked oh it may not have an answer it doesn't have an answer because this was a hard one we would have never gotten something to show up there uh yeah the first day we had there were a lot of people on and we had like five panelists answering questions and everyone got overwhelmed pretty quickly because there were a lot more people on than we thought we'll be home um all right so this is okay it does word wrap which is good um one of the problems we tried to do this way back when is uh make the coloring different but there's a problem with the repeater to where we don't always know uh like whether the number is even or odd and so it's kind of hard so I think at the very least we will probably add a border around the container and that will at least you know give us some sort of differentiation between the different items in the list so not neutral five let's go something dark but not black uh no radius do padding and some padding oh yeah yeah and then I think we need a little bit of margin so they don't run into each other too just a little bit all right let's see how that looks terrible all right so here's here's my borders I really don't want to spend all of our time troubleshooting this but that looks terrible why did I do that let's make the container or the repeater container see if that helps oh nice for some reason that helped that's great um why wouldn't that it's all right I'm not going to try to troubleshoot why that happened so let's just add a little bit of margin to the repeater itself and then see if we get some spacing nope all right who cares at least it's all different We Care uh and then on the far right we're going to add some actions uh that's what we want to do here so we're going to add a component after it's going to be a container that I spelled correctly it's one of the credit there and then here's here's where we have some choices to make so ultimately we want to set the state and so it's either going to be what were our states here so our states are can we click on that and see I kind of want to see oh no that would have been cool though that would have been way too cool questions all right nope we'll go back to fields and this one there we go pending unanswered answered duplicate and not applicable um so the most common thing for me to do is just going to say this has been answered and we want to include it or it's a duplicate or it's not applicable and there may be some that I'm going to say I don't want to answer right now so I think this is what we're gonna do we're just going to add three buttons I thought about maybe also adding the actual drop down but I think we're just going to add some buttons why wouldn't we do a drop down or a spliter I think well the split button we could do a split button I think it's going to be easier for me just to click on the individual buttons I think that'll be the fastest way to do this Fair will allow it this is all about me 100 percent uh right so let's go padding and then I call this one what were answered I already forgot I got answered pending unanswered duplicate not applicable all right so I think for our buttons I'm going to go answered duplicate and not applicable which we're going to call discard because I like that better um answered you have to change that to variant primary how about a check is there an option to put the icon at the end I really don't like that I don't think there is good question uh yeah that's pretty awesome that they're floating up the uh Arya properties there and the tooltip label that's some awesome accessibility um yes that is nice uh let's do that answered and then we'll do one more so we're gonna go answered duplicate secondary and and discard I'll go back to that one um not applicable oh I want a negative I want to call it discard oh yeah let's go negative there we go secondary then trash oh that's much better than an X be super mean about it I was I was gonna make some X comments but I decided not to um do copy happy no there is a oh what did I use copy is there like a document I think there's like a two documents thing somewhere that's what I thought would pop up under a copy that's so weird there it is and then we'll make this one secondary or tertiary that'll work there it is all right so let's save that and see how it looks oh that looks nice it's not bad all right so we get answered so we're done now we have to uh awesome we're done so the first thing we're gonna do is add an update record data resource man these interns are awful move us that way I'm just happy he's doing it to you instead of me uh update wow that's the best jump scare we're just gonna call it update so it's easier to call um so for answered all right discard's the easiest one so let's start with that one so discard we're just going to set the state of the record so uh update we're gonna execute this is going to be on my questions table and I did name this table plural uh partially because there's so many question Stables but only one of them is plural and it's mine uh search for record this is going to be if we fire this this is going to be it's the item I think we have access to it from here because we're inside of the container yeah uh I think it's under row data let's see I don't go away no Road data unique value someone in chat is taking um issue with you naming a plural table name I know it's questions are really common table so let's if I were not to name it questions how many of these do we have that's too many but look no oh oh just one also this is my own personal instance so uh uh no we're item item dot value dot rowdata dot unique value so we're gonna set the state to uh that was discard and then I think that's it all right so we're gonna set the state to discard and then we're gonna refresh the lookup records data resource so it disappears so let's save that and test it Earl reminded me of something yesterday during the Q a uh someone asked if what was it was something about what do you consider UI Builder low code that's a great um it was some form of variance of that and I didn't know quite how to answer because technically you don't need to know scripting but you sure need to know like a Json structure and how to dot walk through data yeah I so I think right now like as of Utah we would not consider low code users so when we say low code that's really uh that's really a Persona rather than like a way that the tool works and so the low code Persona we don't really consider that a UI Builder Persona so UI Builder is really more for our like Pro code developer personas right now um so yeah I low code High complexity is another way to say that I saw low code High config um so it is still like you have to learn it and there's a high learning curve our goal you know from you know Tokyo through the next couple of releases is really to add features to UI Builder to make it a little easier to use and to kind of move towards low code to where it's a lot easier to just pick up and use and next week you'll see some cool things in Vancouver where we're moving in that direction and we're making it a lot easier to use I've seen some Washington stuff that looks really cool some designs for that so I think we're going to get there but for right now no this is not you know somebody that you're going to uh just throw at for a day and then they're going to be fine and up and running with it so it does it does require uh some time to really learn how to use it we do get some pretty you know pretty good feedback from people once they have you know taking the time to learn it and use it but obviously we want that learning curve to be a lot lower and people use it faster makes sense thank you um all right so we're gonna try this I'm gonna try this with this q a one because this is a question that at this point we don't care about because the Q a will be set up or they'll have they'll have it at that point so let's hit discard and see if it disappears oh I sure did not what if we refresh you need to add in a page reload oh I do need it all right so let's now let's try it oh still it'll work oh it did get it did update the data in the top left corner though so it shows 659 so I think we don't have a filter for the bottom I think you're probably right I think maybe that look up records data resource doesn't have any conditions that's it it doesn't have a filter on it I think I updated the Glide aggregate but not the update records so let's save let's refresh yay there it is now you need to add a page refresh to the button or would the resource refresh would be enough the resource refresh is enough um so anytime the data refreshes it's going to automatically refresh the stuff on the page let's see if there's another one that we have here uh thanks for all the replies I believe okay that's one we probably don't need it went away I would love to have some sort of Animation where it like Fades out I don't know that that's a thing we can do easily though uh oh you know what we can do is um we could add a loading State this is kind of a fun one uh so we say loading we don't need any text and we don't need to make it non-block or we do we do need to make it non-blocking so what this is going to do is it's gonna there's gonna be a little line across the top here that's going to go and then when it's done uh it'll go away but we also need to tell it when it's done so we've got we're going to set the loading State when I hit the button and then the lookup records data resource is going to fire an event when it has succeeded and then we will do set loading State and we will just clear the loading State I think this will work like that and you know you could add events onto data resources yeah so it's a really it's a really good Tool uh to add events to data resources you can do a lot of error catching and error handling here and you know UI Builders really built to be reactive so you're reacting to events that are happening rather than like having a long script where you're saying okay do this okay I'm going to get the results of that and use that somewhere else rather than having some sort of long thing that's going to orchestrate your user interactions you're just responding to different things happening so you know you might trigger a data resource and the data resource triggers a client script and the client script triggers something else and so you've got this long chain of things which I would love us to be able to visualize a little better um and that that is you know something we're thinking about doing but that's kind of the Paradigm here um all right so I think that worked let's go back into the data and see if we can I change the sword on this sword uh oldest to newest I just love all these low-key like quality of life improvements the service has added over the years like I remember having to deal with um options and choices on fields and having to go into CIS Choice and then inactive equals false and all these awful things but here you're able to see a list view of your records and go straight to the data bit to the to the table schema and just seamlessly go back and forth it's so nice it is nice all right so we reset that one back to pending so I'm going to save and then that should show up here did you just keyboard shortcut save I think it's been around you did that in Tokyo but we are adding more more keyboard shortcuts for things there's some really fun keyboard shortcuts coming in Vancouver along with some functionality that's nice uh what was the Q a one it didn't show back up because I didn't refresh are you sure you set it back to pending I thought I did oh do I have to save it fine there it is so let's go so when I hit discard we should see a little line come across up here and then disappeared and then disappear when this goes away there it goes oh it's quick so that was the time between when I hit the button and when the server came back with the data and then my number updated No it didn't so it did not [Laughter] I think the reason it didn't update was because it's in this inside of this concat so let's let's try something just because should we add an event to dialysis text so you can't make the style I think uh let's let's call this a feature Gap um instead of the other word [Laughter] but I think if all right so we have a few things going on here so let's let's see what happens here oh I see what you're doing I take this and can I not refresh you I guess like we could just do whatever and I can set them all back to getting later all right so if I go refresh I am curious to see if the reason that this number doesn't update is because it's inside of that formula and the formula doesn't know to refresh because in uib anytime uh any components properties update the component should automatically update could it be that it's because we're using the aggregation query and not the lookup query that probably is the reason good call all right well let's let's test this but I think you're right so let's go discard none of them updated I think you're right let's update the aggregation so that means we have to add it to the button yes uh it's this one quick question does it matter what order things are in here like set loading State before the refresh uh depends on who you talk to you think it matters I do think it executes them in order but it's all async uh and you can't reorder them but yeah that's my next question can you drag and drop see if this works 658 there we go that was it you win yay somebody get Gabby her prize [Laughter] all right so we did discard this was the easy one uh we could do duplicate so what I want to happen if I say it's a duplicate I'm gonna pop up a modal and then I want to um I want to pop up a modal and then I want to be able to set the parent in the modal and hit save and then have it uh have it go away so let's do that one because I think this one's going to be fun I did see uh I did see something that somebody says the documentation does say they run randomly and uh uh people say they work randomly but I have never I have never actually watched them run out of order like if you do a bunch of logging or something it always happens in order so it's not it is supposed to be random and async but I don't know that it actually is but if one of ours is maybe they can correct me Fatima welcome to the show um they are asking can one completely new to UI Builder reproduce what we are doing here in their own PDI probably I do have a spreadsheet that I used basically to create the app that you would not have but it's basically if you watch from the beginning you should see most most of the data model so it'd be you know pretty easy to to reproduce there's only a couple of tables in this app uh what are we doing duplicate next oh so this would be a fun one so first we need to add a modal and I'm going to add a custom modal here and then what I'm going to put in the modal I'm gonna go stylize text because I always do a stylized text uh and then I think uh so this is duplicate and then we'll say we'll just put the uh we'll put the question in the header this is going to look odd but uh oh what we need to do before that is add a client State parameter to hold active question and then we'll go back to our modal we're going to set that to state DOT active question all right we have a quick question from the chat can we update multiple records from the modal imagine in this scenario if we wanted to have the button in list view which opens a modal and once submitted it will update multiple records there is an update multiple records um data resource so it's probably a little more complicated than you would want it to be but there if we look at I think there's an update and delete multiple records so there's this update multiple records data resource you're going to have to basically pass it a big Json blob I believe that tells it which records are updating and how you're updating them but that is a thing that's possible so you'd have to build that Json somewhere and then send it to the data resource but for this we're just going through one record at a time because they could all be different I could you know I could add a checkbox and then you know if I wanted to discard 10 at a time I could do that but I think that it's going to be so easy just to hit the buttons um where was I modal so in the middle oh in the middle what I want to do is add a list I'm going to do a simple list um yeah this is gonna get kind of complicated but let's see yeah I'm really wondering how you're gonna do it so I want a list of questions and then these are going to be yes we're gonna go a list of questions where the state is uh let's go is one of that's either going to be answered or unanswered so basically I don't want to I don't want to be able to set a parent of a question unless the uh unless the parent has been addressed already so it the first one I see will end up being the parent that makes sense and then we're going to set some columns here I think the only column I want is the question why hasn't the title of the list not changed I think I just froze we can still hear you if you can hear us yep can yeah I think my screen just froze so this should be interesting all right let me I'm gonna stop my screen share real quick [Laughter] that's amazing that is a thing that almost happened uh oh man oh no we're back hey that actually worked how did that work I've been having a problem in the last couple of weeks where my screen will freeze and then my laptop will restart 30 seconds later so I think we're good you got to reshare your screen I I Yay total remember folks this is why we always alt s on instinct you breathe alt f so we're just going to show the question no records to display because we don't have any records that have been answered yet we'll have to add one um the title though I think oh all active tasks that's at the bottom now I don't know why uh oh so we're gonna hide basically all the things we do want to enable word wrap that is a fun little feature an empty State image oh wow uh I think the rest of this is probably okay let's call this um uh available questions answered questions and we need to change the columns don't we I think question is the only one I need there oh you already did whoops yeah nice I think I did yeah and then let's give it uh I missed number of Records maximum maximum rows save let's say 30. I don't know how that's going to look on a modal but we'll see and then what we want to do is the simplest has a row clicked or is it reference click now so basically when I click that I want to do we need another client State parameter we probably will um so what am I what are we capturing just the active question name we're going to need the active questions sysid and then we need the selected parents this ID do we uh that'll be in the event payload oh all right so we've got active question active question ID and then on the event click we are going to use our update data resource on our questions table and the record we're updating is going to be active question ID and then we're going to set parent to and let's see if I remember the payload payload dot oh it gives it to us great payload.sysid I think is what we want and we're going to set state is duplicate so I think that's right I didn't emphasize the plural yes Earl um all right so now we need to make the button fire I guess we should add a cancel button let's add a cancel button just there's already an X but uh like this I will call it negative secondary cancel and then its vent is going to be to close the modal so whether it's an open or a closed is a toggle yep so we're going to use the same event to open the modal that's this one right duplicate so now we want to open it custom and then we want to write to the client State parameters so active question ID is going to be item dot valued question dot display value and then we're going to do this again this time it's going to be the ID I should have copied the last one row data this was unique value okay so let's go prep some data here I think we want the actual um what's the question time yeah [Music] all right so let's just uh let's say this one was answered so let's do a couple of them let's switch both of these things does that work in app engine Studio the shift click drag uh yeah well this is a normal I switched out of the this one oh okay no it does not it does not oh this one does that we could go I'm not going to change it nice all right so are we saved all right this should work oh I like uh Lisa's idea of uh search the search the list for the one that uh Jin AI thinks is the right uh the right record let's go duplicate all right we have a couple here cool cool so if I hit this one did we have we didn't add this modal yeah yeah and then we're also gonna need to refresh the list so let's add some stuff to that we just got so excited that we got to do so much resource so we did the update we're going to refresh the lookup records and then we're going to close the modal oh and this is tied to the event mapping reference link clicked yes so that's basically any reference field I click on in the link uh fires this event so that could be the actual record it could be a reference uh field somewhere uh and so one of the cool things that you can do with this type of event where it's an event that kind of handles different use cases is you can use the advanced uh key here and you could put a formula in here to tell it when you want that uh that event handler to fire do we also want to update the uh aggregate uh yeah we should update yeah and then let's see if it works and then I think if I were to do this again I would have a handled event that updates all the data resources we want to update every time so that I just fire the handled event instead of having to add both of those to the if we have if this works maybe we'll do that right before we have to drop all right so if I refresh I think that one should go away can you add a choice field it's gone all right so let's go and then let's see did that I should have at least one in this list that says duplicate there it is and then let's add uh parent and see if parrot got added yep look at that that's kind of nice all right so let's try this again all right let's just do the top one and then let's do this and it's gone and I think it went away let's see we should have another duplicate with the same parent or I think a different parenthesis different yeah it worked awesome and then we don't have time to do this but what I want to do for answered is I want to uh pop a modal that that instead of just saying that we answered it because some of them didn't get answered correctly or I want to change the answer a little bit that lets me change the answer and then submit it but we don't need to do that right now let me show you real quick how we might do a handled event so on the uh the body um the body element over on the left here is kind of special uh it does some different things so on its config it has all these properties and so you can add properties to the page here that pull things this is especially important if you have sub Pages where the properties is how you map data from the parent page to the sub page but the other thing that they have are events and so there's a couple of cool things one of them is it does fire a page ready event uh and then there's a page property event so if that property changes it fires an event so there's a few different things that you can key on but page ready is a really good one especially for testing if you just want to know like hey does this thing work you can do that without having to add a button or anything we're going to add a handled event I think this is going to work let's see uh refresh the stuff uh you can give it a payload so when you fire this event you can pass things into the payload and then use the payload to do something I don't think we need to do that now so I'm going to add it and then it's going to be available in my page event mappings so we'll refresh the stuff and then let's refresh these data resources okay oh and then how do we use that you know button believe we can just fire this so let's do that on the discard I'm going to get rid of these oh you can click on them and edit them yes yes wait what was the first one that was the wrong one if only it was a week from now that's [Laughter] all right let's redo that uh oh man all right so while he's fixing that I'm gonna do our plug so we can hopefully end someone on time um and then let us know when you're ready to test it Brad so thank you all so much for hanging out with us today um I think today's episode was wildly successful uh we will see if we continue building this um app next time but be sure to come uh visit us we go let me tell you I need a calendar for some reason so we have this show on the second and fourth Thursday of every month so the next time that we're gonna see you is going to be August 10th and then on the third Wednesday of every month we also have an academy the next experience Academy this time we're going to talk about what's new in Vancouver um so be sure to tune in and hopefully are we gonna get to see Vancouver um next time for you and I Builder I believe so yeah it'll be Vancouver I think will be out right two weeks from today will be the next one yeah so come and check out something cool EAS so come and check out some cool Vancouver stuff thank you so much Brad that's right and I think they're ready they're gonna do some tech now stuff as well so yeah so somebody said uh refresh the page but I didn't I haven't saved in a while so we would have lost a lot of things that I've done that so I just recreated that uh so that refresh the stuff event has shown up under page level event handlers so I'm going to add it here foreign should we remove the the refresh data resource what else did I delete then [Laughter] now let's see if it works that's really cool that you can Nest events at least yeah it's a good way I mean this was I I don't use it a lot but this is actually a decent use case where we kind of always want to refresh both of those so if I say discard yay all right awesome good job Brad close out the show thank you everyone for joining a special thanks to everybody that was on the uh the webinar on Tuesday and Wednesday this week we had a good time and got some great questions that we are obviously going to do things with uh and drive you know Drive our our product development and and strategy based on what everybody cares about and is asking for so uh thanks everybody for joining and we will be back in a couple of weeks like Abby said and uh yeah goodbye foreign [Music] foreign
https://www.youtube.com/watch?v=ldZicE9rfmg