cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
kziegler
Frequent Visitor

After a button is pressed I want it to change colors for a certain period of time then back to its original color.

I'm not sure which category this fits under but I would like a few things to happen when you press a button on power apps. I have a list of buttons that I'm not sure should be free-floating or in a gallery and the main goal is to make it easier to log routine repairs to machines.

1. When the button is pressed I'd like it to move to the bottom on the button list.

2. When the button is pressed I'd like it to change color for 5 days, (until the following Monday would be better but I'm not sure how to routinely calculate that date) then change back to it's original color when that time is up or on midnight the following Monday. 

3. When the button is pressed I would like it to create a predetermined item in Sharepoint. There is already a different Power Automate flow set up for each button I want to connect. I just need to modify it from being "on button press" to when a button in Power Apps is pressed.

 

I have no idea how to properly code any of this is my issue. I really want to be able to achieve all of this with MS Flow buttons but those are too limited.

If anyone has any tips or ideas on achieving these goals it would be massively appreciated!!

Thank you!

14 REPLIES 14
kziegler
Frequent Visitor

Is there a way to single it down to individual button logs? Every button (x30) goes to the same list and there is also other sources being added to that list so its hard to single out dates via Sharepoint. I was hoping there was a way to store the button push date locally on power apps, even in the button itself. It's just to have the button change colors for a period of time so it doesn't need to send a request all the way to Sharepoint. Sorry this is a lot and I appreciate you sticking through it to help me out!

abrae005
Kudo Collector
Kudo Collector

Ok, so there's not really a way to store data within the app itself. There are functions called SaveData and LoadData, which allow very limited local storage, but that's limited to if the app is running on a mobile device (not web browser), and the data is stored on that specific device. It's useful if you've got an app that might be used out in the field, and internet connectivity may not always be there - that way you can save it and store it until you get back in a place where you have connectivity, and then store it to a cloud location (like a SP list). But, I don't get the impression that's what you want to do.

 

Does your list add a new entry for each time each button is pushed? (EX 1) Or is it more like there's one row for each button, and the date is over-written each time the button is pushed? (EX 2) 

 

If it's more like Example 1, then you could add filter conditions to the statement that's finding the most recent date, so you only get the results for that specific button. If it's more like Example 2, then it becomes a little easier, you don't necessarily need the First/Sort criteria, but you'll need to add a filter to get the correct row, and find the date from that row.

 

Edit to add: I'm assuming that each button kicks off a process, and you're already recording when the process was (either started or finished), and using that date. I wasn't suggesting creating a whole new list just to store button click data. I just created a new list for my prior response, so I could illustrate the concept better and get a few screenshots to help.

 

Example 1:

Which ButtonWhen PushedWho Pushed
ButtonA7/11/22Ron
ButtonB7/11/22Harry
ButtonC7/11/22Hermione
ButtonA7/12/22Hermione
ButtonA7/14/22Ron

 

Example 2:

ButtonWhen PushedWho Pushed
ButtonA7/11 7/12 7/14Ron Hermione Ron
ButtonB7/11Harry
ButtonC7/11Hermione
kziegler
Frequent Visitor

Is there a way to single it down to individual button logs? Every button (x30) goes to the same list and there is also other sources being added to that list so its hard to single out dates via Sharepoint. I was hoping there was a way to store the button push date locally on power apps, even in the button itself. It's just to have the button change colors for a period of time so it doesn't need to send a request all the way to Sharepoint. Sorry this is a lot and I appreciate you sticking through it to help me out!

Accidentally posted my question twice. 

Does your list add a new entry for each time each button is pushed? (EX 1)

It basically creates a new entry every time any button is clicked yeah. What the base list is, is a repair log, so logging all the repairs we do every day plus routine cleaning. It is a default form(with lack of better terms) that you fill out and adds an entry with basic info like date, user, and what machine. I had created a way to make filling out that form super quick and mobile, which is a key aspect, by auto filling using Flow buttons. All you have to do is click the button of that machine that is cleaned and it takes the date of the button push as well as the user pushing the button and autofills the form. I switched to Power apps because the buttons through flow weren't good enough and I wasn't able to format them in any way. I only want the buttons to change color for 5 days so we can eliminate the need to keep track of what machines need to be cleaned, rather than using an excel sheet that is messy and clumsy. Simple put if the button is a different color then it's not time for it to be cleaned yet, rather than logging it on a never-ending table.

 

It's easy enough to add a filter into the Sort statement to add the Machine Name (or ID or whatever).

 

Previously, the code I gave you (for the text label, showing the most recent date) was: 

First(Sort(Powerapp_Test, Date_Button_Pushed, Descending)).Date_Button_Pushed

 and the If Statement for the "Fill" Property on the button was

If(First(Sort(Powerapp_Test, Date_Button_Pushed, Descending)).Date_Button_Pushed > DateAdd(Today(), -5, Days), RGBA(255,0,0,1), RGBA(0,255,0,1))

 

I added a "Machine Name" column to the SharePoint list, and I re-arranged the PowerApp a little bit

abrae005_0-1657911847646.png

abrae005_1-1657911958739.png

 

The new code to only return the last clean date for the Batmobile is below. You can see we just added 1 more clause for Filter, based on Machine_Name = Batmobile (with appropriate quotes, of course)

First(Sort(Filter(Powerapp_Test, Machine_Name="Batmobile"), Date_Button_Pushed, Descending)).Date_Button_Pushed

 

And the code for the "Fill" property of the button would become this ... The button would appear green if the device needs to be cleaned, and red if it's been cleaned in the past 5 days and doesn't need to be cleaned again. You can change the colors to suit your needs.

If(First(Sort(Filter(Powerapp_Test, Machine_Name="Batmobile"), Date_Button_Pushed, Descending)).Date_Button_Pushed >= DateAdd(Today(), -5, Days), RGBA(255,0,0,1), RGBA(0,255,0,1))

 

(when I took the screenshot of the buttons, I changed the color value for the green, because (0,255,0,1) is really obnoxious neon green ... The one I used is (0,85,0,1))

Helpful resources

Announcements
Microsoft 365 Conference – December 6-8, 2022

Microsoft 365 Conference – December 6-8, 2022

Join us in Las Vegas to experience community, incredible learning opportunities, and connections that will help grow skills, know-how, and more.

Top Solution Authors
Top Kudoed Authors
Users online (1,563)