My app is a SPA which currently loads reports as soon as they are visited, and each time a filter is updated. Because of performance issues on the backend, I need to change this so that the data only loads after filters are chosen and a 'Generate Report' button is clicked.

I'm trying to figure out the best way to notify a user once they've changed a filter that they need to click the 'Generate Report' button again. I could initially disable it until a filter is selected, because that will make a noticeable change to the button when it's re-enabled but I'm not sure what to do after that. I was thinking some sort of animation on the button each time a filter is changed - like maybe temporarily making it brighter or temporarily dimming it. I haven't been able to find good examples of how to handle this. Any help is appreciated

  • 1
    Where does this functionality reside? Is it in line with the rest of the page? Would it be possible to move the possible filter criteria to a modal window? That has the benefit of forcing the user to make an explicit choice and cannot leave the filter in this "unapplied" state. The user would have to either apply changes to the filter or cancel changing the filter in order to close the modal. – maxathousand Jul 10 at 21:55
  • The functionality is inline (a top banner) great idea about the modal! – Robin Schaaf Jul 11 at 13:52

What @maxathousand said: Put the filter settings in a modal dialog, which forces the user to click the "Generate Report" button to apply the settings. Or, spy the filters and when they are "dirty" (different from what is being displayed), dim the report display and highlight the "Generate Report" button, so that the user knows what to do to apply the new filter settings.

Your Answer


By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.