I am trying to build a "request a car calendar" app using canvas and after some review I thought it was best to connect to a sharepoint calendar, that way I wouldn't need to store or pull any old data. Additionally I have seen some of the calendar apps suggested online on powerapps that does not offer calendars that show multiple events on each square (day). I am trying to gauge the community to see if I am going this the right way. So we will have multiple cars that can be booked at any given time. And the user would need to go in the app to first see if the car is available for that date, then book it if it is available, or change the date if necessary.
Since sharepoint has calendars, would it just be simpler for users to access the sharepoint calendar instead? However, it would require an admin to approve/deny. Unless there is some auto logic that can be built into a sharepoint calendar? In that sense, would it be a good idea to have the powerapp do the logic while connecting to sharepoint? Thank You.
Solved! Go to Solution.
Yes you are correct, there isn't a DateDel inside 'DelMeal Dates'. I'm not sure why though, sorry. All I know is that intellisense allows me to reference it so I am :). My best guess is that it's a function of the GroupBy fx?
And what you say here is exactly what's happening:
"If DateDel in 'DelMeal Dates' is equal to colDealMealGroup's DateDel (ThisItem.DateDel), then have the rows in 'DelMeal Dates' that match this criteria be available as items for Gallery 2. "
Sorry I couldn't be anymore help in breaking it down for you
Hi @rebeccas ,
I figure I give you holler to see if you can help me understand the item property of Gallery 2 in Eelman's code :
Gallery 2 Item property: Filter('DelMeal Dates',DateDel=ThisItem.DateDel)
I am confused because 'DelMeal Dates' does not have a DateDel column, then what is the DateDel in the Filter referencing? Then, what is ThisItem.DateDel referencing?
In other words I am interpreting the filter like so:
If DateDel in 'DelMeal Dates' is equal to colDealMealGroup's DateDel (ThisItem.DateDel), then have the rows in 'DelMeal Dates' that match this criteria be available as items for Gallery 2. I guess I am stuck because I dont see a DateDel in 'DelMeal Dates'. Or I am just interpreting this incorrectly? Thanks.
DateDel seems to the be name of the column that was created in the example when creating a collection using GroupBy.
I have one I am working on right now that I just put in Icon when something is scheduled and when the click on it there is a pop-up that list everything scheduled then in my gallery and then one more option where they can actually edit the item. I like how it is working so far.
I tried posting a video but even though it was short it I couldn't seem to get it small enough. See the pics below to give you an idea...it was pretty simple to do:
Thanks. I can do it your way, but I wanted the events to show up right within the date boxes like shown below:
I could just show one event by using the lookup function but i'd like to show multiple fields so I'd have to use a gallery. Actually it would have to be a subgallery within a gallery, but the problem is the main gallery has [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19, 20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41] as the Items. Because of this, I would not be able to use a GroupBy in the subgallery. Is there away for a gallery to have more then one source for the Item property?
I do like your example you just showed me as an alternative, especially the pop up boxes are more appealing then the side galleries.
You can only set one Items for a Gallery but I don't think that matters for what you need...you just need a common field which would be the date.
My icon that shows if there is an item scheduled that day has its visible as:
CountRows(Filter(SPListName, DateValue(Text(SPColumnStartDate)) = DateAdd(_firstDayInView, ThisItem.Value, Days)))>0
So it is showing if there is anything on my SharePoint list that the date matches this item inside the gallery - ThisItem.Value is referring to the row/column of the gallery it is inside
Then for the details that pop up (my second gallery which I don't have as a sub gallery, but should work the same)
Filter(SPListName, Text(SPColumnStartDate) = Text(_DateSelected, ShortDate))
Point being that my gallery filters to show off the date but it is still looking to my sharepoint list for its information. I believe you could do the same on a subgallery. Yours would probably be more like:
Items= Filter(SPListName, Text(SpColumnStartDate) = Text(ThisItem.Value))
or something similar to that...I didn't test that to be 100%
I see what you are trying to do now and I get where you could get it working.
There is probably 3-4 ways I can think of but my first option would be to have Gallery 2 reference a collection that's been filtered by Month & Year. So, when a user selects forward/back to move between months you set variables varMth & varYr and also create an Events collection based on these two variables. When creating this collection use AddColumns to add in EventDay using Day(). Something like:
ClearCollect ( colMonthEvents, AddColumns (Filter ( myCalendar, Month(StartTime) = varMth && Year(StartTime) = varYr ), "EventDay", Day(StartTime))
Then use GroupBy on EventDay (note you could probably do this all in one line of code but my set skills aren't good enough, yet 🙂 )
ClearCollect( colMthEventsGrouped, GroupBy( colMonthEvents, "EventDay", "EventsForDay"))
Then Gallery 2, using this colMthEventsGrouped, will have a column, EventDay, that can be referenced back to Gallery 1.
Let me know if you need me to explain this further.
PS I haven't tested this so there maybe some bugs but hopefully the above explains how it could be achieved
I was able to do it utilizing your example.
I was so caught up in using a GroupBy function in a subgallery that i overlooked that I could just use the sharepoint list as my source. Or better yet, just use the collection that I collected from sharepoint. So I used the Filter for the SubGallery Item property just like your example:
Filter(MyCollection, DateValue(Text('Event Date')) = DateAdd(_firstDayInView, ThisItem.Value, Days))
And from there I added a label control within the SubGallery to display the event fields. I am now also able to display multiple events per date (if there are more then one event per day).
The next step is to eliminate the side gallery and implement the pop up window to show more event properties just like how you had done it. I will also need to test multiple sharepoint calendar overviews, and see if I can pull multiple calendars into the same app. Mind if we continue to dialogue? 🙂
I was able to get it to work. rebeccas was able to help me out on here. I used the subgallery as you have suggested but I filtered the collection instead of using a GroupBy function.
On to the next phase. Do you know if powerapps can pull multiple calendar overviews from sharepoint? I'd like to show events from different calendars. Big thanks for your help!
Learn how to create your own user groups today!
Please join us on Wednesday, January 19th, at 8a PDT. Come and learn from our amazing speakers!
Check out the new Power Platform Community Connections gallery!