I am trying to figure out a good way to either generate a collection of weekdays based an input or by shifting a given collection based on a different start date. I can store the input as either the text value of a weekday such as "Wednesday" or the number 4. So as an example, given either Wednesday or 4 as the input, I'd want to get a collection as follows to be shown in a gallery: ["Wednesday", "Thursday", "Friday", "Saturday", "Sunday", "Monday", "Tuesday"]. Given an input of Thursday or 5, the collection would be ["Thursday", "Friday", "Saturday", "Sunday", "Monday", "Tuesday", "Wednesday"]. It is not important to have the days tied to an actual date value, just the text value of the weekday.
I have gotten this to work with a big If statement (If WeekStartDate = 1, Collect(WeekRange, "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"), If(WeekStartDate = 2, Collect(WeekRange, "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday") .....).
I could also get this to work referencing a question I asked earlier for a different use case about generating the most recent date of a given weekday name, however I don't need this to be tied to a date.
Wanted to check, is there a simpler way to do this than either of the above solutions?
Solved! Go to Solution.
Hi @Cooper01,
I come up an idea, create a weekday collection, use index ID to filter weekdays for the next 7 days , please check my steps:
1. Put following codes to OnStart property.
ClearCollect(Weekday,Table({ID:1,Value:"Sunday",Num:1}, {ID:2,Value:"Monday",Num:2}, {ID:3,Value:"Tuesday",Num:3},{ID:4,Value: "Wednesday",Num:4},{ID:5,Value: "Thursday",Num:5},{ID:6,Value:"Friday",Num:6} , {ID:7,Value:"Saturday",Num:7},{ID:8,Value:"Sunday",Num:1}, {ID:9,Value:"Monday",Num:2}, {ID:10,Value:"Tuesday",Num:3},{ID:11,Value: "Wednesday",Num:4},{ID:12,Value: "Thursday",Num:5},{ID:13,Value:"Friday",Num:6} , {ID:14,Value:"Saturday",Num:7} ))
2. Put the following code to OnChange property of text input box
Set(CurrentID,LookUp(Weekday,Num=Value(TextInput2.Text)).ID)
3. Set Items property as below:
Filter(Weekday,ID>=CurrentID,ID<=CurrentID+6).Value
Sik
Here's a solution I put together, where TextInput1 would be the 1-7 value you want to start with. Below will return 1-7 along with an index 0-6 of what the day is.
Set(SeedDay,Date(2017,1,Value(TextInput1.Text)));
ClearCollect(WeekRange,
{DayIndex: 0, Day: Weekday(SeedDay)},
{DayIndex: 1, Day: Weekday(DateAdd(SeedDay,1,Days))},
{DayIndex: 2, Day: Weekday(DateAdd(SeedDay,2,Days))},
{DayIndex: 3, Day: Weekday(DateAdd(SeedDay,3,Days))},
{DayIndex: 4, Day: Weekday(DateAdd(SeedDay,4,Days))},
{DayIndex: 5, Day: Weekday(DateAdd(SeedDay,5,Days))},
{DayIndex: 6, Day: Weekday(DateAdd(SeedDay,6,Days))}
)
I used Jan 2017 because January 1st was a Sunday, so I could just build onto that.
To get the actual day name, use this formula
Set(SeedDay,Date(2017,1,Value(TextInput1.Text)));
ClearCollect(WeekRange,
{DayIndex: 0, Day: Text(SeedDay,"[$-en-US]dddd")},
{DayIndex: 1, Day: Text(DateAdd(SeedDay,1,Days),"[$-en-US]dddd")},
{DayIndex: 2, Day: Text(DateAdd(SeedDay,2,Days),"[$-en-US]dddd")},
{DayIndex: 3, Day: Text(DateAdd(SeedDay,3,Days),"[$-en-US]dddd")},
{DayIndex: 4, Day: Text(DateAdd(SeedDay,4,Days),"[$-en-US]dddd")},
{DayIndex: 5, Day: Text(DateAdd(SeedDay,5,Days),"[$-en-US]dddd")},
{DayIndex: 6, Day: Text(DateAdd(SeedDay,6,Days),"[$-en-US]dddd")}
)
---
If this answered your question, please click "Accept Solution". If this helped, please Thumbs Up.
Hi @Cooper01,
I come up an idea, create a weekday collection, use index ID to filter weekdays for the next 7 days , please check my steps:
1. Put following codes to OnStart property.
ClearCollect(Weekday,Table({ID:1,Value:"Sunday",Num:1}, {ID:2,Value:"Monday",Num:2}, {ID:3,Value:"Tuesday",Num:3},{ID:4,Value: "Wednesday",Num:4},{ID:5,Value: "Thursday",Num:5},{ID:6,Value:"Friday",Num:6} , {ID:7,Value:"Saturday",Num:7},{ID:8,Value:"Sunday",Num:1}, {ID:9,Value:"Monday",Num:2}, {ID:10,Value:"Tuesday",Num:3},{ID:11,Value: "Wednesday",Num:4},{ID:12,Value: "Thursday",Num:5},{ID:13,Value:"Friday",Num:6} , {ID:14,Value:"Saturday",Num:7} ))
2. Put the following code to OnChange property of text input box
Set(CurrentID,LookUp(Weekday,Num=Value(TextInput2.Text)).ID)
3. Set Items property as below:
Filter(Weekday,ID>=CurrentID,ID<=CurrentID+6).Value
Sik
Check out new user group experience and if you are a leader please create your group
Did you miss the call?? Check out the Power Apps Community Call here!
See the latest Power Apps innovations, updates, and demos from the Microsoft Business Applications Launch Event.
User | Count |
---|---|
273 | |
245 | |
83 | |
37 | |
34 |
User | Count |
---|---|
356 | |
247 | |
128 | |
73 | |
44 |