In Qlikview we have clear all option to clear all the selections, what is the similar option in PowerBI?
Even Refreshing the report(using Refresh button in Home) doesn't work.
I read somewhere that refreshing the browser(in case of web) can clear all selections and restore the previous stage but it's not a feasible solution. Is there any alternate of it ?
This can be accomplished by doing the following:
Create a bookmark with your default slicer selections
Ensure that "Display" is unchecked on the bookmark options
Upload an image that will serve as your refresh/clear-all button
Link the image to the book mark
Voila! Clear-all achieved
There is no one-click button that will clear all slicer selections on an existing report.
As you've indicated in your question, you can do a browser refresh and the report will be reset back to its default state. You can also click away from the report and go back in, and the report will be reset back to its default state.
The "Refresh" button at the top of the report gets the latest data but does not reset the report back to its default state. Switching tabs within the report also does not reset the report back to its default state.
While this isn't the answer you want to hear, there are a couple of ideas I'd encourage you to comment & vote upon. I know Microsoft do pay close attention to submitted ideas:
Clear All Slicers
Add Clear All Filters button to Power View**
** While the idea specifically mentions Power View, it's clear from the comments that the same request applies to Power BI, the successor to Power View.
Related
I need to load select's options asynchronously (
through a service), using the Angular Material md-select component.
Actually, I use a click event to load data. It works but I need to click the select twice to show the options. That it's a problem.
The expected behavior is shown at this link (AngularJs Material)
The actual behavior is shown at this link.
Is Async options' loading supported by md-select?
The reason you need to click twice is because when you first click, there are no options in the select control and so it doesn't try and open the panel. Then your async method loads the options into the DOM and on the next click it will open.
In order to deal with this, you must always include at least one <mat-option> in your <mat-select>. You can add a disabled <mat-option> with a <mat-spinner> showing that the data is loading for example.
Here the most simple example of that. This is not the best approach... see below.
However, this still uses the click event which isn't the best approach. If you put the click event on the <mat-select> there are spots where you can click on the control but your click event wont trigger even though the dropdown panel still opens (places like the floating label area). You could put the click event on the <mat-form-field> but then there will be places where you can click and trigger the click event but the dropdown panel wont open (places like the hint/error text area). In both cases you lose keyboard support.
I would suggest using the <mat-select> openChanged event instead of a click event. This has its own quirks too but they are manageable.
Here is an example using the openChanged event. I also made the component more robust overall.
I also made a version that uses the placeholder element to show the spinner instead of using a disabled mat-option. This required View Encapsulation to be turned off.
Note: In my example, the service can return different data depending on the circumstances. To simulate this my fake service keeps track of how many requests you send it and changes the options returned accordingly. So I have to set the option list back to empty and clear the formControl's value every time the list is opened. I save the selected value before clearing the formControl so that if the service returns a list with the same item I can automatically reselect the value. If you only need to load the options once, then you would want to modify the code a bit to only load the options the first time the user opens the select.
I've been searching for a few days and doing every word combination I can think of to try to find the answer to my issue. I'm hoping someone can help me.
Before I begin I'd also like to say I'm very new to Access and admittedly not great with it. I'm still learning so this could be a very easy fix or I may have messed up beyond belief.
The issue I'm having is I've setup several page tab on a form and entered all the information for my records. However I cannot get the page tabs to pull up the corresponding records. Instead I have to either search through the records which doesn't always work or I have to arrow to the right record after selecting the tab I want. I'd like it so that when I click the tab it brings up the proper record automatically. If someone can point out where I'm going wrong and how to fix it I would greatly appreciate it. See below for some pics of what I mean.
As you can see in the first image. The tab name "Auto PLUS" doesn't bring up the proper record. instead I have to manually change the record using the arrows at the bottom of the form (see the arrow at the bottom of the image) in order to change the record. I need the record and the tab to match. Any help would be so greatly appreciated.
Thanks in advance for any help!!
-Deke
Assuming your form is bound (if in design mode your fields do NOT say "Unbound" then your form is bound), you simply need to add some VBA code to each tab's OnClick event.
Enter design mode and select the first tab "Claims Other". Open the properties pane, click the event tab, and click the ellipsis at the end of the OnClick line. When prompted, select "Code Builder" and it should launch the Visual Basic Editor.
It will put your cursor automatically in the correct position. Copy/Paste:
DoCmd.GoToRecord acDataForm, Form1, acGoTo, 1
The 1 should correspond to "Claims Other's" proper record in your table. Use the row number, not the ID number to determine what it should be.
Go back to Form View and click on the "Claims Other's" tab. The data should show the corresponding record in your table.
Repeat the steps of adding events to each tab, finding the relevant record in your table, and replacing the 1 from the above code.
I've created a subgrid showing a custom entity Blopp. It shows, the records are viewed as supposed to (related ones only) but I was unhappy with the columns' order and size.
So I went to the solution and made the changes. To my surprise, I discovered that they are not shown when I load the Contact form.
Before anybody jumps up with joy - the save is done, the publish all is done, it's the correct view set in the subgrid and when I pick a different view in the subgrid and then go back to the manipulated one, it shows as supposed to!
What's up with that? The way we're handling it now, we need to remove the subgrid and recreate it again.
What can be the cause and how do I kill it?
I have a report which contains date prompts. For several reasons, we want to disable manual user input into these date prompts, and to require the use of the date picker instead (this requirement won't change).
How can one do this?
What I've tried:
adding a javascript snippet (embedded in an invisible text prompt) to disable the text field. This works, however when I click "Apply" in the promptset, the date field is re-enabled!
Any insight on how I can accomplish this?
Anybody know how to hack the behavior of the Apply button so I can call my js function again? OR where can I hack the raw html of the promptset/report so that can set the date fields to "disabled=true"?
I do not know of any hack for the "Apply" button, however if we change your process a bit, instead of locking the columns down (and possibly creating confusion for the end user "Why can't I click on this prompt!!"), what we could do is hide the prompts either by using a JQuery function, or other method. The link within this answer describes several options to hide prompts:
Hidden prompts (Oracle Method)
Hiding prompts using guided navigation
Hiding prompts in a section
Hiding certain UI controls inside a prompt
This link has many other links to resources, and should hopefully answer your question, albeit in a different way.
Links (several in case one gets broken):
http://intelligentinsight.wordpress.com/2012/10/20/obiee-11g-hidden-prompts-and-hiding-prompts/ (Main Link)
http://docs.oracle.com/cd/E21764_01/bi.1111/e10544/prompts.htm#CIHCDDEG (Oracle Link, should be stable)
http://intelligentinsight.wordpress.com/2012/09/23/obiee-11g-improve-dashboard-prompt-ui-selectively-hiding-and-displaying-prompts-using-jquery/ (Link with JQuery instruction)
I am familiar with several approaches to making the back button work in AJAX applications in various situations, but I have not found a solution that will work gracefully in my specific scenario.
The pages I am working with are the search interface for a site. You enter terms in a normal search box, click "go and wind up at a search results page. On the search results page there are a ton of UI controls for filtering/sorting the search results to find what you are looking for. Some of the operations triggered by these controls may take a (relatively) long time to complete (e.g. several seconds).
This latency is fine in case where the user is initially filtering/sorting their results... there's a nice AJAX spinner and so on... however when the user clicks on a search result and then clicks on the BACK button, I would like the page to instantly be restored to the state it was in when they clicked through.
I can restore the states using IFRAMEs/fragment identifiers as a dictionary of page history, but what ends up happening is that when the user first hits the back button the initial page is loaded, then it (re) makes the AJAX query to get the page state back, which triggers the AJAX spinner and another wait of possible several seconds.
Is there any approach that does not require this kind of two-stage load of the page when the user returns to the page via the BACK button?
Edited to add: I am partial to jquery but I'd be happy with solutions that depend on other libraries/toolkits or that are standalone/raw javascript.
Edited to add: I should've added that I'm trying to avoid cookies/sessions because this prevents people having multiple brower windows/tabs open and manipulating different sets of search results at the same time.
Edit: Matt, can you elaborate on your proposed solution (triggering a page change event via fragment identifer)? I see how this would help with BACK button clicks across the same page but not coming BACK to the search results page after clicking on a specific result.
Just use a cookie.
Have you investigated the YUI Browser History Manager?
Try to use localStorage object. Here is crossbrower libs jStorage and WEBSHIMS json-storage
Would it help to trigger a page change event using the "Add some info to the # at the end of the URL approach".
That way, clicking the back button shouldn't actually change the page, and you should be able to restore state without the first page load.
Use something persistent that is tied to the user's profile.
Cookies and sessions are good ideas, but you can also keep those stuff in the database. That gives you an added advantage of being able to save the user's filtering preferences accross different browsing session.(if, for exampple, he was looking for something in the office and then decided to continue searching when he is back at home).
It all depends on the complexity of the filters and weather or not it is something you think that the user will want to use accross diffrent browsing sessions..
Edited to add: I should've added that
I'm trying to avoid cookies/sessions
because this prevents people having
multiple brower windows/tabs open and
manipulating different sets of search
results at the same time.
You can create a random token and assign it to the fragment identifier.
on first page load create a token if no fragment identifier is set
before navigating out, store all the temporary ajax data in a cookie with that token as index.
when hitting back, if you have a fragment identifier set, load the data from the corresponding token in the cookie.
you can even add a "time" field to expire tokens, etc...
sample cookie (JSON):
{"ajaxcache":[{"token":<token>,"time":<time>,"data":<data>}, ... ]}